프로세스
프로세스(Process)의 정의
- 실행 중인 프로그램
- 실행 가능한 PCB를 가진 프로그램
- 프로세서가 할당되는 실체
- 프로시저가 활동 중인 것
- 비동기적 행위를 일으키는 주체
프로세스 제어 블록(PCB : Process Control Block)
- 운영체제가 프로세스를 관리하기 위해 프로세스에 대한 중요한 정보를 저장해 놓은 곳
- 프로세스가 생성될 때마다 고유의 PCB가 생성되며, 프로세스가 소멸되면 PCB도 소멸됨
- PCB에 저장되어 있는 정보 : 프로세스의 현재 상태, 프로세스의 우선순위, 프로세스에 할당된 자원에 대한 정보, CPU 레지스터 정보
프로세스 상태 전이
준비 상태 (Ready State) |
프로세스가 CPU를 할당받기 위해 준비하고 있는 상태 |
실행 상태 (Running State) |
- 준비 상태의 프로세스가 CPU를 할당받아 실행 중인 상태 - 디스패치(Dispatch) : 우선순위가 가장 높은 프로세스가 준비 상태에서 실행 상태로 전환되는 것 - 할당 시간 종료(Time Runout) : 실행 상태의 프로세스가 할당 시간(타이머)이 종료되어 준비 상태로 전환되는 것 |
대기 상태 (Blocked State, Wait) |
- 실행 상태의 프로세스가 종료되기 전에입출력 등의 다른 작업이 필요할 경우 CPU를 반납하고 작업의 완료를 기다리는 상태 - 블록(Block, Wait) : 실행 상태에서 대기 상태로 전환되는 것 - 웨이크 업(Wake Up) : 대기 상태의 프로세스가 웨이크업(조건 만족)되면 준비 상태로 전환됨 |
스레드(Thread)
- 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위
- 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상시킬 수 있음
- 한 개의 프로세스는 여러 개의 스레드를 가질 수 있음
- 스레드의 구분
- 커널 스레드 : 커널 레벨에서 생성되는 스레드
- 사용자 스레드 : 라이브러리에 의해 구현된 일반적인 스레드
사용잦 수준 스레드의 장점
- 높은 이식성 : 기본 커널을 변경할 필요가 없으므로 모든 운영체제에 적용할 수 있어 이식성이 높음
- 오버헤드 감소 : 커널의 도움 없이 스레드 교환이 가능해서, 사용자와 커널 전환에 따른 오버헤드가 줄어듬
병행 프로세스와 교착상태
병행 프로세스(Concurrent Process)
- 두 개 이상의 프로세스들이 동시에 실행 상태에 있는 것
- 병행 프로그래밍 기법하에서 발생할 수 있는 오류에 대한 오류 방지 방법에는 임계구역, 상호배제, 동기화 기법이 잇음
임계 영역 (Critical Section) |
- 어느 한 시점에서 하나의 프로세스가 자원 또는 데이터를 사용하도록 지정된 공유 영역 - 임계영역에서의 작업은 신속하게 이루어져야 함 - 임계영역 내의 프로그램에서는 교착상태가 발생하지 않도록 해야 함 - 임계영역 내의 프로그램에서는 무한 반복이 발생하지 않도록 해야 함 |
상호배제 (Mutual Exclusion) |
- 공유 변수를 접근하고 있는 하나의 프로세스외에는 다른 모든 프로세스들이 공유 변수를 접근하지 못하도록 제어하는 기법 - 상호배제 구현 기법 : 데커 알고리즘, 피터슨 알고리즘, Lamport의 빵집 알고리즘, Test and set 명령어 기법, Swap 명령어 기법 |
동기화 기법 (Synchronization) |
- 공유 데이터와 이 데이터를 처리하는 프로세저를 포함하는 병행성 구조 - 세마포어(Semaphore) : Dijkstra가 제안한 방법으로, 연산 P와 V를 통해서 프로세스 사이의 동기를 유지하고 상호배제의 원리를 보장함 - 모니터(Monitor) : 모니터의 경계에서 상호배제가 시행되며, 모니터 외부에서는 모니터 내부의 데이터를 직접 액세스 할 수 없음 |
교착상태(Deadlock)
- 둘 이상의 프로세스들이 서로 다른 프로세스가 차지하고 있는 자원을 요구하며 무한정 기다리게 되어 해당 프로세스들의 진행이 중단되는 현상
- 교착상태의 발생 조건
상호 배제 (Mutal Exclusion) |
한 번에 한 프로세스만이 어떤 자원을 사용할 수 있음 |
점유 및 대기 (Hold and Wait) |
프로세스는 다른 자원이 할당되기를 기다리는 동안 이미 확보한 자원을 계속 보유하고 있음 |
비선점 (Non-preemption) |
자원을 보유하고 있는 프로세서로부터 다른 프로세스가 강제로 그 자원을 빼앗을 수 없음 |
환형 대기 (Circular Wait) |
이미 자원을 가진 프로세스가 앞이나 뒤의 프로세스의 자원을 요구함 |
- 교착상태의 해결 방법
예방 (Prevention) | 교착상태가 발생하지 않도록 사전에 시스템을 제어하는 방법 (자원의 낭비가 가장 심한 기법) |
회피 (Avoidance) | 교착상태 발생 가능성을 인정하고 교착상태가 발생하려고 할 때, 교착상태 가능성을 피해 가는 방법 (주로 은행가 알고리즘(Banker Algorithm) 사용) |
발견 (Detection) | 교착상태가 발생했는지 검사하여 교착상태에 빠진 프로세스와 자원을 발견하는 방법 |
회복 (Recovery) | 교착상태에 빠진 프로세스를 종료하거나 해당 프로세스가 점유하고 있는 자원을 선점하여 다른 프로세스에게 할당하는 기법 |
728x90
반응형
'정보처리기사 > 프로그래밍 언어 활용' 카테고리의 다른 글
기억 장치 관리 (0) | 2023.08.05 |
---|---|
프로세스 스케줄링 (0) | 2023.08.05 |
운영체제의 개요 (1) | 2023.08.04 |
스크립트 언어와 Python (0) | 2023.08.04 |
제어문 (0) | 2023.08.04 |