운영 체제란?
-
컴퓨터에서 항상 실행되는 프로그램 (커널)
-
시스템 서비스를 애플리케이션 프로그램에 제공한다.
-
컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층
-
프로세스, 리소스, 유저 인터페이스 등을 관리한다.
정리) 컴퓨터 유저와 컴퓨터 하드웨어간의 중간 매개체 역할을 하는 것
-
참고) 특정 하드웨어의 제어(low-level control)와 구동을 담당하는 일종의 운영체제. 운영체제와 유사하지만 소프트웨어를 추가로 설치 할 수 없는 것 : 펌웨어

운영 체제의 구조
-
GUI,시스템 콜 , 커널, 드라이버,
-
협의의 운영체제(커널) ─ 운영체제의 핵심 부분으로 컴퓨터 부팅 이후부터 계속 메모리에 상주하는 부분
-
광의의 운영체제 ─ 커널 뿐 아니라 각종 주변 시스템 유틸리티(메모리에 상주하지 않는 독립적인 프로그램들)를 포함한 개념
운영 체제의 목적
-
컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공.
- 운영체제가 자원을 효율적으로 관리하고 사용자들에게 고르게 분배하기 때문에 사용자/프로그램의 입장에서는 자신이 컴퓨터를 혼자 점유하고 있는 듯한 환상을 느끼게 된다.
-
하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행
-
컴퓨터 시스템의 자원을 효율적으로 관리
- CPU, I/O 장치, Memory등 (컴퓨터의 자원)을 관리. 효율성과 형평성을 중시
- 사용자 및 운영체제 자신 보호
- S/W도 관리(프로세스,파일, 메시지 등 관리)
** Memory 관리 : 프로그램한테 공평하게 메모리를 나눠주는 것이 아니라운영체제의 판단에 따라 특정 프로그램에 많은 메모리 공간을 할당 할 수 있음.
운영 체제의 분류
- 동시 작업 가능 여부
- 단일 작업(single tasking) : 한 번에 하나의 작업만 처리(옛날, MS-DOS 프롬프트 상에서는 한 명령의 수행을 끝내기 전에는 다른 명령을 수행시킬 수 없음.)
- 다중 작업(multi tasking) : 동시에 두 개 이상의 작업 처리 (현대의 컴퓨터는 다중 작업이 가능하다.)
- 사용자의 수
- 단일 사용자(single user) ex) MS-DOS, MS Window
- 다중 사용자(multi user) ex) UNIX, NT server : 한대의 컴퓨터에 여러 사용자가 터미널 형태로 동시에 접속해서 사용할 수 있음.
- 처리 방식
- 작업 요청의 일정량을 모아서 한꺼번에 처리.
- 작업이 완전 종료될 때까지 기다려야 함.
ex) 초기 Punch Card처리 시스템
- 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용.
- 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐
- Interactive한 방식
- 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS. - 데드라인
ex) 원자로, 공장 제어, 미사일 제어, 반도체 장비 등..
- 실시간 시스템의 개념 확장 : Hard realtime system(경성 실시간 시스템) 어기면 진짜 큰일남 , Soft realtime system(연성 실시간 시스템) 어겼다고 해서 엄청난 문제는 생기지 않음. 하지만 불편함을 초례할 수 있음. ex) 동영상이 끊기는 것
몇가지 용어
Multitasking(multiprocessing) - 여러가지 작업을 처리할 수 있다
Multiprogramming - 메모리 측면을 강조한것, 메모리에 여러 프로그램이 올라가있음.
Time sharing - 시분할. CPU를 강조한 용어
Multiprocess - 작업을 실행하기 위해 둘 이상의 프로세서를 동시에 사용하는 것.
Multiprocessor - 하나의 컴퓨터에 CPU(processor)가 여러 개 붙어 있음.
Multi-core design - CPU안에 레지스터와 캐시를 가지고 있는 CPU 코어를 여러개 있는 것
Process 프로세스 : (실행중인 프로그램)
Processor 프로세서 : CPU를 뜻함.
Symmetric multiprocessing(SMP) - 두 개 이상의 동일한 processor가 하나의 메모리에 연결되고 모두 단일 운영 체제(OS)의 제어하에 함께 작동하는 일종의 병렬 처리 아키텍처. 멀티프로세서 시스템용 특정 아키텍처입니다
운영체제의 예
유닉스(UNIX) : 큰 서버를 위한 운영 체제, 다중 사용자, 다중 프로그램, 하드웨어 관리
- 코드의 대부분을 C 언어로 작성 (어셈블리로 만들기 힘들어서, C를 만들어 유닉스 만듬..)
- 높은 이식성
- 최소한의 커널 구조
- 복잡한 시스템에 맞게 확장 용이
- 소스 코드 공개 (판매용은 공개 x)
- 프로그램 개발에 용이
- 다양한 버전 : FreeBSD, SunOS, Solaris, System V , Linux
DOS(Disk Operating System)
- MS사에서 1981년 IBM-PC를 위해 개발
- 단일 사용자용 운영체제, 메모리 관리 능력의 한계(주 기억 장치: 640kb)
MS Windows
- MS사의 다중 작업용 GUI 기반 운영 체제
- Plug and play, 네트워크 환경 강화
- DOS용 응용 프로그램과 호환성 제공
- 풍부한 자원 소프트웨어
- 불안정성(초창기.. 지금도 가끔 블루스크린. 유닉스는 그런게 없음)
Handheld device를 위한 OS : AndroidOS, iosOS, PalmOS, Pocket PC(WinCE), TinyOS
운영 체제의 구조

컴퓨터 시스템은 크게 내부 장치와 외부 장치로 나눌 수 있다.
- 컴퓨터 내부 장치(Host): CPU, 메모리
- 컴퓨터 외부 장치(I/O device): 하드디스크, 키보드, 마우스, 모니터, 프린터 등..
운영체제는 이런 컴퓨터를 다루기 위해 그림에서 보듯 여러가지 일을 한다.
1. CPU 스케쥴링
2. 프로세스 관리
3. File 관리
4. I/O 관리
5. 네트워킹, Security, Command Line 해석
운영체제는 결국 이런 컴퓨터 시스템을 전부 다루는 것. S/W와 H/W는 운영체제의 통제를 받음.
현대의 컴퓨터 환경
Virtualization 가상화 기술
현대의 컴퓨터는 하드웨어의 발전이 엄청 이루어졌다. 하나의 컴퓨터에 이제는 한개의 OS가 아니라 몇개의 OS가 올라 갈 수 있게 만들어 주는것. 이걸 VMM(Virtual Machine Manager)를 통해 가능하다.

즉 하나의 컴퓨터에 여러개의 운영체제를 돌리는 것
VMM : VMware , XEN , WSL , Hyper-V 등...
Mobile Computing : 스마트폰(ios, Android)
Client-Server Computing : client들이 server에 붙어서 통신. (웹이 대표적 - request, response)
Peer-to-Peer Computing : P2P (Torrent) , BlockChanin
Cloud Computing : AWS, Azure, GCP, NaverCloud
- 컴퓨팅 자원은 전부 클라우드에 있고 내 컴퓨터는 네트워크를 통해 서비스를 제공받음.
Real-Time Embedded Systems : 화성탐사 로봇의 시스템.