[운영체제] Process Management (2)

2022. 3. 16. 17:16CS/OS

wait() 시스템 콜

 

: 프로세스를 잠들게 함(block 상태로 보냄. - 오래 걸리는 이벤트 기다리고 준비된다면 ready 상태로 변함.).

: 보통 자식 프로세스를 만든 후 기다리면서 wait()를 함. -> 부모 프로세스가 blocked 에서 ready로 변환되면서 부모 프로세스를 깨움.

int main() {
	
    int childPID;
    s1;
    childPID = fork();
    
    if(childPID == 0) {
    	//ready for child process
    }
    else {
    	//부모 프로세스라면?
    	wait();
   		// CPU를 얻지 못하고 잠들게 됨.
        // 자식 프로세스가 코드를 다 실행하고 자식 프로세스가 종료가 되면 wait을 빠져나가서 다음 것 실행.
    }
}

 

 

exit() 시스템 콜

 

: 프로세스 종료 하는 시스템 콜

명시적으로 하는 경우도 있고, exit를 사용하지 않았더라도 컴파일러가 exit를 넣어서 호출되도록 함.

 

- 자발적 종료

 : 마지막 statement 실행 후 exit로 종료.

 : main 함수가 리턴되는 위치에 컴파일러가 넣어줌.

- 비자발적 종료

 : 부모 프로세스가 자식 프로세스 강제 종료. (자원 부족, 태스크 더 필요하지 않는 경우) 

 : 키보드로 kill, break 경우.

 : 부모가 종료 (부모 종료 -> 자식도 종료) 


프로세스 간 협력

- 독립적 프로세스 (independent process)

: 원칙적으로 프로세스는 독립적. 다른 프로세스 수행에 영향을 미치지 못함.

 

- 협력 프로세스 (cooperating process)

: 프로세스가 다른 프로세스 수행에 영향 미칠 수 있음.

 

- 프로세스 간 협력 메커니즘. (IPC : Interprocess Communication)

  • message passing : 커널을 통해 메시지 전달.
  • message system : 프로세스 사이에 공유 변수(shared variable) 일체 사용않고 통신하는 시스템
  • direct communication : 통신하려는 프로세스 이름 명시적으로 표시
  • indirect communication  : mailbox(또는 port)를 통해 메시지 간접 전달.
  • shared memory : 주소 공간 공유.
  • thread : 프로세스의 협력으로 보기 어렵지만 process를 구성하는 thread 간에는 주소공간을 아예 공유하고 있기 때문에 협력 가능.

'CS > OS' 카테고리의 다른 글

[운영체제] CPU Scheduling (2)  (0) 2022.03.18
[운영체제] CPU 스케쥴링 (1)  (0) 2022.03.16
[운영체제] Process Management (1)  (0) 2022.03.16
[운영체제] Process 3  (0) 2022.01.24
[운영체제] Process 2  (0) 2022.01.24