[OS] Ch2_OS

윰지·2020년 6월 25일
0

OS_운영체제

목록 보기
2/13

Operating System Services


  1. User interface
    CLI(Command-Line Interface), GUI(Graphical User Interface), 그리고 Batch Interface로 나눌 수 있다.
  2. Program execution
    시스템은 프로그램을 메모리에 로드하고 실행하며 끝낼 수 있어야 한다.
  3. I/O operation
    프로그램이 입출력을 필요로한다면, 운영체제는 명령을 수행해야 한다.
  4. File-system manipulation
    파일을 읽고, 쓰고, 만들고, 지운다. 사용자가 파일에 접근하지 못하도록 막기도 한다.
  5. Communications
    프로세스끼리 정보를 교환할 때 운영체제는 공유 메모리(Shared memory)나 메세지 파싱(Message passing)이라는 방법을 사용한다.
  6. Error detection
    CPU나 메모리와 같은 하드웨어, 입출력장치, 그리고 사용자 프로그램 등에서 일어나는 에러를 탐지하고, 바로잡아야한다.
  7. Resource allocation
    여러 사용자나 작업을 동시에 처리해야 한다면 자원은 잘 배분되어야 한다.
  8. Logging
    시스템은 어떤 유저가 어떤 종류의 자원을 얼마나 사용하고 있는지 추적해야 한다.
  9. Protection and security


Interrupt vs Exception


Interrupt

  • 하드웨어 장치가 만들어내는 신호
  • Asynchronous
  • 컴퓨터는 interrupt 기반으로 돌아간다.

Exception(=Software Interrupt)

  • 하드웨어가 아닌 소프트웨어가 instruction을 실행하다가 발생하는 문제
  • Synchronous : 딱 instruction을 실행하려는 그 시점에서 발생
  • Trap(expected, inteded)
  • Fault(unexpected)

=> 둘 다 kernel mode로 바뀐다.

System Call


System Call이란?

  • 커널과 사용자 프로그램을 이어주는 인터페이스 역할을 한다.
  • synchronous
  • Application Programming Interface(API)를 써서 운영체제한테 요청한다.
    • Most common APIs
      • Win32 for Window variants
      • POSIX API for POSIX-based systems
      • Java API for the Java virtual machine(JVM)

System Call - OS Relationship
User program이 운영체제랑 system call interface를 통해서 운영체제가 제공하는 서비스를 요청하고 그것을 반환한다.

Types of System Calls
시스템콜의 범주는 Process control, File management, Device management, Information maintenance, Communications, Protection 등으로 묶을 수 있다.

Separating Policy and Mechanism


  • OS와 system software design에서 중요한 원칙
  • Policy와 mechanism을 잘 분리한 것이 잘 만든 OS
    • policy
      • what should be done?
      • Policy decisions are important for all resource allocation and scheduling problems
      • 상황에 따라 변한다.
    • mechanism
      • how to do something?
      • The tool for implementing a set of policies
  • Example : CPU scheduler
    • switch process
      - Policy(what)
      - Scheduling algorithm(FIFO, SJF, priority scheduling)
      - Quantum size
      - Mechanism(how)
      - Dispatcher for low-level context switching
      - Measure job length
      - Priority queues

Operating System Structure


Simple Structure : MS-DOS

  • 작은 메모리 공간에 효과적이고 핵심적인 기능을 구현
  • 잘 모듈화로 구분되어 있기 보다는 덩어리로 구현
  • 컴퓨터의 HW를 직접 건들수 있었다.
  • single tasking, single memory


Layered Approach

  • 운영체제 내부 구조를 layer로 구분()
  • 어떤 한 레이어는 자신의 바로 다음 레이어에만 접근할 수 있다.
  • layer를 거쳐야 하는 과정이 많아서 성능이 안좋다.


Monolithic : UNIX

  • kernel을 중심으로 위로는 system call interface가 있고 아래는 HW를 interface를 한다.
  • 운영체제가 해야하는 수많은 기능을 하나의 level에서 처리한다.
  • 성능이 좋다.
  • 큰 프로그램이 복잡하게 얽혀있다보니 코드들 간에 interdependency가 생기는 경우가 있다. -> 코드 관리, 보안이 복잡하게 되어있다.
  • security, reliability : OS 한 부분만 잘못되도 전체가 잘못될수도 있다.


Microkernel

  • 운영체제 핵심 부분을 작게 만들자.
  • module structrue라 필요한 부분만 추가하고 관리하기 쉽다.
  • 서로 communication하기 위한 overhead가 크다.
  • CMU, L3/L4

Modules

  • loadable kernel modules의 약자
  • 운영체제 일부 기능을 동적으로 올렸다 내렸다 할 수 있는 기능
  • 리눅스가 굉장히 잘 되어 있다.

Hybrid System

  • 리눅스 monolithic지만 module을 가지고 있다.
  • 윈도우는 monolithic이지만 microkernel을 가지고 있다.
  • MacOS는 layerd 등 여러 가지 가진다.

0개의 댓글