PintOS 1주차를 맞아 환경 설정 후, 비교적 간단한 OS인 PintOS를 구현해보려한다.스탠포드 대학의 교육 과정을 카이스트에서 정제하여 수업으로 제공하는 본 과정은, 크래프톤에서 다시 인용하여 수강생들이 OS에 대한 전반적인 이해와 활용 능력을 기를 수 있도록

PintOS Project 1주차Threads멀티스레드 환경 구축 시, 고려해야할 점들과 실제 구현에 대해 알아보자.레드는 크게 위와 같은 4가지 상태로 존재할 수 있다.Ready Queue에서 실행을 대기 중인 스레드 listCPU를 점유하며 실행 중인 스레드일정

PintOS PJT2를 시작했다.1주차의 thread에 이어 2주차에선 user program을 다룬다.이제 프로그램은 메모리나 자원에 직접 접근하지 못하고 kernel 호출을 통해 자원을 활용해야 한다.프로젝트 시작에 앞서 make check를 돌려보니 에러가 발생했

https://velog.io/@rivolt0421/Pintos-2.-UserPrograms프로세스는 "머신(machine)에 대한 추상화" 이다.조금 더 구체적으로는 CPU / Memory / Storage를 가진 컴퓨터의 추상화각 응용프로그램이 이러한 머신

User mode: 유저 애플리케이션이 실행되는 제한된 권한 모드로, 시스템 자원에 직접 접근하지 못하고, 시스템 콜을 통해서만 커널에 접근.Kernel mode: 운영체제 커널이 실행되는 권한이 높은 모드로, 모든 시스템 자원과 하드웨어를 제어할 수 있으며, 유저 모
process_fork () duplicate_pte () _dofork () 
system call을 호출하는 open-normal 테스트 파일이 실행되는 데까지의 과정pintos가 실행되면 threads/init.c의 main이 실행된다.run_actions 호출run_actions -> run_task 호출run_task의 USERPROG 부
부모와 자식을 나누는 이유운영체제에서 부모-자식 관계를 기반으로 프로세스를 나누는 것은 프로세스 관리와 시스템 효율성을 높이는 데 중요한 설계 원칙입니다. 다음은 그 이유를 설명한 내용입니다.프로세스 생성과 복제운영체제에서 새 프로세스를 생성할 때, 기존 프로세스(부모
syscall_handler 함수는 시스템 호출(System Call)을 처리하는 핵심 함수로, 사용자 공간에서 커널 공간으로 전달된 시스템 호출 번호와 매개변수에 따라 적절한 커널 함수로 요청을 분배합니다.인터럽트 발생 시 struct intr_frame에 저장된 시
이 구조체는 인터럽트가 발생하거나 트랩(예: 시스템 호출)이 처리되는 동안 중단된 작업의 상태를 저장하는 데 사용됩니다. 인터럽트 처리기가 실행되면 CPU 상태(레지스터, 스택 포인터 등)를 저장하고 인터럽트 처리가 끝나면 복원합니다.정수 레지스터 상태를 저장합니다.
이 함수는 iretq 명령어를 사용하여 저장된 인터럽트 프레임 (intr_frame)의 상태를 CPU 레지스터에 복원하고, 중단된 스레드(또는 프로세스)의 실행을 재개합니다. 주로 문맥 교환(context switching) 시에 사용됩니다.struct intr_fra
syscall.cprocess.cprocess.c
각각의 page table이 겹치지 않게 하면 process memory isolation 가능file의 isolation은?file permission system을 구축한다user 그룹을 나누고process간 통신이 필요한 경우 일정 부분 memory를 공유한다.또
PintOS 가상 메모리 주간이 밝았다.본격적인 코드 분석에 앞서, 본 주차를 진행하는데 필요한 기본 지식에 대한 키워드 정리부터 진행하겠다.Virtual Memory실제 물리 메모리보다 더 큰 메모리를 사용하는 것처럼 보이도록 설계된 메모리 관리 기술.물리적 메모리와
이번 과제는 OS 상에서 가상 메모리를 구축하고 활용할 수 있도록 하는 것을 목표로 한다.이를 위해서 page, frame을 정의하고 가상 메모리와 물리 메모리를 mapping 하는 등의 작업이 필요하다.원활한 과제 수행을 위해 gitbook을 먼저 살펴보자.우리는 먼