분류 전체보기
-
[정글 WEEK12~13] Virtual Memory gitbook 분석 - Memory Management카테고리 없음 2025. 5. 31. 01:52
VM 시스템을 지원하려면 가상 페이지와 물리적 프레임을 효과적으로 관리해야한다. 즉, 어떤 메모리 영역을 어떤 목적으로, 누가 사용하는지 등을 추적해야 한다. 📄 page 구조체VM 시스템에서 하나의 유저 페이지를 추상화하는 구조체다. 이 페이지가 어떤 성격을 갖는지에 따라 내부 동작이 달라지기 때문에 'union'을 이용해 uninit_page, anon_page, file_page 중 하나의 타입만 사용한다. struct page { const struct page_operations *operations; // 페이지에 적용할 동작들 (type-specific ops) void *va; // 유저 공간의 가상 주소 struct frame *frame;..
-
[정글 WEEK 12~13] Virtual Memory 큰 흐름 잡기카테고리 없음 2025. 5. 30. 14:21
Project 2까지는 프로세스 실행 시 'eager loading' 방식을 사용했다. 즉, load()하면 코드와 데이터 세그먼트를 한번에 물리 메모리 주소(pa, physical address)에 할당하고, 이를 가상 메모리 주소(va, virtual address)와 매핑했다. 하지만 이 방식은 프로세스가 물리 메모리를 아주 비효율적으로 사용한다는 단점이 있다. 프로세스 전체를 한 번에 물리 메모리에 올리면 유한한 영역을 다른 프로세스와 효율적으로 공유할 수 없다. 예를 들어, CPU를 사용하지 않고 대기 중인 프로세스가 메모리를 점유하고 있어 다른 프로세스를 실행시킬 수 없거나, 실제로는 사용되지 않는 코드나 데이터가 불필요하게 메모리에 올라가 있는 경우가 발생할 수 있다. 이런 상황은 메모리 ..
-
[정글 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] 스케쥴러 개념카테고리 없음 2025. 5. 9. 16:51
스케쥴러는 다음에 실행할 스레드를 선택하는 역할을 하며, 아래와 같이 행동한다. 1️⃣ 준비된 스레드 중에서 가장 우선순위가 높은 스레드 하나를 고른다 2️⃣ 현재 실행중인 스레드를 종료시킨다 3️⃣ 고른 스레드를 실행시킨다( 2️⃣, 3️⃣은 컨텍스트 스위칭 과정! ) 스레드 스케쥴링의 핵심: 우선순위 기반 스케쥴링(Priority Scheduling)과 선점 스케쥴링(Preemptive Scheuduling)이다! 1. 스케쥴링 개요PintOS 기본 구현은 선점형 스케쥴러이다. 스케쥴러는 Ready List에서 실행 가능한 스레드를 선택하고, 우선순위가 높은 스레드를 먼저 실행시킨다. 현재 실행 중인 스레드보다 더 높은 우선순위를 가진 스레드가 도착하면, 현재 스레드를 중단시키고 새로운 스레드를..
-
[정글 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의 출력이 어떻게 나와야하는지 역추적해보기 ..
-
[정글 Week08_WebServer] 키워드카테고리 없음 2025. 5. 2. 20:59
🗝️ CGI(Common Gateway Interface): 웹 서버가 동적으로 실행 가능한 외부 프로그램을 호출해서 그 프로그램의 출력 결과를 HTTP 응답으로 클라이언트에게 전달하기 위한 표준 프로토콜 CGI의 조건1. 웹 서버에 의해 실행됨2. 클라이언트 입력을 환경변수 또는 표준입력(stdin)으로 전달받음3. 표준출력(stdout)으로 HTML 등 HTTP 응답 생성4. 웹 클라이언트에게 동적 컨텐츠 제공 CGI 프로그램 예시1. 사용자가 웹에서 GET /cgi-bin/adder?num1=3&num2=4 HTTP/1.1 요청2. 웹서버는 adder라는 외부 프로그램 실행 * 환경변수 QUERY_STRING="num1=3&num2=4" 설정3. adder는 두 숫자를 더해 HTML을 생성하고..