본문 바로가기

CS/운영체제

[운영체제] 02. 운영체제의 소개

01. 운영체제의 개념과 발전 목적

1. 운영체제의 개념

운영체제는 사용자가 하드웨어에 접근할 수 있는 유일한 수단이다. 

운영체제는 사용자가 응용 프로그램을 실행할 수 있는 기반 환경을 제공하여 컴퓨터를 편리하게 사용할 수 있도록 도와주고, 하드웨어를 효율적으로 사용할 수 있도록 다양한 기능을 제공하는 소프트웨어이다.

컴퓨터 시스템의 구성 요소

  • 사용자
  • 소프트웨어
    • 시스템 소프트웨어 : 컴퓨터 자원을 관리하고 응용 프로그램의 실행을 지원해 컴퓨터를 제어하는 프로그램.
    • 유틸리티 : 컴퓨터의 여러 처리 과정을 보조해 시스템을 유지하고 성능을 개선하는 프로그램. 예를 들어, 디스크 조각모음, 화면 보호기 등.
    • 응용 프로그램 : 특정 작업을 수행하려는 목적, 즉 어떤 문제를 해결하려고 사용자나 전문가가 만든 프로그램.
  • 하드웨어

운영체제의 역할

  • 조정자
  • 자원 할당자나 관리자
  • 응용 프로그램과 입출력장치 제어자

운영체제의 정의

운영체제는 사용자와 하드웨어 사이의 중간 매개체로 응용 프로그램의 실행을 제어하고, 자원을 할당 및 관리하며, 입출력 제어 및 데이터 관리와 같은 서비스를 제공하는 소프트웨어로 정의한다.

  • 하드웨어 및 사용자, 응용 프로그램, 시스템 프로그램 사이에서 인터페이스를 제공한다.
  • 프로세서, 메모리, 입출력장치, 통신장치 등 컴퓨터 자원을 효과적으로 활용하려고 조정, 관리한다.
  • 응용 프로그램을 제어한다.
  • 컴퓨터 시스템을 보호하기 위해서 입출력을 제어하고 데이터를 관리한다.

커널

커널은 시스템 콜, 인터럽트 및 예외에 응답하는 운영체제의 핵심 구성 요소로, 운영체제를 메모리에 적재할 때 제일 먼저 적재하고 운영체제가 종료될 때까지 메모리에 머문다. 그러므로 커널은 가능한 작게 구현하는 것이 좋다.


2. 운영체제의 발전 목적

  • 편리성 : 사용자에게 편리한 환경 제공
  • 효율성 : 시스템 성능 향상
    • 시스템 성능을 평가하는 기준
      1. 처리량 : 단위시간당 처리하는 작업량.
      2. 지연, 응답시간(turn around time) : 사용자가 시스템에 작업을 의뢰한 후 반응을 얻을 때까지 거린 시간.
      3. 신뢰도 : 하드웨어, 소프트웨어가 실패 없이 주어진 기능을 수행할 수 있는 능력.
      4. 사용 가능도 : 사용자가 일정 기간 동안 컴퓨터를 실제로 사용한 시간(비율).
  • 제어 서비스 향상

02. 운영체제의 기능

1. 자원 관리

컴퓨터 시스템의 메모리, 프로레스, 장치, 파일 등 구성 요소를 자원이라고 하는데, 운영체제는 이 자원을 관리한다.

1) 메모리 관리

  • 메인 메모리 관리
    • 메모리의 어느 부분을 사용하고, 누가 사용하는지 점검.
    • 메모리에 저장할 프로세스를 결정.
    • 메모리를 할당하고 회수하는 방법 결정.
  • 보조기억장치 관리
    • 빈 여유 공간 관리.
    • 새로운 파일을 작성할 때 저장 장소 할당.
    • 메모리 접근 요청을 스케줄링.
    • 파일을 생성하고 삭제.

2) 프로세스 관리

프로세스는 실행 중인 프로그램으로 보통 일괄 처리 작업 하나가 프로세스가 된다.

 

운영체제는 다음 세부 기능을 수행해 프로세스를 관리한다.

  • 프로세스와 스레드를 스케줄링한다.
  • 사용자 프로세스와 시스템 프로세스를 생성하고 제거한다.
  • 프로세스를 중지하고 재수행한다.
  • 프로세스 동기화 방법을 제공한다.
  • 프로세스 통신 방법을 제공한다.
  • 교착 상태(deadlock)를 방지하는 방법을 제공한다.

3) 주변장치(입출력장치) 관리

운영체제는 특수 프로그램인 장치 드라이브를 사용해 입출력장치와 상호작용한다. 장치 드라이버는 특정 하드웨어와 통신할 수 있는 인터페이스를 제공하므로 특정 하드웨어에 종속된 프로그램이다.

 

운영체제는 다음 세부 기능을 수행해 주변장치를 관리한다.

  • 임시 저장(buffer-caching) 시스템 기능을 제공한다.
  • 일반 장치용 드라이버 인터페이스를 제공한다.
  • 특정 장치 드라이버를 제공한다.

4) 파일(데이터) 관리

  • 파일을 생성하고 삭제한다.
  • 디렉터리를 생성하고 삭제한다.
  • 보조기억장치에 있는 파일을 맵핑한다.
  • 안전한(비휘발성) 저장장치에 파일을 저장한다.

2. 시스템 관리

1) 시스템 보호(사용자 권한 부여)

보호는 컴퓨터 자원에서 프로그램, 프로세스, 사용자의 접근을 제어하는 방법이다. 운영체제는 파일 사용 권한 부여, 데이터 암호화 등 서비스를 제공해 데이터와 시스템을 보안한다.

2) 네트워킹(통신)

프로세서가 통신을 할 때는 경로 설정, 접속 정책, 충돌, 보안 등 문제를 고려해야 하는데, 이를 운영체제가 관리한다.

3) 명령 해석기(command interpreter)

사용자나 프로그램에서 대화형으로 입력한 명령어를 이해하고 실행하는 사용자와 운영체제의 인터페이스이다.


03. 운영체제의 발전 과정과 유형

1. 운영체제의 발전 과정

1) 1940년대 : 운영체제 없음(작업별 순차 처리)

2) 1950년대 : 일괄 처리 시스템(batch process system)

초기 운영체제인 일괄 처리 시스템은 작업을 올리는 시간과 해제하는 시간 낭비를 줄이는 데 관심을 두었다. 그래서 데이터가 발생할 때마다 즉시 처리하지 않고 일정 기간 또는 일정량이 될 때까지 모아 두었다가 한꺼번에 처리해 작업 준비 시간을 줄였다. 이를 위해 일괄 처리, 버퍼링 스풀링 등 방법을 도입했다.

 

일괄 처리의 장점

  • 많은 사용자와 프로그램이 컴퓨터 자원을 공유할 수 있다.
  • 컴퓨터 사원을 덜 사용 중일 때는 작업 처리 시간을 교대할 수 있다.
  • 시시각각 수동으로 개입하고 감독하여 컴퓨터 자원의 유휴를 피할 수 있다.

일괄 처리의 단점

  • 준비 작업들의 유형이 동일해야 한다.
  • 입출력장치가 프로세서보다 느려 프로세서가 종종 유휴 상태가 된다.
  • 작업의 우선순위를 주기 어렵다.

버퍼링

버퍼링은 프로세서와 입출력장치의 속도 차이로 생긴 유휴시간이 없도록 입출력장치별로 입출력 버퍼를 두어, 프로세서에서 연산을 할 때 동시에 다른 작업을 입출력하는 아주 간단한 방법이다.

버퍼 : 프로세서가 어떤 작업을 처리하는 동안 다음으로 처리할(또는 출력할) 작업을 미리 읽어 저장해 두는 메모리

스풀링(spooling, simultaneous peripheral operation on-line)

스풀링은 속도가 빠른 디스크를 버퍼처럼 사용하여 입출력장치에서 미리 읽는 것이다. 버퍼링이 컴퓨터 하드웨어의 일부인 버퍼를 사용한다면, 스풀링은 별개의 오프라인 장치를 사용한다는 점이 다르다. 버퍼링이 하나의 입출력 작업과 그 작업의 계산만 함께 할 수 있는 반면, 스풀링은 여러 작업의 입출력과 계산을 함께 할 수 있다.

오프라인 장치 : 컴퓨터 시스템과 직접 연결되어 있지 않아서 중앙 처리 장치의 제어 장치로부터 직접적인 통제를 받지 않는 보조 장치나 입출력 장치.

3) 1960년대 : 다중 프로그래밍, 시분할, 다중 처리, 실시간 시스템

이 시기 운영체제의 특징은 장치 독립성을 이용한 편리한 하드웨어 관리와 다중 프로그래밍, 시분할, 다중 처리, 실시간을 이용한 시스템의 처리 능력 향상이다.

  • 다중 프로그래밍 시스템 : 여러 프로그램을 메모리에 나눠 적재한 후 프로세서를 번갈아 할당하여 프로세서의 사용을 극대화하면서 여러 프로그램을 동시에 실행한다.
  • 시분할 시스템 : 다중 프로그래밍 시스템에 프로세서 스케줄링이라는 개념을 더한 것이다. 일정한 프로세서 사용 기간을 할당하여 빠른 응답이 가능하다.
  • 다중 처리 시스템 : 하나의 시스템에서 프로세서를 여러 개 사용하여 처리 능력을 높인 것이다.
  • 실시간 처리 시스템 : 즉시 응답한다는 특징이 있다.
장치 독립성 : 프로그램을 다른 입출력장치와 함께 실행할 수 있는 것이 장치 독립성의 개념이다.

4) 1970년대 초반 : 다중 모드, 범용 시스템

모든 사용자에게 모든 기능을 제공할 수 있도록 범용 시스템으로 설계했다. 

일괄 처리, 시분할 처리, 실시간 처리, 다중 처리를 모두 제공하는 다중 모드 시스템도 등장했다.

5) 1970년대 중반~1990년대 : 분산 처리 시스템, 병렬 계산과 분산 계산

컴퓨터 네트워크와 온라인 처리 방법을 널리 사용했다. 네트워크를 이용해 멀리 떨어진 컴퓨터를 사용할 수 있고, 마이크로프로세서가 등장해 개인용 컴퓨터를 가질 수 있게 되었다.

6) 2000년대 이후 : 모바일 및 임베디드, 가상화 및 클라우드 컴퓨팅

가상화 기술이 본격적으로 확산되었다. 가상화는 물리적 자원을 추상화하여 논리적 자원 형태로 표현하는 기술이다.

서버 가상화는 물리적 서버 하나에 가상 서버를 여러 개 구성하는 방법이다. 서버 하나에서 각 응용 프로그램과 운영체제를 독립된 환경으로 사용할 수 있어 여러 운영체제가 한 시스템의 자원을 공유할 수 있다.

가상화 방법에 따라 호스트 운영체제에서 가상 머신을 구동하는 호스트 기반 가상화호스트 운영체제 설치 전에 가상화 솔루션을 탑재해 가상의 CPU, 메모리, 디스크, 네트워크 카드 등을 생성하는 베어메탈(bare-metal)기반 가상화로 분류할 수 있다.

  • 호스트 기반 가상화 : 설치가 쉽고 구성이 편리하다. 성능이 떨어질 수 있다.
  • 베어메탈 기반 가상화 : 향상된 성능을 제공하고 실시간 운영체제를 지원할 수 있다. 운영체제 위에 없기 때문에 디바이스용 드라이버, 하드웨어 플랫폼 드라이버 등을 포함해야 하고 설치와 구성이 어렵다.

하이퍼바이저(hpyervisor) : 프로세서나 메모리와 같은 다양한 컴퓨터 자원에 서로 다른 각종 운영체제의 접근 방법을 통제하는 얇은 계층의 소프트웨어.

서버 가상화 기술을 이용해 사용자에게 컴퓨팅 자원, 스토리지, 소프트웨어 등을 서비스 형태로 제공하는 클라우드 컴퓨팅이 등장했다. 클라우드 컴퓨팅은 그리드 컴퓨팅, 유틸리티 컴퓨팅, 서버 기반 컴퓨팅의 특징을 조금씩 차용한 개념이다. 즉 그리드 컴퓨팅의 분산 컴퓨팅 개념, 유틸리티 컴퓨팅의 과금 모델, 서버 기반 컴퓨팅의 처리 모델을 적용해 다음 세가지 특징을 보인다.

  • 클라우드 데이터 센터에서 원하는 만큼 컴퓨터 자원을 무한대로 사용할 수 있다.
  • 컴퓨터 자원을 원할 때 원하는 만큼 늘리거나 줄일 수 있다.
  • 컴퓨터 자원을 사용한 만큼 사용료를 지불한다.

클라우드 컴퓨팅 기술을 이용한 서비스는 크게 IaaS(Infrastructure as a Service), PaaS(Platform as a Service), SaaS(Software as a Service)로 분류할 수 있다.

  • IaaS : 데이터 센터에 있는 서버, 스토리지, 네트워크 등 인프라나 자원을 가상화하여 인터넷으로 제공한다. 예로 아마존 EC2(Elastic Cloud Computing)와 S3(Simple Storage Service)가 있다. EC2는 개인 가상 인스턴스를 생성, 관리, 실행하는 서비스이고, S3은 데이터를 저장하는 개인 스토리지 제공 서비스이다.
  • PaaS : 응용 프로그램의 구축, 테스트 및 설치가 가능한 통합 개발 환경을 웹으로 제공한다. 구글, 다음, 네이버에서 제공하는 Open API가 PaaS의 일종이다.
  • SaaS : 특정 소프트웨어를 인터넷으로 제공한다. 해당 소프트웨어와 관련된 데이터를 클라우드에서 관리하고, 사용자는 웹 브라우저로 접속해 소프트웨어를 사용한다. 이런 소프트웨어를 온디맨드(on demand) 소프트웨어라고 한다.

2. 운영체제의 유형

1) 다중 프로그래밍 시스템

일괄 처리 시스템의 가장 큰 문제는 프로세스가 다른 작업을 하고 있을 때는 입출력 작업이 불가능해 프로세서와 메인 메모리의 활용도가 떨어진다는 것이다. 이것을 다중 프로그래밍을 도입해 해결했다.

다중 프로그래밍은 프로세서가 유휴 상태일 때 실행 중인 둘 이상의 작업이 프로세서를 전환(인터리빙)하여 사용할 수 있도록 동작한다. 즉, 여러 프로그램을 메모리에 적재한 후 하나의 프로그램이 프로세서를 사용하다가 입출력 동작 등을 하여 프로세서를 사용하지 않는 유휴 시간(idle time)동안 다른 프로그램이 프로세서를 사용하도록 하는 시스템이다. 프로세서의 유휴시간에도 다른 프로그램을 처리해 동시에 여러 프로그램을 실행하는 것과 같은 효과를 내어 프로세서 효율을 극대화한다.

다중 프로그래밍 운영체제는 아주 복잡하다. 여러 작업이 수행할 준비를 갖추고 있으면, 이중 하나를 선택하는 결정 방법이 필요하다. 이것이 바로 인터럽트를 이용해 수행하는 프로세서 스케쥴링이다.

2) 시분할 시스템(TSS, Time Sharing System)

시분할 시스템은 다중 프로그래밍을 논리적으로 확장한 개념으로, 프로세서가 다중 작업을 교대로 수행한다. 다수의 사용자가 동시에 컴퓨터의 자원을 공유할 수 있는 기술이다. 프로세서에 적재된 여러 프로그램을 교대로 실행하지만, 각 프로그램에 일정한 프로세서 사용 시간(time slice) 또는 규정 시간량(quantum)을 할당해 사용자가 주어진 시간 동안 컴퓨터와 대화하는 형식으로 실행한다. 여러 사용자에게 짧은 간격으로 프로세서를 번갈아 가며 할당해서 마치 자기 혼자 프로세서를 독점하고 있는 양 착각하게 해 여러 사용자가 단일 컴퓨터 시스템을 동시에 사용할 수 있게 한다.

다중 프로그래밍 시스템이 프로세서 사용을 최대화하는 것이 목표라면, 시분할 시스템은 응답시간을 최소화하는 것이 목표라는 큰 차이가 있다.

  • 장점 : 빠른 응답 제공, 소프트웨어의 중복 회피 가능, 프로세서 유휴시간 감소
  • 단점 : 신뢰성 문제, 보안 의문 및 프로그램과 데이터의 무결성, 데이터 통신의 문제

3) 다중 처리 시스템(multiprocessing system)

단일 컴퓨터 시스템 내에서 둘 이상의 프로세서를 사용해 동시에 둘 이상의 프로세스(프로그램)를 지원한다. 하나의 프로세서가 2개 이상의 프로그램을 전환하는 다중 프로그래밍과 혼동해서는 안 된다.

4) 실시간 처리 시스템(real time processing system)

실시간 처리 시스템은 높은 적시 응답을 요구하는 장소에서 사용하거나 데이터 흐름 또는 프로세서 연산에 엄격한 시간 요구가 있을 때 사용한다.

  • 경성 실시간 처리 시스템(hard real time) : 작업의 실행 시작이나 완료에 대한 시간 제약 조건을 지키지 못할 때 시스템에 치명적인 영향을 주는 시스템. ex) 무기 제어, 철도 자동 제어, 미사일 자동 조준 등
  • 연성 실시간 처리 시스템(soft real time) : 작업의 실행에서 시간 제약 조건은 있으나, 이를 지키지 못해도 전체 시스템에 치명적인 영향을 미치지 않는 시스템.

5) 분산 처리 시스템(distributed processing system)

분산 처리 시스템은 시스템마다 독립적인 운영체제와 메모리로 운영하며, 필요할 때 통신하는 시스템이다.


04. 운영체제의 서비스

1. 부팅 서비스

운영체제를 메인 메모리에 적재하는 과정을 부팅 또는 부트스래핑이라고 한다. 부트 로더는 부트스트랩 로더를 줄인 말로, 하드디스크와 같은 보조기억장치에 저장된 운영체제를 메인 메모리에 적재하는 ROM에 고정시킨 소규모 프로그램이다. 초기 운영체제는 하드웨어를 초기화하지 않고, 컴퓨터를 작동시켰다. 하지만 메모리의 효율적인 활용 등에 관심을 가지면서 전체적인 초기화뿐만 아니라, 일시적인 하드웨어 오류로 활동중인 작업이 손실되지 않도록 복구하거나 회복하는 방법과 비정상적인 작업을 처리하는 부분적인 초기화가 포함되었다.

초기화의 목적으로는 시스템 장치 초기화, 시간 설정, 명령 해석기 적재와 준비 등이 있다. 이중 시스템 장치의 초기화는 디렉터리, 파일 등을 점검하고, 시스템 버퍼와 인터럽트 벡터를 초기화하며, 운영체제의 루틴 대부분을 메모리 하위 주소에 적재하도록 설정하는 것이다.

인터럽트 벡터 : 인터럽트를 처리할 수 있는 서비스 루틴들의 주소를 가지고 있는 공간


2. 사용자 서비스

1) 사용자 인터페이스 제공

CLI (Command Line Interface)

CLI는 사용자가 키보드 등으로 명령어를 입력해 시스템에서 응답을 받은 후, 또 다른 명령어를 입력해 시스템을 동작하게 하는 텍스트 전용 인터페이스다. 사용자가 프롬프트에서 명령어를 입력해 컴퓨터와 상효작용할 수 있다.

프롬프트(prompt) : 컴퓨터가 입력을 기다리고 있음을 가리키려고 화면에 나타나는 표시. ex) C:\>

메뉴 인터페이스

배우거나 기억해야 할 명령이 없다. iPad나 휴대폰, 현금 자동 입출기 등이 대표적이다.

GUI (Graphic User Interface)

GUI는 윈도우 환경에서 사용자에게 정보와 작업을 표현하는 텍스트, 레이블이나 텍스트 탐색과 함께 그래픽 아이콘과 시각적 표시기, 버튼이나 스크롤바와 같은 위젯 그래픽 제어 요소를 사용해 컴퓨터와 상호작용할 수 있는 유형이다.

2) 프로그램 실행

프로그램을 실행하려면 먼제 메모리에 적재햐아 하고, 프로세서 시간을 할당해야 한다. 운영체제는 프로그램을 실행하려고 메모리 할당이나 해제, 프로세서 스케줄링과 같은 중요 작업을 처리한다.

3) 입출력 동작 수행

운영체제는 입출력 동작을 직접 수행할 수 없는 사용자 프로그램의 입출력 동작 방법을 제공한다.

4) 파일 시스템 조작

사용자는 디스크에서 파일을 열고, 파일을 저장하며, 파일을 삭제하는 등 다양하게 파일을 조작한다. 운영체제는 파일 시스템 조작 서비스를 제공해 사용자가 이런 파일 관련 작업을 쉽게 할 수 있도록 한다.

5) 통신 (네트워크)

프로세스가 다른 프로세스와 정보를 교환하는 방법은 크게 두 가지이다. 첫 번째는 동일한 컴퓨터에서 수행하는 프로세스 간의 정보 교환이고, 두 번째는 네트워크로 연결된 컴퓨터 시스템에서 수행하는 프로세스 간의 정보 교환이다. 운영체제는 다중 작업 환경에서 공유 메모리를 이용하거나 메세지 전달로 다양한 유형의 프로세스와 통신을 지원한다.

6) 오류 탐지

운영체제는 가능한 모든 하드웨어와 소프트웨어 수준에서 오류를 탐지하고, 시스템을 모니터링하여 조정함으로써 하드웨어 문제를 예방한다.

  • 프로세서, 메모리 하드웨어와 관련된 오류 : 기억장치 메모리 오류, 정전
  • 입출력장치 오류 : 테이프의 패리티 오류, 카드 판독기의 카드 체증(jam), 프린터의 종이 부족
  • 사용자 프로그램 오류 : 연산의 오버플로, 부적당한 기억장치 장소 접근, 프로세서 시간을 지나치게 많이 사용
패리티 : 바이너리 코드의 비트열 마지막에 추가하는 하나의 비트로, 이는 해당 비트열 내의 비트 중 1의 개수가 홀수 개인지 짝수 개인지 알려준다. 일반적으로 정보의 전달 과정에서 오류가 발생했는지 검사하는 오류 검출 코드(error detecting code)로 사용한다.

3. 시스템 서비스

시스템 서비스는 사용자가 아닌 시스템 자체의 효율적인 동작을 보장하는 기능이다.

1) 자원 할당

운영체제는 다수의 사용자나 작업을 동시에 실행할 때는 운영체제가 자원을 각각 할당하도록 관리한다.

2) 계정

운영체제는 각 사용자가 어떤 컴퓨터 자원을 얼마나 많이 사용하는지 정보를 저장하고 추적한다.

3) 보호와 보안

보호는 시스템 호출을 하려고 전달한 모든 매개변수의 타당성을 검사하고, 시스템 자원에 모든 사용자 접근을 제어하도록 보장하는 것이다. 보안은 잘못된 접근 시도에서 외부 입출력장치를 방어하며, 외부에 사용자 인증을 요구하는 것이다.


4. 시스템 콜(system call)

시스템 콜은 실행 중인 프로그램과 운영체제 간의 인터페이스로 API(Application Programming Interfaces)라고도 한다. 사용자 프로그램은 시스템 호출을 하여 운영체제의 기능을 제공받는다. 즉, 응용 프로그램이 사용자 수준에서 지원하지 않는 기능을 운영체제의 루틴을 호출해 제공받는 방법이다.

시스템 호출 방법에는 두 가지가 있다. 첫 번째는 프로그램에서 명령이나 서브루틴의 호출 형태로 호출하는 방법이다. 보통은 어셈블리어로 제공하지만, 고급 언어로 작성한 프로그램에서 직접 수행할 수도 있다. 이때는 미리 정의된 기능이나 서브루틴 호출과 비슷하다. 두 번째는 시스템에서 명령 해석기를 사용해 대화 형태로 호출하는 방법이다.


05. 운영체제의 구조

1. 단일(monolithic) 구조 운영체제

단일 구조 운영체제는 초기에 생겨난 가장 보편적인 형태이다. 운영체제의 모든 기능을 커널과 동일한 메모리 공간에 적재한 후 시스템 호출만으로 사용할 수 있다. 작고 간단하면서 시스템 기능이 제한된 구조로, 대표적인 예가 도스와 초기 유닉스이다.

커널에는 파일 시스템, 프로세서 스케줄링, 메모리 관리 등이 포함되며, 시스템 호출을 하여 또 다른 운영체제 기능을 제공한다.

 

이런 단일 구조 운영체제는 대부분의 기능을 커널에 그룹화해서 구현하므로, 직접 통신해 시스템 자원을 효율적으로 관리할 수 있다는 장점이 있다. 그러나 커널 크기가 상대적으로 커지면서 버그의 원인이나 기타 오류를 구분하기 어렵고, 새 기능을 추가하는 수정과 유지보수가 매우 어렵다. 또 동일한 메모렝서 실행하므로 한 부분에서 발생한 문제 때문에 시스템 전체에 심각한 영향을 줄 수 있다는 단점이 있다.

 


2. 계층 구조 운영체제

운영체제가 점점 커지고 복잡해지면서 순수 단일 구조만으로는 다루기가 어려워졌다. 이 문제를 해결하려고 등장한 것이 바로 계층 구조 운영체제이다. 계층 구조에서는 비슷한 기능을 수행하는 요소를 그룹화하여 계층적으로 구성한다.

최하위 계층(계층 0)인 하드웨어에서 최상위 계층(계층 5)인 사용자 인터페이스까지 다수의 계층으로 구성된다. 이 때 각 계층은 인접한 상위나 하위에 있는 계층과 상호작용한다. 이런 구조는 사용자 프로세스의 요청을 수행할 때 여러 계층을 거쳐야 하므로, 한 계층에서 다음 계층으로 데이터를 전달할 때마다 추가적인 시스템 호출이 발생한다. 따라서 호출 한 번으로 서비스를 받는 단일 구조보다는 성능이 떨어진다.

 

계층적 구조의 장점은 모듈화로 단일 구조 운영체제보다 모듈화가 잘 되어 있다는 것이다. 각 계층은 자신의 하위 계층 서비스와 기능만 사용하므로, 계층 구조에서는 시스템 검증과 오류 수정을 쉽게 할 수 있다.

모듈화 : 모듈 단위로 분할하는 것.

 

계층적 접근 방법을 이용한 설계는 다익스트라가 개발한 THE 운영체제에서 처음 사용했다. THE 운영체제는 계층 6개로 구성되어 있다.

  • 계층 5 : 응용 프로그램
  • 계층 4 : 입출력 관리
  • 계층 3 : 메시지 해석기
  • 계층 2 : 메모리 관리
  • 계층 1 : 프로세서 스케줄링
  • 계층 0 : 하드웨어

각 계층은 자신의 하위 계층만 사용할 수 있으므로 신중히 설계해야 한다.


3. 마이크로 커널 구조 운영체제

마이크로 커널은 커널의 기능을 많이 제외시켰다. 즉, 커널에는 최소 기능만 포함시켜 크기를 대폭 줄이고 기타 기능은 사용자 공간으로 옮겨 사용자 영역에서 수행하는 서버 구현 방법이다.

 

마이크로 커널 구조에서는 하드웨어 초기화와 메모리 관리(주소 공간 관리), 프로세스(스레드) 관리와 프로세스 간 통신, 프로세스 간 협력을 하는 동기화 기능 등 기본 기능만 실행한다. 대신 네트워크 시스템, 파일 시스템 상호작용과 장치 관리 등 대부분의 운영체제 구성 요소는 커널 외부, 즉 사용자 영역의 서버로 옮겨 구현한다.

마이크로 커널 구조는 커널을 가볍게 했으며, 운영체제 서비스를 사용자 영역의 독립적인 서버에서 수행하기 때문에 서버에서 잘못 수행하더라도 다른 서버와 커널에 치명적인 영향을 주지 않는다. 또 운영체제의 많은 기능을 사용자 영역의 서버로 구현할 수 있기 때문에 서버 개발이 용이하고, 운영체제의 기능을 쉽게 변경할 수 있다.

 

모듈화 정도가 높아 확장성, 이식성이 높지만, 모듈 간에 통신이 빈번하게 발생하여 성능이 떨어질 수 있다. 따라서 프로세스 간 통신 발생을 최소화시키는 것이 중요 과제이다. 대표적인 운영체제 중 마이크로 커널 구조를 전적으로 선택한 것은 없지만, 모듈화된 구성 요소는 포함한다.


요약

01. 운영체제 정의

운영체제는 사용자가 응용 프로그램을 실행할 수 있는 기반 환경을 제공해 컴퓨터를 편리하게 사용할 수 있도록 도와주고, 하드웨어를 효율적으로 사용할 수 있도록 다양한 기능을 제공하는 소프트웨어이다.

02. 운영체제의 역할

운영체제는 시스템 운영 요소를 적절하게 사용할 수 있도록 제어하면서, 각 응용 프로그램에 필요한 자원(프로세스, 메모리, 파일, 장치 등)을 할당하거나 효율적으로 운영하려고 자원을 할당하는 방법을 결정한다. 그리고 응용 프로그램과 입출력장치를 제어한다.

03. 운영체제의 발전 목적

운영체제는 크게 편리성(사용자에게 편리한 환경 제공), 효율성(시스템 성능 향상), 제어 서비스 향상이라는 세가지 목적에서 발전했다.

04. 운영체제의 기능

  • 자원 관리 : 메모리 관리, 프로세스 관리, 주변장치 관리, 파일 관리
  • 시스템 관리 : 시스템 보호, 네트워킹, 명령 해석기

05. 운영체제의 발전 과정

06. 운영체제의 유형

일괄 처리 시스템, 다중 프로그래밍 시스템, 다중 처리 시스템, 시분할 시스템, 실시간 처리 시스템, 분산 처리 시스템으로 구분할 수 있다.

07. 운영체제의 서비스

  • 부팅 서비스 : 컴퓨터 하드웨어를 관리하고 프로그램을 실행할 수 있도록 컴퓨터에 시동을 건다.
  • 사용자 서비스 : 사용자 인터페이스 제공, 프로그램 실행, 입출력 동작 수행, 파일 시스템 조작 등으로 프로그래머가 작업을 쉽게 수행할 수 있도록 한다.
  • 시스템 서비스 : 자원 할당, 계정, 보호와 보안 등으로 시스템의 효율적인 동작을 보장한다.
  • 시스템 콜 : 프로세스 제어, 파일 조작, 장치 조작, 정보 관리, 통신 등으로 프로그램이 운영체제의 기능을 서비스받을 수 있는 프로그램과 운영체제 간의 인터페이스를 제공한다.

운영체제의 구조

  • 단일 구조 운영체제
  • 계층 구조 운영체제
  • 마이크로 커널 구조 운영체제

연습문제

1. 운영체제의 주요 기능을 자원 관리와 시스템 관리로 나눠 기술하시오.

  • 자원 관리 : 메모리 관리, 프로세스 관리, 주변장치 관리, 파일 관리
  • 시스템 관리 : 시스템 보호, 통신, 명령해석기

2. 운영체제의 정의와 역할

  • 정의 : 사용자가 응용 프로그램을 실행할 수 있는 기반 환경을 제공해 컴퓨터를 편리하게 사용할 수 있도록 도와주고, 하드웨어를 효율적으로 사용할 수 있도록 다양한 기능을 제공하는 소프트웨어.
  • 역할 : 자원 관리(메모리, 프로세스, 주변장치, 파일), 시스템 관리(시스템 보호, 통신, 명령 해석기)

3. 프로세스를 관리하는 운영체제의 주요 활동

프로세스 스케줄링, 사용자와 시스템 프로세스의 생성과 제거, 프로세스의 중지와 재수행, 프로세스 동기화를 위한 기법 제공, 프로세스 통신을 위한 기법 제공, 교착상태(deadlock)를 방지하는 기법 제공

 

4. 파일을 관리하는 운영체제의 주요 활동

파일의 생성과 제거, 디렉토리의 생성과 제거, 보조 기억장치에 있는 파일의 맵핑, 비휘발성 저장 매체에 파일 저장

 

5. 메모리를 관리하는 운영체제의 주요 활동

현재 메모리의 어느 부분이 사용되고 누가 사용하는지 점검, 기억 공간에 어떤 프로세스를 저장할 지 결정, 기억 공간을 할당하고 회수하는 방법 결정

 

6. 시분할 시스템 운영체제의 장단점

시분할 시스템은 각 사용자들에게 CPU에 대한 일정 시간을 할당해 주어진 시간동안 직접 컴퓨터와 대화 형식으로 프로그램을 수행할 수 있도록 개발된 시스템이다.

  • 장점 : 여러사람이 공동으로 CPU를 사용할 수 있다.
  • 단점 : 자원 제어에 대한 책임을 운영체제에 전가시킴으로써 운영체제가 복잡해진다.

7. 다중 프로그래밍 시스템과 다중 처리 시스템의 차이

다중 프로그래밍 시스템은 한 개의 CPU에서 두 개 이상의 프로세스를 처리하는 것이고 다중 처리 시스템은 여러 개의 CPU를 사용해서 처리 능력을 높인 것이다.

 

8. 다중 프로그래밍의 주요 장점

CPU의 유휴시간을 낭비하지 않기 때문에 효율적인 작업이 가능하고 전체 수행시간을 줄일 수 있다.

 

9. 시스템 콜의 개념과 시스템 콜 방법

시스템 콜은 실행 중인 프로그램과 운영체제 간의 인터페이스다. 사용자 프로그램은 시스템 콜을 통해 운영체제의 기능을 제공받는다.

 

10. 응용 프로그램이란?

특정 업무를 해결하기 위한 목적으로 만들어진 프로그램.

'CS > 운영체제' 카테고리의 다른 글

[운영체제] 03. 프로세스와 스레드  (0) 2021.03.31
[운영체제] 01. 컴퓨터 시스템의 소개  (0) 2021.03.22