728x90

분류 전체보기 209

Page fault (Pintos, 발표자료)

Page fault해당 페이지 폴트는 Pintos x86_64 기준으로 설명합니다.Page fault란?Page fault는 프로세스가 참조하려는 가상 메모리 페이지가 현재 물리적 메모리에 로드되어 있지 않을때 발생합니다. 이것은 메모리 접근 시도 중에 발생하는 인터럽트나 예외 상황입니다.즉, CPU가 아직 메모리에 존재하지 않는 가상 주소를 접근하려고 할 때 발생하는 예외(Exception)입니다.기본 작동 방식페이지 폴트 발생: 프로세스가 메모리에 접근하려 할 때, 해당 가상 주소에 대응하는 페이지가 물리적 메모리에 없으면 발생합니다.인터럽트 처리: 페이지 폴트는 OS에 의해 처리되는 인터럽트입니다. OS는 이 인터럽트를 받고 현재 CPU의 상태를 저장한 후 페이지 폴트 처리 루틴을 실행합니다.페이지..

13주차 퀴즈 복습

13주차 퀴즈 복습1번 문제페이지 테이블 접근 시 TLB가 어떻게 페이지 테이블의 성능을 향상시키는지 설명하고, TLB miss가 발생하면 시스템이 어떤 과정을 거쳐 메모리에 접근하는지 설명하세요.[답안]TLB는 자주 사용되는 주소 변환 정보를 빠르게 참조할 수 있도록 하는 캐시 메모리입니다.TLB에 원하는 주소 변환 정보가 있으면, 페이지 테이블을 참조하지 않고 바로 물리적 주소를 얻을 수 있어 성능이 향상된다고 합니다.TLB가 miss일 때 시스템은 페이지 테이블을 조회하여 물리적 주소를 찾고, 이 정보를 TLB에 업데이트 합니다.2번 문제페이징 기법을 사용하는 메모리 관리 시스템에서, 페이지 프레임 수를 늘리는데도 page fault가 발생하는 빈도가 오히려 늘어나는 경우가 있습니다. 이를 Bela..

WEEK 13 PintOS TIL(6월11일 수요일)

[목표]mmap 구현을 해봅니다.발표자료를 만듭니다.13주차 퀴즈 오답 노트를 작성합니다.10:00 ~ 12:00어제 develop5에 merge한 것을 내가 작성한 코드에 맞게 merge했습니다.12:00 ~ 13:00식사를 했습니다.13:30 ~ 14:30어제 합친 develop5에 대해 pull을 당겨왔고, 내 코드만 복구하여 make check를 돌려보았다. 놀랍게도 9개의 테스트 케이스가 추가로 통과했다. 뭔가 다른 부분이 복구되면서 개선이 된것 같다.pass tests/userprog/args-nonepass tests/userprog/args-singlepass tests/userprog/args-multiplepass tests/userprog/args-manypass tests/userp..

WEEK 13 PintOS TIL(6월10일 화요일)

[목표]mmap 구현을 해봅니다.팀원들 코드를 merge 해봅니다.13주차 퀴즈를 진행합니다.09:55 ~ 10:30어제 노션에 쓴 TIL을 정리하고 있다. 10:30 ~ 11:00벨로그와 티스토리는 정리완료했다.11:00 ~ 12:00mmap를 막상 구현하기 보다는 이해가 우선인지라 어떤식으로 구현해야되는지 확인을 해보았다.12:00 ~ 13:00식사를 하고 휴식을 가졌다.13:00 ~ 14:00아까 이해한 mmap를 통해 구현을 해보았습니다.14:00 ~ 15:0013주차 퀴즈를 진행했습니다. 대부분 페이지 관련된 내용이었습니다. 나중에 정리되는대로 복습 내용을 올리겠습니다.15:00 ~ 17:00운동을 하고 왔습니다.17:00 ~ 17:30유윤선 코치님 커피챗이 있습니다. 현업의 계신 분들의 임베디..

WEEK 13 PintOS TIL(6월9일 월요일)

[목표]mmap 전 통과안되는 코드들을 트러블 슈팅합니다. (어제 fork_read 하다가 말았음)(실패로 인한 나중에)stack growth를 구현한 코드를 이해해봅니다.mmap 구현을 해봅니다.09:55 ~ 10:30졸았다. 어제 3시 넘어서 잔 여파가 큰 것같다.10:30 ~ 11:00주말간의 TIL을 통합해서 벨로그에 적었다. 주말간 먹었던 사진들과 바다 사진도 올렸다.11:00 ~ 12:00현재 페이지 테이블 해제 부분을 재작성하고 있습니다. fork-read와 페이지 kill 간의 문제가 해결되지 않고 있습니다.12:00 ~ 13:30식사를 하고 휴식을 가졌습니다.13:30 ~ 16:30식권 수령과 휴대폰 케이스가 불량이라 반품 처리를 했습니다.fork-read 테스트 케이스에 다음과 같은 문..

카테고리 없음 2025.06.13

WEEK 13 PintOS TIL(6월7일 토요일 ~ 6월8일 일요일)

6월 7일 토요일참고로 이번 TIL에는 놀러간 이야기와 사진들이 많습니다![목표]stack growth를 구현하고 관련 테스트 케이스를 통과해봅니다. (진행중)놀러가기때문에, 가서 시간 남는대로 티스토리 정리해봅니다.벨로그와 노션 먼저 정리하기. 틈틈히 코드 관련 해서 정리하기.밀린 티스토리정리하기!!!!!!! (너무 밀림)10:00 ~ 10:45출근해서 잤음… 5시에 여파가…10:45 ~ 12:00stack growth를 구현해봅니다.vm_try_handle_fault먼저 vm_try_handle_fault 함수를 수정해줘야한다. 왜냐하면 스택 자동확장이 필요한 시기에 확장을 시도해야하기 때문입니다. 즉, 스택 증가를 식별해줍니다. 케이스1과 2가 정상적으로 실행된다면 페이지 적재를 수행합니다./* R..

WEEK 13 PintOS TIL(6월6일 금요일)

[목표]fork를 제외하고 모든 테스트 케이스가 돌아가는지 확인해봅니다. (진행중)fork도 돌아갈 수 있는 코드를 만듭니다.09:55 ~ 10:30빨래를 하고 왔습니다.10:30 ~ 12:00어제의 내용을 정리해서 게제했습니다. 그러나 다른 코드 트러블 슈팅 내용이나 어떻게 구현했는지 작성해야될 것들이 많아서 식사하고 정리를 해야될 것 같습니다.12:00 ~ 14:00햄버거를 먹으러 갔다왔습니다. 오면서 올리브영에서 선스프레이를 사서 왔다.14:00 ~ 16:30Memory Managment라는 부분을 노션에 정리했습니다. 어떻게 구현했는지. 어떤식의 함수와 구조체를 썻는지 써두었습니다.16:30 ~ 18:00운동(어깨)를 하고, 샤워하고 왔습니다.18:00 ~ 19:40식사와 휴식을 가졌습니다.19:..

WEEK 12 PintOS TIL(6월5일 목요일)

[목표]fork를 제외하고 모든 테스트 케이스가 돌아가는지 확인해봅니다.fork도 돌아갈 수 있는 코드를 만듭니다.일단 벨로그 정리먼저하고 코드보기.09:55 ~ 10:30어제의 내용을 벨로그에 게제했습니다.10:30 ~ 12:00어제에 이어서 디버깅 중입니다. 왜 이렇게 안되는지 모르겠습니다.12:00 ~ 12:30식사를 하고 왔습니다.12:30 ~ 13:00코드 디버깅하다가 졸려서 자다 왔습니다.13:00 ~ 14:00잠을 잤습니다.운영진 티타임 (14:00 ~ 15:20)정글 스테이지에서 운영진 티타임을 가졌습니다. 밑에 내용은 대강 이해한대로 적었습니다. 정리가 완료되는대로 따로 포스팅할 계획은 있습니다.임베디드, 펌웨어 및 하드웨어 제어 개발임베디드, 펌웨어 및 하드웨어 제어 개발에 대한 주제로..

카테고리 없음 2025.06.08

WEEK 12 PintOS TIL(6월4일 수요일)

[목표]익명 페이지 관련된 내용을 이해하고 코드를 작성해봅니다. (진행중)fork를 제외하고 모든 테스트 케이스가 돌아가는지 확인해봅니다. (진행중)09:55 ~ 10:30새로운 헤드폰을 언박싱했습니다. 해외에서 배송이와서 좀 오래걸렸네요…10:30 ~ 11:30vm_anon_init을 구현해봤는데, 이게 맞는지 모르겠습니다. 초기화를 해야되서 swap_slot을 -1로 해야되는건 알겠는데 받는 인자나 내보내는 값의 형태를 void에서 bool로 바꾸고 struct page *page, enum vm_type type, void *kva 로 인자를 바꿔서 괜찮은지 모르겠습니다.bool vm_anon_init(struct page *page, enum vm_type type, void *kva) { ..

WEEK 12 PintOS TIL(6월3일 화요일)

[목표]spt 보충 테이블 관련 코드를 직접 구현하면서 vm을 알아가보겠다. 프레임 관련 내용을 이해하고 코드를 작성해봅니다.익명 페이지 관련된 내용을 이해하고 코드를 작성해봅니다.spt page_hash부분 재이해하고 작성해야 합니다.page_less structer(vm.h) 관련된 부분 재확인합니다.09:55 ~ 12:00테이블을 구현하는 방식 중에는 배열, 리스트, 비트맵, 해시 테이블 등이 있는데 저같은 경우 해시 테이블을 채택했습니다.첫번째로, 어제에 이어서 spt 페이지 테이블을 초기화하는 코드를 구현했습니다. 그 과정에서 page_hash와 page_less 함수를 추가적으로 구현했습니다. 각 함수는 다음과 같은 역할을 합니다.page_hash: 페이지의 가상주소를 바탕으로 고유한 해시값을..

728x90