[운영체제] 운영체제 반효경 교수님 2014년 - 4. Process Management

June·2021년 6월 3일
0

프로세스 생성 (Process Creation)

부모 프로세스와 자원을 공유할 수도 있고, 공유하지 않을 수도 있다. 원칙적으로는 자원을 공유하지 않는다. 서로 경쟁하는 관계가 된다.

프로세스가 실행될 때 부모와 자식이 공존할 수도 있고, 부모는 blocked에서 기다릴 수도 있다.

자식은 부모의 공간을 그대로 복사한다.
fork()가 복제 생성을 하는 단계고, exec()은 덮어 씌우는 단계이다.

프로세스 종료 (Process Termination)

프로세스에서는 자식이 먼저 종료되고 부모가 종료되어야 한다 (wait).
비자발적으로 자식 프로세스가 종료될 때는 (abort)이다.

리눅스에서는 우선 부모와 자식이 자원을 공유하다가 달라지면 공유하던 메모리를 복사해서 따로 가진다. 이것을 Copy-on-write라고 부른다. 즉 write가 발생할 때 copy한다는 것이다.

fork() 시스템 콜

fork()는 시스템 콜로 자식 프로세스를 생성하는 것이다.

자식프로세스는 fork() 이후 시점부터 실행을 한다. 문맥(program counter)을 복사하기 때문이다.

부모 프로세느는 else if 부분을 실행하고, 자식 프로세스는 if 부분을 실행한다.

exec() 시스템 콜

execlp를 만나면 새로운 프로그램으로 덮어씌우는 것이다.

wait() 시스템 콜

wait 시스템콜은 보통 자식 프로세스를 만들고 호출한다. 자식 프로세스가 종료되기를 기다리며 block 상태로 만든다. 자식 프로세스가 종료되면 ready 상태가 된다.

리눅스에서 프로그램을 실행하다가 어떤 프로그램을 실행시키다가 종료하면 다시 원래 커맨드 창으로 돌아온다. 커맨드 창에서 wait()을 호출한 셈이다.

exit() 시스템 콜

자발적으로 스스로 종료될때 exit시스템콜을 하기도하고,
비자발적일 때는 부모 프로세스가 자식 프로세를 kill하는 경우다.

프로세스와 관련한 시스템 콜

프로세스 간 협력

원칙적으로는 프로세스는 독립적이어서 하나의 프로세스가 다른 프로세스에 영향을 미치지 않는다.

프로세스간 협력을 할 때 메커니즘을 IPC (Interprocess Communication)이라 한다.

message passing은 커널을 통해서 메시지를 전달하고 (직접 전달하는 것이 아니다),
shared memory는 원칙적으로는 프로세스가 독자적인 공간을 가지고 있지만 일부 주소 공간을 share하는 것이다

Message Passing

누가 받을지 명시하는지 (직접 전달하는 것이 아니다), 메시지를 메일 박스를 통해 전달할 수 있다.

Interprocess Communication

원칙적으로 프로세스는 각자 독자적인 공간을 갖고 있어서 직접적 통신을 하지 않지만 Shared Memory 방식에서는 공유하는 주소 공간이 있어서 서로 전달이 가능하다.

CPU scheduling

CPU and I/O Bursts in Program Execution

사용자와 interactive한 프로그램은 I/O burst에 가깝고 과학 프로그램들은 CPU burst에 가깝다.

CPU-burst Time의 분포

프로세스의 특성 분류

CPU Scheduler & Dispatcher

cpu scheduler는 운영체제 안의 코드가 담당하고 있다. dispatcher 역시 software이다.

CPU 스케줄링이 필요한 경우는 강의 자료와 같은 경우들이 있다.

0개의 댓글