티스토리 뷰
Process와 Context Switching
프로세스와 컨텍스트 스위칭
[ Program & Process ]
Program
: 파일 시스템에 존재하는 실행 가능한 파일.
: 실행되지 않은 정적(Static)인 상태.
: Stack과 Heap이 존재하지 않음.
Process
: Program이 실행 중인 동적(Dynamic)인 상태.
: 추상적인 부분이 존재.
1) 각각의 Program이 CPU를 독점적으로 사용하는 것 처럼 보이게 하지만, 뒤에는 수많은 동작 존재. → Context Switching에 의해 제공.
2) 각각의 Program이 Main Memory를 독점적으로 사용하는 것으로 보임. → 가상 메모리(Virtual Memory)에 의해 제공.
: Kernel Code로 관리.
· Multi-Processing
: 여러 개의 Processor가 서로 협력적으로 일을 처리하는 것.
: 처리 과정을 보면 각 Process마다 CPU가 붙어 동시에 처리되는 것 같지만, 사실은 병행적으로 처리.
: Stack과 Heap이 존재.
: Virtualizing CPU를 통해 동일 시스템에서 여러 Process를 병행적으로 처리할 수 있음.
· PCB(Process Control Block)
: 프로세스 제어 블록.
: CPU에 의해 실행 중인 특정한 프로세스를 관리하기 위해 상태 정보를 저장해 놓는 장소.
: 각 프로세스마다 별도의 PCB를 가진다.
: 프로세스 생성 시 만들어지며, Main Memory에 저장된다.
: 프로세스의 실행이 중단되면 PCB도 사라진다.
: Linked-List 형태로 관리.
· Context Switching
Context Switching
: CPU에서 하나의 프로세스를 실행 중일 때, Scheduler가 Interrupt를 보내 더 높은 우선순위를 가진 프로세스를 실행시키려 할 때, Scheduler가 Register에 저장된 기존 프로세스의 상태 값을 Kernel 내부의 PCB에 저장하고, 새 프로세스의 상태 값을 PCB에서 가져와 교체하는 작업.
1. 기존 프로세스를 중단하고 새 프로세스를 실행할 것을 Scheduler가 요청.
2. 기존 프로세스의 SP 레지스터의 값과 PC 레지스터의 값을 기존 프로세스의 PCB에 저장.
( SP : Stack-Pointer. PC : Program Counter )
3. 기존 프로세스를 Running에서 Ready 또는 Block으로 바꾸고 새 프로세스를 Ready에서 Running으로 변경.
( Ready → Running으로 바꾸는 이러한 과정을 Dispatch라 한다 )
4. 새 프로세스의 SP값과 PC값을 새 프로세스의 PCB에서 가져와 덮어씌움.
· Concurrent Processes
: 시작 시간과 종료 시간으로 프로세스끼리 병행적 또는 순차적 Control Flow를 가짐을 알 수 있다.
: 프로세스가 시작 시간과 끝 시간 사이에 있는 경우 → 병행적(Concurrent)
: 프로세스가 시작 시간과 끝 시간 사이에 없는 경우 → 순차적(Sequential)
: 사용자가 볼 때는 각각이 시간 순서가 없이 각각 병렬적(Parallel)으로 실행되는 것으로 보임.
'컴퓨터 공학 이론 > 시스템 프로그래밍' 카테고리의 다른 글
[시스템 프로그래밍] File Structure & I/O (0) | 2022.12.03 |
---|---|
[시스템 프로그래밍] Signal (0) | 2022.12.03 |
[시스템 프로그래밍] Process의 생성과 종료 (0) | 2022.12.02 |
[시스템 프로그래밍] Exceptional Control Flow와 System Call (0) | 2022.11.29 |
[시스템 프로그래밍] Linking (0) | 2022.11.29 |