https://core.ewha.ac.kr/publicview/C0101020140321144554159683?vmode=f
프로세스 메니지먼트에 대해 다룬다함
프로세스가 어떻게 생성되는가?
프로세스의 생성은 부모 프로세스가 자식 프로세스를 생성한다.
프로세스의 족보가 트리형태로 형성된다.
프로세스가 실행될려면 자원이 필요한데 cpu와 메모리 같은것들
자원보통 운영체제로 부터 받음
부모와 자식이 자원을 공유하는경우도 공유하지 않는 경우도 있다.(원칙적으로는 자원을 공유하지않음)
사실 생성되고 난 다음부터는 별도의 프로세스라서 서로 자원을 얻으려고 서로 경쟁함
프로세스가 실행이 될때
부모와 자식이 공존하는 모델이 있고
자식이 종료 될때까지 부모가 기다리는(blocked된) 모델이 있다.
어떻게 생성을 하는가? 복제생성을 한다
주소 공간:
자식은 부모의 주소공간을 그대로 복제한다. 운영체제에 있는 데이터들 PCB 혹은 자원들도 일단 똑같이 복제한다.
복제 생성을 하면 세상에 같은 일만하는 프로세스만 있느냐? -> 아니다 복제해놓고 그 만들어진 공간과 자원에 새로운 프로그램을 덮어 씌움
복제생성: fork() 라는 시스템콜이 새로운 프로세스를 만드는 함수다.
다른 프로그램으로 덮어씌우는것은 exec()
프로세스의 생성은 두가지 단계이다
복제해놓고 프로그램을 덮어씌우는것이다.
근데 각각의 복제와 덮어씌우는 단계들은 각각 독립적이기 때문에 복제만 해놓을수도 있고
덮어씌우기만 할수도있다-> 기존프로그램 새로운 프로그램되는것
프로세스의 생성은 사용자 프로세스가 직접 다른 프로세스를 생성하는것은 아니고 운영체제를 통해서만 생성이 가능하다.
프로세스가 종료 될때
프로세스가 종료될때 exit 라는 시스템 콜을 호출해주면 프로세스가 종료된다
c언어 같은경우 메인 함수가 끝날떄 컴파일러가 저절로 저함수 호출해줌 아님 사용자가 명시적으로 종료할때도 저게 호출됨
프로세스가 종료될때
자식이 부모에게 데이터를 보내게됨 (부모는 항상 자식보다 늦게죽음 ) -> wait 시스템 콜을 통해서 데이터 보냄
비 자발적으로 프로세스가 종료되는경우(abort 강제종료)
자원의 할당치를 넘기는 요청하는경우, 자식에게 일시킬라고 만든건데 더이상 자식에게 시킬일이 없는경우, 부모프로세스가 종료되는경우 자식먼저 다죽이고 자기가 죽음 프로세스가 하나가 죽을떄 자손들 다죽이고 죽음 (단계적인 종료)
부모가 강제로 죽임
아니 이렇게 말하니까 너무이상함 근데 교수님이 이렇게 자극적이게 말함
그리고 프로세스 없앨때 명시적으로 kill이라고 한다고함
'cs > 운영체제' 카테고리의 다른 글
10강 CPU scheduling 1 (0) | 2023.01.03 |
---|---|
운영체제 9강 Process Management 2 (0) | 2023.01.03 |
운영체제 7강 Process 3 (0) | 2022.12.14 |
운영체제 6강 Process 2 (1) | 2022.12.14 |
운영체제 5강 Process 1 (0) | 2022.12.13 |