mmap이 뭔가? 웹 서버에서 사용했던 거
memset
캐싱이란? 왜 캐싱을 하면 성능 차이가 많이 나는가?
페이지폴트란 무엇인가? 왜 발생하지? 페이지폴트가 발생했을 때, 가상메모리 기술에서 어떤 일이 일어나길래 시간 차이가 발생하는지?
OS가 필요한 이유?
추상화란?
프로세스는 메모리, 코드, CPU, I/O 등을 추상화한 것 → 즉, 프로세스는 컴퓨터를 추상화한 것
스레드를 프로세스라고 부르지 않는 이유?
스레드는 프로세스처럼 메모리 공간이 분리되어있는게 아니라, 하나의 프로세스 안(메모리 영역)에서 공유되기 때문에 프로세스라고 하지 않음. 스레드는 코어를 추상화했다고 할 수 있음
물리메모리에 언제 할당하는가?
요구페이징(demanding page)
프로세스들은 이만큼 할당해달라고 하지만, 실제로는 안 쓰는 명령어들이 많아서, 필요할때 적재
페이지(들) 할당
프리 페이지 리스트로부터 페이지 얻기
페이지(들)을 0으로 채워넣기
프로세스는 컴퓨터를 추상화한 것 → 프로세스들끼리 메모리 공간을 침범하면 안됨 → 기존에 사용하던 페이지의 내용들을 0으로 채워넣지 않고 그대로 사용하면(= 쓰레기값), 추상화 rule에서 벗어나는 행위
페이지(들)를 페이지 테이블에 매핑
Page fault handling
메모리의 두 가지 타입 : anonymous & file-backed ⇒ 페이지를 두 가지 형태로 구분지을 수 있음
handling I/O events
abstraction of storage
file : a logical unit of storage
indexed allocation
느려서 파일시스템을 하드웨어로 만드는게 의미가 없음
즉, 운영체제가 직접 파일시스템을 관리하므로 파일시스템 종류는 매우 다양
파일 시스템 = 블록을 관리하는 기술
consistency : atomicity & durability
항상 최신 데이터는 메모리에 존재. 그러나 휘발성이므로 디스크에 내용을 갱신시킬 필요가 있다. 디스크와 메모리 간 일관성을 보장해야한다.
<aside> 🥕
POSIX 계열에서의 파일 시스템은 consistency를 보장하지 않는 방식 → 개발자가 consistency를 보장하도록 코드를 작성해야한다.
</aside>