CSAPP/8장 예외적인 제어흐름 3

시스템 콜(System Call)

지금 CSAPP 8장 8.3절에서는 시스템 콜의 에러 처리(error handling)를 다루고 있습니다. 시스템 콜이 실패했을 때 함수는 일반적으로 -1을 반환하고, 전역 변수 errno를 통해 오류 종류를 알려줍니다. 먼저, 이 에러 핸들링 메커니즘을 이해하기 전에 시스템 콜 자체가 무엇인지부터 정리해 보겠습니다.1. 시스템 콜이란?1.1 정의시스템 콜(system call)은 응용 프로그램이 운영체제 커널에 정의된 서비스를 요청하기 위한 공식 인터페이스입니다.핵심 요약사용자 공간(User Space)의 프로그램이 커널 영역(Kernel Space)의 자원(파일 I/O, 프로세스 제어, 네트워크 통신 등)을 안전하게 사용하기 위해 반드시 거쳐야 하는 유일한 통로입니다.1.2 비유로 한눈에 이해하기사용..

[CSAPP] 8 예외적인 제어 흐름(Exceptional Control Flow) 8.4 ~ 8.8

8.4 프로세스의 제어(Process Control)운영체제와 프로그램이 프로세스를 생성·종료·관리하는 메커니즘을 설명합니다.8.4.1 프로세스 ID 얻기각 프로세스는 고유한 PID(Process ID)를 가지며, 이를 통해 부모·자식 관계를 파악하거나 프로세스 제어를 수행할 수 있습니다.getpid() : 호출 프로세스의 PID를 반환하며, 항상 성공합니다. getppid(): 부모 프로세스의 PID를 반환하며, 부모가 이미 종료된 경우에는 1(init)의 PID를 반환합니다.#include #include int main() { printf("PID = %d\n", getpid()); // 호출 프로세스의 PID 반환 :contentReference[oaicite:0]{index=0} p..

[CSAPP] 8 예외적인 제어 흐름(Exceptional Control Flow) 8.1 ~ 8.3

이번 포스팅에서는 예외적인 제어 흐름(ECF, Exceptional Control Flow)에 대해 다룹니다. 이를 이해하기 위해 먼저 일반적인 제어 흐름에 대해 간단히 알아보겠습니다.일반적인 제어 흐름컴퓨터 프로그램은 보통 메모리에 연속적으로 저장된 명령어들을 순차적으로 실행합니다. 이러한 흐름은 다음과 같은 방식으로 이루어집니다:순차 실행: 명령어들이 메모리에 저장된 순서대로 실행됩니다.분기 및 반복: 조건문과 반복문을 통해 특정 조건에 따라 흐름이 변경됩니다.함수 호출과 반환: 함수를 호출하면 해당 함수의 명령어들이 실행되고, 완료되면 원래 위치로 돌아옵니다.하지만, 프로그램 실행 중 예기치 않은 상황이나 외부 이벤트로 인해 이러한 흐름이 갑자기 변경되는 경우가 있습니다. 이를 예외적인 제어 흐름(..