4. 프로세스 관리
프로세스 생성 (Process Creation)
부모 프로세스가 자식 프로세스 복제 생성
프로세스가 운영체제에게 시스템 콜 - fork
- 수행
부모와 자식이 공존하며 수행하는 모델
자식이 종료될 때까지 기다리는 모델
- 주소 공간
자식은 부모의 공간 복사하여 그 공간에 새로운 프로그램 올림 (덮어씌움)
- fork() 시스템 콜 - 새로운 프로세스 생성
- exec() 시스템 콜 - 새로운 프로그램 메모리에 올림
프로세스 종료 (Process Termination)
- exit() 시스템 콜 - 프로세스 종료
자식이 부모에게 output data 보내면 프로세스의 자원 운영체제에게 반납됨
- abort() 시스템 콜 - 부모 프로세스가 자식의 수행 종료시킴
자식이 할당 자원의 한계치 넘어섬
자식에게 할당된 태스크 종료
부모가 종료하는 경우(단계적인 종료)
시스템 콜 함수
- fork() 같은 프로세스 하나 더 생성 - 동일한 실행파일
코드에서 fork() 함수 다음부터 실행 부모 프로세스: pid > 0
자식 프로세스: pid = 0
- exec() 새로운 프로그램으로 덮어 씌움(되돌아올 수 X)
exec() 함수 다음 부분의 프로그램은 실행되지 않음
보통 자식에게 새로운 프로그램을 실행시킬 때 사용
- wait() 자식이 종료될 때까지 부모 프로세스 sleep 시킴
- exit()
- 자발적 종료
- 비자발적 종료 - 부모 프로세스 또는 사람이 자식 프로세스를 강제 종료시킴
프로세스 간 협력
프로세스 간 협력 메커니즘 (IPC: Interprocess Communication)
- Message passing
운영체제(커널)을 통해 전달받음
- Direct Communication - 통신하려는 프로세스 이름 명시
- Indirect Communication - mailbox를 통해 간접 전달
- Shared Memory
메모리를 공유하도록 시스템 콜
- thread
동일한 프로세스이므로 주소 공간을 공유하여 협력이 가능