cs
OS - 프로세스
joepasss
2022. 5. 14. 16:39
프로세스
* 현재 주기억공간(RAM)을 할당받아 CPU에 의해 실행 중인 프로그램
* 사용자의 요청에 의해 보조기억장치에 저장되어 있던 프로그램(수동적 개체, passive entity)이 사용자의 요청에 따라 능동적 개체(active entity, 프로세스)로 상태가 변화한 것
프로세스 = CPU, 프로세서 = 실행 중인 프로그램
프로세스의 종류
- 운영체제 프로세스
- 커널 프로세스 또는 시스템 프로세스라 불리기도 한다
- 프로세스 실행순서를 제어하고 사용 중인 프로세스가 다른 사용자나 운영체제 영역에 침범하지 못하도록 감시하는 기능
- 사용자 프로세스 생성, 입출력 프로세스 수행 등 시스템 운영에 필요한 작업을 수행한다
- 사용자 프로세스
- 사용자 코드를 수행한다
- 병행 프로세스
- 프로세스 여러 개가 동시에 실행되는 것
- 독립적으로 수행되어 다른 프로세스의 영향을 받지 않는 독립 프로세스와 다른 프로세스에 영향을 주거나 받는 (자원을 공유하는) 유기적 프로세스로 나뉜다
- 프로세스 여러 개가 동시에 실행되는 것
작업 스케줄러, 프로세스 스케줄러
* 가장 적절한 프로세스에게 CPU 권한을 할당하는 역할을 한다 (프로세스 전환, 프로세스 디스패처)
* CPU에 대한 권한할당을 프로세스 스케줄링이라 한다
* 다중 프로그래밍을 가능하게 해 준다
- 장기 스케줄러(작업 스케줄러)
- 디스크 내의 작업을 어떤 순서로 메모리에 가져와서 처리할 것인지 결정하는 프로그램
- 제출시간, 작업이름, 작업의 길이(용량)등의 정보가 필요하다
- 분단위로 시스템에 새로운 작업이 들어오므로 단기 스케줄러에 비해 상대적으로 실행간격이 길다
- 중기 스케줄러
- 가상 메모리나 시분할 기법을 사용하는 시스템에서 추가로 사용
- 시스템에 장기 스케줄러가 없거나 작은경우 새로운 프로세스를 메인 메모리에 넣어주는 역할을 한다
- 단기 스케줄러(프로세스 스케줄러)
- 메인 메모리에 적재되어 준비상채에 있는 프로세스 중에서 실행할 작업을 선택하여 프로세서에 배당함으로써 실행상태가 되도록 결장하는 스케줄러
- 100만분의 수초 정도의 단위로 실행할 프로세스를 수시로 선택한다
작업과 프로세스 상태
프로세스는 생성(new), 준비(ready), 실행(running), 대기(waiting), 완료(complete) 중 한 가지 상태로 관리가 이루어진다
종류
- 준비 상태
- 프로세스가 언제든지 CPU를 사용하여 실행될 수 있는 상태
- 프로세스가 할당되기를 기다리고 있는 상태
- 실행 상태
- 프로세스가 명령어를 실행하고 있는 상태
- 대기 상태
- 프로세스가 어떤 사건(입출력 완료 등)이 일어나기를 기다리고 있는 상태
- 디스패치 (dispatch)
- 준비상태에 있던 프로세스가 CPU를 할당받아 실행상태로 전이되는 것을 의미
- 타이머 런 아웃
- 할당시간 초과하여 준비상태로 전이되는 것
- 블록
- 실행중인 프로세스가 지정된 시간 이전에 다른 작업을 위해 스스로 프로세스를 양도하고 대기상태로 전이되는것
- 입출력 인터럽트 등이 실행되는 경우가 해당된다
프로세스 제어블록 (PCB)
* 프로세스 정보 리스트, 프로세스 디스크립터 라고도 한다
* 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓은 곳
* 필요할 때 마다 OS에 프로세스에 대한 정보를 제공해주는 자료구조 테이블
* 각 프로세스가 생성될 때 마다 PCB가 생성되고 완료되면 PCB는 제거된다
* 부모 프로세스와 자식 프로세스 사이에도 PCB는 서로 독립적이다
제어블록 내용
- 프로세스의 현재 상태
- 포인터
- 프로세스 고유 식별자
- 스케줄링 및 프로세스의 우선순위
- PC (Program Counter)
- CPU 레지스터 정보
- 주기억장치 관리정보
- 회계 및 입출력 관리정보
- 계정정보
제어블록 저장정보 | 설명 |
프로세스의 현재 상태 | * 프로세스 상태정보를 가짐 (준비, 대기 실행 등) |
포인터 | * 부모 프로세스의 주소를 기억하는 부모 프로세스의 포인터 * 자식 프로세스의 주소를 기억하는 자식 프로세스의 포인터 * 현재 프로세스의 메모리 위치에 대한 포인터 * 프로세스에 할당된 각 자원에 대한 주소를 기억하는 포인터 |
프로세스 고유 식별자 | * 각 프로세스를 서로 구분할 수 있는 고유의 번호 |
스케줄링 및 프로세스의 우선순위 | * 스케줄링 정보 * 실행 될 때의 우선순위 |
PC | * 다음 명령어의 주소를 포함 |
CPU 레지스터 정보 | * Accumulator, Index register, 범용 레지스터 |
주기억장치 관리정보 | * base register, bound register, page table |
회계 및 입출력 상태정보 | * 입출력장치 및 개방된 파일 목록에 대한 정보 |
계정정보 | * 프로세스 유저의 사용시간, 실제 사용시간, 제한시간 등 |