memory managment 구현
권영진 교수님의 특강을 듣고 정리했다. 정말 재미있었고, OS를 통해 배울 수 있는 CS지식의 기반을 정리하는 데 큰 도움이 되었다.
운영체제는 왜 필요한 걸까?
두 가지 이유가 있다.
- 응용프로그램이 하드웨어를 쓸 수 있도록 interface를 제공하기 위해서
- 응용프로그램에게서 하드웨어의 detail을 감추기 위해서.
이것을 수행하기 위해 OS의 중요 role에 대한 키워드가 세 개 있다.
- Abstraction :: 추상화하여 디자인하기: 하드웨어를 사용할 때 그 내부의 자세한 것들을 알 필요 없이 API만 제공한다.
- Protection & Isolation :: 보호와 격리를 시행한다.
- Sharing :: 프로세스 간 자원을 공유한다.
Abstraction :: process(프로그램)이 H/W 사용하기 위한 API 제공
Provide APIs and semantics to applications
운영체제 개발자들의 고민:
하드웨어를 어떻게 하면 쉽게 쓸 수 있을까?
복잡한 하드웨어(내부)를 몰라도 쓸 수 있게 추상화를 하고,
사용할 수 있도록 API를 제공하자.
- 프로그램을 돌리기 위해 필요한 하드웨어 자원(CPU / Memory / Storage) 를 각각 가상 CPU / 가상 주소 공간 / 파일로 제각각 추상화하고, 이것을 process 로 묶었다. 가상cpu, 가상 주소공간, 파일은 단일 application이 마치 하나의 machine 위에서 실행되는 것 같은 환상을 줄 수 있게 되었다.
- 이렇게 추상화한 것들을 응용프로그램(application)이 쓸 수 있도록 API를 제공하고, system call 이라고 부르기로 약속했다. 이렇게 함으로써 (1) application을 제작하는 개발자들은 프로그램을 쉽게 개발할 수 있게 되었고 (2) OS는 동시에 여러 application을 돌릴 수 있게 되었으며, (3) application들은 각각 실행시 분리되어 보호할 수 있게 되었다.
Abstraction of address space 주소 공간의 추상화:
maping virtual to physical address
Where is the page tables stored?
What are role(s) of software in page?
What are role(s) of hardware?
Abstraction of Storage 저장 공간의 추상화 : Filesystem
Why VFS is required?
What is buffer cache? and why does it required?
Protection & Isolation :: process(프로그램)으로부터 보호 및 격리
Protection : Memory protection and access control
Isolate Application: Contain malicious or buggy behaviors of applications
Sharing resources :: process(프로그램) 간 자원 공유
Multiplex hardware resources
(정리중)
'공부기록 > OS' 카테고리의 다른 글
[TIL][Project 3] Segmentation | Paging | Page Table (0) | 2023.12.22 |
---|---|
[TIL][Project 3] Virtual Memory | Address Translation (Static/Dynamic) (0) | 2023.12.21 |
[TIL] [Project 2 보충] Filesystem, Buffer, syn-read issue (0) | 2023.12.19 |
[TIL][Setting] ubuntu Setting for PintOS (0) | 2023.12.18 |
[WIL / PintOS] [Project 2] System Call | others (0) | 2023.12.16 |