1211-os특강(권영진)

그로밋·2023년 12월 11일
0

krafton jungle

목록 보기
41/58
  1. 지역성
  2. Demand paging

os 왜필요하냐
1. API(read,write)를 제공함으로써 하드웨어를 사용할 수 있게 함
2. 하드웨어의 추상화

운영체제를 이해할 땐 탑다운을 이해해야함
추상화를 왜 이렇게 했는지를 이야기하기 위해 탑다운으로 이야기해야한다. -> 메타 놀리지 왓

추상화란?
1. 불필요한 것을 없엔다 -> 쉬운 이해(easy to use)

making sth easier to understand by ignoring some of details

what is the most important idea in terms of software architecture?
layers of abstraction! but the John Ousterhout says plus, problem decomposition(DP)

처음 os디자인의 생각
1)쉬워야하고 2)하드웨어가 관리되어야하고 3)보호되어야한다
-> 프로세스: 하나의 컴퓨터처럼 보이게. 즉 프로세스란 하나의 컴퓨터를 추상화 한 것.

프로세스
CPU - virtualizing CPU
Memeory - Virtual address space
Storage -

이렇게 추상화해서 각 애플리케이션이 개별적인 컴퓨터를 사용하는것처럼 만들기 위해서는 "프로세스"

Knowlege for you guys
전역변수는 데이터영역
지역변수는 힙영역
char *p에서 p변수 자체는 stack영역에
p가 가르키는 주소는 어디에 존재? heap영역에

앱스트랙션: 각각의 컴포넌트를 디컴포즈

물리메모리

주소 추상화

각 물리주소를 페이지 단위(4kb)로 쪼개고 가상주소로 맵핑해주는 것

어떻게 하느냐?

  • 세그멘티이션
  • 페이징
  • 세그멘티드 페이징

그렇지만 얘네들은 어디까지 주소를 추상화하기 위한 툴일 뿐
얘네들은 MMU안에 구현이 되어있음. 왜그랬을까? 너무빨라서 하드웨어에게 부탁. <- 이해안감

MMU가 접근이 가능한지 안한지 판단한다. 어떤것을 기준으로? protection. 이 정보는 어디에 써있냐? 페이지테이블을 보고 판단.
허용하면 안되는 곳을 접근하면 page fault handler가 page fault를 냄
세그멘테이션 폴트는 왜 난다는지 못들음

page table 디테일을 찾아보라 멀테레벨, 싱글 어쩌고 저쩌고 장단점 찾아보라

TMB라는 하드웨어 캐싱같이 도와주는 애인데 찾아봐라

페이지 테이블이 어디에 저장되어있냐->메모리

페이지 테이블 값 세팅 누가하냐 -> 커널
운영체제가 세팅해준걸 누가 사용하냐 -> 하드웨어

물리주소를 언제 할당해주냐 -> 사용할 때
그럼 운영체제는 사용하는 시점을 알아야하는데 어떻게 아냐 즉 디멘드 페이징을 어떻게 하느냐?
Application first accesses unallocated physical memory

이렇게 도는동안 어플리케이션이 멈춘다. 그래서 옵티마이즈가 중요한데 이중에서 Zero the page가 제일 오래걸린다. 왜 지워야하냐? 보안 문제때문에. protection!

가상메모리

다시 페이지 폴트 핸들링

after fault : 메모리에 없어서 디스크까지 다녀오는거 file backed memeory

VA -> Function -> PM

Two types of memeory
1) file backed memeory
2) anonymous memeory

  • Swap disk, etc

DMA는 IO시간을 옵티마이즈 하기 위해서 함.
Read가 끝났어요 라고 알려주는 메커니즘을 뭐라할까요? 인터럽트~

Storage Abstraction(File system)

file system 은 memeory system 과 공통점과 차이점이 있다.
File : a logical unit of storage

file도 VA -> Function -> PM 구조와 비슷함
It's called Level of indirection
물리주소에서는 실제 공간의 위치와 상관이 없음. 로지컬만 붙어있으면 됨
물리주소 어디에 맵핑할지 어떻게 정하냐? 데이터의 file과 offset을 가지고

HOW
Indexed allocation, FAT, BTE, Extent tree
allocation 하면 Pysical block을 리턴한다.
MMU는 HW에서 하는데, File system은 인덱싱을 SW에서 한다. 왜? 느려도 되서 <- 이해안감

Metadata of a file 을 inode라고 함

인터널 노드는 어디에 저장되어있나? 메모리? 스토리지? 아니 둘다!

하드웨어가 도와줄 필요가 있나? 아니 느려서 ㄱㅊ

얼로케이트 언제해주냐? 사용할때! (페이지폴트같은 메커니즘은 필요없다) -> fsync 파일 시스템만이 가지고 있는 독특한 시스템콜이 불릴때 얼로케이션이 일어남.

데이터를 디램에 놓고 디램에서 꺼내 쓴다. 그렇게 하기 위해 있는것이 버퍼 캐시 or 페이지 캐시

또하나의 특징이 시스템 콜 인터페이스와 캐시 사이에 추상화된 VFS가 있음

classic consistency 가 뭔지 못들음
이걸 잘 하지 못하면

이케됨

profile
Work as though your strength were limitless. <S. Bernhardt>

0개의 댓글