[Pintos - Project 3] Pintos와 실제 OS의 ELF 로딩 방식 차이
·
Pintos
Pintos Project 3 (Virutal Memory)를 구현하다가 이상한 점을 발견했다.ELF 파일을 로딩하는 load_segment는 항상 VM_ANON 타입으로 페이지를 만든다.// process.c - load_segment()if (!vm_alloc_page_with_initializer(VM_ANON, upage, // ← 왜 ANON? writable, lazy_load_segment, aux)) return false;어차피 파일에서 읽어오는 건데, 굳이 ANON 타입으로 페이지를 만들어서 파일 정보를 끊어버리는 구조가 이해가 되지 않았다.evict될 때 원본 파일에서 다시 읽으면 되는데, 왜 swap에 저장할까?..
[Week10] WIL - Pintos_Project 2
·
크래프톤 JUNGLE
벌써 Pintos 과정의 절반이 지나갔다.정글에 적응하고 사람들과 가까워지다 보니 시간이 더욱 빠르게 흘러가는 것 같다. 하지만 공부해야 할 것은 여전히 많고, 한 주라는 시간은 생각보다 짧다. 그래서 지금 이 시점에는 ‘무엇을 가장 우선해야 하는가’를 판단하는 것이 중요하다고 느꼈다.지난 피드백 이후, 팀원들과 이번 주에 가장 가치 있게 가져가야 할 목표가 무엇인지 진지하게 고민해보았다. 제한된 시간 안에 모든 것을 완벽하게 챙기는 것은 현실적으로 어렵다고 판단했고, 결국 우리는 ‘진행 속도가 느린 팀원을 함께 끌어올리는 것’을 가장 중요한 우선순위로 정했다.AI를 활용해 충분히 이해하지 못한 상태로 테스트 케이스만 통과시키는 것은 큰 의미가 없다고 생각한다. 이번 주는 팀원들과 최대한 많이 소통하고 ..
[Week9] WIL - Pintos_Project1
·
크래프톤 JUNGLE
드디어 기대하던 Pintos 학습 주차에 들어섰다. Jungle에 입소하기 전부터 가장 기대하던 파트였던 만큼 설렘과 동시에 부담도 느껴졌다. OS의 동작 원리를 직접 이해하고, 그 로직을 스스로 구현해볼 수 있는 기회는 흔치 않기 때문에 더욱 의미 있게 다가왔다. 앞으로 4주 동안은 깊이 있는 학습에 집중하겠다는 다짐을 했고, 특히 개념을 제대로 체화하기 위해 AI는 학습 보조 용도로만 제한적으로 활용하기로 했다.비록 힘든 과정이겠지만 나중에 돌이켜봤을때 의미있던 경험으로 남을 수 있도록 노력하자! 핵심 역량 평가역량달성도목표문제해결90%alarm clock, priority scheduling, priority donation의 핵심 문제를 정확히 정의하고, 최소한 priority-donate테스트까..
[Week8] WIL - 네트워크에 발 담그기
·
크래프톤 JUNGLE
이번 주는 소켓 프로그래밍을 중심으로, 네트워크가 실제로 어떻게 동작하는지에 대해 공부하고 간단한 실습까지 진행했다.사실 이쪽은 그동안 “대충 이런 느낌이겠지” 정도로만 알고 있던 영역이었는데, 이번 기회에 제대로 파보게 됐다. 평소에도 한 번은 깊게 이해해보고 싶었던 주제라 그런지 생각보다 재미있게 몰입해서 공부할 수 있었다.이번 주는 특히 접근 방식을 조금 바꿔보려고 했다.기존에는 과제 요구사항이나 책 내용 자체를 이해하는 데 집중했다면, 이번에는 “이게 실제로 어디에 쓰이는지”, “실무에서는 어떻게 쓰는지”까지 같이 보려고 했다.지난주 이동석 코치님의 피드백을 듣고 나서, 내가 과제 자체에만 너무 매몰되어 있었다는 걸 느꼈기 때문이다.그래서 공부하다가 생긴 궁금증들은 그냥 넘기지 않고 따로 찾아보면..
[Week7] WIL - 무한 코어타임 지옥
·
크래프톤 JUNGLE
이전 주차와 비교했을때 가장 학습 내용이 어려웠던 Week7을 무사히 마치게 되었다. 학습 내용이 어렵다보니 자연스레 팀원들과 할 말이 많아졌고 코어타임 시간도 최소 2시간 이상 진행하게 되었다. 특히 첫째날 진행한 3시간 가량의 코어타임은 시간이 지나도 잊을 수 없을 것 같다... ㅋㅋ. 처음으로 동료학습에 중점을 두고 진행한 주차였던거 같은데 혼자 공부하는거에 비해 배울점이 정말 많았다. 과제 특성상 혼자 코드구현하는 시간에 투자하는 것이 도움이 될 것이라고 생각을 했었는데, 막상 다른 팀원들의 코드와 설계를 보니 나와 생각이 다른 부분들이 있어서 오히려 혼자하는 것 보다 도움이 되었던 것 같다. 아무튼 이번주 WIL에서는 내가 Malloc_Lab을 진행하면서 도전해본 부분과, 수요코딩회에서 습득한..
[기초] 하네스 엔지니어링이란?
·
AI
https://www.youtube.com/watch?v=DrekqeDlO1w 해당 영상을 보고 공부한 내용을 간략하게 요약해 두려고 한다. 하네스 엔지니어링이란?에이전트가 실수를 할 때마다, 그 실수가 다시는 반복되지 않도록 환경 자체를 설계하는 것- 고삐, 인장 같이 말을 다루는 도구를 뜻하는 Harness에서 유래됐다. 프롬프트를 더 잘 쓰는 것이 아니라, 에이전트가 일하는 구조를 바꾸는 것이다.AI 엔지니어링은 어떻게 진화했나하네스가 왜 주목받게 됐는지 이해하려면 흐름을 먼저 보는 게 좋다.프롬프트 엔지니어링 — AI한테 말을 잘 거는 기술. "이렇게 설명하면 더 잘 이해하더라"는 수준이었다.컨텍스트 엔지니어링 — 단순히 질문을 잘 하는 걸 넘어, 프로젝트 상황과 배경을 AI에게 체계적으로 전달하..
[Week6] WIL - Hello C World!
·
크래프톤 JUNGLE
약 4주간의 알고리즘 주차를 마치고, C언어를 학습하고 활용하는 주차에 들어서게 되었다. 이번 6주차에는 C언어 기초문법을 간단히 학습하고, 이를 활용하여 기본 자료구조를 구현하는 문제들을 푸는것이 주요 과제였다. 또한 C언어의 핵심 개념인 포인터와 동적 메모리 할당 메서드 'Malloc'을 공부해보면서 C언어에 익숙해지는 과정을 거쳤다. 남은 4개월 동안 알고리즘 문제를 풀 일이 없을텐데, 이러면 수료후에 다시 알고리즘 문제를 못 풀게 되는것이 아닌지 걱정이 된다. 비록 남은 교육과정이 쉽지만은 않겠지만, 일주일에 2~3문제는 백준/LeetCode 문제를 푸는 습관을 들여보도록 하자... ㅎㅎ 핵심 역량 평가역량달성도목표문제해결100%LL, Stack and Queue, BT, BST 각 개념당 최소 ..
백준 9251- LCS 풀이
·
알고리즘
https://www.acmicpc.net/problem/9251처음 문제를 봤을때, 접근법이 선뜻 떠오르지 않았던 문제이다.dp 알고리즘의 대표격인 문제라 정리해둔다. LCS(Longest Common Subsequence, 최장 공통 부분 수열) 문제부분 수열이란?원래 수열에서 몇 개를 골라 순서는 유지한 채 만든 수열이다.- 순서는 유지해야 한다.- 중간 원소는 건너뛰어도 된다. 예를 들어 원래 수열이 [2, 3, 5, 6, 9] 라면, 부분 수열은- [2, 3, 5, 6]- [2, 5, 6]- [3, 9]... 등이 있다.이런식으로 원래 순서만 안 바꾸면 된다. 왜 DP 알고리즘 대표 문제일까?DP의 핵심 사고 방식은 다음과 같다.1. 큰 문제를 작은 문제로 나누고,2. 그 작은 문제의 답을 재사..
백준 12865 - 평범한 배낭 풀이
·
알고리즘
https://www.acmicpc.net/problem/12865DP 문제를 풀면서 기억해두면 좋을 케이스라 기록해두기로 했다. 문제 정의배낭에 넣을 수 있는 물건들의 가치합의 최댓값을 구하는 문제이다.완전탐색을 하기에는 경우의 수가 너무 많고, 중복되는 계산이 반복되기 때문에 dp로 풀어야겠다고 생각했다. 1. 상태 정의dp[i] = 무게가 i일 때 가치합의 최대값 2. 점화식 세우기# item은 [weight, value]로 구성dp[i] = max(dp[i], dp[i - item[0]] + item[1])현재 배낭 용량이 id일 때,1) 이 물건을 안 넣었을 때 기존 i무게 에서의 최대 가치와 2) 이 물건을 넣었을 때의 최대 가치를 비교해서 더 큰 값을 선택한다. 3. 초기값 설정어차피 존재하..
[Week5] WIL - DP 알고리즘 부수기
·
크래프톤 JUNGLE
약 4주간 진행한 알고리즘 주차가 종료되었다. 이제 백준 기준으로 실버까지의 문제는 어느정도 풀어낼 수 있게 되었다. 하지만 이대로 C언어 주차로 넘어가게 되면 알고리즘 해결 감각이 다시 초기화될 것이 뻔히 보인다. 비록 알고리즘 주차는 끝났지만, 매일 혹은 이틀에 한번 정도는 알고리즘 문제를 꾸준히 푸는 습관을 들이도록 하겠다! 핵심 역량 평가역량달성도목표문제해결80%백준 골드5 수준의 문제를 AI, 구글링 도움 없이 풀 수 있음.LCS 문제를 제외하고는 스스로 해결할 수 있었다.설계80%최대한 효율적인 코드(시간 복잡도/공간 복잡도 고려)를 짜는 것을 목표로 한다.최대한 시간 복잡도를 낮추는 방식으로 코드를 짜려고 노력했다. 또한 풀이법이 두가지가 있다면(1차원, 2차원 배열) 두 방법 모두 사용하여..