본문 바로가기

Computer Science/OS(Operating System)

[OS] 운영 체제 개요 - 운영 체제의 자원 관리 기능

운영 체제의 가장 핵심적인 기능은 자원을 효율적으로 관리하는 것이다.

(1) 하드웨어 자원 : CPU, 메모리, 주변 장치 및 입출력 장치 등이 있다. CPU는 통상적으로 컴퓨터 한 대에 하나가 장착되기 때문에 서로 다른 다수의 프로세스들이 나누어 쓸 수 있도록 해야한다.

(2) 소프트웨어 자원 : 응용 프로그램들과 기타 추상적인 소프트웨어 관리

 

프로세스 : 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램.

 

 

 

1. CPU 관리 방법 ( CPU 스케줄링 )

  • 컴퓨터에 일반적으로 하나밖에 없는 CPU를 어떤 프로세스에게 할당할 것인지를 결정하는 일.

  • 효율적이면서 특정 프로세스가 불이익을 당하지 않도록 하는 것이 목적( 효율성, 형평성 )

  • 선입 선출(FCFS : First Come First Served), 라운드 로빈 (Round Robin), 우선순위(Priority) 기법이 있다.

(1) 선입 선출 기법 (FCFS : First Come First Served)

  • 먼저 CPU를 사용하기 위해 도착한 프로세스를 먼저 처리해 주는 방식, 일상생활 줄서기와 유사하다.

  • 먼저 CPU를 요청한 프로세스가 원하는 작업을 완료할 때까지 다른 프로세스들이 CPU를 사용하지 못하게 된다.

  • CPU 자체의 효율적인 사용은 될 수 있지만 전체 시스템 입장에서는 비효율적인 결과를 초래할 가능성이 있다.

ex) 장시간 CPU를 사용해야하는 프로세스가 단시간 CPU를 사용해야하는 프로세스보다 먼저 도착했을 때

(2) 라운드 로빈 (Round Robin)

  • 선입 선출 기법의 단점을 보완한 기법

  • CPU를 한 번 할당받아 사용할 수 있는 시간을 일정한 고정된 시간으로 제한한다.

  • 장시간 CPU를 사용해야하는 프로세스도 고정 시간이 지나면 CPU를 내어놓고 CPU 서비스를 기다리는 마지막 위치에 가서 기다려야한다.

  • 보통 고정 시간은 수밀리 세컨드(ms)로 한다. 100명의 사용자가 동시 접속 해도 1초 이내에 응답할 수 있는 시간이다.

(3) 우선순위 (Priority)

  • 프로세스 마다 우선순위를 부여하여 높은 순으로 CPU를 할당하는 방법이다.

  • 우선순위는 중요도가 높은 프로세스에게 높은 우선순위를 부여한다.

  • 오래 기다리는 프로세스가 없도록 어느 정도 시간이 지나면 우선순위를 높여주는 방법도 활용될 수 있다.

 

 

 

2. 메모리 관리

 

 

프로그램이 CPU에서 수행되려면 해당 부분이 메모리에 올라가 있어야 한다. 한정된 메모리 공간에 여러 프로그램을 수용하려면 메모리에 대한 효율적인 관리 메커니즘이 필요하다.

운영 체제는 메모리 관리를 위해 메모리의 어떤 부분이 어떤 프로그램에 의해 사용되고 있는지를 유지하게 되는데 이러한 정보를 주소(address)를 통해 관리된다.

물리적 메모리 관리 방식

(1) 고정 분할 (fixed partition) 방식

  • 물리적 메모리를 몇 개의 영구적인 분할로 나눈다. 각각의 분할에는 하나의 프로그램이 적재된다.

  • 융통성이 없다. 메모리 분할 갯수 = 최대 프로그램 갯수

  • 분할한 크기보다 큰 프로그램은 적재 불가

  • 분할한 크기보다 작은 프로그램이 적재되는 경우 남는 영역이 발생하는데 이것을 내부 조각(internal fragmentaion) 이라고 한다. 올라온 프로그램이 사용하지도 않고, 다른 프로세스에게도 할당될 수 없으므로 죽은 공간이라고 볼 수 있다.

(2) 가변 분할 (variable partition) 방식

  • 매 시점 프로그램의 크기에 맞게 메모리를 분할해서 하는 방식이다.

  • 분할의 크기 때문에 큰 프로그램이 실행되지 못하는 문제는 발생하지 않는다.

  • 물리적 메모리보다 큰 프로그램은 실행되지 못한다.

  • 내부 조각은 없어지지만 외부 조각(external fragmentation) 이 발생할 수 있다. 외부조각이란 프로그램에게 할당되지 않은 메모리 영역이지만 그 크기가 작아 프로그램을 올리지 못하는 메모리 영역이다.

(3) 가상 메모리 (virtual memory) 방식

  • 거의 모든 컴퓨터 시스템에서 사용하는 메모리 관리 기법

  • 물리적 메모리 크기보다 더 큰 프로그램이 실행되는 것을 지원한다.

  • 모든 프로그램은 물리적 메모리와는 독립적으로 주소가 0부터 시작하는 자신만의 가상 메모리를 갖게 된다.

  • 운영 체제는 가상 메모리의 주소를 물리적 메모리 주소로 매핑하는 기술을 이용해 주소를 변환 시킨 후 프로그램을 물리적 메모리에 올린다.

  • 프로그램 전체 크기가 20Mbyte라고 할지라도 한 번에 사용되지 않는다. 현재 사용하고 있는 부분을 물리 메모리에 올리고 나머지는 가상메모리에 저장된다. 하드디스크의 보조기억장치에 있는 스왑영역(swap partition) 이 가상메모리라고 할 수 있다.

-프로그램을 구성하는 주소공간은 페이지 라는 동일한 크기의 작은 단위로 나뉘어 물리적 메모리와 스왑여역에 저장된다. 나중에 다루겠다.

 

 

 

 

3. 주변 장치 및 입출력 장치

 

 

  • 인터럽트(interrupt) 라는 메커니즘으로 관리된다.

  • CPU 가 평소에 CPU 스케줄링에 따라 자신이게 주어진 작업을 수행하고 있다가 인터럽트가 발생하면 잠시 일을 멈추고 인터럽트에 의한 요청 서비스를 수행하게 된다. 예를 들어, 키보드 글자를 입력하면 키보드는 CPU 에게 인터럽트를 발생시키고 CPU는 하던 일을 멈추고 처리해야할 작업을 수행한다.

  • 운영 체제는 인터럽트를 처리한 후 다시 원래 작업으로 돌아오기 위해 처리 전 작업을 저장해둔다.

  • 인터럽트는 요청하는 장치와 발생 상황에 따라 다양한 종류가 있기 때문에 운영 체제는 인터럽트 종류맏다 서로 다른 인터럽트 처리 루틴을 가지고 있다.

  • 주변 장치들은 각 장치마다 그 장치에서 일어나는 업무에 대한 관리를 위한 일종의 작은 CPU를 가지고 있다. 우리는 이것은 컨트롤러(Controller) 라고 부른다. 해당 장치에 대한 업무를 처리하고 이를 메인 CPU에 인터럽트를 발생시켜 보고하는 역할을 한다.

 

반응형