profile image

L o a d i n g . . .

이번 정리는 간략하게 요약했다.

CPU 스케줄링

CPU 스케줄링 개요

  • CPU 스케줄링: 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것.
  • 운영체제는 프로세스에 스케줄링 우선순위를 매기고, 이는 PCB에 명시된다.
  • 운영체제는 효율적인 스케줄링을 위해 스케줄링 큐 를 사용한다.
  • 준비 큐는 CPU할당을 기다리는 프로세스를 위한 큐이다.
  • 대기 큐는 입출력 장치의 작업이 완료되기 기다리는 프로세스를 위한 큐이다.
  • 선점형 스케줄링는 프로세스가 이용 중인 자원을 뺏을 수 있고, 비선점형 스케줄링에서는 그러지 못한다. 요즘 OS는 선점형 스케줄링 방식을 차용하고 있다.
개발자가 알아야 할 운영체제 지식

 

CPU 스케줄링 알고리즘

정보처리기사 단골 소재

  • FCFS 스케줄링 (First Come First Served): 선입선출
  • 최단 작업(SJF Shortest Job Firest) 스케줄링: CPU 사용 시간 길이가 가장 짧은 것부터 CPU 할당
  • 라운드로빈 스케줄링: 정해진 시간만큼 돌아가며 할당
  • 최소 잔여 시간(SRT Shortest Remaining Time) 스케줄링: 정해진 시간만큼 돌아가며 할당하되, 최소 잔여 시간 프로세스 부터 할당
  • 우선순위 스케줄링: 우선순위 부여하고, 가장 높은 우선순위 가진 프로세스 부터. 사실 다른 것들도 넓은 의미로 보면 다 우선순위 스케줄링이긴 하다.
  • 다단계 큐 스케줄링:
    개발자가 알아야 할 운영체제 지식
  • 다단계 피드백 큐 스케줄링: 프로세스들이 큐 사이를 이동할 수 있는 다단계 큐.

 

프로세스 동기화

동기화란?

협력적으로 실행되는 프로세스들은 올바르게 실행되기 위해 동기화가 필요하다.
프로세스 동기화란 프로세스들 사이의 수행 시기를 맞추는 것을 의미한다. 프로세스들 사이의 수행 시기를 맞추는 것은 크게 아래 두 가지를 일컫는다.

  • 실행 순서 제어: 프로세스를 올바른 순서로 실행하기
  • 상호 배제: 동시에 접근해서는 안되는 자원에 하나의 프로세스만 접근하게 하기

프로세스 뿐 아니라 스레드도 동기화의 대상이다. 정확히 말하면 실행의 흐름을 갖는 모든 것은 동기화의 대상이다. 다만 이 책에서는 대부분의 전공서 표현에 따라 프로세스 동기화라고 칭했다고 한다.

 

공유 자원과 임계 구역

  • 공유 자원(shared resource)은 공동으로 사용하는 자원으로, 전역 변수가 될 수도 있고, 파일이 될 수도 있고, 입출력 장치, 보조기억장치가 될 수도 있습니다.
  • 임계 구역(critical section)은 공유 자원에 접근하는 코드 중 동시에 실행하면 문제가 발생하는 코드 영역을 의미한다. 임계 구역에 진입한 프로세스가 있다면 다른 프로세스는 임계 구역 밖에서 기다려야 한다.
  • 상호 배제는 한 프로세스가 임계 구역에서 작업 중이면 다른 프로세스가 임계 구역에 들어갈 수 없도록 제어하는 것이다.
  • 레이스 컨디션: 잘못된 실행으로 인해 여러 프로세스가 동시 다발적으로 임계 구역의 코드를 실행하여 문제가 발생하는 경우

 

동기화 기법

상호 배제를 위한 동기화 도구에는 대표적으로 뮤텍스 락, 세머포어, 모니터가 있다.

뮤텍스 락

뮤텍스 락은 임계 구역(크리티컬 섹션)을 잠금으로써 프로세스 간의 상호 배제 시킨다.
쉽게 말해 뮤텍스 락은 자물쇠 같은 거다. 자물쇠 기능을 코드로 구현한 것이다.

임계 구역에 진입하는 프로세스는 내가 지금 임계 구역에 있음을 알리기 위해 뮤텍스 락을 이용해 자물쇠를 걸어둔다.
다른 프로세스는 임계 구역이 잠겨 있다면 기다리고, 잠겨 있지 않다면 임계 구역에 진입할 수 있다.

세마포어

세머포어는 뮤텍스 락에서 조금 더 일반화된 방식의 동기화 도구이다.
뮤텍스 락은 하나의 공유 자원에 접근하는 프로세스를 상정한다. 근데 공유 자원이 여러 개 있을 수 있다.
세마 포어는 임계 구역에 접근할 수 있는 프로세스의 개수를 나타내는 변수를 두어, 상호 배제를 이룬다.
공유 자원이 여러 개 있는 임계 구역 문제도 해결할 수 있는 동기화 도구이다.
엄밀히 말하면 세마포 종류에도 이진 세마포와 카운팅 세마포가 있다.

 그러나 이진 세마포는 뮤텍스 락과 비슷한 개념이고, 카운팅 세마포어가 여기서 얘기하는 세마포어이다.

모니터

모니터는 최근에 등장한 동기화 도구로, 세마 포어에 비해 사용자가 사용하기 편리한 동기화 도구이다.(세마포어를 활용하는 것보다 실수를 더 줄일 수 있다고 한다.)
공유 자원과 공유 자원에 접근하기 위한 인터페이스(통로)를 묶어서 관리한다. 그리고 프로세스는 반드시 인터페이스를 통해서만 공유 자원에 접근하도록 한다.
모니터는 공유 자원을 다루는 인터페이스에 접근하기 위핸 큐(모니터에 접근하기 위한 큐)를 만들고, 모티너 안에 항상 하나의 프로세스만 들어오도록 하여 상호 배제를 위한 동기화를 제공한다.

개발자가 알아야 할 운영체제 지식

 

교착 상태

교착 상태란

교착 상태

교착 상태는 일어나지 않을 사건을 기다리며 무한히 대기하는 현상을 의미한다. 식사하는 철학자 문제는 교착 상태 발생을 보여주는 예시다.

교착 상태 발생 조건

  • 상호 배제
  • 점유와 대기
  • 비선점
  • 원형 대기

 

교착 상태 해결 방법

운영체제는 교착 상태를 어떻게 해결할까?

교착 상태 예방

교착 상태의 발생 조건(상호 배제, 점유와 대기, 비선점, 원형 대기) 중 하나를 충족 못하게 하는 것이다.

교착 상태 회피

교착 상태가 발생하지 않을 정도로 조심조심 자원을 할당한다. 프로세스들에 할당할 수 있는 자원이 충분한 상황을 유지한다면 교착 상태는 발생하지 않는다.

교착 상태 없이 안전하게 프로세스들에 자원이 배분되는 상태를 안전 상태라고 한다.

운영체제는 상시 안전 상태를 유지하도록 자원을 할당한다.

교착 상태 검출 후 회복

교착 상태 발생을 인정하고 사후에 조치하는 방식. 교착 상태 발생 여부를 주기적으로 검사하고, 교착 상태가 발생하면 그때그때 회복한다.

선점을 통한 회복으로 교착 상태가 해결될 때까지 다른 프로세스로부터 자원을 강제로 빼앗고 한 프로세스에 할당할 수도 있고, 프로세스 강제 종료를 통한 회복으로 교착 상태에 놓인 프로세스를 강제 종료시키는 방법이 있다.

복사했습니다!