•Compter Science/Operating System
[OS/OSTEP] 18.vm-paging : 메모리 페이징,PFN과 VPN #12
18.vm-paging # 시작하며 어떻게 보면 지금 블로그에 운영체제에 대한 것을 조금 빡세게 정리하고 있다. 거의 이틀의 걸쳐서 중간고사의 범위를 모두 포스팅하는 것이 목적이고, 계획대로라면 오늘 새벽안에는 포스팅이 끝나야 한다. 어찌보면 OSTEP을 1회독을 하기 전 이 페이징 부분이 가장 헷갈렸다. 그래서 OSTEP을 처음부터 읽고자 했던 것이고 어찌저찌 열심히 2회독을 돌리며 포스팅하는 시점에서 다시 페이징 부분에 들어왔다. 나름 확실히 이해하고 있다고 생각하는데, 이번 회독때 또 어떤 모르는것이 나올지 살짝 궁금해진다. 시작에 앞서 가장 중요한 개념 중 하나는 8bit는 1byte라는 사실일거 같다. 별거 아닌데 잘 기억하고 있어보자 세그멘테이션은 나름 좋은 모습을 보이는거 같지만, 공간 자체..
[OS/OSTEP] 17.vm-freespace : 메모리 빈 공간 관리하기 #11
17.vm-freespace # 시작하며 앞선 장에서 보았듯 메모리 상에서 빈공간을 관리해야 하는 이유를 알게 됐다. 공간이 고정 크기의 단위로 나누어져 있을 경우에는 관리가 특히 쉽다. 고정 크기 단위의 리스트만 유지하면 된다. 그러나 공간이 가변크기 일때, 힙에서 malloc()과 free()로 공간을 사용 및 게허가거나, 세그멘테이션 정해진 크기의 물리메모리를 관리하지 않는 경우에는 외부 단편화(external fragment)가 발생한다. 앞에서 설명했지만 다시 설명해보자면, 메모리의 총 빈공간리스트의 크기는 충분하지만, 프로세스가 물리메모리에 부분부분 할당 돼 있기 때문에, 실제로 사용가능한 공간은 크지 않는 경우다. 위 그림에서 볼 수 있는 것 처럼 미사용 공간은 20이지만, 11의 공간을 사..
[OS/OSTEP] 16.vm-segmentation : 메모리 세그멘테이션 #10
16.vm-segmentation # 시작하며 동적재할당 기법을 활용하여 주소공간 전체를 메모리에 탑재하는 것을 공부했었다. 이 기법은 base - bound를 사용하여 사용하는 주소공간 전체를 물리메모리에 탑재시킨다. 그러나 몇가지 문제점이 발생했다. 먼저 스택과 힙 사이에는 사용하지 않은 꽤 큰 영역이 존재하는데, 이러한 공간에 유연하게 대처하지 못했다. 또 주소공간이 물리 메모리보다 큰 경우는 실행이 어렵다. 당연한 결과이다. 대용량 주소 공간을 어떻게 지원해야하는가에 대한 의문점이 제기된다. # 세그멘테이션 적용하기 : 베이스(base) / 바운드(bound)의 일반화 위 문제를 해결하기 위해 세그멘테이션(segmentation)이라는 새로운 기법이 등장한다. MMU안에는 하나의 베이스-바운드 쌍..
[OS/OSTEP] 15.vm-mechanism : 주소 변환의 원리, 동적 재배치(dynamic relocation) , 내부단편화 #9
중간 중간 뛰어 넘는 챕터가 존재하는데 어렵지 않다고 생각들거나 뛰어 넘어도 이해의 문제가 없기 때문에 뛰어 넘는다. 15.vm-mechanism # 시작하며 프로그램은 자신의 전용 메모리를 소유하고 그 안에 자신의 코드와 데이터가 있다는 환상을 만들어 주자. # 가정 지금까지 그러했듯 몇가지 가정을 둔다. 이러한 가정을 완화시키고 뒤에가서는 멀티레벨페이징 기법과 같은 것까지 접근 할 수 있다. 주소공간은 물리 메모리에 연속적으로 배치되어야 한다는 가정과 각 주소 공간의 크기는 같다는 가정을 한다. 조금 비현실적이다. x = x + 3은 아래와같은 주소 접근이 일어나면서 실행된다. 시스템 소프트웨어때 공부했던 그대로다. 지금 실행되는 저 프로그램의 관점에서는 주소공간은 0KB ~ 16KB의 주소를 가지고..
[OS/OSTEP] 13.vm-intro : 주소공간(address space)와 메모리 가상화(virtual memory) 의 개념 #8
13.vm-intro # 시작하며 지금까지는 CPU가 어떻게 다중 프로세스를 처리하는지에 대해서 공부했다. CPU를 가상화하여 시분할방법을 사용해서 프로세스끼리 자원을 나눠 사용했다. 지금까지 운영체제를 공부하면서 또 내가 지금까지 알고있던 컴퓨터 지식으로는 이러한 CPU가 가장 복잡하고 중요할 것이라고 생각했다. 물른 컴퓨터구조측면이나 하드웨어적으로 접근한다면 어쩌면 맞는 말일 수 도 있다. 그러나 내가 VM 단원을 공부하면서 CPU보다 이 메모리를 어떻게 사용하냐가 더 중요한 관점인 것 같다. 어디서 읽기로는 이미 CPU는 매우 빨라지고 있지만 그 빠른 CPU는 결국 메모리에 올라와 있던 작업을 실행한다. 그런데 메모리는 한정적이다. 이 흔히 말하는 메모리는 여러 특성을 가지고 있기도 하고, 간단히 ..
[OS/OSTEP] 09.CPU-sched-lottery-CFS : 비례, 배분을 이용한 스케줄링 #7
09.CPU-sched-lottery 에서 추가적으로 CFS 스케줄링에 대해서 정리한다. # 시작하며 # 완전 배분 스케줄러 (Completely Fair Scheduler)