운영체제#2

LeeMir, 15 March 2021

1강 - Introduction (이어서)


Memory
  • Memory Hierarchy
    • Registers < Cache < Main Memory < Magnetic Disk < Magnetic Tape
    • 크기가 작을수록, 접근 시간은 매우 빠름
    • Registers, Cache, Main Memory는 휘발성임
  • Cache Memory
    • CPU에 비해 Main Memory의 처리속도가 너무 느려 Cache Memory를 만듦
    • Main Memory에서 데이터를 가져와 저장하고, CPU에서 쓸 수 있게 해줌
    • Main Memory의 Memory Address 단위로 가져오는 것이 아니라, Block 단위로 가져와서 한꺼번에 저장함
    • Fully Associative Mapping
      • Address에서 마지막 64byte를 제외한 나머지 부분을 Tag 형태로 저장해서 검색 속도 향상
      • Cache가 꽉 차서 새로운 Tag를 저장할 때에는 LRU 방식으로, 가장 덜 사용된 데이터를 삭제 후 그곳에 저장
      • 각 Tag마다 비교회로가 따로 있어야해 가격이 매우 비쌈
    • Direct Mapping
      • Index별로 들어갈 수 있는 주소를 한정시킴 (address가 xxx70이면 70 Index에만 접근 가능, Tag에 xxx가 저장됨)
      • 새로운 데이터를 Access하면 그 Address와 그에 해당되는 현재 Cache의 Index의 Tag를 참조해 비교연산함
      • Fully Associative Mapping에 비해 가격이 저렴하고, 속도는 상대적으로 느림
    • Set Assosiative Mapping
      • N-way Set Associative Mapping
      • Direct Mapping에서 한 Index마다 N개의 구역에 저장할 수 있는 방식(N개의 비교회로 존재)
        • One-way Set Associative Mapping = Direct Mapping
      • N개보다 많은 Block을 참조하게 되면 그 때에는 어쩔 수 없이 삭제를 해줘야함
    • Cache는 웬만하면 Hit rate가 높음
      • Locality of Reference(참조 지역성) 때문임
        • Temporal Locality(시간적 지역성) : 한번 참조되었던 데이터는 다시 참조될 가능성이 높음
        • Spatial Locality(공간적 지역성) : 한번 참조되었던 데이터의 인접 데이터들은 참조될 가능성이 높음
        • Working Set : 프로그램들이 실행될 때 참조되는 데이터들의 집합
Disks
  • 동그란 원판에 트랙 단위로 데이터들이 기록되어 있고, 헤드가 움직여서 그것을 읽고 쓰게 됨
    • 하나의 헤드가 움직일 때 디스크에 있는 모든 헤드가 동일하게 움직인다(따로 움직이게 하는 것이 더 힘듦)
  • 충격에 굉장히 약함
    • Magnetic Disk의 경우 실제 데이터 센터에서는 주기적으로 교체함
I/O Devices
  • CPU에는 Interrupt 관련 핀이 하나밖에 존재하지 않음
    • 다수의 Controller들에서 신호를 보내면 lost되는 신호가 있을 수 있음
  • Interrupt Controller가 따로 존재해 lost되는 신호가 없게 함
    • Interrupt 핀들이 여러개 있어서 각각이 Controller들이랑 연결
  • Programmed I/O 방식
    • 프로그램을 실행하다가 I/O 프로그램으로 이동해 해당 내용을 수행함
    • I/O 프로그램을 수행하는 동안 원래 실행하던 프로그램은 중단
  • Interrupt-driven I/O 방식
    • 프로그램을 실행하는 도중, Interrupt를 발생 => Interrupt Handler로 이동해 수행해서 I/O Operation을 일으킴
    • 프로그램을 중단하지 않고 하던 일 마저 계속 진행하다가 Interrupt Handler에서 끝났다는 신호가 오면 잠깐 다시 Interrupt Handler로 이동해 마무리를 지음
Dual Mode
  • 일반 프로그램이 직접 메모리에 접근하거나 입출력을 수행하면 보안적으로 문제가 될 가능성이 높음
    • 그것을 예방하고자 User mode와 Kernel mode로 나눔
  • User mode
    • 특권 명령을 사용할 수 없음
      • 특권 명령 : 시스템 입출력
    • 일반 프로그램이 실행되는 것은 User mode임
  • System mode / Control mode / Kernel mode
    • 특권 명령을 사용할 수 있고, 메모리 영역 및 I/O에 접근이 가능
  • 프로그램에서 Interrupt를 일으켜 Interrupt Service Routine으로 이동하면 User mode에서 Kernel mode로 바뀌어서 특권 명령을 사용하게 함
Operating System Concepts
  • Processes
    • 스케쥴링의 주체, 시스템의 주체, 자원을 할당받는 주체
    • 부모-자식의 상하관계가 존재(Tree 구조)
  • Address space
  • Files
    • 폴더도 프로그램도 모두 File
    • UNIX에서는 주변장치, 입출력장치도 File로 봄(Network 통신도 파일 입출력으로 진행)
      • File System을 하나만 유지함
      • 필요한 부분(ex : CD-ROM)은 File System Tree에 Mount / Unmount하면서 사용
    • Pipe File이라는 개념이 존재해 데이터를 전달함
  • Input/Output
  • Protection
    • Dual Mode
  • The shell
  • Ontogeny recapitulates phylogeny(개체 발생은 계통 발생을 되풀이한다)
    • Large memories
    • Protection hardware
    • Disks
    • Virtual memory
Memory Layout
  • Stack 영역과 Data 영역 사이에 Gap 존재 => Heap 영역
    • Stack 영역이 점점 커지면 Heap이 줄어들고 Data 영역에 가까워짐
    • Data 영역이 점점 커지면 Heap이 줄어들고 Stack 영역에 가까워짐
    • 두 영역이 만나게 되면 프로그램이 죽으나, Heap 영역의 크기가 원체 매우 커서 그럴 일은 거의 없음
Operating Systems Structure
  • Monolithic Systems - Basic Structure
    • Service Procedure들을 한 곳에 모아놓은 형태
    • Service Procedure들은 System Call들로 이루어져있음
    • 하나를 수정하려면 연관된 부분이 너무 많아 일일이 다 수정해야하는 것이 단점
  • Layered Systems
    • Layer 5 : The operator
    • Layer 4 : User programs
    • Layer 3 : Input/output management
    • Layer 2 : Operator-process communication
    • Layer 1 : Memory and drum management
    • Layer 0 : Processor allocation and multiprogramming
    • Layer끼리 상관관계도 불분명하고 불가능한 기능임
  • Microkernels
    • 필요한 최소의 기능은 Microkernel로 만듦
      • Processes, Scheduling, IPC
    • 그 외 기능은 모두 서버 프로그램 형태로 만듦
    • 현재 윈도우에서 채택하고 있는 방식
Virtual Machines
  • Type 1 hypervisor
    • Type 1 hypervisor 위에 원하는 OS가 깔림(OS 위에 프로그램이 깔림)
    • 이렇게 깔린 OS는 User mode로 수행되므로 입출력(특권 명령)이 불가함
      • hypervisor로 Interrupt를 걸어서 hypervisor에서 입출력을 수행함
  • Type 2 hypervisor
    • OS를 설치한 후 OS에 설치한 프로그램 중 하나인 가상 머신 프로그램
    • 가상 머신 프로그램 위에 OS를 설치하고 그 위에 프로그램을 설치
    • Guest OS의 기계어를 Type 2 hypervisor가 모두 해석해야 해서 느림
  • 스펙 변경
    • Original Pentium
      • Ring 0 (kernel mode), 1, 2, 3(user mode)
    • VM supprting Pentium
      • VMX root : ring 0~3
      • VMX non-root mode(virtual machine) : ring 0~3
    • ARM
      • EL 0 for user program
      • EL 1 for OS
      • EL 2 for Hypervisor