SW사관학교 정글_개발일지(9)
-
[Pintos] Project 4 : File System
기존 파일 시스템: - 파일이 디스크에 기록될 때, 연속된 섹터로 할당됨 (Chunk) -> 외부 단편화를 유발함 - 파일의 길이가 생성과 동시에 정해지며, 늘어날 수 없음 - 루트 디렉토리에 모든 파일이 들어감. (디렉토리 계층구조가 없음) 핀토스 프로젝트 4에서 구현하는 파일 시스템 - 파일이 디스크에서 연속적으로 할당되는 것이 아니라, 빈 섹터들에 불연속적으로 할당하여 외부 단편화를 해결 -> 디스크에 분산되어있는 파일의 섹터들을 어떻게 이어줄까? -> FAT 이용 - 파일은 생성 시 길이가 0으로 정해지며, 쓰기를 시도할 때마다 길어짐 -> inode_write_at() 수정 - 계층적인 디렉토리 구조를 구현 : '/'을 기준으로 이름 컴포넌트를 구분 - Soft Link (Symbolic Lin..
2022.12.20 -
[Pintos] Project 3 : Virtual Memory
1. Supplemental Page Table과 Lazy Loading Eager Loading은 가상 페이지가 할당됨과 동시에 물리 메모리에 올라가는 것. 당장 읽거나 쓸 일이 없는 페이지도 물리 메모리에 올라가버림. (플젝 3 이전의 핀토스) 물리 메모리 공간은 한정적이기 때문에, 당장 써야 할 페이지가 올라오려면, 누군가는 내려가야 함 = Swapping Swap in/Swap out은 오버헤드가 상당히 큼 (디스크에 읽기/쓰기를 시도하는 것이기 때문에) 따라서 우리의 핀토스는, 페이지가 진짜로 필요할 때에 물리 메모리로 올리는 지연 로딩, 즉 Lazy Loading을 채택했고, 이를 직접 구현하는 것이 플젝 3의 목표 레이지 로딩을 구현하기 위해서, 페이지 할당 요청이 오면, 일단 uninit ..
2022.12.13 -
[WIL] Project 2 - User Program
User Program의 실행 흐름
2022.11.29 -
[WEEK03] 10월 9일
알고리즘 문제가 점점 어려워지고 있다 *ㅡ* DFS BFS 문제들은 정형화 되어있지만 시간초과를 피하기가 어렵다. 조금만 비효율적이어도 시간초과가 떠버린다 문제가 어려운 만큼 스스로 풀면 희열이 있기 때문에 요즘 답을 안보고 풀려고 최대한 노력했었다. 사실 남의 풀이를 안보고 풀면 더 빨리 늘거라고 생각했는데 ... 그건 내 착각이었다 자꾸 시간초과가 나길래 인터넷에 있는 모범답안 풀이를 봤다가 좀 놀랐다. 엄청 짧게 줄일 수 있는 부분을 굳이굳이 길게 늘여 쓰고 있었고 하지 않아도 되는 연산을 하는 경우도 많았다 토맛토🍅 내가 많이 안일했었다는 생각이 들었다 스스로 풀었더라도 다른 사람의 풀이를 찾아보면서 더 좋은 풀이가 있나 찾아봤어야 했는데 🤔 이래서 코드리뷰가 중요하다고 하나보다!!! 다른 사람의..
2022.10.10 -
[WEEK03] 10월 8일 : 회고 및 반성
WEEK02의 마무리와 함께 WEEK03이 시작되었다 WEEK02 에서 갑자기 문제 난이도가 급상승해서 제대로 풀지 못하고 넘어간 문제들에 미련이 남았어서, WEEK03 에선 '상' 문제라도 겁먹지 말고 풀어보려고 한다. 그러려면 시간 투자를 많이 해야겠지만, , , 시간을 조금 더 효율적으로 쓰면 되겠지! 열심히 하는것만이 능사는 아니라는 생각도 든다. 내가 부족한 부분, 약한 부분을 캐치해서 그 부분을 채워나가는게 앞으로 중요할 것 같다. 시간과 내 체력은 한정적이고 해야할 것은 많으니 어디다 투자할지 잘 생각하면서 정글 생활을 해야겠다! 이번 시험에선 처음으로 푼 문제를 발표해봤다. 잘 설명할 수 있을거라는 자신이 있었는데 막상 나가보니 떨리기도 하고 생각만큼 전달이 잘 되지 않는 것 같아 조금 아..
2022.10.08 -
[WEEK03] 트리, BFS, DFS, 이진 탐색 트리
트리 (Tree) 사이클(cycle)이 없는 하나의 연결 그래프(Connected Graph) DAG (Directed Acyclic Graph, 방향성이 있는 비순환 그래프) 용어 정리 노드 (Node) / 가지 (Edge) 루트 (Root) : 트리의 가장 위쪽에 있는 노드, 트리에 하나만 존재 리프 (Leaf) : 가장 아래쪽에 있는 노드 = terminal node = external node 비단말노드 (Non-terminal node) : 리프를 제외한 노드 = internal node 자식 (Child) : 어떤 노드와 아래쪽 가지로 연결된 노드, 리프는 자식을 갖지 않음 부모 (Parent) : 어떤 노드와 위쪽 가지로 연결된 노드, 어떤 노드의 부모는 하나뿐. 루트는 부모를 갖지 않음 형..
2022.10.07