728x90
목차
1. 프로세스(Process)
2. 프로세스 스케줄링(Scheduling)
3. 상호배제(Mutex: Mutual eXclusion)
4. 교착상태(DeadLock)
1. 프로세스(Process)
1-1. 프로세스의 개념
* 프로그램이 주기억 장치에 적재되어 CPU에 의해 실행과정에 있을때 프로세스라고 부른다
* 목적 또는 결과에 따라 발생되는 사건(프로시저)들의 과정
* CPU가 할당되는 실체이며 PCB가 정의하는 실체
1-2. 프로세스 상태
1. 프로세스 주요 상태
* 준비(Ready) 상태
- 기억장치에 존재하는 프로세스를 선택하여 CPU의 할당을 기다리는 시점
* 실행(Run) 상태
- 대기 상태의 프로세스가 CPU를 할당받아 작업이 진행되는 상태
* 대기(Block) 상태
- 프로세스의 특정 작업을 진행하기 위해 입출력 작업등을 기다리는 상태
* 종료(Exit) 상태
- 프로세스 실행이 완료되어 종료된 상태
2. 상태 전이 과정
* Dispatch
- 준비상태의 프로세스가 실행 상태로 변하는 과정
* Time Run Out
- 실행상태의 프로세스가 할당된 시간을 다 사용했지만 아직 작업을 끝내지 못한 경우 다시 준비상태로 넘어가는 과정
* Block
- 실행 상태의 프로세가 입출력에 의한 작업을 위해 대기상태로 변하는 과정
* Wake Up
- 입출력 등이 완료되어 대기상태의 프로세스가 준비상태로 변하는 과정
3. 프로세스의 자원 이용 절차
* 프로세스는 운영체제의 자원을 요청, 사용, 해제하는 순으로 진행
1-3. 인터럽트 처리(Interrupt Processing)
1. 인터럽트 처리
* 프로세스 수행중에 다른 프로세스를 수행하거나 외부 입력장치에 의해 현재 수행중인 프로세스를 중단되는 상태
* 잠시 중단된 프로세스의 상태는 다시 실행을 시작하기 위해 중단되었던 시점의 정보를 저장
* 입출력 연산, 하드웨어 실패, 프로그램 오류등에 의해서 발생
2. 인터럽트 처리 절자
* 인터럽트 요청
* 프로그램 실행 중단: 현재 실행중이던 Operation 까지 수행
* 현재 프로그램 상태 보전: PCB, PC
* 인터럽트 처리루틴 실행: 인터럽트를 요청한 장치를 식별
* 인터럽트 서비스루틴 실행
* 상태복구: PCB, PC 통해서 복구
* 중단된 프로그램 실행 재개: 이전에 수행중이던 프로그램을 재개
3. 인터럽트의 종류
* 외부 인터럽트
* 내부 인터럽트
* 소프트웨어 인터럽트
1-4. PCB(Process Control Block)
1. PCB의 개념
* 운영체제가 프로세스에 대한 정보를 기록한 테이블으로 Process 대신 Task나 Job을 사용하기도 한다
* 각 프로세스가 생성, 제거 될때마다 고유의 PCB가 생성, 제거
2. PCB에 저장되어 있는 정보
* 프로세스 고유번호
* 현재상태
* 포인터
* 레지스터와 자원정보
* 스케줄링 정보
* 입출력 상태정보
* 계정 정보
3. 문맥교환(Context Switching)
* CPU가 할당되는 프로세스를 변경하기 위해 현재 실행되는 프로세스의 상태정보를 저장하고,
* 이후 실행될 프로세스의 상태정보를 설정한 다음 CPU를 할당하여 실행하는 작업
1-5. IPC(Inter Process Communication)
1. IPC의 개념
* 협력하는 프로세스들 사이에 서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로를 뜻한다
* 프로세스들의 자원공유, 속도향상, 모듈화, 편의성 증대에 활용
* 메시지 교환(Message Passing)방식과 메모리 공유(Shared Memory)방식
1-6. 스레드(Thread)
1. 스레드의 개념
* 프로세스 내에서의 작업단위로서 시스템의 여러자원을 할당받아 실행하는 프로그램 단위
* 하나의 프로세스에 하나의 스레드가 존재하는 경우에는 단일스레드, 하나이상의 스레드가 존재하는 경우 다중스레드
* 스레드 기반 시스템에서 스레드는 독립적인 스케줄링의 최소 단위로서 프로세스의 역할을 담당
* 동일 프로세스 환경에서 서로 독립적인 다중 수행이 가능
2. 스레드 사용의 장점
* 하나의 프로세스를 여러개의 스레드로 생성하여 병행성을 증진
* 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상시킬수 있다
* 응용 프로그램의 응답시간을 단축
* 실행환경을 공유시켜 기억장소의 낭비가 줄어든다
3. 스레드의 분류
* 사용자 수준의 스레드
- 사용자가 만든 라이브러리를 사용하여 스레드 운용
* 커널 수준의 스레드
- 운영체제의 커널에 의해 스레드를 운용
4. 멀티스레드 모델
* 커널 레벨 스레드
- 커널이 직접 생성하고 관리하는 스레드
* 사용자 레벨 스레드
- 라이브러리에 의해 구현된 일반적인 스레드
* 멀티 레벨 스레드
- 사용자 레벨 스레드와 커널 레벨 스레드를 혼합한 방식
2. 프로세스 스케줄링(Scheduling)
2-1. 프로세스 스케줄링의 개념
1. 프로세스 스케줄링의 정의
* CPU를 사용하려고 하는 프로세스들 사이의 우선 순위를 관리
* 장기, 중기, 단기 스케줄링이 있다
2. 프로세스 스케줄링의 원칙
* 공정하게 배정되어야 하며 처리응답시간이 신속해야 한다
* 단위 시간당 가능한 최대의 처리가 될수 있도록 해야한다
* 응답 시간과 자원 활용간의 적절한 균형이 유지되도록 해야한다
* 중요자원의 선점여부와 불안하지 않은 프로세스에 우선순위를 주어야 한다
3. 바람직한 프로세스 스케줄링 정책
* CPU 이용률, 처리능력을 높일수 있도록 스케줄링
* 대기시간, 응답시간, 반환시간을 줄일수 있도록 스케줄링
2-2. 비선점형(Non Preemption) 스케줄링
1. 비선점형 방식의 개념
* 현재 실행중인 프로세스를 다른 프로세스가 강제적으로 중단시킬수 없는 방식
* CPU를 사용하는 현재 프로세스가 종료되면 다른 프로세스에 CPU를 할당한다
* 응답 시간의 예측이 용이하며, 일괄처리 시스템에 적당
* FIFO, SJF, HRN
2. FIFO(First In First Out)
* 프로세스가 도착한 순서대로 처리
3. SJF(Short Job First)
* 실행시간이 가장 짧은 프로세스 순으로 처리
* 실행시간이 긴 작업일 경우 무한대기 상태가 발생할수 있다
4. HRN(Highest Response-ratio Next)
* FIFO와 SJF의 단점을 보완하여 개발된 방법
* 대기시간이 긴 프로세스의 우선순위를 높여서 긴 작업과 짧은작업간의 지나친 불평등을 해소
* HRN 우선순위 공식의 계산결과가 큰 작업에 높은 우선순위를 부여
* 우선순위 = (실행시간) + (대기시간) / (실행시간)
2-3. 선점형(Preemption) 스케줄링
1. 선점형 방식의 개념
* 현재 실행중인 프로세스를 다른 프로세스가 강제적으로 중단시킬수 있는 방식
* 다른 프로세스가 현재 사용중인 프로세스를 중단시키고 CPU를 차지할수 있다
* 빠른 응답시간을 필요로 하는 대화식, 시분할, 실시간 처리에 적당
* RR, SRT, MFQ
2. RR(Round Robin)
* 동일한 Time Slice를 사용하는 시분할 처리 시스템에 효과적으로 적용
3. SRT(Shortest Remaining Time)
* 작업이 끝나지 않은 프로세스의 남아있는 실행시간이 가장작은 프로세스를 먼저 실행하는 방식
* SJF 기법을 선점형태로 변경한 기법으로, 점유시간이 길어도 중요한 프로세스를 먼저 할당
4. MFQ(Multilevel Feedback Queue)
* 짧은 작업이나 입출력 위주의 프로세스에 우선순위를 부여하기 위해 개발된 방식
* 우선 순위가 있는 각 큐(대기리스트)가 있으며 큐마다 Time Slice가 존재
* 낮은 큐일수록 Time Slice는 커지며, CPU 사용을 마친 프로세스는 낮은 큐로 이동
3. 상호배제(Mutex: Mutual eXclusion)
3-1. 임계구역
* 다중 프로그래밍 기법에서 둘 이상의 프로세스가 운영될때 서로 공유하게 되는 자원
* 프로세스 간의 통신에 필요한 매개변수의 역할로 임계구역을 사용할수도 있다
* 자원을 공유하는 각 프로세스는 배타적으로, 동시에 사용할수 없으며 특정 프로세스가 독점하게 해서도 안된다
3-2. 상호배제의 개념
* 하나의 프로세스만 임계구역을 사용할수 있도록 다른 프로세스의 접근을 차단하는것
* 상호배제를 위한 4가지 요구조건 충족
- 두개 이상의 프로세스들이 동시에 임계구역에 있으면 안됨
- 어떤 프로세스도 임계구역에 진입하는 것이 무한정 연기되면 안됨
- 임계구역안에 있는 프로세스가 다른 프로세스의 임계구역 진입을 막을수 있어야 함
- 프로세스들의 상대적인 속도에대한 어떠한 가정을 하면 안됨
3-3. 상호배제 알고리즘
1. 잠금
2. 인터럽트 봉쇄
3. 엄격한교대
4. 상호배재 알고리즘의 한계
* 현재 사용중인 프로세스의 실행시간이 길다면 다른 프로세스는 임계구역을 사용하기 위해 계속해서 대기
3-4. 세마포어(Semaphore)
1. 세마포어의 개념
* 임계구역을 지키기 위한 기존 상호배제 알고리즘이 바쁜 대기현상을 야기하는것을 방지하고자 개발된 알고리즘
* 세마포어 알고리즘에서 사용되는 공유 자원의 수를 나타내는 변수를 세마포어 변수(S)라고 한다
2. 세마포어의 특징
* 세마포어에 대한 연산은 소프트웨어 및 하드웨어로 구현되며 연산처리중에 인터럽트 되어서는 안된다
* 이진 세마포어는 0과 1의 값을 가지고, 산술 세마포어는 0과 자연수를 가질수 있다
3. 모니터(Monitor)
* 세마포어 알고리즘을 구현한 프로그램
* 모니터는 프로세스들이 사용할수 있는 공유자원 혹은 자원그룹을 할당하는 사용
* 데이터 및 프로시저를 포함하는 병행성 구조(Concurrent Construce)
4. 교착상태(DeadLock)
4-1. 교착상태의 개념
* 둘 이상의 프로세스가 실현 불가능한 상태를 무한정 기다리고 있는 상태
* 둘 이상의 프로세스가 하나의 자원을 서로 요구하는 상태
4-2. 교착상태가 발생할수 있는 필요충분조건
1. 상호배제(Mutual exclusion)
* 한 리소스는 한번에 한 프로세스만이 사용
2. 점유와 대기(Hold and wait)
* 어떤 프로세스가 하나이상의 리소스를 점유하고 있으면서 다른 프로세스가 가지고 있는 리소스를 기다린다
3. 비선점(No preemption)
* 프로세스가 작업을 마친 후 리소스를 자발적으로 반환할때까지 기다린다
4. 환형대기(Circular wait)
* 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가진다
4-3. 교착상태 해결 방안
1. 예방(Prevention)
* 상호배제부정
* 비선점부정
* 점유와 대기부정
* 환형대기부정
2. 회피(Avoidance)
* 안정적 상태를 유지할수 있는 프로세스의 요청만 받아들이는 방식으로 교착상태가 발생할 가능성을 회피
* 대표적으로 은행원 알고리즘
- 안전상태와 불안전상태로 구분
- 자원의 양과 사용자의 수가 일정
- 모든 요구를 유한한 시간안에 수용
- 대화식 프로그램에는 적용 불가능
3. 발견(Detection)
* 컴퓨터의 중단 원인이 교착상태인지 다른이유인지 파악하는 방법
* 공유 자원과 프로세스의 관계를 인접행렬로 표현하여 파악
4. 회복(Recovery)
* 교착상태가 발생한 프로세스중 희생양을 정하여 자원을 빼앗는 방식
참고자료 : 이기적 환상콤비 정보처리기사
728x90