[OS] 운영체제(3장) 프로세스 - 1
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)
프로세스와 프로그램
여러 개의 프로세스가 같은 프로그램 사용 가능
예) 워드 프로세서를 실행하는 A, B, C 3개의 프로세스는 각각 독립된 메모리 공간에서 동작하며, 각각의 파일을 개별적으로 읽고 쓸 수 있다.
- text section은 같음 - 같은 메모리 공유, 개별적인 실행 시퀀스
- data/stack/heap section은 다름 – 프로세스마다 개별적인 메모리 할당
프로세스 상태
프로세스의 현재활동을 나타내며, 실행하는 동안 상태 변화가 발생함
프로세스 상태의 종류
- 생성(new) – 프로세스가 생성 중임
- 실행(running) – 명령어가 실행되고 있음
- 대기(waiting) – 어떤 사건(입출력 완료, 신호 수신 등) 발생을 기다림
- 준비(ready) – 프로세스가 실행할 준비가 됨 → CPU의 할당을 기다림
- 종료(terminated) – 프로세스의 실행이 종료됨 →종료 후 처리를 기다림
프로세스 상태 이름과 종류는 운영체제마다 차이가 있다.
프로세스 상태도
- 한 CPU에서는 어떤 순간에 한 프로세스만 실행될 수 있다.
- 많은 수의 프로세스가 ready 또는 waiting 상태일 수가 있다.
- 프로세스가 다른 프로세스에 의해서 종료되면 프로세스는 ready 또는 waiting 상태에서 terminated 상태로 이동될 수 있다.
프로세스 제어 블록(PCB)
프로세스에 대한 정보를 포함하는 OS 커널의 자료 구조 태스크 제어 블록이라고도 함
프로세스 context
프로그램의 실행 상태 정보 - 실행시간 동안 변경 가능
PCB 정보
프로세스 간에 CPU switch
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
프로세스 스케쥴링에 대한 Queueing
스케줄러
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 정도 감소
- 새로 적재될 프로세스를 위한 메모리 공간 확보
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 응용에 제한이 없음
댓글남기기