본문 바로가기

프로세스관리2

[OS] 프로세스 관리 (2) 1. fork() 시스템콜 fork()는 새로운 프로세스를 만들어달라는 요청이다. fork를 하게 되면 fork가 이루어진 그다음 시점부터 자식 프로세스가 실행을 하게 된다. 그 이유는, 자식 프로세스가 부모 프로세스의 context(정확히는 Program Counter)를 복제해서 main함수의 시작 부분이 아닌, pid = fork(); 부분부터 실행해야 하기 때문이다. 2. exec() 시스템콜 exec()는 어떤 프로그램을 완전히 새로운 프로세스로 태어나게 하는 역할을 한다. exec를 실행하면 main 함수 처음부터 돌아가 실행하게 된다. 그러나 반드시 자식 프로세스를 만들어서 exec를 해야 하는 것은 아니다. 즉, 위 코드에서 pid = fork(); 부분이 없어도 된다. 3. wait() .. 2021. 12. 16.
[OS] 프로세스 관리 (1) - 부모 프로세스(Parent Process)가 자식 프로세스(Children Process)를 생성한다. - 생성하는 방법으로는, 보통 복제 생성을 한다. 부모 프로세스에는 주소 공간이 있다. 그 주소 공간을 자식 프로세스가 그대로 복제한다(PCB와 자원들). 복제한 곳에 새로운 프로그램을 덮어 씌운다. 복제 생성은 fork 시스템콜의 역할이다. 복제한 후 다른 프로그램으로 덮어 쓰이는 것은 exec 시스템콜의 역할이다 - 프로세스들은 트리를 형성한다. - 프로세스가 실행기 되기 위해선 자원(CPU, 메모리)이 필요하다. 이 자원은 운영체제로부터 받으며, 부모와 자식이 공유하는 경우가 있다. - 프로세스가 실행될 때 부모와 자식이 공존하며 실행하는 모델이 있고, 자식을 하나 생성 후 그 자식이 종료(t.. 2021. 12. 2.