日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

操作系统学习之用C语言模拟CLOCK算法

發布時間:2025/3/15 windows 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统学习之用C语言模拟CLOCK算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

CLOCK算法,顧名思義,時鐘算法,是一個在FIFO和LRU的折衷算法,很符合我們的中庸之道,來學一學它折衷了哪些部分。

Buddy算法:操作系統學習之用C語言模擬伙伴(Buddy)算法
FIFO算法:操作系統學習之用C語言模擬FIFO算法
LRU算法:操作系統學習之用C語言模擬LRU算法
Clock算法:操作系統學習之用C語言模擬CLOCK算法
本源代碼原創,轉載請注明,同時由于本人才疏學淺,剛入門操作系統,如有錯誤敬請指教
本文原創,創作不易,轉載請注明!!!
本文鏈接
個人博客:https://ronglin.fun/?p=205
PDF鏈接:見博客網站
CSDN: https://blog.csdn.net/RongLin02/article/details/117632407

算法模擬

教科書原圖

算法解釋

先來看看課本上的解釋。
時鐘策略有很多的變種,最簡單的時鐘策略需要給每個頁框關聯一個使用位的附加位。當某頁首次裝入內存時,將該頁框的使用位置為1;該頁隨后被訪問時(在訪問產生缺頁中斷后),其使用位也會置為1。對于頁面置換算法,用于置換的候選頁框集(當前進程:局部范圍;整個內存:全局范圍)被視為一個循環緩沖區,并有一個指針與之相關聯,當一頁被置換時,該指針被置為指向緩沖區中的下一個頁框。需要置換一個頁時,操作系統掃描緩沖區,查找使用位為 0的一個頁框。每當遇到一個使用位為1的頁框,操作系統就會將該位重置為0;若在這個過程開始時,緩沖區中所有頁框的使用位均為0,則選擇遇到的第一個頁框置換;若所有頁框的使用位均為1,則指針在緩沖區中完整地循環一周,把所有使用位都置為0,并且停留在最初的位置上,置換該頁框的頁。可見,該策略類似于FIFO,唯一不同的,在時鐘策略中會跳過使用位為1的頁框。這種策略稱位時鐘策略的原因是,我們可以把頁框想象在一個環中。 ——操作系統-精髓與設計原理(第九版)P227

代碼解釋

教科書的解釋太多了。簡單說一下大概意思,就是當掃描的時候,還是用的FIFO,從頭掃描到尾,但是不同的是,每個頁框都有一個"免死金牌",當第一次掃描到的時候,如果有"免死金牌"就用掉金牌,如果沒有則直接被替換。好處就是考慮到了程序的局部性原理,而且開銷相比LRU小很多,只用維護"免死金牌"量就行了。

解釋一下代碼過程,當一個"頁框"到來時 ,先找一遍,CLOCK_list中有沒有,如果有,更新一下"免死金牌",如果沒有,則開始執行時鐘算法,從index指針開始掃描,若有"免死金牌"(flag)就用掉金牌(flag = 0),如果沒有"免死金牌",則置換這一頁。如果index到了隊尾,就把其放置到開頭。

源代碼

#include<stdio.h> #define MAX_NUM 3 #define MAX_NUM_PROC 512//進程結構體 struct CList {int data;int flag; }CLOCK_list[MAX_NUM];/* 12 2 3 2 1 5 2 4 5 3 2 5 2 */int main() {for(int i=0;i<MAX_NUM;i++){CLOCK_list[i].data = 0;CLOCK_list[i].flag = 0;}int n;int a[MAX_NUM_PROC];printf("請輸入個數:");scanf("%d",&n);printf("請輸入%d個非零數字:\n",n);for(int i=0;i<n;i++){scanf("%d",&a[i]);}int index = 0;for(int i=0;i<n;i++){int exist =0;for(int j=0;j<MAX_NUM;j++){if(CLOCK_list[j].data == a[i]){CLOCK_list[j].flag =1;exist = 1;break;}}if(!exist){int full = 0;for(;index<MAX_NUM;index++){if(CLOCK_list[index].flag ==0){full = 1;CLOCK_list[index].data = a[i];CLOCK_list[index].flag =1;index++;break;}else{CLOCK_list[index].flag =0;}}if(index == MAX_NUM)index = 0;//如果滿了,置換第一頁if(!full){CLOCK_list[0].data = a[i];CLOCK_list[0].flag =1;index++;}}printf("本次隊列情況:");for(int j=0;j<MAX_NUM;j++){printf("%d",CLOCK_list[j].data);if(CLOCK_list[j].flag == 1){printf("*");}else{printf("#");}(j==MAX_NUM-1)?printf("\n"):printf(" ; ");}}return 0; }

輸出解釋

請輸入個數:12 請輸入12個非零數字: 2 3 2 1 5 2 4 5 3 2 5 2 本次隊列情況:2* ; 0# ; 0# 本次隊列情況:2* ; 3* ; 0# 本次隊列情況:2* ; 3* ; 0# 本次隊列情況:2* ; 3* ; 1* 本次隊列情況:5* ; 3# ; 1# 本次隊列情況:5* ; 2* ; 1# 本次隊列情況:5* ; 2* ; 4* 本次隊列情況:5* ; 2* ; 4* 本次隊列情況:3* ; 2# ; 4# 本次隊列情況:3* ; 2* ; 4# 本次隊列情況:3* ; 2# ; 5* 本次隊列情況:3* ; 2* ; 5*

*表示還有"免死金牌",#表示沒有"免死金牌"了,結果和書上的一樣,不在解釋了。

總結

CLOCK算法是一個很有意思的算法,最開始想用一個循環雙向鏈表表示的,但是循環雙向鏈表維護起來比較麻煩,我就用一個數組來維護吧。=w=

總結

以上是生活随笔為你收集整理的操作系统学习之用C语言模拟CLOCK算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩一级性| 欧美精品首页 | 少妇又色又紧又爽又刺激视频 | 色一区二区三区四区 | 亚洲爽爆 | 国产在线拍揄自揄拍无码 | 久久在线免费观看视频 | 黄色片子一级 | 欧美一区二区高清视频 | 成人精品三级av在线看 | 国产精品七区 | 夜夜骑狠狠干 | 国产第六页| av免费久久 | 免费观看黄色一级片 | 国产精品无码久久久久久电影 | 成年人国产视频 | 视频福利在线观看 | 日韩免费毛片 | 日本成人免费网站 | 亚洲成人网络 | 国产一区二区久久精品 | 久久av综合网| 日韩av毛片在线观看 | 打开每日更新在线观看 | 日韩电影一区二区三区 | 精品亚洲国产成人av制服丝袜 | 8050午夜一级毛片久久亚洲欧 | 久久久久久久久久一级 | 久久99国产精品久久99果冻传媒 | 精品在线观看一区二区 | 就去色综合 | 日韩欧美精品在线视频 | 麻豆免费观看视频 | 福利在线免费视频 | 欧美精品 日韩 | 无码人妻一区二区三区免费 | 草莓视频在线观看入口w | 青青青青青青青青草 | 久久久久国产 | 国产精品欧美一区二区三区 | 日韩精选视频 | 鲁一鲁一鲁一鲁一av | 在线观看理论片 | 欧美日韩少妇 | ts人妖在线 | 亚洲中文字幕一区二区 | 亚洲热在线观看 | 天天操中文字幕 | avtt在线观看| www.在线| 久久免费一级片 | 人妻丰满熟妇av无码区不卡 | 18禁男女爽爽爽午夜网站免费 | 人妻偷人精品一区二区三区 | 夜夜夜夜爽 | 欧美天天搞 | 三级网站免费看 | 久久久久久一区二区三区 | 蜜臀久久精品久久久用户群体 | 久久思 | 日韩aaaaa | 日韩理论片 | 国产成人精品久久二区二区 | 俄罗斯嫩小性bbwbbw | 依依成人在线视频 | 老熟妇一区二区三区啪啪 | 一区二区91| 三级大片在线观看 | 91干 | 人妻丰满熟妇av无码久久洗澡 | 91桃色网站 | 少妇一区二区三区四区 | av黄色影院| 成人黄色免费在线观看 | 亚洲国产精彩视频 | 高清国产一区二区三区 | 精品乱子伦一区二区 | a级片免费观看 | 中国老熟妇自拍hd发布 | av色区| 一曲二曲三曲在线观看中文字幕动漫 | 日本a级片网站 | 麻豆婷婷 | 国产视频一区二区三区四区五区 | 91福利片| 久久久久无码国产精品一区 | 96日本xxxxxⅹxxx70 | 欧美123区 | 午夜久久久久久久 | 瑟瑟综合 | 欧美亚洲一区二区三区 | 青青草成人网 | 18岁成年人网站 | 亚洲AV无码一区二区伊人久久 | 久久综合久久综合久久综合 | 手机看片1024欧美 | jizzjizz欧美69巨大 | 天天激情综合 |