[WIL] 즐거웠고, 이젠 다시 보지말자👋 Pintos-kaist Project4 마무리 회고 🤹‍♂️

조배·2022년 12월 19일
0
post-thumbnail


Project4 file system을 시작하고 문지에는 많은 눈이 왔다.
강의실로 멍하게 걸어가다가 문득 핀토스놈이 얄밉다는 생각이 들어서 소심한 복수를 했다.

노션 정리 링크 👨‍👦‍👦

bulksup, kiwoon과 함께 정리한 노션

회고에 앞서 알아둬야 할 것 🧩

이 글의 pintos는 kaist의 CS330 과정의 pintos이며, 작성하는 부분 중 제가 잘못 이해한 부분도 있을 수 있음에 유의해 주시길 바란다.
우리 조는 기본적으로 git book을 참고해서 진행했고, part2Subdirectories and Soft Links부터는 한토스(한양대 핀토스)를 참고했다.
코드에 관해서는 올리지 않을 생각이고, 보지 않는 걸 추천하지만 깃허브 링크를 첨부한다.
지난번 vm에서는 각 Part 별로 why(왜 해야 하는지), do(뭘 했는지), Problem(문제와 해결 과정)을 다뤘지만 이번에는 why만 다룰 생각이다. 그 이유는 가장 중요하다는 생각이 들어 비중을 두고 작성하고 싶었다. 절대 시간 없어서가 아님..

1. Indexed and Extensible Files


악명이 자자했던 Project2 userprogProject3 VM을 마친 후의 나의 모습이다.
하지만..

아무것도 모르겠다. 심지어 주어진 시간도 일주일도 채 안 된다. 진짜 진짜 미친놈이다..
파일, 디렉터리 등의 다루는 것이라 뭔가 친숙한 느낌인데 잘 안돼서 더 열받는다.
구글에 정보도 많이 없는데다가 심지어 재밌어서 더더 열받는다.

Why❔

먼저 Indexed는 쉽게 설명하기 위해 솜씨 발휘를 했다. 똥손입니다만.

기존의 pintos는 파일이 연결되어 있다.
그렇기 때문에 디스크에 외부 단편화가 생길 수 밖에 없고, disk를 더 효율적으로 사용하고 접근하기 위해서 File Allocation Table(fat)를 구현하는 것이다.
위의 그림처럼 file D는 3 sector의 크기이고, 기존의 pintos disk에는 넣을 수 없다.
하지만 fat를 활용한다면 아래처럼 2 sector, 1 secter 만큼 나누어서 disk에 넣을 수 있다.
즉, 아래의 그림처럼 fat는 sector 단위로 나누어진 file이 disk의 어디에 있는지(indexed)를 기록한다.

위의 과정을 위해 Fat를 구현했다면 이제는 Extensible Files == file growth이다.
기존의 pintos는 write할 때 offset(작성하려는 위치)와 size(작성하려는 크기)가 주어지는데 file의 크기보다 큰 offset이 들어왔을때의 작업이나 주어진 offset에서 size를 작성했을때 파일의 크기보다 크다면 exit 해주었다.
즉, 기존의 파일에서 파일을 크게 만들 수 없었다.
하지만 이번 file growth를 통해서 위의 제한을 해제하고, fat를 통해서 공간을 찾아 파일을 늘려주게끔 만든다.
아래의 그림처럼 빈 섹터 공간에 추가된 크기 만큼 섹터단위로 작성된다.

구현으로 들어가면 세세한 부분이 더 있겠지만 part1가 Pintos에 왜 필요한지에 대한 답이 되었다고 생각한다.

🛠️수정중🛠️

2.Subdirectories and Soft Links

Why❔

🛠️수정중🛠️

Goodbye Pintos🪦

나는 살면서 대체적으로 모든 것에 대해 자신감이 있었고, 이상하게 큰 역경도 없었다.
하지만 처음에 핀토스를 만났을 때는 정말 어지러웠고, 좌절감을 주었다.
핀토스가 마지막 발표가 끝나고 코치님께서 말씀하셨다.
"지금 Project1인 thread를 구현한다면 어떨 것 같아요?"
위의 대답으로 동기 모두가 이구동성으로 쉽게 만들 수 있을 것 같다고 답했다.
이 글을 보는 당신이 처음 스레드와 만났다면 한마디만 해주고 싶다. 중요한 건 꺾이지..
절대 포기하지 말고, 끝까지 핀토스 바지 끄덩이를 잡아라.. 한 시간, 두 시간, 하루 차이가 엄청난 격차를 낸다.

profile
깃허브로 이전했습니다 -> https://chobae.github.io/

0개의 댓글