1. 운영체제의 역할에 대한 간단한 정리
2. 운영체제가 컴퓨터 상에서 어디에 위치하며, 운영체제는 어떤 방식으로 작동하는지
3. 운영체제에는 어떤 것들이 있는지
00 도입
운영체제를 한 마디로 정리하면 '하드웨어를 잘 관리해서 유저와 응용 프로그램에 서비스를 제공' 해주는 컴퓨터 시스템이다. 이때 '잘 관리한다'의 '잘'은 항상 상대적으로 쓸 수 있는 표현이다. 무언가 전보다 더 나아졌으면 이전보다 잘했다고 볼 수 있는 것처럼. 운영체제도 마찬가지로 과거에 사용하던 운영체제의 문제를 개선하면서 점점 발전해왔다. 이 과정을 살펴보면서 운영체제의 작업 수행방식에 따라 종류를 나눠 살펴보고 다른 기준에 따라서 구분할 수 있는 운영체제의 종류도 살펴보았다.
01 운영체제의 역할
운영체제 : 하드웨어를 잘 관리하여 사용자와 응용 프로그램에 서비스를 제공하는 것
운영체제는 크게 4 가지 역할을 수행한다.
- 사용자인터페이스(화면) 관리
- 자원(리소스) 관리
- 프로세스(프로그램 실행의 주체) 및 스레드 관리
- 시스템 관리(보안 관련)
01-1 유저 인터페이스 관리
사용자가 컴퓨터를 보다 편리하게 이용하기 위해서는 사용자가 컴퓨터와 직접적으로 상호작용하는 부분인 화면(인터페이스)을 더 사용하기 쉽게 구현하는 게 좋다. 옛날 컴퓨터들을 보면 문자를 입력해서 컴퓨터와 소통하는 방식의 CUI였다면, 요즘 컴퓨터나 모바일 디바이스의 화면은 점점 더 깔끔하고 심플하게 발전하고 있고, 문자 보다 훨씬 사용하기 쉬운 아이콘 모양을 클릭하는 방식으로 원하는 작업을 수행할 수 있다. 즉, 그래픽 기반의 GUI로 넘어온 상태다. 물론 특정 전자기기(mp3플레이어)와 같은 특별한 목적이 있는 기기에서는 해당 목적을 수행하는데 가장 적절한 인터페이스를 사용한다는 점에서 EUI(End-user Comfortable Interface)를 활용한다. (작은 mp3의 화면에 굳이 컴퓨터의 GUI를 우겨넣을 필요없이 그냥 음악 감상에 최적화된 화면만을 제공해도 충분하다는 의미)
01-2 자원관리
컴퓨터에서 자원은 하드웨어와 소프트웨어다. 이들을 잘 관리하는게 운영체제의 역할 중 하나다. 하드웨어를 더 효율적으로 쓰고, 소프트웨어가 잘 작동하도록 관리하는 주체가 운영체제다.
01-3 프로세스 및 스레드 관리
프로세스는 프로그램 실행의 주체다. 스레드는 좀 더 가벼운 프로세스라고 볼 수 있고 이들을 관리하는 것도 운영체제다.
01-4 시스템 관리
시간이 흐를수록 점점 더 그 중요성이 부각되고 있는 부분으로, 보안을 포함한 시스템 관리작업을 수행하는 것도 운영체제의 역할 중 하나다.
02 운영체제의 위치
하드웨어 > 운영체제 > 유저가 사용하는 어플리케이션 등 프로그램들
하드웨어와 어플리케이션 프로그램 사이에 운영체제가 위치하고 있다. 운영체제는 크게 다시 커널과 시스템 콜 인터페이스 라는 두 개의 층으로 나눌 수 있다.
하드웨어 > 운영체제의 커널(자원 관리) > 운영체제의 시스템 콜 인터페이스 > 어플리케이션 프로그램들
- 커널 : 다양한 기능을 제공하는 부분으로, 만약 사용자가 직접 커널에 접근한다면 문제가 발생할 수 있음 (따라서 ...)
- 시스템 콜 인터페이스 : 사용자가 커널에 접근해 사용할 수 있는 것들만을 모아놓은 것들이 시스템 콜 인터페이스에 위치한다. 즉 사용자가 접근해서는 안되는 부분을 직접 조작하지 않고 OS에 요청하게끔 요청할 수 있는 통로가 시스템 콜 인터페이스 인 것이다. (시스템 라이브러리 라고도 부른다)
03 운영체제의 종류
운영체제는 다양한 기준으로 종류를 구분지을 수 있다.
- 동시 사용자의 수
- 동시에 실행할 수 있는 프로그램 수
- 작업 수행 방식(사용자가 느끼는 사용 환경)
03-1 동시 사용자의 수에 따른 구분
- Single-user systerm : OS를 혼자 사용하는 경우
- 혼자 쓰기 때문에 관리가 더 쉽다. ex) Window10, Android, ios - Multi-user systerm : OS를 여러명이 쓰는 경우
- 함께 쓴다 = 서버, 즉 호스트 시스템을 사용한다는 의미
- 서버에서 돌아가는 시스템들을 여럿이서 동시에 사용함
- 자원 관리가 더 어렵다(누구에게 어떤 자원을 할당해줄지, 누가 먼저 자원을 쓰게 할지 관리할 일이 증가해서)
- 따라서 OS가 Single-user system 보다 더 복잡
ex) Unix, Linux, Windows server
03-2 동시 실행 프로그램의 개수에 따른 구분
- single-tasking system : 한 번에 하나의 작업만 수행 가능
- 하나를 다 끝내야만 다음 프로그램을 수행할 수 있음(요즘엔 잘 사용하지 않음)
ex) MS-DOS, Windows cmd 창 처럼 - multi-tasking system (multi-programming system) : 동시에 다중 작업 수행 가능
- 동시에 여러 작업을 해야하는 만큼 좀 더 복잡함(동기화, 동시수행을 추가로 관리해야해서)
ex) Windows, Linux, Unix
03-3 작업 수행 방식에 따른 구분
어떻게 작업을 처리해나가는지로도 운영체제를 구분할 수 있다. 사용자가 작업을 요청하면 처리 과정을 거쳐 결과물을 받게되는데, 결국 요청 이후 얼마나 기다려야 결과물이 나오는지 사용자가 느끼는, 체감할 수 있는 사용 환경에 따른 구분이라고 볼 수도 있다.
앞서 도입 부분에서 잠시 언급한 것과 같이 운영체제는 하드웨어를 보다 잘 관리하는 역할을 수행하고, 잘 관리하기 위해 이전 운영체제의 문제들을 개선하며 발전해왔다. 따라서 이 발전 과정에 따라서 운영체제의 종류를 다음과 같이 구분한다.
- 순차처리 시스템
- 배치 시스템
- 시분할 시스템
- 퍼스널 컴퓨팅
- 병렬 처리 시스템
- 분산 처리 시스템
- 실시간 시스템
03-3-1 순차 처리 시스템(~1940)
과거에는 따로 운영체제라는 개념은 없고, 그냥 기계어로 프로그램 작성부터 하드웨어 관리 등 결과를 출력하기 위해 필요한 모든 디테일한 작업을 일일이 사용자가 작성했다. (ex. 천공카드 : 데이터를 표현하기 위해 규칙에 따라 구멍을 뚫어 사용하는 종이카드. 구멍을 뚫는지의 여부로 비트를 표현)
당연히 오래걸리고, 특히 앞 사용자와 뒷 사용자가 서로 매우 다른 작업을 수행해야 한다면 그 작업을 수행하기 위한 준비작업(세팅)에 걸리는 시간까지 오래 걸렸다. (= 시간이 오래걸린다)
03-3-2 배치 시스템(1950~60년대)
시간이 오래걸린다는 순차처리 시스템을 개선하기 위해 등장한 시스템. 배치, 즉 특정 단위 만큼위 작업이 모일때까지 기다렸다가 모이면 그때 일괄적으로 작업을 수행해주는(누가? 중앙 - 전자계산소, 전산소) 일괄처리 시스템이다. 한꺼번에 실행하니 당연히 세팅 작업에 들어가는 시간을 줄일 수 있었다. 기존 방법보다 시스템 지향적(시스템이 처리하기에 더 좋은 방식인)이었고, 처리효율(throughput) 향상, 여러 사용자가 시스템 자원을 공유할 수 있다는 장점이 있다.
하지만 배치가 모일때까지 대기하는 시간으로 인해 생산성이 저하되는 문제가 생겼다. 다시말에 응답시간(작업을 제출해 결과물을 출력하기까지의 시간)이 오래걸렸다. (= 대기시간 문제)
03-3-3 시분할 시스템(1960~70년대)
작업들이 대기하는 시간이 오래걸린다. 그럼 작업을 번갈아가면서 조금씩 수행하게 만들면 대기시간을 줄일 수 있다. 말 그대로 시간을 쪼개(시분할) 각 작업에 할당하는 방식이 시분할시스템이다. 일괄로 처리할때는 A작업, B작업, C작업 순으로 진행했는데 시분할 시스템에서는 A작업 일부, B작업 일부, C작업 일부, 다시 A작업 일부 ... 이런 식으로 시간을 쪼개어 쓸 수 있다.
(사용자들이 각자 자신의 터미널(단말기)를 통해 시스템에 접속하고 input을 전달하면, 전산소에서 이를 처리한 뒤 개별 사용자에게 결과를 보냄)
일괄처리 방식보다 좀 더 사용자 지향적이며 단말기를 통한 대화형 시스템이라 생산성도 전보다 높아졌다. 당연히 대기시간도 단축할 수 있었다. 이렇게 여러 작업을 한꺼번에 할 수 있게 되었지만(자원의 효율적 활용) 이렇게 작동하게 하기 위해 운영체제는 기존 방법보다 복잡해진다. 예를 들어 파일 시스템이나 가상메모리 등을 관리해주는 작업이 필요했다. 또 단말기 접속 방식을 사용했기 때문에 통신 비용, 보안 문제가 있었고 동시 사용자의 수에 따라 시스템에 부하가 생겨 느려지는 문제가 생겼다.
03-3-4 퍼스널 컴퓨팅
사용자들이 OS를 공유하는 게 아니라, 혼자 독점해서 사용하는 방식이다. 퍼스널컴퓨팅 방식을 사용하기 전에는 CPU 활용율을 최대화 하는 게 목적이었다. 하지만 퍼스널 컴퓨팅 방식의 도입으로 CPU 활용율은 그리 중요하지 않아졌다. 가동할 수 있는 CPU를 최대한 쓰는것보다, 지금 내가 작업을 편하게 잘 쓸 수있는지, 사용자 지원 기능이 훨씬 더 중요해지게 되었다.
따라서 혼자 운영체제를 독점하기 때문에 운영체제는 좀 더 단순해졌고, 사용자 편의를 개선하는 기능을 제공하는 쪽으로 발전하게되었다. 혼자 사용하기에 빠르지만, 이전보다 컴퓨터 자체의 성능은 좀 더 낮다고도 볼 수 있다. (물론 CPU를 여러개 넣어서 성능을 개선할 수도 있다)
03-3-5 병렬처리 시스템
바로 위에서 CPU를 여러개 넣어서 컴퓨터의 성능을 개선한다고 했는데, 이처럼 하나의 시스템에 여러개의 프로세스를 사용하는 시스템을 병렬처리 시스템이라한다. 병렬처리 시스템은 tightly-coupled system으로도 불리는데, 이는 메모리같은 다른 자원들과 tight 하게 묶여있기때문이다. CPU는 여러개지만 메모리같은 자원은 아직 공유하는 상태이기 때문이다. 이 시스템을 사용하는 목적은 당연히 성능 향상과 신뢰성 향상(한 CPU가 고장나도 다른 CPU가 대신 그 작업을 수행할 수 있어서 성능은 떨어져도 시스템을 계속 돌아가게 할 수 있기 때문)인데, 프로세서가 여러개이다보니 이들 간 작업을 어떻게 배분할지의 역할도 추가적으로 지정해야 하므로 좀 더 복잡해진다.
뿐만 아니라, 현실적으로 CPU를 무제한으로 컴퓨터에 넣을 수도 없다. 이 모든 CPU를 감당할 공간적, 시스템적인 한계가 있기 때문이다. (성능 개선을 위해 무한정 CPU를 늘리는 것은 어렵다)
03-3-6 분산처리 시스템
CPU를 늘리지 못한다면, 컴퓨터를 늘려볼 수 있다. 즉 컴퓨터를 연결시키 네크워크 기반의 병렬처리 시스템이 등장했다. 이 네트워크 기반의 병렬처리 시스템은 네트워크를 통해 컴퓨터들을 묶는 것으로, 통신을 이용하는 방법이기 때문에 개별 컴퓨터(=노드)들의 자원은 독립적으로 존재한다(즉, 각 노드는 자신만의 OS가 있다). 따라서 Loosely-coupled system으로 부르기도 한다.
물리적인 통신망을 이용하기때문에 연결하기 쉽지만 관리는 어렵다. 따라서 이를 관리하는 분산운영체제를 통해 하나의 프로그램, 자원처럼 사용할 수 있다. (ex. 클러스터 시스템, 클라이언트 서버 시스템, P2P)
쉽게 컴퓨터를 늘릴 수 있고, 높은 성능과 신뢰성, 확장성이 장점이라면 구축 및 관리가 어렵다는게 단점이다. (컴퓨터를 모아놓고 죄다 선으로 연결하기 때문에 만약 문제가 발생하다거나 실수로 잘못 연결하는 등 관리가 쉽지 않다.)
03-3-7 실시간 시스템
실시간시스템은 위의 시스템들과는 별개로, 무엇인가를 개선해 등장했다기보다는 기존 방식과는 다른 작업처리 관점의 시스템이다. 작업처리에 제한 시간을 두는 시스템인데, 어떤 작업을 요청했을때 사용자에게 무조건 답을 줘야만 하는 시스템이다.
- 하드 리얼타임 시스템 : 시간 안에 결과를 보장하지 못하면 큰 문제가 발생하는 시스템
- ex. 원자력발전 관련 시스템, 무기 제어
- 소프트 리얼타임 시스템 : 시간 내에 결과를 보장하지 못해도 심각한 문제를 초래하지는 않는 시스템
- ex. 동영상 인코딩 에러
- Non-real-time task
** KOREATECH 무료 OS강의(클릭) 학습 후 나름대로 이해한 뒤 정리한 내용입니다. **
'CS > Operating System' 카테고리의 다른 글
[ OS 기초 ] 04. 프로세스 스케줄링 (0) | 2021.06.24 |
---|---|
[ OS 기초 ] 03. 스레드 관리 (0) | 2021.06.23 |
[ OS 기초 ] 02. 프로세스 관리 (0) | 2021.06.23 |
[ OS 기초 ] 01. OS개요(2) (0) | 2021.06.21 |
[ OS 기초 ] 00. CS 개요 (0) | 2021.06.17 |
댓글