輸入輸出系統

  • I/O設備:輸入輸出和存儲功能的設備

?

  • I/O設備的分類

按傳輸的速度:

低速設備(如鍵盤、鼠標、語音輸入輸出設備)? 中速設備(如行式打印機、激光打印機等)

高速設備(如磁帶機、磁盤機、光盤機等)。

?

設備按信息交換的單位分類

塊設備:用于存儲信息。對于信息的存取總是以數據塊為單位。典型例子是磁盤。該類設備基本特征是傳輸速率較高,另一特征是可尋址。

字符設備:用于數據的輸入和輸出。基本單位是字符。如交互式終端、打印機等。其基本特征是傳輸速率較低,另一特征是不可尋址。

?

設備按其共享屬性分類

獨占設備:指在一段時間內只允許一個用戶、進程訪問的設備,即臨界資源。應互斥的訪問之。

共享設備:指在一段時間內允許多個進程同時訪問的設備。對每一時刻而言仍然是一個進程訪問。如磁盤。

虛擬設備:指通過虛擬技術將一臺獨占設備變換為若干臺邏輯設備,供若干個用戶(進程)同時使用。

?

設備按其使用特性分類:

存儲設備、輸入\輸出設備

?

  • I/O通道

其主要目的是為了建立獨立的I/O操作,去解放CPU。在設置通道后,CPU只需向通道發送一條I/O指令。通道完成任務后向CPU發中斷信號。

控制功能:CPU與設備控制器

數據傳輸:內存與外設

  • I/O控制方式

  1. 程序I/O方式,使用輪詢的可編程I/O方式。CPU浪費
  2. 終端驅動I/O方式,使用中斷的可編程I/O方式。CPU用較短的時間進行中斷處理。
  3. 直接存儲器訪問方式(MDA),以數據塊為單位,高效。缺點:不連續的數據塊,不能一次處理
  4. I/O通道控制方式,通道時硬件,配合著通道程序
  • 設備分配

  1. 前提:大中型計算機
  2. DS:設備控制表、控制器控制表、通道控制表、系統設備表
  3. 獨占設備分配步驟:分配設備、分配控制器、分配通道
  • SPOOLing技術(假脫機)

定義

為緩和CPU的高速性與I/O設備低速性間的矛盾而引入了脫機輸入、脫機輸出技術。該技術是利用專門的外圍控制機,將低速設備上的數據傳送到高速磁盤上;或者相反。這樣就可以在主機的直接控制下實現脫機輸入輸出。此時外圍操作與CPU對數據的處理同時進行,我們把這種在聯機情況下實現的同時外圍操作稱為SPOOLing(Simultaneaus Periphernal Operating On—Line),或稱為假脫機操作。

?

組成

  1. 輸入井和輸出井。是磁盤上開辟的兩個大存儲空間。輸入井模擬脫機輸入的磁盤設備,輸出井模擬脫機輸出時的磁盤。
  2. 輸入緩沖區和輸出緩沖區。在內存中開辟兩個緩沖區,輸入緩沖區暫存由輸入設備送來的數據,后送輸入井;輸出緩沖區暫存從輸出井送來的數據,后送輸出設備。
  3. 輸入進程和輸出進程。利用兩個進程模擬脫機I/O時的外圍處理機。
  4. 井管理程序。用于控制作業與磁盤井之間信息的交換。

特點

  1. 提高了I/O的速度。利用輸入輸出井模擬成脫機輸入輸出,緩和了CPU和I/O設備速度不匹配的矛盾。
  2. 將獨占設備改造為共享設備。并沒有為進程分配設備,而是為進程分配一存儲區和建立一張I/O請求表。
  3. 實現了虛擬設備功能。多個進程同時使用一臺獨占設備,虛擬成了多臺設備。
    1. 打印機是獨占設備,通過虛擬技術實現“共享”的模擬
  • 緩沖區管理
  1. 引入
    1. 緩和CPU與I/O設備間速度不匹配矛盾。
    2. 減少對CPU的中斷頻率,放寬對CPU中斷響應時間的限制
    3. 提高CPU和I/O設備之間的并行性。

方法

  1. 單緩沖(效率低)
  2. 雙緩沖區(效率比較高,當輸入輸出速度不匹配時效率受影響)
  3. 循環緩沖區(解決輸入和輸出速度相差甚遠的影響)
  4. 緩沖池(解決多進程緩沖過程中內存利用率的問題)
  • 磁盤管理

9個進程先后提出讀盤請求訪問的磁道號為:55;58;39;18;90;160 150 38 184目前磁頭停留在100道。

?

先來先服務(FCFS)

  1. 優點:公平、簡單
  2. 缺點:未對尋道進行優化

?????

?

最短尋道時間優先(SSTF)

  1. 優點:尋道優化
  2. 缺點:可能導致某些進程發生“饑餓”。

??????

?

掃描SCAN算法

  1. 優點:較好的尋道性能
  2. 缺點:“不巧”的進程嚴重推遲

????????

?

循環掃描算法CSCAN

  1. 優點:進程的延遲變小了

?

FSCAN算法本算法是N-Step-SCAN算法的簡化。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/445110.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/445110.shtml
英文地址,請注明出處:http://en.pswp.cn/news/445110.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue2源碼解析---v-model雙向數據綁定

什么是v-model v-model 是 Vue 中的一個指令,用于實現表單元素與 Vue 實例中數據的雙向綁定。這意味著當表單元素的值發生變化時,Vue 實例中的數據也會隨之更新 工作原理 生成ast樹 本質上是語法糖 結合了v-bind和v-on兩個指令 示例代碼 new Vue({e…

php收集的精典代碼

1. οncοntextmenu"window.event.return&#xff06;#118aluefalse" 將徹底屏蔽鼠標右鍵 <table border οncοntextmenureturn(false)><td>no</table> 可用于Table 2. <body onselectstart"return false"> 取消選取、防止復制…

python外卷(7)--glob

glob模塊1.glob.glob()2.對比os.listdir()glob是python自帶的一個操作文件的模塊&#xff0c;可用于查找 指定路徑 中 匹配的 文件。1.glob.glob() 下面是一個測試文件路徑&#xff1a; (base) pppp-System-Product-Name:~/Desktop/test_glob$ tree . ├── a │ ├── 1…

Sublime Text 2配置強大的IDE開發環境,運行java

Sublime Text 2是我無意中發現的、據說十分強大的、便捷的編輯器&#xff0c;許多程序員都投入到Sublime Text 2的懷抱中。 1 配置java開發環境的方法如下&#xff1a; 在jdk安裝目錄下的bin文件夾下新建一個bat格式的文件&#xff0c;文件命為javacexec.bat。 如果是在Wind…

thinkphp的快捷方法實例化對象

D、F、S、C、L、A、I 他們都在functions.php這個文件家 下面我分別說明一下他們的功能 D&#xff08;&#xff09; 加載Model類 M&#xff08;&#xff09; 加載Model類 A&#xff08;&#xff09; 加載Action類 L&#xff08;&#xff09; 獲取語言定義 C&#xff08;&#xf…

Python外卷(8)--pdist, squareform

pdist, squareform1.pdist, squareform使用例子2.通過矩陣的四則運算實現上述pdist, squareformscipy.spatial.distance 距離計算庫中有兩個函數&#xff1a;pdist, squareform&#xff0c;用于計算樣本對之間的歐式距離&#xff0c;并且將樣本間距離用方陣表示出來。&#xff…

模擬進程調度

功能 data.h #ifndef _Data_h_ #define _Data_h_#include <stdio.h> #include <stdlib.h> #include <string.h>#define ElemType PCB #define Status int #define OK 1 #define ERROR 0 #define TimeSlice 1 #define Infinity 10 //INT_MAX#define NAME_M…

gdb調試多進程和多線程命令

1. 默認設置下&#xff0c;在調試多進程程序時GDB只會調試主進程。但是GDB&#xff08;>V7.0&#xff09;支持多進程的 分別以及同時 調試&#xff0c;換句話說&#xff0c;GDB可以同時調試多個程序。只需要設置follow-fork-mode(默認值&#xff1a;parent)和detach-on-fork…

python外卷(10)--取整

"取整"那些事1.python 內置函數1.1int()--向下取整1.2round()--四舍五入2.math模塊取整函數2.1 math.floor()--向下取整2.2 math.ceil()--向上取整2.3 math.modf()--分別取小數部分和整數部分3.numpy模塊取整函數3.1 numpy.floor()--向下取整3.2 numpy.ceil()--向上取…

模擬銀行家算法

介紹 data.h #ifndef _Data_h_ #define _Data_h_#include <stdio.h> #include <stdlib.h> #include <string.h>#define ElemType PCB #define Status int #define true 1 #define false 0 #define OK 1 #define ERROR 0 #define RESOURCE_NUM …

Lua 與 C混合編程 .

本文通過程序實例說明C調用lua腳本和lua調用C的方法: 先建立一個 test.c文件: #include <stdio.h> #include <stdlib.h> #include "lua.h" #include "lualib.h" #include "lauxlib.h" #pragma comment(lib, "lua5.1.lib&qu…

模擬固定分區分配

介紹 data.h #ifndef _Data_h_ #define _Data_h_#include <stdio.h> #include <stdlib.h> #include <string.h> #define LIST_INIT_SIZE 10 #define LISTINCREMENT 2 #define true 1 #define false 0 #define PCBType PCB #define Status int…

Linux下的lua和boost c++的搭建和安裝

先下載lua &#xff0c;boost c http://www.lua.org/versions.html#5.2 http://www.boost.org/ http://sourceforge.net/projects/luabind/ 1. 安裝lua [rootlocalhost ~]#tar zxvf lua-5.1.2.tar.gz -C /usr/local [rootlocalhost ~]# cd /usr/local/ [rootlocalhost lo…

模擬基本分頁存儲

介紹 data.h #ifndef _Data_h_ #define _Data_h_#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h>#define LIST_INIT_SIZE 10 #define LISTINCREMENT 2 #define true 1 #define false 0 #define PCBType PC…

常用正則表達式和shell命令列表

取當前目錄下普通文件的后綴名列表&#xff1a; ls -l | awk /^-/{print $NF} |awk -F. {print $NF}|awk !/^$/ 匹配0和正整數的正則表達式&#xff08;除0以外&#xff0c;其它數字不能以0開頭&#xff09;&#xff1a; (^0$)|(^[0-9]\d*$) 匹配中文字符的正則表達式&#xff…

無限踩坑系列(7)-Latex使用Tips

Latex常用命令1.latex注釋2.圖片左邊對齊3.字母頭上加聲調4.腳注5.公式中加空格6.字體加粗體7.公式換行8.\textsuperscript{*}9.\begin{itemize}10.\operatorname{trace}11.\noindent12.\textcircled{}圓圈數字一些TIPs1.latex注釋 單行使用百分號%注釋 多行使用如下命令,在編…

在CentOS6.2下安裝DNS服務軟件Bind并快速配置簡單實例

[實踐Ok]在CentOS6.2下安裝DNS并快速配置實例&#xff0c;共八步&#xff0c;心路歷程如下&#xff1a;背景介紹&#xff1a;在日常的開發中&#xff0c;往往會在測試機和外網的Http的Url實際接口是不一樣的&#xff0c;在測試機一個Url地址&#xff0c;在外網中又是一個地址。…

模擬動態分區分配

介紹 list.h #ifndef _List_h_ #define _List_h_#include "Data.h"//******* 鏈表 *******// Status InitLinkList(LinkList *L); void PCBAssign(PCBType *e1, PCBType e2); Status GetElemt_L(LinkList L,int i,PCBType *e); Status ListIn…

python模塊(4)-Collections

collections1.collection.counter(list)2.collections.defaultdict()3.collection.dequecollections是Python內建的一個集合模塊&#xff0c;提供了許多有用的集合類。collections在python官方文檔中的解釋是High-performance container datatypes1.collection.counter(list) …

js知識點匯總

1.本門課的作用&#xff08;JavaScript的作用&#xff09;所有基于Web的程序開發基礎 2.一種計算機客戶端腳本語言&#xff0c;主要在Web瀏覽器解釋執行。 3.瀏覽器中Javascript&#xff0c;用于與用戶交互&#xff0c;以及實現頁面中各種動態特效 4.在HTML文件中&#xff0…