운영체제 32

[운영체제] 현대 컴퓨팅은 왜 라운드 로빈을 쓸까?(feat.CPU 스케쥴링 알고리즘 정리)

본격 취준 프로세스에 들어서니 확실히 블로그에 글쓰기가 게을러진다. 블로그에 정리할 시간에 하나라도 더 공부해야되지 않나 하는 조급함이 앞서서인데, 사실 다 핑계다. 이전처럼 매일은 아니더라도 1주일에 한 편은 쓰는 식으로 루틴을 확립해야 할 듯. 공부한 내용은 노션에 총 집대성하는 식으로 정리하고 있지만 그와 별개로 공개하는 글을 쓰는 건 확실히 더 큰 배움을 준다. 나 혼자만 이해하는 내용이 아니라 남에게도 이해를 시켜야 하기 때문이다. (갑자기 든 생각인데 노션에 글을 쓰면 티스토리에 자동 배포할 수 있는 오픈소스가 있다면 진짜 어메이징하겠다 싶네..함 찾아봐야겠다.) 오늘은 다음주 있을 기술면접에 대비해 개념 총정리를 진행하고 있다. 그 중에서도 운영체제에 집중하고 있는데, CPU 스케쥴링에 대해..

기술면접 준비 2022.04.10

PintOS Project 4 - WIL(정글사관학교 92일차 TIL)

이번 주에는 설날도 겹치고 번아웃도 오고 여러 면에서 집중을 잘 못했다. 사실 다 변명이지..반성할 건 반성하고 털어낼 건 오늘 이 시간에서 털어내도록 하자. 이번주에 공부한 것들은 아래와 같다. 반효경 교수님 운영체제 강의 운영체제 - File system (1) File system 운영체제 - File system (2) File system implementation 운영체제 - File system (3) File system implementation 2 PintOS Project 4 - File Systems (1) Indexed and Extensible Files PintOS Project 4 - File Systems (2) Extensible Files Start 주말 하루는 푹 쉬기..

PintOS Project 4 - File Systems (2) Extensible Files(91일차 TIL)

간만에 잘 쉬다 왔다! 가서 텅 비우고 왔으니 다시 꽉꽉 채워보자! 0. 과제 관련 개념 정리 저번 글에서 첫번째 과제를 다 구현한 것처럼 적어놨지만, 사실은 반쪽만 구현해놓은 상태이다. 저번 과제에서는 기존에 연속 할당으로 디스크에 저장하는 방식을, FAT 테이블을 구현하고 디스크 내 클러스터 위치를 테이블에 저장하는 방식으로 변경하는 작업(Indexed Files)을 수행했다. 과제에서는 이어서 File growth를 구현하라고 했다. 이는 무엇인가? 확장 가능한 파일을 구현해라. 기본 파일 시스템에서, 파일 크기는 파일이 생성될 때 정해진다. 하지만 대부분 현대 파일 시스템에서는 파일은 처음에 사이즈 0으로 생성되고 매 시간 write가 완료될 때마다 크기가 확장된다. 우리의 파일 시스템은 반드시 ..

운영체제 - 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 (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_..