[OS] 가상 메모리, 페이징, TLB, 페이지 폴트
오늘 읽을 페이지 필독 제13장 주소 공간의 개념: p.127~132 제15장 주소 변환의 원리: p.149~160 제18장 페이징 개요: p.195~206 제19장 TLB: p.211~223 제20장 더 작은 페이지 테이블: p.229~242 제21장 물리 메모리 크기의 극복, 메커니즘: p.245~252 제22장 물리 ...
오늘 읽을 페이지 필독 제13장 주소 공간의 개념: p.127~132 제15장 주소 변환의 원리: p.149~160 제18장 페이징 개요: p.195~206 제19장 TLB: p.211~223 제20장 더 작은 페이지 테이블: p.229~242 제21장 물리 메모리 크기의 극복, 메커니즘: p.245~252 제22장 물리 ...
메모리 공부를 하다가 문득 궁금해졌다. Go에서의 Slice와 Array는 어떻게 다른가? package main import "unsafe" func main() { numSlice1 := make([]int, 2, 4) numSlice2 := make([]int, 2) numSlice3 := []int{1, 2} numSlice4 :=...
컨테이너 런타임을 좀 공부해보려니까 아는 개념이 너무 없어서, 예전에 공부했던 강의로 짧게 복습해봤다. 도커 없이 컨테이너 만들기 목차 및 실습환경 구성안내 정말 쉽고 재밌게 설명해주셔서 너무 감사하다. 컨테이너에 대해서 정리를 좀 해보자. 시분할 시스템에서 컴퓨터를 나눠 쓰게 되면서 자원 공유의 개념이 생겼는데, 사실 나는 배치 시스템...
이제 격리는 끝났고, 자원을 할당해야 한다. 여기서 Cgroup(Control Groups)이라는 개념이 등장한다. CPU, Mem 같은 시스템 자원을 묶어서 그룹을 짓는다. 그리고 프로세스를 그 그룹에 포함시키면, 그 프로세스는 그룹에 정해진 만큼의 자원만 사용할 수 있다. CPU에 스트레스를 줬더니 100%를 찍는다. -c 1은 1코어를 ...
전용 루트 파일시스템과 오버레이 파일시스템이 있더라도 문제가 남아 있었다. 컨테이너에서 호스트의 다른 프로세스들이 다 보이고, 컨테이너가 호스트의 네트워크를 여전히 사용하고(80 포트로 nginx에 접속한 것처럼), 컨테이너에 루트 권한이 여전히 있다는 문제다. 그래서 마운트 네임스페이스를 만든 것처럼 다양한 네임스페이스를 만들었다. 모든 프로세...
패키징과 루트 격리는 잘할 수 있다. 이제 문제는 중복된 파일들이다. 나는 데이터베이스가 필요하고, 너는 데이터베이스랑 웹서버가 필요하면 내꺼: 우분투, 데이터베이스 너꺼: 우분투, 데이터베이스, 웹서버 이런 식으로 우분투와 데이터베이스가 두 번 중복돼서 같은 호스트 머신에 저장되어야 한다. 우리의 패키징 방식을 생각하면 필요한 것들을...
chroot는 실행한 프로세스부터 그 하위 프로세스들까지의 루트 파일시스템을 바꾸는 명령어다. 일단 sudo 권한이 필요하다는 걸 알 수 있고, /bin/sh을 실행하려고 했지만 루트가 바뀌었기 때문에 명령어를 찾지 못한다. 루트가 myroot로 바뀌니까 그에 맞춰 myroot/bin/sh을 복사해 넣어줬다. 실행에 필요한 동적 라이브러리도 같이...
오늘 읽을 페이지 필독 제4장 프로세스의 개념: p.27~35 제5장 프로세스 API: p.39~48 제6장 제한적 직접 실행 원리: p.53~65 제7장 스케줄링 개요: p.69~78 제8장 멀티 레벨 피드백 큐: p.83~91 선택 제9장 비례 배분: p.95~106 제10장 멀티프로세서 스케줄링: p.109~11...