본문 바로가기
CS(Computer Science)/운영체제

[운영체제] 프로세스 시스템 콜 종류 & 프로세스 협력

by whdgus928 2023. 1. 29.

프로세스의 생성과 종료의 시스템 콜 종류들

fork() 시스템 콜exec() 시스템 콜을 C로 구현한 코드이다

int main()
{ int pid;
  pid=fork();
  if (pid==0)
  	printf("I am child");
    	execlp("/bin/date","/bin/date",(char *) 0);
  else if (pid>0)
  	printf("I am parent");
}

fork() 시스템 콜로 복제를 할 때는 결괏값을 달리해 부모 프로세스와 자식 프로세스를 구분한다. 부모는 리턴 값이 양수이고 자식은 0이다. 중간에 exec() 시스템 콜을 통해 다른 프로그램을 실행시켜 다른 프로세스처럼 역할을 할 수 있다.

 

wait() 시스템 콜

프로세스A가 wait() 시스템 콜을 호출하면 자식 프로세스가 종료될 때까지 기다린다. 커널은 자식이 종료될 때까지 프로세스 A를 sleep 시킨다(block상태). 자식이 종료되면 커널은 프로세스 A를 깨운다(ready 상태)

 

exit() 시스템 콜

프로세스 종료시킨다


프로세스 간 협력

IPC: 프로세스끼리 정보를 주고받을 수 있는 방법

1. message passing: 공유 변수를 사용하지 않고 운영체제 커널을 통해서 통신하는 시스템

  - Direct Communicationn: 통신하려는 프로세스의 이름을 명시적으로 표시

  - Indirect Communicationn: mailbox(port)를 통해 메시지를 간접 전달

 

2. shared memory: 서로 다른 프로세스간에도 일부 주소 공간을 공유하게 하는 공간이 있음

※ thread: 하나의 프로세스이므로 프로세스 협력이라고 보기는 어렵지만 동일한 프로세스를 구성하는 스레드 간에는 주소 공간을 공유하므로 협력이 가능

 

자료출처

ABRAHAM SILBERSCHATZ ET AL., OPERATING SYSTEM CONCEPTS, NINTH EDITION, WILEY, 2013

반효경, 운영체제와 정보기술의 원리, 이화여자대학교 출판부, 2008

반응형

댓글