반응형 개발일지38 pintos - virtual memory(5) Supplemental Page Table - Revisitbool supplemental_page_table_copy (struct supplemental_page_table *dst, struct supplemental_page_table *src); git_book 설명:보조 페이지 테이블을 src에서 dst로 복사합니다. 이 함수는 자식이 부모의 실행 컨텍스트를 상속해야 할 때 사용됩니다(예: fork()). src의 보충 페이지 테이블에 있는 각 페이지를 반복하고 dst의 보충 페이지 테이블에 있는 항목의 정확한 복사본을 만듭니다. 초기화되지 않은 페이지를 할당하고 즉시 청구해야 합니다. supplemental_page_table_copy함수 호출하는 곳: hash.c에 있는 hash_f.. 2023. 12. 22. pintos - virtual memory(4) 부제: 어떤 것이 더 효율적일까?FAIL tests/userprog/args-noneFAIL tests/userprog/args-singleFAIL tests/userprog/args-multipleFAIL tests/userprog/args-manyFAIL tests/userprog/args-dbl-spaceFAIL tests/userprog/haltFAIL tests/userprog/exitFAIL tests/userprog/create-normalFAIL tests/userprog/create-emptyFAIL tests/userprog/create-nullFAIL tests/userprog/create-bad-ptrFAIL tests/userprog/create-longFAIL tests/user.. 2023. 12. 20. 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 != NU.. 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. 이전 1 2 3 4 5 6 7 다음 728x90 반응형