본문 바로가기

cs

OS - 프로세스

프로세스


 * 현재 주기억공간(RAM)을 할당받아 CPU에 의해 실행 중인 프로그램
 * 사용자의 요청에 의해 보조기억장치에 저장되어 있던 프로그램(수동적 개체, passive entity)이 사용자의 요청에 따라 능동적 개체(active entity, 프로세스)로 상태가 변화한 것

프로세스 = CPU, 프로세서 = 실행 중인 프로그램

프로세스의 종류


  1. 운영체제 프로세스
    • 커널 프로세스 또는 시스템 프로세스라 불리기도 한다
    • 프로세스 실행순서를 제어하고 사용 중인 프로세스가 다른 사용자나 운영체제 영역에 침범하지 못하도록 감시하는 기능
    • 사용자 프로세스 생성, 입출력 프로세스 수행 등 시스템 운영에 필요한 작업을 수행한다
  2. 사용자 프로세스
    • 사용자 코드를 수행한다
  3. 병행 프로세스
    • 프로세스 여러 개가 동시에 실행되는 것
      • 독립적으로 수행되어 다른 프로세스의 영향을 받지 않는 독립 프로세스와 다른 프로세스에 영향을 주거나 받는 (자원을 공유하는) 유기적 프로세스로 나뉜다

작업 스케줄러, 프로세스 스케줄러


 * 가장 적절한 프로세스에게 CPU 권한을 할당하는 역할을 한다 (프로세스 전환, 프로세스 디스패처)
 * CPU에 대한 권한할당을 프로세스 스케줄링이라 한다
 * 다중 프로그래밍을 가능하게 해 준다
  1. 장기 스케줄러(작업 스케줄러)
    • 디스크 내의 작업을 어떤 순서로 메모리에 가져와서 처리할 것인지 결정하는 프로그램
    • 제출시간, 작업이름, 작업의 길이(용량)등의 정보가 필요하다
    • 분단위로 시스템에 새로운 작업이 들어오므로 단기 스케줄러에 비해 상대적으로 실행간격이 길다
  2. 중기 스케줄러
    • 가상 메모리나 시분할 기법을 사용하는 시스템에서 추가로 사용
    • 시스템에 장기 스케줄러가 없거나 작은경우 새로운 프로세스를 메인 메모리에 넣어주는 역할을 한다
  3. 단기 스케줄러(프로세스 스케줄러)
    • 메인 메모리에 적재되어 준비상채에 있는 프로세스 중에서 실행할 작업을 선택하여 프로세서에 배당함으로써 실행상태가 되도록 결장하는 스케줄러
    • 100만분의 수초 정도의 단위로 실행할 프로세스를 수시로 선택한다

작업과 프로세스 상태


프로세스는 생성(new), 준비(ready), 실행(running), 대기(waiting), 완료(complete) 중 한 가지 상태로 관리가 이루어진다

 

 

프로세스 상태

 

종류

  1. 준비 상태
    • 프로세스가 언제든지 CPU를 사용하여 실행될 수 있는 상태
    • 프로세스가 할당되기를 기다리고 있는 상태
  2. 실행 상태
    • 프로세스가 명령어를 실행하고 있는 상태
  3. 대기 상태
    • 프로세스가 어떤 사건(입출력 완료 등)이 일어나기를 기다리고 있는 상태
  4. 디스패치 (dispatch)
    • 준비상태에 있던 프로세스가 CPU를 할당받아 실행상태로 전이되는 것을 의미
  5. 타이머 런 아웃
    • 할당시간 초과하여 준비상태로 전이되는 것
  6. 블록
    • 실행중인 프로세스가 지정된 시간 이전에 다른 작업을 위해 스스로 프로세스를 양도하고 대기상태로 전이되는것
    • 입출력 인터럽트 등이 실행되는 경우가 해당된다

프로세스 제어블록 (PCB)


 * 프로세스 정보 리스트, 프로세스 디스크립터 라고도 한다
 * 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓은 곳
 * 필요할 때 마다 OS에 프로세스에 대한 정보를 제공해주는 자료구조 테이블
 * 각 프로세스가 생성될 때 마다 PCB가 생성되고 완료되면 PCB는 제거된다
 * 부모 프로세스와 자식 프로세스 사이에도 PCB는 서로 독립적이다

제어블록 내용

  1. 프로세스의 현재 상태
  2. 포인터
  3. 프로세스 고유 식별자
  4. 스케줄링 및 프로세스의 우선순위
  5. PC (Program Counter)
  6. CPU 레지스터 정보
  7. 주기억장치 관리정보
  8. 회계 및 입출력 관리정보
  9. 계정정보
제어블록 저장정보 설명
프로세스의 현재 상태 * 프로세스 상태정보를 가짐 (준비, 대기 실행 등)
포인터 * 부모 프로세스의 주소를 기억하는 부모 프로세스의 포인터
* 자식 프로세스의 주소를 기억하는 자식 프로세스의 포인터
* 현재 프로세스의 메모리 위치에 대한 포인터
* 프로세스에 할당된 각 자원에 대한 주소를 기억하는 포인터
프로세스 고유 식별자 * 각 프로세스를 서로 구분할 수 있는 고유의 번호
스케줄링 및 프로세스의 우선순위 * 스케줄링 정보
* 실행 될 때의 우선순위
PC * 다음 명령어의 주소를 포함
CPU 레지스터 정보 * Accumulator, Index register, 범용 레지스터
주기억장치 관리정보 * base register, bound register, page table
회계 및 입출력 상태정보 * 입출력장치 및 개방된 파일 목록에 대한 정보
계정정보 * 프로세스 유저의 사용시간, 실제 사용시간, 제한시간 등

'cs' 카테고리의 다른 글

OS - 병행 프로세스  (0) 2022.05.15
OS - 스케줄링 알고리즘  (0) 2022.05.14
OS - 국부성  (0) 2022.05.14
OS - 페이지 교체 기법  (0) 2022.05.13
OS - 페이지 호출기법  (0) 2022.05.13