운영체제란?
OS의 정의,목적, 역할
Definition
: User와 H/W의 상호작용을 위해 UI를 제공하는 시스템 소프트웨어로, Human Interface 뿐 아니라 일종의 런타임 환경인 Programing Interface 또한 제공한다.
또한, CPU, RAM, 주변 장치 등 H/W를 효율적으로 관리하는 역할도 맡는다.
Purpose
- 처리능력(Throughput)의 향상 : 일정시간동안 처리하는 일의 양
- 반환 시간(Turnaround Time)의 최소화 : 작업 의뢰 후 시스템에서 결과 반환까지의 소요 시간
- 신뢰도 (Reliability)의 향상
- 가용성 (Availability)의 향상 : 투입이 가능한 유휴 시스템 자원
Role
- 사용자의 H/W접근이 용이하도록 H/W제어, I/O관리 등을 수행함
- 한정된 H/W자원을 다수의 이용자가 공유할 수 있도록 관리하며, 자원 관리의 효율화를 위해 자원 스케줄링을 제공
- 응용 프로그램의 작성과 실행이 편리하도록 System Call을 제공함
- Exception Handling 과정에서 System Halt를 막을 수 있도록 오류 복구 기능을 제공함
- File System/Database 및 Network 기능을 제공함
- Human Interface 제공
OS의 구조와 기능
OS의 구조

-
사용자 는 System의 기능을 이용하기 위해 필요한 응용 프로그램을 실행하거나, shell, GUI, batch 작업 등을 이용해 운영체제의 기능을 간접적으로 사용한다.
-
조금 더 하위 레벨에서는 응용 프로그램 이 System Call을 이용해 커널의 기능을 간접적으로 사용한다.

*Window NT Kernel 구조도
- 운영체제는 다양한 하드웨어에 대한 이식성을 향상하기 위해 하드웨어 추상 계층 (HAL) 을 제공한다. 덕분에, 새로운 하드웨어가 추가되어도 하드웨어 추상 계층만 지원을 해 주면 소프트웨어는 수정 없이 동작할 수 있다.
OS의 기능
- Process, Memory, Device I/O, FS등 리소스 관리 기능을 제공한다
- 자원의 효율적 사용 위해 자원 스케줄링 기능을 제공한다
- LAN, USB, Disk 등 다양한 하드웨어 관리와 네트워크 주소 할당, 네트워크 생성, 경로 설정 등 다양한 네트워크 제어 기능을 제공한다
- File System/DB등을 통해 Data에 대한 CRUD (관리)기능을 제공하며, 파일 및 네트워크와 같은 자원 공유 기능을 제공한다
- 사용자나 프로세스와 같은 데이터 이용 주체자 파일이나 네트워크와 같은 자원에 무분별하게 접근하는 것을 막기 위해 자원 보호 기능을 제공한다
- Disk 및 File System과 같은 시스템의 손상이 있는지 점검하기 위한 오류 검사 기능과 오류 복구 기능을 제공한다
- Resource Idle Time을 최소화 하기 위해 물리적 컴퓨터에 가상의 컴퓨터를 여러 대 실행할 수 있는 Virtualization 기능을 제공한다
OS의 운용 기법
OS 운용 기법의 종류
일괄 처리(1세대) -> 다중 프로그래밍/다중 처리(2세대) -> 시분할(3세대) -> 다중 모드(4세대) -> 분산 처리(5세대)
1세대
일괄 처리 시스템 (Batch Processing System)
- 여러 작업을 한 번에 묶어서 처리
- OS Processing이 시작되면 결과 출력까지 대기해야만 함 ( 멀티 태스킹 불가 ) => 자원 사용의 효율성이 낮음
2세대
다중 프로그래밍 시스템 (Multi Programming System)
- 멀티 태스킹을 통해 자원 사용의 효율성을 높여보고자 탄생
- Batch 시스템이 I/O작업 중 발생하는 CPU idle 시간에 CPU에게 작업을 할당하여 CPU Usage/Availability 향상
다중 처리 시스템 (Multi-Processing System)
3세대
시분할 시스템 (Time Sharing System)
- Time slice/Time Quantum 기법을 이용해 대기 큐에서 작업을 가져와 실행함 (테트리스 구현 기법 생각)
- 사용자 관점에서 더 많은 멀티태스킹이 진행되는 것으로 경험됨
4세대
다중 모드 시스템 (Multi-Mode System)
- 일괄 처리, 다중 프로그래밍, 시분할, 다중 처리, 실시간 처리 시스템을 모두 혼용하여 사용할 수 있는 운용 시스템을 뜻함
5세대
분산 처리 시스템(Distribute Processing System)
- 하나의 운영체제 하에서 여러 개의 프로세서가 하나의 메모리를 공유하는 강결합(Tightly-Coupled)이 아닌, 둘 이상의 독립된 시스템이 통신으로 연결되고 상오작용하는 약결합(Loosely-Coupled)방식으로, 시스템 간 수행해야 할 작업을 분산하고 각 시스템의 자원을 공유하여 처리량, 응답시간, 가용량을 극대화함
- 성능 극대화를 위해 유휴 자원의 효율적 활용 또한 꾀하며, 이를 위해 가상화 기술을 내장하거나, Kernel단에서 지원함으로써, 가상화 시스템 간, 혹은 가상화 시스템과 물리적 시스템 간의 분산 처리 형태로도 이용함
기타
실시간 처리 시스템(Real Time Processing System)
: 작업의 Turnaround Time에 있어 요구 시간 안에 수행해야 하는 시간적 제약을 갖는 운용 방식
- 경성 실시간 처리 시스템(Hard real time processing system) : 제한된 시간 안에 반드시 작업을 처리 완료 해야 하며, 무기 제어, 산업 로봇 등에 사용
- 연성 실시간 처리 시스템(Soft real time processing system) : 제한된 시간 안에 작업이 완료되지 않더라도 시스템에 큰 영향이 없는 시스템을 뜻하며, 동영상 재생 시스템 등이 해당함
OS의 사례
Desktop/Server OS
Windows
- 1975 Bill Gates, Paul Allen. GUI 기반 PC OS
macOS
- UNIX/Darwin 기반 Mac 전용 OS. Steve Jobs&Wozeniak
- NeXT의 NeXTSTEP 후속 OS -> OS X -> macOS (닉변)
Linux
- Linux B. Torvalds : x386 Unix Compatable. 1991.10.05 Linux Kernel 0.02v 뉴스그룹(comp.os.minix)에 발표
- Linux Kernel은 전 세계 개발자들이 공동으로 개발하는 공개 프로젝트 형식으로 진행
- Richard Stallman이 진행한 '리눅스 커널에서 동작하는 Application 개발 프로젝트"인 GNU 프로젝트에서, 이를 패키지로 묶으며 배포판이 릴리즈
- Desktop(Ubuntu, Fedora, Debian, openSUSE) / Server(RHEL, CentOS, Rocky, Ubuntu Server) 등
UNIX
-
1969 AT&T Bell 연구소 Ken Tompson&dennis Ritchie. 교육/연구개발용 범용 다중 사용자 방식 시분할 OS
-
상당수 C로 개발되어 이식성 高. 명령행 인터프리터, 계층적 파일 시스템, 장치와 프로세스 간 통신을 파일을 매개체로 수행하는 특징을 가짐
-
AT&T에서 연구소/대학에 소스코드와 보급하며 다양한 버전의 유닉스가 등장하였음 (System V계열, BSD 계열 등)
Mobile/Embedded OS
Android
- 2005 Android社 구글에서 인수 후 2007년 11월 무료 공개. 다양한 벤더社를 통해 다양한 운영체제로 개발되고 있음
- 48개 HW/SW/통신회사가 모여 만든 OHA(Open Handset Alliance)에서 공개 표준을 위해 개발함
- Linux Kernel + Native Runtime C/C++ Lib + Android Runtime 기반 Application Framework 및 이를 사용하는 Application으로 구성됨
- 스마트폰 및 모바일 기기를 위한 Middleware + UI + Web Browser + Eaim Client + SMS/MMS등의 표준 응용 프로그램을 포함하고 있는 일종의 소프트웨어 스택이기도 함
- 기존의 VM인 Dalvik은 더 이상 채용 않고, Android Runtime이라는 新VM을 채용하여, 이를 기반으로 JAVA/Cotlin으로 개발된 APP을 별도의 프로세스에서 실행하는 구조로 설계되어 있음
iOS, watchOS, iPadOS, tvOS
- iOS : macOS가 모바일 기기에 부적합해 새로 개발한 모바일 전용 OS. iPhone, iPod Touch, iPad 등에 이용
- watchOS : Apple Watch 구동 위한 OS. 작은 화면, 배터리 등 한정된 자원과 다양한 센서 제어 목적의 웨어러블용 OS
- iPadOS : iPad의 역할이 컨텐츠의 소비에서 생산으로 변경하자 이를 충족하기 위해 iPad전용 OS를 별도로 개발함
- tvOS : Apple TV 4세대에서 발표한 Apple TV용 iOS 기반 OS
Tizen
- Intel/Samsung주도로 리눅스 재단, MeeGo 개발자가 합류하여 개발한 리눅스 기반 오픈소스 모바일, 웨어러블, IVI 기기용 OS
- IVI(In-Vehicle Infortainment : Information + Entertainment) : Android Auto 등 Connected Car 기술 생각하면 됨
- 안드로이드 견제 목적으로 개발되었으나 2018 9월 26일 이후 모바일폰 탑재 사실상 중단하고, 스마트TV, 스마트 워치 등에 탑재하여 플랫폼 확산 노력
Embedded Linux
- Raspbian : 라즈베리파이 재단에서 만든 초소형/초저가 오픈소스 하드웨어로서, 라즈베리파이용 Debian기반 OS
- webOS : Palm(HP)에서 시작하여 LG에서 개발 중인 모바일 및 스마트 TV, IoT용 운영체제. 모바일 분야보다는 스마트 TV, 디지털 사이니지(Digital Signage : 공개 공간에서 광고,홍보 등 정보 전달 목적으로 뉴스,광고,재난 정보 등 표시), 스마트 냉장고 등 틈새 영역 디바이스에 탑재하여 확산을 노림
- IVI에는 MS의 Windows Embedded Automotive, QNX, GENIVI, Android Auto, Apple Carplay와 같은 다양한 IVI OS가 존재
IoT OS
Linux
- Android Things : 2016.12.31. 저전력, 한정된 자원, 센서 중심 디바이스에 맞춰 디자인되어 일반적 안드로이드와는 형태가 다름
- Ubuntu Core : IoT를 위해 보안성을 강화하고 가볍고 안정적으로 동작하도록 우분투를 최적화한 OS
Windows IoT
- 기존의 윈도우 임베디드 OS를 IoT에 맞게 최적화한 MS 개발 Window 계열 OS로, Enterprise, Mobile Enterprise, IoT Mobile, Core Edition으로 나뉨
RTOS
- FreeRTOS : 소형 저출력 엣지 디바이스를 쉽게 프로그래밍, 배포, 보안, 연결 및 관리할 수 있는 마이크로컨트롤러용 오픈소스 OS
- VxWorks : US 윈드리버 시스템社 개발/판매하는 실시간 운영체제(RTOS)
- QNX : 임베디드 시장에서 주로 사용되는 UNIX 기반 상업용 RTOS. 첫 상용 마이크로 커널 운영체제로 꼽히고 있으며, 블랙베리 및 자동차 산업에 주로 사용됨
경량 OS
- Contiki : 한정된 메모리, 저전력, 무선통신, IoT 디바이스에 초점을 둔 BSD 라이선스를 갖는 오픈소스 네트워크 운영체제로, 스마트 시티의 여러 시설에 적용되고 있음. (거리조명제어, 사운드 모니터링, 방사선 모니터링, 알람 시스템 등)
- TinyOS : UC Burkley에서 개발한 센서 네트워크형 무료 운영체제. 다양한 하드웨어, MAC 프로토콜, 네트워크 프로토콜, 센서 인터페이스의 소스를 완전 공개하여 지속적으로 발전하는 중임
- RIOT : IoT를 겨냥한 실시간 운영체제. 리눅스가 접근하기에는 어려운 8, 16, 32bit 플랫폼을 타겟으로 함. 특히 32bit 플랫폼의 경우 RAM이 20KB 이하의 매우 작은 하드웨어이다.
리눅스 및 경량 OS 비교
운영체제 |
최소 RAM |
최소 ROM |
C언어 지원 |
C++ 지원 |
멀티쓰레드 |
모듈 |
실시간 |
Contiki |
<2kB |
<30kB |
일부 지원 |
미지원 |
일부 지원 |
일부 지원 |
일부 지원 |
Tiny OS |
<1kB |
<4kB |
미지원 |
미지원 |
일부 지원 |
미지원 |
미지원 |
Linux |
~1MB |
~1MB |
지원 |
지원 |
지원 |
일부 지원 |
일부 지원 |
RIOT |
~1.5kB |
~5kB |
지원 |
지원 |
지원 |
지원 |
지원 |