instruction sequence, current state, system resource 에 의해 특징 지어지는 활성화 단위이다.
구성 요소
Program code
Data (전역 변수, 정적 변수)
Stack (지역 변수)
Process Control Block
프로세스 상태를 설명하는 속성
OS에 의해 생성되고 관리된다.
실행 파일과의 차이점
Process 에만 Stack과 PCB가 있고 실행 파일에는 없다.
Dispatcher: 프로그램 스위칭 과정에서 어떤 프로그램을 실행시킬 지 결정하는 기능
OS 기능
하나의 프로그램이 프로세서를 독점하는 것을 방지한다.
Ready Queue 에 있는 프로세스 중에서 결정한다. (Blocked Queue X)
5-State Model
New: 프로세스가 생성된 상태
Ready: 실행할 준비가 된 상태
Dispatcher 에 의해 Running 으로 전환된다.
Running: 실행 상태 (프로세서 할당 받음)
Timeout 에 의해 Ready 로 전환된다.
Event Wait(I/O 작업)에 의해 Blocked 로 전환된다.
Blocked: I/O 작업 수행 상태
Event Occurs(I/O Interrupt)에 의해 Ready 로 전환된다.
Exit: 프로세스 종료
사용한 자원을 반납한다.
Queue: 프로세스 자체가 아닌 ID, 포인터만 저장되고 메모리 상에 존재한다.
OS에 의해 관리되는 자료 구조이다.
메인 메모리에 올라와 있는 프로세스의 PCB를 가리키고 있다.
이벤트 종류에 따라 여러 큐를 구현할 수 있다.
Swapping
필요성
프로세서는 I/O 모듈보다 훨씬 처리 속도가 빠르기 때문에 메모리에 있는 모든 프로세스들의 상태가 Blocked 인 상황이 발생 가능하다. (즉 Ready Queue 가 비어 있는 상황)
OS는 Blocked Queue 에 있는 프로세스들을 하드디스크의 Swapping area 로 밀어내고, Swapping area 에서 실행 대기중이었던 프로세스들을 메모리로 가져온다.
실행 파일 형태가 아닌 프로세스 형태로 Swapping area 로 옮겨진다. (Stack + PCB)
2 new states
Blocked/Suspend: Blocked → Swapping area
Ready/Suspend: Blocked/Suspend 에서 I/O 작업이 완료된 상태로 메인 메모리에 적재되면 실행 가능하다.
New → Ready/Suspend: Multiprogramming Level 이 가득 찬 상태에서 새로운 프로그램을 실행했을 때 발생한다.
Multiprogramming Level: 동시에 실행시킬 수 있는 프로그램의 개수로 동시에 메모리 적재가 가능하다.
Blocked/Suspend → Blocked: I/O 작업의 완료를 예측하거나 높은 우선 순위로 인해 발생한다.
하나씩이 아닌 여러 프로세스에 대해 한 번에 Swapping 작업이 이루어진다.
하드디스크에서 데이터를 읽을 때 효율성의 관점에서, 데이터 수의 영향보다 하드디스크 접근 횟수의 영향이 더 크다.
Reasons for Process Suspension
Swapping
Other OS reason
백그라운드 프로세스나 유틸리티 프로세스가 Ready or Running 에서 Ready/Suspend 가 될 수 있다. (시스템 성능과 효율성 증대)
문제를 일으킬 수 있는 프로세스가 Running 에서 Ready/Suspend 가 될 수 있다.
Interactive user request
디버깅
다른 프로세스가 사용중인 자원을 요청한 경우
Timing
주기적으로 실행되는 프로세스의 작업이 끝나고 다음 실행을 기다리는 동안 Suspension 된다.
Parent process request
자원 관리나, 동기화, 오류 처리를 위해 부모 프로세스가 자식 프로세스를 suspension 하도록 요청할 수 있다.
Process Description
Operating System Control Structure
각 프로세스의 현재 상태와 자원에 대한 정보를 테이블로 만들어 관리한다.
종류: Memory Table, I/O Table, File Table, Process Table
메인 메모리 상의 OS 공간에 위치한다.
Memory Table
메인 메모리 중 어느 부분이 어떤 프로세스에게 할당되어 있는지에 대한 정보
secondary memory(swapping area)에서 어느 부분이 어떤 프로세스에게 할당되어 있는지에 대한 정보
공유 메모리 영역에 어떤 프로세스가 접근할 수 있는지에 대한 정보
가상 메모리를 관리하기 위해 필요한 정보
I/O Table
I/O 장치가 사용 가능한 지, 사용 중인지에 대한 정보
I/O 장치가 사용 중일 때의 상태 정보
I/O transfer 의 출발지나 목적지로 사용되고 있는 메인 메모리의 위치
File Table
파일의 존재 여부 정보
secondary memory 에서의 위치 정보
현재 상태, 열린 상태라면 파일 포인터 위치 정보도 포함된다.
그 외 속성들(생성 및 수정 시간, 소유자 등)
Primary Process Table
Process ID
프로세스 이미지에 대한 포인터
메인 메모리 상 위치
Process Image
프로세스의 상태 정보로 프로세스를 실행하기 위해 필요한 정보가 포함되어 있다.
구성 요소
User Data: 전역 변수, 정적 변수
User Program: 프로그램 코드
Stack: 지역 변수와 반환 주소 등을 저장
Process Control Block: OS 가 프로세스를 관리하기 위해 필요한 정보
OS 는 프로세스 이미지를 통해 프로세스를 관리한다.
프로세스 이미지가 메모리 상에 적재되어 있어야 OS에 의해 관리될 수 있다.
User Address Space: 프로그램 안에서 사용할 수 있는 주소 공간으로 프로그램 코드와 데이터가 포함된다.
Shared Address Space: 다른 프로세스와 같이 사용할 수 있는 코드나 데이터가 있는 공간
Process Control Block
OS 에 의해 관리되는 자료구조이다.
Process Identification
Process Identifier
Parent Process Identifier
User Identifier
Processor State Information
User-Visible Registers: 사용자 프로그램에서 직접 액세스할 수 있는 레지스터
Control & Status Registers: PC, PSW
Stack Pointers
Process Control Information
스케줄링과 상태 정보
메모리 관리 (메인 메모리, 하드 디스크, 가상 메모리 등)
자원의 소유권과 이용률
프로세스 간 통신 (IPC)
프로세스 권한
프로세스 포인터에 대한 자료 구조
Typical functions of OS
프로세스 관리
프로세스 생성과 종료
프로세스 스케줄링과 디스패칭
프로세스 스위칭
프로세스 동기화와 IPC 지원
프로세스 A 에서 B 로 데이터가 전송될 때, OS 를 거쳐서 B 로 전송된다. (A -> OS -> B)
PCB 관리
메모리 관리
프로세스에게 메모리 주소 공간을 할당
Swapping
페이지와 세그먼트 관리
I/O 관리
버퍼 관리
프로세스에게 I/O 채널과 장치 할당
지원 기능
Interrupt handling
Accounting
Monitoring
Process Creation
새로 생성된 프로세스에게 ID 할당
프로세스에게 공간 할당
PCB 초기화
일반적으로 부모 프로세스의 PCB 를 복사하여 초기화된다.
적절한 연결 설정
다른 자료 구조 생성 및 확장
Process Switching
현재 Running 상태의 프로세스가 인터럽트 되고 OS 가 다른 프로세스에게 Running 상태를 넘겨주는 것이다.
전환 시점
Interrupts (hardware)
Clock: Ready 로 전환
I/O: Running or Ready 로 전환
Memory fault: Blocked 로 전환
Trap (software interrupt)
치명적 오류가 발생했다면 Exit 로 전환
치명적이지 않다면 다시 Running 가능
Supervisor Call
Blocked 로 전환
간단한 기능일 때는 Running 도 가능
Processor Execution Mode
User mode: 사용자 프로그램을 실행하고 있을 때의 프로세서 모드로 권한이 적다.
Kernel mode: OS 프로그램을 실행하고 있을 때의 프로세서 모드로 권한이 많다.
Mode Switching
User mode(A) -> Kernel mode -> User mode(A)
Process Switching
User mode(A) -> Kernel mode -> User mode(B)
프로세스 스위칭 과정에서 모드 스위칭도 발생한다.
Change of Process State
PC 와 레지스터를 포함한 프로세서의 context 를 저장한다.
현재 실행 중인 프로세스의 PCB 를 업데이트 한다.
프로세스의 PCB 를 적절한 큐로 옮긴다.
다음에 실행할 다른 프로세스를 선택한다.
선택된 프로세스의 PCB 를 업데이트 하고 Running 상태로 전이시킨다.
메모리 관리와 관련된 자료 구조를 업데이트 한다.
프로세서의 context 를 복구한다.
Execution of Operating System
Non-process Kernel: 커널이 프로세스가 아닌 특별한 모드로 동작한다.
OS 전체가 커널일 때 사용하던 방식이다.
Execution within user processes: OS 가 사용자 프로세스의 context 에서 동작한다.
사용자 프로세스 안에 커널 스택이 추가되고 OS 는 Shared address space 에 위치한다.
OS 는 별도의 프로세스가 아니기 때문에 OS 만의 PCB 가 존재하지 않는다.
사용자 프로세스 안에 있어도 OS 코드를 실행할 때는 커널 모드로 동작한다.
OS 를 실행할 때 프로세스 스위칭이 아닌 모드 스위칭만 발생하므로 불필요한 프로세스 스위칭이 줄어들고 프로세서 context 를 저장할 필요가 없다.
Proceess-Based Operating System: OS 가 별도의 프로세스로 동작한다.
OS 를 실행할 때마다 프로세스 스위칭이 발생한다.
멀티 프로세서 시스템에서 동시에 여러 OS 실행이 가능하다.
UNIX SVR4
Process Management
대부분의 OS 기능이 사용자 프로세스 안에서 실행된다. (모두 그런 것은 아니다)
시스템 프로세스
Swapper(0)
init(1)
Process Tree
사용자 프로세스
Process Description
User Level Context
Process text (code)
Process data
User stack
Shared memory
Register Context (= Processor state information)
PC
Processor status register
Stack pointer
General-purpose register
System Level Context
Process table entry
User area: OS 가 사용자 프로세스 안에서 실행될 때 액세스 하는 정보
Per process region table: Process control information 중 메모리 관련 정보
Kernel stack
Process table entry 와 User area 에 Process identification, Process control information 이 나뉘어져 저장된다.
UNIX Process State Transition Diagram
Created: New
Preempted / Ready to Run In Memory: Ready
Preempted: 실행 상태에 있다가 Ready 로 전이된 것
User Running / Kernel Running: Running
Zombie: Exit
Asleep in Memory: Blocked
Sleep, Swapped: Blocked/Suspend
Asleep in Memory 로 상태 전이 불가
Ready to Run Swapped: Ready/Suspend
프로세스가 대기 상태에 있다가 실행될 때, OS 의 개입이 필요하다.
하지만 상태도에서는 Preempted 에서 바로 User Running 으로 전이되는 것을 볼 수 있다.
유닉스는 OS 가 사용자 프로세스 안에서 실행되는 특징이 있다.
즉, Preempted 상태에 있던 프로세스가 실행되기 직전에 실행 중이던 프로세스가 중단되는 과정에서 OS 가 다음 프로세스 실행 준비를 처리했기 때문에 위와 같은 상태도가 가능한 것이다.