쉽게 배우는 운영체제 | 조성우 저자 | 한빛 아카데미 책을 바탕으로 복습 목적으로 작성하였습니다.
목차
1. 프로세스란
2. 프로세스의 상태
3. 휴식 상태와 보류 상태
(1) 프로세스란
프로세스는 실행을 위해 메모리에 올라온 동적인 상태이다. / 운영체제에서 프로세스는 하나의 작업 단위입니다.
즉, 저장장치에 저장되어 있는 프로그램이 실행되기 위해 메모리에 올라온 상태를 의미합니다.
운영체제는 프로그램을 메모리의 적당한 위치로 가져오면서 프로세스 제어 블록(Process Control Block)을 가지게 됩니다.
프로세스 제어 블록에는 프로세스를 처리하는데 필요한 정보들이 있습니다.
만약, 프로그램이 프로세스 제어 블록이 없으면 프로세스로 전환되지 않습니다.
프로세스 제어 블록의 대표적인 3가지 정보
프로세스 구분자 | 각 프로세스를 구분하는 구분자를 의미합니다. |
메모리 관련 정보 | CPU는 실행하려는 프로세스가 메모리의 어디에 저장되어 있는지 알아야 합니다. 프로세스의 메모리 위치와 메모리 보호를 위해 경계 레지스터와 한계 레지스터 정보도 포함되어 있습니다. |
각종 중간값 | 여러 프로세스가 번갈아가며 실행되기 때문에 각 프로세스는 사용했던 중간값을 저장합니다. |
( 경계 레지스터 : 현재 진행 중인 작업의 메모리 시작 주소를 나타냅니다.
한계 레지스터 : 진행 중인 작업이 차지하고 있는 메모리의 크기, 즉 마지막 주소까지의 차이를 저장합니다. )
(2) 프로세스의 상태
✔ 생성 상태
: 프로세스가 메모리에 올라와 실행 준비를 완료한 상태입니다. (메모리 할당과 프로세스 제어 블록이 생성됩니다.)
✔ 준비 상태
: 생성된 프로세스가 CPU를 얻을 때까지 기다리는 상태입니다.
CPU가 1개인 컴퓨터에서는 한 번에 하나의 프로세스만 실행되기에 자기 실행 순서가 될 때까지 기다려야 합니다.
디스패치(dispatch) 준비 상태의 프로세스 중 하나를 골라 실행 상태로 바꾸는 작업을 의미합니다.
✔ 실행 상태
: 준비 상태에 있는 프로세스 중 하나가 CPU를 얻어 실제 작업을 수행하는 상태입니다.
(일정 시간 동안 CPU를 사용한 권한을 갖습니다.)
만약, 주어진 시간을 다 사용하고도 작업이 끝나지 않은 경우 프로세스는 준비 상태로 돌아가 다음 차례를 기다리게 됩니다.
= Timeout
만약, 실행 상태 동안 작업이 완료되면 exit(PID)가 실행되어 정상 종료됩니다.
만약, 실행 중인 프로세스가 입출력을 요청하면 CPU는 입출력 관리자에게 입출력을 요청하고 block(PID)를 실행합니다.
✔ 완료 상태
: 실행 상태의 프로세스가 주어진 시간 동안 작업을 마치면 완료상태가 됩니다.
완료 상태는 프로세스 제어 블록이 사라진 상태입니다.
✔ 대기 상태
: 입출력을 요구한 프로세스가 입출력이 완료될 때까지 기다리는 상태입니다.
=> 입출력을 요청한 프로세스를 실행 상태에 두지 않고 대기 상태로 옮김으로써 준비 상태에 있는 다른 프로세스를 실행할 수 있습니다.
대기 상태의 프로세스는 요청한 입출력이 완료되면 입출력 관리자로부터 인터럽트를 받습니다. 입출력이 끝난 프로세스는 실행 상태로 가지 않고 준비 상태로 돌아가 자기 차례를 기다립니다. = wakeup(PID)
( 실행 상태로 다시 돌아가게 되면 두 프로세스의 상태를 변화시켜야 하기에 다시 준비 상태로 돌아가 기다립니다.)
3) 휴식 상태와 보류 상태
✔ 휴식 상태
: 프로세스가 작업을 일시적으로 쉬고 있는 상태입니다.
프로그램이 종료된 것처럼 보이지만 실제로는 실행을 잠시 멈춘 것입니다.
=> 사용하던 데이터가 메모리에 그대로 있으며, 프로세스 제어 블록도 유지되므로 프로세스는 멈춘 지점에서부터 재시작할 수 있습니다.
✔ 보류 상태
: 프로세스가 메모리에서 잠시 쫓겨난 상태로 휴식 상태와 차이가 있습니다.
대부분이 컴퓨터의 성능을 떨어뜨리거나 실행을 미루어도 큰 지장이 없는 프로세스를 보류 상태로 둡니다.
- 메모리가 꽉 차서 일부 프로세스를 메모리 밖으로 내보낼 때
- 프로그램에 오류가 있어서 실행을 미루어야 할 때
- 바이러스와 같이 악의적인 공격을 하는 프로세스라고 판단될 때
- 매우 긴 주기로 반복되는 프로세스라 메모리 밖으로 쫓아내도 큰 문제가 없을 때
- 입출력을 기다리는 프로세스의 입출력이 계속 지연될 때
'CS > OS' 카테고리의 다른 글
[쉽게 배우는 운영체제] 2장 연습문제 및 심화문제 - 정리 (0) | 2022.10.10 |
---|---|
[쉽게 배우는 운영체제] 1장 연습문제 및 심화문제 - 정리 (0) | 2022.10.09 |
[OS] 운영체제 - 컴퓨터의 기본 구성 CPU와 메모리와의 관계 / 레지스터, 버스 (0) | 2022.10.07 |
[OS] 운영체제의 정의, 역할, 목표, 필요성에 대해 (0) | 2022.10.01 |
[OS] 운영체제 - 프로세스의 생성과 복사 / fork(), exec() 시스템호출 (1) | 2022.09.23 |