본문 바로가기
study/운영체제 OS

Process - 운영체제 반효경교수님

by stilinski 2022. 10. 23.
728x90

Process is a program in execution

 

프로세스의 문맥(context)?

특정 시점을 놓고 봤을 때 현재 어느 상태인지 규명하기 위해 필요한 요소들.

  • CPU 수행 상태를 나타내는 하드웨어 문맥
    • register가 현재 어떤 값을 가지고 있는가
    • pc register가 어딜 가리키고 있는가
  • 메모리 관련, 프로세스의 주소 공간
    • code data stack에 어떤 내용이 들어있는가.
  • 운영체제 (커널) 자료구조
    • 커널이 가지고 있는 PCB (Process Control Block)
      • 운영체제가 프로그램을 어떻게 평가하고 있느냐(?) 하는 정보
    • Kernel stack - 누구의 부탁을 받고 커널 함수가 호출됐는지

프로세스가 CPU를 잡게 되면 PC register가 프로세스의 code 어느 부분을 가리킴

 

 

 

프로세스의 상태(Process State)

  • Running
    • CPU를 잡고 instruction을 수행 중인 상태
  • Ready
    • CPU를 기다리는 상태(메모리 등 다른 조건을 모두 만족된 상태)
  • Block(wait, sleep)
    • CPU를 주어도 당장 instruction을 수행할 수 없는 상태
    • Process 자신이 요청한 event(예: I/O)가 즉시 만족되지 않아 이를 기다리는 상태
  • Suspended (stopped)
    • 외부적인 이유로 프로세스의 수행이 정지된 상태
      • 예) 중기 스케줄러에 의해 메모리가 디스크로 내려감(뺏김 swap out)
      • 사용자가 프로그램 정지 (break key)

 

 

++ Blocked VS Suspended

자신이 요청한 event가 만족되면 Ready - blocked

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

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

Terminated - 수행(execution)이 끝난 상태

 

 

 

 

 

 

 

 

PCB

운영체제가 각 프로세스를 관리하기 위해 프로세스당 커널 Data 영역에 유지하는 정보

구성요소

  • OS가 관리상 사용하는 정보
    • 프로세스 상태, 프로세스 아이디
    • 스케쥴링 정보, 우선순위
  • CPU 수행 관련 하드웨어 값
  • 메모리 관련
  • 파일 관련

 

 

문맥 교환 (Context Switch)

  • CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
    • 레지스터, 프로그램 카운터, 메모리에 저장되어있던 값을 process의 PCB에 저장
  • 사용자 프로그램(프로세스)에서 os로 넘어가는 건 문맥 교환이 아님.
    • 그러나 약간의 문맥이 세이브되긴 함.
    • 문맥 교환의 경우 캐시메모리도 flush 하기때문에 더 큰 오버헤드가 일어남.
  • 인터럽트가 일어난 후 cpu가 다른 프로세스로 넘어가면 문맥교환

 

 

 

 

 

스케줄러(Scheduler)

Short-term scheduler - CPU scheduler

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

Long-term scheduler - job scheduler 메모리 관련

  • 시작 프로세스 중 어떤 것들을 ready queue로 보낼지 결정, 어떤 프로세스에 메모리 줄지.
  • 몇 개의 프로그램을 동시에 메모리에 올릴지 결정(degree of Multiprogramming 제어)
  • time sharing system에서 보통 장기 스케줄러 없음(무조건 ready)

그러나 메모리에 너무 많은 프로그램이 동시에 올라가이 있으면 문제가 됨. 그래서 중기 스케줄러 존재

Medium-Term Scheduler - Swapper

  • 여유공간 마련을 위해 프로세스 통째로 메모리에서 디스크로 쫓아냄.
  • 프로세스에게서 memory를 뺏는 문제(degree of Multiprogramming 제어)

 

 

 

궁금

그런데 문맥이라는 게 그럼 결국 PCB 그 자체인 건가?

문맥을 알기 위한 요소들이 문맥 교환 때 모두 PCB에 저장되니까 PCB가 프로세스 문맥을 저장하는 수단인 건가?

 

 

 

https://kldp.org/node/137395

뭔가 어감은 다르지만 내가 이해하는 게 어느 정도는 맞는 거 같다.

뭔가 컴퓨터 구조도 공부해보고 싶다

 

 

 

 

 

 

 

 

Thread

프로세스 내부에 CPU수행 단위가 여러 개 있는 경우 스레드라고 부름

lightweight process - 프로세스를 별도로 두는 것보다 스레드를 두는 것이 가벼움

프로세스 하나에서 공유할 수 있는 것들은 최대한 공유

  • 스레드가 독립적으로 가지고 있는 것
    • program counter
    • register set
    • stack space
  • 스레드들이 공유하는 부분(=task)
    • 메모리 주소
    • code, data, 각종 자원(OS resources)

 

스레드 장점

  •  

https://jayhyun-hwang.github.io/2021/09/02/The-Difference-Between-Asynchronous-And-Multi-Threading/

 

 

 

쓰레드 구현 방법

커널 스레드 - 스레드가 여러 개가 있다는 것을 커널이 알고 있음. 스레드 간의 switch도 커널이 함.

유저 스레드 - 라이브러리를 통해서 지원. 유저 프로그램이 스레드 관리. 커널은 스레드가 여러 개인지 모름. 커널 입장에선 프로세스 1개.

 

 

 

출처 : http://www.kocw.or.kr/home/cview.do?cid=3646706b4347ef09 

 

운영체제

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

www.kocw.net

 

 

728x90

댓글