From 971336bb17d93dfa78c8d4d24dc7b3ef55df0abf Mon Sep 17 00:00:00 2001 From: ChenDongqi <2091984032@qq.com> Date: Wed, 25 Dec 2024 11:36:42 +0000 Subject: [PATCH] mixed --- README.md | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 431de34..c901203 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,42 @@ Consumer: consumed item 1 ``` ### 5. æ··åˆè°ƒåº¦æœºåˆ¶ -`proc.c` +`proc.c` +关键代ç : +``` +for (p = proc; p < &proc[NPROC]; p++) + { + acquire(&p->lock); + if (p->state != UNUSED) + { + nproc++; + } + if (p->state == RUNNABLE) + { + // è€åŒ–机制:检查是å¦éœ€è¦æé«˜ä¼˜å…ˆçº§ + uint64 current_time = r_time(); + if (current_time - p->last_scheduled > AGING_THRESHOLD) + { + p->priority--; // 优先级æé«˜ï¼ˆæ•°å€¼å‡å°ï¼‰ + if (p->priority < 0) + { + p->priority = 0; // ç¡®ä¿ä¼˜å…ˆçº§ä¸ä¸ºè´Ÿæ•° + } + } + + // 优先级调度:找到优先级最低的进程 + if (p->priority < min_priority || + (p->priority == min_priority && p->remaining_time < min_remaining_time)) + { + selected_proc = p; + min_priority = p->priority; + min_remaining_time = p->remaining_time; + } + } + release(&p->lock); + } + +```c 在 XV6 ä¸å®žçŽ°äº†ä¸€ä¸ªæ–°çš„ æ··åˆè°ƒåº¦æœºåˆ¶ï¼Œè¯¥æœºåˆ¶ç»“åˆäº†ä¼˜å…ˆçº§è°ƒåº¦ã€SRTF 调度和时间片轮转调度。æ¤è°ƒåº¦å™¨åЍæ€é€‰æ‹©è¿›ç¨‹ï¼Œç¡®ä¿ç³»ç»Ÿé«˜æ•ˆè¿è¡Œï¼Œä¸”é¿å…进程长时间处于未调度状æ€ã€‚调度机制的主è¦ç‰¹ç‚¹åŒ…括: -- GitLab