Computer Science - Process
Hardware & Software
-
Hardware
- CPU(Central Processing Unit) : 복잡한 작업을 중앙 처리함
- Core : 각종 연산을 수행하는 핵심 요소
- Cache Memory
- Controller
- Memory(ROM, RAM)
- 연산장치
- Control Unit
- GPU(Graphics Processing Unit) : 비교적 단순 작업을 병렬 처리함
-
Software
- Program : 실행가능한 파일(코드)
- statement : 실행 가능한 독립적인 코드 조각
- expression : 계산하여 값을 만드는 코드
- identifier : 값의 위치
- OS(Operator System)
- 운영체제
- hardware를 제어하고 응용 프로그램을 실행하는 기본 프로그램
Process
- Process : program이 OS에 의해 memory 영역을 할당받고 실행중인 것
- Code: 다음에 실행될 명령어의 주소를 갖고 있는 레지스터, 코드 저장
- Data : global variables, static variables 저장
- Heap : memory 관리, dynamic memory 할당
- Stack(Thread)
- process가 할당된 자원을 이용한 실행 단위
- 임시 데이터(loval variables, return address) 저장
- thread : 명령어의 실행 흐름
Context of Process
- context of Process (process의 현재 실행중인 상태)
- CPU 수행 상태를 나타내는 hardware context
- Program Counter(PC)
- 각종 Register
- process의 주소 공간
- process 관련 커널 자료 구조
- PCB(Process Control Block)
- Kernel stack
(kernal: 여러 process들이 공유하는 코드)
- process별로 kernel stack을 따로 둠
(정보 꼬임 문제를 막기 위해)
State of Process
- process는 상태(state)가 변경되며 수행됨
- Running
- CPU를 잡고 instruction을 수행중인 상태
- Ready
- CPU를 기다리는 상태(메모리 등의 다른 조건은 모두 만족)
- Blocked(wait, sleep)
- CPU를 줘도 당장 instruction을 수행할 수 없는 상태
- process가 요청한 event(예: I/O)가 즉시 만족되지 않아서 기다리는 상태
- 예) 디스크에서 file을 읽어와야 하는 경우
- New
- Terminated
Process Control Block(PCB)
- PCB : OS가 각 process를 관리하기 위해 process당 유지하는 정보
- OS가 관리상 사용하는 정보
- Process State
- Process ID
- Scheduling Infomation
- Priority
- CPU 수행 관련 Hardware 값
- memory 관련 정보
- 파일 관련 정보
Context Switch
- Context Switch
- CPU를 현 process에서 다른 process로 넘겨주는 과정
- CPU가 다른 process에게 넘어갈 때 OS는 다음 과정을 수행함
- CPU를 내어주는 process 상태를 그 process의 PCB에 저장함
- CPU를 새롭게 얻은 process의 상태를 그 process의 PCB에서 읽어옴
- System call이나 Interrupt 발생시 반드시 context switch가 일어나는 것은 아님
- Sytem call : process가 본인이 필요해서 OS에게 무엇인가를 요청함
- Hardware Interrupt : Controller와 같은 장치가 CPU에게 정보를 전달할 목적으로 Interrupt함
- Sytem call이나 Interrupt 발생시, 사용자 process에서 OS 커널로 CPU 제어권이 넘어감
- OS 커널에서 다른 process로 CPU 제어권이 넘어가면 context switch임
- OS 커널에서 다시 본인 process로 CPU 제어권이 넘어가면 context switch가 아님
- OS 커널에서 본인 process로 CPU 제어권이 넘어갈 때보다 다른 process로 CPU 제어권이 넘어갈 때 부담이 훨씬 큼
- Timer Interrupt(할당시간 만료)나 I/O 요청(오래 걸림) system call 발생시, OS 커널에서 다른 process로 CPU 제어권이 넘어가므로, context switch가 일어남
Queue
- process는 queue를 오가면서 수행됨
- Queue의 종류
- Job queue
- 현재 시스템 내에 있는 모든 process의 집합
- Ready queue
- 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 PROCESS의 집합
- Device queue
- I/O device의 처리를 기다리는 프로세스의 집합
Scheduler
- Long-term scheduler (job scheduler)
- memory를 어떤 process에게 줄지 결정함
- memory에 올라가는 process 수(degree of Multiprogramming)를 제어함
- 시작 process 중 어떤 process를 ready queue로 보낼지 결정함
- 보통 time sharing system에 Long-term sheduler가 없음
- Short-term scheduler (CPU scheduler)
- schedule 단위 : millisecond
- CPU를 어떤 process에게 줄지 결정함
- 다음에 어떤 process를 running 시킬지 결정함
참고