전체 글(25)
-
2022.12.20 SW정글 93일차 / Pintos Virtual Memory (P4) WIL
핀토스가 드디어 끝났다! 이번주 WIL은 팀 노션으로 대체합니다 ✔️ https://www.notion.so/a881055f4b354fe0817db867a44a6479
2022.12.20 -
2022.12.13 SW정글 86일차 / Pintos Virtual Memory (P3) WIL
이번 주 WIL은 팀 notion으로 대체합니다 :) https://debonair-howler-842.notion.site/onlyEEE-4f61477602a348e59dac399645af0b5a
2022.12.13 -
2022.12.01 SW정글 74일차 / Annonymous Page, Stack Growth 연습장
1) supplemental_page_table 구조체 수정 ➡️ struct hash spt_hash 추가하기 2) supplemental_page_init 완성 ➡️ 해쉬를 init해줌 ➡️ hash_init을 넣어줌 ( spt의 spt_hash, page_hash 함수, page_less 함수, aux는 NULL) 3) spt_find_page 완성 ➡️ spt에서 해당 va를 가지고 있는 elem을 찾아서 그에 맞는 page를 반환하는 함수 ➡️ - malloc을 통해서 page를 만들어준다. - va를 page에 이어준다. - hash_find를 통해서 spt안에 있는 spt_hash 안에서 hash_elem을 찾아준다. - page를 만든 것은 dummy이므로, 다 사용했으면 토사구팽 시켜준다..
2022.12.02 -
2022.11.30 SW정글 ~ 73일차 / Virtual Memory 연습장
Virtual memory 첫번째 과제 : supplemental page table 구현하기 pml4라는 페이지 테이블 = 가상메모리와 물리 메모리간의 매핑을 관리 + supplemental page table 필요(SPT) : 페이지폴트 발생했을 때의 핸들링과 자원관리를 위해 각 페이지마다의 추가정보를 들고 있는 페이지 테이블을 말함 두 가지 역할은 아래와 같음 1) 페이지폴트 발생 시, 커널이 SPT에서 오류가 발생한 가상페이지를 조회하여 어떤 데이터가 어디에 있는지 확인 2) 프로세스가 종료될 때, 어떤 리소스를 free 시킬 시 결정하기 위해 커널이 참조 void supplemental_page_table_init (struct supplemental_page_table *spt); ✔️ SPT..
2022.12.02 -
2022.11.29 SW정글 ~ 72일차 / Pintos Weekly I learned
Pintos 프로젝트 2주차가 마무리 되었다! 스레드 기반의 스케쥴링을 공부했던 1주차에 비해 2주차는 구현해야할 것도 많고, 함수들도 엄청 많아서 깊게 공부하기가 어려웠다. 2주차 프로젝트는 바로, 유저프로그램이다. 1) Argument passing 처음에는 유저가 입력한 커맨드라인에서 인자를 추출하여 커널, 즉 운영체제가 전달 받을 수 있게 만드는 작업을 하였다. 예를 들면 함수가 있을 때의 안에 들어가는 argument가 여기에 해당한다. 메모리에서는 유저가가 사용하는 부분과 커널만이 접근 가능한 영역이 나누어져있다. (유저는 유저영역만 참조 가능 / OS는 유저영역 + 커널영억 둘다 참조 가능) 유저영역에서의 정보를 커널에 전달하기 위해서는 인터럽트프레임(if)이라는 곳에 정보를 담게 된다. i..
2022.11.29 -
2022.11.17 SW정글 ~ 60일차 / Pintos Weekly I learned
알고리즘 주가 끝나고, C언어에 대한 습득도 끝나고, 대망의 Pintos 프로젝트에 들어와서 첫 주차 알람 / 스케쥴링 부분을 공부하고 난 후, 내가 깨달은 것들을 여기에 남기고자 한다. 1. Round-Robin 방식 및 기존의 timer_sleep()함수 처음에 Round-Robin 방식에 대해 이해가 잘 안 되어서, 여러 블로그와 자료를 찾아봤는데 pintos에서의 Round-Robin 방식과 timer_sleep()함수를 제대로 설명한 곳이 없어서 난감했다. 여러 고찰(???) 끝에 제대로 이해한 것은 아래와 같다. ㅜㅜ 1) thread 구조체에서 status가 THREAD_READY인 스레드들은 ready_list라고 부르는 큐에 들어가있다. 하드웨어타이머에서 발생되는 타임 인터럽트가 도달하면..
2022.11.18