3-2/OS

프로세스의 개념

개발자 덕구🐾 2021. 12. 22. 02:02
728x90

< 2014년 반효경 교수님의 kocw강의를 듣고 정리한 내용입니다.>

 

 

프로세스

실행중인 프로그램

프로세스를 잘 이해하기위해서 프로세스의 문맥을 이해해야한다.

프로세스 문맥에는

  1. 하드웨어 문맥
  2. 프로세스 주소공간
  3. 커널상의 문맥

으로 나누어 볼 수 있다.

 

하드웨어 문맥

cpu의 수행상태

프로그램 카운터, 각종 레지스터에 저장하고 있는 값들 

 

 

프로세스 주소공간

code, data, stack으로 구성되는 자신만의 독자적인 주소 공간 (프로세스마다 가짐)

 

 

커널상의 문맥

프로세스가 되면 OS는 프로세스를 관리하기위해 OS의 data영역에 자료구조를 구성한다.

PCB, 커널 스택


PCB(process controll block)

프로세스들을 관리하기 위해 프로세스마다 유지하는 정보들을 담은 커널 내부의 자료구조



 

문맥교환

하나의 사용자 프로세스로부터 다른 사용자 프로세스로 CPU제어권이 이양되는 과정

 

모드 변경에 비해 문맥교환에는 훨씬 많은 오버헤드가 필요하다. 

 

 

프로세스의 상태

1) 실행 (running)
2) 준비 (ready)
3) 봉쇄 (blocked)

 

running -> 프로세스가 cpu를 보유하고 기계어 명령어를 수행중
ready -> cpu만 보유하면 바로 기계어 명령어 수행가능
blocked -> cpu를 할당받아도 바로 명령어 수행 불가


--------------------------------------------

 

ready -> running : cpu획득
running -> ready : 타이머 인터럽트
running -> blocked : I/O 또는 오래걸리는 작업

 

스케쥴러

어떤 프로세스에게 자원을 할당할지 결정하는 OS 커널의 코드

장기, 중기 ,단기로 3가지의 스케쥴러가 있다.

 

 

 

장기스케쥴러

어떤 프로세스를 준비큐에 넣을지 결정한다.

준비 큐에 있다는 것은 cpu만 할당받으면 당장 실행할 수 있는 프로세스의 집합이라는 의미이다.

cpu에서 실행되기위해서는 프로세스가 메모리를 보유해야한다.

-> 즉 프로세스를 준비큐에 넣을지 결정한다는 것은 프로세스에게 메모리를 할당하는 문제를 관여한다. 

<시작 상태의 프로세스에게 메모리 할당을 승인할지 여부를 결정>

 

 

단기스케쥴러는 cpu스케쥴러 라고도 한다.
어떤 ready상태의 프로세스를 running 프로세스로 바꿀지 결정한다. 

즉 준비큐에 있는 프로세스들 중 어떤 프로세스에게 cpu를 할당할 지 결정한다. 

 

 

그렇다면 중기스케쥴러는??
현대(시분할 시스템용 OS) 에 와서는 시작 상태인 프로세스를 장기스케쥴러 없이 메모리를 할당해 준비큐에 넣어주기때문에 장기스케쥴러가 필요없다.


그 대신 너무 많은 프로세스가 메모리에 적재되어 시스템의 성능이 저하되면

이때 중기 스케쥴러가 메모리에 올라와있는 프로세스 중 일부를 선정해

메모리를 통째로 빼앗아

디스크의 스왑영역에 저장해둔다.

 

 

이와 같은 행위를 swap out이라고 하며 메모리를 빼앗긴 프로세스의 상태를 suspanded 상태라고 한다.

반응형

'3-2 > OS' 카테고리의 다른 글

메모리관리  (0) 2021.12.25
CPU 스케쥴링  (0) 2021.12.23
프로세스의 생성(fork, exec,exit)  (0) 2021.12.23
OS의 목표와 정의  (0) 2021.12.20