본문 바로가기

OS

Process

http://www.kocw.or.kr/home/cview.do?mty=p&kemId=1046323

해당 강의를 보고 개인적으로 정리를 하는 포스팅 입니다.

 

운영체제

운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각

www.kocw.net


Process - program in execution 실행중인 프로그램

 

Process 의 문맥 (Context) - 프로세스의 진행상태 등 상태 정보

CPU 수행 상태를 나타내는 하드웨어 문맥 

- Program Counter

- 각종 register

프로세스의 주소공간

- Code, Data, Stack

프로세스 관련 커널 자료구조

- PCB (이전시간에 나왔던 Process Control Block 프로세스 정보를 담고있는 프로세스와 1:1 인 커널 자료구조)

- Kernel Stack

 

Process 의 상태 (Status)

CPU, 공유데이터, 각 하드웨어는 각각 커널 주소공간에 Priority Queue 형태의 자료구조를 지님.

우선순위에 따라 상태를 변경해가며 상호작용 하여 프로세스를 수행시킴.

 

Running - CPU 를 할당받고 instruction 을 수행 가능한 상태

Ready - 메모리 할당 등 모든 준비는 마친 후 , CPU 할당을 대기하는 상태

Blocked(= wail, sleep) - 자신이 요청한 이벤트가 즉시 만족되지 않아 Pending 되어 CPU 를 주어도 당장 수행은 불가능 한 상태

(ex 디스크에서 파일 읽기)

Suspended(=stopper) - 외부적인 이유로 프로세스의 수행이 정지된 상태, 이때 프로세스는 통째로 메모리에서 디스크로 Swap out 됨

 

Blocked vs Suspended

Blocked : 요청한 이벤트가 완료되면  Reday

Suspended: 외부에서 resume 해주어야 Active가 됨 (유저든 커널이든)

 

 

PCB (Process Control Block)

PCB 구조

 

PCB?

운영체제가 프로세스를 관리하기 위해 프로세스 당 유지하는 정보

 

구성요소

OS가 관리상 사용하는 정보:

- Process State, Process ID

- Scheduling Information, Priority

 

메모리 관련 정보

- Code, Stack, Data 의 위치정보 등

 

파일 관련 정보

 

 

 

문맥 교환 (Context Switching)

CPU 를 한 프로세스에서 다른 프로세스로 넘겨주는 과정

빠른속도로 여러 Task 를 동시에 처리하는 것 처럼 보이게 함

 

Context Switching

 

과정

CPU 의 점유를 이동할때, CPU 를 내어주는 프로세스의 상태를 PCB 에 저장

CPU 의 점유를 얻는 프로세스는 프로세스의 정보(register, program counter 값 등) 을 PCB 에서 읽어와

기존에 진행하고 있던 상태를 그대로 이어서 진행할 수 있게 함

 

하지만 System call 이나 Interrupt 발생시 반드시 Context Switch 가 일어나는 것은 아니다.

 

예를 들어보자

1. 사용자 프로세스 A -> (interrupt or system call) -> Kernal Mode -> 사용자 프로세스 A 

2. 사용자 프로세스 A -> (timer interrupt, I/O system call.. 등 오래걸리는 작업) -> Kernal mode -> 사용자 프로세스 B  

 

1 의 경우엔 컨텍스트 스위칭이 일어나지 않음.

2는 컨텍스트 스위치 발생 

1 역시 PCB 에 context 의 일부를 저장하지만, 부담의 정도가 다름.

예를 들면 context switching 이 발생하는 2번은 일반적으로 오버헤드가 큰 Cache memory flush 등도 같이 일어남

 

Context Switching 은 비용이 크다!

 

Scheduler

작업의 순서를 결정

 

종류

 

Long-term Scheduler (= Job Scheduler)

- new 프로세스 중 어떤 것들을 Ready Queue 로 보낼지 결정

- 프로세스에 Memory 및 각종 자원을 할당하는 문제를 판단

- Degree of MultiProgramming* 을 제어

- Time Sharing System 에서는 일반적으로 Job Scheduler 를 사용하지 않고 무조건 Ready 상태로 프로세스가 실행됨.

 

Short-term Scheduler (= CPU Scheduler)

- 어떤 프로세스를 Running 시킬지를 결정 즉 프로세스에 CPU 를 할당할지를 판단

- Millisecond 단위의 빠른 처리가 요구됨

 

Medium-Term Scheduler (= Swapper)

- 메모리 여유 공간 마련을 위해 필요에 따라 프로세스를 통째로 메모리에서 디스크로 스와핑 시킴 (= Suspend status)

- Degree of MultiProgramming 을 제어

- Time Scheduling System 에서는 Long-term Scheduler 가 아닌 이것을 사용함 

 

더보기
더보기

> Degree of MultiProgramming? 

동시에 메모리에 올라갈 프로그램의 수를 제어

즉 메모리를 어떻게 활용할지를 결정하는 중요한 판단 요소이다.

 

 

'OS' 카테고리의 다른 글

CPU Scheduling  (0) 2022.03.26
프로세스 생명주기  (0) 2022.03.17
Thread 쓰레드  (0) 2022.02.27
System Structure & Program Execution  (0) 2022.02.05
운영체제 Intro  (0) 2022.02.05