티스토리 뷰
@The Process Model
-프로세스란?
=>프로세스는 수행중인 프로그램 이라는 뜻이다.
-멀티 프로그래밍(Multiprogarmming)
-메모리에 여러개의 프로그램을 넣어두고 이거하다 저거하다, 이거하다 저거하다...
-CPU는 한번에 한 프로그램만 수행한다(동시에 수행중인 것 처럼 보이지만, 하나만 수행하는 것이다!)
-PC(Program Counter)가 하나만 가리키고, 다른걸 하려면 다른데로 이동한다.
-각각의 프로그램은 address space(주소 공간), process table entry(흔히 PCB, process control block이라 부름)을 가진다.
*PCB: 어느 한 프로세스를 실행하다가 다른 프로세스를 실행할때, 실행하던 프로세스에 대한 정보를 포함한다. 해당 프로세스가 옮겨가기전에 현재 상태를 저장한다.(레지스터 값 등등...) PCB가 없으면 나중에 자신의 작업으로 돌아왔을때
어떤 작업을 해야하는지 알아야 한다
@Proces States
프로세스는 세가지 state(상태)를 가지는데 각 상태에서 전이가 일어난다.
1) Running
-CPU를 잡고 명령어를 수행중인 상태이다.
2) Ready
-CPU를 기다리는 상태이다. 메모리 등 다른 조건을 모두 만족한 상태이다.
-Ready 상태에서는 프로세스가 메모리에 존재한다
-모든게 준비되어있지만 다른 프로세스의 종료를 기다리는 상태.
3) Blocked
-CPU를 주어도 당장 명령어를 수행할 수 없는 상태.
-Running 상태에서 입출력을 요청하면, 입출력은 오래 걸리기 때문에 그동안 CPU를 놀리지않고 다른 process에게 넘긴다.
-read나 write가 완료되면 CPU쪽으로 interrupt signal이 가게되는데, 현재 프로세스의 수행을 멈추고 이를 먼저 처리한다. 그러면 Blocked 상태에 있는 놈을 Ready로 다시 돌린다.
@Process의 주소공간(Address Space)
-한 프로세스는 3개의 segment들을 갖는다
1. Text: 명령문. 프로그램 코드.
2. Data: static variable이 존재.
3. Stack: automatic storage duration variable; 함수 시작 때 생성되고 함수 끝나면 제거되는...
@Process Table(=Process Control Block; PCB)
-프로세스가 나중에 수행되야 할 때를 대비해서 저장되어야 하는 정보들이 들어간다.
-운영체제가 프로세를 제어하기 위해 정보를 저장해 놓는 곳으로, 프로세으의 상태 정보를 저장하는 구조체이다.
*프로세스 상태 관리와 문맥교환(context swtiching)을 위해 필요하다.
*PCB는 프로세스 생성 시 만들어지며 주 기억장치에 유지된다.
*프로세스마다 이를 가진다!
아래 표는 Process Table에 들어있는 정보들이다.
@Process Creation
*기존 프로세스가 생성 시스템콜을 실행하도록 해야 새 프로세스를 생성할 수 있다
-프로세스가 생성되는 상황들
1. System initialization
ex) Daemons: 데몬이란 멀티태스킹 운영체제에서 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업으 하는 프로그램을 말한다. 윈도우 서비스의 개념.
2. Execution of a process creation system call by a running process
ex) fork system call
3. User request to create a new process
ex) Typing a command or clicking an icon
4) Initiation of a batch job
ex) Large mainframes
@Proces Termination
-프로세스가 종료되는 상황들
1. Normal exit(자발적)
-exit
2. Error exit(자발적)
-이상한 매개변수의 입력
3. Fatal error(비자발적)(치명적 오류)
-주로 프로그램 버그때문.
-위반되는 명령어, 존재하지 않는 메모리 참조, 0으로 나누기 등에 의해 발생.
4. Killed by another process(비자발적)
-kill
@System Calls for Process Management
1. 프로세스의 생성 / 종료
2. 한 프로그램의 다른 프로세스를 overlay
3. child process가 종료되길 기다림
4. 메모리를 더 요청하거나 / 사용하지 않는 메모리를 돌려줌
@Interrupt를 처리하는 방법
-어느 장치에서 interrupt를 걸었는지 알 수 있다
-"interrupt service routine" -> 이것에 대한 주소를 verctor로 표현...
'운영체제' 카테고리의 다른 글
운영체제 - Interprocess Communication (0) | 2023.01.02 |
---|