My Profile Photo

DongChanS's blog


수학과 학생의 개발일지


OS 2 - OS Elements, System Call

Introduce to OS (2)

위 포스트는 udacity의 Introduce to Operating Systems by Geogia Tech 를 참고하였습니다.

추가로 이 곳 을 참고하였습니다.

1. OS Elements

저번까지는 OS가 무엇인지, 그들이 무슨 역할을 하는 것인지에 대해 알아보았습니다.

이번에는 OS가 무엇으로 이루어져있는지를 알아보도록 하겠습니다.

  1. number of high level of Abstraction

    • process, thread

      correspond to the applications that the operating system executes

      (각각의 프로세스는 OS가 실행할 어플리케이션과 대응됨.)

    • file, socket, memory page

      hardware resources들을 추상화한 개념들

  2. corresponding mechanisms

    • create : application 실행을 명령함.

      schedule : application이 실제로 CPU에서 작동하도록 스케쥴링을 함.

    • open : 하드웨어 장치에 접근함.

      write : 상태를 업데이트함.

      allocate: 특정 어플리케이션이 resource에 접근하게 만들어줌.

  3. polices

    하드웨어를 다루기 위해서 어떻게 mechanism을 사용할지에 대한 합의

    ex) 어떤 데이터가 physical memory에서 제거될지 => Least recently uesd

2. OS Elements Example

예시를 통해서 어떻게 OS의 원소들이 동작하는지 알아봅시다.

=> Memory management example

  1. 추상화 : memory page abstraction

    PAGE = Addressable region of memory, fixed size

  2. 메커니즘 : PAGE를 관리하기위한 방식

    • DRAM(physical memory)에 PAGE를 넣기

    • PAGE를 특정 프로세스(address piece of process)에 맵핑

      특정 프로세스와 PAGE가 DRAM을 통해서 대응됨.

  3. policy

    • 메모리에서 데이터에 접근하는게 디스크보다 빠르기 때문에,

      페이지를 메모리에 넣을지, 디스크에 넣을지를 정해줘야함.

    • Swapping : 최근에 쓰인 데이터거나, 가까운 미래에 쓰일 일이 없거나, 중요하지 않을 때 메모리에서 페이지를 카피해서 disk에 저장하는 행위

3. How to design OS

OS를 디자인하기 위해서 고려해야 할 것들.

Separation of mechanism and policy

  • 여러 policy를 활용가능한 유연한 메커니즘을 선택해야함.

    -> 메모리를 관리하기 이전에 이런 policy에 대해서 생각해두자.

Optimize for the common case

  1. 어디에 쓰일 것인가?

  2. 어떤 기계(장치) 내에서 동작할 것인가?

  3. 메모리, CPU 필요

    (예상되는 workload(표준부하))

4. OS protection boundary

어플리케이션에서 하드웨어 리소스를 관리하기 위해서는 다음과 같은 것들이 필요하다.

  1. 모드 구분

    1. User mode - unprevileged mode
    2. Kernel mode - special previlege mode
      • allowed direct hardware access
      • modern platform에서는 hardware를 통해서 1<->2를 스위칭 가능함.
  2. Previlege bit

    • CPU에 있음.
    • 이 비트값을 통해서 커널모드인지 유저모드인지 판단함.
  3. User mode에서의 previleage operation

    • TRAP

      • application 즉시 중단

      • 하드웨어를 통해 유저모드를 커널모드로 변환시켜줌.

      • 왜 트랩이 발생했는지를 조사함

        -> 계속 진행하거나, 중단시키거나.

    • System call : user-mode와 kernel-mode의 interaction을 통칭

      • previleage operation의 예시

        file open, send to perform access to a socket, malloc to allocate memory

    • Signals

      운영체제가 어플리케이션 안쪽으로 알람을 보내기 위한 메커니즘

5. System Call Flowchart

유저 모드와 커널 모드 간의 상호작용인 System call에 대해서 자세히 알아보도록 합시다.

5-1. 실행과정

  1. user process 실행

  2. hardware excess 필요로 함 -> System call

    • Kernel로 이동

    • 조종 권한을 OS에 넘김

  3. System call로 인해서 발생하는 것

    1. OS가 연산을 대신 실행해줌
    2. OS가 연산을 실행하기 위해서 필요한 arguments를 넘겨줌.
      • user program에서 직접 넘겨주는 방법
      • register를 이용해서 넘겨주는 방법
    3. kernel의 메모리 어딘가에 점프함 : system call에서 받은 instruction sequence의 위치로
    4. kernel mode에서 연산을 실행함.
  4. process로 다시 되돌아감.

    1. 3-2에서 받은 argument를 활용해서 다시 user process의 제 위치로 되돌아감.

=> not cheap operation

5-2. system call을 하기 위해서 필요한 것

  • write arguments
  • save relevant data at well-defined location
    • System call을 하기 위한 parameter를 저장해야함.
  • make the actual system call
    • system call number를 이용함.

5-3. 동기화 모드

프로세스가 system call이 끝날 때 까지 계속 기다리는 형태.

comments powered by Disqus