운영체제(KOCW)

3차시. Process

RealMe1st 2022. 4. 3. 17:15
728x90

프로세스의 개념

 Process is a program in execution

 

프로세스의 문맥

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

    - Program Conuter

    - 각종 register

 - 프로세스의 주소 공간 

   - code, data, stack

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

   - PCB (Process Control Block)

   - Kernel Stack

 

프로세스의 상태

  - 프로세스는 상태가 변경되며 수행된다.

     - Running : CPU를 잡고 instruction을 수행중인 상태

     - Ready : CPU를 기다리는 상태(메모리 등 다른 조건을 모두 만족하고)

     - Blocked(wait,sleep)

         : CPU를 주어도 당장 instruction을 수행할 수 없는 상태

            - Process 자신이 요청한 event(ex I/O) 가 즉시 만족되지 않아 이를 기다리는 상태

              ex) 디스크에서 file을 읽어와야 하는 경우

      - New :프로세스가 생성중인 상태

      - Terminated: 수행(execution)이 끝난 상태 => 약간 정리할게 남은 느낌?

 

프로세스 상태도

 

Process Control Block(PCB)

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

 - 아래의 구성 요소를 가진다.

 

문맥 교환 ( 사용자 -> 또 다른 사용자 process 인경우)

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

 - CPU 가 다른 프소세스에게 넘어갈 때 운영체제는 다음을 수행 

     1. CPU를 내어주는 프로세스의 상태를 그 프로세스의 PCB에 저장

     2. CPU를 새롭게 얻는 프로세스의 상태를 PCB 에서 읽어옴

 

 

프로세스를 스케줄링 하기 위한 큐

 - Job queue : 현재 시스템 내에 있는 모든 프로세스의 집합

 - Ready queue : 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합

 - Device queue : I/O device의 처리를 기다리는 프로세스의 집합

 - 프로세스들은 각 큐들을 오가며 수행된다.

 

 

스케줄러

- Long - term scheduler(장기 스케줄러 or job scheduler)
     - 시작 프로세스 중 어떤 것을 ready queue로 보낼 지 결정

     - 프로세스에 memory(및 각종 자원)을 주는 문제

     - degree of Multiprogramming을 제어

     - time sharing system에는 보통 장기 스케줄러가 없음(무조건 ready)

 

- Short -term scheduler(단기 스케줄러 or CPU scheduler)

   - 어떤 프로세스를 다음번에 running 시킬지 결정

   - 프로세스에 CPU를 주는 문제

   - 충분히 빨라야함 (ms단위)

 

- Medium-Term Scheduler(중기 스케줄러 or Swapper)

    - 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄

    - 프로세스에게서 memory를 뺏는 문제

    - degree of Multiprogramming을 제어

 

중기 스케줄러 때문에 생기는 프로세스의 상태

Suspended(stopped)
  - 외부적인 이유로 프로세스의 수행이 정지된 상태

  - 프로세스는 통째로 디스크에 swap out 된다.

  - ex) 사용자가 프로그램을 일시 정지 시킨 경우( break key) 

           시스템이 여러 이유로 프로세스를 잠시 중단 시킴(메모리에 너무 많은 프로세스가 올라와 있을 때)

 

Blocked: 자신이 요청한 event 가 만족되면 Ready

Suspended : 외부에서 resume 해 주어야 Active

 

 

Thread

 Thread : 프로세스 내부에 CPU 수행 단위가 여러개 있는 경우

 

Thread의 구성

 - Program counter

 - register set

 - stack space

 

Thread 가 동료 Thread와 공유하는 부분(=task)

 - code section

 - datat section

 - OS resources

 

전통적인 개념의 heavy weight process 는 하나의 thread를 가지고 있는 task로 볼 수 있다.

 

Thread의 사용 장점

 - 다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가 blocked(wating) 상태인 동안에도 동일한 태스크 내의

   다른 스레드가 실행(running) 되어 빠른 처리를 할 수 있다.

 - 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있다.

 - 스레드를 사용하면 병렬성을 높일 수 있다.

 

 

관련 URI

http://www.kocw.net/home/cview.do?cid=3646706b4347ef09

반응형

'운영체제(KOCW)' 카테고리의 다른 글

2차시 System Structure & Program Execution  (0) 2022.04.03
Introduction to Operating System  (0) 2022.03.08