Just do IT
article thumbnail
Chapter 06 시그널

시그널과 IPC * 본래 다른 용도이지만, IPC로도 사용가능한 기법 - 시그널 (signal) - 프로세스에 이벤트 전달 - 소켓 (socket) - 네트워크 시그널(signal) * 유직스에서 30년 이상 사용된 전통적인 기법 * 커널 또는 프로세스에서 다른 프로세스에 어떤 이벤트가 발생되었지를 알려주는 기법 * Ctrl + C 를 눌러서 프로세스 종료시킬 수 있다. 주요 시그널 * 시그널 종류와 각 시그널에 따른 기본 동작이 미리 정해져 있음 - SIGKILL: 프로세스를 죽여라(슈퍼관리자가 사용하는 시그널로, 프로세스는 어떤 경우든 죽도록 되 어 있음) - SIGALARM: 알람을 발생한다 - SIGSTP: 프로세스를 멈춰라(Ctrl + z) - SIGCONT: 멈춰진 프로세스를 실행해라 - SI..

article thumbnail
Chapter 05 프로세스간 커뮤니케이션

다양한 IPC 기법 * IPC : Inter Process Communication 1. file 사용 2. Message Queue 3. Shared Memory 4. Pipe 5. Signal 6. Semaphore 7. Socket 파이프 (pipe) * 기본 파이프는 단방향 통신 * fork()로 자식 프로세스 만들었을 때, 부모와 자식간의 통신 메시지 큐(message queue) * 큐니까 기본은 FIFO(First In First Out) 정책으로 데이터 전송한다 참고 : ftok() * ftok() : 키 생성을 위한 함수 - path 경로명의 inode 값과 숫자값(id)를 기반으로 키 생성 - 경로 삭제 후 재생성시 inode 값이 달라지므로, 이전과는 다른 키값이 리턴 파이프와 메시지..

article thumbnail
Chapter 04 시스템 프로그래밍 (4)

※ 참고 - 프로세스 스케줄링 우선순위 기반 스케줄러 * Priority-Based 스케줄러 - 정적 우선순위 : 프로세스마다 우선순위를 미리 지정 - 동적 우선순위 : 스케쥴러가 상황에 따라 우선순위를 동적으로 변경 우선순위 변경하기 - nice() * 프로세스 중 사실상 root가 소유한 프로세스만, 우선순위를 높일 수 있다 - 다른 프로세스는 우선순위를 낮출 수만 있다 - 스케쥴링 방식에 따라 우선순위가 적용될 수 있고, 안될 수도 있다 우선순위 변경하기 - getpriority(), setpriority() * which : 프로세스(PRIO_PROCESS), 프로세스 그룹(PRIO_PRGP), 사용자(PRIO_USER)별로 우선순위를 가져올 수 있다 예제 - priority.c (root 소유로..

article thumbnail
Chapter 04 시스템 프로그래밍 (3)

프로세스 기본 구조 * TEXT, DATA, BSS, HEAP, STACK 프로세스 생성 * 기본 프로세스 생성 과정 - TEXT, DATA, BSS, HEAP, STACK의 공간을 생성 - 프로세스 이미지를 해당 공간에 업로드하고, 실행 시작 * 프로세스 계층 : 다른 프로세스는 또 다른 프로세스로부터 생성 - 부모 프로세스, 자식 프로세스 fork()와 exec() 시스템콜 * fork() 시스템콜 - 새로운 프로세스 공간을 별도로 만들고, fork() 시스템콜을 호출한 프로세스 (부모 프로세스) 공간을 모두 복사 - 별도의 프로세스 공간을 만들고 부모 프로세스 공간의 데이터를 그대로 복사한다 * exec() 시스템콜 - exec() 시스템콜을 호출한 현재 프로세스 공간의 TEXT, DATA, BSS..