본문 바로가기

Operating System [OS]

[OS] 01. Operating System Structures

Operating System Services

OS는 프로그램 실행을 위한 환경과 프로그램에 대한 서비스를 제공

  • User Interface 사용자 인터페이스
  • Program Execution 프로그램 실행
  • I/O operations 입출력 장치 작동

OS는 사용자에게 도움이 되는 기능을 제공

  • File-system manipulation 파일 시스템 조작
  • Communication (IPC) 프로세스 간의 통신
  • Error detection 오류 검출

OS는 시스템 자체의 효과적인 작동을 위한 기능을 제공

  • Resource allocation 자원 할당
  • Accounting 계정 관리
  • Protection and Security 보호와 보안

A View of Operating System Services

 

OS는 각각의 역할별 / 모듈별로 구현

시스템 콜 (System Call) : User 공간과 Kernel 공간의 매개체


OS User Interface

CLI (Command Line Interface) : 직접 명령 입력을 허용

  • 커널에 구현 혹은 시스템 프로그램에 의해 구현 / 다양한 Shell로 구현
  • Linux의 BASH, CSH, KSH, TCSH / Windows의 CMD

GUI (Graphical User Interface) : 사용자 친적 (MS Windows, Apple Mac OS X, Unix/Linux 등)

TSUI (TouchScreen User Interface) : 터치스크린 기기용, 제스처 기반, 텍스트 입력을 위한 가상 키보드
Voice Commands Interface


Programming Interface

OS에서 제공하는 서비스에 대한 프로그래밍 인터페이스는 주로 고수준 언어로 작성 (C 혹은 C++)

고수준의 API(Application Programming Interface)를 통해 접근됨
일반적으로 각 시스템 콜에는 번호가 할당
System Call Interface는 이 번호들을 인덱스화한 테이블을 유지
System Call Interface는 OS 커널에서 의도된 시스템 콜을 호출하고 그 시스템 콜의 상태와 리턴값을 반환
사용자는 시스템 콜이 어떻게 구현되는지 알 필요가 없음

System Call Implementation


Linux의 API – System Call 관계

Relation between API and System Call on Linux

 

사용자 프로그램에서 시스템 콜을 하거나 표준 라이브러리 함수를 사용
0x80이라고 하는 소프트웨어 인터럽트를 발생
IDT(Interrupt Descriptor Table)에서 0x80을 찾음
.%eax.(Num) 으로 Num에 맞는 레지스터를 실행

 

C에서 printf( ) 라이브러리 호출을 하면, write( ) 시스템 콜을 호출

 

 


OS Structure

MS-DOS : 간단한 구조

  • 최소한의 공간에서 많은 기능을 제공하기 위함
  • 모듈화 X / 인터페이스와 기능 수준이 잘 분리되어 있지 않음

UNIX : Monolithic Structure

  • 시스템 프로그램 + 커널
  • 커널은 System Call Interface 아래 ~ 물리적 하드웨어 위 사이의 공간 모두
  • 파일 시스템, CPU 스케줄링, 메모리 관리 등의 기능 제공
  • 여러 기능을 1개의 Level에서 제공
  • 장점 : 빠르고 효율적
  • 단점 : 유지보수가 어려움

Layered

  • 모듈화를 통해 각 계층은 바로 아래 계층에서 제공하는 기능(연산)과 서비스만 사용
  • Layer 0 : 하드웨어
  • Layer N (highest) : User Interface
  • 장점 : 구축과 디버깅의 단순함 / 각 계층은 하위 계층이 제공하는 기능(연산)만을 통해 구현
    각 계층은 이 연산들이 어떻게 구현되었는지 알 필요가 없음
  • 단점 : 각 계층의 기능을 명확히 정의하기 어려움 / 주의 깊은 설계가 요구
    순서대로 기능이 수행되므로 효율성(성능)이 떨어짐

Microkernel System Structure

  • 커널에서 사용자 공간으로 더 많이 이동함
  • 예시 : CMU의 Mach / Mac OS X Kernel (Darwin)은 Mach를 기반으로 함
  • 사용자 모듈 간의 메시지 패싱(Message Passing)을 통해 통신
  • 장점 : 확정성 / OS를 새 아키텍처로 이식하기 쉬움 / More Reliable (커널 모드에서 실행되는 코드가 적음) / More Secure
  • 단점 : 사용자 공간에서 커널 공간으로 통신하는 성능 오버헤드 / 속도가 느림

Modules

  • 많은 최근 OS는 로드 가능한 커널 모듈(Loadable Kernel Modules)을 구현
  • 객체 지향 접근 방식 사용 / 각 핵심 구성요소는 분리
  • 서로 알려진 인터페이스를 통해 통신 / 필요할 때 커널에서 로드가 가능
  • 전반적으로 Layered랑 유사하지만 More Flexible (예시 : Linux, Solaris 등)

OS Examples

리눅스 시스템 구조

  • 유닉스에 기반, glibc 표준 C 라이브러리를 이용하여 시스템 콜 인터페이스를 이용
  • 모듈식 구조
  • 단순하지만 확장이 어려움
  • SCI 오버헤드가 없고 커널 내 통신이 빠름
  • 속도와 효율성 높음

Modules Approach (Linux & Android)

  • 모듈화 커널 접근법은 계층 구조 접근법과 유사
  • 계층이 없고 접근이 제약 없이 자유로움

Hybrid Systems

  • 대부분의 현대 OS는 순수한 하나의 모델이 아님
  • 성능, 보안, 사용성을 위해 여러 접근 방식을 결합
  • Linux와 Solaris는 커널 주소 공간에서 작동하는 Monolithic이지만 동적 로드를 위해 모듈화를 결합
  • Windows & Mac OS는 거의 Monolithic

Mac OS X Structure

  • 애플 Mac OS X는 혼용 시스템 / 계층 구조
  • Aqua 인터페이스는 응용 환경과 서비스 제공
  • Cocoa는 프로그래밍 언어를 위한 API 제공
  • 커널 환경(Darwin)은 주로 Mach 마이크로 커널과 BSD UNIX 커널
  • 커널 환경은 장치 드라이버 및 동적 적재 가능 모듈(Mac OS에서 커널 확장이라고 함) 개발을 위한 I/O 키트를 제공
  • 메시지 전달 오버헤드를 줄이기 위해 단일 주소 공간으로 결합

iOS : 애플 모바일 OS

  • Mac OS X 기반으로 기능을 추가 / OS X 앱은 native로 실행되지 않음, 다른 CPU 아키텍처에서 실행됨
  • Cocoa Touch : 앱 개발을 위한 Objective-C API
  • Media services : graphics (openGL), 오디오, 비디오를 위한 계층
  • Core Services : 클라우드 컴퓨팅과 데이터베이스를 제공
  • Core OS : Mac OS X 커널을 기반으로 함

Android

  • 구글의 주도로 Open Handset Alliance에서 개발 / 오픈 소스
  • 모바일 앱을 개발하기 위한 프레임워크를 제공하는 소프트웨어 계층 구조로 이루어짐 (iOS와 유사)
  • 제일 하위 계층은 Linux 커널로 프로세스, 메모리, 장치 드라이버 지원과 전력 관리 기능이 추가
  • Android 실행 환경은 라이브러리와 Dalvik 가상 기계를 포함
  • 소프트웨어 설계자는 Java를 사용하여 앱 개발
  • Java 바이트코드로 컴파일된 후 Dalvik 가상 기계에서 실행

'Operating System [OS]' 카테고리의 다른 글

[OS] 06. Threads & Concurrency  (2) 2024.01.02
[OS] 05. Virtual Memory  (2) 2024.01.02
[OS] 04. Main Memory  (2) 2024.01.02
[OS] 03. CPU Scheduling  (3) 2024.01.01
[OS] 02. Processes  (1) 2023.12.31