Hardware를 이용하기 쉽게 convert 해주는 Software
: 오늘날의 OS
=> Reponse time 개선 (사용자 입장에서 노는 시간을 줄임)
뭐 다양한 OS를 만들려는 시도들이 있었고, 그 중 주목해서 볼만한게 Multics, Unix
: Multiplexed Information and Computing Service
Time-shared / Multi-processor main frame
Multics 프로젝트가 결국엔 실패함 이게 언어를 엄청 어려운 거 썼던듯? 그래서 C언어로 시작한 프로젝트
Hierarchical file system
Process control(fork(), exec(), wait(), exit())
Shells (I/O redirection에 대한 내용)
Signals
프로그램이 실행되기 위한 환경을 제공해준다고 생각하면 된다. 따라서 underlying 컴퓨터 시스템의 추상화를 제공해주고, 어느정도까지 노출시킬지를 OS가 결정
Typical OS abstractions
Processors => Processes, Threads
Memory => Address space(virtual memory)
Storage => Volumes, Direcotires, Files
I/O Devices => Files
Networks => Files (socket, pipe)
컴퓨터 시스템의 resource를 관리
Sharing
Protection
Fiarness
Efficiency
OS는 highly concurrent하고, event-driven software임 !
여기서 Event란 System calls과 Interrupt(주로 기계적)
다시 한 번만 정리해보자면 OS의 Three Pieces는 Virtualization / Concurrency / Persistence