1. Operating System
본격적으로 OS에 대해 정리하기에 앞서 정의와 간단한 개념에 대해 살펴보자.
Definition(Wiki, 2012)
OS는 hardware 와 user 사이의 interface이다.
- OS는 activity들을 관리/조직하고 컴퓨터 resource들을 공유한다.
- Machine에서 실행중인 각종 applications(guest)의 host처럼 작동한다.
- Application이 시스템의 details들을 알지 않고도 host인 OS가 이런 복잡한 details들을 쉽게 핸들링 해준다.
Definition(Wiki, 2022)
OS는 컴퓨터의 hardware, software resources를 관리하는 system software다. App들에게 commom services를 제공한다.
- OS는 App들과 하드웨어 사이에 있는 중간계층이다. App은 일반적으로 direct하게 하드웨어상에서 실행되지만, 필요에 따라서 운영체제에게 system call을 함으로써 서비스를 요청한다. 반대로 운영체제로부터 interrupt받기도 한다.
System Application과 Computer 하드웨어 사이에 OS가 껴있다.
System Call Interface + Kernel 영역이 OS이다.
Market share
- General-purpose personal systems OS
- MS Windows 75+%
- MacOS 15+%
- Linux ~2%
- Mobile OS
- Google Android(Linux based) 70~90%
- Apple iOS 10+%
- Others ~1%
- Server and supercomputing systems OS
- Linux distributions are dominant.
2. Functions of OS
운영체제의 기능들을 살펴보자. 크게 다음 4가지의 기능을 하고, 중요한 두 가지 기능인 Resource management, Process management에 대해 자세히 살펴보자.
Functions of OS
-
User interface (for user convenience) -> System call interface
- CLI (Command Line Interface) -> 커맨드를 외워서 쳐야함
- CUI (Character (Text) User Interface)
- GUI (Graphical User Interface) -> 바탕화면, 메뉴에서의 클릭, 드래그 등등
- EUCI (End-User Comfortable Interface)
-> HCI (Human-Computer Interaction)
-> UX (User eXperience)
-
Resouce management (for efficiency)
-
(1) Processor management (cpu 관리)
- Process scheduling : 어느 process를 먼저 실행할까?
- Process assignment : 어느 CPU에 할당할까?
-
(2) Memory management
- Multi-user, multi-tasking system 이라면
- Memory allocation / deallocation
- Free space management
- Memory protection
- Memory 관리 기법
- Virtual memory system 쓰는 경우
- Total contiguous allocation
-
(3) File management
사용자는 왼쪽의 tree 형태로 파일을 보지만, 커널 관점에서는 오른쪽과 같이 block들의 sequence로 보기 때문에 바로 밑 하위폴더라고 해도 block들이 멀리 떨어져 있을 수 있다. 운영체제는 사용자가 원하는 파일을 정확히 순서대로 찾아서 사용자에게 보여줘야 한다.
- File/space management 기능들
- Creation/deletion of files/directories
- Support of primitives for file/directory manipulation
- Mapping of files onto secondary storage
- Storage space allocation
- Free space management
-
(4) I/O management
Running process를 App이라고 생각하면 편하다. app이 입출력(키보드 입력, 모니터로 출력 등)이 필요하다면 OS에 System call을 한다. 그럼 OS는 실제 I/O device에게 I/O request를 보낸다. 입출력이 모두 끝나면 I/O devices가 OS로 입출력이 모두 끝났음을 알리는 Interrupt를 보낸다. OS는 Interrupt와 함께 들어온 정보를 App을 Wakeup 하면서 보내준다. 밑의 그림을 보면 이해가 더욱 잘된다.
버퍼풀을 사용하여 Disk 같은 I/O 장치에 접근하는 횟수를 줄일 수 있다.
-
Process management
-
(5) Process management
-
Thread management
-
+Networking / Security&Protection (TCP, IP프로토콜이 OS안에서 제공됨)
3. OS Classification
Linux, Unix, MS Windows 등등 200여가지의 OS를 다양한 기준으로 분류해보자.
OS 분류 기준
- Number of concurrent users
- Single-user system
- Multi-user system
- Number of concurrent porcesses
- Single-tasking system
- Multi-tasking system (Multiprogramming system)
- Job processing mechanism (Computing paradigm)
- Batch systems
- Interactive systems (Time-sharing systems)
- Personal computing
- Parallel/Distributed computing
- Real-time system
- Embedded system
- Mobile computing
- Cloud computing
- Ubiquitous computing
위에서 아래로 쭉 발전해왔다.
Single-user system vs. Multi-user system
- Single-user system
- 유저 한 명만 system을 사용한다.
- 유저가 모든 system resouces를 차지하고 사용하기 때문에 protection mechanism이 굳이 필요없다.
- personal computers에서 주로 사용된다.
- MS-DOS, MS Windows 95/98/10
- Multi-user system
- 많은 유저가 system을 동시에 사용할 수 있다.
- 기기 한 대를 여러 사용자가 같이 사용하기 때문에, 제대로된 Protection mechanism이 필수다.
- Multi-tasking 기능이 필요하다.
- OS functions/facilities가 복잡해진다.
- Unix, Linux
Single-tasking system vs. Multi-tasking system
- Single-tasking system
- 프로세스 한 개만 시스템 상에 존재한다.(현재 실행중인 프로세스가 끝난 후에, 다른 시스템이 실행될 수 있다.)
- Single-user system
- Simple OS structure
- personal computers에 주로 사용된다.
- MS-DOS
- Multi-tasking system
- 여러개의 프로세스가 동시에 실행되야하기 때문에 concurrency control, synchronization mechanisms 필요.
- Complex OS structure
- Unix, Linux
4. OS Structure
운영체제의 구조에 대해 알아보자.
OS structure
- Kernel (운영체제의 핵심 부분. 일반적으로 OS=Kernel이라 해도 큰 문제는 없다)
- OS의 자주 사용되는 기능들 (부팅 이후에 메모리에 상주하는 영역)
- 자원관리와 관련된 기능들(resource management, process management)을 지원한다.
- Nucleus, supervisor program, resident program이라고도 불린다.
- Utilities
- 부팅 후 메모리에 들어가지 않고, 디스크에 남아있다.
- service functions(사용자와의 상호작용 등등의 부가기능)
Booting이란?
5. Dual Mode Operation
운영체제와 관련된 용어/컨셉을 알아보자.
Two separate modes
Interrupt and trap
Interrupt :
- 비동기식 이벤트
- 다른 하드웨어 장치가 CPU와 상관없이 발생시킴
- keyboard event, I/O interrupt, timer ticks
Exception :
- 동기식 이벤트
- 내부적으로 CPU control unit이 명령어의 실행 결과로 자주 발생시킴
- 0으로 나누기, page fault
Privileged instructions
machine instruction들 중에 kernel mode에서만 사용가능한 명령어들을 일컫는다.
6. System Call Interface
System call
- Application/process와 OS 사이의 interface.
- OS가 Application/process에게 제공하는 서비스.
- trap이라는 명령어로 실행된다.
조금 추상적이니 아래 그림을 보자.
박스들이 모두 function이다. OS는 수많은 functions들의 집합인 셈이다. Application은 하늘색부분의 function들만 call할 수 있고 이 function들이 System call function이다. 아래가 system call의 종류들이다.
System calls
- Process control : create, terminate, load, wait, etc.
- File management : create, delete, open, close, read, write, reposition, etc.
- Device management : request, release, read, write, etc.
- Information management : get/set time/date, get process/file/device attributes, etc.
- Communications : create/delete connection, send/receive messages, etc.
System calls, Interrupts, Exceptions
위 내용들을 정리해보자
Device로부터 Kernel로 오는 signal이 Interrupt이다. Interrupt가 들어오면 kernel은 CPU에서 Interrupt handling을 해야하기때문에 cpu로 나가서 interrupt를 핸들링한다. 더 자세한 내용은 다음 챕터에서 다룬다. CPU에서 어떤 오류가 발생하면 kernel에서 Exception handling을 해준다. CPU의 process가 system call을 하면, system call handling이 진행된다.
7. Virtualization
가상화는 운영체제와 가장 밀접한 관련이 있는 기술이기때문에 다룬다.
- 가상머신(os를 가진 실제 컴퓨터 시스템처럼 동작)을 만드는 것 -> 하나의 실제 컴퓨터 시스템처럼 보인다. 가상머신 위에서 실행되는 App들은 물리적으로 존재하는 CPU/MEM을 사용하는 것이 아닌 가상의 resources를 사용한다.
- Host machine (physical machine)위에 guest machine(VM)이 사용된다.
- 단일 컴퓨터 하드웨어를 여러개의 서로 다른 execution environments를 만드는 것.-> illusion
guest machine의 물리적인 CPU/MEM 같은 resource는 없지만 그림을 보면 cpu, mem등 resource가 있고 자체적으로 app들을 서비스한다. 가상으로 존재하는 resource를 사용하는 것이다. 이를 위해서 Virtualization Layer가 필요하다. Virtualization Layer를 Host Os, Hypervisor, VMM이라고 부르기도 하는데 그 차이는 밑에서 알아보자.
실제 OS는 보라색 부분 Hypervisor이다.
Types of virtualization
VM의 Guest OS가 받은 System call은 Physical hardware를 직접 건드릴 수 없기 때문에 Hypervisor를 통해야지만 Hardware로 system call을 전달할 수 있다. 이 때 guest OS에서 hypervisor call로 전환하는 방법에 따라 가상화 종류가 나뉜다.
- Para-virtualization(반가상화) : Guest OS가 Hardware에 접근이 안되니 system call이 hypervisor로 가게끔 Guest OS를 수정하는 방법. -> 성능이 더 좋음
- Full-virtualization(전가상화) : Guest OS가 Hardware를 건드리려고 할 때, exception으로 인지해서 이 exception handling을 hypervisor call로 전환시켜주는 방법으로 guest os를 수정할 필요가 없다.
- Hybrid virtualization : 최소 반가상화, 대부분이 전가상화.
Types of VMM (Hypervisor)
- Type-1 (baremetal) : VMM이 hardware에서 직접적으로 돌아간다. VMM이 직접적인 hardware관리를 해야함.
- Type-2 (hosted) : 기존의 OS를 host OS로 두고, 그 위에서 VMM을 올리고 그 위에 VM을 돌린다. 기존의 만들어진 OS기능(하드웨어 관리 기능 등)을 그대로 활용해보자는 컨셉
- Type-3 (hybrid) : 실제 OS안에 VMM을 embedding 시켜버림.
OS virtualization
kernel이 여러개의 독립된 user-space instances를 만들어 주는 것. 기존의 OS를 그대로 쓴다. 하드웨어 가상화보다 성능이 더 좋다. 하지만 isolation이 하드웨어 가상화보다 더 견고하진 않다는 단점도 있다.
Benefits of virtualization
- 서버 통합
- cost saving
- Isolation을 유지하면서 서버 자원을 효과적으로 사용할 수 있다.
- 관리가 용이함
- Availability/reliability 향상
- Automatic restart, fault tolerance, disaster recovery
- SW 개발 측면 - Testing
Cloud Computing
- SaaS (Service as a Server) : 클라우드에 있는 App을 사용하는 것
- PaaS (Platform as a Server) : 하드웨어 + 개발툴(compiler)
- IaaS (Infrastructure as a Server) : 하드웨어 플랫폼만 빌려주는 것 (cpu만, mem만 etc)