[OS운영체제] 권영진 교수님 OS 강의 (카이스트 전산학부)
키워드들 위주로 작성. 이후 검색해 볼 것
CS 에서 system 특히 Operating system이 전공필수가 되었다. 그만큼 중요하다.
OS 시스템을 공부해야하는 이유가 뭘까?를 아는 게 공부하는 데 도움이 된다.
1.
- mmap : 1MB 쓰겠다고 선언을 해도 실제로 주진 않는다. 가상 메모리에다가 allocation만 해준다.
- memset으로 1로 채운다. 이 때 메모리를 준다.
- on-demand allocation
- 1MB에 4KB 씩 PA(RAM)에 page를 줌
- 처음 memory(Physical address) 접근시 page fault, 그 이후 할당 되고 2차 접근시 page fault 안남.
하지만 사용자 입장에서는 page fault 되었는지 모를 정도로 빠르게 일어남
- 32MB 까지 caching 가능
- MAP_SIZE(1<<20) - PF, caching 발생 -> 불러오는 데 10배 차이
- MAP_SIZE(1<<30) - PF -> 불러오는 데 2배 차이
mmap populate 를 통해 두 번의 시간을 같게 만들어줌
2.
why OS is required?
1) Providing application progamming interface(API) to use hardware
2) Hide details in Hardware
Key roles of OS
1) Design abstractions to use hardware
2) Protection & Isolation
3) Sharing resources
이 세 목적을 이루기 위해 어떻게 디자인을 했는지? 에 대해 Top-down 방식으로 설명
What is "Abstraction"?
- 추상화는 hardware를 편하게 쓰기 위해 쓴다.
- 몇가지 항목으로 정의 -> 복잡한 것들에서 필요 없는 것들을 제거
- The process ro outcome of making something easier to understand by ignoring some of details that may be unimportant
CPU memory storage(DIsk) 를 어떻게 abstract 할까
- CPU -> Virtualizing CPU : Thread
- Memory -> Virtual address space
- Storage -> File
API - system call
OS designers' first thought
easy to program
management unit of execution
protection unit of excution
-> process 만듦
-이 process는 computer의 abstract
-process 각각이. address space, virtual CPU, files를 가짐 그리고 서로 protection 됨
Abstraction of memory
memory 공간 효율적 관리 -> demand paing -> page default 생김
OS 입장에서 memory 2가지 바라봄
ananymous memory. file-backed memory
Abstraction of storage
- file, offset으로 block address
- OS subsystem maps the file to physical storage. Let's call it (file system)
- create mappings from each block to a storage location (callled block address)
- metadata of a file (inode)
- crash consistency
- Consistency:
- Atomicity and Durability
- Atomicity : All or nothing
- fsync
OS 추천 책 three easy piece. 쉽게 잘 씀
'정글 2기 > OS 운영체제' 카테고리의 다른 글
[PintOS] 로딩 (Loading) (0) | 2021.10.04 |
---|---|
[PintOS] 디버깅 도구(Debugging Tool)_printf, ASSERT, __attributes__, backtraces (0) | 2021.10.03 |
[OS운영체제] Network Programming_TCP/IP echo server, echo client (0) | 2021.09.26 |
[OS운영체제] Tiny Web Server 정리 및 Thread와 fork() (0) | 2021.09.25 |
[OS운영체제] 명시적 가용 리스트(Explicit Free List) (0) | 2021.09.16 |
댓글