본문 바로가기
728x90

코딩20

pintOS | Project 4 회고 1. Project4 목표 pintos-project4 git book Introduction · GitBook Project 4: File Systems In the previous two assignments, you made extensive use of a file system without actually worrying about how it was implemented underneath. For this last assignment, you will improve the implementation of the file system. You will b casys-kaist.github.io 핀토스 프로젝트4의 주제는 File System이다. 이전까지 핀토스는 단일 디렉터리만 존재하는 단일.. 2021. 11. 2.
pintOS | Project 3 회고 1. Project3 목표 pintos-project3 git book Introduction · GitBook Locate the page that faulted in the supplemental page table. If the memory reference is valid, use the supplemental page table entry to locate the data that goes in the page, which might be in the file system, or in a swap slot, or it might simply be an al casys-kaist.github.io 핀토스 프로젝트 3의 주제는 Virtual Memory이다. 프로젝트 3 이전까지 핀토스는 세그먼트를.. 2021. 10. 28.
정글에서 살아남기| WEEK10 | 가상 메모리 너무 어렵다 프로젝트 2를 겨우 끝냈다. 그것도 extra 부분까지 다 구현해서 테스트 케이스 97개를 모두 pass했다. 하지만 과연 올패스를 하는 것만으로 만족해야 하는걸까? 나는 정말 핀토스 user program 부분들을 모두 이해했을까? pintos는 카이스트에서는 원래 한 학기에 걸쳐서 진행하는 프로젝트라고 한다. 심지어 전공 학생들도 매우 힘들어 하고 제일 싫어하는 과목이라고 한다. (교수님피셜임 ㅋㅋㅋ) 교수님 강의를 들을 때, 홍욱이형이 "비전공자 입장에서 핀토스를 공부하고 있는데, 어떤 부분에 초점을 맞춰서 공부를 해야 하는지?" 라는 질문을 했었고, 교수님께서는 "학생일 때, 이 정도로 길고 복잡한 코드량을 경험하기 드물다. 이 코드들을 읽으면서 이해하고 배치할 줄 아는 것이 pintos의 목적 .. 2021. 10. 17.
pintOS | Project 2 회고 1. project2 목표 pintos-kaistproject2 git book Introduction · GitBook Project2: User Programs Now that you've worked with Pintos and are becoming familiar with its infrastructure and thread package, it's time to start working on the parts of the system that allow running user programs. The base code already supports loading casys-kaist.github.io 프로젝트2의 주제는 User Progams이다. 프로젝트 1에서 구현했던 것들은 모두 커널에서.. 2021. 10. 14.
자료구조 | Red-Black Tree 위키백과에 의하면 Red-Black tree(레드-블랙 트리)는 자가 균형 이진 탐색 트리로서, 대표적으로는 연관 배열 등을 구현하는 데 쓰이는 자료구조라고 한다. 레드-블랙 트리는 복잡한 자료구조지만, 실 사용에서 효율적이며 최악의 경우에도 O(logN) 시간복잡도를 보장할 정도로 안정(balanced)되었다. ※ 트리? 그래프? 더보기 트리 구조는 우리 주변 일상에서 쉽게 볼 수 있는 위아래 개념을 컴퓨터에서 표현한 구조다. 더 중요한 트리의 속성 중 하나는 재귀로 정의된 자기 참조 자료구조라는 점! 그렇다면 그래프와 트리의 차이점은 무엇일까? 한 줄로 요약하자면 "트리는 순환 구조를 갖지 않는 그래프"이다. 트리는 특수한 형태의 그래프의 일종이며, 크게 그래프의 범주에 포함된다. 하지만 트리는 그래.. 2021. 10. 13.
정글에서 살아남기| WEEK09 | syscall......!!!!!!!!!! 캠퍼스 주변에 높은 건물이 없어서 뻥 뚫린 하늘을 볼 수 있는 것이 정말 좋다. 저녁 먹고 강의실 가는 도중 하늘 너무 예뻐서 바로 카메라 들고 사진 찍었다. 결과물 만족쓰 이번 주는 저번주에 이어 pintos project2를 공부하고 있다. 다음주 목요일까지 프로젝트를 끝내야 한다. 아직 시간이 꽤 남아있지만 여전히 테스트를 통과하지 못 하고 있다. 시스템 콜 부분을 어찌저찌 구현을 했다만, halt 시스템 콜만 pass가 되고 나머지 부분들은 계속 fail.... 일단 오늘 내로 에러 원인을 찾고 해결한 후, 내일 조원들에게 알려주는 것이 목표이긴 한데.... 쉽진 않다 ㅠㅠㅠ 내일까지 해결되지 않으면 동기들에게 물어봐야겠다. 2021. 10. 10.
pintOS | Project 2 | 명령어 실행 기능 구현(Command Line Parsing) pintos project2 설명 보기 프로젝트1에서 실행했던 alarm clock, scheduling 등 모든 코드들은 전부 커널의 일부였고, 테스트 코드 또한 커널에 직접 컴파일했었다. 이제부터는 유저 프로그램을 실행하여 운영체제를 테스트한다. 그러나 현재 pintos는 커맨드 라인에 명령어를 작성하면, 프로그램 이름과 인자를 구분하지 못 하고 적은 명령어 전체를 하나의 프로그램으로 인식하게 구현되어 있다. 즉 프로그램과 인자를 구분하여 파싱하고 패싱할 수 있도록 하는 것이 이번 목표다. (e.g. ls -l 이라는 명령어를 적었을 때, ls 와 -l을 구분하지 못 하고 'ls -l'을 하나의 프로그램 명으로 인식) pintos에 이미 구현되어 있는 코드를 보면서 먼저 프로그램의 실행이 어떻게 되는.. 2021. 10. 7.
정글에서 살아남기| WEEK08 | 본격적인 OS Deep-Dive 시작 정글에 들어온 지 벌써 3달 째가 되었다. 하루하루가 말도 안 되게 빨리 지나간다. 아니 스쳐가는 것 같다. 매일 강의실에서 내가 잘하고 있는지 아닌지 불안해하며 공부만 하다 보니 악명 높은 pintos프로젝트까지 오게 되었다. 분명히 엊그제 알고리즘 짜고 rbtree배우고 malloc하고 있던 것 같은데 시간 미친 듯이 빠름.... 여하튼 정글 들어온 날부터 2달 동안 아침 7시에 기상하여 꾸준히 아침 운동을 했다. 5개월간 장기적인 체력 관리를 위해서 필수라고 생각했고, 정글 이전부터 내 생활 패턴이 아침에 일찍 일어나기 때문에 시간과 동선을 최적화하여 강의실 가기 전 아침 운동 - 조식을 패턴화했던 것이다. 그런데 그렇게 2달이나 패턴을 지켰음에도 불구하고 오전마다 피곤하다.. 갈수록 높은 난이도 .. 2021. 10. 4.
pintOS | list_entry(), doubly linked-list pintOS는 threads, user porgrams, virtual memory, file system 등 운영체제의 개념들을 직접 구현하면서 더 깊게 이해하는데 도움을 주는 교육용 운영체제다. 핀토스는 정글에서 공부하는 프로젝트 중 끝판왕이라고 불리는 만큼 험난하다. 프로젝트를 직접 구현할 때 내가 사용하는 함수들의 작동 원리도 제대로 파악하는 것 조차 너무 어려워서 내가 사용하는 코드들의 기능과 역할을 정리해보려고 한다. 조금은 두서없이 정리하겠지만 일단 내가 이해하는 것이 우선..! list_entry() Project1: THREADS에서 첫 번째 미션인 Alarm Clock을 할 때, block되어 있는 스레드를 wakeup해서 ready list에 넣어야 하는 함수를 구현해야 한다. 이 때.. 2021. 10. 4.
728x90
LIST