timer_sleep() 함수의 기존 Busy-Waiting(적극적 대기) 방식을 Blocking(수동적 대기) 방식으로 변경하여 CPU 효율성을 향상시킵니다.기존 timer_sleep()은 스레드가 잠들지 않고, while 루프를 계속 돌며 시간이 다 됐는지 검사했습
timer_sleep() 함수의 기존 Busy-Waiting(적극적 대기) 방식을 Blocking(수동적 대기) 방식으로 변경하여 CPU 효율성을 향상시킵니다.기존 timer_sleep()은 스레드가 잠들지 않고, while 루프를 계속 돌며 시간이 다 됐는지 검사했습
Priority Donation 구현 기부(Donation)가 필요한 순간: 우선순위 역전 (Priority Inversion) 다음과 같이 우선순위가 다른 세 스레드가 있다고 가정합니다. H 스레드(50) M 스레드(30) L 스레드(10) 문제 상황
스케줄러 설계 시 두 가지 상충되는 목표가 있습니다.반환 시간 (Turnaround Time) 최적화: 짧은 작업을 먼저 실행 (SJF 방식)응답 시간 (Response Time) 최적화: 대화형 사용자에게 빠른 응답 (RR 방식)SJF는 작업의 총 실행 시간을 미리
process_exec() 함수가 현재는 프로그램 이름만 받도록 구현되어 있다. 이를 확장하여 명령줄 인자를 처리할 수 있도로 구현하라.
Phase 1: 하드웨어 초기화 (Assembly)\_start ()컴퓨터 전원이 켜지면 가장 먼저 실행되는 코드입니다.CPU를 64비트 모드로 설정하고 기본적인 메모리 관리(페이징)를 준비합니다.모든 준비가 끝나면 C언어 세상의 시작점인 main() 함수를 호출합니다
핵심: 물리 메모리의 크기 한계를 극복하기 위해 디스크(Swap/File) 를 메모리의 연장선으로 사용한다. 원칙: Lazy Loading (게으른 로딩)당장 필요하지 않으면 메모리에 올리지 않고 장부(SPT)에만 적어둔다.실제로 필요해서 접근할 때(Page Faul
지금까지 구현한 프로젝트에서 USER_STACK은 단일 페이지로 고정되어 있었다. 이제 프로세스가 실행되면서 스택이 현재 크기를 초과할 경우, 필요에 따라 추가 페이지를 할당하여 스택을 확장해 주는 기능을 구현해야 한다.핵심은 페이지 폴트가 발생했을 때, 이것이 유효한
지금까지는 파일 입출력(read, write)을 수행할 때 버퍼를 이용하는 방식을 사용해왔다. mmap은 파일을 프로세스의 가상 메모리 주소 공간에 직접 매핑하여, 마치 메모리를 다루듯이 파일을 다룰 수 있게 해주는 기능이다.이제 파일 데이터를 페이지 단위로 관리하며