728x90
728x90
[ 시스템 & 인프라/PintOS & CS ][CS:APP/C언어] Malloc Lab 동적 메모리 할당기 구현: Explicit Free List와 가용 블록 분할·병합 최적화2024-04-15 00:57:27TL;DR — 3줄 핵심 요약• 문제: Malloc Lab은 malloc, free, realloc을 직접 구현하는 과제인데, 사전 지식 없이는 무엇부터 손대야 할지 알 수 없었다.• 기술/원인: 힙은 sbrk로 늘어나며, 블록마다 크기와 사용 여부를 적은 헤더를 두고, 가용 블록은 리스트로 관리한다. 할당 방식(First Fit, Best Fit)과 병합(Coalescing)이 단편화와 처리 속도를 좌우한다.• 해결/인사이트: 사용률(얼마나 낭비 없이 썼는가)과 처리량(초당 몇 번 처리했는가)은 서로 맞바꾸는 관계다. 점수는 두 값을 함께 계산하므로 한쪽만 올리는 구현은 점수가 오르지 않는다.들어가며크래프톤 정글 4기에서 Malloc Lab을 구현해야 했다. 이 글은 그때 이해를 위해 정리한 사전 지식..
[ 시스템 & 인프라/PintOS & CS ][PintOS/운영체제] Project 1: Threads 완벽 분석 - Alarm Clock과 Priority Scheduling 구현2024-03-17 23:56:26TL;DR — 3줄 핵심 요약• 문제: PintOS Threads 과제를 하려면 프로세스와 스레드, 스케줄링, 동기화, 경쟁 상태, 교착 상태, 문맥 교환, MLFQS를 한 번에 설명할 수 있어야 했다.• 기술/원인: CPU는 한 번에 하나만 실행하므로, 운영체제는 스케줄러로 실행 순서를 정하고, 공유 데이터에는 락과 세마포어로 순서를 강제하며, 전환할 때는 문맥을 저장하고 복원한다.• 해결/인사이트: 개념을 정의, 원인, 대표 알고리즘 순서로 정리하고 나면 PintOS의 Alarm Clock, Priority Scheduling, MLFQS 구현이 무엇을 요구하는지 보인다.들어가며크래프톤 정글에서 KAIST PintOS를 구현하며 팀 프로젝트를 진행하고 있다. 이 글은 정글에서 제공한 가이드라인의 공부..
728x90
728x90