[운영체제] OS 구조

Seokjun Moon·2023년 4월 7일
0

운영체제

목록 보기
7/23
post-custom-banner

Monolithic

내부를 알 수 없는 하나의 코드 덩어리를 의미합니다. 유닉스가 이 구조입니다. 유닉스는 크게 System programs 와 kernel 두 부분으로 나눌 수 있습니다. 커널의 기능이 엄청 많아서 차지하는 비율이 큽니다. 예전 유닉스 시스템은 아래처럼 두 파트로만 나뉜 구조였습니다.

현재 리눅스 구조는 조금 더 나뉜 구조입니다.

Monolithic 의 장단점은

  • 장점 : 단순합니다. 개발하기 쉽습니다.
  • 단점 : 유지보수가 어렵습니다.

단점에 비해 장점이 압도적이라 지금도 많이 사용됩니다.

Layered Approach

OS를 layer(level) 에 따라 나누고 각 레이어에서 처리하는 방식입니다. 컴퓨터 네트워크에서는 성공한 방식입니다. 대표적으로 ISO - OSI 7 layer 이 대표적입니다. 네트워크 통신을 7단계 (PHY, Data Link, Network, Transport, Session, Presentation, Application)로 나누어 처리합니다. 하지만 OS 에서는 정의와 오버헤드의 문제 때문에 성공하지는 못했습니다.

Microkernel

말 그대로 작은커널 입니다! 커널을 유저 영역으로 좀 더 이동한 방법입니다. 시스템 자원 관리(메모리, 디스크, 입출력) 같은 핵심 기능들만 커널 내에 구현하고, 그 외 기능들은 커널 외부(유저 영역)에서 실행될 수 있도록 모듈화 합니다. message passing을 사용하여 유저 모듈 사이의 통신을 합니다.

장점으로는

  • 확장성이 좋습니다.
  • 새로운 아키텍쳐에 OS를 연결하기 쉽습니다.
  • 커널에서 실행되는 코드가 적기 때문에 안전성이 높습니다.
  • 위와 같은 이유로 신뢰성도 높습니다.

하지만 단점이

  • 유저 <-> 커널 전환이 많아 오버헤드가 발생합니다.
  • 오버헤드로 인해 매우 느립니다.

Micro-architecture(Mach) 가 마이크로 커널의 한 예시라고 할 수 있습니다.

Modules

리눅스가 바로 이 구조라고 할 수 있습니다. 현대의 많은 OS는 Loadable Kernel Modules (LKMs) 로 구현하고 있습니다.

  • 객체 지향 접근을 사용합니다.
  • 필요할 때 커널에 core component를 추가시킵니다.
  • 각각의 core component는 별도로 존재합니다.


이런 식으로 커널에 객체들이 붙어있는 느낌입니다.

Hybrid Systems

요즘의 운영체제는 하나의 모델만을 사용하진 않습니다. 성능, 보안, 사용성을 위해 여러 구현 방식을 결합해서 구현됩니다. 예를 들어

  • Linux : Monolithic + Modules (일부 기능의 동적 로딩을 위해)
  • Windows : Monolithic + Micro-Kernel 방식 (OS personalities라는 별도의 하위 시스템을 user-mode process 형태로 지원하기 위해)
  • MacOS : hybrid + layered + Aqua UI + Cocoa programming environment

맥의 경우를 그림으로 나타내면

이런 느낌입니다.

OS Debugging

디버깅은 에러나 버그를 찾고 고치는 과정을 의미합니다. 운영체제는 에러 정보를 포함하는 log file을 생성합니다. Failure에는 2가지가 있습니다.

  • Core dump : 어플리케이션 실패 > 프로세스 메모리 캡쳐
  • Crash dump : OS 실패 > 커널 메모리 캡쳐
profile
차근차근 천천히
post-custom-banner

0개의 댓글