기우제의 개발블로그

Total (73)

CSAPP › 네트워크 강의 정리(Week7_Day1)

7주차는 네트워크에 관한 주차이다. 명지대학교 문대경 교수님 (UC Berkeley CS Ph.D., (전)넥슨 개발자)의 강의 내용과 CSAPP을 참고한 내용을 정리하려 한다. 네트워크(Network) 네트워크는 무엇인가? 상호 연결되어 있는 사람들이나 사물들로 이루어진 그룹이나 시스템. 사람/사물을 ‘점’으로 표시하고 그들간의 어떤 관계를 ...

새길 것 › 공학적인 사고

공학적인 사고를 함에 있어서 중요하지만, SSAFY를 이수하는 과정에선 놓쳤던 지금 생각하면 아쉬웠던 점은. 내가 가진 선택지가 무엇인지를 알고, 그 선택지들의 장단점을 판단할 수 있거나, 최소한 궁금해 해야 한다는 점이다. 세상에 무조건 좋은 것은 없다. 최선의 선택지는 있을 순 있겠지만 그 조차 단점이 존재하나 다른 선택지에 비해 단점이 적거나 장...

CSAPP › 시스템 콜과 DMA 그리고 이더넷(Week6_Day5)

오늘은 6주차 키워드를 마무리 한다. 시스템 콜(System Call) 시스템 콜의 정의 시스템 콜은 운영체제의 커널이 제공하는 서비스에 접근하기 위해 응용 프로그램의 요청에 따라 커널에 접근 하기위한 인터페이스이다. 시스템 콜이 필요한 이유 일반적으로 사용하는 프로그램은 응용프로그램인데 유저레벨에서는 필요한 모든 기능을 사용 할 수 없기...

CSAPP › 가상메모리 단원의 추가 알게 된 점(Week6_Day4)

오늘은 이번주 공부했던 내용들의 흐름이 어느정도 이해가 되어서 정리 해보려한다. + 어제 부족했던 내용 보완 및 수정. 가상메모리 가상메모리는 각 프로세스가 실행이 될 때 일정 크기를 커널로 부터 할당 받는다. 32비트 환경에서는 4GB(2^32) 64비트 환경에서는 2^48 또는 2^57이라고 한다. 32비트에서는 2^32바이트인 4GB를...

CSAPP › 가용리스트와 동적 할당(Week6_Day3)

free list 아래께 공부했던 메모리 할당 정책 중 등장했던 개념으로 가용 블록을 탐색할 때 사용하는 리스트 였다. 어제는 묵시적 리스트(Implicit free list)로 가정하고 설명했지만, 오늘은 좀 더 알아보도록 했다. 묵시적 리스트(Implicit free list) 할당된 블록과 가용블록이 연속적으로 메모리에 나열되어 있는 형태로...

CSAPP › Call by Value와 Call by Reference 그리고 페이징(Week6_Day2)

인자 전달 방식 함수에서 인자를 불러 올 때 어떤 방식으로 호출 하는가? Call by Value(복사) 함수의 인자를 받을 때 변수에 담긴 값을 스택에 복사하여 넘겨준다. 장점 : 원본 값을 변경할 수 없기 때문에 안전하다. 단점 : 복사를 하니까 메모리 공간을 차지 한다. Call by Reference(주소값) 함수의 인자를...

CSAPP › 메모리 단편화에 대해(Week6_Day1)

포인터의 크기 32비트 환경에서와 64비트 환경에서의 포인터의 크기는 왜 다를까?? 32비트 => 4byte 64비트 => 8byte 인 건 알고 있었지만 이유는 몰랐었다. 32비트 환경에서 메모리 주소는 32비트로 표현이 되고, 64비트 환경에서는 메모리 주소가 64비트로 표현이 된다. 그렇기 때문에 메모리 주소를 표기하기 위해서는...

C › RBtree 구현으로 배운점(Week5_Day7)

오늘은 RB_tree 구현이 끝나고 배운 점을 정리해 본다. 문제점 전방 선언 처음 마주했던 오류는 함수의 호출이 함수의 선언 부 보다 앞에 있었기 때문에 발생한 문제였다. 해당 경우에는 해결 방법이 두 가지가 있었다. 함수의 원형을 상단부에 전방선언으로 알린다. 단순하게 함수의 위치를 호출하는 곳 보다 앞으로 옮긴다. heade...

C › C언어의 포인터(Week4_Day4)

오늘은 어제에 이어서 c언어 공부를 했다. 포인터 사전지식 먼저 짚고 갈 점은 모든 데이터들은 메모리 상에 특정 공간에 저장 되어 있다는 것이다. 메모리의 각각의 공간은 1바이트를 가지고, 예를 들어 int형 변수를 정의한다면 4칸을 차지하게 된다. 어떤 공간의 정보를 사용해야 할 지 구분하기 위해서 각 공간에 고유 주소(address)를 붙이고...

C › C언어 시작하기(Week4_Day2)

이번 주차는 C에 대해 공부를 하는 시간이였다. 그 전에 앞서 참고자료를 따라서 visual studio를 설치하려했는데, 지원이 종료된다는 얘기를 보았다. 이유가 궁금해서 찾아보니, macOS는 기본적으로 UNIX기반이기 때문에 C언어 개발에 필요한 도구들을 기본적으로 제공하거나, 간단하게 설치할 수 있으나, Window의 경우 C언어 개발 도구...

PYTHON › DP와 그리디(Week3_Day4)

오늘은 3주차 알고리즘에 대해 정리 해보았다. DP(동적 계획법) DP란 동적 계획법이라는 이름은 뭔가 와닿지 않아 찾아보니 모 교수님께서 기억하기 알고리즘이라고 표현하셨다고 한다. 그렇게 표현한 이유는 DP알고리즘의 목적은 메모리를 사용하여(자료구조, 배열을 사용) 중복연산을 줄이고 수행속도를 개선하는 것이기 때문이다. 즉 한 번 수행한 연산을...

CSAPP › CSAPP 3장 어셈블리 제어문(Week3_Day3)

오늘은 csapp3장을 이어서 공부했다. 제어문 반복문, 스위치문들은 조건부 실행이 요구됨. 기계어 코드에서 조건부 동작을 시행하는 법으론 데이터의 흐름 변경, 제어흐름의 변경 두 가지 방법이 있음. 먼저 제어 흐름에 대해서 알아볼 것. 조건 코드 cpu의 비교연산이나 테스트 연산 이후에 설정되는 cpu의 상태 플래그로 각 플래그는 1비트의 크...

CSAPP › 프로그램의 실행과정(Week3_Day1)

오늘은 CSAPP 3장을 읽어보았다. 컴퓨터 프로그램 컴퓨터는 프로그램을 실행 할 때, 기계어 코드를 실행한다. 기계어 : 이진수로 표현되는 저수준 언어로 하드웨어와 직접 상호작용할 수 있고, 그렇다 보니 작성하고, 이해하기 어려우며 cpu 종속적이라 이식성이 낮다. 어셈블리어 : 기계어와 대응되는 저수준 언어로 기계어보다 사람이 읽고 이해...

PYTHON › 파이썬으로 알아본 자료구조(Week1_Day5)

오늘은 파이썬의 자료구조에 대해 알아보았다. 스택(Stack) 말미잘 같은 자료구조이다. 입으로 들어와서 입으로 뱉듯이, 한쪽으로 들어와서 한쪽으로만 나간다. 세로로 긴 관에 사탕을 색깔별로 넣었다고 생각하면, 빨간색, 파란색, 초록색 사탕을 넣고, 다시 빼려고 뒤집으면 초록색, 파란색, 빨간색 순서로 나올 것이다.이런 구조를 LIFO(Last I...

CSAPP › CSAPP 시스템 하드웨어 구조와 시간복잡도(Week1_Day4)

오늘은 컴퓨터 시스템 1.1 ~ 1.4 장을 읽어보았다. 1장에서는 hello프로그램의 생성 -> 시스템에서실행 -> 메세지 출력 -> 종료 의 수명주기를 간단히 설명했다. hello 프로그램의 생성 프로그래머가 에디터로 작성한 소스파일로 시작한다고 한다. 이 소스 파일은 바이트 단위로 구성된다고 한다. 비트 : 0 또는...

Algorithm › 여러 정렬 알고리즘에 대해(Week1_Day3)

오늘은 정렬에 대해서 공부를 해보았다. 정렬 정렬은 말그대로 오름차순 내림차순 등의 정렬이다. 그 중 같은 데이터의 순서가 유지되는 정렬은 안정적인 정렬 그렇지 못하면 안정적이지 않은 것이다. 원소를 비교하고 교환하는 과정을 패스라고 한다. 버블정렬 거품이 올라오는 것과 같이 정렬된다고 해서 버블정렬이라고 부른단다. 오름차순 정렬을...

입소 › 크래프톤 정글 입소 후 생각

⏲ 입소 전의 시간 대학 졸업 이후 전공을 살려서 취업을 할지 많은 고민을 했었다. 나름 많은 것을 시도해봤고 이어지는 좋지 못한 결과에 좌절도 했었다. 와중에 친구에게 SSAFY라는 부트캠프의 존재를 전해들었고, 당시에는 놀아서 뭐하겠냐는 생각으로 일종의 도피를 위해 부트캠프를 지원했던 것 같다. 그렇기 때문에 프로그래머라는 직업의 정의를 머...