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