본문 바로가기

카테고리 없음

운영체제 요약 정리 (2)

CPU 스케줄링

어떤 작업에 CPU를 배정할지 결정하는 것. 

컴퓨터 시스템의 효율 - 어떤 프로세스에 CPU를 먼저 배정하느냐에 달라짐

 

프로세스는 생성->준비->실행->대기 등 단계를 거쳐 작업이 이루어진다.

CPU 스케줄러 = 프로세서 스케줄러

 

 

CPU 스케줄링

고수준 스케줄링, 장기 스케줄링, 작업 스케줄링 : 

시스템 내의 전체 프로세스 수를 조절하는 것

저수준 스케줄링:

전체 시스템의 활성화된 프로세스 수를 조절하여 과부하를 막는 것

중간 수준 스케줄링:

어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 대기 상태로 보낼지 등 결정하는 것

 

프로세스 우선순위

대부분의 cpu 스케줄러는 우선순위를 사용한다. 우선순위가 있다는건 프로세스의 중요도가 다르다는 의미. 프로세스는 크게 1. 커널 프로세스와 2.일반 프로세스로 나눈다. 커널 프로세스는 우선순위가 일반보다 높다. 

우선순위가 높다는건 더 빨리 자주 실행된다는 의미다. 같은 커널 프로세스에서도 중요한 커널 프로세스는 우선순위가 더 높다. 일반 프로세스도 마찬가지다. 

일반 프로세스의 우선순위는 사용자 조절 가능하다. 단 관리자만 우선순위 조정 가능.

 

인터럽트 처리

인터럽트를 이용해 시스템의 효율을 높힌다. 인터럽트가 어떻게 동작하는가 알아보자.

 

인터럽트란?

인터럽트 처리는 입출력, 시스템 보호에 매우 중요하다. 

컴퓨터를 사용하기 시작한 초기 프로그래밍은 위에서부터 한줄씩 차례 실행인 순차적 프로그래밍(sequential programming)이었다. 

과거 입출력 장치가 거의 없었을 때, 입출력을 요청하면 운영체제가 주기적으로 입출력장치를 직접 확인해 처리했다. 이러한 방식을 폴링이라 한다. 

다양한 입출력 장치 개발 -> 운영체제가 모든 입출력 관리 어려워짐 -> 개발할때 Event Driven 방식처럼 입출력을 요청하고 입출력이 완료되면 이벤트를 발생시켜 이를 알리게 되었다. 이것을 인터럽트라고 한다.

 

입출력 뿐 아니라, 무한루프에서 Ctrl+c 로 멈추는 것도 인터럽트이다.

인터럽트는 실행 중인 명령어로 발생하는 동기적 인터럽트(synchronous interrupt)와 명령어와 무관하게 발생하는 비동기적 인터럽트(asynchronous interrupt)로 나눌 수 있다. 동기적 인터럽트는 사용자 인터럽트라고 한다.

비동기적 인터럽트는 하드디스크 읽기 오류, 메모리 불량 - 하드웨어 오류와 사용자가 작동하는 키보드 인터럽트, 마우스 인터럽트가 있다.

 

교착 상태(Dead Lock)

2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만을 기다리며 작업을 더이상 하지 못할 때 교착 상태라고 한다.

 

컴퓨터 시스템에 교착 상태는 시스템 자원, 공유 변수, 응용 프로그램 등을 사용 할 때 발생 할 수 있다.

 

메모리 관리의 복잡성

과거 일괄처리 시스템에서는 한 번에 한 가지 작업만 처리.

하지만 오늘날 시분할 시스템에선 운영체제를 포함한 모든 응용 프로그램이 메모리에 올라와 실행되기 때문에 메모리 관리가 복잡하다.

 

컴파일러

컴파일러는 컴퓨터가 소스코드를 실행할 수 있는 기계어로 번역한 후 한꺼번에 실행할 수 있도록 해주는 언어 번역 프로그램. 오류를 발견하고 코드를 최적화하기 위해 컴파일러를 사용한다.

 

메모리 관리자의 정책

가져오기 정책: 프로세스가 필요로하는 데이터를 언제 메모리로 가져올지 결정

배치 정책: 가져온 프로세스를 메모리의 어떤 위치에 올려놓을지 결정

재배치 정책: 메모리가 꽉 찼을때 메모리 내에 어떤 프로세스를 내보낼지 결정

 

메모리 오버레이

프로세스의 크기가 실제 메모리보다 클 때, 전체 프로세스를 메모리에 가져오는 대신 적당한 크기로 잘라서 가져오는 기법

 

스왑

메모리가 모자라서 쫓겨난 프로세스를 저장장치의 특별한 공간, 스왑 영역에 모아두는 기법.

스왑 영역에서 메모리로 데이터를 가져오는 작업은 스왑인, 메모리에서 스왑 영역으로 데이터를 내보내는 작업은 스왑 아웃.

 

메모리 분할 방식

가변 분할 방식: 프로세스의 크기에 따라 메모리를 나눔

고정 분할 방식: 프로세스의 크기에 상관없이 메모리를 같은 크기 나눔

 

가변 분할 방식의 메모리 배치 방식

최초 배치: 메모리 적재 가능 공간 순서대로 찾다가 첫 번째로 발견한 공간에 프로세스 배치

최적 배치: 메모리 빈 공간을 모두 확인 후 적당한 크기 가운데 가장 작은 공간에 프로세스 배치

최악 배치: 최적 배치와 반대. 빈 공간을 모두 확인 후 가장 큰 공간에 프로세스 배치

 

조각모음

단편과 발생하면 이미 배치된 프로세스를 옆으로 옮겨 빈 공간들을 하나의 큰 덩어리로 만드는 것

 

 

 

쉽게 배우는 운영체제 참조