[OS 공룡책] Ch01. Introduction
Chapter 1: Introduction
Firmware
- 어셈블리어(ASM), C로 구현
- 어떤 컴퓨터를 만들든지 간에 무조건 있어야하는 것
Kernel
- 사실상 os가 아닌 커널에 관한 수업
- 커널 + 사용자 친화적 요소 = OS
Hardware
Bootstrap program
- UEFI (BIOS)
- Boot loader
- Kernel
- 하드웨어 바탕의 single-core, single-memory 라고 가정
- Single-Thread
- Multi-Thread
multi-process 왜 써 ?
- core가 하나일 경우, 고장날 경우 끝 → 높은 신뢰성
- 높은 결함 허용
Multiprogramming
- 초창기 A→B→C : 줄세우기 (한 번에 하나의 프로그램만)
- 한 번에 여러 개의 프로그램을 실행 시키도록 OS를 똑똑하게 구동시키는
- Batch 시스템을 지원하는 것 → Batch : 모아서 던져주는 것
- 프로그램이 하는 일 : 1. 계산 2. I/O ←분할
- A1 → B1 → A2 → C1 → B2 → C2 C1 시점에서 보면 A, B, C가 다 돌아가고 있음
Multitasking
- Multiprogramming보다 더 개선된 개념
- time quantum
- CPU time을 같이 나눠갖는 작업 : CPU Schduler가 하는 일
- OS가 Virtual memory 지원
- 물리 메모리 크기에 상관없이 가상의 공간 사용
- 가상 공간에 있는 데이터를 물리 메모리에 Mapping
- swapping 지원
- 메모리가 아닌 storage로 보내버리는 것
- 프로세스는 메모리에 있다고 생각
- 필요할 때 OS가 swapping을 통해 다시 가져옴
OS가 지원하는 기능
- Virtualization 가상화
- Concurrency 병행성
- Persistency 지속성
Kernel 하는 일
-
프로세스 관리
-
메모리 관리
-
저장요소(Storage) 관리
-
I/O 관리
→ Kernel을 덧붙여주는 게 OS
Protection & Security
- Protection : 접근 권한 보호 → 커널 기능은 X, OS가 하는 일
- Security : 외부 공격으로부터 보호
Open-Source Operating Systems
- GNU 프로젝트의 핵심 : Linux가 되는 것, 스톨만
- Linux 창시자 : Linus 리누즈 토발리스 → 커널
- GNU/Linux : GNU 프로젝트에 Linux를 집어넣은 것 → 퍼블릭 라이센스를 가지고 다 합쳐놓은 유틸리티 (OS)
- gcc : gnu compiler