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 레지스터 이용하는 이유 : 하드웨어적으로 처리하겠다는 의지
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 될 수 있다.
- OS가 multiprocessing을 위한 multiple process를 제공하는 것이 가능하게 한다.
- 접근은 어렵지 않으나 보호(유지,관리)쉽지 않다.
Trace of process
프로세스 수행 중에 time out(timer interrupt)이 걸리면 커널에 있는 dispatcher코드( schedule() )로 들어간다.
결과로 next process를 반환하고 다음 프로세스를 실행하게 된다.
또한 프로세스 수행 중에 I/O request가 들어오면 커널에 있는 dispatcher코드로 들어간다.
결과로 next process를 반환하고 다음 프로세스를 실행하게 된다.
여기서 프로세스 실행중에 커널로 들어가게 되는데 이를 유발하는 것은 interrupt/system call/exception이다.
Timeout은 (timer)interrupt, I/O request도 interrupt이다.
이 때,
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 |