<implicit 리스트의 한 블록의 구조> header: 헤더는 블록의 크기(헤더+payload+padding)와 할당 여부가 포함된다. (allocated:1, free:0)한 블록, 즉 1word(4byte)이고 우리는 할당기가 8byte double wor
묵시적 가용 리스트는 할당 시간이 전체 블록 수(할당+가용)에 비례하기 때문에 범용 할당기로는 적합하지 않다.더 좋은 방법은 가용 블록들을 명시적 자료구조로 구성하는 것이다.explicit가 implicit와 다른 점은 가용 블록만으로 리스트를 연결시킨다는 것이다.im
가용 블록들을 사이즈별로 모아 다른 연결리스트에 관리하는 방식서로 다른 size 값이 N개라면, N개의 free list(size class)를 두고 각 free block들을 분류해서 기억하는 것이다.하나의 사이즈가 아니라, 사이즈의 range를 하나의 class로
각 크기 클래스가 2의 거듭제곱인 segregated fits의 특별한 경우이다.기본 아이디어는 2^m 워드 더미가 주어졌을 때 각 블록 크기 2^k에 대해 별도의 자유 목록을 유지한다. (0<=k<=m)요청된 블록 크기는 2에 가장 가까운 거듭제곱으로 반올
CPU 자원을 사용 중인 프로세스에 interrupt를 걸고, 다른 프로세스를 실행시킬 수 있다.어떤 경우에 프로세스에 interrupt를 걸건지 알아보자!한 프로세스가 할당받은 시간(time slice, time quantum) 동안 작업을 하다가 작업을 완료하지 못
Context Switching: CPU가 현재 작업 중인 프로세스(or 쓰레드)에서 다른 프로세스로 넘어갈 때 지금까지의 프로세스의 상태를 저장하고, 새 프로세스의 저장된 상태를 다시 적재하는 작업을 Context Switch(문맥 교환)이라 한다.프로세스의 정보는
CR3 CPU 레지스터는 컨텍스트 전환 처리에 중요하다.CR3 레지스터는 현재 프로세스에 대한 PML4(페이지 맵 레벨 4) 테이블의 기본 주소를 포함하도록 업데이트 된다.PML4 테이블은 MMU(메모리 관리 장치)가 가상 메모리 주소를 물리적 메모리 주소로 확인하는
효율적으로 페이지와 프레임을 관리하는 것에 대해 구현할 것이다. 이 말인 즉슨 사용되고 있는 가상/물리 메모리 영역에 대해 추적해야 한다는 것!먼저 supplemental page table(spt; 보조 페이지 테이블->우리가 구조체 생성해야 함), 그리고 physi
base_pml4: 현재 실행 중인 프로세스의 페이지 맵 레벨4(pml4) 테이블을 가리키는 포인터 pml4 table은 가상 메모리 주소 -> 물리 메모리 주소로 변환하는 데 사용되는 페이지 테이블 계층 구조의 맨 꼭대기에 위치한 테이블
메모리 로딩을 필요한 시점까지 지연시키는 디자인페이지가 할당되었다는 것은 대응되는 페이지 구조체는 있지만, 별도의 물리 메모리 프레임은 아직 없고 페이지의 실제 콘텐츠는 아직 로드되지 않은 상태이다. 콘텐츠는 page fault에 의해 실제로 콘텐츠가 필요하다는 sig
주석으로 정리..
우리는 디스크에 영구적으로 저장해놓은 데이터를 사용할 때 디스크에서 직접 작업하지 않는다.왜일까?파일 I/O 등의 작업을 디스크에서 직접 처리하면 일단 너무 느리다. 따라서 우리는 RAM과 같은 메인 메모리에 올린 후 매핑해서 사용하면 작업을 좀 더 빠르게 처리할 수