OS/Pintos
-
Project1 : Thread - Priority Scheduling (1)OS/Pintos 2021. 12. 30. 11:07
개념 Priority Scheduling (우선순위 스케쥴링) : 우선순위가 제일 높은 CPU에게 주겠다 ✅ 스레드가 현재 실행 중인 쓰레드보다 우선순위가 높은 준비 목록에 추가되면 현재 스레드는 즉시 프로세서를 새 스레드에 넘겨야 한다. ✅ 마찬가지로 스레드가 lock, semaphore 또는 condition 변수를 기다릴 때 가장 높은 우선순위를 가진 기다리던 스레드가 먼저 활성화되어야 한다. 스레드는 언제든지 자신의 우선순위를 올리거나 낮출 수 있지만, 더 이상 높은 우선순위를 갖지 않도록 우선 순위를 낮추면 CPU를 즉시 양보한다. 스레드의 우선순위 범위는 PRI_MIN(0)부터 PRI_MAX(63)까지이다. 낮은 숫자는 낮은 우선순위! 숫자가 높을수록 우선순위가 높은것! 초기 스레드의 우선순위..
-
Project1 : Thread - introductionOS/Pintos 2021. 12. 30. 11:03
Threads - Introduction 프로그램 프로그램과 프로세스의 차이 프로그램 : 생명이없음. 보조기억장치(하드디스크, SSD)에 존재하며 실행되기를 기다리는 명령어(코드)와 정적인 데이터 묶음 프로세스 : 프로그램의 명령어와 정적데이터가 메모리에 적재되어 생명이 생김! 즉, 실행중인 프로그램 프로세스의 구성 PCB(Process Control Block) 안에 프로세스에대한 정보를 담고 있음 PID : 운영체제가 각 프로세스를 식별하기위해 부여된 프로세스 식별번호(Process IDentification) 프로세스 상태 : CPU는 프로세스를 빠르게 교체하면서 실행하기에 실행중인 프로세스도 있고, 대기중인 프로세스도 있음. 이러한 상태를 저장함 프로그램 카운터 : CPU가 다음으로 실행할 명령어..
-
Project1. Alarm clockOS/Pintos 2021. 12. 28. 00:22
alarm : 호출한 프로세스를 정확한 시간 후에 다시 시작하는 커널 내부 함수 핀토스에서는 알람 기능이 busy waiting을 이용하여 구현 → sleep / wake up 다시 구현 busy waiting : thread가 CPU를 점유하면서 대기하고 있는 상태, CPU자원이 낭비되고, 소모 전력이 불필요하게 낭비될 수 있다. 💡 컨셉! 깨어날 시간이 아니면 양보, 애초에 양보할 일을 안만들면 되지 않을까? → 별도의 리스트를 마련해서 CPU가 잠자고 있는 애들 모아놓기! ✅ 수정해야 할 주요 파일 : include/threads/thread.h, threads/thread.c, devices/timer.c ✅ 수정 및 추가해야할 함수 void timer_sleep (int64_t ticks) /*..