본문 바로가기
Operating System

Process Description and control 1

by mangstory 2021. 4. 11.

Program vs process

Program : Disk에 저장되어 있는 Passive entity(이미 데이터 형태로 저장되어 있음)

Process : 실행중인&실행가능한 프로그램 active entity

 

-> 프로그램은 파일이 메모리에 load 될 때 프로세스가 된다.

-> 하나의 프로그램은 여러개의 프로세스로 이루어질 수 있다. (크롬창 여러개 띠우는 것 처럼)

 

 

프로세스는

1. 프로그램 코드

2.코드와 관련된 데이터

가 꼭 필요하다.


Process

  • 실행중인 & 실행가능한 프로그램
  • 프로세서에 할당될 수 있는 entity
  • 일련의 명령어를 실행하거나, 현재 상태 및 관련 시스템 자원 set을 실행
  • Job, task, process 모두 OS에서는 동일하게 쓰임
  • Process = task + thread

 

Execution sequence & stack

Stack : LIFO list

[Call stack]

- OS안에 있는 stack으로 프로그램의 서브루틴에 대해 정보를 저장하는 스택 자료 구조

- call stack에 현재 프로그램 상태에 대한 모든 정보가 들어있다(어느 함수 수행중인지, 지역변수, 전역변수, 힙, 스택 등)

- OS에서느 call stack, excution stack, run-time stack 줄여서 stack이라고 한다.

 

왜 필요한가?

Consistency 문제를 없애려면 정확히 복귀할 필요가 있다.

 

⭐️<Call/복귀 했을 때 달라지는 것>⭐️

  • return address
  • argument
  • 지역변수 값
  • 최종 return

 

Stack에는 Return address  담겨있다.

 

stack 레지스터 이용하는 이유 : 하드웨어적으로 처리하겠다는 의지 

 

 

Stack 구현

Stack pointer : 스택의 current top의 주소를 포함

Stack base, Stack limit 으로 범위 지정

(stack은 대부분 high address에서 low address 로 쌓인다.)

 

프로세서가 콜을 수행할 때

Stack frame들을 가지고 있다.

  • Return address
  • Parameters
  • Return parameters

call stack은 stack frame들의 집합으로 볼 수 있다!

 

 

Previous frame pointer 는 무엇일까?

-> call마다 각각 stack frame의 크기가 다르다. 그렇기에 이전의 stack frame주소를 저장하여 이동이 쉽게 한다. 

 

 


 

 

Process description(process context)

1.     System level context

  • OS가 프로세스를 관리하기 위해 필요한 정보들을 포함한다.
  • PCB를 포함한다.(프로세스 id, 프로세서 상태 정보, 프로세스 제어 정보)

2.     User level context(memory,run-time context)

  • 유저 프로그램의 기본 요소를 포함한다.
  • Text, data
  • 프로세스가 실행되는 동안 프로세서는 스택을 사용한다.
  • User text, user data(code), user stack

3.     Hardware context(register)

  • Register를 포함
  • PC, SP, PSW + 범용 목적 레지스터 ( general-purpose)

 

 

task structure 이 PCB에는

- memory context에 대한 주소를 가지고 있고

- 해당 프로세스가 어떤 resource를 사용하고 있는지

- register context를 save,restrore 할 수 있도록 어딘가에 정보를 유지하고 있다.

 

 

 

Process Image

  • OS가 프로세스를 관리하기위해 알아야 하는 모든 정보들의 집합(system, user, hardware 레벨 context  등)
  • 프로세스의 위치, 필수적인 속성들(ID,state )
  • 각 프로세스마다 프로세스 이미지가 있다.
  • User data, user program stack, PCB

 

PCB

- Process identification(PID) : 각 프로레스는 유니크한 identifier이 있다

- Processor state information : 프로세서 레지스터의 내용

- Process control information :프로세스 relation, state, 스케줄링 정보, 메모리정보, 파일정보

 

<역할>

  • OS에서 가장 중요한 자료구조
  • OS에 필요한 모든 정보 담고 있다.
  • PCB같은 block들은 오에스에서 read or modifiy 될 수 있다.
  • OSmultiprocessing을 위한 multiple process를 제공하는 것이 가능하게 한다.
  • 접근은 어렵지 않으나 보호(유지,관리)쉽지 않다.

 


 

 

Trace of process

dispatcher : 스케줄러, 스케줄 함수( next function 선택)

 

프로세스 수행 중에 time out(timer interrupt)이 걸리면 커널에 있는 dispatcher코드( schedule() )로 들어간다.

결과로 next process를 반환하고 다음 프로세스를 실행하게 된다.

 

또한 프로세스 수행 중에 I/O request가 들어오면 커널에 있는 dispatcher코드로 들어간다.

결과로 next process를 반환하고 다음 프로세스를 실행하게 된다.  

 

여기서 프로세스 실행중에 커널로 들어가게 되는데 이를 유발하는 것은 interrupt/system call/exception이다.

Timeout(timer)interrupt, I/O requestinterrupt이다.

 

이 때,

timeout은 시간 할당량을 모두 소진해서 빼앗기는 개념 -> preemtive schedule

I/O request 요청 후 결과를 받기 전가지 진행을 못하는 개념 -> non-preemptive schedule

 

이처럼 프로세스에서 프로세스로 전환이 되는 것을 프로세스 switch라고 하고

User mode 에서 kernel mode로 전환이 되는 것을 mode switch 라고 하는데,

프로세스가 timeout,I/O request와 같은 애들을 만나면 kernel로 진입하게 된다.

따라서 process switch를 위해서는 항상 mode switch가 동반된다.

 

 


[Two-state process model]

Not running : cpu를 사용하지 않는 상태

Running : cpu를 사용하는 상태

Not running -> running 가기 위해서는 dispatch 해야한다.(schedule 함수)

이러한 not running 상태인 프로세스들은 queue에서 대기하고 있다.

 

[5-state process model(single processor 가정)]

프로세스 A가 실행중에 timeout이 걸렸다. 커널로 진입해 schedule 함수 호출한다.

그 다음 프로세스인 B가 실행되고 I/O request로 인해 또 다시 커널로 진입 후 schedule 함수가 호출된다.

여기서 timeout과 같이 preemptive한 이벤트가 발생하면 해당 프로세스는 ready 상태에 들어가고 실행될 준비상태를 하고있다.

그러나 I/O request와 같이 non-preemptive한 이벤트가 발생하면 해당 프로세스는 block(wait) 상태에 들어간다.

time out과 달리 이벤트가 완료되어야 진행가능한 (synchronous I/O)

- scanf(read)

- sleep

- lock

 

 

 

 


 

 

 

Suspended Processes

Swapping : 메인메모리에서 디스크로 프로세스가 이동하는 모든 파트

일반적으로 blocked 프로세스를 먼저 swap하지만 보장되진 않는다.

결론 : 메인메모리에 가용메모리가 부족하면 OS는 기준에 따라 secondary memory(suspend area)swapping을 한다.

 

Blocked/suspend : secondary memory에 있는 블락된 프로세스는 메인메모리에 올라가도 이벤트를 계속 기다리고 있다.

Ready/suspend : ready상태인 프로세스는 메인메모리에 올라가자마자 이용가능하다.

 

 

 

이러한 개념을 통해 나온

[7-state model]

 

'Operating System' 카테고리의 다른 글

Process Description and Control 3  (0) 2021.04.16
Process Description andControl 2  (2) 2021.04.13
User program and System Call  (2) 2021.04.11
Operating System  (0) 2021.04.10
Computer System Overview (2)  (0) 2021.04.03