분류 전체보기 261

PintOS Project 4 - File Systems (1) Indexed and Extensible Files(정글사관학교 88일차 TIL)

Gitbook 정리는 요기! Indexed and Extensible Files 기본 파일 시스템은 파일을 단일한 범위(연속 할당한다는 의미인듯)로 파일을 할당하는데, 이는 외부 단편화에 취약하다. 즉, 이는 n개의 블록이 가용 상태임에도 n개 블록을 점유해야 하는 파일 woony.notion.site 0. 과제 개요 이번 과제에서는 FAT 파일 시스템을 구현하는 것이 목표이다. Gitbook 설명을 보면 현재 파일 시스템 구조는 연속 할당 방식이라는 것을 알 수 있다. 이전 글에서도 설명했듯, 연속 할당 방식은 하나의 파일이 디스크 상에 연속적으로 저장되는 방식을 뜻하며 이는 외부 단편화에 취약한 구조이다. 이를 FAT file system으로 변환하면, FAT에 파일 위치 정보를 저장하고 이를 메모리..

잠깐의 소회(정글사관학교 87일차 TIL)

번아웃이 온 건가.. 요근래 아침에 제대로 일찍 일어나본 적이 없다. 심지어 어제는 뭘 잘못 먹었나 계속 근육통에 배도 아프고 하지를 않나..반대로 말하면 정글에 끝이 다가오고 있다는 뜻이기도 하다. 사람 몸이란게 참 간사한 게, 만약 지금이 정글 중반이었다면 그것대로 긴장이 빡 들어있었을 텐데, 10개월짜리 캠프면 10개월에 맞춰서, 5개월이면 그것대로 맞춰서 긴장이 느슨해지나 싶다. 어제는 같이 공부하는 형이랑 상담을 빙자해 긴 대화를 나눴다. 꼭 정글이라서가 아니라, 사실 이런 류의 프로그램에 오랜 기간 머무르게 되면 반드시 생길 수밖에 없는 문제가 있다. 이른바 "세계관의 축소"인데, 예전에 쓴 글에도 이와 관련된 내용이 있다. 사람이 성장하는 데 있어 그릇의 크기를 결정하는 파라미터는 세계관이다..

운영체제 - File system (3) File system implementation 2 (정글사관학교 87일차 TIL)

Page Cache and Buffer Cache page cache VM의 페이징 시스템에서 사용하는 페이지 프레임을 캐싱 관점에서 설명하는 용어 memory-mapped I/O를 쓰는 경우 file I/O에서도 page cache 사용! Memory-mapped I/O File 일부를 vm에 매핑 매핑시킨 영역에 대한 메모리 접근 연산은 파일 입출력을 수행하게 한다. Buffer cache 파일 시스템 통한 I/O 연산은 메모리 특정 영역인 buffer cache 사용 파일 사용의 locality 활용 한번 읽어온 블록에 대한 후속 요청시 버퍼 캐시에서 즉시 전달 모든 프로세스가 공용으로 사용하는 캐시! Replacement algorithm 필요(LRU, LFU 사용 가능 → 모든 정보를 운영체제에..

운영체제 - File system (2) File system implementation (정글사관학교 86일차 TIL)

File system Implementation 1 파일 접근 방법(Access Method) 파일 접근 방법은 시스템이 제공하는 파일 정보의 접근 방식을 뜻한다. 디스크가 파일에 접근하는 방식은 순차접근과 직접 접근 두 가지 방식이 있다. 1) 순차 접근(sequential access): 카세트 테이프를 사용하는 것처럼 접근하는 방식이다. a-b-c 순으로 정보가 저장되어 있다고 하면, a, c만 접근하고 싶다고 해도 c에 접근하기 위해서는 반드시 b를 거쳐가야 한다. 2) 직접 접근(direct access, random access): LP 레코드판과 같이 해당 위치에 다이렉트로 이동해 접근하는 방식을 뜻한다. 임의로 접근한다기보다 어디에 있든 해당 위치로 바로 접근하는 방식을 뜻한다. 예컨대 1..

운영체제 - File system (1) File system (정글사관학교 85일차 TIL)

오늘은 file system 이론 공부를 진행했다. 공부자료는 반효경 교수님의 운영체제(갓효경..) https://woony.notion.site/File-system-9cb913a86d3a435fa92b8b9fe24fa687 File system File and File system woony.notion.site File system File이란? 파일은 하드디스크에 저장하는 정보의 단위(A named collection of related information)이다. 메모리가 주소를 통해 접근하는 장치라면 파일은 이름을 통해 접근하는 정보 단위로, 관련 정보를 파일 이름을 가지고서 저장한다. 파일은 일반적으로 비휘발성 보조 기억 장치에 저장한다. 리눅스의 경우, 파일이라는 형태를 단순히 데이터 저장..

PintOS Project 3 - WIL(정글사관학교 84일차 TIL)

이번주에는 Pintos의 가상 메모리를 구현하는 작업을 수행했다. 공부 및 작업한 것들은 아래와 같다. 1. 진행 상황 운영체제 (4) 메모리 관리 - 1, 2 운영체제 (5) 메모리 관리 - 3 PintOS Project 3 - Virtual Memory (1) Memory Management PintOS Project 3 - Virtual Memory (2) Anonymous Page PintOS Project 3 - Virtual Memory (3) Stack Growth PintOS Project 3 - Virtual Memory (4) Memory Mapped Files PintOS Project 3 - Virtual Memory (5) mmap() 및 page fault 관련 추가 정리 Pin..

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_..