전체 글 205

Pintos Project3 - VA와 디스크 데이터 매핑 과정 이해하기

프로그램이 실행될 때, ELF 파일은 어떻게 메모리에 로드될까? 특히 Lazy Loading 방식에서는 데이터가 즉시 메모리에 적재되지 않고,실제로 필요할 때 디스크에서 로드된다.이 과정에서 페이지 폴트(Page Fault) 발생하면운영체제는 어떻게 VA(가상 주소)를 기반으로 디스크에서 데이터를 찾아 메모리에 매핑할까? 이번 포스팅에서는 ELF 파일의 구조와 Lazy Loading,그리고 페이지 폴트 처리 과정을 살펴보며 VA와 디스크 데이터 매핑의 원리를 알아보자.  🚨 그 전에 먼저 ! ELF 파일에 대한 개념이 없으면 이해하기 힘들다. 혹시 ELF 개념이 헷갈리면 아래 포스팅 참고하자 !!특히 프로그램 헤더 테이블 같은 경우 엄청 중요하니 꼭 알아두자  Pintos Project2 - ELF 파..

크래프톤 정글 2024.12.01

Pintos Project2 - User Program 흐름 잡기

✨ Project2: User Programs사용자 프로그램 시스템 일부 개발기본 코드에 사용자 프로그램 로드 및 실행은 가능하지만 I/O나 사용자 상호작용은 불가능이 프로젝트의 목표는 시스템콜을 통해 프로그램이 운영체제와 상호작용 하는 것read/write/fork 같은 system call 구현하면 됨 !!   Introduction · GitBookProject2: User Programs Now that you've worked with Pintos and are becoming familiar with its infrastructure and thread package, it's time to start working on the parts of the system that allow runni..

크래프톤 정글 2024.12.01

Pintos Project2 - User Program (커널/사용자 모드 이해하기)

주의 !!!  User Program 해결에는 큰 도움이 안됨 !!단지 아래와 같은 궁금증을 가지고 있으면 읽어 볼 만 하다.  ✨선행 Key word세그먼트 선택자 CPU에게 이 코드나 데이터가 어디에 있는지 알려주는 역할CPU에게 어떤 권한으로 접근해야 하는지를 알려주는 역할세그먼트 선택자로 GDT (Global Descriptor Table)에서 정보를 찾는 key GDT (Global Descriptor Table) 세그먼트의 속성과 접근 권한을 정의하는 테이블 필드값Base (세그먼트 시작 주소)Limit (세그먼트 끝 주소)DPL (권한 레벨)Descriptor Privilege Level  CPL (Current Privilege Level)CPL이 0인 경우 : 커널  모드CPL이 3인 경..

크래프톤 정글 2024.11.26

GPT 프롬프팅 방법 Cognitive Prompting (인지적 프롬프팅)

지금의 GPT는 하나의 의사결정 도구이다.이 도구를 쓰고 않쓰고는 자유이지만, 쓰지 않을 경우 도태 될 것이다. 도구는 쓰는 방법에 따라 효율성이 극적이로 달라질 것이라 생각한다.최근에 GPT 사용에 대해 좋은 인사이트를 얻어어떻게 하면 GPT에게 좋은 명령을 내릴 수 있는지에 대해 포스팅 해본다.  좀 나쁘게 말하자면 GPT는 노예라 생각한다. 우리는 이 노예에게 내 의사를 잘 전달해야한다. 그동안 우리는 막무가내로  "~ 해줘" 의 방식으로 GPT에게 묻지 않았나? (내가 이랬었다... )  이렇게 하면 소통으로는 내가 원하는 답을 얻기 어려울 수 있다.GPT는 신이 아니고 그냥 단순 아주 똑똑한 노예이다. 그렇기 때문에 내 의사, 목적을 제대로 전달하지 않으면,  당연히 GPT는 내 의도를 모른다...

Chat GPT 2024.11.22

Pintos Project2 - User Programs 키워드

✨ User mode vs Kernel modeUser mode애플리케이션이나 사용자 프로세스가 실행되는 공간프로세스가 제한된 엑세스 권한 가짐프로세스 분리로 다른 프로세스에 영향을 주지 않음 Kernel mode프로세스가 하드웨어,메모리 등에 제한 없이 엑세스 커널 모드에서 충돌이 발생하면 전체 시스템 다운 커널 모드는 모든 프로세스가 공유하는 단일 공간 OS에 시스템콜을 통해 커널 모드 기능 사용ex) open/write/read/close/malloc/free 등시스템 자원 엑세스를 허용하는 특권시스템콜을 한다고 하더라도 모든 커널 영역에 접근할 수 있는것은 아님 사용자 모드와 커널 모드 간의 전환 (context switch)서로 다른 권한 수준 간의 전환으로 CPU의 모드와 컨텍스트를 전환많은 ..

크래프톤 정글 2024.11.21

Pintos Project2 - ELF 파일

Pintos Project 2에 process.c 파일에 load하는 과정이 있다. 이 과정에서 ELF 개념이 나온다.Deep dive를 안하려고 했지만, 찾다보니 여기까지 와버렸다...ELF가 무엇인지를 알아보자 ! 🔗 ELF 형식의 파일 실행 파일프로그램 실행 가능한 바이너리 파일 공유 라이브러리 파일오브젝트 파일 🔗 ELF 형식이 아닌 파일텍스트 파일이미지 및  데이터 파일 file /bin/ls위와 같은 Linux 명령에서 파일 형식 확인 가능✨ELF 파일 특징하나의 파일 안에 여러 섹션(섹션 테이블)으로 구성 실행에 필요한 모든 데이터를 하나의 파일 안에 포함 모듈화된 설계 실행 파일, 오브젝트 파일, 공유 라이브러리 등을 하나의 표준 형식으로 처리프로그램 실행과 동적 링킹 수행  (ex :..

크래프톤 정글 2024.11.21

Pintos Project1 - 스레드 전반적인 흐름 잡기

✨ 스레드프로그램에서 실행 흐름을 만들어 주는 실행 단위각 스레드는 자신의 스택과 CPU 레지스터 상태를 관리실행할 작업을 기억하고 스스로 수행할 수 있는 독립적인 흐름스레드는 단순히 데이터를 담는 자료구조가 아니라 프로세서에서 실행되는 상태를 담고 있음 ✨ 프로그램 스레드 실행   thread_init → thread_start → thread_create 의 순서대로 진행 1. thread_init ()void thread_init (void)맨 처음 프로그램 실행 시 실행스레드 시스템 초기화하는 역할 전역 변수 및 리스트 초기화매인 스레드 초기화 2. thread_start ()void thread_start (void)스레드 시스템 실제로 시작스케줄링이 가능한 상태로 전환유휴 스레드(idle th..

크래프톤 정글 2024.11.11

Pintos Project1 - Priority Scheduling (2)

Pint OS project 1 - Priority Scheduling (1)Pint OS project 1 -Alarm Clock (1)시작 준비가 안됐다면, 아래 포스팅으로 감 잡기 Pint OS project 1 - 시작 준비✨ Pint OS Pintos는 x86-64 아키텍처용으로 설계된 간단한 운영체제 프레임워크Pintos는 커널 스jerry-k.site(바로 이어지는 Priority Scheduling 포스팅)Priority Scheduling (1) 없이 이해하기 힘듬때문에 안봤다면 꼭 봐야 한다.🅿️ Priority Scheduling높은 우선순위의 스레드가 낮은 우선순위 스레드보다 먼저 실행되도록 스케줄링ready_list 우선순위에 따라 정렬ready_list에 새로운 스레드 추가될 ..

크래프톤 정글 2024.11.07

Pintos Project1 - Priority Scheduling (1)

Pint OS project 1 -Alarm Clock (1)시작 준비가 안됐다면, 아래 포스팅으로 감 잡기 Pint OS project 1 - 시작 준비✨ Pint OS Pintos는 x86-64 아키텍처용으로 설계된 간단한 운영체제 프레임워크Pintos는 커널 스레드, 사용자 프로그램 로jerry-k.site  🅿️ Priority Scheduling높은 우선순위의 스레드가 낮은 우선순위 스레드보다 먼저 실행되도록 스케줄링ready_list 우선순위에 따라 정렬ready_list에 새로운 스레드 추가될 때마다, 위치 조정스케줄러는 가장 높은 우선순위 스레드 선택해 CPU 할당우선순위에 따른 즉각적인 양보 (추가 된 스레드 높은 우선순위 가지는 경우)즉시 CPU를 양보하여 우선순위가 높은 스레드 실행..

크래프톤 정글 2024.11.07

Pintos Project1 - Alarm Clock (1)

시작 준비가 안됐다면, 아래 포스팅으로 감 잡기 Pint OS project 1 - 시작 준비✨ Pint OS Pintos는 x86-64 아키텍처용으로 설계된 간단한 운영체제 프레임워크Pintos는 커널 스레드, 사용자 프로그램 로딩 및 실행, 파일 시스템을 지원 Pint OS projects Project 1 (Threads): 스레드와 동jerry-k.site ⏱️Alarm Clocktimer_sleep() 함수를 수정busy waiting을 피하는 방식으로 재구현 목표timer_sleep() 함수는 devices/timer.c 파일에 있음반복적으로 시간이 경과했는지를 체크하고 thread_yield()를 호출해 CPU를 낭비하는 방식으로 작동하는데, 이를 효율적인 방식으로 개선하는 것이 과제의 핵심..

크래프톤 정글 2024.11.05