운영체제
2) Introduction to Operating Systems
프로세서는 메모리로부터 데이터를 가져와 일하기만 함!!
OS의 3개의 큰 특징들
이 특징들을 기반으로 진행됨
- Virtualization(가상화)
- Concurrency(병행성)
- Persistence(지속성)
Virtualizing Cpu
Illusion을 줘 시스템이 무한의 CPU가 있는 것 처럼 느끼게 함
- 많은 프로그램들이 동시에 실행하는 것처럼 느끼게 한다.
Virtualizing Memory
각 프로세스가 각자의 주소 공간이 있도록 Illusion을 준다.
- 실제 메모리는 바이트의 배열이다.
- 보통 메모리는 DRAM이며 용량이 제한되어 있다.
- 프로그램은 모든 데이터 구조를 메모리에 넣는다.
-OS는 주소 공간을 실제 메모리에 매핑한다.
- 작동중인 프로그램의 메모리 참조는 다른 프로세스의 주소 공간에 영향을 끼치지 않는다. => Protection
- 실제 메모리는 OS에 의해 관리되는 공유 자원이다 => Caching
사용자에겐 다른 프로그램이 같은 주소를 사용하는 것 같아도 실제는 OS에 의해 관리가 되어 실제 메모리의 다른 공간에 위치한다.
Concurrency
병행 접근의 공유 자원들은 오류가 많이 일어난다.
- OS 는 많은 것을 동시에 제어한다.
- 현대의멀티 스레드 프로그램 또한 병행성 문제가 존재한다.
=> protection, lock synchronization이 필요하다!
Persistence
- DRAM과 같은 장치는 값들이 휘발된다.
- H/w와 S/w들은 데이터를 지속적으로 저장해야한다.
- H/W
- S/W
- 파일 시스템
- 파일 시스템은 유저가 만든 어떠한 파일도 저장 가능하다!
만약 시스템이 갑자기 꺼지면????
EX) JFS, Copy-on-Write
OS 디자인 목표
-
추상적이게 빌드
-
높은 퍼포먼스 제공
- OS의 오버헤드 최소화, 과도한 오버헤드 없는 가상화 제공
-
어플리케이션 사이 protection
- isolation을 통한 다른 사용자 및 os에 피해가 없게
-
높은 신뢰성
- Os는 멈추면 안됨, 만약 멈춘다면 다른 어플도 다 죽음
-
나머지들... ex) 에너지 효율, 보안, 유동성