프로세스의 개념
프로세스란 : 실행중인 프로그램
프로세스 문맥
프로세스가 현제 어떤 상태에서 수행되고 있는지 정확히 규명하기 위해 필요한 정보
크게 세 가지로 분류 : 하드웨어 문맥, 프로세스 주소공간, 커널상의 문맥
- 하드웨어 문맥 : CPU의 수행 상태를 나타내는 것으로, 프로그램 카운터값과 각종 레지스터에 저장하고 있는 값들을 의미
- 프로세스의 주소공간 : 프로세스는 코드,데이터, 스택으로 구성되는 자기 자신만의 독자적인 주소 공간을 가진다.
- 커널상의 문맥 : 운영체제는 프로세스를 관리하기 위한 자료구조인 PCB와 커널스택을 유지한다.
프로세스의 상태
- 실행 상태 : 프로세스가 CPU를 보유하고, 기계어 명령을 실행하고 있는 상태
- 준비 상태 : 프로세스가 CPU만 보유하면 당장 명령을 실행 할 수 있지만, CPU를 할당 받지 못한 상태
- 봉쇄 상태 : CPU를 할당 받더라도 당장 명령을 실행 할 수 없는 프로세스의 상태 ( 예시, 프로세스가 요청한 입출력 작업 이 진행중인 경우)
- 시작 상태 : 프로세스가 시작되어 그 프로세스를 위한 각종 자료구조는 생성되었지만, 아직 메모리 획득을 승인받지 못한 상태
- 완료 상태 : 프로세스가 종료되었으나 운영체제가 그 프로세스와 관련된 자료구조를 완전히 정리하지 못한 상태
문맥 교환
-실행시킬 프로세스를 변경하기 위해 원래 수행 중이던 프로세스의 문맥을 저장하고 새로운 프로세스의 문맥을 세팅하는 과정.
- 문맥교환이 일어나는 경우
1. 타이머 인터럽트가 발생하는 경우
2. 실행상태에 있던 프로세스가 입출력 요청등으로 봉쇄 상태로 바뀌는 경우
CPU 디스패치
준비상태에 있는 프로세스들 중에서 CPU를 할당받을 프로세스를 선택한 후 실제로 CPU의 제어권을 넘겨받는 과정.
프로세스 제어블록 PCB
운영체제가 시스템 내의 프로세스들을 관리하기 위해 프로세스마다 유지하는 정보들을 담는 커널 내의 자료구조
PCB에는
1. 운영체제가 관리상 사용하는 정보 ( 프로세스 상태, 프로세스 번호, 스케줄링 정보, 우선순위)
2. CPU수행 관련 하드웨어 값 ( 프로그램 카운터, 레지스터)
3. 메모리 관련 (코드, 데이터, 스택의 위치 정보)
4. 파일 관련 ( 프로세스가 오픈한 파일 정보)
로 구성되어있다.
문맥교환
- 문맥교환이란 하나의 사용자 프로세스로부터 다른 사용자 프로세스로 CPU의 제어권이 이양되는 과정을 의미한다.
- 문맥 교환이 일어나는 경우
1. 타이머 인터럽트 발생
2. 프로세스가 입출력 요청 시스템 콜을 하여 봉쇄 상태에 들어가는 경우
프로세스를 스케줄링 하기 위한 큐
프로세스의 상태 관리는 커널의 주소 영역 중 데이터 영역에 다양한 큐를 두어 수행한다.
준비큐
- 준비 상태에 있는 프로세스들을 줄 세우기 위한 큐 ( CPU를 기다리는 프로세스를 줄 세우는 큐)
- 준비큐의 제일 앞에 줄 서있는 프로세스먼저 CPU할당
- 프로세스들 : 준비상태
장치큐
- 특정 자원을 기다리는 프로세스들을 줄 세우기 위한 자원별 큐
- 프로세스들 : 봉쇄상태
작업큐
- 시스탬 내의 모든 프로세스를 관리하기 위한 큐
- 프로세스 상태와 무관하게 현재 시스템 내에 있는 모든 프로세스가 작업 큐에 속한다.
- 준비 큐와 장치 큐에 있는 프로세스들은 모두 작업 큐에 속해있다.
스케줄러
어떤 프로세스에게 자원을 할당할지를 결정하는 운영체제 커널의 코드를 지칭한다.
장기 스케줄러
- 작업스케줄러
- 어떤 프로세스를 준비 큐에 진입시킬지 결정하는 역할을 한다.
(준비큐 :CPU를 얻으면 당장 실행 될 수 있는 프로세스의 집합)
- 가끔 호출되기 때문에 상대적으로 속도가 느린 것이 허용된다.
- 메모리에 동시에 올라가있는 프로세스의 수를 조절하는 역할을 한다.
단기 스케줄러
- CPU 스케줄러
- 준비상태의 프로세스중에서 어떤 프로세스를 다음번에 실행 상태로 만들 것인지 결정한다.
- 준비 큐에 있는 여러 프로세스들 중 어떠한 프로세스에게 CPU를 할당할것인지 결정
- 시분할 시스템에서는 타이머 인터럽트가 발생하면 단기 스케줄러가 호출된다.
- 매우 빈번하게 호출되기 때문에 수행 속도가 충분히 빨라야 한다.
중기 스케줄러
- 너무 많은 프로세스에게 메모리를 할당해 시스템의 성능이 저하되는 경우, 이를 해결하기 위해 메모리에 적재된 프로세스의 수를 동적으로 조절하기 위해 추가된 스케줄러.
- 프로세스당 보유하고 있는 메모리 양이 지나치게 적어진 경우 이를 완화시키기 위해 메모리에서 일부 프로세스를 디스크의 스왑영역에 저장한다. (스왑아웃)
'운영체제' 카테고리의 다른 글
4. 컴퓨터 시스템의 동작 원리 (0) | 2022.09.12 |
---|---|
3. 프로그램의 구조와 실행 (0) | 2022.09.12 |
2. 운영체제 개요 (0) | 2022.09.09 |