프로세스 생성
- 부모 프로세스가 자식 프로세스 생성(자원을 공유)
- 트리 형성
- 주소 공간: 자식은 부모의 공간을 복사함
프로세스 종료
- 프로세스가 마지막 명령을 수행한 후 운영체제에게 이를 알려줌(exit)
- 부모 프로세스가 자식의 수행을 종료시킴(abort)
-> 자식이 할당 자원의 한계치를 넘어섬(마치 카드 값을 너무 쓰는 자식을 버리는 것과 비슷)
-> 자식에게 할당된 테스크가 더이상 필요하지 않음(일시킬게 없어서 버림)
-> 부모가 종료하는 경우(운영체제에서는 자식이 죽고 부모가 죽어야 하므로)
fork() 시스템 콜
- 나라는 사람을 복제하는 느낌
- 자식은 부모 코드에서 fork()뒤에서 부터 같게 작동함(처음부터가 아님)
exec() 시스템 콜
- 완전히 새로운 자식 프로세스, 새로운 아기의 탄생같은 느낌
wait() 시스템 콜
- 자식이 종료될 때까지 프로세스를 block상태로 둠, sleep 시킴
exit() 시스템 콜
- 프로세스의 종료
- 자발적 종료(모든 명령 수행 후 exit()을 만나 종료) vs 비자발적 종료(부모가 자식 프로세스 강제 종료, 키보드로 kill 누른 경우, 부모 프로세스가 종료하는 경우)
프로세스 간 협력
- 독립적 프로세스: 기본 원칙
- 협력 프로세스
- 프로세스 간 협력 매커니즘(IPC):
-> message passing: 메세지를 전달하는 방법, 프로세스 사이에 공유 변수를 일체 사용하지 않고 통신하는 시스템
-> shared memory: 주소 공간을 공유하는 방법
CPU 스케줄링
- 여러 종류의 job(=process)이 섞여 있어 cpu 스케줄링이 필요
- cpu와 I/O장치 등 시스템 자원을 골고루 효율적으로 사용
- cpu scheduler: ready상태의 프로세스 중에서 cpu를 줄 프로세스를 고른다
- dispatcher: cpu제어권을 cpu스케줄러에 의해 선택된 프로세스에게 넘긴다
'프로그래밍 > CS' 카테고리의 다른 글
운영체제(6/11) - Process Synchronization 1,2,3,4 (0) | 2023.01.30 |
---|---|
운영체제(5/11) - CPU Scheduling 1, 2 (0) | 2023.01.29 |
운영체제(3/11)-Process 1,2,3 (0) | 2023.01.27 |
운영체제(2/11) - System Structure & Program Execution 1,2 (0) | 2023.01.26 |
운영체제(1/11) - Introduction to Operating Systems (0) | 2023.01.25 |
댓글