본문 바로가기

OS

OS - 운영체제의 자원 관리 기능

 운영체제 포스팅은 운영체제를 파편적으로 공부한 비전공자가 제대로 공부하기 위해 정리를 해나가는 과정에 있는 글 입니다.저만의 추측이 포함되어 있는 글이기 때문에 잘못된 부분이 있다면 지적 부탁드립니다. 수정하겠습니다.


OS의 핵심 목표는 자원을 효율적으로 관리하는 것이다. 여기서 자원은 하드웨어 자원과 소프트웨어 자원으로 나뉜다.

하드웨어 자원은 다시 CPU, 메모리, 입출력장치, 주변장치로 나뉜다. 이들 각각을 효율적으로 관리하는 방법은 조금씩 다르다. 조금씩 알아보고 세세한 내용은 이후 포스팅에서 정리하려고 한다.

 

 

 


1. CPU

 

여기서 CPU 관리는 싱글 코어를 가정한다. CPU는 CPU스케쥴링을 통해 관리된다. 목표는 당연히 자원을 효율적으로 사용하는 것이다. 더불어 특정 프로세스가 불이익을 당하지 않도록 하는 것이다.

 

대표적인 스케줄링 기법으로는 아래 3가지가 있다.

  • 선입선출
  • 라운드 로빈
  • 우선순위 기법

 

참고) 라운드 로빈 기법

프로세스의 CPU 할당 시간을 정해놓는 것이다. 일반적으로 할당 시간은 밀리세컨드라고 한다. 할당 시간이 지난 프로세는 아마 Ready Q로 가서 다시 CPU를 할당 받기 위해 줄을 서야 한다. 할당 시간이라는 개념은 아마도 추측컨데 Time Interrupt에서 신호를 줄 것으로 생각된다. 

 


2. 메모리

 

메모리는 CPU가 직접 접근할 수 있는 컴퓨터 내부의 기억장치이다. 참고로 하드디스크, I/O 장치들은 CPU에 직접 접근할 수 없다. 프로세스들은 메모리 상에 올라가 있다. 이때 한정된 메모리 공간에 실행중인 프로그램을 수용하려면 메모리에 대한 효율적인 관리가 필요하다. 

 

운영체제는 프로세스의 주소(아마도 PID인가?)를 통해 메모리의 어느 부분에 어떤 프로세스가 있는지 파악하고 이를 관리한다. 추가적으로 다수의 프로그램이 동시에 메모리에 올라간 경우 서로 다른 프로세스의 영역을 침범하지 않도록 보안을 유지하는 역하도 운영체제의 몫이다. 즉 각 프로세스가 자신의 메모리 영역에만 접근할 수 있는 독립적인 상태여야 한다.

 

메모리를 관리하는 방식은 대표적으로 아래 3개가 있다. 자세한 내용은 메모리 관리 포스팅에서 정리하겠다.

  • 고정분할
  • 가변분할
  • 가상메모리

 


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

 

주변장치 및 입출력 장치는 CPU, 메모리와 달리 인터럽트라는 매커니즘을 통해 관리가 이루어진다. 앞서 위에서 입출력 장치, 주변장치는 CPU에 직접 접근할 수 없다고 했다. 그래서 이들은 CPU 서비스가 필요한 경우 CPU를 할당 받기 위해 해당 장치의 컨트롤러(일종의 작은 CPU)에서 인터럽트라는 신호를 발생시켜 메인 CPU에 보고한다.

 

CPU는 자신의 일을 수행하고 있다가 I/O, 주변 장치의 인터럽트를 받으면 하던 일을 잠시 멈추고(어떤 일을 하고 있었는지 기억도 해두고) 인트럽트 요청을 처리한다. 그리고 다시 자신이 하던 일을 재개한다.

 

 

 

참고 자료

운영체제와 정보기술의 원리 - 반효경

이화여대 운영체제 강의 - 반효경