본문 바로가기
프로그래밍/CS

운영체제(4/11) - Process Management 1,2

by 숙님 2023. 1. 28.
728x90

프로세스 생성 

- 부모 프로세스가 자식 프로세스 생성(자원을 공유) 

- 트리 형성 

- 주소 공간: 자식은 부모의 공간을 복사함 

 

프로세스 종료

- 프로세스가 마지막 명령을 수행한 후 운영체제에게 이를 알려줌(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스케줄러에 의해 선택된 프로세스에게 넘긴다 

 

댓글