-
프로세스의 상태와 계층 구조Computer Engineering 2023. 6. 7. 01:55
대표적인 상태
- 생성 상태 : 이제 막 메모리에 적재되어 PCB를 할당받은 상태
- 준비 상태 : 당장이라도 CPU 할당받아 실행할 수 있지만, 차례를 기다리는 상태
- 실행 상태 : CPU할당받아 실행중인 상태,
-> 타이머 인터럽트가 발생하면 ( 할당된 시간 모두 사용하면 ) 다시 준비 상태되고, 실행 도중 입출력장치를 사용하여 입출력 장치의 작업이 끝날 때까지 기다려야 한다면 대기상태가 된다.
- 대기 상태 : 입출력 작업은 CPU에 비해 처리 속도가 느리기에, 프로세스는 입출력 완료 인터럽트 받을 때까지 기다려야 다.
* 대기 상태는 특정 이벤트가 일어나길 기다릴 때 대기상태가 되는데, 입출력장치 사용이 대부분이다.
- 종료 상태 : 프로세스가 종료된 상태, PCB와 프로세스가 사용한 메모리를 정리프로세스 상태 다이어그램
프로세스 계층 구조
프로세스는 실행 도중 시스템 호출을 통해 다른 프로세스를 생성할 수 있다
- 부모 프로세스 : 새 프로세스를 생성한 프로세스
- 자식 프로세스 : 부모 프로세스에 의해 생성된 프로세스
엄연히 다른 프로세스이기에 각기 다른 PID를 가진다.
자식 프로세스의 PCB 에 부모 프로세스의 PID인 PPID( Parent PID )가 기록되기도 한다.
많은 운영체제는 프로세스가 프로세스를 낳는 계층적인 구조로써 프로세스들을 관리- 최초의 프로세스 : 유닉스 init, 리눅스 systemd, macOS는 launched
- 데몬이나 서비스 또한 최초의 자식 프로세스
- 최초의 프로세스 PID는 항상 1프로세스 생성 기법
- 부모프로세스를 통해 생성된 자식 프로세스들은 복제와 옷 갈아입기를 통해 실행
- 부모 프로세스 fork 통해 자신의 복사본을 자식 프로세스로 생성
- 만들어진 복사본(자식 프로세스)는 exec를 통해 자신의 메모리 공간을 다른 프로그램으로 교체- fork : 자기 자신 프로세스의 복사본을 만드는 시스템 호출
자식 프로세스는 부모 프로세스의 복제본이기 때문에 자원들, 메모리의 내용, 열린 파일의 목록 등이 자식 프로세스에 상속된다 * PID, 메모리 위치는 다르다
- exec : exec는 자신의 메모리 공간을 새로운 프로그램으로 덮어쓰는 시스템 호출
새로운 프로그램 내용으로 전환하여 실행하는 시스템 호출
- fork 통해 복사본이 만들어진 뒤에 자식 프로세스는 exec 시스템 호출을 통해 새로운 프로그램으로 전환된다
- fork, exec는 시스템 호출
부모가 자식 프로세스를 실행하며 프로세스 계층 구조를 이루는 과정 = fork와 exec가 반복되는 과정
- fork한 뒤 부모 프로세스, 자식 프로세스 누구도 exec를 호출하지 않는 경우도 있다 이때 둘은 같은 코드를 병행하여 실행하는 프로세스가 된다추후 참고해서 읽어볼 것
'Computer Engineering' 카테고리의 다른 글
23/11/23 네트워크 프로그래밍 #멀티캐스트 실습 (0) 2023.11.23 23/11/21 네트워크 프로그래밍 # 브로드 캐스팅 (1) 2023.11.21 교착상태(데드락)이란? (0) 2023.06.18