본문 바로가기

컴퓨터 기본/운영체제

[운영체제] 103.운영체제개념 - 자원관리

운영체제의 자원관리

CPU 관리

운영체제는 스케줄링으로 CPU를 관리한다. 스케줄링에 앞서 프로세스에 대한 개념이 필요하다. 프로세스는 독립적으로 실행되는 프로그램 단위를 의미한다. 한 CPU안에 프로세스는 여러 개 존재할 수 있다. 수많은 프로세스 가운데 CPU를 할당해줄 처리순서에 대한 내용이 스케줄링이다.

스케줄링의 목표는 효율성과 형평성이다. 가장 효율적으로 CPU를 사용하면서도 특정 프로세스가 배제되는 일이 없도록 적절히 CPU를 할당해주는 것이 스케줄링의 과제이다.


스케줄링 기법

  • 선입선출(First Come First Served, FCFS)
    • 먼저 요청된 프로세스를 먼저 처리한다.
    • 앞에 있는 프로세스가 끝나야 뒤에 기다리고 있는 프로세스에 차례가 돌아온다.
  • 라운드 로빈(Round Robin)
    • 각 프로세스마다 CPU를 사용할 수 있는 시간이 제한된다.
    • 시간은 보통 밀리초 단위로 제한된다.
    • 긴 작업시간을 요구하는 프로세스라도 정해진 시간이 지나면 CPU를 반납하고 자기 차례가 올 때까지 다시 기다려야 한다.
    • 긴 시간이 요구되는 프로세스 A 뒤에 짧은 시간이 요청되는 프로세스 B가 이어 요청되더라도 B가 빠르게 처리될 수 있다.
  • 우선순위(Priority)
    • 실행할 프로세스에 우선순위를 부여해 우선순위가 높은 프로세스가 CPU를 선점한다.
    • 중요하거나 처리를 오래 기다리는 프로세스에 우선순위를 높여주는 방식으로 활용해볼 수 있다.

 

메모리 관리

프로그램이 실행되기 위해서는 메모리로부터 공간을 할당받아야 한다. 보통 메모리에 올라간다라고 표현한다. 비유하자면 내가 보유한 무기들 중에서 적절한 무기를 선택해 장착하는 것이라고 볼 수 있다. 팔은 2개니까 보유 중인 모든 무기를 장착할 수는 없다. 많이 장착하면 그만큼 대응도 느려진다. 

어쨌든 운영체제는 프로그램에 메모리가 필요한 경우 메모리를 할당해준다. 프로그램은 메모리가 필요하지 않다면 메모리를 반납한다. 운영체제 입장에서는 메모리를 회수한다. 메모리를 프로그램에 적절히 제공해 전체적으로 효율적으로 동작하도록 하는 것이 메모리 관리이다.

  • 고정분할(fixed partition)
    • 물리적 메모리를 일정한 크기로 분할해 관리한다.
    • 할당해줄 수 있는 프로그램 개수가 한정되어 있다.
    • 분할된 크기보다 큰 프로그램은 적재 불가능
    • 분할된 크기보다 작은 프로그램은 나머지 공간만큼 낭비된다
    • 이때 낭비된 공간을 내부조각(internal fragmentation)이라고 한다.
  • 가변분할(variable partition)
    • 프로그램의 크기에 따라 메모리를 분할해 사용하는 방식
    • 분할공간 외부에 낭비된 공간이 생기는데 외부조각(external fragmentation)이라고 한다.
    • 외부조각 예시는 다음과 같다.
      • 크기 100 짜리 프로그램 A가 실행된다.
      • 메모리에 100 만큼 공간이 할당된다.
      • 이어서 크기 50 짜리 프로그램 B가 실행된다.
      • A가 사용하는 메모리 100 옆에 B를 위한 50 만큼 공간이 할당된다.
      • A가 종료되고 뒤이어 크기 70짜리 프로그램 C가 실행된다. 
      • C는 A가 사용하던 100 영역을 사용한다. 남은 공간은 30이다.
      • 이어서 크기 40짜리 프로그램 D가 요청된다.
      • 남은 공간 30은 D가 사용하기에 부족하다.
      • 30은 버려지고 D는 새로 공간을 할당받는다.
      • 30 만큼 메모리자원 낭비

 

  • 가상메모리(virtual memory)
    • 물리적 메모리보다 큰 프로그램을 실행할 수 있다. 
    • 전체 프로그램 중에 필요한 부분 혹은 사용되는 부분만 메모리에 올리고 나머지는 보조기억장치에 저장해두면 메모리보다 규모가 큰 프로그램이라도 실행 가능하다.
    • 무작정 규모가 큰 프로그램을 모두 실행할 수 있는 것은 아니고 가상메모리의 크기에 따라 실행가능한 프로그램의 크기가 결정된다. 

      각 프로그램은 자체적인 가상메모리 주소를 가진다. 운영체제는 이 가상메모리의 주소를 물리적 메모리 주소로 변환해 메모리에 올리는 방식으로 프로그램을 실행하게 된다.