정글사관학교 개발일지 89

PintOS Project 3 - Virtual Memory (6) swap in/out(정글사관학교 83일차 TIL)

Gitbook 정리는 요기에. 1. swap in/out 관련 셋업 구현 vm/anon.c에 있는 vm_anon_init과 anon_initializer를 수정해라 Gitbook 설명을 보면, anon page는 어떤 백업 공간도 갖고 있지 않다고 한다. 따라서 anon page를 swapping하는 것을 지원해주기 위해 swap disk라고 하는 임시 공간을 제공해준다. swap_disk는 디스크 내부에 있는 공간을 뜻한다. anon page에 대한 swap을 구현하기 위해 swap disk를 구현해보자. swap_table 구현 swap table은 swap disk에서 사용 가능한 영역과 사용 중인 영역을 구분하기 위한 테이블로, 비트맵 형식으로 구현한다. bitmap으로 해당 정보를 구현시 1bi..

PintOS Project 3 - Virtual Memory (5) mmap() 및 page fault 관련 추가 정리(정글사관학교 82일차 TIL)

저번 시간에는 mmap/munmap을 통해 가상 메모리에 페이지를 할당해주는 방법에 대해 배웠다. mmap에 대해 궁금한 점을 마저 정리하고 내일 swap in/out으로 넘어가련다. 정리 1: mmap으로 페이지를 할당받으면 힙/스택 중 어느 공간에 페이지가 할당되는가? 결론부터 말하면 mmap으로 페이지를 할당받으면 힙도 스택도 아닌 공간에 할당된다. 아래 그림에서도 나와있듯 mmap은 file의 offset 위치부터 length 길이만큼 읽어들여 가상 메모리에 매핑한다. 이때 주의할 점은 첫번째로 매핑할 때는 물리 프레임에는 올리지 않는다는 점. 이 역시 malloc()과 차이라고 할 수 있는데, malloc()은 힙 공간에 인자로 넣어주는 사이즈만큼의 공간을 할당한다. 공부하면서 느끼는 건데, m..

PintOS Project 3 - Virtual Memory (4) Memory Mapped Files (정글사관학교 81일차 TIL)

0. Memory Mapped files 개념 정리 이전 파트에서 다뤘던 anonymous page는 특정 파일에 매핑되지 않은 페이지를 다뤘다면, 이번에는 특정 파일과 매핑된(==file-backed) 페이지를 다룬다. 따라서 memory-mapped file은 곧 file-backed page와 연결된 파일을 뜻한다. 이 페이지 안의 내용은 이미 디스크에 존재하는 파일의 데이터를 복제하기 때문에 page fault가 발생했을 때 즉시 디스크->프레임에 할당된다. 메모리가 해제되거나 swap-out되면 메모리 내 변경 사항은 파일로 반영된다. 깃북 설명 링크는 여기. 여기서는 mmap과 munmap 함수를 구현한다. mmap은 이전에 malloc 공부할 때 잠시 다루기도 했는데, 그때는 단순히 페이지 ..

PintOS Project 3 - Virtual Memory (3) Stack Growth (정글사관학교 80일차 TIL)

하..현재 (2)에서 올 fail이 뜨는 상황이다..(혹시나 말하건대 제 글을 참조하며 코드를 짜는 분이 있다면 그러지 말라고 말씀을...그냥 개념 공부만 참조하세요..코드 다 터집니다..) 뒷 내용을 미리 땡겨 쓰다보니 터지지 않았을까 하는 작은 희망으로 무소의 뿔처럼 우직하게 일단 가본다. Gitbook 정리는 여기 링크에 해뒀다. 1. Stack Growth 정리 이번 과제는 stack growth. 이전 글(개노답글)에서도 잠깐 써놨지만, 프로젝트 2까지는 유저 스택이 고정된 크기를 지녔다. 이는 코드를 보면 알 수 있는데 #ifndef VM ... /* Create a minimal stack by mapping a zeroed page at the USER_STACK */ bool setup_..

나만의 무기 프로젝트 소개: 런칫챗(Lunchit-chat)

소셜 개더링(social gathering)을 위한 사내/외 직장인 대상 1대1 블라인드 런치 톡 서비스 1. 프로젝트 개요: 관심사 기반 매칭 방식의 블라인드 데이팅 앱 사내/외 구성원을 대상으로 점심 약속(식사 or 커피챗)을 주선해주는 매칭 기반 블라인드 데이팅 서비스 기본 골조는 데이팅 앱 형식(틴더 참조)을 따름. 데이팅 앱은 아니기에 성별 기반 매칭은 하지 않음(남남/여여/남녀 모든 조합 가능) 1) 가입 이메일 인증 방식으로 가입 구현(앱 특성상 회사 이메일 인증 필수) - 해당 회사 인증해야만 가입 가능 인증을 완료하면 프로필 설정으로 넘어감. 자신을 직접적으로 드러내는 사진/이름은 설정할 수 없으며 대신 간접적으로 관심사/취향을 사전에 입력 ->추후 추천 시스템 알고리즘에 반영할 계획 관..

PintOS Project 3 - Virtual Memory (2) Anonymous Page (정글사관학교 79일차 TIL)

바로 2번째 과제 달린다. 이번에는 Anonymous Page를 구현하는 것이 과제 목표. Gitbook 정리는 아래 노션 링크를 통해 참고하도록 하자. Part 2: Anonymous Page Anonymous: 어떤 파일과도 연결되지 않은 페이지를 뜻함. 주로 stack or heap에 사용된다. woony.notion.site 0. Anonymous page 정리 전에 권영진 교수님 강의 말미에서 잠깐 나왔던 개념인데, 드디어 다루게 되다니 감개무량하다. 페이지에는 크게 두 가지 종류가 있다. 1. Anonymous page: 어떤 파일과도 연결되지 않은 페이지 2. File-backed page: 파일과 매핑된 페이지(즉, 페이지 안에 파일이 들어있는) 어차피 File-backed page는 나중..

PintOS Project 3 - Virtual Memory (1) Memory Management (정글사관학교 78일차 TIL)

첫 번째 과제는 supplemental page table 구현이다. 이를 위해 supplemental page table이 무엇인지 먼저 간단히 살펴보자. supplement page table은 이전에 정리했던 개념인 다단계 페이지 이제 과제 개요를 살펴본다. 0. 과제 개요 Implement supplemental page table management functions in `vm/vm.c`. 우리의 핀토스는 pml4라는 페이지 테이블을 갖고 있는데 얘는 가상 메모리와 물리 메모리 간 매핑을 관리한다. 하지만, 이것으로 충분치 않음. 이전 섹션에서 논의했듯, 우리는 page fault와 자원 관리를 다루기 위해서 각각 페이지에 대한 추가 정보를 들고 있는 supplementary page tabl..

운영체제 (5) 메모리 관리 - 3(정글사관학교 77일차 TIL)

한동안 TIL 정리가 많이 밀렸다. 다시 정신차리고 가보자!! 메모리 관리 3 Multilevel Paging and Performance address space가 커지면 다단계 페이지 테이블이 필요하다. (why? 사용하지 않는 공간을 엔트리로 넣어야 하니 페이지 테이블이 커져서 비효율 증가) 이러면 페이지 테이블에 여러 번 접근해야 한다. ex) 4단계 페이지 테이블이면? 4번 접근해야 한다. 그런데도 다단계 페이지 테이블을 쓸 수 있는 이유는? TLB! ex) 메모리 접근 시간이 100ns, TLB 접근 시간이 20ns이고 TLB hit ratio = 98%라면? effective memory access time = 0.98 * 120(100*1 + 20*1) + 0.02 * 520(100*4 ..

운영체제 (4) 메모리 관리 - 1, 2(정글사관학교 74일차 TIL)

오늘은 갓효경 강의를 들었다. 오늘 효율이 개쌉망이라 강의 두 개 들은게 전부네..ㅁㅊ.. 노션에 정리해서 여기다 옮겨야 하는데, 일단은 링크로 대체..강의 다 듣고서 리마인드할 때 정리하자! (이제까지 썼던 TIL 중 역사상 가장 짧은 TIL이 될 것 같아..키워드만 조금 정리) 메모리 관리 1 논리 주소 vs 물리 주소 논리 주소: 각 프로세스마다 독립적으로 갖는 주소 공간(0번지부터 시작) cpu가 보는 주소는 여기에 해당 물리 주소: 메모리에 실제로 올라가는 위치 주소 바인딩: 프로그램이 메모리 내 물리 주소 어디에 올라가는지를 결정하는 것 symbolic addr => logical addr => physical addr 과정을 거치는데, 이 중 logic => physic 이 부분에 해당하는 ..

코딩을 잘한다는 것의 정의(정글사관학교 73일차 TIL - week 2 WIL)

What I did? 이번 주차에는 user program 과제를 해결하는데 집중했다. 이전까지는 커널 영역에서 곧바로 테스트를 돌렸다. 즉, 운영체제 단에서 작업이 잘 이뤄지고 있는지를 테스트한 것. 하지만 운영체제가 존재하는 이유는 사용자 프로그램을 보다 쉽게 돌리기 위함이다. 사용자 프로세스에서 write() 기능을 구현하기 위해 직접 입출력 장치까지 가지 않고도 시스템 콜을 이용해 운영체제가 알아서 작업할 수 있도록 일을 시키는 것을 구현하는 게 이번 주차 목표였다. 이를 위해서 했던 과제는 크게 두 가지. 첫번째는 argument passing. 명령어는 여러 가지 뜻을 담은 인자들의 집합으로 전달된다. 하지만 컴퓨터 입장에서는 그저 숫자들의 나열일 뿐이다. 따라서 컴퓨터가 이를 분리해서 각각의..