준비상태의 프로세스를 실행 상태로 옮겨주는 알고리즘을 CPU 스케줄링이라고 한다. CPU 스케쥴링은 준비 상태의 프로세스 중에서 어떤 것이 실행 상태로 옮겨져야 하는지 를 결정하는 행위이다. 동시에 여러 개의 프로세스가 준비 상태에 있는 경우, 이 중에서 실행 상태로 옮길 하나의 프로세스를 결정하는 것.
비선점 스케줄링
비선점 스케줄링은 프로세스가 CPU를 한번 할당받으면, 다르 프로세스는 CPU를 강제로 뺏을 수 없고 끝날 때까지 기다려야 한다. 중요한 작업이 들어와도 기다려야 되기 때문에 비효율적이다. 대표적인 스케줄링 FIFO, SJF, HRN이 있다.
선점 스케줄링
우선순위가 높은 프로세스가 들어오면 CPU를 강제로 빼앗는 방법이다. 실시간 처리나 시분할 처리에 적합하다. 대표적인 스케줄링은 RR,SRT가 있다.
메모리 관리
멀티 프로그래밍 환경으로 발전하면서, 운영체제는 운영체제 영역과 여러 프로그램 영역들 간에 메모리 사용을 관리해야 할 필요가 생겼다. 그래서 운영체제는 메모리에 여러 개의 프로그램이 올라갈 수 있도록 메모리에 언제, 어떻게 분할하여 어디에 어떤 프로그램을 배치해야 할 것 인지를 관리해수게 되었으며. 이 것을 메모리 관리 기법이라고 부른다. 메모리 관리 기법에는 반입정책, 배치정책, 대치정책으로 구분되며, 이 세 가지 정책을 통해 운영체제는 각 프로그램에 적합한 메모리 영역에 할당해 주는 것이다.
멀티프로그래밍 환경에서 여러 개의 프로그랩을 하나의 메모리에 적재하기 위해서 우선 하나의 메모리를 여러 개의 영역으로 분리하여 여러 개의 프로그램을 적재할 수 있도록 공간을 확보해야 한다. 메모리를 분할하는 방법은 고정 분할 기법과 동적 분할 기법이 존재 한다.
- 고정 분할 기법
고정 분할 기법은 가장 간단한 메모리 할당 방법으로 연속된 메모리 공간을 미리 고정된 크기로 분할하는 방법으로 고정된 크기의 메모리는 페이징이라고 한다. 분할된 메모리는 프로세스를 수용하여 활용될 수 있지만, 활용 되지 못하는 경우가 발생할 수 있는데, 이러한 경우를 단편화라고 한다. 단편화는 내부 단편화와 외부 단편화가 존재하며, 고정 분할 기법에서는 내부 단편화와 외부 단편화 모두 발생할 수 있다. 메모리 영역의 크기가 고정되어 있기 때문에 고정된 크기의 페이징보다 작은 크기의 프로세스가 들어오면 메모리 영역이 남게 되는데 이것을 내부 단편화라 하고, 고정된 메모 리 크기보다 큰 프로세스가 들어와서 메모리를 아예 사용하지 못할 경우 외부 단편화라고 한다.
- 동적 분할 기법
동적 분할 기법은 메모리 공간을 각 프로세스의 크기에 따라 분할 하는 방식으로 크기가 다양하기 때문에 가변 분할 기법이라고도 불린다. 가변된 크기의 메모리 영어을 세그먼테이션(segmentation)라고 한다. 이 방식은 프로세스의 크기에 따라 분할되기 때문에 내부단편화는 발생하지 않으나, 외부 단편화는 발생 할 수 있다. 배치 정책에는 최초적합, 최적적합, 최악적합 방식이 있다.
∙최초적합 : 프로세스의 크기보다 큰 메모리 영역 중 가장 처음에 있는 메모리 영역에 할당하는 방식
∙최적적합 : 프로세스의 크기보다 큰 메모리 영역 중 프로세스의 크기와 가장 비슷한 크기를 가진 메모리 영역에 할당하는 방식
∙최악적합 : 프로세스의 크기보다 큰 메모리 영역 중 크기가 가장 큰 영역에 할당하는 방식
병행 프로세스
병행 프로세스(concurrent process)는 2개 이상의 프로세스가 동시에 실행되는 것을 의미한다. 하나이상의 프로세스를 서로 다른 장치에서 동시에 실행시키는 병렬 프로세스와는 다른 의미이다. 병행 프로세스는 소프트웨어적으로 동시에 실행시키고, 병렬 프로세스는 하드웨어 적으로 동시에 실행 시키는 방식이다. 멀티미디어가 동시에 재생되듯이, 최근 많은 응용 프로그랜에서 병행 처리를 필요로 하고 있기 때문에 운영체제는 병행 처리를 위해 많은 상황을 해결하며, 프로세스들을 관리해야 한다.
교착상태와 상호배제 문제가 병행 처리를 위해 고려해야 할 대표적인 것들이다.
∙교착상태(deadlock) : 2개 이상의 프로세스가 서로 상대방의 작업이 끝나기만을 기다리고 있는 상태
∙상호배제 : 모든 프로세스들이 필요하는 자원에 대해 배타적인 통제권을 요구한다. 한 번에 하나의 프로세스만이 자원을 사용할 수 있다는 의미. 대표적인 경우가 프린터. 한번에 두 가지 문서를 인쇄할 수 없다.
∙점유대기 : 하나의 프로세스가 어떤 자원을 할당받은 상태에서, 다른 자원의 할당을 요구하여 기다림
∙비선점 : 프로세스가 어떤 자원을 사용 끝날 때까지 다른 프로세스는 그 자원을 뺏을 수 없으며, 소유 프로세스가 작업을 종료한 후에 선점할 수 있음
∙순환대기 : 각 프로세스는 다음 프로세스가 요구하는 자원을 가지고 있는 것
교착상태를 관리할 수 있는 방안
∙교착 상태 예방
한 프로세스는 자신에게 필요한 자원을 한꺼번에 요구하고, 그 자원을 전부 할당해 주거나, 하나라도 부족하면 아무것도 할당해주지 않도록 하는 방법과 프로세스가 추가 자원을 요구하였을 때, 그 자원을 제공하지 못하면 그 프로세스가 가지고 있던 자원을 전부 반납하여 다른 프로세스가 사용할 수 있도록 하는 방법이다.
∙교착 상태 탐지와 회복
탐지와 회복 방법은 교착상태를 허용하는 방법으로, 자원 할당 그래프를 사용하여 교착 상태의 발생을 항상 감시하고, 그래프 상에 원형이 나타나면 이를 해결하는 것이다.
교착상태를 탐지하는 것과 해결하는 것은 쉽지 않기 때문에 예방이나 회피보다 비효율적이다.
∙교착 상태 회피
교착상태가 발생할 가능성이 있으면 무시하는 기법이다. 교착상태를 해결하는데 많은 비용이 들고, 교착상태 발생 화률이 낮은 상황에서 사용할 수 있는 정책으로 대부분의 운영체제에서 이 방식을 사용한다.
시스템은 자원을 할당한 후 돌려받 을 수 있는지에 대한 안정 상대를 확인한 후, 돌려받지 못할 것 같은 상태(불안전상태)이면 요청을 거절하는 방식이다.
'컴퓨터 구조' 카테고리의 다른 글
데이터 베이스 (0) | 2023.01.01 |
---|---|
소프트웨어 - 프로그래밍 (0) | 2023.01.01 |
소프트웨어 - 운영체제의 목적 (0) | 2023.01.01 |
소프트웨어 (0) | 2023.01.01 |
병렬처리 컴퓨터 (0) | 2022.12.28 |
댓글