CS - 운영체제

 

콘보이 현상(convoy effect)

콘보이 현상이란 작업 시간이 긴 프로세스가 먼저 큐에 도착해서 다른 프로세스의 실행 시간이 전부 늦춰져 효율이 떨어지는 현상입니다.

FCFS(first- come firts served) 스케줄링은 비선점으로, 순차적으로 먼저 큐에 들어온 작업부터 실행하므로 콘보이 현상이 발생합니다.

 

선점형 스케줄링과 비선점형 스케줄링

선점형은 하나의 프로세스가 다른 프로세스 대신에 CPU를 차지할 수 있음을 말하고,

비선점형은 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없음을 말합니다.

 

동기와 비동기

동기는 순차적, 직렬적으로 테스크를 수행하고, 비동기는 병렬적으로 테스크를 수행합니다.

 

동기(synchronous)는 서버에 데이터를 요청하고 데이터가 응답될 때까지 이후 테스크들을 블로킹합니다.

요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어저야 합니다.

사용자는 요청을 받을 때까지 다른 활동을 할 수 없으며 응답을 기다려야 합니다.

 

비동기(Asynchronous)는 서버에 데이터를 요청한 이후 데이터가 응답될 때까지 대기하지 않고 즉시 다음 테스크를 수행합니다.

비동기는 동시에 일어나지 않는다는 의미가 있습니다.

데이터를 요청한 후 응답을 계속 기다리지 않으며, 다른 외부 활동을 수행해도 되고, 서버에 다른 요청을 보내도 됩니다.

동시에 같은 작업을 하지 않는 다는 것을 보장합니다.

 

임계영역(Critical Section)

임계 영역이란 프로세스간에 공유 자원을 접근하는데 있어 문제가 발생하지 않도록

한번에 하나의 프로세스만 이용하게끔 보장해주어야 하는 영역입니다.

 

임계 영역을 해결하기 위해서는 아래의 3가지 조건을 만족해야 합니다.

- 상호 배제 : 하나의 프로세스가 임계 영역에 들어가 있다면 다른 프로세스는 들어갈 수 없음

- 진행 : 임계 영역에 들어간 프로세스가 없는 상태에서 들어가려 하는 프로세스가 여러 개라면 어느 것이 들어갈지 정해주어야 함

- 한정 대기 : 다른 프로세스의 기아를 방지하기 위해, 한 번 임계 구역에 들어간 프로세스는 다음 번에 들어갈 때 제한을 두어야 함 

 

뮤텍스(Mutex)와 세마포어(Semaphore)

뮤텍스는 Lock을 사용해 하나의 프로세스나 쓰레드를 단독으로 실행하게 합니다.

반면에 세마포어는 공유자원에 세마포어 변수만큼의 프로세스 또는 쓰레드가 접근할 수 있습니다.

즉 세마포어의 변수는 공유 자원의 개수를 나타냅니다.

 

현재 수행중인 프로세스가 아닌 다른 프로세스가 세마포어를 해제할 수 있습니다.

뮤텍스는 락을 획득한 프로세스가 반드시 그 락을 해제해야 합니다.

 

0과 1의 값만 갖는 세마포어 -> 이진 세마포어뮤텍스라고도 합니다.

도메인 제한이 없는 세마포어 -> 카운팅 세마포어라고 합니다.

 

 

페이지 교체 알고리즘

페이징 기법으로 메모리를 관리하는 운영체제에서 필요한 페이지가 주기억장치에 적재되지 않을 시,

어떤 페이지 프레임을 선택해 교체할 것인지 결정하는 방법입니다.

 

FIFO

가장 간단한 알고리즘으로, 메모리에 올라온 지 가장 오래된 페이지를 교체합니다.

간단하고 초기화 코드에 대해 적절한 방법이며 페이지가 올라온 순서를 큐에 저장합니다.

 

OPT(Optimal) 알고리즘

최적 페이지 교체라고 하며, 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체하는 알고리즘입니다.

선행 조건이 있는데, 프로세스가 앞으로 사용할 페이지를 미리 알아야 한다는 것입니다.

이 조건을 실제로 활용할 방안이 없기 때문에 구현이 불가능한 알고리즘이며, 연구 목적으로 주로 사용됩니다.

 

LRU(Least Recently Used) 알고리즘

가장 오랫동안 사용되지 않은 페이지를 교체하는 알고리즘입니다.

최적 알고리즘과 비슷한 효과를 낼 수 있으며 성능이 좋은 편입니다.

많은 운영체제에서 해당 알고리즘을 활용하고 있습니다.

 

LFU(Least Frequently Used) 알고리즘

참조횟수가 가장 적은 페이지를 교체하는 알고리즘입니다.

교체 대상이 여러 개라면 가장 오랫동안 사용하지 않은 페이지를 교체합니다.

 

MFU(Most Frequently Used) 알고리즘

LFU와 반대로 참조 횟수가 가장 많은 페이지를 교체하는 알고리즘입니다.

 

LFU와 MFU는 구현에 상당한 비용이 들고, LRU 만큼 효율적이지 않기 때문에 실제로는 사용되지 않습니다.

 

컨텍스트 스위칭

멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해

다음 우선 순위의 프로세스가 실행되어야 할 때 기존 프로세스의 상태 또는 레지스터 값을 저장하고,

CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값을 교체하는 작업을 말합니다.