1. 프로세스(Process)란?
- 하나, 또는 여러개의 스레드(thread)로 실행되는 작업의 단위
- 컴퓨터 프로그램의 인스턴스(instance)
- 효율적인 실행을 위해 운영체제의 커널(kernal)에 의해 관리
- 운영체제로부터 PCB(Process Control Block)를 할당받고 이를 통해 운영체제의 관리를 받게된다.
- 프로세스의 작업은 필요한 프로세서(CPU), 메모리, 주변기기 등의 자원을 운영체제에 요청, 할당받아 실행된다.
2. 프로세스 제어 블록(Process Control Block)
- 운영체제가 프로세스를 제어하기 위해 프로세스에게 할당하는 데이터 블록
- PCB의 정보를 어떻게 참조하고 갱신하냐에 따라 OS의 성능이 크게 갈린다.
- 프로세스 실행에 필요한 데이터를 보관
- PID(Process IDentifider)
- 프로세스의 고유 식별자
- 프로세스의 고유 식별자
- 프로세스의 상태(Process State)
- 생성, 실행, 준비, 대기, 종료 등 프로세스의 상태 정보
- 생성, 실행, 준비, 대기, 종료 등 프로세스의 상태 정보
- PC(Program Counter)
- 다음에 실행될 명령어의 위치를 나타내는 포인터
- 다음에 실행될 명령어의 위치를 나타내는 포인터
- 레지스터 정보(Register Inforamation)
- 프로세스가 실행중이었을 때의 CPU의 레지스터 정보를 저장해두는 영역
- 프로세스가 실행중이었을 때의 CPU의 레지스터 정보를 저장해두는 영역
- 스케줄링 정보(Scheduling Information)
- 프로세스의 우선순위 등 스케줄링에 필요한 정보
- 프로세스의 우선순위 등 스케줄링에 필요한 정보
- 메모리 관리 정보(Memory Management Information)
- 페이지 테이블, 세그먼트 테이블, 메모리 제한 등의 메모리 관리를 위한 정보
- 페이지 테이블, 세그먼트 테이블, 메모리 제한 등의 메모리 관리를 위한 정보
- 입출력 정보(I/O Information)
- 프로세스가 할당받은 주변장치나 파일에 대한 정보
- 프로세스가 할당받은 주변장치나 파일에 대한 정보
- 계정 정보(Accounting Information)
- CPU 사용시간, 시간제한, 실행 ID 등의 정보
- PID(Process IDentifider)
- 모든 프로세스는 생성시에 고유의 PCB를 할당받고 이는 프로세스의 종료시 반환된다.
PCB의 일부 정보는 프로세스가 종료된 후에도 잠시동안 소멸되지 않고 남아있다.
- Context Switching
- 인터럽트가 발생할 경우 실행중인 프로세스의 처리를 중단하고 PCB에 프로세스의
상태를 저장(Context Saving)하고 다음으로 실행될 프로세스의 정보를 레지스터에
적재(Context Restoring)하는 과정 - 인터럽트의 발생 요인
- 기계적 고장, 전원부족 등 프로그램 외적인 결함(External Interrupt)
- CPU 사용시간 만료(Timeout), 입출력 요청의 완료 등 외부로부터의 인터럽트 요청
- 입출력 요청(I/O Request)이나 자식 프로세스 생성(Fork Child) 등의 커널 서비스 요청(System Call)
- 프로그램의 내부적 결함, 즉 예외(Exception)
- Context Switching의 오버헤드
- Context Switching 이 발생하는 동안 CPU는 아무 작업도 실행하지 않음
- 자주 발생할 수록 오버헤드로 인해 성능 저하를 가져올 수 있음
- 인터럽트가 발생할 경우 실행중인 프로세스의 처리를 중단하고 PCB에 프로세스의
3. 프로세스의 상태(Process State)와 전이
① 프로세스의 상태
- 생성(New / Create) : 프로세스가 생성되어 PCB를 할당받은 상태
- 준비(Ready) : 프로세스가 실행 준비를 마치고 CPU만 할당받으면 언제든 실행 가능한 상태
- 실행(Run) : 프로세스가 CPU를 할당받아 실행되고있는 상태
- 대기(Block / Wait) : 프로세스가 인터럽트의 처리가 완료되길 대기하고있는 상태
- 종료(Terminated) : 프로세스의 실행이 종료된 상태
② 프로세스의 상태 전이(Process State Transition)
- Creation
- 생성(New)된 프로세스가 준비 상태(Ready)가 되어 대기열에 들어감
- 생성(New)된 프로세스가 준비 상태(Ready)가 되어 대기열에 들어감
- Dispatch
- 준비상태(Ready)의 프로세스가 CPU를 할당받아 실행상태(Run)에 들어감
- 준비상태(Ready)의 프로세스가 CPU를 할당받아 실행상태(Run)에 들어감
- Timeout
- 실행(Run)중이던 프로세스가 운영체제로부터 할당받은 CPU 사용시간을 모두 소진하여
준비상태(Ready)로 되돌아감
- 실행(Run)중이던 프로세스가 운영체제로부터 할당받은 CPU 사용시간을 모두 소진하여
- Blocking
- 실행(Run)중이던 프로세스가 입출력 요청, 시그널 대기 등으로 인해 발생한 인터럽트의 처리가
완료될 때 까지 대기상태(Block)에 들어감
- 실행(Run)중이던 프로세스가 입출력 요청, 시그널 대기 등으로 인해 발생한 인터럽트의 처리가
- Unblocking / Wake up
- 인터럽트의 처리가 완료되어 대기상태(Block)였던 프로세스가 다시 준비상태(Ready)가 되어
대기열에 들어감
- 인터럽트의 처리가 완료되어 대기상태(Block)였던 프로세스가 다시 준비상태(Ready)가 되어
- Termination
- 실행(Run)중이던 프로세스가 작업을 마치고 종료상태(Terminated)에 들어감
'CS > 운영체제' 카테고리의 다른 글
#5 동기화(Synchronization) 2 - SW Solution (0) | 2021.12.23 |
---|---|
#4 동기화(Synchronization) 1 - 상호 배제의 개념 (0) | 2021.12.23 |
#3 프로세스 스케줄링(Scheduling) (0) | 2021.12.21 |
#2 스레드(Thread) (0) | 2021.12.20 |
#0 컴퓨터의 구조 (0) | 2021.12.13 |