seoyoung.dev

3.Process Management 본문

TIL/운영체제

3.Process Management

seo-0 2021. 8. 10. 14:55

http://www.kocw.net/home/search/kemView.do?kemId=1046323

 

운영체제

운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각

www.kocw.net


* 프로세스 생성 = fork()

: 부모 프로세스 -> 자식 프로세스 생성, 계층 구조 형성 

: fork() 라는 system call 로 OS 에 만들어 달라 요청하는 것

수행

(1) 부모와 자식 프로세스가 공존하며 수행하는 경우

(2) 자식이 종료될 때까지 부모 프로세스는 wait 하는 경우

 

주소 공간

: 자식은 부모의 address space 를 복사

: code, data, stack 그대로 복사

 

+ exec() 시스템 콜 : 기존 프로세스가 새로운 프로그램으로 덮어지는 것

+ fork() + exec() : 생성된 자식 프로세스는 새로운 실행파일로 덮어짐

 

* 프로세스 종료 = exit()

: 자식이 죽으면 부모에게 output data 전달 ( wait 시스템 콜을 통해서 )

 

* 부모 프로세스가 자식 수행 종료시킴 = abort

: 부모가 종료되는 경우

: 자식의 할당 자원 한계치 넘을 경우


* fork() System Call

: fork() 하게 되면, 부모 프로세스의 context 복제 == program counter 복제하니까 자식 역시 fork() 이후부터 수행

int main(){
int pid;
pid = fork();
if (pid == 0) // child 
	printf("child");
else if (pid > 0) // parent
	printf("parent");
 }

 

* exec() System Call

int main(){
int pid;
pid = fork();
if (pid == 0) // child 
{	
    printf("child");
    execlp("/bin/date","/bin/date",(char*) 0); // 새로운 실행 파일로 자식 프로세스 덮어씌움 
}
else if (pid > 0) // parent
	printf("parent");
 }

* wait() System Call

: 프로세스를 sleep 시킨다 ( block 상태로 보냄 )

: 자식 프로세스의 종료를 기다리면서

: 자식 프로세스 종료 시, 프로세스를 깨운다 ( ready 상태 ) 

 

* exit() System Call

: 마지막 문장 수행 후, 종료

: 비자발적 종료 

- 부모 프로세스가 자식 프로세스를 죽이는 경우 

- 키보드로 강제로 종료

- 부모 프로세스가 죽는 경우, 자식 먼저 죽어야 하므로 자식 차례대로 죽음


* IPC (Inter Process Communication)

(1) 메세지를 전달 ( message passing )

: 커널을 통해 메시지 전달

  1. 직접 통신 : 누가 받을지 명시 

  2. 간접 통신 : mailbox or port 를 통해 간접 전달..누가 받을지 명시하지 않음

IPC

(2) 주소공간 공유 ( shared memory )

: 서로 다른 프로세스 간 주소공간 일부 공유하여 사용

// 커널을 통해 shared memory 쓴다하는 시스템 콜로 사용

 

+ [ thread : 하나의 프로세스 내에서 주소공간을 공유하므로 협력 가능 ] 


 

'TIL > 운영체제' 카테고리의 다른 글

4.CPU Scheduling  (0) 2021.09.27
2. 프로세스  (0) 2021.08.09