728x90 정글 2기71 [Pintos] Project 4 마무리 [Pintos] Project 4 마무리 느낀점 장장 5.5주 동안 진행된 핀토스 프로젝트의 마지막 주차가 끝났다. 아직도 할게 많이 남은 것 같고, 완전히 이해하지 못한거 같은데 끝난다는 게 좀 아쉽긴 하다. 더 하고 싶다는 건 아니고... (세상엔 할수있는 게 너무 많다 !) 핀토스는 분명 체력적으로나 정신적으로 사람을 지치게 한다. 얽히고 섥힌 함수들을 해석하며 그들의 관계를 파악하는 것은 여간 쉬운 일이 아니다. 정말 끊임없이 뽑아도 뽑아도 나오는 줄줄이 사탕처럼 '끝은 어딘가? 아니 시작은 어디었던가?' 하는 순간의 연속이다. ㅋㅋ 엔지니어링 매 프로젝트를 시작할 때 마다 방대한 양과 난이도에 압도되었다. 모든 것을 완벽히 해낼 시간이 주어지지 않기 때문에 어떤 부분에 집중해서 어떤 것을 얻어갈.. 2021. 11. 2. [Pintos] Project 4_File Allocating Table(FAT) vs multi-level index [Pintos] Project 4_File Allocating Table(FAT) vs multi-level index 파일 시스템에서는 1) 자료구조 2) 접근방법 이 중요하다. 데이터 블록의 위치를 표현하는 대표적인 방식은 inode를 이용한 방식 중 하나인 multi-level index와 linked list 개념을 이용한 File allocating table(FAT)가 있다. File allocating table(FAT) 자료구조 : FAT 접근방법 : linked list의 table화 File allocating table은 linked list의 pointer를 table로 따로 관리하고 있다. 메모리에 올려 사용 가능히다. inode가 없다. linked list는 블럭을 읽는 연산이.. 2021. 10. 31. [SW사관학교 정글] 10/28(목) 크래프톤 보호되어 있는 글 입니다. 2021. 10. 28. [pintos] Project 3_Virtual Memory(가상 메모리)_실행순서 [pintos] Project 3_Virtual Memory(가상 메모리)_실행순서 // 실행순서 # VM ## 실행 순서 initd -> supplemental_page_table_init -> hash_init ->hash_clear -> page_hash -> page_less -> process_exec -> process_cleanup -> susplemental_page_table_kill -> supplemental_page_table_init -> load -> pml4_create -> load_segment -> vm_alloc_page_with_initializer : file 정보를 page 구조체에 저장 후 spt에 추가. load를 위한 준비과정 -> spt_find_page -.. 2021. 10. 28. [pintos] Project 3_Virtual Memory(가상 메모리)_2 [pintos] Project 3_Virtual Memory(가상 메모리)_2 Memory mapped files mmap and munmap System Call void *mmap (void *addr, size_t length, int writable, int fd, off_t offset); // systcall.c void syscall_handler (struct intr_frame *f UNUSED) { // TODO: Your implementation goes here. switch (f->R.rax) ... case SYS_MMAP: f->R.rax = (uint64_t) mmap ((void*) f->R.rdi, (size_t) f->R.rsi, (int) f->R.rdx, (int).. 2021. 10. 27. [pintos] Project 3_Virtual Memory(가상 메모리) [pintos] Project 3_Virtual Memory(가상 메모리) Introduction Memory Management Implement Supplemental Page Table void supplemental_page_table_init (struct supplemental_page_table *spt); supplemental page table을 initialization 한다. new process start (initd of process.c)할 때나 process가 fork(__do_fork of process.c)할 때 실행된다. //vm.c void supplemental_page_table_init (struct supplemental_page_table *spt) { str.. 2021. 10. 19. 이전 1 2 3 4 5 6 ··· 12 다음 728x90