운영체제

[운영체제 이해하기 2] 운영체제의 자원 관리 기능 개요

Honey Badger 2023. 5. 29. 05:07

 자원 관리 기능의 필요성

   운영체제의 가장 핵심적인 기능을 꼽으라면 컴퓨터의 자원을 효율적으로 관리하는 것입니다. 앞에서 설명한 것처럼 자원은 하드웨어 자원과 소프트웨어 자원으로 나눌 수 있습니다. 먼저 하드웨어 자원은 CPU, 메모리, 입출력 장치 등으로 구성됩니다. CPU는 일반적으로 컴퓨터 당 하나가 장착되고 메모리또한 한정된 용량만 존재하기 때문에 운영체제의 관리가 필요합니다. 그리고 CPU와 메모리는 전원이 꺼지면 처리 중이던 정보가 모두 지워지기 때문에 전원이 나가도 기억해야 하는 부분은 입출력 장치의 일종인 보조기억장치에 파일 형태로 저장해야합니다. 

 

 

 

<1>  자원 관리 : CPU

 

CPU 스케줄링(CPU Scheduling)이란?

  하나의 CPU에서 여러 프로세스를 수행하기 위해 매 시점 어떤 프로세스를 CPU에 할당하여 작업을 처리할지 결정하는 일CPU 스케줄링이라고 합니다. CPU를 효율적으로 사용하면서도, 최대한 특정 프로세스가 불이익을 당하지 않도록 하는 것이 이것의 목표입니다. 

 

 

 

대표적인 CPU 스케줄링 기법

1. 선입선출(First Come First Served) : 이 기법은 말 그대로 먼저 온 프로세스를 먼저 처리해주는 방식을 말합니다. 이 방식에서는 CPU를 먼저 얻은 프로세스가 원하는 작업을 완료할 때까지 다른 프로세스들이 CPU를 사용하지 못하기 때문에 비효율적인 결과를 초래할 가능성이 있습니다. 

2. 라운드 로빈(Round Robin) : CPU를 한 번 할당받아 사용할 수 있는 시간을 일정하게 고정된 시간으로 제한하는 방법으로 선입선출의 단점을 보완하고자 고안된 기법입니다. 할당시간은 일반적으로 밀리초 단위를 사용하여 다수의 사용자(프로세스)가 동시에 접속할 때에도 각자 1초 이하의 응답시간을 보장받을 수 있게 됩니다. 

3. 우선순위(priority) : 대기 중인 프로세스들에게 우선순위를 부여한 후 이것이 높은 프로세스에게 CPU를 먼저 할당하는 기법입니다. 시스템 내에는 상대적으로 더 중요한 프로세스가 있을 수 있는데, 이러한 상황에는 CPU를 먼저 획득할 수 있도록 한다는 점이 우선순위 스케줄링의 핵심입니다. 또한 지나치게 오래 기다리는 프로세스가 발생하여 형평성이 어긋나게 되는 일도 어느정도 막을 수 있습니다. 

 

 

 

 

<2>  자원 관리 :  메모리

 

메모리 관리 방식

   메모리는 CPU가 직접 접근할 수 있는 컴퓨터 내부의 기억장치입니다. 어떠한 프로그램이 CPU에서 실행되려면 해당 부분이 메모리에 올라가 있어야 합니다. 이때 한정된 공간에 여러 프로그램을 수용하려면 운영체제가 메모리의 어떤 부분이 어느 프로그램에 의해 사용되고 있는지 알고 효율적인 관리 메커니즘을 사용해야 합니다. 이때 이러한 정보는 주소(Address)를 통해 관리되고, 운영체제는 프로그램에 메모리가 필요할 때는 할당하고, 더 이상 필요하지 않을 때 적절히 회수하면서 전체 메모리 공간이 효율적으로 사용될 수 있도록 해야 합니다. 

 

 

 

대표적인 메모리 관리 방식

1. 고정분할 방식(Fixed Partition) : 메모리를 몇 개의 분할로 미리 나누어 관리하는 방식입니다. 각각의 분할에는 하나의 프로그램이 적재될 수 있습니다. 이 방식은 메모리에 동시 적재되는 최대 프로그램의 수가 미리 나뉘어진 분할 개수로 한정되고, 분할의 크기보다 큰 프로그램은 적재가 불가능하므로 융통성이 없다는 단점이 있습니다. 또한 분할의 크기보다 작은 프로그램이 적재되는 경우, 내부조각(Internal fragmentation)이라고 불리는 비효율적으로 낭비되는 공간이 발생하게 됩니다.

 

2. 가변분할 방식(Variable Partition) : 매 시점 프로그램의 크기에 맞게 메모리를 분할해서 사용하는 방식을 말합니다. 위와 같은 문제는 발생하지 않지만 메모리의 크기보다 더 큰 프로그램의 실행은 여전히 불가능하며 분할의 크기와 개수가 동적으로 변하므로 기술적 관리 기법이 필요합니다. 가변분할 방식을 사용하면 프로그램에 할당되지는 않았지만 그 크기가 작아 프로그램을 올리지 못하는 메모리 영역인 외부조각(External Fragmentation)이 발생할 수 있습니다. 

 

3. 가상메모리 방식(Virtual Memory) :  모든 프로그램은 물리적 메모리와는 독립적으로 0번지부터 시작하는 자신만의 가상메모리 주소를 갖고, 운영체제는 이 가상메모리의 주소를 물리적 메모리 주소로 매핑(Mapping)하여 프로그램을 메모리에 올리게 하는 기법입니다. 이 기법은 물리적 메모리보다 더 큰 프로그램이 실행되는 것을 지원하며 가장 널리 사용되는 메모리 관리 기법입니다.

  프로그램의 전체가 항상 동시에 사용되는 것은 아니기에 현재 사용하고 있는 부분만 메모리에 올리고, 나머지는 하드디스크와 같은 보조기억장치에 저장해두었다가 필요할 때 적재하는 방식을 취합니다. 이때 사용되는 보조기억장치의 영역을 스왑 영역(Swap Area)라고 부릅니다. 프로그램을 구성하는 가상메모리 주소 공간은 페이지(Page)라는 동일한 크기의 작은 단위로 나뉘어 물리적 메모리와 스왑 영역에 일부분씩 저장됩니다. 이렇게 일정한 단위로 메모리를 나누는 방법을 페이징(Paging)이라고 부릅니다. 

 

 

 

 

 

<3>  자원 관리 :  주변장치 및 입출력 장치

 

   주변장치 및 입출력 장치는 CPU의 서비스가 필요한 경우 신호를 발생시켜 서비스를 요청하는데, 이때 발생시키는 신호를 인터럽트(Interrupt)라고 합니다. CPU는 평소 스케줄링에 따라 자기에게 주어진 작업을 수행하다가 인터럽트가 발생하면 하던 일을 잠시 멈추고 요청 서비스를 수행합니다. 서비스를 수행한 이후에는 원래작업으로 돌아와야 하기 때문에 인터럽트 처리 직전에 수행 중이던 작업의 상태를 저장해둡니다.  워낙 장치가 다양하다보니 인터럽트는 요청하는 장치와 발생 상황에 따라 다양한 종류가 있습니다. 운영체제는 이 종류마다 서로 다른 처리루틴을 가지고 있고, 이는 운영체제 커널코드의 일부분으로써 존재합니다. 한편 주변장치들은 각각의 장치에서 일어나는 업무를 관리하기 위한 일종의 작은 CPU를 가지고 있는데, 이를 컨트롤러(Controller)라고 부릅니다. 컨트롤러는 해당 장치에 대한 업무를 처리한 후 메인 CPU에 인터럽트를 발생시켜 보고하는 역할을 합니다. 

 

 

 

 

 

이 포스팅은 책 '운영체제와 정보기술의 원리'를 읽고 공부한 내용을 정리하였습니다.

https://www.yes24.com/Product/Goods/90124877

 

운영체제와 정보기술의 원리 - 예스24

컴퓨터 운영체제와 정보기술의 기본 원리 및 핵심 철학을 설명한 컴퓨터 입문서온라인 공개강좌 KOCW에서 꾸준히 호평 받아온 이화여대 반효경 교수의 컴퓨터 입문서이다. 이제는 시대의 흐름에

www.yes24.com