본문 바로가기

분류 전체보기64

pintos - virtual memory(3) what is pg_round_down? /* Find VA from spt and return page. On error, return NULL. */ struct page * spt_find_page (struct supplemental_page_table *spt UNUSED, void *va UNUSED) { /* TODO: Fill this function. */ struct page *page = (struct page *)malloc(sizeof(struct page)); struct hash_elem *e; page->va = pg_round_down(va); e = hash_find (&spt->spt_hash, &page->hash_elem); free(page); return e !=.. 2023. 12. 19.
pintos - Virtual Memory(1) Virtual Memory 위키백과 설명: 가상 메모리 또는 가상 기억 장치(문화어: 가상기억기, virtual memory, virtual storage)는 메모리 관리 기법의 하나로, 컴퓨터 시스템에 실제로 이용 가능한 기억 자원을 이상적으로 추상화하여 사용자들에게 매우 큰 (주)메모리로 보이게 만드는 것을 말한다. 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식이다. 이러한 방식은 멀티태스킹 운영 체제에서 흔히 사용되며, 실제 주기억장치보다 큰 메모리 영역을 제공하는 방법으로도 사용된다. 가상적으로 주어진 주소를 가상 주소(virtual address) 또는 논리 주소(logical address)라고 하며, 실제 메모리 상에서 유효한 주소를 물리 주소(physical add.. 2023. 12. 14.
pintos (부끄러운)실수 기록 여기서 틀린 부분을 찾아보세요. (hint: 2개) . . . 1. check_address 함수를 먼저 살펴보겠습니다. void check_address(void *addr) { struct thread *t = thread_current(); if (!is_user_vaddr(addr) || addr == NULL || pml4_get_page(t->pml4 , addr) == NULL) { exit(-1); } } seek 함수에서 check_address 함수를 struct file * 타입의 file에 대해 호출하고 있습니다. 하지만 check_address 함수는 void *addr를 매개변수로 받아 해당 주소가 유효한 사용자 주소인지 확인하는 함수입니다. check_address 함수는 메모.. 2023. 12. 14.
Git - Divergent branches 문제점: 'jinjung02' 브랜치에서 git merge main 진행시'Already up to date.'라는 메시지를 출력되지만 main의 변경사항이 반영 안된다. pintos 프로젝트를 진행하며 작업량이 많아지다 보니 분업을 해서 진행하고 있었습니다. local에는 현재 'main' 브랜치 , 'jinjung02' 브랜치 두 개의 브랜치가 존재합니다. 'jinjung02' 브랜치에서 작업 후에는 git에 있는 'jinjung02' 브랜치로 commit 합니다. 그 후 팀원들의 동의를 받아 main 에 PR 했습니다. 이후 local 'main' 브랜치, 'jinjung02' 브랜치 모두 업데이트하기 위해 'jinjung02' 브랜치에서 git pull origin main 을 진행했습니다. 하지.. 2023. 12. 9.
728x90