Extracurricular Activites
-
[정글 Week10~11_PintOS] User Program 구현 MilestoneExtracurricular Activites/정글 2025. 5. 15. 15:43
1. 협업 방식 논의 - 티켓 관리 툴: 깃헙 Projects - 깃헙 커밋 컨벤션: 깃모지 타입(파일명): 작업 내용 설명 예시: ✨ feat(threads.c): alarm clock [타입] • ✨ feat: 새로운 기능 추가 • 🐛 fix: 버그 수정 • ⏪️ revert: 변경 내용 되돌리기 • 🧹 chore: 자잘한 수정이나 빌드 업데이트 • ♻️ refactor: 리팩토링 - 페어 프로그래밍 규칙: 각자 분담받은 티켓 단위로 기능을 구현하다가 어렵거나 같이 논의해서 구현하고 싶다면 페어 프로그래밍 요청 - 스크럼(오후 1시 반): 전날 ~ 오전까지 한 일, 앞으로 반나절동안 할 일 공유 - 코어타임(오후 8시 반): 스크럼..
-
[정글 Week10~11_PintOS] User Program 구현 팁Extracurricular Activites/정글 2025. 5. 15. 15:11
🧚🏻 발제 때 나온 구현 팁을 공유합니다! 0. 전체 구조 파악Pintos의 메인 프로그램이 어디에 위치하는지 파악하고, run 파라미터를 처리하는 부분을 찾는다.run 명령어는 사용자 프로그램을 실행시키기 위해 사용되며, main 프로그램에서 run 명령어를 해석하는 부분에서 스레드를 생성하고 유저 프로그램을 로드하는 과정이 시작된다. 이 과정에서 부모 스레드는 자식 스레드를 분기시키고, 해당 프로그램을 메모리에 로드해서 실행시킨다. 1. 자식 프로세스 실행 제어 및 동기화 (Process Control & Synchronization) • 목표: 자식 프로세스가 프로그램을 실행하는 동안 부모 스레드가 종료되지 않고 대기하도록 동기화를 구현한다. • 문제 정의: 시스템 콜이 구현되지 않은 상..
-
[정글 Week10_PintOS] 9주차 회고Extracurricular Activites/정글 2025. 5. 15. 15:00
8주차까지 진도를 맞추기 위해 ChatGPT에 많이 의존했다는 점이 너무 아쉬웠다. '7월 말에 이 과정이 끝났을 때 무엇을 가장 잘 한 행동이었다고 기억할 수 있을까?' 를 떠올려봤을 때 딱히 떠오르는 것이 없었다. 정글을 시작한 이유를 다시 떠올려봤다.나는 프로그래밍의 요구사항을 의사코드로 정리하고 코드까지 내 힘만으로 구현하는 힘이 너무 약했다. 그래서 어떤 문제든지 혼자서 해결할 수 있다라는 자신감이 아직도 부족하다. 물론 AI 프롬프팅은 자신있다. 하지만 ChatGPT에 대한 의존도가 너무 컸다는다는 것을 누구보다 잘 알고 있으니 항상 내면의 불안감이 있었다. 그래서 9주차에는 정말로 ChatGPT를 사용하지 말아야겠다는 다짐을 했고 결국 지켜냈다.트러블 슈팅할 때마다 개념을 통해 의사코드를 떠..
-
[정글 Week09_PintOS] Thread 구현 MilestoneExtracurricular Activites/정글 2025. 5. 8. 16:47
1. 환경 세팅 - Ubuntu 18.04 구동 가능하도록 VS Code 버전 다운그레이드 ✅ - 디버깅 환경 구성 ✅ 2. 카이스트 핀토스 gitbook 확인 - Intro ✅ - Alarm Clock ✅ - Priority Scheduling ✅ - Advanced Scheduler - FAQ 분석 ✅ 3. 카이스트 핀토스 강의 수강 - Alarm Clock and Priority Scheduling ✅ - MLFQ - Context Switching 4. 권영진 교수님 강의 슬라이드 분석 - 운영체제 전반적 개요 및 주요 개념 5. PintOS Lab 슬라이드 분석 - 스케쥴러 개념 6. 테스트코드 분석 - .c 파일을 보고 .ck의 출력이 어떻게 나와야하는지 역추적해보기 ..
-
[정글 WEEK02_알고리즘] 개발 일지 - 2주차 마무리Extracurricular Activites/정글 2025. 3. 28. 00:13
공부 키워드 - 이분 탐색 - 분할 정복 - 스택 - 큐 - 우선순위 큐 - Linked List - 해시 테이블 지식의 연결✏️ 파이썬 dict는 해시 충돌을 어떻게 해결하고, 해시 함수로 무엇을 쓸까? ◼︎ 해시 충돌은 perturbation probing 기반의 open addressing 방식으로 해결한다. 단순히 버킷들을 한 칸씩 선형으로 탐색하는 것이 아니라, 해시값에서 유도한 perturb 값을 활용해 비트 연산과 시프트를 반복하며 다음 후보 인덱스를 계산한다.perturb는 다음 탐색 위치를 다양하게 만들기 위한 보조 난수 값으로, 아래 코드에서 볼 수 있듯이 시작 인덱스를 계속 변화하게 만들어 충돌을 효과적으로 분산시킨다.hash = 123456789mask = 15 # ..
-
[정글 WEEK02_알고리즘] 개발 일지 - 시험Extracurricular Activites/정글 2025. 3. 28. 00:13
1. 10815_숫자카드 ms의 각 요소 m이 ns에 존재하는지 확인할 때, 이분탐색을 쓰기 위해서 list로 구성한 ns를 정렬했다.만약 m이 ns에 존재한다면 bisect_left(ns, m)의 결과는 기존 인덱스의 왼쪽 값, bisect_right(ns, m)의 결과는 기존 인덱스의 오른쪽 값이 나와 서로 다를 것이다. 이 때는 result에 1 추가한다.m이 ns에 존재하지 않는다면 bisect_left 결과값과 bisect_right 결과값이 같을 것이고 이 때는 result에 0을 추가한다.그리고 매번 print하면 시간초과가 나기 때문에 한번에 result를 언패킹한 결과를 print 했다. 또다른 풀이법으로는 ns를 dict 또는 set으로 구성하고 m이 ns에 있는지 m in ns로 조회..
-
[정글 WEEK02_알고리즘] 개발 일지 - 문제 풀이Extracurricular Activites/정글 2025. 3. 26. 21:34
stack이 LIFO 구조라는건 표면적으로 알았지만 제대로 이해하지 못 하고 있었다. 백준 17608_막대기, 2493_탑, 6549_히스토그램에서 가장 큰 직사각형 순으로 난이도를 높여가며 stack이 어떻게 쓰이는지 확실히 이해하게 되었다. 17608_막대기와 2493_탑은 비교적 stack의 조건을 파악하기 쉬웠는데 6549_히스토그램은 코드를 보고도 이해하기 꽤 어려웠다. 그러다 그림을 그려보며 해결한 과정에 대해서 작성해보려고 한다. '6549_히스토그램에서 가장 큰 직사각형' 풀이 💡 핵심 아이디어 막대기의 높이가 낮아질 때를 이전 막대들의 넓이를 계산할 타이밍으로 잡고 이전 막대의 길이를 높이로 해서 넓이를 계산하는 것이다. 너비는 조건에 따라 달라진다. 🤖 로직 막대기들의 높..
-
[정글 WEEK02_알고리즘] 개발 일지 - 퀴즈Extracurricular Activites/정글 2025. 3. 26. 00:08
퀴즈1. 해시 충돌이 발생하는 원인과 해시 충돌 해결법 중 체이닝에 대한 설명2. Merge Sort 구현3. 링버퍼를 이용한 Queue 구현4. 캐시 메모리 사용 시 컴퓨터 시스템 성능 향상의 이유를 '지역성' 개념으로 설명5. 프로세스와 스레드의 차이점 퀴즈를 통해 보완한 점1. 직접 구현해보면서 진짜로 이해하게 된 병합 정렬(Merge Sort)의 원리 병합 정렬은 배열을 앞, 뒤 두 영역으로 나눠서 각각 정렬 후 병합하는 과정을 재귀적으로 수행하는 알고리즘이다. 이러한 정의에 대한 암기를 넘어 직접 구현해보면서 이해도가 확 올라갔다. 🔍 원리는 아래와 같다.a 라는 배열을 병합 정렬할 때, ① a의 절반을 임시 저장할 buffer 배열에 a 배열의 앞부분 절반을 삽입한다. ② buffer..