운영체제#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 : 프로그램들이 실행될 때 참조되는 데이터들의 집합
- Locality of Reference(참조 지역성) 때문임
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
- 그 외 기능은 모두 서버 프로그램 형태로 만듦
- 현재 윈도우에서 채택하고 있는 방식
- 필요한 최소의 기능은 Microkernel로 만듦
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
- Original Pentium