본문 바로가기
Computer Science/OS

[OS] 운영체제 개요

by soobaaaam 2021. 11. 4.
728x90

<운영체제란 무엇인가?>

 

 1960년대 이후 다양한 프로그래밍 언어가 발전하던 시기에 운영체제가 개발되기 시작했다. 

 운영체제(OS)란 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층을 말한다.

 메모리에 상주하는 운영체제의 부분을 '커널'이라 부르는데, 따라서 커널은 운영체제의 핵심 부분이라 할 수 있다.

 

<운영체제의 목적>

 

출처 : 이화여자대학교 반효경 교수님 '운영체제' 강의

 

  위 그림을 보면 운영체제는 소프트웨어&사용자와 컴퓨터 하드웨어 사이에 껴있다. 따라서 운영체제의 목적은 하드웨어를 위한 목적과 사용자를 위한 목적으로 나누어 존재한다. 

 

 우선 하드웨어 쪽에서는 컴퓨터 시스템의 자원, 즉 프로세서와 기억장치, 입출력 장치 등을 효율적으로 관리한다. 예를 들면 실행 중인 프로그램들에게 짧은 시간씩 CPU를 번갈아 할당하거나, 실행 중인 프로그램들에 메모리 공간을 적절히 분배한다. 

 사용자 쪽에서는 사용자가 하드웨어를 직접 다루기 힘들기 때문에 이러한 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공한다.

 

<운영체제의 분류>

 운영체제는 동시 작업 가능 여부, 사용자의 수 그리고 처리 방식까지 총 3가지 관점으로 분류할 수 있다.

 

 1. 동시작업 가능 여부

 동시 작업 가능 여부의 관점에서는 단일 작업(single tasking)과 다중 작업(multi tasking)으로 분류할 수 있다.

 

 단일 작업은 한 번에 하나의 작업을 처리하는 것으로 MS-DOS를 예시로 들 수 있다.

 다중 작업은 반대로 동시에 두 개 이상의 작업을 처리하는 것이며 UNIX, MS Windows가 다중 작업의 대표적인 예시이다.

 

2. 사용자의 수

 

 사용자의 수 관점에서는 단일 사용자(single user)와 다중 사용자(multi user)로 분류할 수 있다.

 

 단일 사용자용 운영체제는 한 번에 한 명의 사용자만이 사용하도록 허용하는 운영체제이며 MS-DOS와 MS Windows가 있다.

 다중 사용자용 운영체제는 여러 사용자가 동시에 접속해 사용할 수 있게 하는 운영체제이고 UNIX와 NT Server 등이 있다.

 

3. 처리 방식

 

처리 방식 관점에서는 일괄처리(batch processing), 시분할 처리(time sharing), 그리고 실시간(Realtime OS)로 분류할 수 있다.

 

 일괄처리 방식은 작업 요청의 일정량을 모아서 한꺼번에 처리한다. 따라서 작업이 완전히 종료될 때까지 기다려야 한다. 예로는 초기 Punch Card 처리 시스템을 들 수 있다.

 시분할 처리 방식은 여러 작업 시 컴퓨터의 처리 능력을 일정한 시간 단위로 분할하여 사용한다. 이는 짧은 응답 시간을 가지고, 반응이 바로 나오는 interactive 한 방식이다. 따라서 현대의 범용 컴퓨터들이 대부분 시분할 처리 방식을 사용한다. 

 시분할 처리 방식은 interactive 하지만, 시간 deadline이 있는 것은 아니다. 이 방식은 주어진 자원을 최대로 사용하는 것이 목적이며 여러 사람이 사용하는 것에 특화되어 있다.

 실시간 운영체제는 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되는 운영체제이다. 예를 들면 원자로와 공장 제어, 미사일 제어, 반도체 장비, 로봇 제어 등처럼 일정 시간 안에 작업이 완료되지 못할 경우 동작 자체가 안되거나 큰 위험을 초래할 수 있는 시스템에서 사용된다. 

 실시간 시스템은 주어진 시간을 지키지 못할 경우 매우 위험한 결과를 초래하는 로켓과 원자로 제어 시스템 같은 '경성 실시간 시스템'과 멀티미디어 스트리밍 시스템 같은 데이터가 정해진 시간 단위로 전달되어야 하는 '연성 실시간 시스템'으로 세분화할 수 있다.

 

<운영체제의 몇 가지 용어>

 1. Multitasking : 여러 작업이 동시에 진행되는 것.

 2. Multiprogramming : 여러 프로그램이 메모리에 올라가 있음을 강조.

 3. Time sharing : CPU의 시간을 분할하여 나누어 쓴다는 의미를 강조.

 4. Multiprocess : 여러 프로그램(process)이 동시에 실행되는 것. 

 

-> 위 네 가지 용어는 컴퓨터에서 여러 작업을 동시에 수행하는 '유사한 용어'로 사용이 되며 CPU가 하나라도 시간을 나누어서 동시에 실행이 가능하다.

 

 5. Multiprocessor : 하나의 컴퓨터에 CPU(processor)가 여러 개 붙어있음을 의미한다. 위의 Multitasking을 당연히 지원하지만 위 네 가지 용어들과 다르게 CPU가 여러 개 있어야 하는, 하드웨어적으로도 다른 시스템이다.

 

 <운영체제의 예>

1. 유닉스 (UNIX)

 유닉스는 초기의 대형 컴퓨터를 위해 만들어졌다. 유닉스를 만들기 위해 고급 언어를 새로 만들었는데 이 언어가 C언어다. 유닉스는 소스 코드를 사람들에게 공개하여 연구 등에 널리 쓰일 수 있게 하였다.

 유닉스는 높은 이식성을 갖는데, 이는 하나의 컴퓨터에서 돌아가는 유닉스를 기계어 집합이 전혀 다른 컴퓨터에 이식하기가 쉽다는 것을 뜻한다. 

 또한 유닉스는 최소한 커널 구조를 갖는다. 여러 기능을 운영체제의 핵심인 커널에 넣으면 메모리의 많은 부분을 운영체제가 차지하므로 핵심적인 기능만 커널에 넣었다. 

 

2. DOS (Disk Operating System)

 DOS는 단일 작업용으로 개발되었다. 메모리의 크기가 640KB밖에 되지 않는다.

 

3. MS Windows

하드웨어가 급격하게 발전함에 따라 MS Windows가 사용되기 시작했다.

 

4. 그 이후와 현재

초기엔 OS가 유닉스와 MS Windows 두 가지 계열이 전부였지만 이후에 애플이 만든 OS나 소형 디바이스를 위한 Pocket PC, Palm OS 등이 등장했고, 현재는 iOS와 같은 스마트폰을 위한 운영체제가 등장하는 등 여러 형태로 발전하였다.

 

<운영체제의 구조와 기능>

 

출처 : 이화여자대학교 반효경 교수님 '운영체제' 강의

 

 운영체제는 크게 5개의 관점에서 그 기능을 말할 수 있다.

 

1. CPU 스케줄링  (어떤 프로그램에게 CPU를 할당할 것인가)

 프로그램들이 여러 개가 동시에 수행될 때 아주 짧은 시간 간격으로 프로그램들에게 CPU를 줬다 뺐었다하는데, 이때 어떤 프로세스에 CPU를 할당할 것인지 결정하는 것을 말한다. 컴퓨터 세계에서는 일을 선착순으로 처리하는 것이 비효율적이기 때문에 스케줄링이 필요하다.

 

2. 메모리 관리 (어떤 프로그램에게 메모리를 얼만큼 할당할 것인가)

 메모리의 공간은 한정적이기 때문에 디스크에서 메모리에 새로운 프로그램을 올리려 하면 기존의 다른 프로그램이 쫓겨나야 한다. 이때 어떤 프로그램을 쫓아내야 하는지 결정하는 것을 말한다. 

 CPU에서는 머지않아 다시 사용할 가능성이 높은 것은 놔두고 그렇지 않은 것을 쫓아낸다. 여기서 가능성의 높고 낮음은 미래를 예측해 결정해야 하는데, 과거에 해당 프로그램이 많이 사용되었거나 최근에 사용된 적이 없는 등의 경우를 따져 예측할 수 있다.

 

3. 입출력 관리 (각기 다른 입출력 장치와 컴퓨터 간에 어떻게 정보를 주고받게 하는가)

 CPU는 매우 빠르지만 입출력 장치는 느리다. 그렇기에 CPU는 항상 자기 할 일을 하고 있고, 입출력 장치가 무엇을 하는지는 평소에 관여하지 않는다. 

 입출력 장치는 CPU에게 보고할 일이 있다면 인터럽트(interrupt)를 걸어서 CPU에게 알려주고, 그럼 CPU는 다음 작업을 하기 전에 입출력 장치가 보고한 일을 처리한다.

 

4. 파일 관리 (디스크에 파일을 어떻게 보관하는가)

5. 프로세스 관리

- 프로세스의 생성과 삭제

- 자원 할당 및 반환

- 프로세스 간 협력

 


* 본 글은 이화여자대학교 반효경 교수님 강의'운영체제와 정보기술의 원리(반효경 지음)' 서적에 기반하여 작성하였습니다.