中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

做承諾的網(wǎng)站上海百度推廣排名

做承諾的網(wǎng)站,上海百度推廣排名,網(wǎng)站制作中動態(tài)展示怎么做,3g版網(wǎng)站制作輸入/輸出(I/O)管理 考綱內(nèi)容 I/O管理基礎(chǔ) 設(shè)備:設(shè)備的基本概念,設(shè)備的分類,I/O接口 I/O控制方式:輪詢方式,中斷方式,DMA方式 I/O軟件層次結(jié)構(gòu):中斷處理程序,驅(qū)動程序,…

輸入/輸出(I/O)管理

考綱內(nèi)容

  • I/O管理基礎(chǔ)
    設(shè)備:設(shè)備的基本概念,設(shè)備的分類,I/O接口
    I/O控制方式:輪詢方式,中斷方式,DMA方式
    I/O軟件層次結(jié)構(gòu):中斷處理程序,驅(qū)動程序,設(shè)備獨(dú)立性軟件,用戶層I/O軟件
    輸入/輸出應(yīng)用程序接口:字符設(shè)備接口,塊設(shè)備接口,網(wǎng)絡(luò)設(shè)備接口,阻塞/非阻塞I/O
  • 設(shè)備獨(dú)立軟件
    緩沖區(qū)管理:設(shè)備分配與回收;假脫機(jī)技術(shù)(SPOOLing);設(shè)備驅(qū)動程序接口
  • 外存管理
    磁盤:磁盤結(jié)構(gòu),格式化,分區(qū),磁盤調(diào)度算法
    固態(tài)硬盤:讀/寫性能特效,磨損均衡

復(fù)習(xí)提示

重點(diǎn)掌握I/O接口、I/O軟件、三種I/O控制方式、高速緩存與緩沖區(qū)、SPOOLing技術(shù),磁盤特性和調(diào)度算法。本章很多知識點(diǎn)與硬件高度相關(guān)

I/O管理概述

I/O設(shè)備

1、設(shè)備的分類

I/O設(shè)備是指**可以將數(shù)據(jù)輸入計(jì)算機(jī)的外部設(shè)備,或者可以接收計(jì)算機(jī)輸出數(shù)據(jù)的外部設(shè)備**

I/O設(shè)備的類型繁多,從不同的?度可將它們分為不同的類型:

信息交換的單位分類

I/O設(shè)備可分為:

  1. 塊設(shè)備。信息交換以**數(shù)據(jù)塊為單位,如磁盤、磁帶等
    磁盤設(shè)備的基本特征是
    傳輸速率較高、可尋址,即對它可隨機(jī)地讀/寫任意一塊**
  2. 字符設(shè)備。信息交換以**字符為單位,如交互式終端機(jī)、打印機(jī)等
    它們的基本特征是
    傳輸速率低、不可尋址,并且時(shí)常采用中斷I/O方式**

設(shè)備的傳輸速率分類

I/O設(shè)備可分為:

  1. 低速設(shè)備。傳輸速率僅為每秒幾字節(jié)到數(shù)百字節(jié),如鍵盤、鼠標(biāo)等
  2. 中速設(shè)備。傳輸速率為每秒數(shù)千字節(jié)至數(shù)萬字節(jié),如激光打印機(jī)等
  3. 高速設(shè)備。傳輸速率在數(shù)百千字節(jié)至千兆字節(jié),如磁盤機(jī)、光盤機(jī)等

設(shè)備的使用特性分類

I/O設(shè)備可分為:

  1. 存儲設(shè)備。用于存儲信息的外部設(shè)備,如磁盤、磁帶、光盤等
  2. 輸入/輸出設(shè)備。又可分為**輸入設(shè)備、輸出設(shè)備和交互式設(shè)備**
    輸入設(shè)備用于向計(jì)算機(jī)輸入外部信息,如鍵盤、鼠標(biāo)、掃描儀等
    輸出設(shè)備用于計(jì)算機(jī)向外輸出數(shù)據(jù)信息,如打印機(jī)等
    交互式設(shè)備則集成了上述兩類設(shè)備的功能,如觸控顯示器等

設(shè)備的共享屬性分類

I/O設(shè)備可分為:

  1. 獨(dú)占設(shè)備同一時(shí)刻只能由一個(gè)進(jìn)程占用的設(shè)備同一時(shí)刻只能由一個(gè)進(jìn)程占用的設(shè)備。一旦將這類設(shè)備分配給某進(jìn)程,便由該進(jìn)程獨(dú)占,直至用完釋放。低速設(shè)備一般是獨(dú)占設(shè)備,如打印機(jī)
  2. 共享設(shè)備。同一時(shí)間段內(nèi)允許多個(gè)進(jìn)程同時(shí)訪問的設(shè)備。對于共享設(shè)備,可同時(shí)分配給多個(gè)進(jìn)程,通過分時(shí)的方式共享使用。典型的共享設(shè)備是磁盤
  3. 虛擬設(shè)備。通過**SPOOLing技術(shù)將獨(dú)占設(shè)備改造為共享設(shè)備,將一個(gè)物理設(shè)備變?yōu)槎鄠€(gè)邏輯設(shè)備**,從而可將設(shè)備同時(shí)分配給多個(gè)進(jìn)程

2、I/O接口

I/O接口(又稱設(shè)備控制器)是**CPU與設(shè)備之間的接口,以實(shí)現(xiàn)設(shè)備和計(jì)算機(jī)之間的數(shù)據(jù)交換**

它接收發(fā)自CPU的命令,控制設(shè)備工作,使CPU能從繁雜的設(shè)備控制事務(wù)中解脫出來。設(shè)備控制器主要由三部分組成:

外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳

  • 設(shè)備控制器與CPU的接口。用于**實(shí)現(xiàn)CPU與設(shè)備控制器之間的通信**
    該接口有三類信號線:數(shù)據(jù)線、地址線和控制線
    數(shù)據(jù)線傳送的是**讀/寫數(shù)據(jù)、控制信息和狀態(tài)信息**
    地址線傳送的是**要訪問I/O接口中的寄存器編號**
    控制線傳送的是**讀/寫等控制信號**
  • 設(shè)備控制器與設(shè)備的接口。一個(gè)設(shè)備控制器可以連接一個(gè)或多個(gè)設(shè)備,因此控制器中有一個(gè)或多個(gè)設(shè)備接口
    每個(gè)接口都可傳輸數(shù)據(jù)、控制和狀態(tài)三種類型的信號
  • I/O邏輯。用于**實(shí)現(xiàn)對設(shè)備的控制**。它通過一組控制線與CPU交互,對從CPU收到的I/O命令進(jìn)行譯碼
    CPU啟動設(shè)備時(shí),將啟動命令發(fā)送給控制器,同時(shí)通過地址線將地址發(fā)送給控制器,由控制器的I/O邏輯對地址進(jìn)行譯碼,并對所選設(shè)備進(jìn)行控制

設(shè)備控制器的主要功能有:

1、接收和識別命令,如磁盤控制器能接收CPU發(fā)來的讀、寫、查找等命令
2、數(shù)據(jù)交換,包括CPU和控制器之間的數(shù)據(jù)傳輸,以及控制器和設(shè)備之間的數(shù)據(jù)傳輸
3、標(biāo)識和報(bào)告設(shè)備的狀態(tài),以供CPU處理
4、地址識別
5、數(shù)據(jù)緩沖
6、差錯控制

3、I/O接口的類型

從不同的?度看,I/O接口可以分為不同的類型:

  • 按**數(shù)據(jù)傳送方式(外設(shè)和接口一側(cè)),可分為并行接口(一個(gè)字節(jié)或者一個(gè)字的所有位同時(shí)傳送)和串行接口**(一位一位地有序傳送),接口要完成數(shù)據(jù)格式的轉(zhuǎn)換
  • 按**主機(jī)訪問I/O設(shè)備的控制方式,可分為程序查詢接口中斷接口DMA接口**等
  • 按**功能選擇的靈活性,可分為可編程接口(通過編程改變接口功能)和不可編程接口**

4、I/O端口

I/O端口是指**設(shè)備控制器中可被CPU直接訪問的寄存器**,主要有以下三類寄存器:

  • 數(shù)據(jù)寄存器用于緩存從設(shè)備送來的輸入數(shù)據(jù),或**從CPU送來的輸出數(shù)據(jù)**
  • 狀態(tài)寄存器保存設(shè)備的執(zhí)行結(jié)果或狀態(tài)信息,以**供CPU讀取**
  • 控制寄存器:由CPU寫入,以便啟動命令或更改設(shè)備模式

I/O端口要想能夠被CPU訪問,就要**對各個(gè)端口進(jìn)行編址,每個(gè)端口對應(yīng)一個(gè)端口地址。而對I/O端口的編址方式有與存儲器獨(dú)立編址統(tǒng)一編址**兩種

外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳

  • 獨(dú)立編址

獨(dú)立編址是指**為每個(gè)端口分配一個(gè)I/O端口號I/O端口的地址空間與主存地址空間是兩個(gè)獨(dú)立的地址空間**,它們的范圍可以重疊,相同地址可能屬于不同的地址空間

普通用戶程序不能對端口進(jìn)行訪問,只有操作系統(tǒng)使用特殊的I/O指令才能訪問端口

優(yōu)點(diǎn):I/O端口數(shù)比主存單元少得多,只需少量地址線,使得**I/O端口譯碼簡單,尋址速度更快。使用專用I/O指令,可使程序更加清晰,便于理解和檢查
缺點(diǎn):I/O指令少,
只提供簡單的傳輸操作,所以程序設(shè)計(jì)的靈活性較差。此外,CPU需要提供兩組獨(dú)立的存儲器和設(shè)備的讀/寫控制信號,增加了控制的復(fù)雜性**

  • 統(tǒng)一編址

統(tǒng)一編址又稱內(nèi)存映射I/O,是指**將主存地址空間分出一部分給I/O端口進(jìn)行編址I/O端口和主存單元在同一地址空間的不同分段中**,用統(tǒng)一的訪存指令就可訪問I/O端口

優(yōu)點(diǎn):不需要專?的I/O指令,使得CPU訪問I/O的操作更加**靈活和方便,還使得端口有較大的編址空間。I/O訪問的保護(hù)機(jī)制可由虛擬存儲管理系統(tǒng)來實(shí)現(xiàn),無須專?設(shè)置
缺點(diǎn):
端口地址占用了部分主存地址空間,使主存的可用容量變小。此外,由于在識別I/O端口時(shí)全部地址線都需參加譯碼,使得譯碼電路更復(fù)雜,降低了尋址速度**

I/O控制方式

I/O控制是指**控制設(shè)備和主機(jī)之間的數(shù)據(jù)傳送**

在I/O控制方式的發(fā)展過程中,始終貫穿著這樣一個(gè)宗旨:盡量減少CPU對I/O控制的干預(yù),將CPU從繁雜的I/O控制事務(wù)中解脫出來,以便其能更多地去執(zhí)行運(yùn)算任務(wù)。I/O控制方式共有4種:

1、程序直接控制方式

CPU對I/O設(shè)備的控制采取**輪詢的I/O方式,又稱程序輪詢方式**

外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳

CPU向設(shè)備控制器發(fā)出一條I/O指令,啟動從I/O設(shè)備讀取一個(gè)字(節(jié)),然后**不斷地循環(huán)測試設(shè)備狀態(tài)(稱為輪詢),直到確定該字(節(jié))已在設(shè)備控制器的數(shù)據(jù)寄存器中**
于是CPU將數(shù)據(jù)寄存器中的數(shù)據(jù)取出,送入內(nèi)存的指定單元,這樣便完成了一個(gè)字(節(jié))的I/O操作

這種方式簡單且易于實(shí)現(xiàn)
但由于在CPU中未采用中斷機(jī)構(gòu),使I/O設(shè)備無法向CPU報(bào)告它已完成了一個(gè)字(節(jié))的輸入操作。因此CPU的絕大部分時(shí)間都處于等待I/O設(shè)備狀態(tài)的循環(huán)測試中,CPU和I/O設(shè)備只能串行工作,由于**CPU和I/O設(shè)備的速度差異很大,導(dǎo)致CPU的利用率相當(dāng)?shù)?/code>**

2、中斷驅(qū)動方式

中斷驅(qū)動方式的思想是:允許I/O設(shè)備主動打斷CPU的運(yùn)行并請求服務(wù),從而“解放”CPU,使得**CPU向設(shè)備控制器發(fā)出一條I/O指令后可以繼續(xù)做其他有用的工作**

外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳

  • 從**設(shè)備控制器的?度**來看:

設(shè)備控制器從CPU接收一個(gè)讀命令,然后從設(shè)備讀數(shù)據(jù)
一旦數(shù)據(jù)讀入設(shè)備控制器的數(shù)據(jù)寄存器,便通過控制線給CPU發(fā)出中斷信號,表示數(shù)據(jù)已準(zhǔn)備好,然后等待CPU請求該數(shù)據(jù)
設(shè)備控制器收到CPU發(fā)出的取數(shù)據(jù)請求后,將數(shù)據(jù)放到數(shù)據(jù)總線上,傳到CPU的寄存器中
至此,本次I/O操作完成,設(shè)備控制器又可開始下一次I/O操作

  • 從**CPU的?度**來看:

當(dāng)前運(yùn)行進(jìn)程發(fā)出讀命令,該進(jìn)程將被阻塞,然后保存該進(jìn)程的上下文,轉(zhuǎn)去執(zhí)行其他程序
在每個(gè)指令周期的末尾,CPU檢查中斷信號。當(dāng)有來自設(shè)備控制器的中斷時(shí),CPU保存當(dāng)前運(yùn)行進(jìn)程的上下文,轉(zhuǎn)去執(zhí)行中斷處理程序以處理該中斷請求。這時(shí),CPU從設(shè)備控制器讀一個(gè)字的數(shù)據(jù)傳送到寄存器,并存入主存
中斷處理完后解除發(fā)出I/O命令的進(jìn)程的阻塞狀態(tài),然后恢復(fù)該進(jìn)程(或其他進(jìn)程)的上下文,然后繼續(xù)運(yùn)行


相比于程序輪詢I/O方式,在中斷驅(qū)動I/O方式中,設(shè)備控制器通過中斷主動向CPU報(bào)告I/O操作已完成,不再需要輪詢,在設(shè)備準(zhǔn)備數(shù)據(jù)期間,CPU和設(shè)備并行工作,CPU的利用率得到明顯提升

但是,中斷驅(qū)動方式仍有兩個(gè)明顯的問題:
1、設(shè)備與內(nèi)存之間的數(shù)據(jù)交換都必須經(jīng)過CPU中的寄存器
2、CPU是以字(節(jié))為單位進(jìn)行干預(yù)的,若將這種方式用于塊設(shè)備的I/O操作,則顯然是極其低效的

因此,中斷驅(qū)動I/O方式的速度仍然受限

3、DMA方式

DMA(直接存儲器存取)方式的基本思想是,在I/O設(shè)備和內(nèi)存之間開辟直接的數(shù)據(jù)交換通路,徹底“解放”CPU

DMA方式的特點(diǎn)如下:

  1. 基本傳送單位是數(shù)據(jù)塊,而不再是字(節(jié))
  2. 所傳送的數(shù)據(jù),是從設(shè)備直接送入內(nèi)存的,或者相反,而不再經(jīng)過CPU
  3. 僅在傳送一個(gè)或多個(gè)數(shù)據(jù)塊的開始和結(jié)束時(shí),才需要CPU干預(yù)

DMA控制器的組成:

外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳

為了實(shí)現(xiàn)主機(jī)和控制器之間直接交換成塊的數(shù)據(jù),須在DMA控制器中設(shè)置如下4類寄存器:

  1. 命令/狀態(tài)寄存器(CR)。接收從CPU發(fā)來的I/O命令、有關(guān)控制信息,或設(shè)備的狀態(tài)
  2. 內(nèi)存地址寄存器(MAR)。在輸入時(shí),它存放將數(shù)據(jù)從設(shè)備傳送到內(nèi)存的起始目標(biāo)地址;在輸出時(shí),它存放由內(nèi)存到設(shè)備的內(nèi)存源地址
  3. 數(shù)據(jù)寄存器(DR)。暫存從設(shè)備到內(nèi)存或從內(nèi)存到設(shè)備的數(shù)據(jù)
  4. 數(shù)據(jù)計(jì)數(shù)器(DC)。存放本次要傳送的字(節(jié))數(shù)

image-20240423203956691

如上所示,DMA方式的工作過程是:

CPU接收到設(shè)備的DMA請求時(shí),它向DMA控制器發(fā)出一條命令,同時(shí)設(shè)置MAR和DC初值,啟動DMA控制器,然后繼續(xù)其他工作
之后CPU就將I/O控制權(quán)交給DMA控制器,由DMA.控制器負(fù)責(zé)數(shù)據(jù)傳送
DMA控制器直接與內(nèi)存交互,每次傳送一個(gè)字,這個(gè)過程不需要CPU參與
整個(gè)數(shù)據(jù)傳送結(jié)束后,DMA控制器向CPU發(fā)送一個(gè)中斷信號

因此**只有在傳送開始和結(jié)束時(shí)才需要CPU的參與**

DMA方式的優(yōu)點(diǎn):數(shù)據(jù)傳輸**以“塊”為單位CPU介入的頻率進(jìn)一步降低;數(shù)據(jù)傳送不再經(jīng)過CPU的寄存器,CPU和設(shè)備的并行操作程度得到了進(jìn)一步提升**

4、通道控制方式

I/O通道是一種特殊的處理機(jī),它可執(zhí)行一系列通道指令

設(shè)置通道后,CPU只需向通道發(fā)送一條I/O指令,指明通道程序在內(nèi)存中的位置和要訪問的I/O設(shè)備,通道收到該指令后,執(zhí)行通道程序,完成規(guī)定的I/O任務(wù)后,向CPU發(fā)出中斷請求

通道方式**可以實(shí)現(xiàn)CPU、通道和I/O設(shè)備三者的并行工作**,從而更有效地提高整個(gè)系統(tǒng)的資源利用率

通道與一般處理機(jī)的區(qū)別是:通道指令的類型單一,沒有自己的內(nèi)存,通道所執(zhí)行的通道程序是放在主機(jī)的內(nèi)存中的,也就是說通道與CPU共享內(nèi)存通道與DMA方式的區(qū)別是:DMA方式需要CPU來控制傳輸?shù)臄?shù)據(jù)塊大小、傳輸?shù)膬?nèi)存位置,而通道方式中這些信息是由通道控制的。另外,每個(gè)DMA控制器對應(yīng)一臺設(shè)備與內(nèi)存?zhèn)鬟f數(shù)據(jù),而一個(gè)通道可以控制多臺設(shè)備與內(nèi)存的數(shù)據(jù)交換

I/O軟件層次結(jié)構(gòu)

I/O軟件涉及的面很寬,往下與硬件有著密切關(guān)系,往上又與虛擬存儲器系統(tǒng)、文件系統(tǒng)和用戶直接交互,它們都需要I/O軟件來實(shí)現(xiàn)I/O操作

為使復(fù)雜的I/O軟件能具有清晰的結(jié)構(gòu)、良好的可移植性和易適應(yīng)性,目前普遍采用**層次式結(jié)構(gòu)的I/O軟件。將系統(tǒng)中的設(shè)備管理模塊分為若干層次,每層都是利用其下層提供的服務(wù)**,完成輸入/輸出功能中的某些子功能,并屏蔽這些功能實(shí)現(xiàn)的細(xì)節(jié),向高層提供服務(wù)

在層次式結(jié)構(gòu)的I/O軟件中,只要層次間的接口不變,對某一層次中的軟件的修改都不會引起其下層或高層代碼的變更,僅最低層才涉及硬件的具體特性

一個(gè)比較合理的層次劃分如下所示:

image-20240424143657310

整個(gè)I/O軟件可以視為具有4個(gè)層次的系統(tǒng)結(jié)構(gòu),各層次及其功能如下:

  • 用戶層軟件

實(shí)現(xiàn)與用戶交互的接口,用戶可直接調(diào)用在用戶層提供的、與I/O操作有關(guān)的庫函數(shù),對設(shè)備進(jìn)行操作
通常大部分的I/O軟件都在操作系統(tǒng)內(nèi)核,但仍有一小部分在用戶層,包括與用戶程序鏈接在一起的庫函數(shù)
用戶層I/O軟件必須通過一組系統(tǒng)調(diào)用來獲取操作系統(tǒng)服務(wù)

  • 設(shè)備獨(dú)立性軟件

用于**實(shí)現(xiàn)用戶程序與設(shè)備驅(qū)動器的統(tǒng)一接口、設(shè)備命名、設(shè)備保護(hù)以及設(shè)備的分配與釋放等,同時(shí)為設(shè)備管理和數(shù)據(jù)傳送提供必要的存儲空間**

設(shè)備獨(dú)立性也稱設(shè)備無關(guān)性,其含義是指**應(yīng)用程序所用的設(shè)備不局限于某個(gè)具體的物理設(shè)備**
為實(shí)現(xiàn)設(shè)備獨(dú)立性而引入了**邏輯設(shè)備物理設(shè)備這兩個(gè)概念
在應(yīng)用程序中,使用邏輯設(shè)備名來請求使用某類設(shè)備
而在系統(tǒng)實(shí)際執(zhí)行時(shí),必須將邏輯設(shè)備名映射成物理設(shè)備名**

使用邏輯設(shè)備名的好處:

增加設(shè)備分配的靈活性
易于實(shí)現(xiàn)I/O重定向所謂I/O重定向,是指用于I/O操作的設(shè)備可以更換(重定向),而不必改變應(yīng)用程序

為了實(shí)現(xiàn)設(shè)備獨(dú)立性,必須再在驅(qū)動程序之上設(shè)置一層設(shè)備獨(dú)立性軟件,設(shè)備獨(dú)立性軟件的主要功能可分為以下兩個(gè)方面:

  1. 執(zhí)行所有設(shè)備的公有操作,包括:對設(shè)備的分配與回收;將邏輯設(shè)備名映射為物理設(shè)備名;對設(shè)備進(jìn)行保護(hù),禁止用戶直接訪問設(shè)備;緩沖管理;差錯控制;提供獨(dú)立于設(shè)備的大小統(tǒng)一的邏輯塊,屏蔽設(shè)備之間信息交換單位大小和傳輸速率的差異
  2. 向用戶層(或文件層)提供統(tǒng)一接口。無論何種設(shè)備,它們向用戶所提供的接口應(yīng)是相同的。例如,對各種設(shè)備的讀/寫操作,在應(yīng)用程序中都統(tǒng)一使用read/write命令等
  • 設(shè)備驅(qū)動程序

與硬件直接相關(guān),負(fù)責(zé)具體實(shí)現(xiàn)系統(tǒng)對設(shè)備發(fā)出的操作指令,驅(qū)動I/O設(shè)備工作的驅(qū)動程序
通常,每類設(shè)備配置一個(gè)設(shè)備驅(qū)動程序,它是I/O進(jìn)程與設(shè)備控制器之間的通信程序,通常以進(jìn)程的形式存在

設(shè)備驅(qū)動程序向上層用戶程序提供一組標(biāo)準(zhǔn)接口,設(shè)備具體的差別被設(shè)備驅(qū)動程序所封裝,用于接收上層軟件發(fā)來的抽象I/O要求,如read/write命令,轉(zhuǎn)換為具體要求后,發(fā)送給設(shè)備控制器,控制I/O設(shè)備工作;它也將由設(shè)備控制器發(fā)來的信號傳送給上層軟件,從而為I/O內(nèi)核子系統(tǒng)隱藏設(shè)備控制器之間的差異

  • 中斷處理程序

用于保存被中斷進(jìn)程的CPU環(huán)境,轉(zhuǎn)入相應(yīng)的中斷處理程序進(jìn)行處理,處理完畢再恢復(fù)被中斷進(jìn)程的現(xiàn)場后,返回到被中斷進(jìn)程

中斷處理層的主要任務(wù)有:進(jìn)行進(jìn)程上下文的切換,對處理中斷信號源進(jìn)行測試,讀取設(shè)備狀態(tài)和修改進(jìn)程狀態(tài)等
由于中斷處理與硬件緊密相關(guān),對用戶而言,應(yīng)盡量加以屏蔽,因此應(yīng)放在操作系統(tǒng)的底層,系統(tǒng)的其余部分盡可能少地與之發(fā)生聯(lián)系


用戶對設(shè)備的一次命令各層次的處理過程

  1. 當(dāng)用戶要讀取某設(shè)備的內(nèi)容時(shí),通過操作系統(tǒng)提供的read命令接口,這就經(jīng)過了**用戶層**
  2. 操作系統(tǒng)提供給用戶使用的接口一般是統(tǒng)一的通用接口,也就是**幾乎每個(gè)設(shè)備都可以響應(yīng)的統(tǒng)一命令,如read命令,用戶發(fā)出的read命令,首先經(jīng)過設(shè)備獨(dú)立層**進(jìn)行解析,然后交往下層
  3. 接下來,不同類型的設(shè)備對read命令的行為有所不同,如磁盤接收read命令后的行為與打印機(jī)接收read命令后的行為是不同的。因此,需要針對不同的設(shè)備,將read命令解析成不同的指令,這就經(jīng)過了**設(shè)備驅(qū)動層**
  4. 命令解析完畢后,需要中斷正在運(yùn)行的進(jìn)程,轉(zhuǎn)而執(zhí)行**read命令,這就需要中斷處理程序**
  5. 最后,命令真正抵達(dá)硬件設(shè)備,硬件設(shè)備的控制器按照上層傳達(dá)的命令操控硬件設(shè)備,完成相應(yīng)的功能

應(yīng)用程序I/O接口

1、I/O接口的分類

在I/O系統(tǒng)與高層之間的接口中,根據(jù)**設(shè)備類型的不同**,又進(jìn)一步分為若干類:

  • 字符設(shè)備接口

字符設(shè)備是指數(shù)據(jù)的存取和傳輸是**以字符為單位**的設(shè)備,如鍵盤、打印機(jī)等

基本特征是**傳輸速率較低不可尋址,并且在輸入/輸出時(shí)通常采用中斷驅(qū)動方式**

getput操作。由于字符設(shè)備不可尋址,只能采取順序存取方式,通常為字符設(shè)備**建立一個(gè)字符緩沖區(qū),用戶程序通過get操作從緩沖區(qū)獲取字符,通過put操作將字符輸出到緩沖區(qū)**

in-control指令。字符設(shè)備類型繁多,差異甚大,因此在接口中提供一種通用的in-control指令來處理它們(包含了許多參數(shù),每個(gè)參數(shù)表示一個(gè)與具體設(shè)備相關(guān)的特定功能)。字符設(shè)備都屬于獨(dú)占設(shè)備,為此接口中還需要提供打開和關(guān)閉操作,以實(shí)現(xiàn)互斥共享

  • 塊設(shè)備接口

塊設(shè)備是指數(shù)據(jù)的存取和傳輸是**以數(shù)據(jù)塊為單位**的設(shè)備,典型的塊設(shè)備是磁盤

基本特征是**傳輸速率較高、可尋址。磁盤設(shè)備的I/O常采用DMA方式**

隱藏了磁盤的二維結(jié)構(gòu)。在二維結(jié)構(gòu)中,每個(gè)扇區(qū)的地址需要用磁道號和扇區(qū)號來表示。塊設(shè)備接口將磁盤的所有扇區(qū)從0n-1依次編號,這樣,就將二維結(jié)構(gòu)變?yōu)橐环N線性序列

將抽象命令映射為低層操作。塊設(shè)備接口支持上層發(fā)來的對文件或設(shè)備的打開、讀、寫和關(guān)閉等抽象命令,該接口將上述命令映射為設(shè)備能識別的較低層的具體操作

內(nèi)存映射接口通過內(nèi)存的字節(jié)數(shù)組來訪問磁盤,而不提供讀/寫磁盤操作。映射文件到內(nèi)存的系統(tǒng)調(diào)用返回包含文件副本的一個(gè)虛擬內(nèi)存地址。只在需要訪問內(nèi)存映像時(shí),才由虛擬存儲器實(shí)際調(diào)?。內(nèi)存映射文件的訪問如同內(nèi)存讀/寫一樣簡單,極大地方便了程序員

  • 網(wǎng)絡(luò)設(shè)備接口

現(xiàn)代操作系統(tǒng)都提供面向網(wǎng)絡(luò)的功能,因此還需要提供相應(yīng)的網(wǎng)絡(luò)軟件和網(wǎng)絡(luò)通信接口,使計(jì)算機(jī)能夠通過網(wǎng)絡(luò)與網(wǎng)絡(luò)上的其他計(jì)算機(jī)進(jìn)行通信或上網(wǎng)瀏覽

許多操作系統(tǒng)提供的網(wǎng)絡(luò)I/O接口網(wǎng)絡(luò)套接字接口,套接字接口的系統(tǒng)調(diào)用使應(yīng)用程序創(chuàng)建的本地套接字連接到遠(yuǎn)程應(yīng)用程序創(chuàng)建的套接字,通過此連接發(fā)送和接收數(shù)據(jù)

2、阻塞I/O和非阻塞I/O

操作系統(tǒng)的I/O接口還涉及兩種模式:阻塞和非阻塞

  • 阻塞I/O

指**當(dāng)用戶進(jìn)程調(diào)用I/O操作時(shí),進(jìn)程就被阻塞,并移到阻塞隊(duì)列,I/O操作完成后,進(jìn)程才被喚醒,移到就緒隊(duì)列**
當(dāng)進(jìn)程恢復(fù)執(zhí)行時(shí),它收到系統(tǒng)調(diào)用的返回值,并繼續(xù)處理數(shù)據(jù)。大多數(shù)操作系統(tǒng)提供的I/O接口都是采用阻塞I/O

優(yōu)點(diǎn):操作簡單,實(shí)現(xiàn)難度低,適合并發(fā)量小的應(yīng)用開發(fā)
缺點(diǎn):I/O執(zhí)行階段進(jìn)程會一直阻塞下去

  • 非阻塞I/O

指**當(dāng)用戶進(jìn)程調(diào)用I/O操作時(shí),不阻塞該進(jìn)程,但進(jìn)程需要不斷詢問I/O操作是否完成,在I/O執(zhí)行階段,進(jìn)程還可以做其他事情**
當(dāng)問到I/O操作完成后,系統(tǒng)將數(shù)據(jù)從內(nèi)核復(fù)制到用戶空間,進(jìn)程繼續(xù)處理數(shù)據(jù)

優(yōu)點(diǎn):進(jìn)程在等待IO期間不會阻塞,可以做其他事情,適合并發(fā)量大的應(yīng)用開發(fā)
缺點(diǎn):輪詢方式詢問I/O結(jié)果,會占用CPU的時(shí)間

本節(jié)小結(jié)

I/O管理要完成哪些功能?

I/O管理需要完成以下4部分內(nèi)容:
狀態(tài)跟蹤。要能實(shí)時(shí)掌握外部設(shè)備的狀態(tài)
設(shè)備存取。要實(shí)現(xiàn)對設(shè)備的存取操作
設(shè)備分配。在多用戶環(huán)境下,負(fù)責(zé)設(shè)備的分配與回收
設(shè)備控制。包括設(shè)備的驅(qū)動、完成和故障的中斷處理

提醒:

共享設(shè)備必須是可尋址的可隨機(jī)訪問的設(shè)備,若不是,則不能保證數(shù)據(jù)的完整性和一致性
DMA主要用于塊設(shè)備,因此磁盤設(shè)備的I/O控制主要采取DMA方式
設(shè)備的固有屬性決定了設(shè)備的使用方式
設(shè)備獨(dú)立性可以提高設(shè)備分配的靈活性和設(shè)備的利用率
設(shè)備安全性可以保證分配設(shè)備時(shí)不會導(dǎo)致永久阻塞
設(shè)備分配時(shí)一般無需考慮及時(shí)性,及時(shí)性是一個(gè)與系統(tǒng)性能和用戶需求相關(guān)的因素,設(shè)備分配時(shí)應(yīng)該考慮的問題是如何再保證系統(tǒng)安全和正確運(yùn)行的前提下,合理地分配和利用設(shè)備資源
系統(tǒng)為每臺設(shè)備確定一個(gè)編號以便區(qū)分和識別設(shè)備的編號稱為絕對號
通道控制設(shè)備控制器、設(shè)備控制器控制設(shè)備工作,三者關(guān)系層層遞進(jìn)
將系統(tǒng)調(diào)用參數(shù)翻譯成設(shè)備操作命令的工作由設(shè)備無關(guān)的操作系統(tǒng)軟件完成
設(shè)備無關(guān)的操作系統(tǒng)軟件是I/O軟件的一部分,它向上層提供系統(tǒng)調(diào)用的接口,根據(jù)設(shè)備類型選擇調(diào)用相應(yīng)的驅(qū)動程序
設(shè)備驅(qū)動程序負(fù)責(zé)執(zhí)行操作系統(tǒng)發(fā)出的I/O命令,因設(shè)備的不同而不同
在程序直接控制方式下,用戶進(jìn)程在I/O過程中不會被阻塞,驅(qū)動程序完成用戶進(jìn)程的I/O請求后才結(jié)束,CPU和I/O操作串行
在中斷控制方式下,驅(qū)動程序啟動第一次I/O操作后,將調(diào)出其他進(jìn)程執(zhí)行,而當(dāng)前用戶進(jìn)程被阻塞,CPU和設(shè)備準(zhǔn)備并行
在DMC方式下,驅(qū)動程序執(zhí)行調(diào)度程序,轉(zhuǎn)其他進(jìn)程執(zhí)行,當(dāng)前用戶進(jìn)程被阻塞時(shí),CPU和是數(shù)據(jù)傳送并行
中斷處理結(jié)束后,是否返回到被中斷的進(jìn)程,有兩種情況:
1、采用的是屏蔽中斷方式(單重中斷),此時(shí)會返回被中斷的進(jìn)程
2、采用的是中斷嵌套方式(多重中斷),若沒有更搞優(yōu)先級的中斷請求,則會返回被中斷的進(jìn)程;否則系統(tǒng)將處理更高優(yōu)先級的中斷請求

設(shè)備獨(dú)立性軟件

設(shè)備獨(dú)立性軟件

也稱與設(shè)備無關(guān)的軟件,是**I/O系統(tǒng)的最高層軟件,它的下層是設(shè)備驅(qū)動程序,其界限因操作系統(tǒng)和設(shè)備的不同而有所差異??傮w而言,設(shè)備獨(dú)立性軟件包括執(zhí)行所有設(shè)備公有操作的軟件**

高速緩存與緩沖區(qū)

1、磁益高速媛存(Disk Cache)

操作系統(tǒng)中**使用磁盤高速緩存技術(shù)來提高磁盤的I/O速度訪問高速緩存比訪問原始磁盤數(shù)據(jù)更為高效**

磁盤高速緩存技術(shù)是指**利用內(nèi)存中的存儲空間來暫存從磁盤中讀出的一系列盤塊中的信息。因此,磁盤高速緩存邏輯上屬于磁盤物理上則是駐留在內(nèi)存中的盤塊**

磁盤高速緩存在內(nèi)存中分為兩種形式:
一種是**在內(nèi)存中開辟一個(gè)單獨(dú)的空間作為緩存區(qū),大小固定**
另一種是**將未利用的內(nèi)存空間作為一個(gè)緩沖池,供請求分?系統(tǒng)和磁盤I/O時(shí)共享**

2、緩沖區(qū)(Buffer)

在設(shè)備管理子系統(tǒng)中,引入緩沖區(qū)的目的主要如下:

  1. 緩和CPU與I/O設(shè)備間速度不匹配的矛盾
  2. 減少對CPU的中斷頻率,放寬對CPU中斷響應(yīng)時(shí)間的限制
  3. 解決基本數(shù)據(jù)單元大小(數(shù)據(jù)粒度)不匹配的問題
  4. 提高CPU和I/O設(shè)備之間的并行性

緩沖區(qū)的實(shí)現(xiàn)方法如下:

  1. 采用硬件緩沖器,但由于成本太高,除一些關(guān)鍵部位外,一般不采用硬件緩沖器
  2. 利用內(nèi)存作為緩沖區(qū)

根據(jù)系統(tǒng)設(shè)置緩沖區(qū)的個(gè)數(shù),緩沖技術(shù)可以分為如下幾種:

  • 單緩沖

每當(dāng)用戶進(jìn)程發(fā)出一個(gè)I/O請求,操作系統(tǒng)便在內(nèi)存中之分配一個(gè)緩沖區(qū)。通常,一個(gè)緩沖區(qū)的大小就是一個(gè)塊

image-20240425104731016

在塊設(shè)備輸入時(shí),假定從設(shè)備將一塊數(shù)據(jù)輸入到緩沖區(qū)的時(shí)間T,操作系統(tǒng)將該緩沖區(qū)中的數(shù)據(jù)傳送到工作區(qū)的時(shí)間M,而CPU對這一塊數(shù)據(jù)進(jìn)行處理的時(shí)間C。注意,必須等緩沖區(qū)沖滿后才能從緩沖區(qū)中取出數(shù)據(jù)

在單緩沖區(qū)中,T是可以和C并行的

當(dāng)T>C時(shí),CPU處理一塊完數(shù)據(jù)后,暫時(shí)不能將下一塊數(shù)據(jù)傳送到工作區(qū),必須等待緩沖區(qū)裝滿數(shù)據(jù),再將下一塊數(shù)據(jù)從緩沖區(qū)傳送到工作區(qū),平均處理一塊數(shù)據(jù)的時(shí)間為T+M
當(dāng)T<C時(shí),緩沖區(qū)中裝滿數(shù)據(jù)后,暫時(shí)不能繼續(xù)送入下一塊數(shù)據(jù),必須等待CPU處理完上一塊數(shù)據(jù),再將下一塊數(shù)據(jù)從緩沖區(qū)傳送到工作區(qū),平均處理一塊數(shù)據(jù)的時(shí)間為C+M
總結(jié):單緩沖區(qū)處理每塊數(shù)據(jù)的平均時(shí)間為Max(C,T)+M

由于緩沖區(qū)是共享資源,因此**使用時(shí)必須互斥**。若CPU尚未取走緩沖區(qū)中的數(shù)據(jù),則即使設(shè)備又生產(chǎn)出新的數(shù)據(jù),也無法將其送入緩沖區(qū),此時(shí)設(shè)備需要等待

  • 雙緩沖

為了加快輸入和輸出速度,提高設(shè)備利用率,引入了雙緩沖機(jī)制,也稱緩沖對換

image-20240425105231633

當(dāng)設(shè)備輸入數(shù)據(jù)時(shí),先將數(shù)據(jù)送入緩沖區(qū)1,裝滿后便轉(zhuǎn)向緩沖區(qū)2
此時(shí),操作系統(tǒng)可以從緩沖區(qū)1中取出數(shù)據(jù),送入用戶進(jìn)程,并由CPU對數(shù)據(jù)進(jìn)行處理
當(dāng)緩沖區(qū)1中取出的數(shù)據(jù)處理完后,若緩沖區(qū)2已沖滿,則操作系統(tǒng)又從緩沖區(qū)2中取出數(shù)據(jù)送入用戶進(jìn)程處理,而設(shè)備又可以開始將數(shù)據(jù)送入緩沖區(qū)1

雙緩沖機(jī)制提高了設(shè)備和CPU的并行程度

設(shè)備輸入數(shù)據(jù)到緩沖區(qū)、數(shù)據(jù)傳送到用戶進(jìn)程和處理的時(shí)間分別為T、MC
在雙緩沖區(qū)中,C和M是可以與T并行的

當(dāng)T>C+M時(shí),說明**設(shè)備輸入的時(shí)間比數(shù)據(jù)傳送和處理的時(shí)間多,可使設(shè)備連續(xù)輸入。假設(shè)在某個(gè)時(shí)刻,緩沖區(qū)1是空的,緩沖區(qū)2是滿的,緩沖區(qū)2開始向工作區(qū)傳送數(shù)據(jù),緩沖區(qū)1開始裝入數(shù)據(jù)。傳送并處理的時(shí)間為C+M,但緩沖區(qū)1還未裝滿,必須等待緩沖區(qū)1裝滿數(shù)據(jù),再將下一塊數(shù)據(jù)從緩沖區(qū)1傳送到工作區(qū),平均處理一塊數(shù)據(jù)的時(shí)間為T
當(dāng)T<C+M時(shí),說明
設(shè)備輸入的時(shí)間比數(shù)據(jù)傳送和處理的時(shí)間少,可使CPU不必等待設(shè)備輸入**。假設(shè)在某個(gè)時(shí)刻,緩沖區(qū)1是空的,緩沖區(qū)2是滿的,緩沖區(qū)2開始向工作區(qū)傳送數(shù)據(jù),緩沖區(qū)1開始裝入數(shù)據(jù)。緩沖區(qū)1裝滿數(shù)據(jù)的用時(shí)為T,必須等待緩沖區(qū)2中的數(shù)據(jù)傳送并處理完后,才能將下一塊數(shù)據(jù)從緩沖區(qū)1傳送到工作區(qū),平均處理一塊數(shù)據(jù)的時(shí)間為C+M
總結(jié):雙緩沖區(qū)處理每塊數(shù)據(jù)的平均時(shí)間為Max(C+M,T)

若兩臺機(jī)器之間僅配置了單緩沖

image-20240425105926292

則它們**在任意時(shí)刻都只能實(shí)現(xiàn)單方向的數(shù)據(jù)傳輸,而絕不允許雙方同時(shí)向?qū)Ψ桨l(fā)送數(shù)據(jù)**

為了實(shí)現(xiàn)雙向數(shù)據(jù)傳輸,必須在兩臺機(jī)器中都設(shè)置兩個(gè)緩沖區(qū),一個(gè)用作發(fā)送緩沖區(qū),另一個(gè)用作接收緩沖區(qū)

image-20240425105934200

注:

在雙緩沖機(jī)制中,當(dāng)輸入與輸出的速度基本匹配時(shí),能取得較好的效果
但若兩者的速度相差甚遠(yuǎn),則雙緩沖區(qū)的效果不會太理想
  • 循環(huán)緩沖

多緩沖機(jī)制,讓多個(gè)緩沖區(qū)組成循環(huán)緩沖區(qū)的形式?;疑硎疽蜒b滿數(shù)據(jù)的緩沖區(qū),白色表示空緩沖區(qū)

image-20240425110216877

循環(huán)緩沖**包含多個(gè)大小相等的緩沖區(qū)**,每個(gè)緩沖區(qū)中有一個(gè)鏈接指針指向下一個(gè)緩沖區(qū),最后一個(gè)緩沖區(qū)指針指向第一個(gè)緩沖區(qū),多個(gè)緩沖區(qū)鏈接成一個(gè)循環(huán)隊(duì)列

循環(huán)緩沖中還需設(shè)置inout兩個(gè)指針,in指向**第一個(gè)可以輸入數(shù)據(jù)的空緩沖區(qū)out指向第一個(gè)可以提取數(shù)據(jù)的滿緩沖區(qū)。輸入/輸出時(shí),in和out指針沿鏈接方向循環(huán)移動**

  • 緩沖池

相比于緩沖區(qū)(僅是一塊內(nèi)存空間),緩沖池是**包含一個(gè)用于管理自身的數(shù)據(jù)結(jié)構(gòu)和一組操作函數(shù)的管理機(jī)制,用于管理多個(gè)緩沖區(qū)。緩沖池可供多個(gè)進(jìn)程共享使用**

緩沖池由多個(gè)系統(tǒng)公用的緩沖區(qū)組成,緩沖區(qū)按其使用狀況可以分為:

  1. 空緩沖隊(duì)列,由空緩沖區(qū)鏈接而成的隊(duì)列
  2. 輸入隊(duì)列,由裝滿輸入數(shù)據(jù)的緩沖區(qū)鏈接而成的隊(duì)列
  3. 輸出隊(duì)列,由裝滿輸出數(shù)據(jù)的緩沖區(qū)所鏈接成的隊(duì)列

此外還應(yīng)具有4種工作緩沖區(qū):

  1. 用于**收容輸入**數(shù)據(jù)的工作緩沖區(qū)(hin)
  2. 用于**提取輸入**數(shù)據(jù)的工作緩沖區(qū)(sin)
  3. 用于**收容輸出**數(shù)據(jù)的工作緩沖區(qū)(hout)
  4. 用于**提取輸出**數(shù)據(jù)的工作緩沖區(qū)(sout)

image-20240425110754792

緩沖池中的緩沖區(qū)有以下4種工作方式:

  1. 收容輸入。輸入進(jìn)程需要輸入數(shù)據(jù)時(shí),從空緩沖隊(duì)列的隊(duì)首摘下一個(gè)空緩沖區(qū),作為收容輸入工作緩沖區(qū),然后**將數(shù)據(jù)輸入其中,裝滿后再將它掛到輸入隊(duì)列的隊(duì)尾**
  2. 提取輸入。計(jì)算進(jìn)程需要輸入數(shù)據(jù)時(shí),從輸入隊(duì)列的隊(duì)首取得一個(gè)緩沖區(qū),作為提取輸入工作緩沖區(qū),從中**提取數(shù)據(jù)用完該數(shù)據(jù)后將它掛到空緩沖隊(duì)列的列尾**
  3. 收容輸出。計(jì)算進(jìn)程需要輸出數(shù)據(jù)時(shí),從空緩沖隊(duì)列的隊(duì)首取得一個(gè)空緩沖區(qū),作為收容輸出工作緩沖區(qū),當(dāng)其中**裝滿數(shù)據(jù)后,再將它掛到輸出隊(duì)列的隊(duì)尾**
  4. 提取輸出。輸出進(jìn)程需要輸出數(shù)據(jù)時(shí),從輸出隊(duì)列的隊(duì)首取得一個(gè)裝滿輸出數(shù)據(jù)的緩沖區(qū),作為提取輸出工作緩沖區(qū),當(dāng)**數(shù)據(jù)提取完后,再將它掛到空緩沖隊(duì)列的隊(duì)尾**

高速緩存與緩沖區(qū)的對比:

高速緩存是**可以保存數(shù)據(jù)拷?的高速存儲器**,訪問高速緩存比訪問原始數(shù)據(jù)更高效,速度更快

image-20240425111412780

設(shè)備分配與回收

1、設(shè)備分配概述

設(shè)備分配是指**根據(jù)用戶的I/O請求分配所需的設(shè)備**
分配的總原則:充分發(fā)揮設(shè)備的使用效率,盡可能地讓設(shè)備忙碌,又要避免由于不合理的分配方法造成進(jìn)程死鎖

2、設(shè)備分配的數(shù)據(jù)結(jié)構(gòu)

在系統(tǒng)中,可能存在多個(gè)通道,每個(gè)通道可以連接多個(gè)控制器,每個(gè)控制器可以連接多個(gè)物理設(shè)備
設(shè)備分配的數(shù)據(jù)結(jié)構(gòu)要能體現(xiàn)出這種從屬關(guān)系,各數(shù)據(jù)結(jié)構(gòu)的介紹如下:

  • 設(shè)備控制表(DCT)

系統(tǒng)為**每個(gè)設(shè)備配置一張DCT**,表中的表項(xiàng)就是設(shè)備的各個(gè)屬性

外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳

在DCT中,應(yīng)該有下列字段:

設(shè)備類型:表示設(shè)備類型,如打印機(jī)、掃描儀、鍵盤等
設(shè)備標(biāo)識符:即物理設(shè)備名,每個(gè)設(shè)備在系統(tǒng)中的物理設(shè)備名是唯一的
設(shè)備狀態(tài):表示當(dāng)前設(shè)備的狀態(tài)(忙/閑)
指向控制器表的指針:每個(gè)設(shè)備由一個(gè)控制器控制,該指針指向?qū)?yīng)的控制器表
重復(fù)執(zhí)行次數(shù)或時(shí)間:重復(fù)執(zhí)行次數(shù)達(dá)到規(guī)定值仍不成功時(shí),才認(rèn)為此次I/O失敗
設(shè)備隊(duì)列的隊(duì)首指針:指向正在等待該設(shè)備的進(jìn)程隊(duì)列(由進(jìn)程PCB組成)的隊(duì)首

注:當(dāng)某個(gè)進(jìn)程釋放某個(gè)設(shè)備,且無其他進(jìn)程請求該設(shè)備時(shí),系統(tǒng)將該設(shè)備DCT中的設(shè)備狀態(tài)改為空閑,即可實(shí)現(xiàn)“設(shè)備回收”

  • 控制器控制表(COCT)

每個(gè)設(shè)備控制器都對應(yīng)一張COCT

image-20240425164137386

操作系統(tǒng)根據(jù)COCT的信息**對控制器進(jìn)行操作和管理每個(gè)控制器由一個(gè)通道控制**,通過表項(xiàng)與控制器連接的通道表指針可以找到相應(yīng)通道的信息

  • 通道控制表(CHCT)

每個(gè)通道都對應(yīng)一張CHCT

image-20240425164252524

操作系統(tǒng)根據(jù)CHCT的信息**對通道進(jìn)行操作和管理。一個(gè)通道可為多個(gè)控制器服務(wù)**,通過表項(xiàng)與通道連接的控制器表首址可以找到該通道管理的所有控制器的信息

  • 系統(tǒng)設(shè)備表(SDT)

整個(gè)系統(tǒng)只有一張SDT

image-20240425164355417

它**記錄已連接到系統(tǒng)中的所有物理設(shè)備的情況每個(gè)物理設(shè)備對應(yīng)一個(gè)表目**

3、設(shè)備分配時(shí)應(yīng)考慮的因素

在多道程序系統(tǒng)中,進(jìn)程數(shù)多于資源數(shù),因此要有一套合理的分配原則,主要考慮的因素有設(shè)備的固有屬性、設(shè)備的分配算法、設(shè)備分配的安全性以及設(shè)備的獨(dú)立性

  • 設(shè)備的固有屬性

設(shè)備的固有屬性可分成三種,對它們應(yīng)采取不同的分配策略:

  1. 獨(dú)占設(shè)備:將它分配給某個(gè)進(jìn)程后,便由該進(jìn)程獨(dú)占,直至進(jìn)程完成或釋放該設(shè)備
  2. 共享設(shè)備:可將它同時(shí)分配給多個(gè)進(jìn)程,需要合理調(diào)度各個(gè)進(jìn)程訪問該設(shè)備的先后次序
  3. 虛擬設(shè)備:虛擬設(shè)備**屬于可共享設(shè)備**,可將它同時(shí)分配給多個(gè)進(jìn)程使用
  • 設(shè)備分配算法

針對設(shè)備分配,通常只采用以下兩種分配算法:

  1. FCFS算法。該算法根據(jù)各個(gè)進(jìn)程對某個(gè)設(shè)備提出請求的先后次序,將這些進(jìn)程**排成一個(gè)設(shè)備請求隊(duì)列,設(shè)備分配程序總是將設(shè)備首先分配給隊(duì)首進(jìn)程**
  2. 最高優(yōu)先級優(yōu)先算法。在用該算法形成設(shè)備隊(duì)列時(shí),優(yōu)先級高的進(jìn)程排在設(shè)備隊(duì)列前面,而**對于優(yōu)先級相同的I/O請求,則按FCFS原則排隊(duì)**
  • 設(shè)備分配中的安全性

設(shè)備分配中的安全性是指**在設(shè)備分配中應(yīng)防止發(fā)生進(jìn)程死鎖**

  1. 安全分配方式
    每當(dāng)進(jìn)程發(fā)出I/O請求后,便進(jìn)入阻塞態(tài),直到其I/O操作完成時(shí)才被喚醒
    這樣,進(jìn)程一旦獲得某種設(shè)備后便會阻塞,不能再請求任何資源,而在它阻塞時(shí)也不保持任何資源
    其優(yōu)點(diǎn)是**設(shè)備分配安全;缺點(diǎn)是CPU和I/O設(shè)備是串行工作的**
  2. 不安全分配方式
    進(jìn)程**在發(fā)出I/O請求后仍繼續(xù)運(yùn)行,需要時(shí)又會發(fā)出第二個(gè)、第三個(gè)I/O請求等
    僅當(dāng)進(jìn)程所請求的設(shè)備已被另一進(jìn)程占用時(shí),才進(jìn)入阻塞態(tài)
    優(yōu)點(diǎn)是
    一個(gè)進(jìn)程可同時(shí)操作多個(gè)設(shè)備,使進(jìn)程推進(jìn)迅速;缺點(diǎn)是有可能造成死鎖**

4、設(shè)備分配的步驟

下面以獨(dú)占設(shè)備為例,介紹設(shè)備分配的過程

  1. 分配設(shè)備。首先根據(jù)I/O請求中的物理設(shè)備名,查找SDT,從中找出該設(shè)備的DCT,再根據(jù)DCT中的設(shè)備狀態(tài)字段,可知該設(shè)備的狀態(tài)。若忙,則將進(jìn)程PCB掛到設(shè)備等待隊(duì)列中;若不忙,則根據(jù)一定的策略將設(shè)備分配給該進(jìn)程
  2. 分配控制器。設(shè)備分配后,根據(jù)DCT找到COCT,查詢控制器的狀態(tài)。若忙,則將進(jìn)程PCB掛到控制器等待隊(duì)列中;若不忙,則將控制器分配給該進(jìn)程
  3. 分配通道??刂破鞣峙浜?#xff0c;根據(jù)COCT找到CHCT,查詢通道的狀態(tài)。若忙,則將進(jìn)程PCB掛到通道等待隊(duì)列中;若不忙,則將通道分配給該進(jìn)程
  4. 只有設(shè)備、控制器和通道都分配成功時(shí),這次的設(shè)備分配才算成功,之后便可啟動設(shè)備進(jìn)行數(shù)據(jù)傳送

在上面的例子中,進(jìn)程是以物理設(shè)備名提出I/O請求的。若指定設(shè)備已分配給其他進(jìn)程,則該進(jìn)程分配失敗,或者說上面的設(shè)備分配程序不具有設(shè)備無關(guān)性。為了獲得設(shè)備的獨(dú)立性,進(jìn)程應(yīng)使用邏輯設(shè)備名。這樣,系統(tǒng)首先從SDT中找出第一個(gè)**該類**設(shè)備的DCT。若該設(shè)備忙,則查找第二個(gè)該類設(shè)備的DCT,僅當(dāng)所有該類設(shè)備都忙時(shí),才將進(jìn)程掛到該類設(shè)備的等待隊(duì)列上。而只要有一個(gè)該類設(shè)備可用,系統(tǒng)便進(jìn)入進(jìn)一步的分配操作

5、邏輯設(shè)備名到物理設(shè)備名的映射

為了**實(shí)現(xiàn)設(shè)備的獨(dú)立性,進(jìn)程中應(yīng)使用邏輯設(shè)備名來請求某類設(shè)備
因?yàn)橄到y(tǒng)只識別物理設(shè)備名,因此在系統(tǒng)中需要配置一張邏輯設(shè)備表,用于
將邏輯設(shè)備名映射為物理設(shè)備名**

**邏輯設(shè)備表(LUT)**的每個(gè)表項(xiàng)中包含3項(xiàng)內(nèi)容:邏輯設(shè)備名、物理設(shè)備名設(shè)備驅(qū)動程序的入口地址
當(dāng)進(jìn)程用邏輯設(shè)備名來請求分配設(shè)備時(shí),系統(tǒng)會為它分配一臺相應(yīng)的物理設(shè)備,并在LUT中建立一個(gè)表目,填上相應(yīng)的信息,當(dāng)以后進(jìn)程再利用該邏輯設(shè)備名請求I/O操作時(shí),系統(tǒng)通過查找LUT來尋找對應(yīng)的物理設(shè)備及其驅(qū)動程序

在系統(tǒng)中,可采取兩種方式設(shè)置邏輯設(shè)備表:

  1. 整個(gè)系統(tǒng)中只設(shè)置一張LUT。所有進(jìn)程的設(shè)備分配情況都記錄在同一張LUT中,這就**要求所有用戶不能使用相同的邏輯設(shè)備名,主要適用于單用戶系統(tǒng)**
  2. 為每個(gè)用戶設(shè)置一張LUT。系統(tǒng)為每個(gè)用戶設(shè)置一張LUT,同時(shí)在多用戶系統(tǒng)中都配置系統(tǒng)設(shè)備表。因此,不同用戶可以使用相同的邏輯設(shè)備名

image-20240425165902736

SPOOLing技術(shù)(假脫機(jī)技術(shù))

為了緩和CPU的高速性與I/O設(shè)備的低速性之間的矛盾,引入了假脫機(jī)技術(shù),它是操作系統(tǒng)中采用的一項(xiàng)**將獨(dú)占設(shè)備改造成共享設(shè)備的技術(shù)**

該技術(shù)利用**專?的外圍控制機(jī),先將低速I/O設(shè)備上的數(shù)據(jù)傳送到高速磁盤上,或者相反**
當(dāng)**CPU需要輸入數(shù)據(jù)時(shí),便可直接從磁盤中讀取數(shù)據(jù);當(dāng)CPU需要輸出數(shù)據(jù)時(shí),也能以很快的速度將數(shù)據(jù)先輸出到磁盤上**

引入多道程序技術(shù)后,系統(tǒng)便**可利用程序來模擬脫機(jī)輸入/輸出時(shí)的外圍控制機(jī),在主機(jī)的直接控制下實(shí)現(xiàn)脫機(jī)輸入/輸出功能**

SPOOLing系統(tǒng)的組成如下所示:

image-20240425170303846

  • 輸入井和輸出井

在**磁盤上**開辟出的兩個(gè)存儲區(qū)域

輸入井模擬脫機(jī)輸入時(shí)的磁盤,用于收容I/O設(shè)備輸入的數(shù)據(jù)
輸出井模擬脫機(jī)輸出時(shí)的磁盤,用于收容用戶程序的輸出數(shù)據(jù)

一個(gè)進(jìn)程的輸入(或輸出)數(shù)據(jù)保存為一個(gè)文件,所有進(jìn)程的輸入(或輸出)文件鏈接成一個(gè)輸入(或輸出)隊(duì)列

  • 輸入緩沖區(qū)和輸出緩沖區(qū)

在**內(nèi)存中**開辟的兩個(gè)緩沖區(qū)

輸入緩沖區(qū)用于暫存由輸入設(shè)備送來的數(shù)據(jù),以后再傳送到輸入井
輸出緩沖區(qū)用于暫存從輸出井送來的數(shù)據(jù),以后再傳送到輸出設(shè)備

起到暫存作用,暫存在內(nèi)存中

  • 輸入進(jìn)程和輸出進(jìn)程

輸入進(jìn)程用于模擬脫機(jī)輸入時(shí)的外圍控制機(jī)將用戶要求的數(shù)據(jù)從輸入設(shè)備傳送到輸入緩沖區(qū),再存放到輸入井中。當(dāng)CPU需要輸入數(shù)據(jù)時(shí),直接從輸入井中讀入內(nèi)存
輸出進(jìn)程用于模擬脫機(jī)輸出時(shí)的外圍控制機(jī)將用戶要求輸入的數(shù)據(jù)從內(nèi)存?zhèn)魉偷捷敵鼍?#xff0c;待輸出設(shè)備空閑時(shí),再將輸出井中的數(shù)據(jù)經(jīng)輸出緩沖區(qū)輸出至輸出設(shè)備

  • 井管理程序

用于控制作業(yè)與磁盤井之間信息的交換

打印機(jī)是典型的獨(dú)占設(shè)備,利用SPOOLing技術(shù)可將它改造為一臺可供多個(gè)用戶共享的打印設(shè)備

當(dāng)多個(gè)用戶進(jìn)程發(fā)出打印輸出請求時(shí),SPOOLing系統(tǒng)同意它們的請求,但并不真正立即將打印機(jī)分配給它們,而由假脫機(jī)管理進(jìn)程為每個(gè)進(jìn)程做如下兩項(xiàng)工作:

  1. 在磁盤緩沖區(qū)中為進(jìn)程申請一個(gè)空閑盤塊,并將要打印的**數(shù)據(jù)送入其中暫存**
  2. 為用戶進(jìn)程**申請一張空白的用戶請求打印表,并將用戶的打印要求填入其中,再將該表掛到假脫機(jī)文件隊(duì)列上**

對每個(gè)用戶進(jìn)程而言,系統(tǒng)并非即時(shí)執(zhí)行真實(shí)的打印操作,而只是即時(shí)將數(shù)據(jù)輸出到緩沖區(qū),這時(shí)的數(shù)據(jù)并未被真正打印,而只讓用戶感覺系統(tǒng)已為它打印,真正的打印操作是在打印機(jī)空閑且該打印任務(wù)在等待隊(duì)列中己排到隊(duì)首時(shí)進(jìn)行的

以上過程用戶是不可?的。雖然系統(tǒng)中只有一臺打印機(jī),但是當(dāng)進(jìn)程提出打印請求時(shí),系統(tǒng)都在輸出井中為其分配一個(gè)緩沖區(qū)(相當(dāng)于分配一臺邏輯設(shè)備),使每個(gè)進(jìn)程都覺得自己正在獨(dú)占一臺打印機(jī),從而實(shí)現(xiàn)對打印機(jī)的共享

SPOOLing系統(tǒng)的特點(diǎn):

  1. 提高了I/O速度,將對低速I/O設(shè)備執(zhí)行的操作演變?yōu)閷Υ疟P緩沖區(qū)中數(shù)據(jù)的存取操作,如同脫機(jī)輸入/輸出一樣,緩和了CPU和低速I/O設(shè)備之間速度不匹配的矛盾
  2. 獨(dú)占設(shè)備改造為共享設(shè)備,在假脫機(jī)打印機(jī)系統(tǒng)中,實(shí)際上并沒有為任何進(jìn)程分配設(shè)備
  3. 實(shí)現(xiàn)了虛擬設(shè)備功能,對每個(gè)進(jìn)程而言,它們都認(rèn)為自己獨(dú)占了一臺設(shè)備

設(shè)備驅(qū)動程序接口

設(shè)備驅(qū)動程序是I/O系統(tǒng)的上層與設(shè)備控制器之間的通信程序,其主要任務(wù)是**接收上層應(yīng)用發(fā)來的抽象I/O請求,如readwrite命令,將它們轉(zhuǎn)換為具體要求后發(fā)送給設(shè)備控制器,進(jìn)而使其啟動設(shè)備去執(zhí)行任務(wù);反之,它也將設(shè)備控制器發(fā)來的信號傳送給上層應(yīng)用**

為了實(shí)現(xiàn)上層應(yīng)用與設(shè)備控制器之間的通信,設(shè)備驅(qū)動程序應(yīng)具有以下功能:

  1. 接收由上層軟件發(fā)來的命令和參數(shù),并**將抽象要求轉(zhuǎn)換為與設(shè)備相關(guān)的具體要求**。例如,將抽象要求中的盤塊號轉(zhuǎn)換為磁盤的盤面號、磁道號及扇區(qū)號
  2. 檢查用戶I/O請求的合法性了解設(shè)備的工作狀態(tài)傳遞與設(shè)備操作有關(guān)的參數(shù)設(shè)置設(shè)備的工作方式
  3. 發(fā)出I/O命令,若設(shè)備**空閑,則立即啟動它,完成指定的I/O操作;若設(shè)備,則將請求者的PCB掛到設(shè)備隊(duì)列上等待**
  4. 及時(shí)響應(yīng)由設(shè)備控制器發(fā)來的中斷請求,并根據(jù)其中斷類型,調(diào)用相應(yīng)的中斷處理程序進(jìn)行處理

相比于普通的應(yīng)用程序和系統(tǒng)程序,設(shè)備驅(qū)動程序具有以下差異:

  1. 設(shè)備驅(qū)動程序?qū)⒊橄蟮腎/O請求轉(zhuǎn)換成具體的I/O操作后,傳送給設(shè)備控制器,并將設(shè)備控制器中記錄的設(shè)備狀態(tài)和I/O操作的完成情況及時(shí)地反饋給請求進(jìn)程
  2. 設(shè)備驅(qū)動程序**與設(shè)備采用的I/O控制方式緊密相關(guān),常用的I/O控制方式是中斷驅(qū)動方式DMA方式**
  3. 設(shè)備驅(qū)動程序**與硬件密切相關(guān),對于不同類型的設(shè)備,應(yīng)配置不同的設(shè)備驅(qū)動程序**
  4. 由于設(shè)備驅(qū)動程序與硬件緊密相關(guān),目前很多設(shè)備驅(qū)動程序的基本部分已固化在ROM中
  5. 設(shè)備驅(qū)動程序應(yīng)**允許同時(shí)多次調(diào)用執(zhí)行**

為了使所有的設(shè)備驅(qū)動程序都有統(tǒng)一的接口:

  • 一方面,要求**每個(gè)設(shè)備驅(qū)動程序與操作系統(tǒng)之間都有相同或相近的接口**,以便更容易地添加一個(gè)新的設(shè)備驅(qū)動程序,同時(shí)更容易地編制設(shè)備驅(qū)動程序
  • 另一方面,要**將抽象的設(shè)備名轉(zhuǎn)換為具體的物理設(shè)備名**,并且進(jìn)一步找到相應(yīng)的設(shè)備驅(qū)動程序入口
  • 此外,還應(yīng)**對設(shè)備進(jìn)行保護(hù),防止無權(quán)訪問的用戶使用設(shè)備**

本節(jié)小結(jié)

當(dāng)處理機(jī)和外部設(shè)備的速度差距較大時(shí),有什么辦法可以解決問題?

可采用緩沖技術(shù)來緩解CPU與外設(shè)速度上的矛盾
即在某個(gè)地方(一般為主存)設(shè)立一片緩沖區(qū),外設(shè)與CPU的輸入/輸出都經(jīng)過緩沖區(qū),這樣外設(shè)和CPU就都不用互相等待

什么是設(shè)備的獨(dú)立性?引入設(shè)備的獨(dú)立性有什么好處?

設(shè)備獨(dú)立性是指用戶在編程序時(shí)使用的設(shè)備與實(shí)際設(shè)備無關(guān)
一個(gè)程序應(yīng)獨(dú)立于分配給它的某類設(shè)備的具體設(shè)備,即在用戶程序中只指明I/O使用的設(shè)備類型即可設(shè)備獨(dú)立性有以下優(yōu)點(diǎn):
1、方便用戶編程
2、使程序運(yùn)行不受具體機(jī)器環(huán)境的限制
3、便于程序移植

提醒:

設(shè)備的獨(dú)立性是指用戶使用設(shè)備的透明性,因此用戶編程時(shí)使用的設(shè)備與實(shí)際使用的設(shè)備無關(guān)
緩沖池是系統(tǒng)的共用資源,可供多個(gè)進(jìn)程共享,并且既能用于輸入,又能用于輸出。一般包含三種類型的緩沖:1、空閑緩沖區(qū);2、裝滿輸入數(shù)據(jù)的緩沖區(qū);3、裝滿輸出數(shù)據(jù)的緩沖區(qū)。為了管理上的方便,可將相同類型的緩沖區(qū)鏈成一個(gè)隊(duì)列
支持雙向發(fā)送和接收數(shù)據(jù)的設(shè)備應(yīng)使用雙緩沖區(qū),雙緩沖區(qū)可以實(shí)現(xiàn)同一時(shí)刻的雙向數(shù)據(jù)傳輸,提高設(shè)備的效率和利用率
單緩沖區(qū)只能實(shí)現(xiàn)單向數(shù)據(jù)傳輸
多緩沖區(qū)和緩沖池是用于提高I/O性能的技術(shù),但不是必須的,也不一定適合所有的雙向設(shè)備
使用單緩沖或雙緩沖進(jìn)行通信時(shí),都可以實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸。單緩沖只是不同時(shí)刻收發(fā)數(shù)據(jù),是可以進(jìn)行雙向傳輸?shù)?在鼠標(biāo)移動式,若有高優(yōu)先級的操作產(chǎn)生,為例記錄鼠標(biāo)活動的情況,必須使用緩沖技術(shù)
由于磁盤驅(qū)動器和目標(biāo)或源I/O設(shè)備間的吞吐量不同,必須采用緩沖技術(shù)
為了能使數(shù)據(jù)從用戶作業(yè)空間傳送到磁盤或從磁盤傳送到用戶作業(yè)空間,必須采用緩沖技術(shù)
單機(jī)資源利用率最關(guān)鍵的資源使處理器資源,最大化地提高處理器利用率就能最大化的提高系統(tǒng)效率
多道程序設(shè)計(jì)技術(shù)使提高處理器利用率的關(guān)鍵技術(shù),而如SPOOLing技術(shù)、虛擬技術(shù)、交換技術(shù)這些都屬于設(shè)備和內(nèi)存的相關(guān)技術(shù)
SPOOLing技術(shù)需要使用磁盤空間(輸入井和輸出井)和內(nèi)存空間(輸入/輸出緩沖區(qū)),不需要外圍計(jì)算機(jī)的支持
SPOOLing系統(tǒng)由預(yù)輸入程序(輸入進(jìn)程和輸入緩沖區(qū))、井管理程序(輸入井和輸出井)和緩輸出程序(輸出進(jìn)程和輸出緩沖區(qū))組成
構(gòu)成SPOOLing系統(tǒng)的基本條件:不僅要有大容量、高速度的外村作為輸入井和輸出井,而且還要有SPOOLing軟件的支持
利用SPOOLing技術(shù)提高了系統(tǒng)和I/O設(shè)備的利用率,不必等待I/O操作完成
SPOOLing技術(shù)將獨(dú)占設(shè)備虛擬成共享設(shè)備,因此必須先有獨(dú)占設(shè)備才行
設(shè)備寄存器寫命令是由設(shè)備驅(qū)動程序完成的
檢查用戶是否有權(quán)使用設(shè)備屬于設(shè)備保護(hù),使由設(shè)備獨(dú)立性軟件完成的
將二進(jìn)制整數(shù)轉(zhuǎn)換成ASCII碼的格式打印時(shí)通過I/O庫函數(shù)完成的,屬于用戶層軟件
緩沖區(qū)管理屬于輸入/輸出的共有操作,是由設(shè)備獨(dú)立性軟件完成的
對I/O設(shè)備傳回的數(shù)據(jù)進(jìn)行分析和緩沖由操作系統(tǒng)完成
設(shè)備驅(qū)動程序的處理過程:
1、將抽象要求轉(zhuǎn)化為具體要求
2、對服務(wù)請求進(jìn)行校驗(yàn)
3、檢查設(shè)備狀態(tài)
4、傳送必要的參數(shù)
5、啟動I/O設(shè)備
計(jì)算柱面號、磁頭號和扇區(qū)號的工作是由設(shè)備驅(qū)動程序完成的
磁盤和內(nèi)存速度差異,決定了可以將內(nèi)存經(jīng)常訪問的文件調(diào)入磁盤緩沖區(qū),高速緩存中復(fù)制的訪問比磁盤I/O的機(jī)械操作要塊很多
SPOOLing利用專門的外圍控制機(jī),將低速I/O設(shè)備上的數(shù)據(jù)傳送到高速磁盤上,或者相反
SPOOLing技術(shù)建立在多道程序設(shè)計(jì)技術(shù)的基礎(chǔ)上,在一個(gè)時(shí)間段內(nèi),輸入進(jìn)程、輸出進(jìn)程是可以和運(yùn)行的作業(yè)進(jìn)程并發(fā)執(zhí)行的
設(shè)備輸入井/輸出井之間數(shù)據(jù)的傳送是由系統(tǒng)實(shí)現(xiàn)的

磁盤和固態(tài)硬盤

磁盤

磁盤通過一個(gè)稱為磁頭的導(dǎo)體線圈從磁盤存取數(shù)據(jù),在讀/寫操作期間,磁頭固定,磁盤在下面高速旋轉(zhuǎn)

image-20240426200709233

磁盤盤面上的數(shù)據(jù)存儲在一組同心圓中,稱磁道。每個(gè)磁道與磁頭一樣寬,一個(gè)盤面有上千個(gè)磁道。磁道又劃分為幾百個(gè)扇區(qū)每個(gè)扇區(qū)固定存儲大小,一個(gè)扇區(qū)稱為一個(gè)盤塊

相鄰磁道及相鄰扇區(qū)間通過一定的間隙分隔開,以避免精度錯誤
由于扇區(qū)按固定圓心?度劃分,所以密度從最外道向里道增加,磁盤的存儲能力受限于最內(nèi)道的最大記錄密度

注:

為了提高磁盤的存儲容量,充分利用磁盤外層磁道的存儲能力,現(xiàn)代磁盤不再將內(nèi)外磁道劃分為相同數(shù)目的扇區(qū),而將盤面劃分為若干環(huán)帶,同一環(huán)帶內(nèi)的所有磁道具有相同的扇區(qū)數(shù),顯然,外層環(huán)帶的磁道擁有較內(nèi)層環(huán)帶的磁道更多的扇區(qū)

磁盤安裝在一個(gè)磁盤驅(qū)動器中,它由磁頭臂、用于旋轉(zhuǎn)磁盤的轉(zhuǎn)軸和用于數(shù)據(jù)輸入/輸出的電子設(shè)備組成:

image-20240426200726068

多個(gè)盤片垂直堆疊,組成磁盤組,每個(gè)盤面對應(yīng)一個(gè)磁頭,所有磁頭固定在一起,與磁盤中心的距離相同且只能共進(jìn)退
所有盤片上相對位置相同的磁道組成柱面
扇區(qū)是磁盤可尋址的最小單位,磁盤上能存儲的物理塊數(shù)目由**扇區(qū)數(shù)、磁道數(shù)及磁盤面數(shù)決定,磁盤地址用柱面號-盤面號-扇區(qū)號**表示

磁盤按不同的方式可分為若干類型:

  1. 固定頭磁盤,磁頭相對于盤片的徑向方向固定,這種磁盤中的每個(gè)磁道有一個(gè)磁頭
  2. 活動頭磁盤,磁頭可移動,磁頭臂可來回伸縮定位磁道
  3. 固定盤磁盤,盤片永久固定在磁盤驅(qū)動器內(nèi)
  4. 可換盤磁盤,盤片可移動和替換

磁盤的管理

1、磁盤初始化

一個(gè)新的磁盤只是一個(gè)磁性記錄材料的空白盤
在磁盤可以存儲數(shù)據(jù)之前,必須將它分成扇區(qū),以便磁盤控制器能夠進(jìn)行讀/寫操作,這個(gè)過程稱為低級格式化(或稱物理格式化)

每個(gè)扇區(qū)通常由頭部、數(shù)據(jù)區(qū)域和尾部組成
頭部和尾部包含了一些磁盤控制器的使用信息,其中**利用磁道號、磁頭號和扇區(qū)號來標(biāo)志一個(gè)扇區(qū)利用CRC字段對扇區(qū)進(jìn)行校驗(yàn)**

2、分區(qū)

在可以使用磁盤存儲文件之前,還要完成兩個(gè)步驟:

  1. 將磁盤分區(qū),每個(gè)分區(qū)由一個(gè)或多個(gè)柱面組成,每個(gè)分區(qū)的起始扇區(qū)和大小都記錄在磁盤主引導(dǎo)記錄的分區(qū)表中
  2. 對物理分區(qū)進(jìn)行邏輯格式化(也稱**高級格式化**),將初始文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)存儲到磁盤上,這些數(shù)據(jù)結(jié)構(gòu)包括空閑空間和已分配空間,以及一個(gè)初始為空的目錄,建立根目錄、對保存空閑磁盤塊信息的數(shù)據(jù)結(jié)構(gòu)進(jìn)行初始化

因扇區(qū)的單位太小,為了提高效率,操作系統(tǒng)將多個(gè)相鄰的扇區(qū)組合在一起,形成一**(在Linux中稱為)
為了更高效地管理磁盤,一簇只能存放一個(gè)文件的內(nèi)容,文件
所占用的空間只能是簇的整數(shù)倍**

3、引導(dǎo)塊

計(jì)算機(jī)啟動時(shí)需要運(yùn)行一個(gè)初始化程序(自舉程序),它初始化CPU、寄存器、設(shè)備控制器和內(nèi)存等,接著啟動操作系統(tǒng)
自舉程序**找到磁盤上的操作系統(tǒng)內(nèi)核,將它加載到內(nèi)存,并轉(zhuǎn)到起始地址,從而開始操作系統(tǒng)的運(yùn)行**。

自舉程序**通常存放在ROM中,為了避免改變自舉代碼而需要改變ROM硬件的問題,通常只在ROM中保留很小的自舉裝入程序,而將完整功能的引導(dǎo)程序保存在磁盤的啟動塊上,啟動塊位于磁盤**的固定位置。具有啟動分區(qū)的磁盤稱為啟動磁盤系統(tǒng)磁盤

引導(dǎo)ROM中的代碼指示磁盤控制器將引導(dǎo)塊讀入內(nèi)存,然后開始執(zhí)行,它可以從非固定的磁盤位置加載整個(gè)操作系統(tǒng),并且開始運(yùn)行操作系統(tǒng)

下面以Windows為例來分析引導(dǎo)過程:

  1. Windows允許將磁盤分為多個(gè)分區(qū),有一個(gè)分區(qū)引導(dǎo)分區(qū),它包含操作系統(tǒng)和設(shè)備驅(qū)動程序
  2. Windows系統(tǒng)將引導(dǎo)代碼存儲在磁盤的第0號扇區(qū),它稱主引導(dǎo)記錄(MBR)
  3. 引導(dǎo)首先運(yùn)行ROM中的代碼,這個(gè)代碼指示系統(tǒng)從MBR中讀取引導(dǎo)代碼
  4. 除了包含引導(dǎo)代碼,MBR還包含一個(gè)磁盤分區(qū)表和一個(gè)標(biāo)志(以指示從哪個(gè)分區(qū)引導(dǎo)系統(tǒng))
  5. 當(dāng)系統(tǒng)找到引導(dǎo)分區(qū)時(shí),讀取分區(qū)的第一個(gè)扇區(qū),稱為引導(dǎo)扇區(qū),并繼續(xù)余下的引導(dǎo)過程,包括加載各種系統(tǒng)服務(wù)

image-20240426203038012

4、壞塊

由于磁盤有移動部件且容錯能力弱,因此容易導(dǎo)致一個(gè)或多個(gè)扇區(qū)損壞。根據(jù)所用的磁盤和控制器,對這些塊有多種處理方式

對于簡單磁盤,如采用IDE控制器的磁盤,壞塊可手動處理,如MS-DOSFormat命令執(zhí)行邏輯格式化時(shí)會掃描磁盤以檢查壞塊。壞塊在FAT表上會標(biāo)明,因此程序不會使用它們

對于復(fù)雜的磁盤,控制器維護(hù)磁盤內(nèi)的壞塊列表。這個(gè)列表在出廠低級格式化時(shí)就已初始化,并在磁盤的使用過程中不斷更新。低級格式化將一些塊保留作為備用,操作系統(tǒng)看不到這些塊??刂破骺梢?*采用備用塊來邏輯地替代壞塊**,這種方案稱為扇區(qū)備用

對壞塊的處理實(shí)質(zhì)上就是用某種機(jī)制使系統(tǒng)不去使用壞塊

磁盤調(diào)度算法

1、磁盤的存取時(shí)間

一次磁盤讀/寫操作的時(shí)間**由尋找(尋道)時(shí)間、旋轉(zhuǎn)延遲時(shí)間和傳輸時(shí)間決定**

  • 尋道時(shí)間Ts

活動頭磁盤在讀/寫信息前,將磁頭移動到目的磁道所需的時(shí)間,這個(gè)時(shí)間除**跨越 n 條磁道的時(shí)間外,還包括啟動磁頭臂的時(shí)間 sm與磁盤驅(qū)動器速度有關(guān)的常數(shù)**(越為2ms)
T s = m ? n + s Ts = m*n+s Ts=m?n+s

  • 旋轉(zhuǎn)延遲時(shí)間Tr

磁頭**定位到要讀/寫扇區(qū)所需的時(shí)間,設(shè)磁盤的旋轉(zhuǎn)速度為 r,有:
T r = 1 / 2 r Tr={1}/{2r} Tr=1/2r
注:
題目中一般是告訴你轉(zhuǎn)速,最好別太依賴公式,最好求一下轉(zhuǎn)一周需要的時(shí)間**

  • 傳輸時(shí)間Tt

從磁盤讀出或向磁盤寫入數(shù)據(jù)所需的時(shí)間,這個(gè)時(shí)間**取決于每次所讀/寫的字節(jié)數(shù) b 和磁盤的旋轉(zhuǎn)速度 rN一個(gè)磁道上的字節(jié)數(shù)**
T t = b / r N Tt=b/rN Tt=b/rN


**總平均存取時(shí)間Ta**可以表示為:
T a = T s + 1 / 2 r + b / r N Ta=Ts+1/2r+b/rN Ta=Ts+1/2r+b/rN
2、磁盤調(diào)度算法

在磁盤的存取時(shí)間中,尋道時(shí)間占大頭,它與磁盤調(diào)度算法密切相關(guān)
延遲時(shí)間和傳輸時(shí)間與磁盤旋轉(zhuǎn)速度線性相關(guān),所以轉(zhuǎn)速是磁盤性能的一個(gè)非常重要的硬件參數(shù),也很難從操作系統(tǒng)層面進(jìn)行優(yōu)化。因此,磁盤調(diào)度的**主要目標(biāo)是減少磁盤的平均尋道時(shí)間**

目前常用的磁盤調(diào)度算法有以下幾種:

  • 先來先服務(wù)(FCFS)算法

FCFS算法**根據(jù)進(jìn)程請求訪問磁盤的先后順序進(jìn)行調(diào)度**,這是一種最簡單的調(diào)度算法

該算法的優(yōu)點(diǎn)是**具有公平性**

若只有少量進(jìn)程需要訪問,且大部分請求都是訪問簇聚的文件扇區(qū),則有望達(dá)到較好的性能
若有大量進(jìn)程競爭使用磁盤,則這種算法在性能上往往接近于隨機(jī)調(diào)度

image-20240426204713403

  • 最短尋道時(shí)間優(yōu)先(SSTF)算法

SSTF算法**每次選擇調(diào)度的是與當(dāng)前磁頭最近的磁道,使每次的尋道時(shí)間最短**

每次選擇最小尋道時(shí)間**并不能保證平均尋道時(shí)間最小,但能提供比FCFS算法更好的性能**

這種算法會產(chǎn)生“饑餓”現(xiàn)象:在某個(gè)磁道附近一直出現(xiàn)新的請求,則離這個(gè)磁道較遠(yuǎn)的磁道將會一直得不到訪問

image-20240426205010360

  • 掃描(SCAN)算法

規(guī)定:只有磁頭移動到最外側(cè)磁道時(shí)才能向內(nèi)移動,移動到最內(nèi)側(cè)磁道時(shí)才能向外移動,這就是SCAN算法的思想
在SSTF算法的基礎(chǔ)上規(guī)定了磁頭移動的方向,由于磁頭移動規(guī)律與電梯運(yùn)行相似,因此又稱電梯調(diào)度算法

image-20240426205142910

SCAN算法**對最近掃描過的區(qū)域不公平,因此它在訪問局部性方面不如FCFS算法和SSTF算法好**

采用SCAN算法時(shí),不但要知道**磁頭的當(dāng)前位置,而且要知道磁頭的移動方向**

  • 循環(huán)掃描(C-SCAN)算法

在SCAN算法的基礎(chǔ)上規(guī)定**磁頭單向移動來提供服務(wù),返回時(shí)直接快速移動至起始端而不服務(wù)任何請求**
由于SCAN算法偏向于處理那些接近最里或最外的磁道的訪問請求,所以使用改進(jìn)型的C-SCAN算法來避免這個(gè)問題

image-20240426205434840


采用SCAN算法和C-SCAN算法時(shí),磁頭總是嚴(yán)格地遵循從盤面的一端到另一端
LOOK調(diào)度和C-LOOK調(diào)度則**磁頭只需移動到最遠(yuǎn)端的一個(gè)請求即可返回,不需要到達(dá)磁盤端點(diǎn)**

image-20240426205721677

注:若無特別說明,也可默認(rèn)SCAN算法和C-SCAN算法為LOK調(diào)度和C-LOOK調(diào)度


以上四種磁盤調(diào)度算法的優(yōu)缺點(diǎn):

image-20240426205817284

3、減少延遲時(shí)間的方法

除減少尋道時(shí)間外,**減少延遲時(shí)間**也是提高磁盤傳輸效率的重要因素

磁盤是連續(xù)自轉(zhuǎn)設(shè)備,磁頭讀入一個(gè)扇區(qū)后,需要經(jīng)過短暫的處理時(shí)間,才能開始讀入下一個(gè)扇區(qū)
若邏輯上相鄰的塊在物理上也相鄰,則讀入幾個(gè)連續(xù)的邏輯塊可能需要很?的延遲時(shí)間
為此,可**對一個(gè)盤面的扇區(qū)進(jìn)行交替編號,即讓邏輯上相鄰的塊物理上保持一定的間隔**,于是讀入多個(gè)連續(xù)塊時(shí)能夠減少延遲時(shí)間

image-20240426210043100

此外,由于磁盤的所有盤面是同步轉(zhuǎn)動的,邏輯塊在相同柱面上也是按盤面號連續(xù)存放的

要讀入不同盤面上的連續(xù)塊,在讀完0號盤7號扇區(qū)后,還需要一段處理時(shí)間,所以當(dāng)磁頭首次劃過1號盤0號扇區(qū)(下一次要讀的塊)時(shí),并不能讀取,只能等磁頭再次劃過該扇區(qū)時(shí)才能讀取
為此,可**對不同的盤面進(jìn)行錯位命名**,則讀入相鄰兩個(gè)盤面的連續(xù)塊時(shí)也能減少延遲時(shí)間

image-20240426210247956

4、提高磁盤I/O速度的方法

磁盤的存取時(shí)間中,尋道時(shí)間和延遲時(shí)間屬于“找”的時(shí)間,凡是“找”的時(shí)間都可以通過一定的方法優(yōu)化,但傳輸時(shí)間是磁盤本身性質(zhì)所決定的,不能通過一定的措施減少

文件的訪問速度是衡量文件系統(tǒng)性能最重要的因素,可從以下三個(gè)方面來優(yōu)化:

  1. 改進(jìn)文件的目錄結(jié)構(gòu)及檢索目錄的方法,以減少對目錄的查找時(shí)間
  2. 選取好的文件存儲結(jié)構(gòu),以提高對文件的訪問速度
  3. 提高磁盤I/O速度,以實(shí)現(xiàn)文件中的數(shù)據(jù)在磁盤和內(nèi)存之間快速傳送

提高磁盤I/O的速度:

  1. 采用磁盤高速緩存
  2. 調(diào)整磁盤請求順序
  3. 提前讀。在讀磁盤當(dāng)前塊時(shí),將下一磁盤塊也讀入內(nèi)存緩沖區(qū)
  4. 延遲寫。僅在緩沖區(qū)首部設(shè)置延遲寫標(biāo)志,然后釋放此緩沖區(qū)并將其鏈入空閑緩沖區(qū)鏈表的尾部,當(dāng)其他進(jìn)程申請到此緩沖區(qū)時(shí),才真正將緩沖區(qū)信息寫入磁盤塊
  5. 優(yōu)化物理塊的分布。除了上面介紹的扇區(qū)編號優(yōu)化,當(dāng)文件采用**鏈接方式和索引方式組織時(shí),應(yīng)盡量將同一個(gè)文件的盤塊安排在一個(gè)磁道上或相鄰的磁道上,以減少尋道時(shí)間。另外,將若干盤塊組成簇,按簇對文件進(jìn)行分配**,也可減少磁頭的平均移動距離
  6. 虛擬盤。是指**用內(nèi)存空間去仿真磁盤,又叫RAM盤。常用于存放臨時(shí)文件**
  7. 采用磁盤陣列RAID。由于可采用并行交叉存取,因此能大幅提高磁盤I/O速度

固態(tài)硬盤

1、固態(tài)硬盤的特性

固態(tài)硬盤(SSD)是一種基于閃存技術(shù)的存儲器,與U盤并無本質(zhì)差別,只是容量更大,存取性能更好

一個(gè)SSD由一個(gè)或多個(gè)**閃存芯片閃存翻譯層**組成

閃存芯片替代傳統(tǒng)磁盤中的機(jī)械驅(qū)動器,
閃存翻譯層將來自CPU的邏輯塊讀/寫請求翻譯成對底層物理設(shè)備的讀/寫控制信號,相當(dāng)于扮演了磁盤控制器的?色

image-20240426211034116

數(shù)據(jù)是**以?為單位讀/寫的。只有在一?所屬的塊整個(gè)被擦除后,才能寫這一?**
不過,一旦一個(gè)塊被擦除,塊中的每?就都可以直接再寫一次
某個(gè)塊進(jìn)行了若干重復(fù)寫后,就會磨損壞,不能再使用

隨機(jī)寫很慢,有兩個(gè)原因:

  1. 擦除塊比較慢,通常比訪問?高一個(gè)數(shù)量級
  2. 如果寫操作試圖修改一個(gè)包含已有數(shù)據(jù)的? Pi ,那么這個(gè)塊中所有含有用數(shù)據(jù)的?都必須被復(fù)制到一個(gè)新(擦除過的)塊中,然后才能進(jìn)行對? Pi 的寫操作

比起傳統(tǒng)磁盤,SSD有很多優(yōu)點(diǎn):它由半導(dǎo)體存儲器構(gòu)成,沒有移動的部件,因此隨機(jī)訪問速度比機(jī)械磁盤要快很多,也沒有任何機(jī)械噪聲和震動,能耗更低、抗震性好、安全性高等

2、磨損均衡

固態(tài)硬盤也有缺點(diǎn),閃存的擦寫壽命是有限的,讀/寫數(shù)據(jù)時(shí)會集中在SSD的一部分閃存,一旦這部分閃存損壞,整塊SSD也就損壞了,為了彌補(bǔ)SSD的壽命缺陷,引入了磨損均衡

SSD磨損均衡技術(shù)大致分為兩種:

  1. 動態(tài)磨損均衡。寫入數(shù)據(jù)時(shí),自動選擇較新的閃存塊。老的閃存塊先歇一歇
  2. 靜態(tài)磨損均衡。這種技術(shù)更為先進(jìn),就算沒有數(shù)據(jù)寫入,SSD也會監(jiān)測并自動進(jìn)行數(shù)據(jù)分配,讓老的閃存塊承擔(dān)無須寫數(shù)據(jù)的存儲任務(wù),同時(shí)讓較新的閃存塊騰出空間,平常的讀/寫操作在較新的閃存塊中進(jìn)行。如此一來,各閃存塊的壽命損耗就都差不多

本節(jié)小結(jié)

在磁盤上進(jìn)行一次讀/寫操作需要哪幾部分時(shí)間?其中哪部分時(shí)間最??

在磁盤上進(jìn)行一次讀/寫操作花費(fèi)的時(shí)間由尋道時(shí)間、延遲時(shí)間和傳輸時(shí)間決定
尋道時(shí)間是將磁頭移動到指定磁道所需要的時(shí)間
延遲時(shí)間是磁頭定位到某一磁道的扇區(qū)(塊號)所需要的時(shí)間
傳輸時(shí)間是從磁盤讀出或向磁盤寫入數(shù)據(jù)所經(jīng)歷的時(shí)間一般來說,尋道時(shí)間因?yàn)橐苿哟蓬^臂,所以占用時(shí)間最?

存儲一個(gè)文件時(shí),當(dāng)一個(gè)磁道存儲不下時(shí),剩下部分是存在同一個(gè)盤面的不同磁道好,還是存在同一個(gè)柱面上的不同盤面好?

尋道時(shí)間對于一次磁盤訪問的影響是最大的,若存在同一個(gè)盤面的不同磁道,則磁頭臂勢必要移動,這樣會大大增加文件的訪向時(shí)間,而存在同一個(gè)柱面上的不同盤面就不需要移動磁道,所以一般情況下存在同一個(gè)柱面上的不同盤面更好

提醒:

磁盤是可共享設(shè)備(分時(shí)共享),是指某段時(shí)間內(nèi)可以有多個(gè)用戶進(jìn)行訪問。但某一時(shí)刻只能有一個(gè)作業(yè)可以訪問
磁盤調(diào)度中,對讀/寫時(shí)間影響最大的是尋找時(shí)間,尋找過程為機(jī)械運(yùn)動,時(shí)間較長,影響較大
硬盤的操作系統(tǒng)引導(dǎo)扇區(qū)產(chǎn)生在對硬盤進(jìn)行高級格式化時(shí)。對于高級格式化。操作系統(tǒng)將初始的文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)存儲到磁盤上
磨損均衡機(jī)制的目的是鹽城固態(tài)硬盤的壽命
當(dāng)系統(tǒng)中總是持續(xù)存在某個(gè)磁道的訪問請求時(shí),均持續(xù)慢速最短存到時(shí)間優(yōu)先、掃描算法和循環(huán)掃描算法的訪問條件,會一直服務(wù)該訪問請求,盡管系統(tǒng)中還存在其他磁道的訪問請求,但卻得不到響應(yīng)。而先來先服務(wù)請求次序進(jìn)行調(diào)度,比較公平

疑難點(diǎn)

為了增加設(shè)備分配的靈活性、成功率,可以如何改進(jìn)?

可以從以下兩方面對基本的設(shè)備分配程序加以改進(jìn):
1、增加設(shè)備的獨(dú)立性。進(jìn)程使用邏輯設(shè)備名請求I/O。這樣,系統(tǒng)首先從SDT中找出第一個(gè)該類設(shè)備的DCT。若該設(shè)備忙,則又查找第二個(gè)該類設(shè)備的DCT。僅當(dāng)所有該類設(shè)備都忙時(shí),才將進(jìn)程掛到該類設(shè)備的等待隊(duì)列上;只要有一個(gè)該類設(shè)備可用,系統(tǒng)便進(jìn)一步計(jì)算分配該設(shè)備的安全性
2、考慮多通路情況。為防止I/O系統(tǒng)的“瓶頸”現(xiàn)象,通常采用多通路的I/O系統(tǒng)結(jié)構(gòu)。此時(shí)對控制器和通道的分配同樣要經(jīng)過幾次反復(fù),即若設(shè)備(控制器)所連接的第一個(gè)控制器(通道)忙時(shí),則應(yīng)查看其所連接的第二個(gè)控制器(通道),僅當(dāng)所有控制器(通道)都忙時(shí),此次的控制器(通道)分配才算失敗,才將進(jìn)程掛到控制器(通道)的等待隊(duì)列上。而只要有一個(gè)控制器(通道)可用,系統(tǒng)便可將它分配給進(jìn)程設(shè)備分配過程中,先后分別訪問的數(shù)據(jù)結(jié)構(gòu)為:SDT -> DCT -> COCT -> CHCT
要成功分配一個(gè)設(shè)備,必須要:1、設(shè)備可用;2、控制器可用;3、通道可用

什么是用戶緩沖區(qū)、內(nèi)核緩沖區(qū)?

“內(nèi)核”其實(shí)是指內(nèi)核緩沖區(qū),“用戶空間”是指用戶緩沖區(qū)用戶緩沖區(qū)是指當(dāng)用戶進(jìn)程讀文件時(shí),通常先申請一塊內(nèi)存數(shù)組,稱為Buffer,用來存放讀取的數(shù)據(jù)
每次read調(diào)用,將讀取的數(shù)據(jù)寫入Bufter,之后程序都從Bufter中獲取數(shù)據(jù),當(dāng)Buffer使用完后,再進(jìn)行下一次調(diào)用,填充Buffer
可?,用戶緩沖區(qū)的目的是減少系統(tǒng)調(diào)用次數(shù),從而降低系統(tǒng)在用戶態(tài)與核心態(tài)之間切換的開銷內(nèi)核也有自己的緩沖區(qū)
當(dāng)用戶進(jìn)程從磁盤讀取數(shù)據(jù)時(shí),不直接讀磁盤,而將內(nèi)核緩沖區(qū)中的數(shù)據(jù)復(fù)制到用戶緩沖區(qū)中
若內(nèi)核緩沖區(qū)中沒有數(shù)據(jù),則內(nèi)核請求從磁盤讀取,然后將進(jìn)程掛起,為其他進(jìn)程服務(wù),等到數(shù)據(jù)已讀取到內(nèi)核緩沖區(qū)中時(shí),將內(nèi)核緩沖區(qū)中的數(shù)據(jù)復(fù)制到用戶進(jìn)程的緩沖區(qū),才通知進(jìn)程(當(dāng)然,I/O模型不同,處理的方式也不同)
當(dāng)用戶進(jìn)程需要寫數(shù)據(jù)時(shí),數(shù)據(jù)可能不直接寫入磁盤,而將數(shù)據(jù)寫入內(nèi)核緩沖區(qū),時(shí)機(jī)適當(dāng)時(shí)(如內(nèi)核緩沖區(qū)的數(shù)據(jù)積累到一定量后),內(nèi)核才將內(nèi)核緩沖區(qū)的數(shù)據(jù)寫入磁盤
可?,內(nèi)核緩沖區(qū)是為了在操作系統(tǒng)級別提高磁盤I/O效率,優(yōu)化磁盤寫操作
http://www.risenshineclean.com/news/4932.html

相關(guān)文章:

  • 百度網(wǎng)站排名全掉軟件開發(fā)定制
  • 寫論文的好網(wǎng)站寧波網(wǎng)站建設(shè)網(wǎng)站排名優(yōu)化
  • 免費(fèi)的網(wǎng)站推廣在線推廣百度seo新站優(yōu)化
  • 網(wǎng)站怎樣做多語言切換做app的網(wǎng)站
  • 廣西柳州網(wǎng)站建設(shè)安陽企業(yè)網(wǎng)站優(yōu)化外包
  • 微信微網(wǎng)站教程電商運(yùn)營推廣是做什么的
  • 合肥網(wǎng)站制作聯(lián)系方式策劃方案怎么做
  • 零基礎(chǔ)學(xué)網(wǎng)站建設(shè)seo優(yōu)化快速排名技術(shù)
  • 石家莊電子商城網(wǎng)站建設(shè)鄭州網(wǎng)站關(guān)鍵詞排名
  • 重慶營銷型網(wǎng)站建設(shè)多少錢如何制作簡單的網(wǎng)頁鏈接
  • 張家港做網(wǎng)站優(yōu)化排名seo的優(yōu)化方案
  • 有沒有專業(yè)幫忙做ppt的網(wǎng)站近期發(fā)生的重大新聞
  • wordpress清理修訂seo百度首頁排名業(yè)務(wù)
  • 網(wǎng)站建設(shè)合集網(wǎng)絡(luò)營銷的主要手段和策略
  • 網(wǎng)站建設(shè)課的感想百度惠生活怎么做推廣
  • 長安鎮(zhèn)網(wǎng)站建設(shè)公司自媒體視頻剪輯培訓(xùn)班
  • 網(wǎng)站手機(jī)端和電腦端seo零基礎(chǔ)入門到精通200講
  • 數(shù)字營銷公司淘寶關(guān)鍵詞怎么優(yōu)化
  • 模板網(wǎng)站建設(shè)咨詢百度網(wǎng)頁版首頁
  • 寧波營銷型網(wǎng)站建設(shè)百度站長工具數(shù)據(jù)提交
  • 貴陽手機(jī)網(wǎng)站制作全國免費(fèi)發(fā)布廣告信息平臺
  • wp網(wǎng)站建設(shè)教程公司域名注冊查詢
  • 高端網(wǎng)站建設(shè)服務(wù)商seo外包費(fèi)用
  • 建店前期網(wǎng)站開通怎么做分錄百度推廣官方投訴電話
  • poedit wordpress無錫seo優(yōu)化
  • 院系網(wǎng)站建設(shè)網(wǎng)絡(luò)產(chǎn)品運(yùn)營與推廣
  • 一級a做爰片就在線手機(jī)看韓國網(wǎng)站軟件制作平臺
  • 中小型網(wǎng)站建設(shè)新聞全國各城市感染高峰進(jìn)度查詢
  • 東莞貿(mào)易公司寮步網(wǎng)站建設(shè)價(jià)格百度關(guān)鍵詞點(diǎn)擊排名
  • 比較公司網(wǎng)站與營銷網(wǎng)站的不同武威網(wǎng)站seo