wordpress如何建站群百度數(shù)據(jù)分析工具
1.設(shè)備分配時(shí)應(yīng)考慮的因素
①設(shè)備的固有屬性
設(shè)備的固有屬性可分為三種:獨(dú)占設(shè)備、共享設(shè)備、虛擬設(shè)備。
獨(dú)占設(shè)備 | 一個(gè)時(shí)段只能分配給一個(gè)進(jìn)程(如打印機(jī)) |
共享設(shè)備 | 可同時(shí)分配給多個(gè)進(jìn)程使用(如磁盤),各進(jìn)程往往是宏觀上同時(shí)共享使用設(shè)備而微觀上交替使用。 |
虛擬設(shè)備 | 采用 SPOOLing技術(shù)將獨(dú)占設(shè)備改造成虛擬的共享設(shè)備,可同時(shí)分配給多個(gè)進(jìn)程使用(如采用 SPOOLing 技術(shù)實(shí)現(xiàn)的共享打印機(jī)) |
②設(shè)備分配算法
設(shè)備的分配算法:
先來(lái)先服務(wù)
優(yōu)先級(jí)高者優(yōu)先
短任務(wù)優(yōu)先
……
③設(shè)備分配中的安全性
從進(jìn)程運(yùn)行的安全性上考慮,設(shè)備分配有兩種方式:
安全分配方式: | 為進(jìn)程分配一個(gè)設(shè)備后就將進(jìn)程阻塞,本次I/O完成后才將進(jìn)程喚醒。(eg:考慮進(jìn)程請(qǐng)求打印機(jī)打印輸出的例子) | 一個(gè)時(shí)段內(nèi)每個(gè)進(jìn)程只能使用一個(gè)設(shè)備。 優(yōu)點(diǎn):破壞了“請(qǐng)求和保持”條件,不會(huì)死鎖; 缺點(diǎn):對(duì)于一個(gè)進(jìn)程來(lái)說(shuō),CPU和I/O設(shè)備只能串行工作 |
不安全分配方式: | 進(jìn)程發(fā)出I/O請(qǐng)求后,系統(tǒng)為其分配I/O設(shè)備,進(jìn)程可繼續(xù)執(zhí)行,之后還可以發(fā)出新的I/O請(qǐng)求。只有某個(gè)I/O請(qǐng)求得不到滿足時(shí)才將進(jìn)程阻塞。 | 一個(gè)進(jìn)程可以同時(shí)使用多個(gè)設(shè)備 優(yōu)點(diǎn):進(jìn)程的計(jì)算任務(wù)和I0任務(wù)可以并行處理,使進(jìn)程迅速推進(jìn) 缺點(diǎn):有可能發(fā)生死鎖(死鎖避免、死鎖的檢測(cè)和解除) |
2.靜態(tài)分配與動(dòng)態(tài)分配
靜態(tài)分配: | 進(jìn)程運(yùn)行前為其分配全部所需資源,運(yùn)行結(jié)束后歸還資源 | 破壞了“請(qǐng)求和保持”條件,不會(huì)發(fā)生死鎖 |
動(dòng)態(tài)分配: | 進(jìn)程運(yùn)行過(guò)程中動(dòng)態(tài)申請(qǐng)?jiān)O(shè)備資源 |
3.設(shè)備分配管理中的數(shù)據(jù)結(jié)構(gòu)
①設(shè)備控制表(DCT Device Control Table)
系統(tǒng)為每個(gè)設(shè)備配置一張DCT,用于記錄設(shè)備情況
設(shè)備控制表(DCT) | |
設(shè)備類型 | 如:打印機(jī)/掃描儀/鍵盤 |
設(shè)備標(biāo)識(shí)符 | 即物理設(shè)備名,系統(tǒng)中的每個(gè)設(shè)備的物理設(shè)備名唯一 |
設(shè)備狀態(tài) | 忙碌/空閑/故障.. |
指向控制器表的指針 | 每個(gè)設(shè)備由一個(gè)控制器控制,該指針可找到相應(yīng)控制器的信息 |
重復(fù)執(zhí)行次數(shù)或時(shí)間 | 當(dāng)重復(fù)執(zhí)行多次1/0操作后仍不成功,才認(rèn)為此次I/O失敗 |
設(shè)備隊(duì)列的隊(duì)首指針 | 指向正在等待該設(shè)備的進(jìn)程隊(duì)列(由進(jìn)程PCB組成隊(duì)列) |
注:
“進(jìn)程管理”章節(jié)中曾經(jīng)提到過(guò)“系統(tǒng)會(huì)根據(jù)阻塞原因不同,將進(jìn)程PCB掛到不同的阻塞隊(duì)列中”,說(shuō)的就是DCT中的設(shè)備隊(duì)列的隊(duì)尾。
②控制器控制表(COCT )
每個(gè)設(shè)備控制器都會(huì)對(duì)應(yīng)一張COCT。操作系統(tǒng)根據(jù)COCT的信息對(duì)控制器進(jìn)行操作和管理。
控制器控制表(COCT) | |
控制器標(biāo)識(shí)符 | 各個(gè)控制器的唯一ID |
控制器狀態(tài) | 忙碌/空閑/故障. |
指向通道表的指針 | 每個(gè)控制器由一個(gè)通道控制,該指針可找到相應(yīng)通道的信息 |
控制器隊(duì)列的隊(duì)首指針 | |
控制器隊(duì)列的隊(duì)尾指針 | 指向正在等待該控制器的進(jìn)程隊(duì)列(由進(jìn)程PCB組成隊(duì)列) |
③通道控制表(CHCT)
每個(gè)通道都會(huì)對(duì)應(yīng)一張CHCT。操作系統(tǒng)根據(jù)CHCT的信息對(duì)通道進(jìn)行操作和管理。
通道控制表(CHCT) | |
通道標(biāo)識(shí)符 | 各個(gè)通道的唯一ID |
通道狀態(tài) | 忙碌/空閑/故障.. |
與通道連接的控制器表首址 | 可通過(guò)該指針找到該通道管理的所有控制器相關(guān)信息(COCT) |
通道隊(duì)列的隊(duì)首指針 | |
通道隊(duì)列的隊(duì)尾指針 | 指向正在等待該通道的進(jìn)程隊(duì)列(由進(jìn)程PCB組成隊(duì)列) |
④系統(tǒng)設(shè)備表(SDT)
記錄了系統(tǒng)中全部設(shè)備的情況,每個(gè)設(shè)備對(duì)應(yīng)一個(gè)表目。
4.設(shè)備分配的步驟
①根據(jù)進(jìn)程請(qǐng)求的物理設(shè)備名查找SDT(注:物理設(shè)備名是進(jìn)程請(qǐng)求分配設(shè)備時(shí)提供的參數(shù))②根據(jù)SDT找到DCT,若設(shè)備忙碌則將進(jìn)程PCB掛到設(shè)備等待隊(duì)列中,不忙碌則將設(shè)備分配給進(jìn)程。
③根據(jù)DCT找到COCT,若控制器忙碌則將進(jìn)程PCB掛到控制器等待隊(duì)列中,不忙碌則將控制器分配
給進(jìn)程。
④根據(jù)COCT找到CHCT,若通道忙碌則將進(jìn)程PCB掛到通道等待隊(duì)列中,不忙碌則將通道分配給進(jìn)程。
注:只有設(shè)備、控制器、通道三者都分配成功時(shí),這次設(shè)備分配才算成功,之后便可啟動(dòng)I/O設(shè)備進(jìn)行數(shù)據(jù)傳送
缺點(diǎn):
①用戶編程時(shí)必須使用“物理設(shè)備名”,底層細(xì)節(jié)對(duì)用戶不透明,不方便編程
②若換了一個(gè)物理設(shè)備,則程序無(wú)法運(yùn)行
③若進(jìn)程請(qǐng)求的物理設(shè)備正在忙碌,則即使系統(tǒng)中還有同類型的設(shè)備,進(jìn)程也必須阻塞等待
5.設(shè)備分配步驟的政進(jìn)方法
改進(jìn)方法:建立邏輯設(shè)備名與物理設(shè)備名的映射機(jī)制,用戶編程時(shí)只需提供邏輯設(shè)備名
①邏輯設(shè)備表(LUT)
邏輯設(shè)備表(LUT)建立了邏輯設(shè)備名與物理設(shè)備名之間的映射關(guān)系。
某用戶進(jìn)程第一次使用設(shè)備時(shí)使用邏輯設(shè)備名向操作系統(tǒng)發(fā)出請(qǐng)求,操作系統(tǒng)根據(jù)用戶進(jìn)程指定的設(shè)備類型(邏輯設(shè)備名)查找系統(tǒng)設(shè)備表,找到一個(gè)空閑設(shè)備分配給進(jìn)程,并在LUT中增加相應(yīng)表項(xiàng)。
如果之后用戶進(jìn)程再次通過(guò)相同的邏輯設(shè)備名請(qǐng)求使用設(shè)備則操作系統(tǒng)通過(guò)LUT表即可知道用戶進(jìn)程實(shí)際要使用的是哪個(gè)物理設(shè)備了,并且也能知道該設(shè)備的驅(qū)動(dòng)程序入口地址。
邏輯設(shè)備表的設(shè)置問(wèn)題:
整個(gè)系統(tǒng)只有一張LUT: | 各用戶所用的邏輯設(shè)備名不允許重復(fù),適用于單用戶操作系統(tǒng) |
每個(gè)用戶一張LUT: | 不同用戶的邏輯設(shè)備名可重復(fù),適用于多用戶操作系統(tǒng) |
②步驟
①根據(jù)進(jìn)程請(qǐng)求的邏輯設(shè)備名査找SDT(注:用戶編程時(shí)提供的邏輯設(shè)備名其實(shí)就是“設(shè)備類型”
②查找SDT,找到用戶進(jìn)程指定類型的、并且空閑的設(shè)備,將其分配給該進(jìn)程。操作系統(tǒng)在邏輯設(shè)備表(LUT)中新增一個(gè)表項(xiàng)。
③根據(jù)DCT找到COCT,若控制器忙碌則將進(jìn)程PCB掛到控制器等待隊(duì)列中,不忙碌則將控制器分配給進(jìn)程。
④根據(jù)COCT找到CHCT,若通道忙碌則將進(jìn)程PCB掛到通道等待隊(duì)列中,不忙碌則將通道分配給進(jìn)程。