ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [운영 체제] 운영 체제의 자원 관리 기능
    Operating System. 2020. 6. 15. 00:25
    반응형

    운영 체제의 자원 관리 기능

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

     

    자원은 소프트웨어 자원, 하드웨어 자원으로 나뉜다.

     

    하드웨어 자원

    CPU , 메모리를 비롯한 주변 장치 및 입출력 장치.

    CPU는 통상적으로 컴퓨터 한 대에 하나가 장착되기 때문에 여러 프로세스들이 CPU를 효율적으로 나누어 사용할 수 있도록 관리되어야 함.

    메모리 또한 시스템 내에 한정된 공간이 존재하기 때문에 서로 다른 다수의 프로세스들이 나누어 쓸 수 있도록 해야 함.

    주변 장치도 마찬가지로, 운영 체제의 관리가 필요하다.

    CPU와 메모리는 전원이 꺼지면 처리 중이던 정보가 모두 사라지기 때문에 전원이 꺼지더라 기억해야 하는 부분은 주변 장치 중 한 종류인 보조 기억 장치에 파일 형태로 저장됨.

    이러한 파일들이 저장되는 방식 및 접근 권한 등에 대해서도 운영 체제가 관리를 해주어야 함.

    입출력 장치인 키보드, 모니터, 하드디스크 등도 운영체제가 관리해줘야 할 대상으로 포함된다.

     

    CPU를 관리하는 방법

    일반적인 컴퓨터에는 CPU가 하나밖에 없지만 프로세스는 여러 개가 동시에 실행됨.

    그러므로 매 시점 어떠한 프로세스에게 CPU를 할당해 작업을 처리할 것인지를 결정하는 일이 필요함.

    이러한 일을 CPU 스케줄링이라고 부른다.

    CPU 스케줄링의 목표는 CPU를 가장 효율적으로 사용하면서도, 특정 프로세스가 불이익을 당하지 않도록 하는 것을 의미한다.

    대표적인 CPU 스케줄링 기법으로 선입선출(FCFS : First Come First Served), 라운드 로빈(Round Robin), 우선순위(priority) 기법이 있다.

     

    - 선입 선출 기법

    CPU를 사용하기 위해 도착한 프로세스를 먼저 처리해 주는 방식을 말함.

    CPU를 필요로 하는 프로세스가 여럿 존재할 때에 먼저 CPU를 요청한 프로세스가 원하는 작업을 완료할 때까지 다른 프로세스들이 CPU를 사용하지 못하게 됨.

    이 방식을 사용할 경우, CPU 자체의 효율적인 사용 측면에서는 문제가 없겠지만, 전체 시스템 입장에서는 비효율 적인 결과를 초래할 가능성이 있다. 장시간 CPU를 사용해야 하는 프로세스가 먼저 도착하고, 짧은 시간 동안 CPU를 사용하면 작업을 완료할 수 있는 프로세스들이 나중에 도착한 경우를 생각하였을 때, 짧은 수행 시간을 가진 프로세스들은 선행 프로세스가 작업을 마칠 때까지 자이간 기다려야 하는 경우가 발생한다. 

    이러한 선입선출 기법의 단점을 보완시킨 기법이 라운드 로빈 기법이다.

     

    - 라운드 로빈 기법

    라운드 로빈 기법에서는 CPU를 한 번 할당받아 사용할 수 있는 시간을 일정한 고정된 시간으로 제한을 둔다.

    이로써, 긴 작업을 요구하는 프로세스가 CPU를 먼저 할당받더라도, 정해진 시간이 지나고 나면, CPU를 내어놓고 CPU의 서비스를 기다리는 줄의 제일 뒤에 가서 기다려야 한다. 그러므로 라운드 로빈 스케줄링에서는 적어도 긴 작업을 수행하는 프로세스 때문에, 짧은 작업을 가진 프로세스들이 무작정 오래 기다려야 하는 상황을 면할 수 있다.

    그렇다면 1회 사용할 수 있는 할당 시간을 얼마로 할 것인가? 일반적인 할당 시간 설정은 수 밀리 세컨드(ms) 정도의 단위를 사용한다.

    그러면 100명의 사용자가 동시에 접속할 때에도 1초 이하의 응답 시간을 보장받을 수 있게 된다.

     

    - 우선순위 스케줄링

    우선순위 스케줄링에서는 수행 대기 중인 프로세들을 에게 우선순위를 부여하고, 우선순위가 높은 프로세스에게 CPU를 먼저 할당하게 된다.

    시스템 내의 프로세스 중에는 상대적으로 더 중요한 프로세스가 있을 수 있음.

    그런 프로세스에게 우선순위를 높게 하여 CPU를 먼저 획들 할 수 있게 하는 것이 우선순위 스케줄링의 철학이라 할 수 있다.

     

    운영 체제의 관리 대상 메모리.

     

    메모리는 CPU가 직접 접근할 수 있는 컴퓨터 내부의 기억 장치.

    프로그램이 CPU에서 수행되려면 해당 부분이 메모리에 올라가 있어야 함.

    한정된 메모리 공간에 여러 프로그램을 수용시키려면, 메모리에 대한 효율적인 관리 메커니즘이 필요함.

     

    메모리 관리

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

    운영 체제는 프로그램에게 메모리가 필요할 때 할당하고, 필요하지 않게 될 때 회수함.

    어떠한 경우에는 메모리를 조금만 더 할 당해주면 굉장히 빨리 수행할 수도 있고, 때로는 불필요하게 메모리를 요청해 자원을 낭비하는 경우가 발생하기도 함.

    따라서 운영 체제는 이를 잘 판단하여, 전체 메모리 공간이 효율적으로 사용될 수 있도록 해야 함.

    다수의 사용자 프로그램이 동시에 메모리에 올라간 경우 서로 다른 프로세스의 영역을 침범하지 않도록 보안을 유지하는 역할도 운영 체제의 몫.

    즉, 운영 체제는 각 프로세스가 자신의 메모리 영역만을 접근할 수 있도록 관리해야 한다.

     

    물리적 메모리 관리 방식

    고정 분할 방식, 가변 분할 방식, 가상 메모리 방식이 있음.

     o 고정 분할 방식

    물리적 메모리를 몇 개의 영구적인 분할로 나눔.

    나뉜 가각의 분할에는 하나의 프로그램이 적대됨.

    고정 분할 방식은 융통성이 없는 단점이 있음. 이는 동시에 메모리에 적대되는 최대 프로그램의 수가 분할 개수로 한정되기 때문이다. 분할의 크기보다 큰 프로그램은 적재가 불가능함.

    메모리의 효율적인 사용 측면으로 보았을 때 적절치 않음.

    분할이 고정적이기 때문에 분할의 크기보다 작은 프로그램이 적재되는 경우 남는 영역이 발생하게 됨.

    이것을 내부 조각이라고 한다.

    내부 조각은 분할 영역에 올라온 프로그램에 의해서도 사용되지 않고, 다른 프로세스에게도 할당될 수 없으므로 비효율적으로 낭비되는 공간을 의미한다.

     

     가변 분할 방식

    매시점 프로그램의 크기에 맞게 메모리를 분할하여 사용하는 방식을 말함.

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

    그러나 물리적 메모리 크기보다 더 큰 프로그램의 실행은 여전히 불가능함.

    분할의 크기, 개수가 동적으로 변하므로 기술적 관리 기법이 필요함.

    고정 분할 방식에서 발생하는 내부 조각은 발생하지 않지만 외부족이 발생할 수 있다.

    외부 조각은 프로그램에 할당되지 않은 메모리 영역이지만 그 크기가 작아 프로그램을 올리지 못하는 메모리 영역을 뜻함.

    외부 조각 역시 내부 조각처럼 낭비된 메모리 자원.

     

    가상 메모리 기법

    최근 모둠 컴퓨터 시스템에서 사용하는 메모리 관리기법.

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

    실행될 수 있는 프로그램의 크기는 가상 메모리 크기에 의해 결정됨.

    ex) 물리적 메모리가 10 Mbyte라 하더라도, 20 Mbyte의 프로그램을 실행할 수 있음

    2배의 해당하는 이경우를, 어떠한 원리로 실행시키는가 하면, 프로그램의 크기가 20 Mbyte라 하더라도 전체가 항상 동시에 사용되는 것이 아니다. 예를 들어 현재 사용되고 있는 부분만 메모리에 10 Mbyte를 올려두고 나머지는 하드 디스크와 같은 보조 기억장치에 저장해 두었다가 필요할 때 적재하는 방식을 취하는 것이다. 이때 사용되는 보조 기억 장치의 영역을 우리는 스왑 영역이라고 부른다.

    프로그램을 구성하는 주소 공간은 페이지라는 동일한 크기의 작은 단위로 나뉘어 물리적 메모리와 스왑 영역에 일부분씩 저장되는 것이다. 이렇게 동일한 단위로 메모리를 나누는 기법을 페이징 기법이라고 부른다.

     

    주변 장치 및 입출력 장치 관리와 인터럽트(Interrupt) 서비스

    CPU나 메모리와 달리 인터럽트(Inter-rupt)라는 메커니즘을 통하여 관리됨.

    주변 장치들은 CPU의 서비스가 필요한 경우에 신호를 발생시켜 서비스를 요청하게 되는데, 이때 발생시키는 신호를

    인터럽트라고 한다.

    CPU는 평소에 스케줄링에 따라 자신에게 주어진 작업을 수행 중, 인터럽트가 발생되면 잠시 일을 멈추고 인터럽트에 의한 요청 서비스를 수행하게 되는 것이다.

    인터럽트 발생 ex) 어떠한 사람이 키보드를 입력함, 키보드는 CPU에게 인터럽트를 발생시킴으로써 알려줌. 그러면 CPU는 하던 작업을 멈추고 인터럽트로 인하여 처리해야 할 작업을 수행.

    인터럽트 서비스를 완료한 후 원래 하던 일을 계속 수행.

    운영 체제는 인터럽트 서비스를 완료한 후에 이전에 수행하던 작업으로 돌아오기 위하여, 인터럽트 처리 직전에 수행하던 작업의 상태를 저장해 둔다.

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

    인터럽트 처리 루틴이란 인터럽트가 발생했을 때 해주어야 할 작업을 정의한 프로그램 코드를 말함.

    운영 체제 커널 내에 존재하는 코드로 CPU 스케줄링, 메모리 관리 루틴 등 다양한 기능을 위한 커널 코드 중 일부분이라 할 수 있다.

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

     

     

     

     

    반응형

    댓글

Designed by Tistory.