04. 프로세스의 생성

개발 99·2025년 4월 2일

공룡책

목록 보기
4/22

Program이 Ram에 로드가 된 상태 = 프로세스

Program register + Program counter + process statae,resources = PCB

CPU가 PCB를 처리하며, PCB가 switch -> context switch

timesharing을 해서 concurrent하게 처리

UNIX에선

새로운 process는 fork()를 이용하며,
child process는 parent process의 주소공간을 복사한다.

fork()이후 둘다 코드를 실행한다.

return code가 0이면 child이고, 0이 아닌 다른 값이면 parent이다.

fork()

parent의 주소 공간을 그대로 복제하고 parent는 fork() 아래를 실행한다.

또는 child가 running하는 동안 wait()을 할 수 있다.(child가 terminate될 때까지 wait 큐에서 대기)

fork를 해도, 제어권은 여전히 parent한테 있다.


"Parent: value = 5" <- ans.
(해당 파일(프로그램) 그대로 복사, 전역변수도 그대로 복사)


8개.

execlp

child 프로세스가 완전히 다른 것을 수행한다.

Ex)
게임 laucher가 child로 복제한 다음, execlp를 통해서 하고자 하는 게임을 실행한다.

execlp 아래는 실행되지 않는다.
왜냐하면 해당 명령어로 덮어 씌워서 안됨.

fork()를 한다고 무조건 parent가 실행이 되는 것은 아니다.

그래서 synchronized가 필요하다.

profile
구구구구구!

0개의 댓글