분류 전체보기 176

[pintos] 도커에 대해 조금 알 것 같기도! - 도커 사용법

아니 핀토스 3주차가 되어가는데 도커를 아직 못 쓰면 안 되자나요 ! 누군가의 도움 없이 도커 환경을 실행시키고 싶어서 한 번 정리해봅니당. 처음 도커 사용법을 알려준 지성이와 항상 내 도커 문제를 해결해준 윤호 덕분에 많이 배운 것 같다.진짜 고마운 사람덜.. ૮₍っ⸝⸝ o̴̶̷᷄ ̫ o̴̶̷̥᷅⸝⸝ ₎ა 도커가 필요한 이유에 대해서는 이전 포스팅을 참고하자.VM을 통해 별도의 OS를 실행할 환경을 만드는 것이다.https://nkdev.tistory.com/139 가상화(Virtualization)Virtualization?Use a single machines' hardware to run multiple virtual machines in it. Key point:Use a system's Ha..

정글/Pintos 2025.05.31

[pintos] gdb를 사용해보세요 - gdb 사용법

우리반에 몇 없는 gdb 사용자 김윤호씨에게 감사를 전하며 글을 시작하겠습니다 ദ്ദി˙∇˙)도커환경을 실행시키고 있는 터미널 2개 켜기 현재 실행 중인 도커 목록을 확인한다.docker ps -a 그 중 접속할 도커 이미지를 선택해서 도커 환경에 접속한다.docker exec -it [docker container ID] /bin/bash userprog/build 디렉토리로 이동한다. 나는 build 디렉토리 안에 이미 목적 파일이 생성되어 있는데, 아직 없다면 make 명령어로 컴파일해주자. 참고로 docker exec ~ 명령은 이미 실행 중인 컨테이너에 새 터미널을 attach하는 것일 뿐 docker run으로 새로운 컨테이너를 만드는 게 아니므로, 해당 컨테이너에서 이미 빌드한 목적 파일이..

정글/Pintos 2025.05.29

[pintos] 2주차 - User Memory, System Calls 구현 과정

테스트 현황 。゚゚(*´□`*。)°゚。5/31 기준pass tests/userprog/args-nonepass tests/userprog/args-singlepass tests/userprog/args-multiplepass tests/userprog/args-manypass tests/userprog/args-dbl-spacepass tests/userprog/haltpass tests/userprog/exitpass tests/userprog/create-normalFAIL tests/userprog/create-emptypass tests/userprog/create-nullpass tests/userprog/create-bad-ptrFAIL tests/userprog/create-longFAIL ..

정글/Pintos 2025.05.28

[pintos] 시스템 콜이란?

11주차 발표 주제로 시스템 콜을 선정했다.시스템 콜이란 ? : 사용자 모드에서 제한된 연산을 수행하려면 system call을 사용한다os는 시스템 콜이라는 api를 제공하여 유저 모드에서 직접 실행하기에는 너무 크리티컬한 작업들을 수행할 수 있게 합니다. 예를 들어 유저 프로그램이 파일 시스템 접근, 프로세스 생성 및 제거, 다른 프로세스와의 통신, 메모리 할당 작업 등을 처리하고 싶을 때 시스템 콜을 사용합니다. 시스템 콜이 필요한 이유 : OS가 물리 자원 가상화를 해야 해서운영체제가 하는 일은 cpu, 메모리, 디스크와 같은 물리 자원을 가상화하는 것입니다. cpu를 가상화한다는 것은 여러 프로세스가 동시에 cpu를 쓰고 있지만, cpu가 여러 개인 것처럼 만들어서 개별 프로세스 입장에서는 마치..

정글/Pintos 2025.05.28

[pintos] 파일 디스크립터 간단한 설명

파일 디스크립터!!!!!!!!!!!! 어려워. 이해하기 쉽게 정리해보자아 파일 디스크립터/파일 디스크립터 테이블파일 디스크립터(file descriptor, fd)는 유저 프로그램에서 사용 하는 정수값이다. fd -> file mapping table (이하 fd table)은 struct thread 안에 저장되어있는 데이터이며, 커널만 접근 가능한 데이터이다. fd table은 보안, 안정성이 중요한 데이터니까 커널이 관리하는 것 !유저 프로그램은 fd table에 직접 접근할 수 없기 때문에 시스템 콜의 인자로 fd를 넘겨주어 간접적으로 파일에 접근할 수 있다.좀 더 자세히 ..!유저가 파일을 open하면 os는 그 오픈된 파일에 해당하는 엔트리를 생성해서 커널 영역에 저장한다. 만약 100개의 파..

정글/Pintos 2025.05.27

[pintos] 프로세스 - PID / fork로 자식 스레드가 생성되는 과정

프로세스 관련 시스템 콜을 구현하기 위해서프로세스 공부를 좀 하고 넘어가겠당. CSAPP 8장 공부하는 주간에 내가 맡은 부분은 9장이었어서 공부가 다소 부족했다.맞다 핑계다.. ㅠㅠㅠㅠㅠ 한 시간 동안만 투자해서 !!! 열심히 정리해보자. ... CSAPP 8장에서는 프로세스 개념에 대해 설명하기 전에, 프로세스 추상화에 대해 언급한다. 프로세스 추상화란, 실제로는 여러 프로세스가 컨텍스트 스위칭을 하며 CPU, 메모리, 디스크와 같은 하드웨어 자원을 나눠 쓰고 있지만OS가 각 프로세스들이 이 하드웨어 자원을 혼자서 다 사용하고 있는 것처럼 만들어준다. OS가 프로세스를 추상화하기 위해서 제공하는 기능이 두 가지 있는데Private Address Space 제공User mode / Kernel mode..

정글/Pintos 2025.05.26

[pintos] 2주차 - Argument Passing 구현 과정

디버깅 과정 몇 개를 소개하ㅏ겠다 구현한 코드static boolload (const char *file_name, struct intr_frame *if_) { struct thread *t = thread_current (); struct ELF ehdr; struct file *file = NULL; off_t file_ofs; bool success = false; int i; /* arguments set up */ int argc = 0; char *argv[128]; char **save_ptr; char *str; for(str = strtok_r(file_name, " ", save_ptr); str != NULL; str = strtok_r(file_name, " ", save_ptr)..

정글/Pintos 2025.05.24

[pintos] 2주차 - 키워드 정리

User mode vs Kernel mode일반 응용 프로그램은 하드웨어를 제어할 수 없게 만들기 위해서 유저모드와 커널모드를 분리시켰다.예를 들어 디스크에 저장된 정보들은 보호되어야 한다. 아무 응용 프로그램이나 읽을 수 있게 만들면 안 된다. 따라서 ‘시스템 콜’이라는 특정 절차를 거쳐 커널 모드로 진입해야 파일 시스템을 통해 디스크의 값을 읽고 쓸 수 있다.프로세스가 유저 모드에서 커널 모드로 진입하는 유일한 방법은 인터럽트, 오류, 트랩 시스템 콜 같은 예외를 통해서이다. 예외가 발생하여 제어가 예외 핸들러로 넘어가면 프로세서는 유저 모드에서 커널 모드로 전환한다. 핸들러는 커널 모드에서 돌아간다. 제어가 응용 코드로 돌아오면 프로세서는 모드를 커널 모드에서 다시 유저 모드로 변환한다.User m..

정글/Pintos 2025.05.24

[pintos] 1주차 - Priority Scheduling 구현 과정

alarm 테스트는 모두 pass했다!이제 priority 테스트를 통과시켜보자.구현 요구 사항ready_list에 있는 스레드를 스케줄하여 running 상태로 만들 때 우선 순위에 맞게 스케줄링되도록 만들어야 한다. schedule()함수를 보면 항상 ready_list의 가장 앞에 있는 스레드가 실행되기 때문에 ready_list에 스레드를 넣을 때 마다 priority순서로 정렬되게 만들어야 한다.그러면 저 세 가지 경로로 ready_list에 스레드를 넣는 부분을 변경해야 한다. alarm-clock에서 3번을 해결했으니 priority-scheduling에서 2번을 해결하면 된다!1. 스케줄링하는 부분 이해하기나는 alarm-clock에서 스레드를 wake할 때 sleep_list의 가장 앞에..

정글/Pintos 2025.05.20