책 - 요약 정리/CSAPP

책 - 요약 정리/CSAPP

Network Programming

글을 쓰기에 앞서 소켓이란 해당 식별자를 가지는 열린 파일이라는 것을 알아두고 가자. Host IT 분야에서는 호스트란 네트워크에 연결되어 있는 컴퓨터들이다. 인터넷은 TCP/IP 프로토콜을 이용하여 통신을 하는데, 통신을 하려고 해도 목적지와 출발지가 없으면 어디로 데이터를 보낼지 받을지 모른다. 따라서 IP라는 고유한 주소를 통해 목적지와 출발지를 구할 수 있으며 , 이때 호스트는 IP 주소를 갖는다. 즉, 호스트는 IP를 가지고 있는 양방향 통신이 가능한 컴퓨터라는 점을 기억하자. URL, URI 결론부터 말하면 URI는 자원의 위치이고, URL은 자원의 식별자이다. 쉽게 얘기하면 우리가 주소창에 입력하는 전체 주소는 사실 URL이 아니고 URI이다. 즉, URI가 더 큰 범주이고, URL은 그 범..

책 - 요약 정리/CSAPP

Virtual Memory

가상 메모리 시스템에서는 각 프로그램이 가상의 주소를 사용하도록 하며, CPU가 메모리 참조를 시도할 때는 MMU(Memory Management Unit)이라는 하드웨어 장치를 이용하여 해당 가상 주소(Virtual Address)를 실제 메인 메모리의 물리 주소로 변환하여 메모리 참조를 진행한다. 그렇다면 가상 메모리 기술은 왜 사용하는 것일까? 그 이유는 크게 3가지로 나눠서 생각해볼 수 있다. (Caching, Memory Management, Memory Protection). 메인 메모리를 효율적으로 사용하기 위해서. 가상 메모리 시스템에서는 각 프로그램이 사용하는 가상 주소 공간을 우선 디스크에 저장해두고, 그 중에서 자주 사용되는 부분만 메인 메모리로 가져와서 사용한다. 즉, 메인 메모리를..

책 - 요약 정리/CSAPP

Exceptional Control Flow

프로세서에서 전력이 공급된 시점부터 전력 공급이 끊기는 시점까지 PC는 다음과 같은 값들을 갖는다. a는 명령어 I의 시작 주소를 의미한다. 이와 같이 실행하는 명령어에 따라 PC의 값이 변해가는 흐름을 제어 흐름(Control Transfer)라고 부른다. 제어 흐름의 양상은 크게 3종류이다. 메모리에 연속적으로 할당되어 있는 명령어들을 순차적으로 실행하는 경우. 이 경우는 가장 기본적이면서 대부분의 시간을 차지하는 제어 흐름에 해당한다. 프로그램 변수로 표현되는 프로그램 상태의 변화에 반응하여 제어 흐름이 갑자기 바뀌는 경우. 대표적으로 jump, call, return 등의 명령어를 수행하는 경우가 이에 해당한다. Exceptional Control Flow(ECF). 이는 시스템 상태의 변화에 반..

책 - 요약 정리/CSAPP

linking

링킹은 여러 개의 코드와 데이터를 모아서 연결하여 메모리에 로드될 수 있고, 실행될 수 있는 한 개의 파일로 만드는 작업이다. 링킹은 컴파일 시에 수행할 수 있으며, 이때 소스코드는 머신코드로 번역된다. 프로그램이 메모리에 로드되고, 로더에 의해서 실행될 때에는 로드 타임에, 응용프로그램에 의해서 심지어 실행시에도 수행될 수 있다. 현대 시스템에서 링킹은 링커라고 부르는 프로그램에 의해서 자동으로 수행된다. 링커는 독립적인 컴파일을 가능하게 만든다. 즉, 큰 규모의 응용 프로그램을 한개의 소스 파일로 구성하는 대신 별도로 수정 및 컴파일할 수 있는 보다 유지보수에 용이한 더 작은 모듈로 나눌 수 있다. 이러한 링커를 배워야 하는 이유는 대략적으로 다음과 같다. 링커가 참조를 해결해 나가는 방법, 라이브러..

책 - 요약 정리/CSAPP

CSAPP - Procedures

x86-64 스택 스택은 stack displine에 의해 관리되는 메모리 영역을 말한다. stack discipline이란 말그대로 스택을 관리하기 위한 일종의 규율과 같은 것이다. 스택은 %rsp 레지스터가 현재 스택의 가장 낮은 주소(top)을 저장하기로 되어있다. 또한 스택에 데이터가 쌓일 때는 낮은 주소 방향으로 쌓이도록 약속이 되어있다. 따라서 데이터를 push 할 때는 %rsp 의 값을 8만큼 감소시켜야 하고, 데이터를 pop할 때는 %rsp 의 값을 8만큼 증가시켜야 할 것이다. x86-64 리눅스 스택 프레임은 Caller의 스택 프레임이 저장하는 데이터를 push하는 순서대로 나열하면 기존 %rbp, 백업된 레지스터들의 값, 지역 변수들. 즉, 자기 자신의 지역 데이터를 의미하는 값들과..

kimjingyu
'책 - 요약 정리/CSAPP' 카테고리의 글 목록