- Objection
- Process Control 이란?
- Creation : 프로세스 생성
- Process switch ( = context switch )
- Terminataion
- Communication
1) Process Control 이란?
- mode change : 실행 모드를 바꾸는 것
( user mode <-> system mode )
-> 실행모드는 동시 실행 불가
- context switch : 실행 프로세스를 바꾸는 것
( A process 실행 -> B process 실행 )
-> 이때 지금까지 실행한 proces 의 정보를 PCB 에 저장
-> 이제 실행될 process 의 PCB 값을 불러옴.
-> context switch 는 OS 를 거쳐서 일어남.
2) Creation : 프로세스 생성
- process 생성 과정
- 새로운 process 에 대한 PCB 생성
- 새로 생긴 process 에게 PID 할당
- PCB 각각의 data setting ( code, stack, data . . . )
- process 들 사이의 link 생성
- 다른 데이터 생성 및 확장
- parents context를 복사해서 현재 생성한 process의 user context 생성
( code 는 공유, data, stack은 부모것을 복사해 할당 )
-> 1 ~ 5번의 과정에서는 부모 context 를 가리키고 있음.
- ready state 로 설정하고 ready queue 에 삽입
- 부모 프로세스에게는 자식의 PID를, 자식 프로세스에게는 0을 반환.
- 6번과정에서 사용되는 mechanism
- Copy on Write ( COW )
-> 복사하는 과정을 내용이 변경될 때까지 최대한 뒤의 과정으로 미룸.
( 시간, 메모리 낭비를 줄이기 위해 )
-> exec () 실행 시 cow 방법이 효과적임. (exec () : 완전히 다른 process 생성 ( 부모를 복사한 것이 아님. ) )
-> exec () 만으로는 process 생성 불가. ( fork 와 exec 동시 사용 )
3) Process switch ( = context switch )
- context switch : 실행하는 프로세스 ( = 프로그램 ) 을 바꾸는 것.
- Process switch 가 일어나는 상황
- 실행하는 process 가 끝나는 경우 [ Release ]
- 어떠한 event 를 기다리는 경우 [ event wait ]
( e.g. file open, I/O request )
- 할당된 시간을 다 쓰는 경우 [ timeout ]
- I/O interupt : 우선순위가 더 높은 process 한테 CPU 를 뺏길 수 있음. [ event occurs ]
-> 우선순위에 따라 일어날수도있고, 일어나지 않을 수 있음.
- context switch 과정
- 중단될 process의 상태 저장
- PCB 값 update
- PCB 를 적절한 queue 로 옮김. ( e.g. ready queue )
- 어떤 process 를 실행할 것인지 결정 ( ready 상태 process 들중에서 )
- 선정된 process 로 update
- memory 정보 update
- CPU 에 있던 기존 process 에 대한 정보를 register 에 write
-> 1, 2, 3 : 중단되어질 process 에 대한 조치
-> 4 : process scheduling
-> 5, 6, 7 : 새로 실행할 process 에 대한 준비작업
4) Terminataion
- Process termination이 일어나는 상황
- exit () system call 이 불렸을 때
- 프로세스가 처리할 수 없는 signal 을 받았거나
- CPU error 발생했을 때 ( = program error )
- 부모 프로세스가 자식 프로세스를 kill 해달라고 요청했을 때
- process 가 terminate 될 때 과정
- 할당받아 가지고 있던 resource release
- OS 가 프로세스를 terminated state 로 변환.
- wait () system call 이 불리기 전까지 terminated state 에서 대기
- wait () call 되면 PCB 도 없애며 프로세스 종료
- 자식프로세스보다 부모프로세스가 먼저 종료되면 ( 사라지면 ) 자식프로세스들을 init process 의 양자로 보냄.
5) Communication
- Inter-Process Communication ( IPC )
-> 프로세스 간 통신방법
- 독립된 process 간에 직접적으로 소통 불가
- IPC 방법을 사용하면 소통 가능
- Message Passing : OS 를 거쳐 메세지 전달
- shared memory : OS 가 생성해주는 공유공간을 통해 소통
- message passing 특징
- 구현은 금방되지만, 실행 시 시간이 오래 걸림.
- message 전달 시 send, receive 는 system call 에 구현
-> 호출시 mode change 해서 OS 가 수행함.
- queue 로 보내기 때문에 여러개의 메세지를 보내도 전부 저장됨.
- shared memory 특징
- 빠른 소통이 가능하지만, 충돌이 일어날 수 있음. ( 동시접근 시 )
- fork () 하는 순간 자식 프로세스와 공간을 공유
- IPC 의 장점
- 정보를 공유할 수 있음.
- 병행해서 작업하므로 속도 향상
- reliability / availability : 같은 서비스를 2개이상의 컴퓨터에서 실행
- IPC 사용 시 주의사항
- 충돌이 일어나지 않도록 동기화 코딩을 해줘야 함.
- 동기화코딩의 방법 ( IPC 의 type )
-> signal, Semaphore, Lock
- signal 이 발생되는 4가지 상황
- signal : 프로세스가 다른 프로세스에게 event 가 발생했다고 알리기만 함.
- 프로세스가 kill 되었을 때 ( sigkill 발생 )
- 프로세스가 stop 되었을 때 ( sigstop 발생 )
- signal 이 무시되었을 때
- user level 에서 정의한 signal 사용 시
- 혼동하면 안되는 개념
- Signal : 프로세스가 다른 프로세스에게 event 발생 알림.
- Interrupt : OS 가 프로세스에게 event 발생 알림.
- System call : 프로세스가 OS 에게 event 발생 알림 + 서비스 요청