OS 기본

Categories: Tags:


서론

참조

[OS] 운영체제의 정리 #1
1. 운영체제와 커널이란?
운영체제를 이해하기 위해 필요한 기본 개념들
운영체제의 유형

운영체제란?

사용자가 응용프로그램을 사용할 수 있는 기반 환경을 제공하여 컴퓨터를 편리하게 사용할 수 있도록 도와주고, 하드웨어를 효율적으로 사용할 수 있도록 다양한 기능을 제공하는 소프트웨어이다. 조금 더 파자면 자원 관리자(resource Manager)라고 할 수 있다. 물리적인 자원(CPU, DRAM, Flash, Network)을 가상화 시켜서 더 효율적으로 자원을 관리 할 수 있도록 해주는 시스템이다.

운영체제의 목적

운영체제는 아래와 같은 목적을 가지고, 이것은 운영체제의 성능을 평가하는 기준이 된다.

  1. 처리량(Throughput)
    일정시간 내에 시스템이 처리하는 일의 양
  2. 지연, 응답시간(Trun Around Time)
    시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
  3. 사용 가능도(Availability)
    시스템을 사용할 필요가 있을 때 즉시 사용할 수 있는 정도
  4. 신뢰도(Reliability)
    시스템이 주어진 문제를 정확하게 해결하는 정도

운영체제의 기능

결과적으로 운영체제의 핵심은 자원을 어떻게 효율적으로 관리할 것인가이다. 이를 자원관리 기능이라고 한다. (그 외 기타기능으로는 시스템보호, 네트워킹, 명령해석기와시스템관리 등이 있다.)

CPU 스케줄링

  1. 선입선출(First Come First Served)
    먼저 CPU에 도착한 프로세스를 먼저 처리해주는 방식, 먼저 CPU를 요청한 프로세스가 작업이 끝날 때까지 다른 프로세스들은 작업을 할 수 없다. 이 방법은 CPU는 효율적으로 계속 작업은 할 수 있으나 전체적인 프로세스를 처리하는 면에서는 비효율적인 방법이다.
  2. 라운드 로빈(Round Robin)
    선입선출의 방법을 보완하고자 나온 방법 스케줄링 기법. 이 기법에서는 CPU를 한 번 할당받아 사용할 수 있는 시간을 일정한 고정된 시간으로 제한한다. 긴 작업이 필요한 프로세스가 CPU를 받더라도 정해진 시간이 지나면 CPU를 내어놓고 다시 큐의 마지막으로 들어가서 기다려야 한다. 이렇게 되면 뒤의 프로세스들이 무작정 오래 기다려야 하는 상황은 막을 수 있다.
  3. 우선순위(Priority)
    이 기법은 수행 대기 중인 프로세스들에게 프로그램에 따라 우선순위를 부여하고 우선순위가 높은 프로세스에게 CPU를 먼저 할당하는 방법이다. 또한 지나치게 오래 기다리는 프로세스가 발생하지 않도록, 기다린 시간이 늘어날수록 우선순위를 점차 높여주는 방안도 사용할 수 있다.

메모리 관리

  1. 고정 분할(fixed partion)
    물리적 메모리를 몇 개의 영구적인 분할로 나눈다. 나뉜 각각의 분할에는 하나의 프로그램이 적재된다. 이 방식은 단순해서 분할의 크기보다 큰 프로그램은 적재할 수 없다. 이렇기 때문에 메모리의 효율적인 사용 측면에서도 바람직하지 않다.
  2. 가변 분할(variable partion)
    매 시점 프로그램의 크기에 맞게 메모리를 분할해서 사용하는 방식이다. 따라서 큰 프로그램의 실행이 제한되는 문제는 발생하지 않는다. 그러나 물리적 메모리 크기보다 더 큰 프로그램의 실행은 여전히 불가능하다.
  3. 가상 메모리(virtual memory)
    최근에 거의 모든 컴퓨터 시스템에서 사용하는 메모리 관리 기법이다. 가상 메모리 기법에서는 물리적 메모리보다 더 큰 프로그램이 실행되는 것을 지원한다. 이때 실행될 수 있는 프로그램의 크기는 가상 메모리의 크기에 의해 결정된다. 운영체제는 물리적인 주소와 가상 메모리에 주소를 매핑하여 관리한다. 실제 이렇게 가상 메모리를 할당할 수 있게 하는 것은 실행되지 않는 부분의 프로그램은 보조 디스크에 두었다가 필요할 때 메모리에 적재하는 방식이다. 이때 그리고 보조 기억장치에서 사용되는 부분을 스왑 영역이라고 한다.

주변 장치 및 입출력 장치

CPU나 메모리와 달리 인터럽트라는 메커니즘을 통해 관리한다. 주변 장치들은 CPU의 서비스가 필요한 경우에 신호를 발생시켜서 서비스를 요청하게 되는데 이때 발생시키는 신호를 인터럽트라고 한다. CPU는 평소에 CPU 스케줄링에 따라 작업을 수행하고 있다가 인터럽트가 발생하면 하던 일을 잠시 멈추고 인터럽트에 의한 요청 서비스를 수행한다.
주변 장치들은 장치마다 그 장치에서 일어나는 업무에 대한 관리를 위한 일종의 작은 CPU를 가진다. 이를 컨트롤러라고 하는데 이것을 바탕으로 무언가 입력이 되면 CPU에게 인터럽트를 발생시켜 보고하는 역할을 한다. 그러면 CPU는 하던 일을 잠시 멈추고 인터럽트에 대한 처리를 하기 위해 운영체제로 할당이 넘어간다.

운영체제의 유형

  1. 일괄처리 시스템(batch processing system)
    한 번에 한작업씩 순서대로 처리하는 시스템이다.
  2. 다중 프로그래밍 시스템(multiprogramming system)
    운영체제가 여러 작업을 메모리에 적재한 후 CPU를 나눠쓰게 하는 시스템이다. 한 프로세스가 입출력을 실행하는 동안 다른 프로세스에 CPU를 할당하여 실행시킬 수 있다. 다중프로그래밍에서는 CPU가 항상 할 일이 있다.
  3. 시분할 시스템(time sharing system)
    다중프로그래밍을 논리적으로 확장한 개념, 프로세스 스케줄링과 다중 프로그래밍을 사용해 각 사용자에게 컴퓨터의 CPU를 시간적으로 분할하여 나눠준다. 사용자가 혼자 컴퓨터를 사용하는 것과 같은 효과를 준다.
  4. 다중 처리 시스템(multiprocessing system)
    병렬처리 시스템이라고도 한다. 여러 개의 프로세서를 이용해 신뢰성, 가용성, 컴퓨터 능력 향상 등의 목적을 달성한다.
  5. 실시간 처리 시스템(real time processing system)
    실시간 시스템이란 한정된 시간 제약조건 상에서 작업을 처리해야 하는 시스템이다. 이 시스템은 시간 제한성이 중요하다.
  6. 분산 처리 시스템(distributed processing system)
    시스템마다 운영체제와 메모리를 가지고 독립적으로 운영되며 필요할 때 통신하는 시스템, 최근에는 자원공유, 연산 속도 향상, 신뢰성과 통신 때문에 여러 개의 물리적 프로세서에 연산을 분산하는 경향이 있다.

OS내 다른 글 보기

댓글남기기