01 프로세스 개요

 

1) 프로세스의 정의

 

실행중인 프로그램

 

2) pcb(프로세스 제어블록)

 

저장정보

 

1) 프로세스의 현재 상태(준비, 대기, 실행 등의 프로세스 상태)

2) 포인터( 부모 프로세스에 대한 포인터, 자식 프로세스에 대한 포인터)

3) 프로세스 고유 식별자( 프로세스를 구분할 수 있는 고유번호)

4) 스케줄링 및 프로세스의 우선순위

 

3) 프로세스 상태 전이

 

 

 

4) 스레드

 

스레드는 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위이다.

 

스레드의 분류

 

사용자 수준의 스레드

커널 수준의 스레드

 

스레드 사용의 장점

 

- 하나의 프로세스를 여러 개의 스레드로 생성하여 병행성 증진

- 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상

- 응용 프로그램의 응답 시간을 단축

- 스레드는 공통적으로 접근 가능한 기억장치를 통해 효율적으로 통신한다.

 

02 스케줄링 개요

 

 

1) 개요

 

대부분의 시스템은 다중 프로그래밍 방식으로 동작하는데 이는 여러 개의 프로세스를 주기억장치에 적재하여 실행 중이던 프로세스가 중앙처리장치 동작이 아닌 다른 사건이 발생하기를 기다리는 동안 다른 프로세스가 실행되도록 하여 중앙처리장치 이용률을 최대화하는 개념이다.

 

2) 스케줄링 기법

 

비선점 스케줄링

 

이미 할당된 cpu를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법이다.

 

선점 스케줄링

 

하나의 프로세스가 cpu를 할당받아 실행할 때 우선순위가 높은 다른 프로세스가 cpu를 강제로 빼앗아 사용할 수 있는 스케줄링 기법이다.

 

3) 비선점 스케줄링

 

- FCFS 준비상태 큐에 도착한 순서에 따라 차례로 cpu할당 하는 기법

 

- SJF

 

SJF는 준비상태 큐에서 기다리고 있는 프로세스들 중에서 실행시간이 가장짧은 프로세스에게 cpu할당

 

- HRN

 

실행 시간이 긴 프로세스에 불리한 SJF 기법 보완

 

우선순위 =  (대기시간+서비스시간) / 서비스시간

 

우선순위를 계산하여 그 숫자가 가장 높은 것부터 낮은 순으로 우선순위가 부여된다.

 

- 우선순위 스케줄링

 

프로세스마다 우선순위를 부여하여 그 우선순위가 가장 높은 프로세스에게 먼저 cpu 할당

가장 낮은 순위를 부여받은 프로세스는 기아 상태가 발생 하여 aging해야 함.

 

4) 선점 스케줄링

 

- 선점 우선순위

 

우선순위 스케줄링과 동일하나, 선점할 수 있다는 차이

 

- SRT

 

선점가능한 SJF

 

- RR(라운드 로빈)

 

시분할 시스템을 위해 고안된 방식

 

FCFS 기법과 같이 준비상태 큐에 먼저 들어온 프로세스가 먼저 cpu를 할당받지만, 시간 할당량 동안만 실행한 후 실행이 완료되지 않으면 다음 프로세스에게 cpu를 넘겨주고 준비상태 큐의 가장 뒤로 배치된다.

 

- 다단계 큐

 

프로세스를 특정 그룹으로 분류할 수 있을 경우 그룹에 따라 각기 다른 준비상태 큐를 사용하는 기법이다.

 

프로세스 우선순위에 따라 시스템 프로세스, 대화형 프로세스, 편집 프로세스, 일괄 처리 프로세스 등으로 나누어 준비상태 큐를 상위, 중위, 하위 단계로 배치한다.

 

각 준비상태 큐는 독자적인 스케줄링을 가지고 있으므로 각 그룹의 특성에 따라 서로 다른 스케줄링 기법을 사용할 수 있다.

 

- 다단계 피드백 큐

 

특정 그룹의 준비상태 큐에 들어간 프로세스가 다른 준비상태 큐로 이동할 수 없는 다단계 큐 기법을 준비상태 큐 사이를 이동할 수 있도록 개선한 기법이다.

 

준비상태 큐마다 시간 할당량을 부여하여 그 시간 동안 완료하지 못한 프로세스는 다음 단계의 준비상태 큐로 이동된다.

 

상위 단계 준비상태 큐일수록 우선순위가 높고, 시간 할당량이 적다.

 

 

03 병행프로세스와 상호 배제

 

 

 

1) 병행 프로세스

 

두 개 이상의 프로세스들이 동시에 존재하며 실행 상태에 있는 것을 의미한다.

 

2) 임계 구역

 

임계 구역은 다중 프로그래밍 운영체제에서 여러 개의 프로세스가 공유하는 데이터 및 자원에 대하여 어느 한 시점에서는 하나의 프로세스만 자원을 사용하도록 지정된 공유 자원을 의미한다.

 

* 임계 구역에는 하나의 프로세스만 접근할 수 있으며, 해당 프로세스가 자원을 반납한 후에만 다른 프로세스가 자원이나 데이터를 사용할 수 있다.

 

* 임계 구역은 특정 프로세스가 독점할 수 없으며, 임계 영역에서 수행 중인 프로세스는 인터럽트가 불가능하다.

 

* 프로세스가 임게 구역에 대한 집입을 요청하면 일정 시간 내에 진입을 허락해야 한다.

 

3) 상호 배제 기법

 

상호 배제는 특정 프로세스가 공유 자원을 사용하고 있을 경우 다른 프로세스가 해당 공유 자원을 사용하지 못하게 제어하는 기법을 의미한다.

 

* 여러 프로세스가 동시에 공유 자원을 사용할 때 각 프로세스가 번갈아가며 공유자원을 사용하도록 하는 것으로, 임계구역을 유지하는 기법이다.

 

소프트웨어적 구현 방법

 

* 두 개의 프로세스 기준 : 데커 알고리즘, 피터슨 알고리즘

* 여러개의 프로세스 기준 : Lamport의 빵집 알고리즘

 

하드웨어적 구현 방법

 

* Test & Set 기법과 Swap 명령어 기법이 있다.

 

4) 동기화 기법

 

동기화 기법은 두 개 이상의 프로세스를 한 시점에서는 동시에 처리할 수 없으므로 각 프로세스에 대한 처리 순서를 결정하는 것으로, 상호 배제의 한 형태이다.

 

- 세마포어

 

* 세마포어는 '신호기', '깃발'을 뜻하며, 각 프로세스에 제어 신호를 전달하여 순서대로 작업을 수행하도록 하는 기법이다.

* 세마포어는 다익스트라가 제안하였으며, p와 v라는 두개의 연산에 의해서 동기화를 유지시키고 상호 배제의 원리를 보장한다.

 

* S는 P와 V연산으로만 접근 가능한 세마포어 변수로, 공유 자원의 개수를 나타내며 0과 1혹은 0과 양의 값을 가질 수 있다.

 

P연산 : while s<=0 do skip;  s =s -1  (자원이 점유중이면 기다리다가 사용할 수있으면 점유한다)

 

v연산 : s=s+1;

 

1. 프로세스가 자원을 사용하려고 할 경우 세마포어 변수를 통해 다른 프로세스가 자원을 점유하고 있는지 조사한다. 자원을 사용할 수

있으면 해당 자원을 점유한 후 자원이 점유되었다는 것을 알리고, 다른 프로세스가 이미 자원을 점유한 상태라면 자원을 사용할 수 있을 때까지 기다린다.

 

p연산 : 자원을 사용하려는 프로세스들의 진입 여부를 자원의 개수를 통해 결정하는 것으로 wait 동작이라 한다.

s = s-1; 자원 점유를 알리는 것으로, 자원의 개수를 감소시킨다.

 

2. 프로세스가 자원 사용을 마치면 자원을 반납하므로 자원의 사용을 위해 기다리는 프로세스에게 이 사실을 알린다.

 

v연산 : 대기중인 프로세스를 깨우는 신호로서 signal 동작이라고 한다.

s = s+1; 자원을 반납하였으므로 자원의 개수를 증가시킨다. 

 

 

- 모니터 

 

* 모니터는 동기화를 구현하기 위한 특수 프로그램 기법으로 특정 공유 자원을 프로세스에게 할당하는 데 필요한 데이터와 이 데이터를 처리하는 프로시저로 구성된다. 

 

* 모니터 내의 공유 자원을 사용하려면 프로세스는 반드시 모니터의 진입부를 호출해야 한다.

 

* 외부의 프로시저는 직접 액세스 할 수 없다.

 

* 모니터의 경계에서 상호 배제가 시행된다.

 

* 모니터에는 한 순간에 하나의 프로세스만 진입하여 자원을 사용할 수 있다.

 

* 모니터에서는 Wait와 Signal 연산이 사용된다.

 

 

 

04 교착상태

 

 

1) 교착상태 개요

 

- 교착상태(Dead Lock)은 상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상을 의미한다.

 

- 아래 그림과 같이 자동차들이 현재 위치한 길을 점유함과 동시에 다른 차가 사용하는 길을 사용하려고 대기하고 있지만 다른 길을 사용할 수 없으며 현재 길에서도 벗어나지 못하는 상태이다.

 

2) 교착상태 발생의 필요 충분 조건

 

교착상태가 발생하기 위해서는 다음의 네 가지 조건이 충족되어야 하는데, 이 네 가지 조건 중 하나라도 충족되지 않으면 교착상태가 발생하지 않는다.

 

상호 배제 - 한 번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 한다.

 

점유와 대기 - 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 한다.

 

비선점- 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 한다.

 

환형 대기 - 공유 자원과 공유 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 한다.

 

3)  교착상태 해결 방법

 

- 예방 기법

 

교착 상태 예방 기법은 교착상태가 발생하지 않도록 사전에 시스템을 제어하는 방법으로, 교착상태 발생의 네 가지 조건 중에서 어느 하나를 제거함으로써 수행된다..

 

* 상호 배제 부정 - > 한번에 여러개의 프로세스가 공유자원을 사용할 수 있도록 한다.

 

* 점유 및 대기 부정 -> 프로세스가 실행되기 전 피요한 모든 자원을 할당하여 프로세스 대기를 없애거나 자원이 점유되지 않은 상태에서만 자원을 요구하도록 한다.

 

* 비선점 부정 -> 자원을 점유하고 있는 프로세스가 다른 자원을 요구 할 때 점유하고 있는 자원을 반납하고, 요구한 자원을 사용하기 위해 기다리게 한다.

 

* 환형 대기 부정 -> 자원을 선형 순서로 분류하여 고유 번호를 할당하고, 각 프로세스는 현재 점유한 자원의 고유 번호보다 앞이나 뒤 어느 한쪽 방향으로만 자원을 요구하도록 하는 것이다.

 

- 회피 기법

 

교착상태 회피 기법은 교착상태가 발생할 가능성을 배제하지 않고 교착상태가 발생하면 적절히 피해나가는 방법으로, 주로 은행원 알고리즘이 사용된다.

 

* 은행원 알고리즘

 

* 은행원 알고리즘은 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는 데서 유래한 기법이다.

* 각 프로세스에게 자원을 할당하여 교착상태가 발생하지 않으며 모든 프로세스가 완료될 수 있는 상태를 안전상태, 교착상태가 발생할 수 있는 상태는 불안전 상태라고 한다.

* 은행원 알고리즘을 적용하기 위해서는 자원의 양과 사용자 수가 일정해야 한다.

* 은행원 알고리즘은 프로세스의 모든 요구를 유한한 시간 안에 할당하는 것을 보장한다.

 

 

- 회복 기법

 

교착상태 회복 기법은 교착상태를 일으킨 프로세스를 종료하거나 교착상태의 프로세스에 할당된 자원을 선점*하여 프로세스나 자원을 회복하는 것을 의미한다.

 

프로세스 종료 - 교착상태에 있는 프로세스를 종료

 

자원 선점 - 교착상태의 프로세스가 점유하고 있는 자원을 선점하여 다른 프로세스에게 할당

 

 

'이론 > 운영체제' 카테고리의 다른 글

데이터 통신 개요  (0) 2015.09.28
파일과 파일 시스템  (0) 2015.09.27
기억장치 관리  (0) 2015.09.27
프로세스 개요  (0) 2015.09.26
운영체제 개요  (0) 2015.09.26
운영체제 3학년 최종 텀프로젝트.  (0) 2015.03.19
블로그 이미지

종환 Revolutionist-JongHwan

github.com/alciakng 항상 겸손하자.