Operating System 이란?
“An operating system is the layer of systems software sits between the complex hardware and all of the applications.”
운영체제는 복잡한 하드웨어와 모든 어플리케이션 사이에 위차하는 시스템 소프트웨어 레이어이다.
기능들은 다음과 같다.
- hide hardware complexity: os는 하드웨어들을 추상화한다.
e.g.) 스토리지를를 file로, 네트워크를 socket으로 - resource management: os는 리소스들을 관리한다.
e.g.) cpu 스케쥴링, 메모리 관리 등 - provide isolation & protection to applications: os는 어플리케이션들에게 독립된 공간을 제공한다.
- directly has privileged access to hardware: 직접 액세스할 수 있는 권한이 있다.
- manages hardware on behalf of applications according to policies: 어플리케이션의 동작에서 하드웨어들을 미리정의된 정책에 맞게 관리한다.
하드웨어 자원들에 대해 쉽게 이름을 붙이고, : 추상화(Abstractions)
미리정의된 로직, 알고리즘 또는 룰에 맞게, : 정책(Policies)
운영체제와 관련되어 있는 요소들을 관리한다. : 관리(Arbitration or Management)
OS Elements
Abstractions:
process, thread, file, socket, memory page
Mechanisms:
create, schedule, open, write, allocate
Policies:
least recently used(LRU), earliest deadline first(EDF)
Examples
OS Protection Boundary: User/Kernel
user level(unprivileged mode): applications
kernel level(privileged mode): OS kernel, privileged direct hardware access
user-kernel switch(transition)
OS Types
-
Monolithic OS: Kernel이 memory management, device driver, file management, process/thread, scheduling, random i/o filesystem, sequential i/o filesystem 등의 모든 기능을 다 갖는 구조
-
Modular OS: Kernel이 기능을 모듈별로 관리하고, 모듈을 외부로 부터 설치할 수 있는 구조
-
Microkernel: Kernel이 오직 application들을 실행하기 위한 기본적인 address space, threads 관리하는 기능만을 갖고, 나머지 기능(filesystem, disk driver 등)은 전부 user 레벨에서 실행되는 구조