3 분 소요

7. 운영체제 구조

1. Simple structure (단층 구조)

  • monolithic 구조 – 많은 기능들이 하나의 계층으로 구현됨
  • 많은 사용 운영체제가 잘 정의된 구조를 갖지 않음

2. Layered structure

  • monolithic 구조의 반대 개념
  • 운영체제가 여러 계층으로 구분됨
  • 각 계층은 하위 계층 위에 구축됨

3. Microkernel

  • 필수적이 아닌 구성 요소를 커널에서 모두 제거하고 시스템 및 사용자 수준 프로그램으로 구현함 → smaller kernel
  • 독립된 커널이여서 고치기가 쉬움

Simple Structure – MS-DOS

명령줄 인터페이스(Command Line Interface)를 사용하여 사용자와 상호 작용하며, 파일 및 디렉토리를 관리하고, 프로그램을 실행하는 등의 기본적인 기능을 제공

최소 공간에 최대 기능을 제공하도록 작성 → 모듈들로 구분되지 않음 인터페이스와 functionality 계층이 잘 분리되어 있지 않음 → 운영체제를 거치지 않고 BIOS를 사용하여 입출력 가능

기능이 제한적인 8088 CPU 사용 → 악의적이거나 오류가 있는 프로그램에 취약함

image

Simple Structure – UNIX

초기에 하드웨어 기능에 제한이 있었으며 제한된 구조를 가짐

UNIX의 구성

Kernel과 System program으로 구성 Kernel은 여러 인터페이스와 장치 드라이버로 분리되어 확장됨

UNIX Kernel

the system-call interface 아래와 physical hardware 위의 모든 부분 한 계층에서 많은 기능을 제공

  • the file system, CPU scheduling, memory management, and other operating-system functions

monolithic 구조의 장단점

  • 장점 – 성능(커널 내부 통신 오버헤드가 거의 없음)
  • 단점 – 구현과 유지보수가 어려움

image

Layered Approach

Layered 구조

  • 최하위 계층(layer 0) = 하드웨어
  • 최상위 계층(layer N) = 사용자 인터페이스

Modularity

각 계층은 하위계층에서 제공하는 함수와 서비스만 사용함

image

Layered Approach의 장단점

장점 - 구현과 디버깅이 간단함

  • 하위계층의 연산이 어떻게 구현 되었는지 알 필요가 없음
  • 하위계층 연산이 무슨 동작을 하는지만 알면됨
    • 컴퓨터 네트워크 프로토콜과 웹 응용 구현에 성공적으로 사용된 방법

단점

  • 각 계층을 적절히 정의하는 것이 어렵고, 명확하지 않을 수 있음
  • 덜 효율적 - 계층별 시스템 호출 오버헤드
  • 이러한 제한점으로 최근에 이 방법에 대한 부정적 평가 → 많은 기능을 가진 적은 수의 계층으로 설계

Microkernel

커널의 필수적이 아닌 많은 부분을 사용자 공간으로 이동 → small kernel

Microkernel의 기본 기능

  • 사용자 모듈과 사용자 공간에서 수행하는 서비스 간에 통신 기능 제공
  • message passing 사용

image

Microkernel 개발 이유

  • UNIX 커널이 확장되면서 관리하기가 어려워짐
  • Carnegie Mellon University (CMU)에서 이를 해결하기 위해 microkernel 방식의 Mach 커널 개발

Microkernel의 장단점

장점

  • 확장이 용이 - 새로운 서비스는 사용자 공간에 추가
  • 운영체제 이식이 용이 - 작은 커널이므로 변경 부분이 적음
  • 높은 신뢰성과 보안성
    • 커널 모드에서 수행되는 코드가 적다
    • 대부분의 서비스는 사용자 프로세스로 실행됨 → 서비스가 잘못되더라도 다른 부분에 영향이 없음

단점

  • 시스템 함수 오버헤드로 인한 성능 저하
    • 사용자 공간과 커널 공간 간의 통신 오버헤드, 프로세스 전환 오버헤드

Modules

  • kernel 구성
  • loadable kernel module(LKM)
  • 모듈 인터페이스의 특징
  • layered 구조와 유사하지만 더 유연성이 있음
    • 잘 정의되고 보호된 인터페이스를 가지는 점에서 layered 구조와 유사
    • 모듈은 임의의 다른 모듈을 호출할 수 있으므로 유연성이 있다.
  • microkernel approach과 유사하지만 더 효율적
    • 핵심 모듈은 핵심 기능만 가지고 있는 점에서 microkernel 구조와 유사
    • 모듈이 message passing을 사용하지 않으므로 더 효율적

8. 운영체제 디버깅

디버깅

  • 오류를 발견하고 수정하는 것

장애 분석

  • log file - 프로세스가 실패하면 오류 정보를 기록
  • core dump 파일 - 오류 발생 프로세스의 메모리 내용을 저장
    • 초창기의 컴퓨터에서 메모리를 core라고 부름
  • crash dump file - 커널 장애시에 커널 메모리 내용을 저장
    • 커널 장애를 충돌(crash)라고 부름

성능 조정도 디버깅 작업에 포함

  • 병목 지점을 제거하여 시스템 성능을 최적화 가능
  • OS와 bottleneck을 발견하기 위하여 시스템 성능 측정 및 표시 유틸리티를 사용해야 함 (ex) top (unix), windows task manager(작업관리자)

추적

  • dtrace : Solaris, FreeBSD, Mac OS X에서 제공되는 사용자 프로세스와 커널에 동적으로 탐색점을 추가할 수 있는 유틸리티
  • strace : 시스템 호출 추적이 가능한 Linux 유틸리티

9. 운영체제 생성

운영체제 구성

  • 운영 체제는 다양한 구성을 가진 모든 종류의 시스템에서 실행되도록 설계됨
  • 운영 체제는 특정 컴퓨터를 위해 구성 되어야 함

운영체제 생성

  • 운영체제 배포 – 디스크, CD-ROM, DVD-ROM, 또는 ISO image 형태
  • 하드웨어 구성 정보
    • 구성 파일을 읽거나, 직접 하드웨어를 검사하여 얻음
  • 운영체제 3가지 생성 방법
    • 소스코드 수정 후 완전히 다시 컴파일
    • 구성 테이블 생성
      • 미리 컴파일된 라이브러리에서 필요한 모듈 선택 후 링크함
      • 코드가 재컴파일 되지 않음
    • 완전한 테이블 방식
      • 모듈 선택이 실행 시에 일어남

10. 시스템 부트

Bootstrapping(booting)

커널을 적재하여 컴퓨터를 시작하는 절차

Bootstrap loader

  • 커널을 찾아서 메모리에 적재하고 수행을 시작하는 일을 하는 ROM에 저장된 코드
  • 대개 시스템을 진단하는 작업을 수행하고, 시스템 전체를 초기화 한 후에 운영체제를 시작시킴

Firmware

  • bootstrap 코드의 변경이 가능하도록 ROM대신 EPROM에 저장함
  • 하드웨어와 소프트웨어의 중간 특성을 가져서 Firmware라고 부름
  • 실행속도가 RAM에서 실행하는 것보다 느려서 대개 빠른 수행을 위해서 RAM에 복사하여 실행함

운영체제 저장 위치

운영체제는 대개 디스크에 저장하지만, 일부 시스템은 운영체제 전체를 EPROM/flash메모리에 firmware로 저장함

시스템 부트 과정

다단계 부팅 과정

  1. bootstrap loader : reset location in ROM
  2. simple boot code : single block at block 0 of a boot disk.(boot block)
  3. complex boot code (full bootstrap program)
    • (예) GRUB (Grand Unified Bootloader)
  4. operating system kernel

UEFI (Unified Extensible Firmware Interface)

  • BIOS를 대체할 목적으로 개발됨
  • 파일 시스템을 지원하여 boot sector에 의존없이 OS 커널 부팅 가능

태그: ,

카테고리:

업데이트:

댓글남기기