프로세스 상태
생성 상태 | - 이제 막 메모리에 적재되어 PCB를 할당 받은 상태 - 준비가 완료되었다면 준비상태로 됨 |
준비 상태 | - 당장이라도 CPU를 할당 받아 실행할 수 있지만 자신이 차례가 아니기에 기다리는 상태. - 자신의 차례가 된다면 실행상태로 됨(== 디스패치) |
실행 상태 | - CPU를 할당 받아 실행 중인 상태. - 할당된 시간 모두 사용 시(타이머 인터럽트 발생시) 준비상태로, 실행 도중 입출력 장치를 사용하면 입출력 작업이 끝날 때까지 대기 상태로 됨. |
대기 상태 | - 프로세스가 실행 도중 입출력 장치를 사용하는 경우 - 입출력 작업은 CPU에 비해 느리기에 이 경우 대기 상태로 접어듬. 입출력 작업이 끝나면(입출력 완료 인터럽트를 받으면) 준비상태로 접어듬. |
종료 상태 | - 프로세스가 종료된 상태 - PCB, 프로세스의 메모리 영역 정리 |
프로세스 상태 다이어그램
프로세스 계층구조
- 프로세스 실행 도중(시스템 호출을 통해) 다른 프로세스 생성 가능
- 새 프로세스를 생성한 프로세스 : 부모 프로세스
- 부모 프로세스에 의해 생성된 프로세스 : 자식 프로세스
- 부모 프로세스와 자식 프로세스는 별개의 프로세스이므로 각기 다른 PID를 가짐.
- 일부 운영체제에서는 자식 프로세스 PCB에 부모 프로세스 PID(PPID)를 명시하기도 함.
- 자식 프로세스는 또 다른 자식 프로세스를 낳을 수 있고, 그 자식프로세스는 또 다른 자식 프로세스르 낳을 수 있음. >> 프로세스의 계층적인 구조 형성.
프로세스 생성 기법
부모 프로세스는 자식 프로세스를 어떻게 만들어내고, 자식 프로세스는 어떻게 자신만의 코드를 실행할까?
>> 복제와 옷 갈아입기
Fork-exec
- 부모 프로세스는 fork 시스템 호출을 통해 자신의 복사본을 자식 프로세스로 생성
- 자식 프로세스는 exec 시스템 호출을 통해 자신의 메모리 공간을 다른 프로그램으로 교체
fork 시스템 호출 | fork는 자기 자신 프로세스의 복사본을 자식 프로세스로 생성하는 시스템 호출이다. |
- 복사본(= 자식 프로세스) 생성 - 부모 프로세스의 자원 상속 |
|
exec 시스템 호출 | exec는 자신의 메모리 공간을 새로운 프로그램으로 덮어쓰는 시스템 호출이다. |
- 메모리 공간을 새로운 프로그램으로 덮어쓰기 - 코드/ 데이터 영역은 실행할 프로그램 내용으로 바뀌고 나머지 영역은 초기화 |
728x90
반응형
'컴퓨터 구조' 카테고리의 다른 글
컴퓨터 구조 ) 프로세스 동기화에 대해 알아보자. ++ 동기화 기법 (0) | 2024.02.27 |
---|---|
컴퓨터 구조 ) 스레드란 무엇인가? (++ 멀티스레드 vs 멀티프로세스) (0) | 2024.02.26 |
컴퓨터 구조 ) 프로세스 개요 (0) | 2024.02.22 |
컴퓨터 구조 ) 운영체제 - 커널, 운영체제의 서비스 종류, 시스템 콜과 이중 모드에 대해 알아보자. (0) | 2024.02.22 |
컴퓨터 구조 ) 운영체제란 무엇인가? (0) | 2024.02.20 |