운영체제의 역할과 목적

운영체제 역할

운영체제는 컴퓨터 하드웨어와 응용 프로그램 간의 인터페이스 역할을 하며 CPU, 메모리와 같은 컴퓨터 자원을 관리하고 사용자에게 편의를 제공한다.

컴퓨터 시스템은 일반적으로 사용자, 소프트웨어, 하드웨어 세 가지 요소로 구성된다.

컴퓨터 사용자

어떤 일을 수행하기 위해 컴퓨터를 사용하는 사람, 장치, 다른 컴퓨터를 의미한다.

하드웨어

연산을 위한 기본 자원을 제공하는 프로세서(중앙처리장치, CPU), 메모리(기억장치), 다양한 장치(입출력장치 등)로 구성

소프트웨어

컴퓨터가 기능을 수행하는데 필요한 프로그램을 총칭 e.g.) 운영체제, 각종 응용 프로그램 유틸리티 등

응용 프로그램

어떤 문제를 해결하기 위해 사용자나 전문가에 의해 만들어진 프로그램 e.g.) 웹 브라우저, 한글 등의 워드 프로세서, 데이터베이스 관리 프로그램, 비디오 게임 등

스크린샷 2023-09-08 152828

운영체제는 다음과 같은 기능을 제공한다.

하드웨어와 사용자 간의 인터페이스 정의한다.
사용자들이 하드웨어를 공동으로 사용할 수 있도록 해준다.
사용자 간의 자원 스케줄링, 즉 자원 할당자 역할을 수행한다.
입출력 보조 역할을 한다.
오류를 처리한다.

스크린샷 2023-09-08 153108

시스템 소프트웨어(System Software)

시스템 전체를 작동시키며, 프로그램을 주기억 장치에 적제하거나, 인터럽트 관리, 장치 관리, 언어 번역등의 기능을 담당하는 소프트웨어 e.g.) OS

커널(Kernel)

운영체제의 핵심으로 메모리에 상주하며 운영체제의 다른 부분 또는 응용 프로그램 수행에 필요한 환경을 설정하는 소프트웨어

응용 프로그램 실행에 필요한 다양한 서비스를 제공하고 실행되는 프로세스를 스케줄링하는 역할

운영체제의 목적

운영체제는 두 가지 주요 목적을 달성하기 위해 발전해왔다.

편리성

사용자가 프로그램을 개발하고 사용하는 데 좀 더 편리한 환경 제공

e.g.) 개인용 컴퓨터(PC, Personal Computer)의 GUI 환경

효율성

자원을 효과적으로 사용하기 위해 각 프로그램을 유기적으로 결합하여 시스템 전체 성능을 향상시키는 방향으로 설계된다.

  • 처리 능력(Throughput) : 시스템의 생산성을 나타내는 대표 지표로 단위 시간당 처리하는 작업량

  • 신뢰도(Releability) : 하드웨어(펌웨어), 소프트웨어가 실패 없이 주어진 기능을 수행할 수 있는 능력

  • 응답 시간(Turn Around Time) : 사용자가 시스템에 작업을 의뢰한 후 반응을 얻을 때까지의 시간(시분할 방식 시스템과 온라인 시스템에서 사용하는 용어, 일괄 처리 시스템에서는 Turn Around Time)

  • 사용가능도(Availability) : 가동률, 사용자가 일정 기간 동안 컴퓨터를 실제로 사용한 시간(비율)

운영체제 초기의 일괄 처리 시스템

진행과정

  1. 컴퓨터로 카드 판독기와 테이프 드라이브를 작동, 데이터를 테이프에 저장
  2. 생성한 데이터 테이프의 연산 처리를 위해 컴퓨터의 입력 테이프 드라이브로 사용하여 입력
  3. 연산 처리된 데이터는 출력 테이프 드라이브에 의해 출력 테이프에 저장, 컴퓨터에서 출력을 위해 프린터의 입력 테이프로 사용

작업 중 문제 발생 시 오퍼레이터가 콘솔을 조사, 사태 여부를 파악하고 필요한 조치를 취하기 위해 프로세서의 유휴 시간이 생성되는 문제점이 있다.

상주모니터

초기의 운영체제 형태로서, 현재 프로그램에서 다음 프로그램으로 제어가 자동으로 넘어가 도록 하는 프로그램

버퍼링(Buffering)

입출력장치의 느린 속도를 보완하여, 유휴 시간이 없도록 프로세서의 연산 과정과 함께 어떤 작업의 입출력을 동시에 수행하는 운영체제의 기능 중 하나이다.

컴퓨터 하드웨어의 일부인 버퍼를 사용하며, 한 작업의 입출력과 그 작업의 계산만 함께 할 수 있다.

데이터 구성 단위는 레코드로, 버퍼링의 성능은 처리되는 레코드 수에 따라 달라진다.

레코드는 응용 프로그램에 의해 정의되는 논리적 레코드와 입출력장치의 특성에 의해 정의되는 물리적 레코드로 나뉜다.

스풀링(Spooling)

프로세서가 다른 부분을 판독하고 있는 동안 추가로 기록할 수 없는 테이프 시스템의 문제를 해결하기 위해 추가 기록이 가능한 디스크의 특성을 이용하여 개발되었다.

‘Simultaneous Peripheral Operation On-Line’라는 의미로 디스크를 매우 큰 버퍼처럼 사용하는, 입력장치에서 미리 읽어 출력 장치가 받을 수 있을 때 까지 출력 파일을 저장한다.

별개의 오프라인 장치를 사용, 한 작업의 입출력을 수행하면서 다른 작업의 계산이 가능하고 많은 작업의 입출력과 계산을 함께 할 수 있다.

작업 풀(Jop Pool) 데이터 구조를 제공한다.

  • 디스크에 읽혀져 실행을 위해 대기하는 여러 작업을 수행할 수 있도록 준비, 디스크에 저장된 작업은 프로세서 이용률 향상을 위해 운영체제가 다음 수행할 작업 선택을 돕는다.

스크린샷 2023-09-08 154723

운영체제의 유형별 특징

다중 프로그래밍 시스템

작업 스케줄링에서 가장 중요한 부분은 다중 프로그래밍(Multi Programming)

프로세서가 항상 수행할 작업을 가지도록 하여 프로세서 이용률을 증진시키는 방법이다.

  • 운영체제는 메모리에 있는 작업 중 하나를 택하여 실행을 시작한다.
  • 작업이 어떤 일을 기다려야 하는 경우, 비다중 프로그래밍 시스템의 프로세서는 유휴 상태가 되지만 다중 프로그래밍 시스템에서는 운영체제가 간단히 다른 작업으로 전환하여 수행한다.
  • 작업을 위해 기다리는 것이 끝나면 프로세서를 다시 차지하며, 수행될 작업이 메모리에 적재되어 있으면 프로세서는 유휴하지 않을 것이다.

인터럽트를 이용하여 수행하는 프로세서 스케줄링의 다중 프로그래밍은 현대 운영체제의 중심 주제이다.

다중 프로그래밍 운영체제는 아주 복잡하며, 여러 작업을 준비 상태로 두려면 이를 메모리에 보관해야 하고 일정 형태의 메모리 관리가 필요하다.

또한 여러 개의 작업이 수행할 준비를 갖추고 있으면 이 중 하나를 선택하기 위한 결정 방법이 필요하다.

스크린샷 2023-09-08 160041

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

다중 프로그래밍을 논리적으로 확장한 개념으로 프로세서를 통해 다중 작업을 교대로 수행한다.

사용자가 프로그램을 실행하고 있을 동인 자신의 프로그램과 접촉하기 위해 교대가 빈번히 일어난다.

프로세서 스케줄링과 다중 프로그래밍을 사용해 각 사용자에게 컴퓨터를 시간적으로 분할하여 나눠준다.

  • 각 사용자는 메모리에 독립된 프로그램을 갖고, 프로그램은 입출력을 수행하는 아주 짧은 시간 동안만 실행되어 많은 사용자가 컴퓨터를 공유하도록 한다.

  • 각 트랜젝션(Transaction)이 짧아 각 사용자는 짧은 시간 동안만 프로세서를 사용한다.

1960년 이전에 제안되었으며, 초기에 개발된 시스템 중 하나가 MIT에서 개발한 CTSS(Compatible Time Sharing System)다.

  • 1961년 IBM-709에 탑재되어 사용됨

1970년대 초까지는 일반화되지 못했으나 오늘날의 시스템은 대부분 일괄 처리 방식과 시분할 방식을 모두 제공한다.

  • 여러 작업이 메모리에 저장되어 있는 경우 한 작업이 다른 작업의 데이터를 변경하는 등의 작업에 대한 보호가 필요하다.
  • 다수의 사용자가 접근하는 파일은 접근 권한을 두어 특정 권한을 가진 사용자만 접근할 수 있도록 파일 시스템을 보호해야 한다.
  • 공유 자원의 경우 접근 순서도 조정할 수 있도록 기능을 제공해야 한다.

일괄 처리 시스템과 비교

일괄 처리 시스템

  • 작업을 미리 정의된 각 제어 카드와 함께 읽어 들이고 작업을 완료하며 출력
  • 처리 과정 중 발생할 수 있는 모든 경우에 대한 제어 카드를 제공해야 하므로 작업 제출과 완료까지의 반환 시간이 길어질 수 있다.
  • 오류 수정은 당시의 상태를 그대로 출력해야 가능하며, 오류를 수정한 후 다시 처음부터 수행 해야 한다.


시분할 시스템

  • 사용자와 시스템 간의 온라인 통신을 제공, 사용자가 운영체제나 프로그램에 직접 명령을 주고 즉시 응답을 받을 수 있다.

대화식 입출력

입출력은 대화식으로 가능하며, 출력은 사용자를 위해 화면에 출력되고 입력은 키보드에서 읽어 들이는 대화식이 될 수 있다.

보통, 사람의 처리와 속도가 같으므로 종료까지 소요 시간이 길며, 이 경우 운영체제는 프로세서를 다른 사용자의 프로그램으로 전환시킨다.


분산 처리 시스템(Distributed processing System)

시스템마다 운영체제와 메모리를 가지고 독립적으로 운영되며 필요 할 때 통신하는 시스템이다.

최근의 컴퓨터는 자원 공유, 연산 속도 향상, 신뢰성과 통신 등의 문제로 여러 개의 물리적 프로세서에 연산을 분산하는 경향이 있다.

분산 시스템 구성 방법

강결합(단단히 결합된) 시스템

  • 프로세서(처리기)가 기억장치와 클록(Clock)을 공유하며, 공유된 기억장치를 통해 통신

약결합(느슨하게 결합된) 시스템

  • 둘 이상의 독립된 컴퓨터 시스템을 통신선으로 연결

다중 처리 시스템

마이크로프로세서 여러 개를 연결해 다중 프로세서를 만든다.

  • 시스템은 프로세서(처리기)를 많이 사용해 신뢰성, 가용성, 컴퓨터 능력 등을 증가시킨다.
  • 하드웨어 비용이 저렴해짐에 따라 단위 시간당 처리량을 증가시키기 위해 사용한다.
  • 고가의 초고속 프로세서를 사용하지 않고도 대형 컴퓨터에 근접하는, 단일 프로세서 컴퓨터 시스템의 계산 능력을 증대시킬 수 있다.
  • 다중 처리를 위한 운영체제 구성 방법은 비대칭(주/종)적 구성과 대칭적 구성이 있다.

주/종 다중 처리 시스템(Master/Slave Multi Process System)

  • 비대칭적 구성으로 마스터 프로세서가 주가 되어 부가적인 슬레이브 프로세서를 관리하는 단일 처리 시스템이다.
  • 형태가 단순하나 마스터 프로세서에 부하가 많아 신뢰도나 자원 사용에서는 비효율적이다.
  • 운영체제의 개입이 요구되는 경우, 마스터 프로세서에 인터럽트를 요청해야 하므로 인터럽트 수가 증가한다.