본문 바로가기

분류 전체보기

(90)
Pintos - interrupt 비교 (#PF(page fault), Timer Interrupt) 이전 thread를 학습하며 timer interrupt의 발생 과정timer_init 부터 해서 intr_register_ext 부터 intr_handler까지 학습을 해본 기억이 있다. 물론 완벽하게 이해하지 못하고 대충 넘어갔는데,이번 vm을 학습하며 #PF라는 인터럽트가 중요해졌는데, 이전에 학습한 timer_interrupt와 비교해서 차이가 무엇인지 정리를 해보고자 한다. 중점은 #PF를 중심으로 둘 예정 External hardware interruptex. timer, keyboard, disk - 외부 장치가 CPU에게 비동기적으로 알림 Internal interrupt (CPU exception)ex. page fault(#PF), divide error(#DE), general pro..
Pintos - vm [페이지 할당 초기화 과정을 위한 흐름도] https://gyumingomin.tistory.com/91 Pintos - SPT(Supplemental Page Table)와 Hash TableSPT(Supplemental Page Table)에서 hash table을 왜 쓸까?Pintos VM에서 핵심page fault가 발생했을 때, 이 가상주소에 대한 정보를 빠르게 찾아야 함va → struct page를 빠르게 찾기위해 hash 사용ELF 로딩 시 - 실제 frgyumingomin.tistory.com https://gyumingomin.tistory.com/89 Pintos - 사용자 프로그램 흐름https://github.com/IMGyuGo/pintos-w11-12 GitHub - IMGyuGo/pintos-w11-12: pintos..
Pintos - SPT(Supplemental Page Table)와 Hash Table SPT(Supplemental Page Table)에서 hash table을 왜 쓸까?Pintos VM에서 핵심page fault가 발생했을 때, 이 가상주소에 대한 정보를 빠르게 찾아야 함va → struct page를 빠르게 찾기위해 hash 사용ELF 로딩 시 - 실제 frame을 바로 할당하지 않음 - 대신 "이 virtual page는 어떤 타입인지"를 저장이후 page fault 발생 시 - SPT에서 해당 page를 찾고 - 그때 frame 할당 + swap/file load 수행유저 가상주소 ↓SPT(Hash) ↓struct page ↓필요하면 frame 연결VApage0x8048000code page0x8049000code page0x4747f000stack pagepag..
Pintos - VM [vm.h 학습] VM_TYPEvm_type : Pintos VM에서 "이 가상 페이지가 어떻게 관리해야 하는지"를 담당Pintos VM의 전체 구조가상주소(VA) ↓PML4 (HW page table) ↓물리 frame (PA)+ 추가 정보는 SPT가 관리역할담당주소 변환PML4페이지의 의미/상태SPT + struct page실제 물리 메모리frame물리 메모리 관리frame table1. PML4PML4는 CPU/MMU가 사용하는 실제 페이지 테이블역할은 딱 하나가상주소 -> 물리주소 변환하지만 PML4는 이런건 모름ⓐ. 이 페이지가 mmap인지ⓑ. swap-out 되었는지ⓒ. lazy loading 대상인지ⓓ. stack 인지ⓔ. file-backed인지ⓕ. 어디서 다시 읽어와야 하는지즉, "주소 변환"만 가..
Pintos - 사용자 프로그램 흐름 https://github.com/IMGyuGo/pintos-w11-12 GitHub - IMGyuGo/pintos-w11-12: pintos-vm,filesys[팀원: 고명석, 김규민, 김민철, 김용]pintos-vm,filesys[팀원: 고명석, 김규민, 김민철, 김용]. Contribute to IMGyuGo/pintos-w11-12 development by creating an account on GitHub.github.comhttps://gyumingomin.tistory.com/86 Pintos - 어떻게 부팅해서 운영체제가 되는가? [2]https://gyumingomin.tistory.com/85 Pintos - 어떻게 부팅해서 운영체제가 되는가? [1]Pintos는 어떻게 부팅해서 운..
10주차 - WIL (Weekly I Learned) - 배운것 더보기 1. 10주차 회고재밌는 회고록을 쓰고자 한다. (과연?)다른 사람들의 10주차 WIL을 보면서 느낀 감정이 있다. 어떤 분은 그 주간동안 공부했던 내용이 무엇이었는지 정리하는 사람들도 있었고, 어떤 분들은 자신이 일주일 동안 느꼈던 감정이 무엇이었는지 회고하는 내용을 작성한 분들도 있었다. 그런 내용들을 보다 보니 느낀 사고가 있다.물론 공부한 내용을 복기하는 것도 좋지만 글이 더 재밌고 즐겁다고 느껴진 부분들은 이번 주차에 어떤 감정을 느끼면서 프로젝트를 진행했고, 그 감정을 정리해서 진심을 담아 글로 작성해놓았던 글들이 더욱 재밌고 진솔하다는 느낌이 들었다.그로 인해 나도 이번주차에 느꼈던 감정들을 의식의 흐름 기법대로 다 나열하고, 스스로 글을 정리하는 시간을 가진후 AI..
9주차 - WIL (Weekly I Learned) - 배운것 더보기 https://gyumingomin.tistory.com/85 Pintos - 어떻게 부팅해서 운영체제가 되는가? [1]Pintos는 어떻게 부팅해서 운영체제가 되는가?start.S에서 main(), 그리고 thread_exit() 까지의 흐름 정리 [1] Pintos를 보면서 가장 인상 깊었던 지점은 main()이 시작점이 아니라는 점이다.보통 프로그램에gyumingomin.tistory.comhttps://gyumingomin.tistory.com/86 Pintos - 어떻게 부팅해서 운영체제가 되는가? [2]https://gyumingomin.tistory.com/85 Pintos - 어떻게 부팅해서 운영체제가 되는가? [1]Pintos는 어떻게 부팅해서 운영체제가 되는가?s..
Pintos - 어떻게 부팅해서 운영체제가 되는가? [2] https://gyumingomin.tistory.com/85 Pintos - 어떻게 부팅해서 운영체제가 되는가? [1]Pintos는 어떻게 부팅해서 운영체제가 되는가?start.S에서 main(), 그리고 thread_exit() 까지의 흐름 정리 [1] Pintos를 보면서 가장 인상 깊었던 지점은 main()이 시작점이 아니라는 점이다.보통 프로그램에gyumingomin.tistory.com먼저 읽고 오시길 추천드립니다. start.S에서 main() 그리고 thread_exit()까지의 흐름 정리 [2]이전에서 start.S의 어셈블리어 흐름을 조사했다면(물론 어셈블리어 전부를 다 보진 못했지만), 이제는 실제로 OS가 어떻게 초기화되는지 명확히 하고 넘어가고자 한다.start.S -> main(..