Directory Project 1 📂 threads/ : base kernel의 소스 코드 📂 devices/ : (키보드, 타이머, 디스크 등) I/O 장치 interfacing 을 위한 소스코드 이 중 timer 코드 수정 (그 외엔 이 코드들을 수정할
첫주차 주요 검색어이다.Project 1: ThreadsTime-sharing systemContext SwitchingSchedulerRound Robin (RR)PriorityPriority donationMulti-Level Feedback Queue Schedu
첫번째 오류 방법1) breakpoint > c 실행 , n 다음줄 ... 이때 c 를 2번 사용하지 말자
📂 uerpog/ : user program loader의 소스코드📂 filesys/ : 기본적인 file system의 소스코드📂lib/ : 표준 C 라이브러리의 일부분이 구현되어있음이 디렉토리의 코드들은 Pintos 커널과 그 커널에서 동작하는 user pro
Synchronization 동기화 하는 가장 단순한 방법 : 인터럽트를 불가능하게 하는 것 (= 일시적으로 CPU가 인터럽트에 응답하는 것을 막기) 쓰레드 선점(preempt) : timer interrupt에 의해 이뤄짐 인터럽트가 꺼지면, 다른 쓰레드는 진행중인 쓰레드를 선점 불가 인터럽트가 켜져있으면, 진행 중인 쓰레드가 언제든지 다른 쓰레드에...
헤더파일 include/threads/vaddr.h 와 include/threads/mmu.h 는 가상 주소들을 다루기위한 이런 함수들과 매크로들을 정의각각 가상 주소 오프셋 부분의 인덱스 (0) bit 와 bit의 수 (12)“페이지 오프셋” 부분의 비트들에 1, 나
include/vm/vm.h에 정의되어 있는 page는 가상 메모리에서의 페이지를 의미하는 구조체Page 구조체 멤버 : operations, virtual address, physical frame ( + union 멤버(=필드))union 자료형 : 하나의 메모리
📂vm/ : 거의 비어있는 디렉토리. project 3에서 여기에 가상 메모리를 구현📂 include/ : 헤더파일들(.h) 의 소스코드📂 include/lib/kernel/ : Pintos 커널에만 포함된 C 라이브러리의 일부bitmaps, doubly link
load 함수에서load_segment 를 호출file_info 구조체에 lazy_load \_segment 에 필요한 파일 정보를 넣기Lazy Loading을 위해 uninit 상태의 페이지 생성 (초기화)uninit 페이지 Initialize 후 페이지 폴트가 일어
메모리 스와핑 : 메모리 회수기법누가 ? : 운영체제 의해 이루어짐언제 ? : 유저 프로그램이 메모리 할당을 요청했을 때무엇을 ? : 사용되지 않는 메모리 프레임들을 디스크로 스왑 아웃!어떻게 ? : 운영체제가 감지하면 swap 디스크로 퇴거(evict)시킬 페