본문 바로가기

개발일지30

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.
pintos - USER PROGRAMS (1) Argument Passing목표: 커맨드 라인 파싱 기능 구현 과제 설명: - pintos는 프로그램과 인자를 구분하지 못하는 구조   예: $ls –a /* pintos는 ‘ls -a’를 하나의 프로그램명으로 인식- 프로그램 이름과 인자를 구분하여 스택에 저장, 인자를 응용 프로그램에 전 달하는 기능 구현  전체 흐름중에 내가 수정해야할 함수의 역할을 파악하는것이 중요하다.  break point를 걸어 어떻게 넘어오는지 확인하자  커널은 사용자 프로그램이 실행을 시작하기 전에 초기 함수에 대한 인수를 레지스터에 넣어야 한다. 인수는 일반적인 호출 규칙과 동일한 방식으로 전달된다고 한다. *일반적인 호출 규칙https://en.wikipedia.org/wiki/X86_calling_convention.. 2023. 12. 5.
pintos - USER PROGRAMS (intro) USER PROGRAMS를 시작하기 앞서 관련된 키워드를 살펴보겠다.  1. **User mode vs Kernel mode**: 운영체제는 보안과 안정성을 위해 두 가지 모드를 사용합니다. 사용자 프로그램이 실행되는 User mode에서는 제한된 권한만을 가지지만, 시스템 호출을 통해 필요한 서비스를 요청하면 운영체제는 Kernel mode로 전환하여 요청된 작업을 수행합니다.  2. **Register vs Memory**: 레지스터와 메모리는 컴퓨터 시스템에서 데이터를 저장하는 두 가지 주요 장치입니다. 레지스터는 CPU 내부에 위치하여 빠른 접근이 가능하지만 용량이 작습니다. 반면에 메모리는 용량이 크지만 CPU 외부에 위치하여 접근 속도가 느립니다.  3. **User Stack**: User .. 2023. 12. 4.
728x90