OS - OS services

Bomin Seo·2022년 8월 4일
0

User Interface Service (OS의 기능 중 일부)

  • Command Line Interpreter(CLI)
  • Bourne Shell(UNIX의 CLI), bash(LINUX CLI)
  • Graphical User Interface(GUI)
  • Touch Screen interface

System Program

  • 프로그램의 실행과 개발에 편리한 환경 제공
  • File manipulation : 파일 탐색기 등
  • 상태 정보는 때때로 file modification에 저장된다.
  • 프로그래밍 언어를 지원한다(LINUX, UNIX 등)
  • 프로그램 Loading and execution : Linker and loader
  • communication, background services

Linkers and loaders

  • compiler를 통해 high-level에서 기계어로 번역
  • linker를 통해 object파일과 library를 묶어 실행파일 생성
  • loader를 통해 dll을 엮고 파일시스템에 있는 실행 가능한 파일을 메모리로 올린다.
    • Dynamically linked libraries : .dll in windows / .sa & .so in Linux

Static vs Dynamic linking

  • 컴파일+링킹 : make / build

Static Linking

  • 실행 파일을 만들 때 라이브러리를 포함시켜서 생성
  • 컴파일시 링커가 필요한 라이브러리를 실행파일에 복사
  • 장점 : 미리 컴파일 되어 있기 때문에 컴파일 시간 단축 / 기술 유출 방지
  • 단점 : 실행 파일 내에 라이브러리 코드가 저장되어 메모리 소비가 크다

Dynamic Linking (dll in windows / .sa & .so (shared library) in Linux)

  • 많이 사용하는 라이브러리를 호출할 때는 메모리에 저장된 곳으로 점프하고 동작 후 복귀
  • 장점 : 메모리 효율이 좋아진다. 프로그램을 upgrade하지 않고, dll upgrade만으로 성능향상
  • 단점 : 실행 시간이 늦어진다 / overhead 발생 / 불필요한 코드 추가 / 최초실행시 매우 느리다
    $ gcc -o hello hello.c : dynamic linking(default)된 hello 실행파일이 생성된다.
    $ gcc -o hellos -static hello.c : static linking된 hello 실행파일이 생성된다.

system call service

Interrupt handler

  • interrupt마다 번호가 매칭되어 있어 interrupt가 발생하면 해당 번호의 함수를 실행한다.

  • interrupt 발생시 해당 system call번호를 interrupt handler에 전송한다.

  • 애플리케이션 프로그램의 매개 변수는 stack에 전달한다.

    • kernel에 전달할 때는 stack을 사용할 수 없어 register를 통하여 전달한다.
  • windows의 시스템 콜을 그대로 사용하여 개발하기 보다는 한층 더 framework를 쌓아 개발한다.

    • 사용자 중심의 GUI로 발전했기 때문에 사용이 더 복잡하기 때문이다.

OS Structure

Monolithic Kernel

  • 모든 기능을 한 곳에 모아 동작하도록 개발된 kernel
  • 문제점
    • Soft Engineering Issue : 구조가 복잡해 유지 및 보수, 개발에 문제점이 발생한다.
    • 크기가 크기 때문에 메모리가 많이 필요하여 embedded에 부적합하다.
  • UNIX, LINUX etc

Micro Kernel

  • kernel중 필요한 기능만을 골라 kernel 생성, 코드 복잡도 감소 및 embedded 삽입 가능
  • Micro kernel 위에 다른 OS의 기능을 user mode의 Application program의 형태로 개발
  • 장점 : 파일시스템과 CPU 스케줄링의 간섭 없이 개발이 가능하다
  • 코드 복잡도가 감소하고
  • RT-OS, Mach, Chorus, Linux mk

Modular approach

  • loadable kernel module(LKM), Monolithic과 micro kernel의 중간 형태
  • Kernel을 몇 개로 쪼개거나 kernel이 로딩된 후 작은 부분을 실행시켜 붙인다.

Hybrid approach

  • System V 계열에 BSD계열의 기능을 추가하여 Kernel에 독립적으로 존재하여 hybrid라고 칭한다.
  • Cocoa : user interface / quicktime : 동영상 재생

profile
KHU, SWCON

0개의 댓글