운영체제#1

LeeMir, 08 March 2021

Introduction


교재
  • Modern Operating Systems, 3rd ed.(Andrew S. Tanenbaum)
    • 번역서 존재, 강의는 번역서 기준으로 진행
    • 현재 4판까지 나와있음
A Modern Computer Consists of :
  • One or more processors
    • 멀티 코어
  • Main memory
    • 주 기억 장치
    • DRAM : 휘발성 메모리
  • Disks
    • 보조 기억 장치
    • Strogy system(저장 장치)
    • 비휘발성 메모리
  • Printers
  • Various input/output devices
What Is An Operating System
  • 하드웨어를 조작하는 기본 기능을 응용 프로그램에게 제공 => 시스템 호출 형태로 시스템 서비스를 제공
    • 프로그래머들은 일일이 하드웨어를 조작할 필요가 없음
  • 운영체제는 사용자와 직접적인 접촉은 없음
    • 운영체제와 접촉하는 대상은 응용 프로그램들임
    • 사용자가 운영체제와 접촉하는 방법은 GUI, CUI같은 유저 인터페이스로 접촉하는 방법인데, 유저 인터페이스도 프로그램이기 때문에 직접적인 접촉이 아니다
  • Operating System을 실행할 때, CPU는 Kernel Mode로 실행되고, 응용 프로그램을 실행할 때에는 User Mode로 실행된다
  • 운영체제의 존재 이유
    • 하드웨어는 어셈블리어 이하의 저급 언어로 제어
    • 운영체제에는 하드웨어를 제어할 수 있는 모든 것을 미리 작성해놔서 응용 프로그램이 고급 언어로 호출했을 때 하드웨어 제어를 대신 해줌
    • 하드웨어들의 Ugly Interface를 Beautiful Interface로 변환해 응용 프로그램들에게 제공
The Operating System as a Resource Manager
  • 운영체제는 동시에 실행되는 프로그램들을 관리하는 관리자 역할
  • 자원들을 시간적 / 공간적으로 멀티플렉싱함
    • 저장장치 및 자원들을 공유
History of Operating Systems
  • 1945 - 55 : 진공관
  • 1955 - 65 : 트랜지스터와 Batch System
    • Batch System : 입력 장치, 출력 장치, 계산 장치가 따로 존재하고, 이것을 테이프라는 자원을 통해 이용하는데, 하나하나 사람이 날라야함
      • 코드는 펀치카드로 작성
      • 중간에 CPU가 노는 시간이 너무 길음
  • 1965 - 80 : IC칩과 멀티프로그래밍의 등장
    • 멀티프로그래밍 : 여러 개의 프로그램을 메모리에 적재해서 번갈아가면서 실행
      • CPU가 노는 시간을 줄임
    • 이 때부터 운영체제가 자원 관리의 기능을 가짐
  • 1980 - 현재 : Personal Computer의 보급
Computer Hardware Review
  • CPU는 항상 Memory(DRAM)로부터 코드를 불러와 읽고 Memory에 씀
  • CPU는 모니터나 키보드같은 입출력 장치를 직접 제어할 수 없음
    • Video controller, Keyboard controller 칩에 있는 각각의 Memory(Register)에 값을 조작해 입출력 장치를 간접적으로 제어
  • CPU와 Memory, 각각의 controller들은 Bus로 연결되어있음
    • 그러나 데이터 사용량이 많아지면 속도가 느려져 따로 전용 Bus를 만들어 연결하는 추세
Processor Registers
  • User-Visible Registers
    • Data, Address, Index, Stack pointer, Segment pointer 등 여러가지 종류의 Register 존재
  • User-Invisible Registers
    • PC(Program Counter), IR(Instruction Register), PSW(Program Status Word Register, Flag Register라고도 함) 등이 존재
    • 특별한 Register이고, 응용 프로그램에서는 이 Register들을 참조하지 않고 운영체제에서 참조 및 수정함
CPU Pipelining
  • A three-stage pipeline
    • Fetch Unit => Decode Unit => Execute Unit
    • 원래에는 프로그램 단위로 Fetch / Decode / Execute를 수행하였으나, Unit 단위로 Pipelining 형태로 수행해 CPU 속도를 높임
    • (n+2)번째 명령이 Fetch되는 동안 (n+1)번째 명령이 Decode되고, n번째 명령이 Execute 동시에 실행됨 => 약 3배로 속도가 높아짐
    • Fetch / Decode / Execute의 3단계가 아닌 더 많은 단계로 하면 속도가 더 높아질 수 있으나, Hazard라고하는 Execute에서 Jump할 일이 생겨 그 전 단계들에서 수행된 것들이 모두 물거품이 되는 위험성이 존재
  • A superscalar CPU
    • 한꺼번에 여러개의 Unit(명령)을 Fetch 후 Decode해 Holding Buffer에 집어넣고, 가능하다면 여러개의 Unit을 동시에 Execute
      • Unit 간의 Dependency가 존재해 순서가 필요할 경우에는 동시에 실행할 수 없으나, CPU에서 먼저 실행되어야 하는 Unit은 지름길을 만들어 더 빨리 실행되도록 함
    • 병렬처리 방식으로, pipeline보다 처리속도 향상
Multithreaded and Multicore Chips
  • A superscalar보다도 더 빠른 방법을 찾고자 멀티쓰레드 방법이 나옴
  • 여러개의 쓰레드를 코어들이 나눠 수행
Interrupts
  • 프로그램을 순차적으로 읽다가 i번째 이후에 Interrupt가 발생하면 PC(Program Counter)가 Interrupt Handler를 가리켜 수행하고, Interrupt가 끝나면 i+1번째로 돌아가 다시 정상적으로 프로그램을 읽어나감

  • 읽던 부분을 중단하지 않고, 읽던 것은 끝까지 읽은 후에 Interrupt Handler로 이동함
  • 예기치 못한 상황이 발생되면 자체적으로 Interrupt를 발생시킴(Exception이라고 함)
    • 예기치 못한 상황 : 0으로 나누려고 했다든지, 존재하지 않는 메모리를 참조했다든지 등
  • 운영체제는 Interrupt의 모임이라고도 할 수 있다
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 : 프로그램들이 실행될 때 참조되는 데이터들의 집합