운영체제

1. 운영체제 개요

YJH3968 2021. 4. 20. 22:42
728x90

1. 운영체제의 정의

  • 운영체제 : 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어로 하드웨어를 작동시키기 위해서 반드시 필요한 기본적인 소프트웨어를 말한다.
  • 운영체제도 소프트웨어이므로 컴퓨터 시스템에서 실행되기 위해 메모리에 올라가야 하는데, 운영체제는 규모가 큰 프로그램이므로 전부 메모리에 올라갈 수 없다.
  • 그래서 항상 필요한 부분만 메모리에 올리고 그렇지 않은 부분은 필요할 때마다 메모리에 올려 사용한다. 
  • 이 때 메모리에 상주하는 운영체제의 부분을 커널(좁은 의미의 운영체제)이라고 한다. 즉, 커널은 운영체제 코드 중 핵심적인 부분을 뜻한다.
  • 이에 반해 넓은 의미의 운영체제는 커널뿐만 아니라 시스템을 위한 유틸리티들을 광범위하게 포함하는 개념이다. 파일을 복사하는 프로그램 등이 이에 해당한다. 

 

2. 운영체제의 기능

  • 운영체제의 역할은 크게 하드웨어를 위한 역할과 사용자를 위한 역할로 나눌 수 있다. 
  • 하드웨어 쪽 : 컴퓨터 시스템 내의 자원을 효율적으로 관리, 이 때문에 운영체제를 자원관리자(resource manager)라고 부르기도 한다.
  • 사용자 쪽 : 컴퓨터 시스템을 편리하게 사용할 수 있는 환경(인터페이스) 제공
  • 자원을 관리할 때 효율성과 형평성을 고려한다.
  • 운영체제는 사용자와 운영체제 자신을 보호하는 보안 역할을 담당한다. 여러 사용자의 프로그램이 하나의 컴퓨터에서 실행될 때 어떤 프로그램이 다른 프로그램의 메모리 영역을 참조하거나, 다른 사용자의 사적 파일에 접근하게 해서는 안 된다.

 

3. 운영체제의 분류

  • 동시 작업 지원 여부 : 단일작업용 운영체제와 다중작업용 운영체제로 나뉜다.
    • 최근에는 대부분의 운영체제가 다중작업을 지원한다.
    • 시분할 시스템(time sharing system) : CPU의 작업시간을 여러 프로그램들이 조금씩 나누어 쓰는 시스템.
    • 운영체제가 다중작업을 처리할 때 CPU가 하나밖에 없는 경우 CPU에서 번갈아 실행된다. 이때 이 시간 간격이 매우 짧아 마치 동시에 여러 작업이 처리되는 것처럼 보인다.
    • 다중 프로그래밍 시스템(multi-programming system) : 메모리 공간을 분할해 여러 프로그램들을 동시에 메모리에 올리고 처리하는 시스템.
    • CPU와 달리 메모리에 여러 프로그램들이 동시에 올라갈 수 있다.
    • 대화형 시스템(interactive system) : 각 프로그램에 대한 입력의 결과를 곧바로 화면에 보여주는 시스템.
    • 다중작업, 시분할, 다중 프로그래밍, 대화형 시스템 모두 여러 프로그램이 하나의 컴퓨터에서 동시에 실행된다.
    • 다중처리기 시스템(multi-processor system) : 하나의 컴퓨터 안에 CPU가 여러 개 설치된 시스템. 앞의 용어들과는 의미가 다르다는 점에 주의해야 한다.
  • 다중 사용자에 대한 동시 지원 여부 : 단일 사용자용 운영체제와 다중 사용자용 운영체제로 나뉜다.
    • 단일 사용자용 운영체제 : 한 번에 한 명의 사용자만 사용하도록 허용하는 운영체제.
    • 다중 사용자용 운영체제 : 여러 사용자가 동시에 접속해 사용할 수 있는 운영체제. 대표적으로 서버가 있다.
  • 작업 처리 방식 : 일괄처리 방식과 시분할 방식, 실시간 운영체제
    • 일괄처리(batch processing) 방식 : 요청된 작업을 일정량씩 모아서 한꺼번에 처리하는 방식. 사용자 입장에서는 응답시간이 길다는 단점이 있다. 대표적으로 초창기 컴퓨터에 사용된 펀치 카드 처리 시스템이 있다.
    • 시분할 방식 : 여러 작업 수행 시 컴퓨터의 처리 능력을 일정한 시간 단위로 분할해 사용하는 방식. 현대의 범용 컴퓨터가 대부분 사용하는 방식이다. 일괄처리 방식에 비해 짧은 응답시간을 가진다.
    • 실시간(real time) 운영체제 : 정해진 시간 안에 어떠한 일이 반드시 처리됨을 보장해야 하는 시스템에서 사용한다.  시간 제약의 중요성에 따라 경성 실시간 시스템(hard realtime system)과 연성 실시간 시스템(soft realtime system)으로 나뉜다. 경성 실시간 시스템에는 로켓, 원자로 시스템 등이 있고, 연성 실시간 시스템에는 멀티미디어 스트리밍 시스템 등이 있다.

 

4. 운영체제의 예

  • MS 윈도우 : 개인용 컴퓨터를 위한 운영체제로 편리한 인터페이스와 각종 기능들을 특징으로 한다.
  • 유닉스 : 프로그램 개발 환경을 위해 설계된 운영체제로 이식성(portability)가 좋고, 커널의 크기가 작으며, 소스 코드가 공개되었다. 대형 컴퓨터 및 전문적인 목적의 컴퓨터에 사용되었으나 리눅스의 등장으로 개인용 컴퓨터에서의 사용 규모가 늘고 있다.

 

5. 운영체제의 자원 관리 기능

  • CPU 스케쥴링 : 어떠한 프로세스에 CPU를 할당해 작업을 처리할 것인지 결정하는 일.
  • CPU 스케쥴링은 CPU를 가장 효율적으로 사용하면서 특정 프로세스가 불이익을 당하지 않도록 하는 것이다.
  • CPU 스케쥴링 기법에는 선입선출, 라운드 로빈, 우선순위 기법 등이 있다.
    • 선입선출(First Come First Served) : CPU를 사용하기 위해 도착한 프로세스들 중 먼저 온 것부터 처리하는 방식.
    • 라운드 로빈(Round Robin) : CPU를 한 번 할당받아 사용하는 시간을 제한하는 방식.
    • 우선순위(priority) : CPU 사용 대기 중인 프로세스들에게 우선순위를 부여하고 우선순위가 높은 순서대로 할당하는 방식.
  • 메모리 관리 방식에는 고정분할 방식, 가변분할 방식, 가상메모리 방식 등이 있다.
    • 고정분할(fixed partition) 방식 : 물리적 메모리를 몇 개의 분할로 미리 나누는 방식. 각 분할에는 하나의 프로그램만 들어갈 수 있고, 분할이 고정되어 있어 비효율적인 방식이다.
    • 분할의 크기보다 큰 프로그램은 적재가 불가능해지고, 분할의 크기보다 작은 프로그램을 적재할 경우 분할 내의 남는 영역인 내부조각(internal fragmentation)이 발생한다. 이는 어떠한 프로그램도 사용이 불가능한 영역으로 낭비된다.
    • 가변분할(variable partition) 방식 : 매 시점 프로그램 크기에 맞게 메모리를 분할해 사용하는 방식. 
    • 이 경우 분할의 개수와 크기가 동적으로 변하므로 기술적 관리 기법이 필요하다.
    • 내부 조각은 발생하지 않지만 외부조각(externel fragmentation)이 발생할 수 있다. 외부조각이란 프로그램이 할당되지는 않았지만 그 크기가 작아 프로그램을 올리지 못하는 메모리 영역을 말한다.
    • 가상메모리(virtual memory) 방식 : 모든 프로그램마다 가상메모리 주소를 갖게 하고 물리적 메모리에 올릴 때는 mapping을 통해 가상메모리 주소를 물리적 메모리 주소로 변환시킨 후 메모리에 올리는 방식
    • 현대의 컴퓨터 환경에서 가장 널리 사용되는 메모리 관리 방식이다.
    • 물리적 메모리보다 더 큰 프로그램이라 하더라도 현재 사용하는 부분만 메모리에 올리고 나머지는 하드디스크와 같은 보조기억장치에 저장하다가 필요하면 적재하는 방식으로 실행시킬 수 있다. 이때 사용되는 보조기억장치의 영역을 스왑 영역(swap area)이라고 한다.
    • 페이징(paging) 기법 : 프로그램을 구성하는 가상메모리 주소 공간을 페이지(page)라는 동일한 크기의 작은 단위로 나눠 물리적 메모리와 스왑 영역에 일부분씩 저장하는 기법
  • 주변장치 및 입출력 장치의 관리는 인터럽트를 통해 이루어진다.
    • 인터럽트(interrupt) : 주변장치들이 CPU의 서비스가 필요한 경우 발생시키는 신호로 CPU가 이 신호를 받으면 CPU 스케쥴링에 따라 주어진 작업을 수행하다가 멈추고 인터럽트에 의한 요청 서비스를 수행한다.
    • 인터럽트가 발생하는 예시로 사용자가 키보드의 글자를 입력하는 경우가 있다. 이는 CPU에 인터럽트를 발생시키고 CPU는 하던 일을 잠시 중단하고 사용자의 입력 데이터를 해당 프로그램에 전달하는 절차를 수행한다. 인터럽트 처리가 완료되면 CPU는 원래 하던 일을 계속한다.
    • 이때 인터럽트를 처리한 직후 원래 수행하던 작업으로 돌아오기 위해 인터럽트 처리 직전에 수행 중이던 작업의 상태를 저장해둔다.
    • 인터럽트 처리루틴 : 인터럽트가 발생했을 때 해주어야 할 작업을 정의한 프로그램 코드. 
    • 이는 운영체제 커널 안에 존재하는 코드다.
    • 컨트롤러(controller) : 주변장치들이 장치에서 일어나는 업무를 관리하기 위해 가지고 있는 작은 CPU.
    • 컨트롤러는 해당 장치에 대한 업무를 처리하고 이를 메인 CPU에 인터럽트를 발생시켜 보고하는 역할을 담당한다.
    • 예를 들어 사용자로부터 키보드에 입력이 들어오면 키보드 컨트롤러가 인터럽트를 발생시켜 CPU에 그 사실을 알린다.

 

출처 : 운영체제와 정보기술의 원리

728x90