[OS운영체제] 권영진 교수님 OS 강의_2 (카이스트 전산학부)
1부
c를 대신해 RUST 를 사용하려는 움직임이 있다.
RUST로 OS로 만들고 있다.
핀토스를 직접 안짜고 이해만 하고 있어도 프로그램을 짜는데 도움이 된다.
-> 커널과 유저가 해야하는 일 각각을 알고 있어야 유저가 뭘 해야하는지 안다
mmap
file-backed (read, write)
MAP_ANONYMOUS - stack, heap
mmap과 write(fd, buf, 3)는 똑같은 기능. 하지만 성능이 다르다.
mmap은 kernel이 바로 storage에 복사
read write는 한 번 복사한 후에 kernel이 DMA로 storage에 복사
1강 정리
Abstraction
- process - machine
- thread - CPU
- virtual memory - physical memory(DRAM, DRAM을 쉽게 쓰기 위해)
- file - storage
VM과 file abstraction 만들 때 유사한 특징이 있다.
파일에서 실제 메모리에 mapping함.
- VM - PT(page table)
- file - indexing
file이 crash consistency가 있어 더 복잡하다
VM은 빨라서 하드웨어 o
file 느려서 하드웨어 x - 미래에 하드웨어 접근이 빨라진다면 하드웨어로 구현 가능 할지도
2강
The first design
isolation, protection 문제. app 끼리 + 앱과 file system 있는 OS 쪽 끼리
Requirement for protection
- Privileged instruction
- Memory protection
- Timer interrupt
커널에서 실행되는지 유저에서 실행되는지 하드웨어가 개런티 해줌
-> 4단계 ring이란 개념을 만듦
Ring 0 : kernel, Ring 3 : user. 2,3은 거의 안 씀
user가 ring 0 명령어 실행하면 exception 발생해서 kernel이 판단. (cpu)
page fault : 접근하는 주소가 타당하지 않을때 - 커널 주소 or mapping 안된 영역
segmentation fault 는 kernel이 이 유저가 더이상 실행되면 안되겟다 판단해서 cut
legal 한가 아닌가는 MMU의 PT에서 결정. 즉 하드웨어에서 한다.
segmentation
kernel / user 구분 있음
그러나 segment 부분이 64bit로 넘어오면서 page로 다 처리
User/Supervisor 로 !
2부
Isolation by protection domain
Isolation of memory
protection을 위해 process마다 VM 존재
context switching
Isolation of file
- process A가 process B 의 file 의 파일 못 읽게
- access control(file permission) 결정은 OS (memory는 MMU 하드웨어가 해줌)
- 이 정보가 kernel Authorization Module에 있음 (software 이름은 Reference Monitor)
Policy와 Mechanism 차이
- mechanism : queue 만들어 넣는거
- Policy : 어떤 순서로 넣고 뺄건가
즉 위에서 authorization을 어떻게 줄지가 policy이다. (DAC, MAC(군대에서 사용), Capability-based access control)
IPC : inter process communication
- message passing (socket, fifo, pipe...) - 적은 데이터가 왔다갔다 할 때
- shared memory (빠름) - 데이터 많이 왔다갔다 할 때
Sharing resources
- multiplex hardware resources
Time sharing
- CPU : 시간 sharing
- memory : 공간 sharing
Space sharing
메모리 공유시 부족한 경우 swap. disk로 보냄
= space reclamation
ready Q
wait Q - 들어가는 경우 1) I/O 2) wait(yield)
scheduler
policy
- FIFO - convoy effect - 한 task 가 길 때
- SJF - convoy effect 해결을 위해 나옴. starvation - 짧은게 계속 들어오며 긴거 cpu 못 받음
- RR - starvation 해결을 위해 나옴 - context swtching이 너무 자주 일어남. time을 늘리면 response time이 떨어짐
- mlfq - RR 해결을 위해
When does OS invoke scheduler?
- Preemptive scheduler vs Non-preemptive scheduler
- work conserving scheduler vs Non-work conserving scheduler
Preemptive scheduler vs Non-preemptive scheduler에서
차이는 Preemptive scheduler에서만 1. Waiting -> Ready 부분이 있는 점.
preemptive, voluntary preemptive
Page replacement policy
FIFO 는 cache hit 이 0
이를 해결하기 위해 : MIN, LRU - 두 개가 비슷한 hit ratio
- MIN (Belady's algorithm) - 미래에 어떻게 될지 알고 <- 과거를 보고 판단
- LRU(Least Recently Used)
Sequential scan에서는 LRU < MIN 이 좋음
Belady's Anomaly - 메모리 수가 많다고 hit ratio가 높은건 아님
LRU 제대로 구현하려 모두 체크해서 page fault 확인해야함 -> 너무 비쌈(expensive)
Clock approximate to LRU
접근 했었는지 정보 PT에 저장 . 1이면 linked list 앞으로 보내고 0이면 ..?
How to design OS
- monolith kernel - 빠름. file system하나 버그걸리거나 죽으면 kernel 다 죽음
- micro kernel - mission critical 우주선 군대 자율주행 등에 쓰일 수 있음. 근데 너무 느림. 즉 성능보다 안정성이 우선인 분야
## OS 이외의 질문
4대 기둥
- Algorithm, data structure
- compiler(CL) - 봐야하야할 사람 극히 드물다. - 보안 or low level system
- OS
- 컴퓨터 구조 (Computer Archetecture)
앞으로 중요해질 분야 - HCI, 보안
박사를 해야하는 선택들
- 교수
- 정출연
- 삼성 임원
- 구글, 페이스북 들어가기 위해
가상 머신과 docker의 차이
-> docker는 kernel이 1개이고 논리적으로 나눈다.
'정글 2기 > OS 운영체제' 카테고리의 다른 글
[Pintos] Project 2_User Program_system call (0) | 2021.10.14 |
---|---|
[three_easy_pieces] 파일 시스템(File system)_vsfs(Very Simple File System) (0) | 2021.10.13 |
[Pintos] Project 2_Calling convention_Caller, Callee and registers (0) | 2021.10.09 |
[three_easy_pieces] 가상 메모리(Virtual memory)_주소 변환의 원리 (0) | 2021.10.07 |
[pintos] Project 1_priority scheduling (0) | 2021.10.04 |
댓글