sliver__

2.8 Operating System Structure 본문

CS/운영체제

2.8 Operating System Structure

sliver__ 2023. 10. 22. 13:21
728x90

Monolithic Structure

 

Unix System Architecture

Kernel / System program 파트로 나뉜다.

하나의 address space에 여러 functions들이 결합되어있다.

Linux System Structure

Monolithic kernel은 확장성이 없다. 하지만 성능이 좋아 지금까지도 사용되고 있다.

 

 

Layered Approach

Monolithic kernel은 tightly coupled system이다.

System을 modular 하는 방법 중 하나는 layered approach 이다.

 

A layered operating system

장점은 하나의 module이 변해도 다른 module에 영향을 미치지 않는 점이다.

그리고 구성 및 디버깅이 쉽다.

각 Layer는 lower-level layer만 알고 구현하면 된다. 그러므로 각 layer는 data structure, operations, hardware를 higher layer로 부터 숨길 수 있다.

하지만 pure layered는 성능 overhead가 있어 불가능하다. 

 

Microkernels

OS 커널의 불필요한 구성을 제거하고 분리된 address space에 user level program을 구현했다. 그 결과 kernel size가 작아졌다.

Mircokernel

Application과 File system간 메세지를 주고 받아 통신하는 구조이다.

장점은 커널 변경없이 OS 기능 확장을 user space에 추가하면 된다. 

그리고 커널이 작기 때문에 이식성이 좋다.

단점은 system function overhead가 크다.

메세지 복사와 process switching이 가장 큰 비용이다.

 

Modules

현재 OS 방식은 loadable kernel modules(LKMs) 방식이다.

boot time 또는 run time에 모듈을 통해 서비시를 core component와 link하는 방식이다.

아이디어의 핵심은 kernel이 core service를 제공하고 다른 서비스들은 dynamically하게 동작된다.

Layered sytstem보다 유연하다. 왜냐하면 하나의 모듈이 다른 모듈을 호출할 수 있기 때문이다.

Message passing 없이 모듈끼리 호출이 가능하다.

Linux는 device driver와 file system에서 LKMs 방식을 사용한다.

LKMs는 run time 또는 boot time에 kernel에 "inserted" 된다 !

 

 

Hybrid System

- MacOS and IOS-

Architecture of Apple's macOS and iOS operating system

User experience layer

- user와 computing device간 S/W interface.

 

Application frameworks layer

- Cocoa & Cocoa Touch framework. Objective-C 와 Swift program language로 구현됨. 

- Cocoa : macOS application, Cocoa Touch는 mobile device의 hardware feature 지원

 

Core framework

- graphic & media 지원 ( Quicktime, OpenGL)

 

Kernel environment

- Machmicrokernel 과 BSD UNIX kernel 포함 ( Darwin이라 부름)

 

MacOS 와 iOS의 차이

- MacOS는 Intel architecture 위에서 돌도록 컴파일됨.

- iOS는 mobile device이므로 ARM-based architecture로 컴파일 됨.

- iOS OS가 더 제한적임

 

Darwin 은 layered system 이고 Mach microkernel + BSD UNIX kernel 로 구성된다.

The structure of Darwin

보통 OS는 kernel과의 system-call interface는 하나이지만 Darwin은 두 개임.

Mach system call (traps) + BSD system call (POSIX functionality).

Mach는 memory management + CPU scheduling + IPC (RPCs) 를 제공

Mach에서 제공하는 많은 기능들은 kernel abstractions이 되어있다. 

Mach + BSD는 device driver와 dynamically loadable modules의 I/O 개발이 가능하다. ( kernel extension, kexts)

Mach는 여러 subsystem이 user space에서 돌아가므로 pure microkernel은 아니다.

Message passing이 발생하지만 same address space에서 service가 제공되므로 copy가 필요없다.

 

Andorid

 

Architecture of Google's Andorid

Bionic 은 Andorid를 위한 Standadrd C library 이다.

Linux Kernel은 mobile system에 특별히 필요한 지원을 위해 사용된다. ( power management, memory maangemen&allocation )

 

WINDOWS SUBSYSTEM FOR LINUX

Window 10에서 WSL를 지원하고 native liunx applicaton(ELF binary)를 지원한다.

Windows Pico process에서 동작한다. 해당 프로세스는 native Linix binary를 process의 address space에 laoad하고 Linux application이 실행할 수 있느 환경을 제공한다.

Pico process는 LXCore와 LXSS 서비스와 통신한다. 이는 Linux system call로 변환하고 native Window system call이 사용가능한지 확인한다.

LXSS는 Linux system call과 1대1인 관계에 있는 Window system call이 있으면 Windwo kernel로 전달해서 실행한다.

하지만 완벽히 동일하지 않다면 비슷한 system call을 호출한다.

예를들어, Linux fork와 Window CreateProcess는 완벽히 같지는 않지만 비슷한 system call이다.

fork()가 WSL에서 수행되면 LXSS service는 fork()의 초기 작업을 수행하고 CreateProcess()를 호출한다.

WSL fork 호출

728x90

'CS > 운영체제' 카테고리의 다른 글

3.3 Operations on Processes  (1) 2023.11.01
3.2 Process Scheduling  (0) 2023.10.24
3.1 Process Concept  (0) 2023.10.23
2.10 Operating-System Debugging  (0) 2023.10.22
2.9 Building and Booting an Operation System  (0) 2023.10.22
Comments