
총 6개
-
Pintos Project 1 한국어 설명서 (design report) - Alarm clock, Priority Scheduling, Advanced Scheduling2025.01.161. thread Pintos에서는 thread creation과 thread completion, Round-Robin 방식의 thread switching(simple scheduler)을 이미 구현해 두었다. kernel thread의 struct는 'threads/thread.h'에 선언되어 있으며, thread structure은 4kB page를 차지한다. struct thread는 page의 시작부분부터 공간을 차지하고, 나머지 부분은 thread의 stack을 위해 이용된다. 따라서 kernel stack을 위한 공간...2025.01.16
-
Pintos Project 1 final report - Alarm clock, Priority Scheduling, Advanced Scheduling2025.01.161. Alarm clock 기존의 busy-waiting 방식을 sleep/wake-up 방식으로 변경하는 것은 시스템 자원을 효율적으로 사용하는 데 매우 중요하다. busy-waiting 방식은 프로세서가 일정한 시간동안 아무 작업도 하지 않고 반복적으로 상태를 확인하는 방법으로, 타이머나 조건이 충족될 때까지 CPU가 루프를 반복하며 기다린다. 이로 인해 CPU 사이클을 낭비하게 됨으로써 CPU 자원이 불필요하게 낭비되고, 전력 소비를 증가시킬 수 있다. 반면, sleep/wake-up 방식은 프로세서가 작업을 기다리는 동안 유...2025.01.16
-
Pintos Project 2 final report - User Program, System Call2025.01.161. Process termination message 프로세스가 종료될 때마다 프로세스 종료 메시지를 출력해야 한다. 종료 메시지의 출력 예시와 형식은 printf('%s: exit(%d) ', variable_1, variable_2)와 같다. variable_1은 프로세스의 이름이고, variable_2는 exit 코드이다. 2. Argument passing 사용자가 입력한 명령어는 프로그램 이름과 함께 다양한 옵션들이 붙는데, 이를 모두 인식할 수 있도록 구현해야 한다. 현재 Pintos는 전체 명령어를 하나의 프로그램 이...2025.01.16
-
Pintos Project 2 한국어 설명서 (design report) - User Program, System Call2025.01.161. Process Execution Procedure 프로젝트 2에서는 user program을 실행시키는 것이 주요 내용이다. main() 함수에서 command line을 읽어들이고 parsing한 후 run_action() 함수를 통해 실행할 프로그램을 process_execute()로 전달한다. process_execute()는 thread_create()를 호출하여 새로운 kernel thread를 생성하고, 이 thread는 start_process()를 실행한다. start_process()에서는 load() 함수를 ...2025.01.16
-
Pintos Project 3 한국어 설명서 (design report) - Virtual Memory, Frame table2025.01.161. Virtual Memory Virtual memory는 process마다 독립적으로 가지는 주소 공간으로, 필요한 데이터는 virtual memory에서 physical memory로 load해오고 필요없는 데이터는 virtual memory (예: 디스크)에 저장함으로써 physical memory 공간을 확보합니다. 각 process는 virtual address와 physical address를 mapping하는 table을 가지고 있어 virtual address로 physical address를 찾아갈 수 있습니다. ...2025.01.16
-
Pintos Project 3 final report - Virtual Memory, Frame table2025.01.161. Frame table 프레임 테이블을 순회하여 프레임을 할당하는 과정은 다음과 같다. 1. 사용 가능한 프레임이 존재하는 경우 해당 프레임을 할당한다. 2. 사용 가능한 프레임이 없는 경우 다른 프레임의 페이지를 evict하여 새로운 프레임을 확보한다. 이때 Clock 알고리즘을 사용하여 evict할 프레임을 선택한다. 프레임 할당을 위해 frame_allocate() 함수를 호출하며, 프레임 제거를 위해 frame_deallocate() 함수를 호출한다. 2. Lazy loading 프로그램 실행 시 모든 페이지의 내용을 한...2025.01.16