학습내용
1. 프로세스관리, 교착상태
학습목표
1. 프로세스 관리에 대한 개념과 관련 용어를 이해 할 수 있다
2. 교착상태에 대한 의미를 해결 할 수 있다
학습내용
1. 프로세스의 개요
(1) 프로세스의 정의
1) PCB를 가진 프로그램 2) 실기억장치에 저장된 프로그램
3) 프로세서(CPU)가 할당되는 실체 4) 프로시저가 활동 중인 실체
5) 비동기적 행위를 일으키는 주체 6) 운영체제가 관리하는 실행 단위
(2) 프로세스 제어 블록(PCB , Process Control Block)
1) PCB는 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳
2) 각 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 종료되면 PCB는 제거됨
3) PCB에 저장되어 있는 정보
① 프로세스의 현재 상태
② 프로세스 고유 식별자(PID , Process IDentifier)
③ 스케줄링 및 프로세스의 우선순위
④ 프로그램의 위치
⑤ CPU 레지스터 정보
• 누산기(Accumulator) • 인덱스 레지스터(Index Register) • 프로그램 카운터(PC , Program Counter)
⑥ 각종 자원의 포인터
• 부모 프로세스에 대한 포인터
• 자식 프로세스에 대한 포인터
• 프로세스가 위치한 메모리에 대한 포인터
• 할당된 자원에 대한 포인터
⑦ 주기억장치 관리 정보
⑧ 입/출력 상태 정보
⑨ 계정 정보
2. 프로세스의 상태 전이
1) 준비(Ready) 상태
① 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
② 프로세스는 준비상태 큐에서 실행을 준비
2) 실행(Running) 상태
① 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
② 프로세스 수행이 완료되기 전에 프로세서에게 주어진 프로세서 할당 시간이 종료되면
프로세스는 준비 상태로 전이
③ 실행 중인 프로세서에 입/출력처리가 필요하면 실행 중인 프로세스는 대기상태로 전이
④ 준비 상태에서 실행 상태로의 전이는 CPU 스케줄러에 의해 수행
3) 대기(Block) 상태
① 프로세스에 입/출력이 필요하면 현재 수행 중인 프로세스가 중단되고 대기 상태로 전이
② 입/출력 처리가 완료되면 대기 상태에서 준비 상태로 전이
※ 프로세스가 자원을 이용하는 작동 순서
요청 - 사용 - 해제
※ 디스패치(dispatch) : 준비상태에서 대기하고 있는 프로세스 중 하나가 스케줄링 되어 중앙처리장치를 할당받
아 실행상태로 전이되는 과정
3. 인터럽트(Interrupt)
1) 인터럽트 종류 및 발생 원인
① 전원 이상 인터럽트(Power Fail Interrupt) : 정전이 되거나 전원 이상이 있는 경우
② 기계 착오 인터럽트(Machine Check Interrupt) : CPU등의 기계가 고장을 일으킨 경우
③ SVC인터럽트(Supervisor Call Interrupt) : 입출력 수행, 기억장치 할당 등을 위해 발생
④ 입/출력 인터럽트(Input-Output Interrupt) : 수행도중 입/출력이 발생하는 경우
⑤ 외부 신호 인터럽트 : 정해진 시간이 끝나거나 오퍼레이터의 키 조작 발생한 경우
⑥ 재시작 인터럽트 : 오퍼레이터가 재시작 버튼을 눌러 시스템을 재 부팅시키는 경우
⑦ 프로그램 검사 인터럽트(Program Check Interrupt) • 0으로 나누기가 발생하는 경우
• Overflow/Underflow가 발생하는 경우
• 프로그램에서 명령어를 잘못 사용하는 경우
2) 인터럽트 발생 시 처리순서
① 인터럽트 요청신호가 발생
② 프로그램 실행을 중단
③ 현재 프로그램 상태를 보존 (복귀 주소(return address)를 stack에 저장)
④ 인터럽트 처리 루틴을 실행
⑤ 인터럽트 서비스 루틴을 실행
⑥ 상태복구
⑦ 중단된 프로그램 실행 재개
3) 인터럽트 우선순위(번호가 높을수록 우선순위가 높음)
컴퓨터에 여러 형태의 인터럽트가 동시에 발생할 경우 우선순위에 따라 인터럽트를 수행
① 전원 이상 ② 기계 착오 ③ 외부 신호 ④ 입/출력 ⑤ 프로그램 검사 ⑥ SVC
4. 스레드(Thread), 문맥 교환(Context Switching)
1) 스레드의 정의
① 프로세스 내에서의 작업 단위로 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위
② 하나의 프로세스에 하나의 스레드가 존재하는 경우에는 단일 스레드, 두개 이상의 스레드
가 존재하는 경우에는 다중 스레드라고 함
③ 프로세스의 일부 특성을 갖고 있기 때문에 경량 프로세스라고도 함
④ 프로세스 내부에 포함되는 스레드는 공통적으로 접근 가능한 기억장치를 통해 효율적으로 통신함
⑤ 스레드를 사용하면 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상시킬 수 있음
2) 스레드의 분류
① 사용자 수준의 스레드
• 사용자가 만든 라이브러리를 사용하여 스레드를 운용
• 속도는 빠르지만 구현이 어려움
② 커널 수준의 스레드
• 운영체제의 커널에 의해 스레드를 운용
• 구현이 쉽지만 속도가 느림
문맥 교환(Context Switching)
1) CPU가 할당되는 프로세스를 변경하기 위하여 현재 CPU를 사용하여 실행되고 있는 프로
세서의 상태 정보를 저장하고 제어권을 인터럽트 서비스 루틴에게 넘기는 작업을 의미
2) 다중 프로그래밍 작성의 환경에서 어떤 프로그램의 실행을 중단하고 다른 프로그램의 실행
을 재개할 때, 그 프로그램의 재개에 필요한 환경을 다시 설정하는 것을 의미하며, 운영체
제에서 Overhead의 큰 요인 중 하나로 작용하는 것
5. 병행 프로세스, 임계구역
(1) 병행 프로세스(Concurrent Process) - 두 개 이상의 프로세스들이 동시에 존재하며 실행 상태에 있는 것을 의미
1) 여러 프로세스들이 독립적으로 실행되는 것을 독립적 병행 프로세스
2) 서로 협력하며 동시에 실행되는 것을 협동적 병행 프로세스
3) 다중 처리 시스템이나 분산 처리 시스템에서 중요한 개념으로 사용됨
※ 병행 프로세스들의 고려 사항 • 공유 자원을 상호 배타적으로 사용해야 함
• 병행 프로세스들 사이에는 협력 또는 동기화가 이루어져야 함
• 교착상태를 해결해야 하며 병행 프로세스들의 병렬 처리도를 극대화해야 함
(2) 임계 구역(Critical Section) - 다중 프로그래밍 운영체제에서 여러 개의 프로세스가 공유하는 데이터 및 자원에 대하
여 어느 한 시점에서는 하나의 프로세스만 자원 또는 데이터를 사용하도록 지정된 공유
자원(영역)을 의미
1) 임계 구역에는 하나의 프로세스만 접근 할 수 있으며, 해당 프로세스가 자원을 반납한
후에만 다른 프로세스가 자원이나 데이터를 사용할 수 있음
2) 임계 구역은 특정 프로세스가 독점할 수 없음
3) 프로세스가 임계 구역에 대한 진입을 요청하면 일정 시간 내에 진입을 허락해야 하며,
임계 구역 내에서의 작업은 신속하게 진행되어야 함
(3) 상호 배제 기법(Mutual Exclusion) - 공유자원을 어느 시점에서 단지 한 개의 프로세스만이 사용할 수 있도록 하며, 다른 프
로세스가 공유자원에 대하여 접근하지 못하게 제어하는 기법
1) 여러 프로세스가 동시에 공유 자원을 사용할 때 각 프로세스가 번갈아 가며 공유 자원
을 사용하도록 하는 것으로 임계 구역을 유지하는 기법임
2) 데커(Dekker) 알고리즘
① 교착상태가 발생하지 않음을 보장
② 공유 데이터에 대한 처리에 있어서 상호배제를 보장
③ 별도의 특수 명령어 없이 순수하게 소프트웨어로 해결
(4) 동기화 기법(Synchronization) - 두 개 이상의 프로세스를 한 시점에서는 동시에 처리할 수 없으므로 각 프로세스에 대한
처리 순서를 결정하는 것으로 상호 배제의 한 형태
1) 동기화 구현방법에는 세마포어와 모니터 기법이 있음
2) 세마포어(Semaphore)
① E. J. Dijkstra 가 제안하였으며, P와 V라는 2개의 연산에 의해서 동기화를 유지하
며 상호 배제의 원리를 보장
② S는 P와 V 연산만으로만 접근 가능한 세마포어 변수로, 공유 자원의 개수를 나타
내며 0과 1 혹은 0과 양의 값을 가질 수 있음
3) 모니터(Monitor)
① 모니터 내의 자원을 공유하려면 프로세스는 반드시 모니터의 진입부를 호출해야 함
② 모니터 외부의 프로세스는 모니터 내부의 데이터를 직접 액세스 할 수 없음
③ 모니터의 경계에서 상호 배제가 시행됨
④ 모니터에서는 한순간에 하나의 프로세스만 진입하여 자원을 사용할 수 있음
⑤ 모니터에서는 Wait와 Signal 연산이 사용
⑥ 특정의 공유자원을 할당하는데 필요한 데이터 및 프로시저를 포함하는 병행성 구조임
6. 교착 상태
(1) 교착 상태(Deadlock)의 개념
1) 교착상태는 상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을
점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리
는 현상을 의미
2) 교착상태는 하나 또는 둘 이상의 프로세스가 더 이상 계속할 수 없는 자원의 할당과 해
제를 기다리고 있는 상태를 말함
(2) 교착 상태 발생 조건
1) 상호 배제(Mutual Exclusion) : 한 번에 한 개의 프로세스만이 공유 자원을 사용할
수 있어야 함
2) 점유 및 대기(Hold and Wait) : 프로세스가 이미 자원을 갖고 있으면서 다른 자원의
할당을 요구
3) 비선점(Non-Preemption) : 프로세스에 할당된 자원은 사용이 끝날 때 까지 강제로
빼앗을 수 없음
4) 환형 대기(Circular Wait) : 프로세스는 자신이 가지고 있는 자원을 점유하면서 앞이
나 뒤에 있는 프로세스의 자원을 요구
7. 교착상태 해결 방법
1) 예방 기법(Prevention)
교착 상태가 발생하지 않도록 사전에 시스템을 제어하는 방법으로, 교착 상태 발생의 4가지 조건 중에서 어느
하나를 제거함으로써 수행(자원낭비가 가장 심함)
① 상호 배제 조건의 부정 • 한 번에 여러 개의 프로세스가 공유 자원을 사용할 수 있게 함
• 공유 자원은 어느 한 시점에서 하나의 프로세서만이 사용할 수 있어야 하므로, 상
호 배제 조건의 부정을 수행하는 것은 사용하기에 적절하지 않으며 실제로도 구현하지 않음
② 점유와 대기 조건의 부정 : 프로세스가 실행되기 전에 필요한 모든 자원을 할당하여
프로세스 대기를 없애거나 자원이 점유되지 않은 상태에서만 자원 요구 가능하게 함
③ 비선점 조건의 부정 : 자원을 점유하고 있는 프로세스가 다른 자원을 요구할 때 점유하고 있는 자원
을 반납하고, 요구한 자원을 사용하기 위해 기다리게 함
④ 환형 대기 조건의 부정 : 교착 상태의 예방을 위하여 각 자원 유형에 일련의 순서번호를 부여 함
2) 회피 기법(Avoidance)
교착 상태가 발생할 가능성을 배제하지 않고 교착 상태가 발생하면 적절히 피해나가는 방법
① 은행원 알고리즘(Banker's Algorithm) • 은행원 알고리즘은 E.J. Dijkstra가 제안
• 각 프로세스에게 자원을 할당하여 교착 상태가 발생하지 않으며 모든 프로세스가
완료될 수 있는 상태를 안전 상태, 교착 상태가 발생할 수 있는 상태를 불안전 상태라 함
• 은행원 알고리즘을 적용하기 위해서는 자원의 양과 사용자(프로세스)수가 일정
• 은행원 알고리즘은 프로세스의 모든 요구를 유한한 시간 안에 할당하는 것을 보장
② 은행원 알고리즘 예
- 자원이 총 12개이고 현재 10개가 할당된 상태일 때 시스템이 안전상태가 되기 위해서
• B가 0 이면 A는 4
• B가 1 이면 A는 5
• B가 2 이면 A는 6
- 왜냐하면 남은 자원이 2(12-10)이기 때문에 추가 요구량은 2이하여야함
3) 발견 기법(Detection)
시스템에 교착 상태가 발생했는지 점검하여 교착 상태에 있는 프로세스와 자원을 발견
4) 회복 기법(Recovery)
교착 상태를 일으킨 프로세스를 종료하고 교착 상태의 프로세스에 할당된 자원을 회수하여 프로세스나
자원을 회복
※ 교착 상태에 빠진 프로세스들의 자원을 선점해야 되는 경우 고려해야 할 직접적 사항
① 자원을 선점할 희생자 프로세스를 선택하는 문제
② 복귀 문제
③ 기아 현상 문제
요점정리
1. 프로세스 관리에 대한 개념과 관련 용어를 정리합니다. 2. 교착상태에 대한 의미를 정리해 둡니다
다음차시예고
수고하셨습니다. 다음 3주차에서는 “[OS-03강] 프로세스 스케줄링, 주기억장치관리전략”에 대해서 학습하도록
하겠습니다.
정보처리기사 필기 무료강의 제3과목[OS-06강] 정보관리 (0) | 2019.07.02 |
---|---|
정보처리기사 필기 무료강의 제3과목[OS-05강] 디스크 스케줄링 (0) | 2019.07.02 |
정보처리기사 필기 무료강의 제3과목[OS-04강] 가상기억장치 관리전략 (0) | 2019.07.02 |
정보처리기사 필기 무료강의 제3과목[OS-03강] 프로세스 스케줄링, 주기억장치관리전략 (0) | 2019.07.02 |
정보처리기사 필기 무료강의 제3과목[OS-01강] 운영체제의 개요와 학습전략 (0) | 2019.07.02 |