2024/11 11

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

레지스터 종류

PCB 내부에 무엇이 들어있나 갑자기 궁금해졌다.그 안에는 레지스터의 여러 종류들이 보였고,레지스터에 대해 좀 더 알고 싶어서 포스팅을 만든다. ✨ Address Registers PC (Program Counter, 프로그램 카운터)PC는 일반적으로 순차적으로 진행현재 실행 중인 명령어의 다음 위치 가르키는 주소 저장순차적 실행 흐름이 끊기는 경우특정 메모리 주소로 실행 흐름을 이동하는 명령어 인터럽트 발생 함수 호출 시 PC 값을 스택에 저장하고, 함수 호출이 끝나면 스택에 저장된 값이 다시 PC로 복귀MAR (Memory Address Register, 메모리 주소 레지스터)메모리에서 데이터를 읽거나 쓸 때 필요한 메모리 주소 저장SP (Stack Pointer, 스택 포인터)스택 구조에서 가장 최..

CS 2024.11.04

Pintos Project1 -키워드 정리 (코드로 이해하기) / 프로세스, 스레드, 멀티 스레딩 문제

프로세스 (Process) / 스레드 (Thread) 프로세스 (Process)실행 중인 프로그램의 인스턴스독립적 메모리 공간각 프로세스는 각각 독립된 메모리 공간을 가짐다른 프로세스가 접근 불가능고유한 자원 CPU, 메모리, 파일 핸들 등의 자원을 OS로 부터 할당주소 공간 분리프로세스는 독립된 주소 공간을 가짐다른 프로세스의 메모리에 직접 접근 불가능IPC (Inter-Process Communication) 독립된 메모리를 관리하여 컨텍스트 스위칭으로 오버헤드 프로세스 예시#include #include #include int main() { pid_t pid = fork(); // 새로운 프로세스 생성 if (pid This is the parent process. PID: 1234T..

CS 2024.11.02