版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第六章Linux設(shè)備管理設(shè)備管理概述總線、橋、端口、接口設(shè)備驅(qū)動(dòng)Linux塊設(shè)備管理塊設(shè)備bufferheadbio和bio_vecI/O請(qǐng)求隊(duì)列(Requestqueue)調(diào)度算法deadline、as、cfq、noopLinux其他設(shè)備管理字符設(shè)備網(wǎng)絡(luò)設(shè)備//設(shè)備管理相關(guān)技術(shù)中斷DMA設(shè)備分類(1)輸入設(shè)備、輸出設(shè)備輸入設(shè)備:鍵盤(pán)、鼠標(biāo)輸出設(shè)備:顯示器、打印機(jī)輸入/輸出設(shè)備:磁盤(pán)、網(wǎng)絡(luò)、串口設(shè)備系統(tǒng)設(shè)備與外部設(shè)備系統(tǒng)設(shè)備:系統(tǒng)時(shí)鐘、系統(tǒng)揚(yáng)聲器、總線接口系統(tǒng)設(shè)備的驅(qū)動(dòng)由內(nèi)核本身完成外部設(shè)備:外部設(shè)備的驅(qū)動(dòng)由專門(mén)的驅(qū)動(dòng)程序?qū)崿F(xiàn),以內(nèi)核模塊的方式附加到內(nèi)核中外部設(shè)備可以被安裝和卸載,而系統(tǒng)設(shè)備則不能設(shè)備分類(2)獨(dú)占設(shè)備與共享設(shè)備獨(dú)占設(shè)備:在某一時(shí)間段內(nèi)只能被一個(gè)進(jìn)程所使用的設(shè)備打印機(jī)、終端設(shè)備等共享設(shè)備:允許多個(gè)進(jìn)程同時(shí)使用的設(shè)備。磁盤(pán)等存儲(chǔ)設(shè)備:允許多個(gè)進(jìn)程同時(shí)訪問(wèn)文件,存取文件的數(shù)據(jù)字符設(shè)備與塊設(shè)備字符設(shè)備:終端設(shè)備(顯示器、鍵盤(pán)、鼠標(biāo)等)、打印機(jī)、串口設(shè)備順序訪問(wèn)塊設(shè)備:磁盤(pán)、光盤(pán)、閃存隨即訪問(wèn)塊設(shè)備都是以“文件系統(tǒng)掛載”的方式進(jìn)行訪問(wèn)設(shè)備與系統(tǒng)的接口外部物理設(shè)備無(wú)法直接與CPU相連接的,存在以下差異控制方式不同CPU是數(shù)字化命令,而設(shè)備需要物理信號(hào)來(lái)控制傳輸方式不同CPU以字節(jié)為數(shù)據(jù)傳輸單位,設(shè)備可能以位或者塊為單位速度不匹配設(shè)備的工作速度要比CPU慢許多時(shí)序不一致設(shè)備的定時(shí)控制電路,難以與CPU的時(shí)鐘一致信息形式不同CPU處理信息是數(shù)字的,設(shè)備則可能是模擬的總線、橋、端口、接口Busses,Bridges,Ports,andInterfaces第六章Linux設(shè)備管理設(shè)備管理概述總線、橋、端口、接口設(shè)備驅(qū)動(dòng)Linux塊設(shè)備管理塊設(shè)備bufferheadbio和bio_vecI/O請(qǐng)求隊(duì)列(Requestqueue)調(diào)度算法deadline、as、cfq、noopLinux其他設(shè)備管理字符設(shè)備網(wǎng)絡(luò)設(shè)備/時(shí)鐘設(shè)備/終端設(shè)備設(shè)備管理相關(guān)技術(shù)中斷DMA總線(bus)與橋(bridge)總線(bus)以總線為紐帶,系統(tǒng)板上的部件都通過(guò)總線相連,所有的信號(hào)都要通過(guò)總線進(jìn)行傳輸。aprocessorcommunicateswithitssurroundingdevicesisthroughaseriesofelectricalconnections(line).addressbusdatabuscontrolbus北橋vs.南橋Bridge是兩個(gè)bus之間連接硬件front-sidebus總線(bus)AMDHyperTransportPCIcompatible總線(bus)總線由CPU控制CPU通過(guò)總線訪問(wèn)內(nèi)存和設(shè)備,以及控制在內(nèi)存和設(shè)備之間傳輸數(shù)據(jù)獨(dú)占使用方式總線采用獨(dú)占使用方式,任何設(shè)備若需要直接和內(nèi)存交換數(shù)據(jù),先要申請(qǐng)總線使用權(quán),獲得使用權(quán)后獨(dú)占總線進(jìn)行通信數(shù)據(jù)交換字符設(shè)備CPU與慢速字符設(shè)備交換數(shù)據(jù)時(shí),由CPU控制設(shè)備與內(nèi)存之間的數(shù)據(jù)交換輸入時(shí),CPU從控制器中將數(shù)據(jù)讀到CPU的寄存器中,再寫(xiě)到內(nèi)存單元輸出時(shí),將內(nèi)存數(shù)據(jù)讀到CPU的寄存器中,再寫(xiě)到控制器的數(shù)據(jù)寄存器中塊設(shè)備CPU與某些高速的塊設(shè)備交換數(shù)據(jù)時(shí),以DMA方式進(jìn)行DMA控制器先申請(qǐng)總線使用權(quán),然后控制設(shè)備直接與內(nèi)存?zhèn)鬏敂?shù)據(jù)端口、接口設(shè)備適配器與設(shè)備顯卡vs.顯示器聲卡vs.音響網(wǎng)卡vs.網(wǎng)線設(shè)備適配器(控制器)通過(guò)總線插槽(ISA或PCI等)接入系統(tǒng)總線端口、接口設(shè)備資源I/O設(shè)備與系統(tǒng)通信必須首先獲得一些系統(tǒng)資源I/O端口地址適配器中的每個(gè)I/O端口寄存器都有一個(gè)唯一的地址,一個(gè)適配器所擁有的I/O端口地址的總和稱為該設(shè)備的I/O范圍。如COM1的I/O范圍為0x03f8~0x03ff。中斷申請(qǐng)?zhí)朓RQ設(shè)備申請(qǐng)中斷使用的中斷號(hào)碼緩沖區(qū)地址適配器中的緩沖區(qū)所映射的內(nèi)存地址范圍DMA通道號(hào)設(shè)備申請(qǐng)DMA使用的DMA通道號(hào)碼在安裝設(shè)備時(shí),由系統(tǒng)為適配器分配這些資源,并保證各個(gè)設(shè)備的資源彼此不相沖突。第六章Linux設(shè)備管理設(shè)備管理概述總線、橋、端口、接口設(shè)備驅(qū)動(dòng)Linux塊設(shè)備管理塊設(shè)備bufferheadbio和bio_vecI/O請(qǐng)求隊(duì)列(Requestqueue)調(diào)度算法deadline、as、cfq、noopLinux其他設(shè)備管理字符設(shè)備網(wǎng)絡(luò)設(shè)備/時(shí)鐘設(shè)備/終端設(shè)備設(shè)備管理相關(guān)技術(shù)中斷DMAI/O設(shè)備的軟件結(jié)構(gòu)設(shè)備驅(qū)動(dòng)Thehardwaredevicedriver直接操控底層硬件熟知底層設(shè)備的物理特性registerlocations,I/O,timing,設(shè)備管理方式interrupt,DMA封裝對(duì)物理設(shè)備的操作提供open、close、read、write等操作函數(shù)通用塊設(shè)備驅(qū)動(dòng)"Generic"BlockDriverregister_blkdev(major,dev_name,fops)注冊(cè)structgendisk*alloc_disk(intminors);include/linux/genhd.h創(chuàng)建gendisk結(jié)構(gòu)體blk_init_queue(request_fn_proc,spinlock_t)初始化I/O請(qǐng)求隊(duì)列voidadd_disk(structgendisk*disk);使得內(nèi)核對(duì)該塊設(shè)備可見(jiàn)訪問(wèn)塊設(shè)備DevicedriverregistersitselfatdriverinitializationtimeThisaddsthedrivertothekernel'sdrivertablemappingthedevicenumber/device’sname(每個(gè)設(shè)備被視為一個(gè)文件)totheblock_device_operationsstructure塊設(shè)備–硬盤(pán)扇區(qū)Sector(扇區(qū))512BSector是磁盤(pán)存儲(chǔ)的最小物理單位塊(block)塊(block)由若干個(gè)相鄰的扇區(qū)組成塊是對(duì)存儲(chǔ)空間的邏輯劃分塊是分區(qū)格式化時(shí)指定的“最小存儲(chǔ)單位”Sblock=2kSsector(但小于或等于頁(yè)的大小)常見(jiàn)塊大?。?12B,1KB,4KB說(shuō)明扇區(qū):設(shè)備的最小尋址單位塊:文件系統(tǒng)的最小尋址單位文件系統(tǒng)以塊為單位對(duì)磁盤(pán)進(jìn)行讀/寫(xiě)B(tài)ufferHead結(jié)構(gòu)體(1)bufferThebufferrepresentsadiskblockinmemory當(dāng)磁盤(pán)上的一個(gè)block調(diào)入內(nèi)存時(shí),其存儲(chǔ)在一個(gè)buffer中每個(gè)buffer和一個(gè)block對(duì)應(yīng)一個(gè)page可存儲(chǔ)一個(gè)或多個(gè)blockbuffer_head結(jié)構(gòu)體buffer_head是buffer的描述符記錄了buffer與block對(duì)應(yīng)關(guān)系:來(lái)自哪個(gè)設(shè)備、哪個(gè)block記錄了內(nèi)核操作buffer的所需信息:狀態(tài)、計(jì)數(shù)等Abuffer_headcontainsalltheinformationnecessarytomapaphysicalblocktoabufferinphysicalmemory.Buffer與BufferHead(2)buffer_head結(jié)構(gòu)體(include/linux/buffer_head.hL50)說(shuō)明b_data指向buffer在內(nèi)存的起始地址b_data+b_size即為buffer在內(nèi)存中的結(jié)束地址bio(blockI/O)和bio_vec結(jié)構(gòu)體(1)為了更好地利用內(nèi)存碎片,一個(gè)磁盤(pán)block能否對(duì)應(yīng)多個(gè)不連續(xù)內(nèi)存片段呢?bio_vec來(lái)描述內(nèi)存中的片段(segment),這些segment可位于不同的pagebio被引入用來(lái)描述一個(gè)磁盤(pán)block與多個(gè)內(nèi)存片段對(duì)應(yīng)bio和bio_vec結(jié)構(gòu)體(2)bio結(jié)構(gòu)體(include/linux/bio.hL70)訪問(wèn)塊設(shè)備通用塊設(shè)備層(GenericBlockDeviceLayer)requestqueue請(qǐng)求隊(duì)列RequestQueuesandSchedulingI/OWhenareadorwriterequesttraversesthelayersfromVFS,throughthedriversandpagecache,iteventuallyendsupenteringtheblockdevicedrivertoperformtheactualI/OonthedevicethatholdsthedatarequestedI/O請(qǐng)求隊(duì)列(I/Orequestqueue)每個(gè)塊設(shè)備擁有自己的I/Orequestqueue進(jìn)程在對(duì)requestqueue“更新”前,須先對(duì)該隊(duì)列加“鎖”attemptingtooptimizesthroughputbutdoesnotindefinitelypostponerequests.(吞吐率vs.等待延遲)I/O請(qǐng)求隊(duì)列request_queue結(jié)構(gòu)體(include/linux/blkdev.hL287)字段structlist_headqueue_head;//指向I/O請(qǐng)求隊(duì)列頭structrequest*last_merge;//最近剛合并的請(qǐng)求
elevator_t*elevator;//電梯調(diào)度算法(三者之一)structrequest_listrq;//read請(qǐng)求隊(duì)列和write請(qǐng)求隊(duì)列只要請(qǐng)求隊(duì)列不為空,對(duì)應(yīng)的塊設(shè)備驅(qū)動(dòng)就從隊(duì)列頭獲取請(qǐng)求,然后處理。在Linux2.6內(nèi)核,塊設(shè)備通過(guò)在__init()函數(shù)中調(diào)用request_queue_t*blk_init_queue(request_fn_proc*rfn,spinlock_t*lock)
來(lái)初始化請(qǐng)求隊(duì)列.(drivers/block/ll_rw_blk.cL1505)I/O請(qǐng)求request結(jié)構(gòu)體 (include/linux/blkdev.hL108)
request_queue中的每一項(xiàng)I/O請(qǐng)求用request結(jié)構(gòu)體描述字段structbio*bio;//第一個(gè)biostructbio*biotail;//最后一個(gè)biosector_thard_sector;/*nextsectortocomplete*/unsignedlonghard_nr_sectors;/*no.ofsectorslefttocomplete*/unsignedinthard_cur_sectors;/*no.ofsectorslefttocompleteinthecurrentsegment*/structgendisk*rq_disk;//指向磁盤(pán)unsignedlongstart_time;unsignedinttimeout;說(shuō)明:一個(gè)request可能涉及多個(gè)連續(xù)的磁盤(pán)block,每個(gè)block用一個(gè)bio表示磁盤(pán)上的block必須連續(xù),但在內(nèi)存中并不一定連續(xù),即每個(gè)bio結(jié)構(gòu)體可以組織多個(gè)內(nèi)存segment(每個(gè)segment用bio_vec來(lái)描述)下課了!I/O調(diào)度為什么需要I/O調(diào)度?磁盤(pán)尋址是指將磁頭定位到特定的塊磁盤(pán)尋址是整個(gè)計(jì)算機(jī)中最慢的操作之一想一想:若按request提交的次序響應(yīng)操作,會(huì)怎么樣?磁頭頻繁來(lái)回移動(dòng)(相當(dāng)于電梯為每一個(gè)請(qǐng)求來(lái)回跑),非常耗時(shí)I/OschedulerI/Oscheduler的工作是管理塊設(shè)備的requestqueue決定隊(duì)列中request的排列順序,及派發(fā)request的時(shí)機(jī)目標(biāo):減少全局磁盤(pán)尋址時(shí)間、提高吞吐率為了提高系統(tǒng)整體性能,可能對(duì)某些request不公平法寶:對(duì)request進(jìn)行預(yù)處理合并(merging)和排序(sorting)
I/O調(diào)度排序(sorting)將請(qǐng)求隊(duì)列按照扇區(qū)地址同向方向有序排列新提交的請(qǐng)求可以“插隊(duì)”合并(merging)在磁盤(pán)訪問(wèn)時(shí),若block相鄰的兩個(gè)請(qǐng)求可以合并TheLinusElevator說(shuō)明在Linux2.4中,linuxelevator是默認(rèn)的I/O調(diào)度程序在Linux2.6中,被deadline和as算法替代當(dāng)一個(gè)新request加入隊(duì)列中時(shí)當(dāng)一個(gè)新請(qǐng)求到來(lái)時(shí),先檢查隊(duì)列看能否合并如果隊(duì)列中已存在一個(gè)相鄰磁盤(pán)扇區(qū)操作的請(qǐng)求,則新請(qǐng)求和這個(gè)已存在的請(qǐng)求合并否則,新請(qǐng)求被插入到隊(duì)列中一個(gè)合適的位置按扇區(qū)地址增長(zhǎng)原則,能否插入到兩個(gè)請(qǐng)求之間否則,新請(qǐng)求加入到隊(duì)列尾特殊情況若隊(duì)列中某個(gè)請(qǐng)求等待時(shí)間超過(guò)了一個(gè)閥值(threadhold),新請(qǐng)求被加入到隊(duì)列尾部,防止其他請(qǐng)求饑餓缺點(diǎn):并不能真正地防止饑餓DeadlineI/OScheduler(1)為了消除饑餓,特別是讀請(qǐng)求饑餓,提出了DeadlineI/OSchedulerdrivers/block/deadline-iosched.c區(qū)分readrequest和writerequest的緊迫程度Readrequest:必須和進(jìn)程同步,因?yàn)檫M(jìn)程必須掛起,直到讀操作完成Writerequest:可以和進(jìn)程異步執(zhí)行(但頁(yè)不能讓writereqeust等太久才執(zhí)行)缺省的deadline每個(gè)請(qǐng)求都有一個(gè)超時(shí)時(shí)間(anexpirationtime)Read請(qǐng)求:500mswrite請(qǐng)求:5s三個(gè)隊(duì)列在sortedqueue,請(qǐng)求按磁盤(pán)扇區(qū)地址增長(zhǎng)方向排列在readqueue和writequeue,請(qǐng)求按FIFO排列DeadlineI/OScheduler(2)DeadlineI/OScheduler新請(qǐng)求到來(lái)時(shí)在sortedqueue中進(jìn)行插入或合并以保證sorted
queue中請(qǐng)求按磁盤(pán)扇區(qū)地址增長(zhǎng)方向排列根據(jù)請(qǐng)求類型,按FIFO加入到readqueue或者writequeue的隊(duì)尾處理請(qǐng)求(讀請(qǐng)求優(yōu)先)先檢查readqueue的隊(duì)首元素,若該請(qǐng)求已到期限,則馬上處理若無(wú)read請(qǐng)求到期,則去檢查writequeue的隊(duì)首元素若無(wú)read請(qǐng)求和write請(qǐng)求到期,則按sortedqueue進(jìn)行處理缺點(diǎn):降低了系統(tǒng)吞吐率有可能多次尋址AnticipatoryI/OScheduler(預(yù)測(cè)、期待)AnticipatoryI/Oscheduler目標(biāo)是通過(guò)短暫時(shí)間停滯,期待臨近地址的請(qǐng)求到來(lái),以減少磁頭頻繁來(lái)回尋址attemptstoanticipatewhatthenextoperationisandaimstoimproveI/Othroughput.drivers/block/as-iosched.c
與deadlineI/Oscheduler異同相同點(diǎn)Readqueue,writequeue,sortedqueue對(duì)每個(gè)請(qǐng)求設(shè)置deadline:readrequest500ms,writerequest5s不同點(diǎn)處理完一個(gè)請(qǐng)求后,Anticipatory并不馬上處理其他請(qǐng)求,而是暫停6ms(預(yù)等待期),以等待一個(gè)位置臨近的請(qǐng)求到來(lái)若在預(yù)等待期內(nèi),有一個(gè)臨近區(qū)域的請(qǐng)求到來(lái),則處理該請(qǐng)求過(guò)了預(yù)等待期,則調(diào)度程序回歸正常操作(和deadline調(diào)度一樣)cfq:CompleteFairQueuingI/OScheduler
cfq(完全公平調(diào)度算法)是為特殊任務(wù)設(shè)計(jì)的Roundrobinper-processdiskscheduling
drivers/block/cfq-iosched.c核心思想cfg為每個(gè)進(jìn)程創(chuàng)建一個(gè)I/O請(qǐng)求隊(duì)列在每個(gè)隊(duì)列中,I/O請(qǐng)求按序排列(支持“插隊(duì)”或“合并”)以時(shí)間片輪轉(zhuǎn)調(diào)度進(jìn)程的I/O請(qǐng)求Thisprovidesfairnessataper-processlevel,assuringthateachprocessreceivesafairsliceofthedisk'sbandwidth.說(shuō)明:TheintendedworkloadismultimediacfqisrecommendedfordesktopworkloadsThenoopI/OScheduler(no-operation)no-opI/OSchedulerdrivers/block/noop-iosched.cItisintendedonlyforrandom-accessdevices,e.g.,flashmemorycards.核心思想Noop面向random-accessdevice,故不存在磁頭來(lái)回移動(dòng)問(wèn)題,故無(wú)需使I/Orequest按地址增長(zhǎng)方向排序(無(wú)需插隊(duì))reqeustqueueI/O請(qǐng)求按FIFO排隊(duì)對(duì)地址相鄰的兩個(gè)請(qǐng)求進(jìn)行“合并”故在noop中,請(qǐng)求隊(duì)列是一種near-FIFO(近似FIFO)隊(duì)列說(shuō)明常用于無(wú)磁盤(pán)的嵌入式系統(tǒng)(RAM)I/O調(diào)度算法總結(jié)Linux2.6提供了以上四種塊設(shè)備I/O請(qǐng)求調(diào)度算法在啟動(dòng)階段,可以通過(guò)命令行修改elevator=foo激活新的I/O調(diào)度算法默認(rèn)的磁盤(pán)塊設(shè)備調(diào)度算法桌面系統(tǒng)、多媒體應(yīng)用RAM、嵌入式系統(tǒng)數(shù)據(jù)庫(kù)服務(wù)器、Web服務(wù)器第六章Linux設(shè)備管理設(shè)備管理概述總線、橋、端口、接口設(shè)備驅(qū)動(dòng)Linux塊設(shè)備管理塊設(shè)備bufferheadbio和bio_vecI/O請(qǐng)求隊(duì)列(Requestqueue)調(diào)度算法deadline、as、cfq、noopLinux其他設(shè)備管理字符設(shè)備網(wǎng)絡(luò)設(shè)備/時(shí)鐘設(shè)備/終端設(shè)備設(shè)備管理相關(guān)技術(shù)中斷DMA其他設(shè)備(1)字符設(shè)備(Characterdevice)字符設(shè)備與主機(jī)之間的I/O通過(guò)字符或者字符流例如:keyboard(serialdevices)Blockdevice和characterdevice比較AllLinuxdeviceI/Oisbasedonfiles.AllLinuxdeviceI/OiseithercharacterorblockRandomaccessBlockdevice(Yes)vs.characterdevice(No)請(qǐng)求隊(duì)列(Requestqueue)Blockdevice需要requestqueue,而characterdevice不需要中斷(Interrupt)對(duì)無(wú)buffer的characterdevice來(lái)說(shuō),每接受一個(gè)字符須發(fā)生中斷而對(duì)于Blockdevice而言,一個(gè)數(shù)據(jù)塊才發(fā)生一次中斷其他設(shè)備(2)網(wǎng)絡(luò)設(shè)備(NetworkDevices)NetworkdeviceshaveattributesofbothblockandcharacterdevicesLikeacharacterdevice,atthephysicallevel,dataistransmittedserially.Likeablockdevice,dataispacketizedandmovedtoandfromthenetworkcontrollerviadirectmemoryaccess(DMA).時(shí)鐘設(shè)備(ClockDevices)ClocksareI/Odevicesthatcountthehardwareheartbeatofthesystem.Withouttheconceptofelapsedtime,Linuxwouldceasetofunction.終端設(shè)備(TerminalDevices)tty:sendandreceivetextdata第六章Linux設(shè)備管理設(shè)備管理概述總線、橋、端口、接口設(shè)備驅(qū)動(dòng)Linux塊設(shè)備管理塊設(shè)備bufferheadbio和bio_vecI/O請(qǐng)求隊(duì)列(Requestqueue)調(diào)度算法deadline、as、cfq、noopLinux其他設(shè)備管理字符設(shè)備網(wǎng)絡(luò)設(shè)備/時(shí)鐘設(shè)備/終端設(shè)備設(shè)備管理相關(guān)技術(shù)中斷DMA中斷中斷(interrupt)在計(jì)算機(jī)運(yùn)行期間,當(dāng)系統(tǒng)內(nèi)部或外部發(fā)生了某個(gè)異步事件需要CPU處理時(shí),CPU將暫時(shí)中止當(dāng)前正在執(zhí)行的程序,而轉(zhuǎn)去執(zhí)行相應(yīng)的事件處理程序,待處理完畢后又返回原來(lái)被中斷處,繼續(xù)執(zhí)行或者調(diào)度新的進(jìn)程執(zhí)行,這個(gè)過(guò)程就稱為“中斷”。異步事件指與系統(tǒng)運(yùn)行沒(méi)有時(shí)序關(guān)系的、不可預(yù)期的事件用戶按下鍵盤(pán)按鍵、磁盤(pán)傳輸數(shù)據(jù)完成、系統(tǒng)硬件出現(xiàn)故障等中斷最早應(yīng)用在I/O傳輸過(guò)程中,它使外部設(shè)備和CPU的并行工作成為可能中斷技術(shù)已擴(kuò)大到設(shè)備之外的其他事件凡是需要CPU干涉或處理的異步事件都采用中斷的手段進(jìn)行處理。中斷對(duì)于操作系統(tǒng)的意義重大,它是系統(tǒng)一切并發(fā)活動(dòng)的基礎(chǔ),因而是操作系統(tǒng)最基本的技術(shù)。中斷中斷源與中斷分類引起中斷發(fā)生的事件稱為中斷源。通常中斷源是由硬件產(chǎn)生的信號(hào),通知CPU某個(gè)需要處理的事件例,當(dāng)敲打鍵盤(pán)時(shí),鍵盤(pán)控制器就會(huì)產(chǎn)生一個(gè)鍵盤(pán)中斷源信號(hào)中斷種類I/O中斷:由設(shè)備數(shù)據(jù)傳輸過(guò)程中發(fā)生的中斷屬于I/O中斷時(shí)鐘中斷:周期性的時(shí)鐘中斷其他中斷:由內(nèi)部故障或程序故障引起的“異?!?exception)電源掉電、CPU故障、除數(shù)為0、內(nèi)存溢出、執(zhí)行了陷入指令中斷中斷請(qǐng)求中斷源通過(guò)中斷線送到中斷控制器的輸入端,這稱為中斷請(qǐng)求。中斷控制器一個(gè)硬件裝置,它負(fù)責(zé)捕獲中斷請(qǐng)求,并以一定的方式向CPU提交中斷。競(jìng)爭(zhēng)由于同時(shí)可能會(huì)有多個(gè)中斷信號(hào)產(chǎn)生,它們需要共用有限的中斷控制線。因此,當(dāng)設(shè)備要使用中斷控制線時(shí)就要先進(jìn)行中斷請(qǐng)求(IRQ),以獲得中斷控制線的使用權(quán)。中斷中斷響應(yīng)CPU在收到來(lái)自中斷控制器的中斷信號(hào)后,暫停執(zhí)行當(dāng)前的進(jìn)程,轉(zhuǎn)入相應(yīng)的中斷處理程序進(jìn)行處理,這個(gè)反應(yīng)的過(guò)程稱為中斷響應(yīng)。通常CPU在執(zhí)行完一條指令后,會(huì)檢查有無(wú)中斷請(qǐng)求。如有,則會(huì)立即作出響應(yīng)。由硬件和軟件相結(jié)合的一整套中斷機(jī)構(gòu)實(shí)施中斷響應(yīng)由硬件實(shí)施,中斷處理主要由軟件實(shí)施中斷實(shí)施過(guò)程保存現(xiàn)場(chǎng)中止當(dāng)前進(jìn)程的執(zhí)行,對(duì)被響應(yīng)的中斷進(jìn)行應(yīng)答,保存當(dāng)前進(jìn)程的斷點(diǎn)信息(主要是程序狀態(tài)字PSW和程序計(jì)數(shù)器PC)
中斷處理轉(zhuǎn)到中斷處理程序入口恢復(fù)現(xiàn)場(chǎng)中斷返回中斷中斷處理程序主要由軟件實(shí)施。響應(yīng)中斷后,CPU轉(zhuǎn)去執(zhí)行相應(yīng)的中斷處理程序每個(gè)中斷都對(duì)應(yīng)一個(gè)特定的中斷處理程序如時(shí)鐘中斷處理程序、鍵盤(pán)中斷處理程序等在設(shè)備的驅(qū)動(dòng)程序中包含
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡(luò)編程與服務(wù)器開(kāi)發(fā)技術(shù)考試題目2026年
- 會(huì)計(jì)職稱考試2026年財(cái)務(wù)管理題庫(kù)
- 中小企業(yè)解散清算專項(xiàng)法律服務(wù)工作方案
- 護(hù)士職業(yè)資格考試醫(yī)學(xué)倫理與法規(guī)劃題集2026版
- 2026年管理學(xué)專業(yè)知識(shí)筆試精講
- 企業(yè)解散清算專項(xiàng)法律服務(wù)法律策劃工作方案
- 小學(xué)成語(yǔ)題目及答案
- 護(hù)理安全不良事件的試題及答案
- 文秘工作筆試題及答案
- 艾灸護(hù)理考試題及答案(新版)
- 2026海南安保控股有限責(zé)任公司招聘11人筆試備考試題及答案解析
- 天津市重點(diǎn)名校2026屆高一數(shù)學(xué)第一學(xué)期期末統(tǒng)考試題含解析
- 工程車輛銷售合同范本
- 項(xiàng)目施工策劃培訓(xùn)課件
- 腹壁切口疝教學(xué)課件
- 睡眠監(jiān)測(cè)基礎(chǔ)知識(shí)
- 2025寧德時(shí)代新能源科技股份有限公司招聘?jìng)淇碱}庫(kù)及答案詳解(新)
- GB/T 31897.1-2025燈具性能第1部分:一般要求
- 金融機(jī)構(gòu)反洗錢合規(guī)管理文件模板
- 2025年中國(guó)AGV行業(yè)分析報(bào)告-產(chǎn)業(yè)規(guī)?,F(xiàn)狀與發(fā)展規(guī)劃趨勢(shì)
- 2025年蘇州初中物理真題及答案
評(píng)論
0/150
提交評(píng)論