컴공의 기둥
이론 - 알고리즘, 데이터 스트럭쳐
어떤 데이터 스트럭쳐를 쓰고 생각하는 것은 기본중기본. 이것은 무조건 잘해야한다.
알고리즘은 좀 후순위.
언어 - pl 컴파일 등등 당장은 후순위
시스템 - OS
컴퓨터 아키텍쳐 는 기본적으로 봐야할 수 있음.
추가하자면
보안
hci
데이터 스트럭쳐 공부하려면 코테 도 도움된다.
페이스북 팀 백엔드 , 광고 포지션 제안
돈은 광고에서 나온다.
하지만 백엔드는 서비스를 만드는 팀이다.
보통 4~5년 주기로 이직을 한다.
페이스북은 사이드 보너스를 많이 준다.
구글 x
페이스북 -> 구글 -> 핀테크, 스타트업 -> 다시 it
한국에서는 먼저 삼성을 간다. (기업 문화 를 배운다)
평생 직장을 간다보다는 처음 갔을 때 일을 잘 할 수 있느냐. 이런 것을 기준으로 골라야한다.
카이스트 전산학과 최상위 3명 정도는 1~5등은 유학을 가거나, 한국에서 구글 코리아를 간다.
그다음 랭킹이 네이버. 카카오 두군데 선호
그다음은.
컨설팅 회사를 간다.
중~중상 삼성 간다. 몇몇은 스타트업
memory bugs in systems
60~70% 문제가 iOS macOS 에선 memory safety
안드로이드는 90%가량
c~c++을 대체하는 Rust 위의 문제점을 보안하는 면이 있다.
isolation이 보안의 첫번쨰 중 하나.
Rust가 시스템을 하는 입장에서 관심이 가는 언어다.
운영체제를 배우는 가장 중요한 부분
커널영역과 유저 영역의 경계를 구분할 줄 알아야한다.
java를 쓰는 뭘하든 유저가 어디까지 해야하고 커널이 어디까지 해 줄 수 있는지 이해야한다.
그리고 퍼포먼스가 어느정도 나오는지에대한 이해.
write 와 mmap
mmap도 write와 같은 역할을 할 수 있다.
둘에는 성능 차이가 있다.
write는 user 영역에서 커널 영역으로 copy가 일어난다. 거기서 주어진 파일로 접근.
mmap은 유저영역에서 액세스 하려는 위치로 바로 넘어간다.
이런 식으로 커널에서 무슨 역할을 하고 유저에서 무슨 역할을 하는지 에대해 이해하는 것이 각 api들의 퍼포먼스를 이해 할 수있다.
지난 시간 네가지 추상화
process -> machine
thread -> cpu
virtual memory -> physical mem (DRAM
file -> storage
추상화에서 사용되는 방법 가상에서 물리로 map ping
새로운 하드웨어가 나온다면 또 새로운 추상화가 필요하다.
결국 수많은 개발에서 추상화가 필요하다.
이번 시간
kernel 단에서 app과 앱 사이의 protection,
앱과 file system 과 같은 프로그램과 분리
app에서 infinte loop에 빠지거나 했을때 OS가 다시 컨트롤을 되찾아야한다. -timer interrupt
app이 사용 할 수 있는 instruction과 아래(privileged) instruction을 구분
즉 커널과 유저가 사용 할 수있는 instruction을 구분.
OS에서 보안, 을 위해 개발된 세가지 개념.
privileged instruction
memory protection
(timer) interrupt
OS must have higher privilege than application
how can guarantee(or define) the privilege level?
커널에서 수행되는지 유저에서 수행되는지를 HW가 검증한다.
나는 유저는 어떤 주소에도 접근은 할 수 있다. 하지만 mmu 하드웨어가 거절 하는 것이다.
이 판단 기준은 OS가 하드웨어에게 주고, 이는 page table이다.
기본적인 OS에 적용되는 아이디어가 최신 기술에도 적용된다 - 추상화-보안
유저 app 사이 process 사이의 보안 각각 vm을 만들어준다.
Isolation of file
접근 거절은 하드웨어가
접근을 할 수 있는 지 없는지 decision은 커널 (permission)
policy 와 mechanism 의 차이 반드시 이해해야함.
how to work 기본 구동 자체는 mechanism
어떤 policy를 선택할지
mechanism은 같은데/하난데 (ex scheduler), 해당 메커니즘에 필요한 알고리즘? (mlfqs, round-robin, 등등) policy 는 여러개 다.
Isolation이 개발되면 반드시 IPC (inter protection communication)이 따라와야한다.
IPC = message passing(socket, fifo, pipe) , shmem
당연히 shared memory가 더 빠르다.
convoy effect
page replacement policy
MIN
LRU least recently used
microkernel = fault issolation = 예시 군사, 자율주행 자동차. mission critical 한 작업을 수행하는 OS
vs
monolithic kernel = cloud linux windows pintOS 등등
성능은 아래가 확실히 빠르다.