clang.engineer

프로그램은 어떻게 커널의 기능을 사용하는가 - System Call

Program Execution 전체 지도 앞선 글까지는 프로그램의 Code와 Data가 어떻게 CPU와 Memory에서 실행 가능한 상태가 되는지 살펴봤다. 하지만 실제 프로그램은 계산만 하지 않는다. 파일을 읽는다 네트워크로 데이터를 보낸다 새 Process를 만든다 시간을 확인한다 Device를 사용한다 이런 자원은 운영체제가 관리한다...

프로세스의 주소는 어떻게 실제 메모리로 이어지는가 - Virtual Memory

Program Execution 전체 지도 앞선 글에서는 실행 파일이 Loader를 거쳐 Process가 되는 흐름을 살펴봤다. Process가 만들어지면 다음 질문이 생긴다. 프로그램이 사용하는 주소는 실제 RAM의 어느 위치를 가리키는가? 처음에는 Process가 RAM의 특정 영역을 직접 사용하는 것처럼 생각하기 쉽다. 현대 운영...

실행 파일은 어떻게 프로세스가 되는가 - Loader와 Process

Program Execution 전체 지도 앞선 글에서는 소스 코드가 컴파일과 링크를 거쳐 실행 파일이 되는 과정을 살펴봤다. 그런데 실행 파일이 만들어졌다고 프로그램이 실행 중인 것은 아니다. 디스크에 있는 실행 파일을 실행하면, 운영체제는 무엇을 해서 그것을 프로세스로 만드는가? 이번 글에서는 이 경계를 따라간다. 1. 실행 파일...

소스 코드는 어떻게 실행 파일이 되는가 - 컴파일러와 링커

Program Execution 전체 지도 앞선 글에서는 프로그램이 실행되는 전체 흐름을 살펴봤다. 이번에는 그중 앞부분인 소스 코드가 실행 파일이 되기까지를 조금 더 자세히 살펴본다. 핵심 질문은 하나다. 왜 소스 코드를 컴파일하는 것만으로 끝나지 않고, 오브젝트 파일과 링커라는 단계가 따로 필요한가? Source Code ...