[CS162 OS] Lecture2: Four Fundamental OS Concepts

[CS162 OS] Lecture2: Four Fundamental OS Concepts

Recall

하드웨어는 날이 갈수록 복잡해 지는데, 이렇게 복잡성이 증가할수록 OS의 역할이 매우 중요해졌다.

OS의 역할
  1. OS는 심판 역할을 한다.
    • 자원을 관리해주거나, 다른 프로세스의 자원 접근을 막고, 프로세스를 고립시킨다.
    • 프로세스가 OS에 접근하는 것을 막는다.
  2. OS는 마술사 역할을 한다.
    • OS는 프로세스가 하드웨어의 복잡한 코드를 알 필요가 없게 추상화한다.
    • OS는 서로 다른 하드웨어 드라이버에게 API를 제공함으로써 통일성을 준다.
  3. OS는 본드 역할을 해준다.
    • 스토리지, 화면, 네트워크, 공유 및 인증 등의 매개체 역할을 해준다.
Virtual Machines
  1. VM
    • 모든 하드웨어 설정의 세부 내용을 가상화 함으로써 우리가 OS를 완벽하게 가동할 수 있다.
    • OS를 고립시킨다 -> 변화가 발생하더라도 VM에는 영향이 가지 않는다.
    • 클라우드의 기준
    • host OS를 두고, 가상화 레이어 위에 서로 다른 guest OS를 사용하는 방식을 사용
      • 게스트에 문제가 생겨도 다른 OS에 영향을 주지 않는다.
  2. Container
    • Docker Engine등으로 애플리케이션 뿐만 아니라 시스템도 추상화
    • 컨테이너로 동작시키기 때문에 추가적인 OS 커널을 생성하지 않음

Four Fundamental OS Concepts

OS의 중요한 개념으로 다음의 4가지가 있다.

  1. Threads
    • 실행 문맥, 즉 프로그램의 상태를 말한다.
    • PC, Register, Flags Stack을 개별적으로 간진다. (Heap Data Code 등은 공유한다.)
  2. Address space (with or w/o translation)
    • 프로세스가 접근할 수 있는 메모리 주소 집합
    • 실제 머신의 물리 공간과 구분됨 (translation을 통해 실제 프레임 얻을 수 있음)
  3. Process
    • 동작하고 있는 프로그램의 인스턴스
    • 주소 공간을 방어하고 여러 쓰레드를 가짐
  4. Dual Mode Operaion / Protection
    • 시스템만이 특정 자원에 접근이 가능함
    • translation 기법을 통해 프로세스들을 고립시키고, OS를 프로그램으로부터 고립시킴
Threads
  1. 하나의 특정한 실행 문맥이다.
    • PC, Register, Execution Flag, Stack, Memory State를 가진다.
  2. 쓰레드는 CPU의 레지스터에 resident되면 하나의 CPU 코어에서 실행된다.
    • resident는 레지스터가 쓰레드의 root state를 가지고 있음을 의미한다.
    • PC가 가리키는 Instructions, Stack Pointer가 가리키는 주소 등이 메모리에 있다.
  3. 쓰레드는 CPU에 resident된 상태가 아니면 suspend 되어있다.
    • 이때 프로세서는 다른 쓰레드를 가리키고 있을 것이다.
    • PC의 경우도 다른 쓰레드의 다음 instruction을 가리키고 있을 것이다.
    • 실행되고 있지 않은 쓰레드는 프로세서가 아닌 메모리의 Thread Control Block(TCB)에 저장되어 있다.
Address Space
  1. 주소 공간이란 접근 가능한 주소의 집합과 그들을 관리하기 위한 상태를 뜻한다.

  2. 크게 OS 코드, 스택, 힙, 데이터, 코드를 가지고 있다.

  3. 쓰레드들은 CPU 자원이 아닌 것들을 공유한다. 즉, 주소 공간을 공유하되, 스택만 따로 가짐

  4. 단순한 멀티 프로그래밍은 서로 다른 프로세스간의 접근을 막지 못한다. 그러나 주소 공간을 도입하면 가상 주소이기 때문에 서로 다른 프로세스는 서로의 주소에 접근할 수 없다.
    • 프로세스는 가상 주소를 가지고 수행한다. 실제 프로세서가 메모리에 접근할때, 가상주소는 물리주소로 translation되어 접근된다.
  5. 이전에 접근을 막기 위해 사용하던 방식은 다음과 같다.
    • Base and Bound : 단순히 Base 주소와 Bound 주소를 두고 서로 그 부분을 넘지 못하게 하는 방법이 사용되었으나, 파편화 등의 문제가 존재
    • Translation with Base and Bound : 동일한 주소를 사용하되, 추가 offset을 통해 translation하여 실제 주소에 접근한다. 하지만 이것은 파편화, 물리 주소의 공간 부족 등으로 단점이 많았다.

주소 공간 설명에서 아쉬웠던 점은 교수가 자신의 수업 CS62에서 설명한거니 넘어가겠다라면서 넘어간게 너무 많았다..

Process
  1. 프로세스는 제한된 환경에서 실행되는 프로그램 인스턴스이다.
    • 각자 보호되는 주소 공간을 가지고, 하나 이상의 쓰레드로 이루어져있다.
  2. fork/exec를 통해 자식 프로세스를 생성하여 프로그램을 실행한다.

  3. 서로 보호되며, OS 또한 프로세스로부터 보호된다.
    • 보호되는 대신 쓰레드에 비해 여러 프로세스간에 성능 저하가 있다. (protection과 efficiency 사이의 tradeoff)
Dual Mode Operation
  1. 하드웨어는 두가지 모드를 지원한다.
    • User Mode (일반 프로세스가 사용하는 모드)
    • Kernel Mode (OS나 특권권한을 시행하기 위한 모드)
  2. 변경 방식
    • User Mode에서 시스템 호출, 인터럽트, 트랩 or 예외 등을 호출하면 시스템 모드(커널 모드)로 세팅 후 PC를 저장한 후에 수행
    • Kernel Mode에서 돌아올때는 시스템 모드 세팅을 클리어한 후 스케쥴링하여 적합한 문맥의 PC를 세팅 후 돌아옴

추후 설명하겠다고 하면서 인터럽트, 시스템 콜 등의 절차는 생략했음.

comments powered by Disqus