sungwony

[운영체제의 기초] Processes and Threads (1) - Process Concept 본문

development/강의노트

[운영체제의 기초] Processes and Threads (1) - Process Concept

일상이상삼상 2020. 4. 2. 00:09

이 포스트는 SNU에서 제공하는 운영체제의 기초 강의를 개인 학습용으로 정리한 포스트입니다


Agenda

  • 프로세스 개념
  • 프로세스 스케쥴링
  • 컨텍스트 스위칭
  • 프로세스 생성과 종료
  • 멀티스레딩
  • 결론

 

프로세스의 개념 - 프로세스는 무엇이며 왜 필요한가?

 

프로세스는 원인과 결과를 귀속시키는 대상

= 프로세스는 OS상에서 프로그램을 실행시키는 기본 주체

= 런타임 시스템의 수행 주체

= CPU 등 자원을 할당 받는 주체

(OS에서 프로세스는 가장 중요한 단위다)

 

※ Decomposition : "복잡한 문제를 단순한 여러 개의 문제로 나누어 처리하는 방법론"

=> 프로세스는 수행의 주체이면서 복잡한 문제를 단순화 시킬 수 있는 주체

 

프로세스를 한마디로 정의하면 'Program in execution(수행중인 프로그램)'

프로세스는 특정 프로세스 위에서 수행되는 execution stream

(※ execution stream : 프로세스가 지금까지 수행한 모든 명령들의 순서)

 

프로그램(Program) vs 프로세스(Process)

 

프로그램

- 저장 매체에 저장된 수동적인 코드 시퀀스

- 수동적인 매체

프로세스

- 상태를 가지고 CPU, 메모리 등의 자원을 점유한 상태의 프로그램

- 능동적인 주체

 

Process State

- 프로그램을 수행을 하는데 영향을 받는 정보들

1. Memory Context : Memory code, data, stack segment

2. Hardware Context : Register Values

3. System Context : Per-Proc Kernal Info

 

Swapping

메모리 부족 문제를 해결하기 위해 CPU를 사용하지 않는 프로세스의 데이터를 메모리에서 다른 저장 장치로 내보내고 CPU를 사용할 프로세스의 데이터를 메모리로 로드하는 것(과거의 OS에서 사용)

 

Design-time entity vs Run-time entity

 

Design-time entity

1. 설계

요구사항 명세서를 바탕으로 {Tasks} Set을 산출

2. 구현

{Tasks}를 바탕으로 구현하여 {Programs} Set를 산출

Program은 곧 개별 Process로 수행된다

 

Process Control Block

 

Niclans Wirth 프로그램의 정의

Program = Data Structure + Algorithm

 

프로세스를 Data Structure로 어떻게 가지고 있는가?

System Context

- Process Control Block(PCB)

- Proc Table : 복수의 PCB 관리

 

프로세스의 상태 전이(State Transition)

 

- New(생성)

- Ready(Active하지만 CPU를 할당받지 못한 상태)

  - Ready Queue(Ready List) : Ready 상태의 프로세스들을 관리하기 위한 Queue 형태의 자료 구조로 일반적으로 PCB들을 Linked List로 연결하여 구현

- Running(CPU를 할당받은 상태) - 싱글 프로세스에서 Running인 프로세스의 개수는 0 or 1

- Waiting(CPU를 내주고 대기하는 상태로 원하는 이벤트가 온다면 Ready 상태로 변경)

  - OS는 Waiting Reason에 따라 별도의 큐를 구성하여 Waiting 시킴

- Terminated(종료)

 

프로세스 스케쥴링(Process Scheduling)

 

프로세스들이 공정하게 CPU를 공유할 수 있도록 다음에 실행할 프로세스를 선택하는 작업

seprate mechanism & policy 방식으로 설계

 

프로세스를 동작시키는 OS의 주요 내부 동작 (디스패쳐)

loop forever{

     run the process for a while

     stop it and save its state

     load state of another process

}

 

OS는 active entity 처럼 보이지만 사실 passive entity 이다

CPU의 Control이 OS에서 User Process로 User Process에서 OS로 이동시킬 수 있도록 해야한다

이런 메커니즘이 Interrupt이다