3 분 소요

1. 프로세스 개념

CPU activity를 부르는 명칭

  • Batch 시스템 → 작업(Job)
  • Time-shared 시스템 → User program, Task, Process

Job, Task, Process 용어는 거의 같은 의미로 사용됨

프로그램 – 디스크에 파일로 저장된 수동적 개체

  • 프로그램 파일 = 코드(text section) + 초기화 데이터 + 헤더정보 등

프로세스 - 실행 상태에 있는 능동적 개체, 연관된 자원 사용

  • 프로그램 코드보다 더 많은 부분을 포함
    • 메모리 : code + data + stack + heap
    • CPU : program counter(PC) + registers
    • 프로세스 관리용 자료구조 : 프로세스 제어 블록(PCB)

image

프로세스와 프로그램

여러 개의 프로세스가 같은 프로그램 사용 가능

예) 워드 프로세서를 실행하는 A, B, C 3개의 프로세스는 각각 독립된 메모리 공간에서 동작하며, 각각의 파일을 개별적으로 읽고 쓸 수 있다.

  • text section은 같음 - 같은 메모리 공유, 개별적인 실행 시퀀스
  • data/stack/heap section은 다름 – 프로세스마다 개별적인 메모리 할당

image

프로세스 상태

프로세스의 현재활동을 나타내며, 실행하는 동안 상태 변화가 발생함

프로세스 상태의 종류

  • 생성(new) – 프로세스가 생성 중임
  • 실행(running) – 명령어가 실행되고 있음
  • 대기(waiting) – 어떤 사건(입출력 완료, 신호 수신 등) 발생을 기다림
  • 준비(ready) – 프로세스가 실행할 준비가 됨 → CPU의 할당을 기다림
  • 종료(terminated) – 프로세스의 실행이 종료됨 →종료 후 처리를 기다림

프로세스 상태 이름과 종류는 운영체제마다 차이가 있다.

프로세스 상태도

image

  • 한 CPU에서는 어떤 순간에 한 프로세스만 실행될 수 있다.
  • 많은 수의 프로세스가 ready 또는 waiting 상태일 수가 있다.
  • 프로세스가 다른 프로세스에 의해서 종료되면 프로세스는 ready 또는 waiting 상태에서 terminated 상태로 이동될 수 있다.

프로세스 제어 블록(PCB)

프로세스에 대한 정보를 포함하는 OS 커널의 자료 구조 태스크 제어 블록이라고도 함

프로세스 context

프로그램의 실행 상태 정보 - 실행시간 동안 변경 가능

PCB 정보

image

프로세스 간에 CPU switch

image

2. 프로세스 스케쥴링

여러 프로세스들이 동시에 실행되고 있지만, CPU는 한 번에 하나의 프로세스만 실행할 수 있다. 따라서 운영체제는 프로세스 스케쥴링 알고리즘을 사용하여 CPU를 할당할 프로세스를 선택하고, 각 프로세스에 적절한 CPU 시간을 할당한다.

스케쥴링의 필요성

  • multiprogramming : CPU 이용률 극대화
  • time sharing : 사용자와의 상호 작용 → 빈번한 CPU 스위칭

프로세스 스케쥴링 Queue

  • Job queue: 모든 프로세스들의 집합
  • Ready queue: ready 상태의 프로세스들의 집합 (메모리에 위치)
  • Device queues: 특정 I/O 장치 사용을 대기하는 프로세스들의 집합 → 일반적으로 linked list로 저장

프로세스들은 실행 동안 여러 queue들 사이에서 이동함 프로세스가 종료되면 queue에서 제거되며 할당된 자원과 PCB도 반납(deallocate)함

Ready Queue와 여러 I/O Device Queues

image

프로세스 스케쥴링에 대한 Queueing

image

스케줄러

queue간에 이동할 프로세스를 선택하는 역할을 담당

1. long-term 스케줄러(job scheduler)

  • disk pool에서 ready queue로 이동시킬 프로세스를 선택
  • batch systems에서 사용

I/O-bound process

  • 계산보다는 I/O 수행에 더 많은 시간을 소비함
  • 많은 수의 짧은 CPU bursts(연속적으로 CPU를 사용하는 시간)
  • 우리들이 사용하는 대부분

CPU-bound process

  • 계산에 더 많은 시간을 소비함
  • 적은 수의 매우 긴 CPU bursts.

장기 스케줄러의 역할

  • multiprogramming의 정도(degree)를 제어함
  • I/O bound process와 CPU bound process들의 적절한 조합을 선택하는 것이 중요함

시분할(대화형) 시스템에서는 장기 스케줄러가 없거나 최소화

2. medium- term 스케줄러(swapping)

  • time-sharing system에서 추가된 중간 레벨의 스케줄링
  • 메모리 확보를 위해 메모리에서 disk로 이동시킬 프로세스를 선택

medium-term 스케줄러의 중요 아이디어

  • CPU에 대한 경쟁(contention)을 줄임 → multiprogramming 정도 감소
  • 새로 적재될 프로세스를 위한 메모리 공간 확보

image

short- term 스케줄러(CPU scheduler)

  • ready queue에서 다음에 실행시킬 프로세스를 선택하여 CPU를 할당함 → 스케줄러는 대개 CPU 스케줄러를 말함

Context Switch

컴퓨터에서 CPU가 한 프로세스에서 다른 프로세스로 전환될 때, 현재 실행 중인 프로세스의 상태(Context)를 저장하고 다음으로 실행될 프로세스의 상태를 불러오는 작업

프로세스의 CPU Context

  • PC, CPU registers, memory management 정보 등
  • Process switching 전에 PCB 등의 장소에 저장해야 함

CPU가 다른 프로세스로 전환될 때에 운영체제는 old process의 현재 CPU context를 자신의 PCB에 저장하고 new process의 PCB에 저장된 CPU context를 CPxU에 적재한다.

프로세스 전환 과정

상태 변경 및 queue 이동

  • 현재 process의 PCB에 있는 state를 “running”에서 다른 상태로 갱신하고 PCB를 ready queue에서 갱신 상태에 적절한 queue로 이동함
  • 새로 선택된 process의 PCB에 있는 state를 “running”으로 갱신 Context switch

Context Switch Overhead

  • switching 동안 시스템은 유용한 작업을 하지 않음
  • 운영체제가 더 복잡할 수록 context switching 동안 더 많은 작업이 필요

Context-switch time은 하드웨어 지원에 크게 영향 받음

  • Sun(Oracle) UltraSPARC는 여러 개의 레지스터 집합을 제공
  • 많은 processor들이 모든 레지스터를 적재(load)하고 저장(store)하는 special instruction을 제공 (예) PUSHAD, POPAD
  • Process Switching은 간접적인 overhead도 가짐

모바일 시스템에서의 Multitasking

  • 초기의 iOS는 사용자 application의 multitasking을 제공하지 않음
  • iOS 4부터 제한된 형태의 multitasking 지원
  • Android는 background 응용에 제한이 없음

태그: ,

카테고리:

업데이트:

댓글남기기