챕터3
프로세스에 대해
프로세스란?
프로그램을 실행할때, 자원을 할당받아서 실행되는 과정
Process Concept
Multiple parts
•
Program code = Text section
•
Current activity
◦
Program counter
◦
Processor register
•
Stack
◦
함수 인자, 리턴 주소값, 로컬 변수
•
Data Section
◦
전역변수
•
Heap
◦
메모리를 동적으로 할당
Process in Memory
Text
실행코드(고정)
Data
전역변수(고정)
Heap
프로그램 실행 중
동적으로 할당되는 메모리(가변)
Stack
함수 호출시,
임시 데이터 저장장소
(함수 매개변수, 복귀주소, 지역변수 등)
(가변)
함수 호출때마다 함수의 매개변수, 지역변수, 복귀주소 등이 스택에 Push됨
함수 종료 후 복귀하면 Pop
Process State
프로그램이 프로세스 된다 → 자원 할당 → 프로그램 실행 → 사용 후 종료
하지만, 중간중간 인터럽트(interrupt)가 계속 발생한다
인터럽트로부터 또 다른 프로세스들이 게속 들어옴
인터럽트로 인해 다른 프로세스들이 실행됨으로써, 중단되기도 함으로써, 프로세스의 상태를 알고 있어야 다시 실행을 하든, 종료를 하든 할 수 있다
1.
New
2. Ready
1.
프로세스를 CPU(프로세서)를 할당받을때까지 기다림
3. Running
a.
scheduler dispatch가 발생하면 ready에서 running상태로
b.
interrupt가 발생하면 다시 ready로 돌아감
4.
Waiting
a.
I/O 또는 Event completion
5.
Terminated
a.
running상태에서 종료되는 경우
Process Control Block(PCB) : Task Control Block
각 프로세스마다 연관된 정보 : 운영체제에 나타남
1.
Process State
a.
running, waiting, etc
2.
Process Number
3.
Program Counter
a.
location of instruction to next execute
4.
Registers
a.
CPU registers
b.
CPU scheduling information
5.
Memory Limits
a.
memory management information
b.
accounting information
6.
LIst of Open Files
a.
I/O status information
7.
나머지
Threads
일을 하는 단위
이전엔, 하나의 프로세서(CPU)가 한 프로세스만 실행함
현대엔, 프로세서가 하나 이상의 일을 한 번에 수행 가능
각 스레드 별로 하는 일이 있으니, 각 스레드마다 PCB에 정보가 나타나 있다
Process Scheduling
Maximize using CPU, Quickly switch processes onto CPU core
자원 이용륭을 최대화하기 위해, 항상 어떤 프로세스는 실행중이어야한다.
Time Sharing(시분할)
CPU코어를 빈번히 교체
Process Scheduler
코어 개수보다 프로세스 수가 많을 경우, 스케쥴링 필요
•
코어는 한 번에 하나의 프로세스 실행
Maintains Scheduling Queues of processes
프로세스들은 다양한 큐 내에서 이동을 한다
•
Ready queue
◦
메인메모리에 있는, 모든 프로세스들의 집합 : 실행을 위한 ready & waiting
•
Wait queue
◦
이벤트를 기다리고 있는 프로세스들의 집합(EX - I/O)
Burst
어떤 현상이 짧은 시간에 집중적으로 일어나는 것
Input/Output
입출력 장치와의 데이터 교환
네트워크 상에서의 데이터 교환
CPU Burst
프로세스가 CPU를 할당받아 실행될때, 명령어들이 CPU에서 연속적으로 실행되는 시간
I/O Burst
프로세스가 입출력 작업을 요청하고, 결과를 기다리는 시간
프로세스 = I/O Burst와 CPU Burst의 연속
CPU Scheduling
프로세스는 수명 주기동안, Ready와 Wait State를 이동함
CPU Scheduler
•
Ready-queue에 있는 프로세스 중 하나의 프로세스에 CPU core를 할당
•
선택
•
스케쥴러는 프로세스에 장시간 코어를 할당할 수 없음
•
스와핑
◦
프로세스를 제거하고, 중단 위치를 기억해뒀다가 후에 다시 메모리 적재
◦
메모리 초과 사용이 이뤄져 가용공간 확보가 필요한 경우
Context(문맥) Switch
Context는 PCB에 표현되어 있음
레지스터의 값, 프로세스 상태, 메모리 관리 정보 등등
Interrupt
인터럽트 발생시, 시스템은 인터럽트 처리를 완료하고, 중단했던 작업(문맥)을 복구 가능하도록 인터럽트 직전의 문맥을 저장해야함
프로세스를 중단했다가 재개하는 작업
CPU의 현재 상태를 저장하는 작업을 수행(State save)하고, 이후 복구작업 수행(State restore)
Overhead(준비 시간)
컨텍스트 스위칭은 필연적으로 시간이 소요됨
Context switch time is overhead
준비시간은 하드웨어에 의존한다
Process Creation
프로세스의 가장 첫번째 단계
부모 프로세스가 자식 프로세스를 만들어가면서, 프로세스의 트리를 생성
프로세스는 Process Identifier(Pid)로 구분됨



