版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2013數(shù)據(jù)庫系統(tǒng)工程師考點知識精講一第一篇:計算機數(shù)據(jù)庫系統(tǒng)知識計算機系統(tǒng)由硬件系統(tǒng)和軟件系統(tǒng)組成。硬件由運算器、控制器、存儲器、輸入設(shè)備、輸出設(shè)備5部分組成;軟件由系統(tǒng)軟件、應(yīng)用軟件組成。運算器:對數(shù)據(jù)進行處理的部件,主要完成算術(shù)和邏輯運算;控制器:從主存中取出指令,并指出下一條指令在主存中的位置,取出的指令經(jīng)指令寄存器送往指令譯碼器,經(jīng)過對指令的分析發(fā)出相應(yīng)的控制和定時信息;1.控制器的組成部分為:程序計數(shù)器;指令寄存器;指令譯碼器;狀態(tài)條件寄存器;時序產(chǎn)生器;微信號發(fā)生器。計算機硬件的典型結(jié)構(gòu):單總線、雙總線(以cpu為中心、以存儲器為中心)、采用通道的大型系統(tǒng)。2、二、八、十、十六進制間的轉(zhuǎn)換方法。十進制轉(zhuǎn)換成二進制:十進制整數(shù)轉(zhuǎn)換成二進制整數(shù)通常采用除2取余法,小數(shù)部分乘2取整法。例如,將30D轉(zhuǎn)換成二進制數(shù)。2|30…0----最右位215…127…123…11…1----最左位∴30D=11110B八、十六進制轉(zhuǎn)二進制方法類似。二進制數(shù)轉(zhuǎn)換成八進制數(shù):對于整數(shù),從低位到高位將二進制數(shù)的每三位分為一組,若不夠三位時,在高位左面添0,補足三位,然后將每三
位二進制數(shù)用一位八進制數(shù)替換,小數(shù)部分從小數(shù)點開始,自左向右每三位一組進行轉(zhuǎn)換即可完成。例如:將二進制數(shù)1101001轉(zhuǎn)換成八進制數(shù),則001101001B|||151O1101001B=151O八進制數(shù)轉(zhuǎn)換成二進制數(shù):只要將每位八進制數(shù)用三位二進制數(shù)替換,即可完成轉(zhuǎn)換,例如,把八進制數(shù)(643.503)8,轉(zhuǎn)換成二進制數(shù),則(643.503)8||||||(110100011.101000011)2(643.503)8=(110100011.101000011)2二進制與十六進制之間的轉(zhuǎn)換(1)二進制數(shù)轉(zhuǎn)換成十六進制數(shù):由于2的4次方=16,所以依照二進制與八進制的轉(zhuǎn)換方法,將二進制數(shù)的每四位用一個十六進制數(shù)碼來表示,整數(shù)部分以小數(shù)點為界點從右往左每四位一組轉(zhuǎn)換,小數(shù)部分從小數(shù)點開始自左向右每四位一組進行轉(zhuǎn)換。(2)十六進制轉(zhuǎn)換成二進制數(shù)。如將十六進制數(shù)轉(zhuǎn)換成二進制數(shù),只要將每一位十六進制數(shù)用四位相應(yīng)的二進制數(shù)表示,即可完成轉(zhuǎn)換。例如:將(163.5B)16轉(zhuǎn)換成二進制數(shù),則(163.5B)16|||||(000101100011.01011011)2(163.5B)16=(101100011.01011011)2二進制的算術(shù)、邏輯運算。3、數(shù)據(jù)在計算機中的表示方法:各種數(shù)據(jù)在計算機中表示的形式稱為機器數(shù),其特點是用0,1表示,如0表示正號,1表示負號,小數(shù)點隱含表示而不占位置。機器數(shù)對應(yīng)的實際數(shù)據(jù)稱為真值。機器數(shù)分為無符號數(shù)和有符號數(shù)。無符號數(shù)表示正數(shù)。帶符號的機器數(shù)可采用原碼、反碼、補碼等碼制進行計算。4、漢字編碼:漢字處理包括漢字的編碼輸入、存儲、輸出等環(huán)節(jié)。輸入碼(數(shù)字編碼、拼音碼、字形編碼)、內(nèi)部碼(簡稱漢字內(nèi)碼)(GB2312-80用2字節(jié)表示一個漢字,Unicode用4字節(jié)表示一個漢字)、字形碼(點陣、矢量函數(shù),漢字的輸出方式)。5、cpu的功能:程序控制、操作控制、時間控制、數(shù)據(jù)處理。6、計算機系統(tǒng)分類:Flynn分類法(按指令流、數(shù)據(jù)流分類)、馮式分類法(按最大并行度分類)。指令流:機器執(zhí)行的指令序列;數(shù)據(jù)流:指令調(diào)用的數(shù)據(jù)序列。7、計算機系統(tǒng)結(jié)構(gòu)和計算機組成的區(qū)別:系統(tǒng)結(jié)構(gòu)是指計算機系統(tǒng)在總體上、功能上需要解決的問題;計算機組成是指在邏輯上如何具體實現(xiàn)的問題。8、計算機并行的發(fā)展:不同于同時性的是,并發(fā)性是指兩個或兩個以上事件在同一時間間隔內(nèi)連續(xù)發(fā)生;分為存儲器操作并行,處理器操作步驟并行(流水線處理機),處理器操作并行(陣列處理機),指令、任務(wù)、作業(yè)并行(多處理機、分布式處理系統(tǒng)、計算機網(wǎng)絡(luò))。9、存儲器的層次結(jié)構(gòu):高速緩存、主存、輔存。(有人將cpu內(nèi)部的寄存器也作為一個存儲層次)。存儲器的分類:存儲器按位置分為內(nèi)存(主存)和外存(輔存);按工作方式分為讀寫存儲器和只讀存儲器;按訪問方式分為按地址訪問和按內(nèi)容訪問的存儲器;按尋址方式分為隨機尋址、順序、直接尋址存儲器。相連存儲器是一種按內(nèi)容訪問的存儲器。其工作原理是把數(shù)據(jù)作為關(guān)鍵字與存儲器中的每一單元比較,找出與關(guān)鍵字相同的數(shù)據(jù)。相連存儲器可用在高速緩存中;在虛擬存儲器中用來作段表、頁表或快表存儲器;用在數(shù)據(jù)庫和知識庫中。高速緩存:由控制部分和cache部分組成。cache部分放主存的部分拷貝信息,控制部分判斷cpu要訪問的信息是否在cache中命中,并按替換算法決定主存的哪一塊信息放到cache中的哪一塊里面。一般來說,Cache的功能全部由硬件實現(xiàn)。高速緩存與主存的地址映像方法有3種,即直接映像,全相連映像,組相連映像(組使用直接相連而組內(nèi)的塊使用全相連方式)在Cache的替換算法中,“近期最少使用LRU算法”是命中率最高的一種算法。10、虛擬存儲器,是由主存、輔存、存儲管理單元和操作系統(tǒng)的存儲管理軟件組成的存儲系統(tǒng)。它將大容量的外存也納入存儲管理器的管理范圍,具體執(zhí)行程序時要先判斷程序是否在主存中,若不在則需從輔存中調(diào)入。按工作方式分為:頁式虛擬存儲器;段式虛擬存儲器;段頁式虛擬存儲器。11、磁盤陣列raid,是由多臺磁盤存儲器組成的,一個大而快速、可靠的外存子系統(tǒng)。raid0
是不具備容錯能力的陣列,N個磁盤組成的0級陣列,其平均故障時間間隔是單個磁盤存儲器的N分之一;但其數(shù)據(jù)傳輸速率是單的N倍。raid1
使用鏡像容錯技術(shù)raid2
使用漢明碼容錯技術(shù)raid3
一般使用一個檢驗盤raid4
只使用一個檢驗盤raid5
沒有專門的檢驗盤,它在每塊盤上都寫數(shù)據(jù)和檢驗信息。12、CISC--復(fù)雜指令集計算機,RISC--精簡指令集計算機。RISC的特點:指令種類少;指令長度固定、格式少;尋址方式少,適合于組合邏輯控制器;設(shè)置最少的訪問內(nèi)存指令,訪問內(nèi)存比較花時間;在CPU內(nèi)部設(shè)置大量寄存器,使操作在CPU內(nèi)部快速進行;適合于流水線操作,容易并行執(zhí)行。13、輸入輸出技術(shù)。內(nèi)存與接口的編址方式分為內(nèi)存和接口地址獨立的編址方式,和內(nèi)存、接口地址統(tǒng)一的編址方式。直接程序控制(無條件傳送方式、程序查詢方式)(整個輸入輸出過程是在cpu執(zhí)行程序的控制下完成)中斷方式
(cpu得用中斷方式完成數(shù)據(jù)的輸入輸出操作)直接存儲器存?。―MA)方式,數(shù)據(jù)直接在內(nèi)存與IO設(shè)備間成塊傳送,cpu只需在開始和結(jié)束時進行處理,過程中無須干涉。DMA傳送的一般過程為:1)外設(shè)向DMA控制器提出DMA傳送請求;2)DMA控制器向CPU提出請求;3)CPU允許DMA工作,處理總路線控制的轉(zhuǎn)交;輸入輸出處理機(IOP)方式,由一個專用的處理機完成主機的輸入輸出操作。14、流水線技術(shù),是將一條指令分解成一連串執(zhí)行的子過程,在cpu中將一條指令的串行執(zhí)行過程變?yōu)槿舾蓷l指令的子過程重疊執(zhí)行。特點是,流水線可分成若干相互聯(lián)系的子過程;執(zhí)行每個子過程的時間盡量相等;形成流水處理需要準備時間;指令流發(fā)生不能順序執(zhí)行時會使流水線中斷。兩個指標,吞吐率(單位時間里流水線處理機流出的結(jié)果數(shù),對指令而言就是單位時間里執(zhí)行的指令數(shù));建立時間(所有子過程執(zhí)行一遍用時之和)15、總線的分類--芯片內(nèi)總線、元件級總線、內(nèi)總線(即系統(tǒng)總線)、外總線(即通信總線)。常見的幾種內(nèi)總線:ISA總線(長短兩個插座,分別有64個、32個接點),EISA總線,PCI總線。其中PCI總線的工作與處理器的工作是相對獨立的,即總線時鐘和處理器時間是獨立、非同步的,PCI總線上的設(shè)備即插即用。常見的幾種外總線:RS-232C(是一條串行總線),SCSI(是一條并行總線),USB(由4條信號線組成,兩條用于傳送數(shù)據(jù),另兩條傳送+5V500mA的電源),IEE1394(是一條串行總線,由6條信號線組成,兩條傳數(shù)據(jù)兩條傳控制信號兩條傳電源,支持即插即用和熱插拔)。16、陣列處理機,又稱并行處理機,它將重復(fù)設(shè)置的多個處理單元連成陣列,在控制部件的控制下,對分配給自己的數(shù)據(jù)進行處理,并行地完成一條指令規(guī)定的操作。這是一種單指令多數(shù)據(jù)流計算機(SIMD)。17、多處理機,是由多臺處理機組成的系統(tǒng)。每臺處理機有自己的控制部件,可以執(zhí)行獨立的程序,共享一個主存和所有外設(shè)。它是多指令流多數(shù)據(jù)流計算機。按其構(gòu)成分為:異構(gòu)(非對稱)型多處理機系統(tǒng),同構(gòu)(對稱)型多處理機系統(tǒng),分布式處理系統(tǒng)。4種多處理機的結(jié)構(gòu):總線結(jié)構(gòu),交叉開關(guān)結(jié)構(gòu),多端口存儲器結(jié)構(gòu),開關(guān)樞紐式結(jié)構(gòu)。18、并行處理機,與采用流水結(jié)構(gòu)的單機系統(tǒng)都是單指令流多數(shù)據(jù)流計算機,它們的區(qū)別是,并行處理機采用資源重復(fù)技術(shù),而流水結(jié)構(gòu)的單機系統(tǒng)使用時間重疊技術(shù)。并行處理機有2種典型結(jié)構(gòu):具有分布式存儲器的,具有共享式存儲器的。它們的共同點是在系統(tǒng)中設(shè)置多個處理單元,各個處理器按一定。接方式交換信息,在統(tǒng)一的控制部件作用下,各自處理分配來的數(shù)據(jù),并行的完成同一指令所規(guī)定的操作。19、信息安全的基本要素。機密性;完整性;可用性;可控性;可審查性。20、計算機安全等級:技術(shù)安全性、管理安全性、政策法律安全性。一些重要的安全評估準則:“美國國防部和國家標準局的《可信計算機系統(tǒng)評測標準》TCSEC/TDI”、“歐共體的信息技術(shù)安全評估準則ITSEC”、“ISO/IEC國際標準”、“美國聯(lián)邦標準”。其中TCSEC/TDI分了4個組7個等級,C2是安全產(chǎn)品的最低等級。21、安全威脅與影響數(shù)據(jù)安全的因素安全威脅是指某個人、物、事件對某一資源的機密性、完整性、可用性或合法性所造成的危害。典型的安全威脅有很多種。影響數(shù)據(jù)安全的因素有內(nèi)部和外部兩種。內(nèi)部因素:可采取多種技術(shù)對數(shù)據(jù)加密;制定數(shù)據(jù)安全規(guī)劃;建立安全存儲體系;建立事故應(yīng)急計劃和容災(zāi)措施;重視安全管理并建立安全管理規(guī)范。外部因素:按密級劃分使用人員的權(quán)限;使用多種認證方式;設(shè)置防火墻;建立入侵檢測、審計和追蹤;同時注意物理環(huán)境的保護。22、加密技術(shù)包括兩個元素:算法和密鑰。加解密算法設(shè)計的關(guān)鍵是滿足3個條件“可逆性”,“密鑰安全”,“數(shù)據(jù)安全”。數(shù)據(jù)加密技術(shù)分為對稱加密(以DES算法為代表)、非對稱加密(以RSA算法為代表)、不可逆加密3種。目前常用的對稱加密算法有:DES數(shù)據(jù)加密標準算法(使用56位密鑰,對64位二進制數(shù)據(jù)塊加密,基本加密運算為置換運算、移位運算、模加運算);3DES(使用2個56位密鑰,加、解、加);RC-5;國際數(shù)據(jù)加密算法IDEA(類似于3DES,使用128位密鑰,PGP系統(tǒng)在使用該算法)比較有名的非對稱加密算法:RSA算法,它是建立在大素數(shù)因子分解的理論基礎(chǔ)上的算法。其公鑰密碼長度大于100位,算法運算速度較慢,多用于加密信息量小的場合,可以使用RSA算法來實現(xiàn)數(shù)字簽名。23、密鑰管理,主要是指密鑰對的管理,包括密鑰的產(chǎn)生、選擇、分發(fā)、更換和銷毀、備份和恢復(fù)等。多密鑰的管理可以使用KDC。24、數(shù)據(jù)完整性保護,是在數(shù)據(jù)中加入一定的冗余信息,從而能發(fā)現(xiàn)對數(shù)據(jù)的任何增刪改。方法是在發(fā)送或?qū)懭霑r對所要保護的數(shù)據(jù)進行檢驗和作加密處理,產(chǎn)生報文驗證碼MAC,附在數(shù)據(jù)后面。在接受或讀出數(shù)據(jù)時根據(jù)約定的密鑰對數(shù)據(jù)進行檢驗和作加密運算,將所得的結(jié)果與MAC比較,根據(jù)結(jié)果是否一致判斷數(shù)據(jù)是否完整。25、認證技術(shù),主要是解決網(wǎng)絡(luò)通信雙方的身份認可。認證的過程涉及到加密和密鑰交換。加密可使用對稱加密、不對稱加密和二者混合使用的方法。一般有賬戶名/口令認證、使用摘要算法認證、基于PKI公開密鑰的認證。PKI是一種遵守既定標準的密鑰管理平臺,它能為所有網(wǎng)絡(luò)應(yīng)用提供加密和數(shù)字簽名等密碼服務(wù)及必需的密鑰和證書管理體系。PKI的基礎(chǔ)技術(shù)包括加密、數(shù)字簽名、數(shù)據(jù)完整性機制、數(shù)字信封、雙重數(shù)字簽名等。完整的PKI系統(tǒng)必須包括CA、數(shù)字證書庫、密鑰備份及恢復(fù)系統(tǒng)、證書作廢系統(tǒng)、應(yīng)用接口API等基本部分。PKI使用證書進行公鑰管理,通過CA將用戶的公鑰和用戶其它住處綁在一起,以在因特網(wǎng)上驗證用戶身份。26、HASH函數(shù),輸入一個不定長的字符串,返回一個固定長度的字符串(即HASH值)。單向HASH函數(shù)用于產(chǎn)生信息摘要;信息摘要簡要地描述了一份較長的信息或文件,可以被看作是一份文件的數(shù)字指紋,信息摘要用于創(chuàng)建數(shù)字簽名。27、數(shù)字簽名的過程:信息發(fā)送者使用一單向HASH函數(shù)對信息生成信息摘要;信息發(fā)送者使用自己的私鑰加密信息摘要;信息發(fā)送者將信息本身和已簽名的信息摘要一并發(fā)送出去;信息接收者使用發(fā)送者的公鑰對信息摘要解密,再使用同一單向HASH算法對信息生成信息摘要并進行驗證是否一致。28、數(shù)字加密的過程:信息發(fā)送者先生成一個對稱密鑰,使用該密鑰對信息加密;信息發(fā)送者使用接收者的公鑰加密上述對稱密鑰;信息發(fā)送者將上兩步的結(jié)果內(nèi)容都傳給接收者(這就是數(shù)字信封);信息接收者使用私鑰解密對稱密鑰,并使用對稱密鑰解密信息本身。29、SSL安全協(xié)議,一個能夠保證任何安裝了SSL的客戶和服務(wù)器之間事務(wù)安全性的協(xié)議,主要用于提高應(yīng)用程序之間數(shù)據(jù)的安全系數(shù)。SSL提供3方面服務(wù):客戶和服務(wù)器的合法性認證;加密傳送的數(shù)據(jù);保護數(shù)據(jù)的完整性。30、數(shù)字時間戳技術(shù),就是數(shù)字簽名技術(shù)的一個變種,不同的是這個要由認證單位DTS提供數(shù)字簽名。它的過程是:先形成需要加時間戳的信息的信息摘要;將信息摘要送到DTS,DTS記錄收到的日期及時間;DTS進行數(shù)字簽名,然后送回用戶。31、計算機病毒的定義,它是一種程序,具有修改別的程序的特性,并使用被修改的程序也具有這樣的特性。病毒的特點:寄生性,隱畢性,非法性,傳染性,破壞性。按病毒的寄生方式和入侵方式分成:系統(tǒng)引導(dǎo)型病毒,文件外殼型,混合型病毒,目錄型病毒,宏病毒(也叫數(shù)據(jù)病毒)。需要注意的幾點:變種、病毒程序加密、多形性病毒、病毒的偽裝。計算機病毒防治的手段:人工預(yù)防;軟件預(yù)防;管理預(yù)防。解決網(wǎng)絡(luò)安全問題的技術(shù)包括:劃分網(wǎng)段、局域網(wǎng)交換技術(shù)和VLAN;加密技術(shù)、數(shù)字簽名和認證、VPN技術(shù);防火墻技術(shù);入侵檢測技術(shù);網(wǎng)絡(luò)安全掃描技術(shù)。32、計算機的RAS技術(shù),R(可靠性)、A(可用性)、S(可維修性)。計算機可靠性的模型有:串聯(lián)系統(tǒng)模型、并聯(lián)系統(tǒng)、N模冗余系統(tǒng)。串聯(lián)系統(tǒng)可靠性R=R1*R2*…Rn
平均故障率=L1+L2+Ln并聯(lián)系統(tǒng)可靠性R=1-(1-R1)(1-R2)(1-Rn)N模冗余系統(tǒng)由2n+1個子系統(tǒng)和一個表決器組成,只要n+1個子系統(tǒng)工作正常,系統(tǒng)就工作正常。提高可靠性的辦法:提高元件質(zhì)量、改進加工工藝與工藝結(jié)構(gòu)、完善電路設(shè)計、發(fā)展容錯講述。33、計算機性能評測的常用方法:時鐘頻率法、指令執(zhí)行速度法、等效指令執(zhí)行速度法、數(shù)據(jù)處理速率法、核心程序法?;鶞蕼y試程序有,整數(shù)測試程序、浮點測試程序、SPEC基準測試程序、TPC基準程序。34、計算機故障包括永久故障、間歇性故障和偶然故障。故障診斷分為故障檢測和故障定位兩方面。容錯,就是通過冗余方法來消除故障影響。硬件冗余有時間冗余和器件冗余兩種。故障處理步驟,封閉、檢錯、重復(fù)執(zhí)行、診斷、重構(gòu)與恢復(fù)、修復(fù)、重入。35、BCD(Binary-Coded
Decimal)碼又稱為“二-十進制編碼”,專門解決用二進制數(shù)表示十進數(shù)的問題。壓縮BCD碼每一位數(shù)采用4位二進制數(shù)來表示,即一個字節(jié)表示2位十進制數(shù)。例如:二進制數(shù)10001001B,采用壓縮BCD碼表示為十進制數(shù)89D。非壓縮BCD碼每一位數(shù)采用8位二進制數(shù)來表示,即一個字節(jié)表示1位十進制數(shù)。而且只用每個字節(jié)的低4位來表示0~9,高4位為0。例如:十進制數(shù)89D,采用非壓縮BCD碼表示為二進制數(shù)是:0000100000001001B36、ASCII是AmericanStandardCodeforInformationInterchange的縮寫,用來制訂計算機中每個符號對應(yīng)的代碼,這也叫做計算機的內(nèi)碼(code)。每個ASCII碼以1個字節(jié)(Byte)儲存,從0到數(shù)字127代表不同的常用符號,例如大寫A的ASCII碼是65,小寫a則是97,阿拉伯數(shù)字0則是48.由于ASCII字節(jié)的七個位,最高位并不使用。第0~32號及第127號(共34個)是控制字符或通訊專用字符,如控制符:LF(換行)、CR(回車)、FF(換頁)、DEL(刪除)、BEL(振鈴)等;通訊專用字符:SOH(文頭)、EOT(文尾)、ACK(確認)等;第33~126號(共94個)是字符,其中第48~57號為0~9十個阿拉伯數(shù)字;65~90號為26個大寫英文字母,97~122號為26個小寫英文字母,其余為一些標點符號、運算符號等。注意:在計算機的存儲單元中,一個ASCII碼值占一個字節(jié)(8個二進制位),其最高位(b7)用作奇偶校驗位。所謂奇偶校驗,是指在代碼傳送過程中用來檢驗是否出現(xiàn)錯誤的一種方法,一般分奇校驗和偶校驗兩種。奇校驗規(guī)定:正確的代碼一個字節(jié)中1的個數(shù)必須是奇數(shù),若非奇數(shù),則在最高位b7添1;偶校驗規(guī)定:正確的代碼一個字節(jié)中1的個數(shù)必須是偶數(shù),若非偶數(shù),則在最高位b7添1。37、按位與的特殊用途:清零。
方法:與一個各位都為零的數(shù)值相與,結(jié)果為零。取一個數(shù)x中某些指定位。
方法:找一個數(shù),此數(shù)的各位是這樣取值的:對應(yīng)x數(shù)要取各位,該數(shù)對應(yīng)位為1,其余位為零。此數(shù)與x相就可以得到x中的某些位。例:設(shè)X=10101110(1)取X的低4位(2)取X的bit2、bit4、bit6位38、某EPROM芯片上有24條地址線A0-A23,8條數(shù)據(jù)線D0-D7,則該芯片的容量為“16M”。EPROM芯片上的地址線決定了該芯片有多少個存儲單元,數(shù)據(jù)線數(shù)表明每個存儲單元所存儲的數(shù)據(jù)位數(shù)。24條地址線則有16M個存儲單元,8條數(shù)據(jù)線決定了每個存儲單元存1個字節(jié)。所以容量為16M字節(jié)。39、機內(nèi)碼、國標碼、區(qū)位碼根據(jù)漢字的國家標準,用兩個字節(jié)(16位二進制數(shù))表示一個漢字。但使用16位二進制數(shù)容易出錯,比較困難,因而在使用中都將其轉(zhuǎn)換為十六進制數(shù)使用。國標碼是一個四位十六進制數(shù),區(qū)位碼則是一個四位的十進制數(shù),每個國標碼或區(qū)位碼都對應(yīng)著一個唯一的漢字或符號,但因為十六進制數(shù)我們很少用到,所以大家常用的是區(qū)位碼,它的前兩位叫做區(qū)碼,后兩位叫做位碼。國標碼規(guī)定,每個漢字(包括非漢字的一些符號)由2字節(jié)代碼表示。每個字節(jié)的最高位為0,只使用低7位,而低7位的編碼中又有34個適用于控制用的,這樣每個字節(jié)只有27-34=94個編碼用于漢字。2個字節(jié)就有9494=8836個漢字編碼。在表示一個漢字的2個字節(jié)中,高字節(jié)對應(yīng)編碼表中的行號,稱為區(qū)號;低字節(jié)對應(yīng)編碼表中的列號,稱為位號。國標碼與機內(nèi)碼轉(zhuǎn)換關(guān)系:為了不與7位ASCII碼發(fā)生沖突,把國標碼每個字節(jié)的最高位由0改為1,其余位不變的編碼就是漢字字符的機內(nèi)碼。也可以理解為國標碼加上8080H后得到機內(nèi)碼,或是機內(nèi)碼減去8080H后得到國標碼。國標碼與區(qū)位碼轉(zhuǎn)換關(guān)系:將國標碼減去2020H后,得到區(qū)位碼。如某漢字機內(nèi)碼是BFF0H,則國標碼為3F70H,區(qū)位碼為1F50H。40、在采用三總線的運算器中,三條總線分別與運算器的兩個輸入一個輸出相連接,各自有自己的通路。因此執(zhí)行一次操作只需一步即可完成。在運算器的兩個輸入和一個輸出上不再需要設(shè)置暫存器。41、光盤上的信號是記錄在光盤表面的凹坑及平面上。凹坑與平面的交接處代表1,因此在光盤上不允許有連續(xù)的兩個1。42、磁盤非格式化容量=最大位密度*最內(nèi)圈周長*總磁道數(shù)--實際上就是使用磁盤的面積乘以位密度。格式化容量
=每道扇區(qū)數(shù)*扇區(qū)容量*總磁道數(shù)總磁道數(shù)為:(外半徑-內(nèi)半徑)*磁道密度常識:有一個多盤片組成的盤組,在向磁盤記錄一個文件時,如果超出了一個磁道容量,那么剩下的部分將存于其他盤面的同一編號的磁道上。因為盤組中的多個盤面形成一系列柱面,在向磁盤寫入文件時會盡可能記錄在同一柱面上,當一個柱面記錄不下時,再記錄到相鄰的柱面上。43、微指令根據(jù)編碼方式的不同分為水平微指令和垂直微指令。水平微指令,長度較長、操作具有高度并行性、編碼簡單、執(zhí)行速度快,更多地體現(xiàn)了控制器的硬件細節(jié)。垂直微指令,長度較短、并行度低、功能弱、效率低、編程容易但微程序長。排列組合公式為:求n上數(shù)中m個數(shù)的組合有多少,C=n(n-1)(n-2)(n-m+1)/m!例如求n個數(shù)中每2個數(shù)組合的可能性,C=n(n-1)/2種可能性。第二章:數(shù)據(jù)結(jié)構(gòu)與算法1、線性表的定義及特點線性表是若干數(shù)據(jù)元素組成的有限集合。線性表的特點是,有惟一的起始結(jié)點和惟一的終端結(jié)點,其它元素都有惟一的直接前驅(qū)和惟一的直接后繼。線性表的抽像數(shù)據(jù)類型定義包括2方面:數(shù)據(jù)對象、關(guān)系的定義;線性表有關(guān)操作的定義;線性表的數(shù)據(jù)對象是具有相同性質(zhì)數(shù)據(jù)元素的集合。線性表的有關(guān)操作有:基本操作:初始化線性表、撤消線性表、判/置空表、取表長、取前驅(qū)元素、取后繼元素、取第i個元素、遍歷等。插刪操作:在順序結(jié)構(gòu)下,結(jié)點的插入(n/2)和刪除[(n-1)/2]主要是進行元素的移動;在鏈式結(jié)構(gòu)下,結(jié)點的插刪是調(diào)整指針的指向。查找操作:在順序表中可以進行折半查找,在鏈表中只能進行順序查找。2、線性表的基本存儲結(jié)構(gòu)及特點,線性表有順序和鏈式兩種存儲結(jié)構(gòu)。順序存儲結(jié)構(gòu)是:用一組地址連續(xù)的存儲單元依次存儲線性表中的數(shù)據(jù)元素。鏈式存儲結(jié)構(gòu)是:用一組地址任意的存儲單元存儲線性表中的數(shù)據(jù)元素。(存儲單元節(jié)點可以是連續(xù)的,也可以是不連續(xù)的)。鏈式存儲結(jié)構(gòu)包括:單鏈表(又稱線性鏈表),結(jié)點的結(jié)構(gòu)體有兩個域,分別存儲數(shù)據(jù)元素和當前元素有關(guān)系的其它元素所在結(jié)點的指針。雙向鏈表,每個結(jié)點包含兩個指針,分別指明直接前驅(qū)和直接后繼元素,可以在兩個方向上遍歷其后及其前的元素。循環(huán)鏈表,鏈表中最后一個結(jié)點的指針指向第一個結(jié)點,開成環(huán)狀結(jié)構(gòu),可以在任意位置上方向不變地遍歷全表。靜態(tài)鏈表,借助數(shù)組描述線性表的鏈式存儲結(jié)構(gòu)。3、棧的定義:是只能通過訪問它的一端來實現(xiàn)數(shù)據(jù)存儲和檢索的一種線性數(shù)據(jù)結(jié)構(gòu)。棧的特點:是先進后出(FILO)。在線結(jié)構(gòu)中,允許進行插、刪操作的一端稱為棧頂,相應(yīng)另一端稱為棧底。不含數(shù)據(jù)的棧稱為空棧。棧的基本運算有:置空棧、判空棧、元素入棧、出棧和讀取棧頂元素的值。棧的存儲結(jié)構(gòu):順序棧和鏈棧。順序棧指,用一組連續(xù)的存儲單元依次存儲自棧頂?shù)綏5椎脑兀瑫r設(shè)置指針top指示棧頂元素的位置。順序棧的空間容量是有限的,要預(yù)先定義。順序棧的入棧和出棧操作是通過修改數(shù)組下標來完成。假設(shè)棧底對應(yīng)于數(shù)組下標較大的一端,那么在元素入棧時就是下標減1,而元素出棧時就是下標加1。鏈棧,類似于線性鏈表,棧頂指針就是鏈表首結(jié)點的位置,元素的插刪操作限定在首結(jié)點處進行。棧的應(yīng)用:表達式計算,數(shù)制轉(zhuǎn)換,括號匹配,迷宮問題,遞歸問題。4、隊列的定義:是一種先進先出(FIFO)的線性表。隊列的特點:它只允許在表的一端插入元素而在表的另一端刪除元素。在隊列中允許插的一端叫隊尾(rear),允許刪的一端叫隊頭(front)。隊列的基本運算:置隊空、判隊空、入隊、出隊、讀隊頭元素等。隊列的存儲結(jié)構(gòu):順序隊列和鏈隊列。順序隊列,又被叫作循環(huán)隊列,設(shè)順序隊列Q,Q.front表示隊頭指針,Q.rear表示隊尾指針,則Q.front和Q.rear相等且為0時為空隊列;元素入隊時Q.rear加1,元素出隊時Q.front加1.因為順序隊列的空間容量是提前設(shè)定的,所以當Q.rear達到了上限時表示隊列滿。
為區(qū)別隊列空和隊列滿兩種情況下可能出現(xiàn)的Q.front==Q.rear,有兩種方法。一個是設(shè)置一個標識位,以區(qū)別頭尾指針相同時隊列是空還是滿;另一個方法是犧牲一個元素空間,約定以Q.rear所指的下一個位置是Q.front時表示隊列滿。鏈隊列,鏈隊列為空的判定條件是頭尾指針相同且均指向頭結(jié)點。隊列的應(yīng)用:常用于需要排隊的場合,如操作系統(tǒng)中的打印隊列,離散事件的復(fù)讀機模擬等。5、串的定義:是僅由字符構(gòu)成的有限序列。是取值范圍受限的線性表。一般記為S='a1a2an'。串的幾個概念:空串、空格串、子串、串相等、串比較。串的幾個操作:賦值操作StrAssign(s,t)、聯(lián)接操作Concat(s,t)、求串長StrLength(s)、串比較StrCompare(s,t)、求子串SubString(s,start,len)。串的存儲:靜態(tài)存儲(順序存儲),是定長的存儲結(jié)構(gòu)。當串超長時,超過部分將被截斷。堆存儲,通過程序語言提供的字符數(shù)組定義串的存儲空間,事先不限定串的長度,在程序執(zhí)行過程中動態(tài)地申請地址連續(xù)的串值的空間。塊鏈存儲,使用鏈表存儲串值,每個結(jié)點可以存儲一個或多個字符,同時每個結(jié)點設(shè)置一個指針指向后繼結(jié)點。串的模式匹配:樸素的模式匹配法、KMP算法。6、數(shù)組:是定長線性表在維數(shù)上的擴張,即線性表中的每個元素又是一個線性表。N維數(shù)組是一種同構(gòu)的數(shù)據(jù)結(jié)構(gòu),其每個數(shù)據(jù)元素類型相同,結(jié)構(gòu)一致。數(shù)組的特點:數(shù)組元素數(shù)目固定。一旦定義了一個數(shù)組結(jié)構(gòu)就不再有元素的增減變化;數(shù)據(jù)元素具有相同的類型;數(shù)據(jù)元素的下標關(guān)系受上下界的約束且下標有序。數(shù)組的基本運算:給定一組下標,存取相應(yīng)的數(shù)據(jù)元素;給定一組下標,修改相應(yīng)的數(shù)據(jù)元素中的某個數(shù)據(jù)項的值。數(shù)組的存儲:數(shù)組的固定結(jié)構(gòu)適于使用順序存儲。對于數(shù)組,只要知道它的維數(shù)和長度,就可以為它分配存儲空間。反之,只要給出一組下標就可以求出該數(shù)組元素的存儲位置。就是說,在數(shù)組的順序存儲結(jié)構(gòu)中,數(shù)據(jù)元素的位置是其下標的線性函數(shù)。以行為主序;
Loc(Aij)=Loc(Aij)+((i-1)*n+(j-1))*L以列為主序;
Loc(Aij)=Loc(Aij)+((j-1)*m+(i-1))*L多維數(shù)組的順序存儲計算:例如3維數(shù)組A[110,58,-36],數(shù)組空間的起始位置是a,每個元素占4個存儲單元,試以行為主存儲和以列為主存儲時給出數(shù)組元素A[i,j,k]的存儲地址。解:理解上面給出的以行為主序和以列為主序的兩個線性函數(shù)公式。把3維數(shù)組拆開計算,例如以行為主序時先將3維數(shù)組看成是有一個行和2個列的數(shù)組,算出此時以行為主占用了多少空間。然后再單獨看兩個列的組合B[j,k]又會占用多少空間。前后結(jié)果相加就是這個3維數(shù)組元素在以行為主序存儲時的地址。如下,以行為主序時,A[i,j,k]前面的元素個數(shù)是:(i-1)(8-5+1)(6-(-3)+1)+(j-5)(6-(-3)+1)+k-(-3)=40i-40+10j-50+k+3=40i+10j+k-87因此A[i,j,k]的地址為a+(40i+10j+k-87)*4以列為主序時,A[i,j,k]的地址為a+(40k+10j+i+69)*47、特殊矩陣與稀疏矩陣,稀疏矩陣就是非零元素很少的矩陣,而特殊矩陣是非零元素分布有規(guī)律的一類矩陣。為節(jié)省空間,在存儲它們時都使用壓縮存儲,特殊矩陣有壓縮算法,稀疏矩陣使用三元組順序表或使用十字鏈表存儲矩陣元素。8、廣義表的定義:是由零個或多個單元素或子表所組成的有限序列。廣義表的長度是指廣義表中元素的個數(shù),深度是指廣義表展開后所含的括號的最大層數(shù)。廣義表的基本運算:取表頭head(LS),非空廣義表的第一個元素稱為表頭;取表尾tail(LS),非空廣義表中除第一個元素之外,由其余元素構(gòu)成的表稱為表尾。表尾必定是一個表。Head(LS)=a1,Tail(LS)=(a2,a3,…,an)9、樹的定義:樹是n(n>=0)個結(jié)點的有限集合。當n=0時稱為空樹。在任一非空樹中,有且僅有一個稱為根的結(jié)點;其余m個結(jié)點可分為m(m>=0)個互不相交的有限集,其中每個子集合又都是一棵樹,稱為根結(jié)點的子樹。樹的定義是遞歸的,樹形結(jié)構(gòu)具有明顯的層次結(jié)構(gòu)。樹的術(shù)語:雙親和孩子,兄弟,結(jié)點的度,葉子結(jié)點,內(nèi)部結(jié)點,結(jié)點的層次,樹的高度,有序樹和無序樹,森林。樹的基本操作是:先根遍歷和后根遍歷。10、二叉樹的定義:二叉樹是另一種樹形結(jié)構(gòu),它的特點是每個結(jié)點至多有兩棵子樹并且有左右之分,且左、右子樹的次序不能顛倒。滿二叉樹,若二叉樹上每一層的結(jié)點數(shù)目都達到最大值,則稱為滿二叉樹;完全二叉樹,若二叉樹的除第H層以外,其余各層的結(jié)點數(shù)目達到了最大值,而第H層上的結(jié)點集中存放在左側(cè),則稱為完全二叉樹;非完全二叉樹,就是完全二叉樹的相反情況。二叉樹的性質(zhì):
1)二叉樹第i層(i>=1)上至多有2^(i-1)個結(jié)點。2)深度為K的二叉樹至多有2^k-1個結(jié)點(k>=1)。3)對任何一棵二叉樹,若其終端結(jié)點個數(shù)為N0,度為2的結(jié)點個數(shù)為N2,則N0=N2+1。4)具有n個結(jié)點的完全二叉樹的深度為log(2,n)+1。5)對一棵有n個結(jié)點的完全二叉樹的結(jié)點按層次自左至右進行編號,則對任一結(jié)點i(1<=i<=n)有:若i=1,則i是根結(jié)點;若i>1則其雙親為i/2。若2i>n,,則結(jié)點i無左孩子,否則其左孩子為2i。若2i+1>n,則結(jié)點i無右孩子,否則其右孩子為2i+1。例:一棵有124個葉結(jié)點的完全二叉樹,最多有多少結(jié)點?N0=N2+1N=N0+N1+N2N1=1綜合上面3個表達式可以求解。例2:具有N個結(jié)點的滿二叉樹,其葉子結(jié)點個數(shù)為多少?設(shè)其深度為h,則:N0=2^(h-1)N=2^h-1所以N0=(n+1)/2二叉樹的存儲結(jié)構(gòu):二叉樹的順序存儲結(jié)構(gòu),若采用二叉樹的性質(zhì)5對樹中的結(jié)點進行編號,即樹根結(jié)點的編號為1,若編號為i的結(jié)點存在左孩子,則其左孩子的編號為2i;若編號為i的結(jié)點存在右孩子,則其右孩子的編號為2i+1,這樣利用數(shù)組元素的下標作為結(jié)點的編號,表示出結(jié)點間的關(guān)系。二叉樹的鏈式存儲結(jié)構(gòu),二叉鏈表(有單向性)和三叉鏈表(有雙向性)。遍歷二叉樹,有4種方式:先序、中序、后序和層序遍歷。先序遍歷二叉樹的操作定義為:訪問根結(jié)點;先序遍歷根的左子樹;先序遍歷根的右子樹。(若二叉樹為空,則進行空操作)。中序遍歷二叉樹的操作定義為:中序遍歷根的左子樹;訪問根結(jié)點;中序遍歷根的右子樹。(若二叉樹為空,則進行空操作)。后序遍歷二叉樹的操作定義為:后序遍歷根的左子樹;后序遍歷根的右子樹;訪問根結(jié)點。層序遍歷二叉樹的操作定義為:從根結(jié)點開始,從或到右依次訪問每層上的結(jié)點。二叉樹遍歷思想的關(guān)鍵:首先在想象中把二叉樹補齊為滿二叉樹,葉子結(jié)點也要被想象為有2個子結(jié)點。然后,畫一條路線,從根出發(fā),逆時針沿著二叉樹的外緣移動,全程對每個結(jié)點均途經(jīng)三次。若第一次經(jīng)過時即訪問,則是先序遍歷;若是第二次經(jīng)過結(jié)點時訪問結(jié)點,則是中序遍歷;若是第3次經(jīng)過時訪問則是后序遍歷。這3種方法的路徑相同,但結(jié)果不同。遍歷二叉樹的基本操作就是,訪問結(jié)點。--遍歷二叉樹實質(zhì)上是按一定規(guī)則,將樹中的結(jié)點排成一個線性序列。11、線索二叉樹:對于有N個結(jié)點的二叉樹的二叉鏈表存儲表示,其中必有N+1個空指針。遍歷時使結(jié)點中原本為空的左孩子指針或(和)右孩子指針指向結(jié)點的前驅(qū)或(和)后繼,這樣的處理稱為對二叉樹的線索化,指向前驅(qū)或后繼的指針稱為線索。加上線索的二叉樹稱為線索二叉樹。為了區(qū)分結(jié)點中的指針是孩子還是線索,在結(jié)點結(jié)構(gòu)中增加標志域ltag,rtag。兩個標志取值0,則lchild,rchild域分別指向左孩子和右孩子;兩個標志取值1,則lchild,rchild域分別指向直接前驅(qū)和直接后繼。訪問線索二叉樹時,如何查找結(jié)點的前驅(qū)和后繼?以中序線索二叉樹為例,令P指向樹中的某個結(jié)點。當p->ltag=0時,P的中序直接前驅(qū)一定是其左子樹進行中序遍歷得到的最后一個結(jié)點,也可以沿P的左子樹根結(jié)點出發(fā)沿右孩子指針向下查找,直到找到一個沒有右孩子的結(jié)點時為止,該結(jié)點就是P的直接前驅(qū)結(jié)點,也稱為P的左子樹中“最右下”的結(jié)點。當P->rtag=0時,P的中序直接后繼一定是其右子樹進行中序遍歷得到的第一個結(jié)點,
也可以沿P的右子樹根結(jié)點出發(fā)沿左孩子指針向上查找,直到找到一個沒有右孩子的結(jié)點時為止,該結(jié)點就是P的直接后繼結(jié)點,也稱為P的右子樹中“最左下”的結(jié)點。12、二叉樹的應(yīng)用:最優(yōu)二叉樹(又稱霍夫曼樹),是一種帶權(quán)路徑長度最短的樹。路徑,是從樹中一個結(jié)點到另一個結(jié)點之間的通路,路徑上的分支數(shù)目稱為路徑長度。樹的路徑長度,是從根到每一個葉子結(jié)點之間的路徑長度之和。結(jié)點的帶權(quán)路徑長度,是從該結(jié)點到樹根之間的路徑長度與該結(jié)點權(quán)的乘積。樹的帶權(quán)路徑長度,是樹的所有葉子結(jié)點的帶權(quán)路徑長度之和,記為WPL。如何構(gòu)造最優(yōu)二叉樹?使用霍夫曼算法如下:1)將給定的N個結(jié)點的權(quán)值構(gòu)成N棵二叉樹的集合F,其中每棵樹Ti只有一個權(quán)為Wi的根結(jié)點,其左右子樹為空。2)在F中選取兩棵根結(jié)點的權(quán)值最小的樹作為左右子樹,并新生成一個根結(jié)點,根結(jié)點的權(quán)值為左右子樹的權(quán)值和。3)從F中刪除被取出的兩棵樹并將新生成的樹放入F。4)重復(fù)2,3步驟到只剩一棵樹為止,這棵樹就是最優(yōu)二叉樹。最優(yōu)二叉樹的形式不唯一,但其WPL值卻是唯一確定的。霍夫曼編碼:若要設(shè)計長度不等的編碼,則任一字符的編碼都不是其他字符編碼的前綴,這種編碼稱為“前綴編碼”。要設(shè)計總長最短的二進制前綴編碼,應(yīng)以N種字符出現(xiàn)的頻率作為權(quán)來構(gòu)造一棵霍夫曼樹,由此得到的二進制前綴編碼稱為霍夫曼編碼。樹的左右分枝分別標上0和1(或相反)。從根到葉子路徑上的0,1組成的串就是每個字符的二進制編碼。13、樹的存儲結(jié)構(gòu)1)樹的雙親表示法,用一組連續(xù)的存儲單元存儲樹的結(jié)點,并在每個結(jié)點中附設(shè)一個指示器,指示其雙親結(jié)點在該存儲結(jié)構(gòu)中的位置;2)樹的孩子表示法,是在存儲結(jié)構(gòu)中用指針指出結(jié)點的每個孩子。要為樹的每個結(jié)點的孩子建立一個鏈表,則N個結(jié)點的樹具有N個單鏈表,這N個單鏈表的頭指針又排成了一個線性表(頭指針即樹的存儲結(jié)構(gòu)中每個結(jié)點的指示器)。將上兩種方法結(jié)合起來可以形成樹的雙親孩子表示法。3)樹的孩子兄弟表示法,是指用二叉鏈表表示樹。在鏈表的結(jié)點中設(shè)置兩個指針域,分別指向該結(jié)點的第一個孩子和下一個兄弟。
|firstchild|data|nextbrother|
若將樹的孩子指針解釋為左孩子、兄弟指針解釋為右孩子,則可以得到這棵樹的二叉樹結(jié)構(gòu)。14、樹的遍歷:先根遍歷;后根遍歷。樹進行先根遍歷也就是對轉(zhuǎn)換得到的二叉樹進行先序遍歷;對樹進行后根遍歷也就是對轉(zhuǎn)換得到的二叉樹進行中序遍歷。(先根遍歷的順序是:由根出發(fā)從左至右遍歷每棵子樹。后根遍歷的順序是從左至右從每棵子樹的葉子結(jié)點向根的方向訪問子樹,最后訪問根結(jié)點。)15、森林的遍歷:先序遍歷森林;中序遍歷森林。先序遍歷森林,若森林非空,訪問森林中第一棵樹的根結(jié)點,先序遍歷第一棵子樹根結(jié)點的子樹森林,再先序遍歷除第一棵樹之外的樹所構(gòu)成的森林。中序遍歷森林,若森林非空,中序遍歷森林中第一棵樹的子樹森林,再訪問第一棵樹的根結(jié)點,再中序遍歷除第一棵樹以外的樹所構(gòu)成的森林。16、樹、森林和二叉樹的轉(zhuǎn)換利用樹的孩子兄弟表示法可以由一棵樹轉(zhuǎn)成唯一的一棵二叉樹。森林如何轉(zhuǎn)換成二叉樹呢?因為樹根沒有兄弟,所以樹轉(zhuǎn)換成二叉樹后一定沒有右子樹,所以森林轉(zhuǎn)換成二叉樹的方法是:1)先將森林中的每棵樹全轉(zhuǎn)成二叉樹;2)用第一棵樹的根做新二叉樹的根,第一棵樹轉(zhuǎn)為二叉樹后得到的左子樹做為新二叉樹的左子樹,第二棵樹作為新二叉樹的右子樹,第三棵樹作為新二叉樹的右子樹的右子樹,依此類推,森林便轉(zhuǎn)為了一棵二叉樹。17、圖的定義:在數(shù)據(jù)結(jié)構(gòu)中,圖是一個由頂點集合和邊集合構(gòu)成的二元組,其中邊表示頂點之間的關(guān)系。圖的主要術(shù)語:有向圖,圖中每條邊都是有方向的,弧、弧尾、弧頭;無向圖,圖中的邊是沒有方向的,邊;無向完全圖,圖中的N個結(jié)點之間每兩個結(jié)點間都有邊,共有n(n-1)/2條邊;有向完全圖,圖中的N個結(jié)點之間每兩個結(jié)點間都有方向相反的兩條弧,共有n(n-1)條??;度、入度、出度,頂點v的度是指關(guān)聯(lián)于該頂點的邊的數(shù)目,記作D(v)。若是有向圖則以該頂點為終點的有向邊數(shù)目稱為入度,從該頂點出發(fā)的有向邊的數(shù)目稱為出度,有向圖的度是入庫和出度的和。路徑,兩個頂點之間由邊組成的一條通路。若是有向圖則路徑也有方向。路徑長度是路徑上邊或弧的數(shù)目。第一個頂點和最后一個頂點相同的路徑稱為回路。若首尾頂點以外的頂點均不相同則是簡單路徑,若只有首尾頂點相同則稱為簡單回路。子圖,一個圖的頂點集合與邊集合都從屬于另一個圖,則稱之為另一個圖的子圖;連通圖與連通分量,在無向圖中若兩個頂點之間有路徑則稱為這兩個頂點是連通的。若無向圖中任兩個頂點間都是連通的則稱其為連通圖。該無向圖的最大連通子圖稱為它的連通分量。強連通圖與強連通分量,是有向圖的連通概念;網(wǎng),邊(?。?quán)值的圖稱為網(wǎng);生成樹,是一個極小的連通子圖,它包括圖中的全部頂點,但只有構(gòu)成一棵樹的n-1條邊;有向樹和生成森林,一個有向圖恰有一個頂點的入度為0其它頂點的入度均為1,則這是一棵有向樹。生成森林是一個有向圖中的若干棵有向樹組成,特點是含有全部頂點但只有足以構(gòu)成若干棵不相交的有向樹的弧。圖的存儲結(jié)構(gòu):鄰接矩陣表示法,用于表示圖有頂點之間的關(guān)系。對于個有n個頂點的圖G=(V,E)來說,其鄰接矩陣就是一個n階方陣。依靠判斷圖的兩頂點間是否存在邊或弧來決定Aij=1或Aij=0;網(wǎng)的鄰接矩陣,當兩頂點間存在邊或弧時Aij等于權(quán)值否則Aij等于無窮。鄰接鏈表表示法,為圖的每個頂點建立一個單鏈表,單鏈表中的結(jié)點表示依附于相應(yīng)頂點的邊或弧,有表頭結(jié)點和表結(jié)點兩種結(jié)構(gòu)類型。圖的遍歷:深度優(yōu)先搜索;廣度優(yōu)先搜索。一個類似于先根遍歷,一個類似于層序遍歷。生成樹的概念:生成樹是連通圖的一個子圖,它由全部頂點和一次遍歷圖所經(jīng)過的邊組成。圖的生成樹不惟一,按深度優(yōu)先搜索得到深度優(yōu)先生成樹,按廣度優(yōu)先搜索得到廣度優(yōu)先生成樹。一個非連通圖,每個連通分量中的頂點集和遍歷時走過的邊集一起構(gòu)成若干棵生成樹,稱為非連通圖的生成樹森林。18、最小生成樹:連通網(wǎng)的邊是帶有權(quán)值的,將生成樹的各邊權(quán)值和稱為生成樹的權(quán)。其中權(quán)值最小的生成樹稱為最小生成樹。構(gòu)造最小生成樹的兩種算法:普里母算法:以一個頂點集合U作為初態(tài),不斷尋找與U中頂點相鄰且代價最小的邊的另一個頂點,擴充U至U=V時為止。例如初始只給U一個頂點且邊的集合TE={};這種算法的時間復(fù)雜度為O(n^2),因為它由頂點推算出的,所以適合于邊稠密的網(wǎng)的最小生成樹??唆斔箍査惴ǎ杭僭O(shè)連通網(wǎng)N=(V,E),令最小生成樹的初始狀態(tài)為只有n個頂點而無邊的非連通圖T=(V,{}),圖中每個頂點自成一個連通分量。在E中選擇代價最小的邊,若該邊依附的頂點落在T中不同的連通分量上,則將此邊加入到T中,否則舍去此邊而選擇下一條代價最小的邊。信此類推,直至T中所有頂點都在一個連通分量上為止。這種算法與頂點數(shù)無關(guān),所以適合計算頂點多而邊稀疏的網(wǎng)的最小生成樹。19、AOV網(wǎng)(activeonvertex):在有向圖中,以頂點表示活動,用有向邊表示活動之間的優(yōu)先關(guān)系,這樣的網(wǎng)稱為AOV網(wǎng)。在AOV網(wǎng)中不應(yīng)出現(xiàn)有向環(huán)。拓樸排序:是將AOV網(wǎng)中所有頂點排成一個線性序列的過程,并且該序列滿足:若在AOV網(wǎng)中從頂點Vi到Vj有一條路徑,則在該線性序列中,頂點Vi必然在Vj之前。拓樸排序的方法:在AOV網(wǎng)中選一個入度為0的頂點并輸出它;從網(wǎng)中刪除該頂點及與其有關(guān)的邊;重復(fù)前兩步至網(wǎng)中不存在入度為0的頂點為止。這樣操作會有兩種結(jié)果:一個是所有頂點已輸出,也就是拓樸排序完成,說明網(wǎng)中不存在回路;另一個可能結(jié)果是尚有未輸出的結(jié)點,剩余頂點均有前驅(qū)頂點,表明網(wǎng)中存在回路!也可以進行逆拓樸排序,即計算出度為0的頂點。拓樸算法的時間復(fù)雜度為O(n+e)。AOE網(wǎng)(activeonedge):,在帶權(quán)有向圖中,以事件表示頂點,以邊表示活動,以邊上的權(quán)值表示活動持續(xù)的時間,則這種網(wǎng)稱為用邊表示活動的網(wǎng),簡稱AOE網(wǎng)。AOE網(wǎng)特點:1)頂點所表示的事件是指該頂點的所有進入邊所表示的活動已完成,所有發(fā)出邊表示的活動可以開始的一種狀態(tài)。2)對一個工程來說,要有一個開始狀態(tài)和一個結(jié)束狀態(tài),所以在AOE網(wǎng)中有一個入度為0的開始頂點,稱為源點;有一個出度為0的結(jié)束頂點,稱為匯點。AOE網(wǎng)中也不允許存在回路。3)完成整個工程的時間是從開始頂點到結(jié)束頂點間的最長路徑的長度(指該路徑上的權(quán)值和)?;顒拥乃神Y時間:用活動的持續(xù)時間和該活動兩側(cè)的兩個事件的關(guān)鍵路徑時間,二者取差。關(guān)鍵路徑:從源點到匯點的路徑長度最長路徑稱為關(guān)鍵路徑。關(guān)鍵路徑上的所有活動均是關(guān)鍵活動。最短路徑???20、查找的基本概念1)查找是一種常用的基本運算。查找表是由同一類型數(shù)據(jù)元素構(gòu)成的集合;2)靜態(tài)查找表,指在進行查找運算時不再修改的已經(jīng)構(gòu)造好的查找表。靜態(tài)查找表只進行兩種操作:查詢某個特定的數(shù)據(jù)元素是否在查找表中;檢索某個特定的數(shù)據(jù)元素的各種屬性。3)動態(tài)查找表,是可以進行另兩種操作的查找表,即在查找表中插入一個數(shù)據(jù)元素;從查找表中刪除一個數(shù)據(jù)元素。4)關(guān)鍵字,是數(shù)據(jù)元素的某個數(shù)據(jù)項的值,用它來識別這個數(shù)據(jù)元素;5)主關(guān)鍵字,指能唯一標識一個數(shù)據(jù)元素的關(guān)鍵字;6)次關(guān)鍵字,指能標識多個數(shù)據(jù)元素的關(guān)鍵字;7)查找,根據(jù)給定的某個值,在查找表中確定是否存在一個其關(guān)鍵字等于給定值的記錄,并返回結(jié)果。順序查找,從表的一端開始,逐個進行記錄的關(guān)鍵字和給定值的比較,若找到一個記錄的關(guān)鍵字和給定值相等則查找成功;若整個表均比較過仍未找到則查找失敗。若要查找的記錄不在表中則需進行n+1次查找。平均查找長度為(n+1)/2。折半查找(二分查找),可以用二叉樹進行分析,以中間記錄為根,左子表為左子樹,右子表為右子樹,依此類推。關(guān)鍵字的比較次數(shù)即為被查找結(jié)點在樹中的層數(shù)。查找成功或失敗時所比較的關(guān)鍵字數(shù)不超過樹的層數(shù)。折半查找只適用于有序順序表(以數(shù)組方式存儲的有序表)。n=2^k-1,k=log(n+1)分塊查找,又稱為索引順序查找,綜合使用上面兩種方法。將長度為n的表均勻分為b塊,每塊含有s個記錄,按順序查找確定元素所在的塊,則ASL=Lb+Lw,即塊內(nèi)查找與索引查找之和。ASL=(b+1)/2+(s+1)/2,當s取n的平方根時,ASL取得最小值“n的平方根加1”。21、二叉排序樹(又稱二叉查找樹):二叉查找樹或者是一棵空樹,或者具有這樣的特性,1)若二叉查找樹的左子樹非空,則左子樹上的結(jié)點值均小于根結(jié)點的值;2)若它的右子樹非空,則右子樹上的結(jié)點值均大于根結(jié)點的值;3)左、右子樹的子身就是一棵二叉查找樹。二叉查找樹的查找過程從根結(jié)點開始,過程類似于折半查找(二分查找)。二叉查找樹的插入操作按它的特性法則進行插入,若是空樹則作根結(jié)點,否則會成為一個新的葉子結(jié)點。在二叉查找樹中刪除一個結(jié)點時不能把該結(jié)點的子樹也刪掉,只能刪除這個結(jié)點但仍要保持二叉查找樹的特性,相當于是從一個有序序列中刪除一個元素,不能破壞其它元素的有序性。一種方法是,如果刪除結(jié)點*P,則可以用*P的直接前驅(qū)或直接后繼代替*P,同時刪除它的直接前驅(qū)(或直接后繼)。二叉排序樹順序存儲在一地址連續(xù)的空間內(nèi),則序列按中序遞增存儲。22、平衡二叉樹:它或者是一棵空樹,或者具有這樣的性質(zhì):它的左右子樹都是平衡二叉樹,且左右子樹的深度之差的絕對值不超過1。平衡因子:某結(jié)點的平衡因子定義為該結(jié)點的左子樹深度減去它的右子樹深度。平衡二叉樹上的所有結(jié)點的平衡因子只可能是-1、0和1。為了得到樹形均勻的二叉排序樹,在構(gòu)造二叉排序樹的過程中可以使用幾種辦法讓它保持為一棵平衡二叉樹。每插入一個新結(jié)點時,就檢查是否打破了平衡。若是,則找出最小不平衡二叉樹,在保持二叉排序樹特性的情況下,調(diào)整最小不平衡二叉樹中結(jié)點間關(guān)系,達到新的平衡。最小不平衡二叉樹是指離插入結(jié)點最近且以平衡因子的絕對值大于1的結(jié)點作為根的子樹。平衡二叉樹上的插入操作引起不平衡的解決方法:1)單向右旋平衡處理--用于在根的左子樹根結(jié)點的左子樹上插入新結(jié)點情況。2)單向左旋平衡處理--用于在根的右子樹根結(jié)點的右子樹上插入新結(jié)點情況。3)雙向旋轉(zhuǎn)(先左旋后右旋)操作--用于在根的左子樹根結(jié)點的右子樹上插入新結(jié)點的情況。4)雙向旋轉(zhuǎn)(先右旋后左旋)操作--用于在根的右子樹根結(jié)點的左子樹上插入新結(jié)點的情況。B樹,有幾個比較鮮明的特點。如:一棵m階的B樹中每個結(jié)點至多有m棵子樹;非終結(jié)點(根除外)至少有m/2棵樹;根至少有兩棵子樹(當根不是葉子時);所有葉子結(jié)點出現(xiàn)在同一層次上。23、哈希表的定義:根據(jù)設(shè)定的哈希函數(shù)H(key)和處理沖突的方法,將一組關(guān)鍵字映射到一個有限的連續(xù)地址集上,并以關(guān)健字在地址集中的“像”作為記錄在表中的存儲位置,這種表稱為哈希表。這一映射過程稱為哈希造表或散列,所得的存儲位置稱為哈希地址或散列地址。哈希函數(shù)是從關(guān)鍵字集合到地址集合的映像。對于哈希表主要考慮兩個問題:一是如何構(gòu)造哈希函數(shù);一是如何解決沖突。構(gòu)造哈希函數(shù)要解決好兩個問題:首先哈希函數(shù)是一個壓縮映像函數(shù);其次哈希函數(shù)應(yīng)具有較好的散列性。前者為節(jié)省空間,后者為減少沖突。常用的哈希函數(shù)構(gòu)造方法有直接定址法、數(shù)字分析法、平方取中法、折疊法、隨機數(shù)法和除留余數(shù)法。處理沖突的方法:1)開放地址法Hi=(H(key)+Di)%m
i=1,2,…,k(k<=m-1)H(key)為哈希函數(shù);m為哈希表的表長;Di為增量序列。Di=1,2,3,…,m-1稱為線性探測再散列;Di=1^2,-1^2,2^2,-2^2…,k^2(k<=m/2)
稱為二次探測再散列;Di=偽隨機序列,稱為隨機探測再散列。最簡單的產(chǎn)生探測序列的方法是線性探測,即當沖突時順序?qū)ο乱粏卧M行探測并存儲。在用線性探測法解決沖突構(gòu)造的哈希表中進行查找時有3種可能結(jié)果:一是在某一位置上找到關(guān)鍵字等于key的記錄,查找成功;一是按探測序列查找不到而又遇到了空單元,查找失敗,此時可進行插入操作;一是查遍全表,未查到指定關(guān)鍵字且存儲區(qū)已滿,要進行溢出處理。線性探測法的缺點是“溢出處理需別編程序”,“很容易產(chǎn)生聚集現(xiàn)象”。2)鏈地址法,它在符號表的每一個記錄增加一個鏈域,鏈域中存放下一個有相同哈希函數(shù)值的記錄的的存儲地址。3)再哈希法,Hi=RHi(key)
i=1,2,,k
RHi均是不同的哈希函數(shù),即在同義詞發(fā)生地址沖突時計算另一個哈希函數(shù)地址,直到解決。4)建立一個公共溢出區(qū),一溢出全放這里去;哈希表的裝填因子,a=(表中添入的記錄數(shù)/哈希表長度)
--a越小,發(fā)生沖突的可能越小雖然哈希表在關(guān)鍵字與記錄的存儲位置之間建立了直接映像,但由于“沖突”的產(chǎn)生,使得哈希表的查找過程仍是一個給定值和關(guān)鍵字進行比較的過程。仍須以平均查找長度衡量哈希表的查找效率。在查找過程中須與給定值進行比較的關(guān)鍵字的個數(shù)取決于3個因素:哈希函數(shù)、處理沖突方法、哈希表的裝填因子。24、排序:穩(wěn)定的排序、不穩(wěn)定的排序。內(nèi)部排序、外部排序。簡單排序法:包括直接插入排序、冒泡排序和簡單選擇排序。它們的算法復(fù)雜度為O(n^2),在元素已經(jīng)基本有序的情況下,使用直接排序方法可獲得較高的效率O(n)。直接插入排序和冒泡排序是穩(wěn)定的排序方法,簡單選擇排序是不穩(wěn)定的排序方法。直接插入排序適用于“在文件局部有序或文件長度較小的情況下的一種最佳內(nèi)部排序方法”.直接插入排序的時間復(fù)雜度為O(n*n),若記錄序列為正序時其時間復(fù)雜度可提高到O(n)。正序??冒泡排序算法:voidbubblesort(intdata[],intn){inti,j,tag,temp;for(i=0,tag=1;tag==1&&i<n-1;i++){tag=0;for(j=0;j<n-i-1;j++)if(data[j]>data[j+1]){temp=data[j];data[j]=data[j+1];data[j+1]=temp;tag=1;}}}簡單選擇排序算法:voidselectsort(intdata[],intn){inti,j,k,temp;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(data[j]<data[k])k=j;if(k!=j){temp=data[i];data[i]=data[k];data[k]=temp;}}}希爾排序,又稱為縮小增量排序。它是在直接插入排序的基礎(chǔ)上加以改進得到的排序方法?;舅枷刖褪牵涸O(shè)定一個初始間隔d,d<n,按間隔d將元素分組,在每一組內(nèi)進行直接插入排序,可以使得最小元素跳躍式向前移動。然后縮小增量d的值,重復(fù)上述操作到d=1時為止??焖倥判?,基本思想是通過一趟排序?qū)⒋判虻挠涗浄指顬楠毩⒌膬刹糠?,其中一部分的關(guān)鍵字均比另一部分小,然后再分別對這兩部分記錄繼續(xù)進行排序。具體做法:在頭尾設(shè)兩個指針low,high,分別指向第一個元素和最后一個元素。設(shè)樞軸記錄為正向(返向)的第一個記錄。當初始序列有序時,快速排序蛻變?yōu)槊芭菖判?,此時算法的時間復(fù)雜度為n*n。例如,對50個整數(shù)進行快速排序時,因為初始序列有序,所以排序過程退化為冒泡排序,總過程中的比較次數(shù)為49+48+…+1=49*50/2堆排序,基本思想是對一組待排序記錄的關(guān)鍵字,首選把它們按堆的定義排成一個序列,從而輸出堆頂?shù)淖钚£P(guān)鍵字。然后將剩余關(guān)鍵字再調(diào)整成堆,便得到次小關(guān)鍵字,反復(fù)進行,直至全部關(guān)鍵字排成有序序列。歸并排序,是將兩個或多個有序表合并成一個新的有序表。是一種穩(wěn)定的排序?;鶖?shù)排序,是一種借助多關(guān)鍵字排序思想對單邏輯關(guān)鍵字進行排序的方法。它不是基于關(guān)鍵字比較的排序方法,其平均時間復(fù)雜度為O(d*n),適合于n值很大而關(guān)鍵字較少的序列?;陉P(guān)鍵字比較的內(nèi)部排序方法的時間復(fù)雜度的下限為O(nlogn),簡單排序、希爾排序、快速排序、堆排序和歸并排序是要熟練掌握的排序方法。(重要)排序方法好壞的兩條因素:執(zhí)行算法的時間;執(zhí)行算法所需要的附加空間。常用的外部排序方法是歸并排序。25、分治法,將一個規(guī)模為n的問題逐步分解為k個規(guī)模更小的子問題,這些子問題互相獨立且與原問題性質(zhì)相同,逐個解決分解出的子問題,由這些子問題的解構(gòu)造出原問題的解,當k=2時稱為二分法。如解決棋盤覆蓋問題。分治法適用的問題一般具有這些特征:原問題可以分解成多個子問題,這些子問題與原問題相比只是規(guī)模的下降而其結(jié)構(gòu)和求解方法與原問題相同;若子問題的規(guī)模足夠小,則直接求解,否則遞歸地求解子問題;在得到各子問題的解后,能采用某種方法構(gòu)造出原問題的解。動態(tài)規(guī)劃法,與分治法類似也是先將待求解的問題分解成若個個子問題,先求解子問題,然后從子問題的解得到原問題的解。不同的是適合于動態(tài)規(guī)劃法求解的問題所分解得到的子問題之間往往不是獨立的。動態(tài)規(guī)劃法常用來求解具有最優(yōu)性質(zhì)的問題。即問題的最優(yōu)解包含了其子問題的最優(yōu)解。如求解多邊形游戲問題。設(shè)計動態(tài)規(guī)劃法的步驟為:1)找出最優(yōu)解的性質(zhì),并刻畫其結(jié)構(gòu)特征;2)遞歸地定義最優(yōu)值;3)以向前或向后處理方式計算出最優(yōu)值;4)根據(jù)計算最優(yōu)值得到的信息,構(gòu)造最優(yōu)解。貪心法,通過一系列的選擇來得到一個問題的解,它所做的每一次選擇都是當前情況下某種意義的最好選擇,即貪心選擇。如果待求解的問題具有最優(yōu)子結(jié)構(gòu)特征,也就是原問題的最優(yōu)解包含子問題的最優(yōu)解,并且可以通過局部的貪心選擇來達到問題的全局最優(yōu)解時,可通過貪心法進行求解。貪心標準的選擇和問題的結(jié)構(gòu)決定是否可以使用貪心法。如用于二分最小覆蓋問題。回溯法,又被稱為通用解題法,用它可以系統(tǒng)地搜索問題的所有解?;厮莘ㄊ且粋€既帶有系統(tǒng)性又帶有跳躍性的搜索算法。它在問題的解空間中按深度優(yōu)先策略,從根結(jié)點出發(fā)搜索解空間樹。算法搜索到解空間樹的任意結(jié)點時,首先判斷該結(jié)點是否包含問題的解。如果不包含則跳過對以該結(jié)點為根的子樹的搜索,逐層向其祖先結(jié)點回溯;否則進入這棵子樹繼續(xù)按深度優(yōu)先搜索。如收費公路重建問題。分支限界法,它類似于回溯法,也是在解空間中搜索問題解的算法,但分支限界法求解的目標是找出滿足條件的一個解,如有多個解則要找出某種意義下的最優(yōu)解。分支限界法以廣度優(yōu)先或以最小耗費優(yōu)先的方式搜索解空間樹。如最大完備子圖問題。26、算法的幾個基本特征有窮性,確定性,能行性,輸入,輸出。程序=數(shù)據(jù)結(jié)構(gòu)+算法內(nèi)容關(guān)鍵字:線性表、棧、隊、串、數(shù)組樹、二叉樹、森林、線索二叉樹、霍夫曼樹圖、有向圖、無向圖、最小生成樹、拓樸排序、關(guān)鍵路徑查找、靜態(tài)查找(順序、折半、分塊)、動態(tài)查找(二叉排序樹、平衡二叉樹、哈希表)排序、直接插入、簡單選擇、冒泡、希爾、快速、堆、歸并、基數(shù)第三章:操作系統(tǒng)知識1、操作系統(tǒng)的定義:是管理計算機中各種軟件、硬件資源的程序和相關(guān)文檔的集合,是一種系統(tǒng)軟件。操作系統(tǒng)能有效的組織和管理系統(tǒng)中的各種軟、硬件資源,合理地組織計算機工作流程,控制程序的執(zhí)行,并且向用戶提供一個良好的工作環(huán)境和友好的接口。操作系統(tǒng)的兩個重要作用:通過資源管理,提高系統(tǒng)的使用效率。改善人機界面,向用戶提供友好的工作環(huán)境。操作系統(tǒng)的4個特征:并發(fā)性、共享性、虛擬性、不確定性。操作系統(tǒng)的5個管理功能:進程管理、文件管理、存儲管理、設(shè)備管理、作業(yè)管理。操作系統(tǒng)的分類:批處理系統(tǒng),計算機自動、順序地執(zhí)行作業(yè)流產(chǎn)生的每一個作業(yè),以節(jié)省人工操作時間和提高機器的使用效率。分為單道批處理系統(tǒng)和多道批處理系統(tǒng)。優(yōu)點是同一批內(nèi)的各作業(yè)次次執(zhí)行,改善了cpu,io的使用效率,提高了吞吐量。缺點是磁盤需要人工裝卸,作業(yè)需要人工分類,監(jiān)督程序易受用戶程序破壞,缺少交互性。分時系統(tǒng),
具有如下特征:多路性、獨立性、交互性、及時性。實時系統(tǒng),分為實時控制系統(tǒng)和實時信息處理系統(tǒng)。主要特點有:快速的響應(yīng)時間、有限的交互能力、高可靠性。網(wǎng)絡(luò)操作系統(tǒng),使得計算機更有效地共享網(wǎng)絡(luò)資源,為網(wǎng)絡(luò)用戶提供所需各種服務(wù)的軟件和有關(guān)協(xié)議的集合。分布式操作系統(tǒng),是由多個分散的計算機經(jīng)網(wǎng)絡(luò)連接而成,各主機無主次之分。為分布式計算機配置的操作系統(tǒng)稱為分布式操作系統(tǒng)。微機操作系統(tǒng)嵌入式操作系統(tǒng)2、研究操作系統(tǒng)的觀點資源管理的觀點:從這種觀點看,操作系統(tǒng)的管理對象是計算機系統(tǒng)的資源,操作系統(tǒng)則是管理計算機系統(tǒng)的程序集合。這種觀點是在共享的前提下以資源分配、使用和回收為出發(fā)點,考慮操作系統(tǒng)各部分程序的功能和算法。虛擬機的觀點:操作系統(tǒng)加裸機構(gòu)成虛擬計算機。虛擬機的觀點是從功能分解的角度出發(fā),考慮操作系統(tǒng)的結(jié)構(gòu),將操作系統(tǒng)分成若干層次,每一層完成特定的功能。3、順序程序執(zhí)行時的特征:順序性、封閉性、可再現(xiàn)性。并發(fā)程序執(zhí)行時的特征:非封閉性、程序和機器執(zhí)行程序的活動不在一一對應(yīng)、并發(fā)程序間的相互制約性。引入進程的原因:由于程序并發(fā)執(zhí)行破壞了程序的封閉性和可再現(xiàn)性,使得程序和執(zhí)行程序的活動不在一一對應(yīng),此時用靜態(tài)的程序概念已經(jīng)不能描述系統(tǒng)中程序動態(tài)執(zhí)行的過程,所以引入了進程。4、進程的定義:就是程序的一次執(zhí)行,該程序可以和其它程序并發(fā)執(zhí)行。進程的組成:進程通常是由程序、數(shù)據(jù)及進程控制塊(PCB)組成的。進程的程序部分是進程執(zhí)行時不可修改部分,它描述了進程需要完成的功能;進程的數(shù)據(jù)部分是進程的可修改部分;進程控制塊是進程的描述信息和控制信息,是進程存在的惟一標志。進程和程序的區(qū)別是:進程具有狀態(tài)而程序沒有。5、進程的狀態(tài)及狀態(tài)間的切換三態(tài)模型:運行、就緒、阻塞。五態(tài)模型:新建態(tài)、終止態(tài)、運行、就緒、阻塞。新建態(tài):對應(yīng)于進程剛剛被創(chuàng)建時還沒有被提交,并等待系統(tǒng)完成創(chuàng)建進程的所有必要信息的狀態(tài)。整個過程分為兩個階段,一是為一個新建進程創(chuàng)建必要的管理信息,另一是讓進程進入就緒狀態(tài)。因為有了新建態(tài),操作系統(tǒng)可以根據(jù)系統(tǒng)的性能和主存的容量限制而推遲新建態(tài)的提交。終止態(tài)也分為兩個階段,一是等待操作系統(tǒng)進行善后處理,另一是釋放主存。具有掛起狀態(tài)的進程狀態(tài):當系統(tǒng)資源不能滿足所有進程的運行要求時,必須將某些進程掛起,放在磁盤對換區(qū),暫時不參加調(diào)度,以平衡系統(tǒng)負載。有這樣幾個狀態(tài):活躍就緒、靜止就緒、活躍阻塞、靜止阻塞。6、進程的控制,就是對系統(tǒng)中所有進程從創(chuàng)建到消亡的全過程實施有效的控制。操作系統(tǒng)的內(nèi)核為系統(tǒng)實現(xiàn)進程控制和存儲管理提供了有效的控制機制。大多數(shù)操作系統(tǒng)內(nèi)核均包含支撐功能和資源管理功能。支撐功能:中斷處理、時鐘管理、原語操作。原語是由若干條機器指令構(gòu)成的,用于完成特定功能的一段程序。內(nèi)核在執(zhí)行某些基本操作時往往是通過原語操作實現(xiàn)的。原語在執(zhí)行過程中不可分割。內(nèi)核中包含的原語有進程控制、進程通信、資源管理等。資源管理功能:進程管理、存儲器管理、設(shè)備管理。7、進程間通信進程間的同步:一般來說,一個進程相對于另一個進程的運行速度是不確定的,即進程是在異步環(huán)境下運行。每個進程都以各自獨立的不可預(yù)知的速度向前推進,但相互合作的進程需要在某些確定點上協(xié)調(diào)它們的工作,當一個進程到達了這些點后,除非另一進程已完成了某些操作,否則就不得不停下來等等這些操作結(jié)束。進程間的互斥:在多道程序系統(tǒng)中,各進程可以共享各類資源,但有些資源一次只能供一個進程使用,稱為臨界資源(critial
resource)。同步是進程間的直接制約問題,互斥是進程間的間接制約問題。臨界區(qū)(critial
section)是對臨界資源實施操作的那段程序。互斥臨界區(qū)管理的原則為:有空即進、無空則等、有限等待、讓權(quán)等待。8、整形信號量與PV操作整形信號量是一個整形變量,根據(jù)控制對象的不同賦不同的值。信號量分為兩類:公用信號量:實現(xiàn)進程間的互斥,每個相關(guān)進程即可對它施行P操作也可以進行V操作,初值為1或資源的數(shù)目。私用信號量:實現(xiàn)進程間的同步,只有一個進程可以對它施行P操作,其它進程只能做V操作,初值為0或某個正整數(shù)。信號量S的物理意義:S>=0表示某資源的可用數(shù),S<0則其絕對值表示阻塞隊列中等待該資源的進程數(shù)。PV操作是實現(xiàn)進程同步與互斥的常用方法。PV操作是低級通信原語,其中P操作表示申請一個資源,V操作表示釋放一個資源。P操作定義:S:=S-1,若S>=0,則執(zhí)行P操作的進程繼續(xù)執(zhí)行;否則若S<0,則該進程為阻塞狀態(tài),并將其插入阻塞隊列。V操作定義:S:=S+1,若S>0,則執(zhí)行V操作的進程繼續(xù)執(zhí)行;否則,若S<=0,則從阻塞狀態(tài)喚醒一個進程,并將其插入就緒隊列,執(zhí)行V操作的進程繼續(xù)執(zhí)行。利用PV操作實現(xiàn)進程的互斥:令信號量mutex的初值為1,當進入臨界區(qū)時執(zhí)行P操作,臨界區(qū)時執(zhí)行V操作。P(mutex)臨界區(qū)V(mutex)怎樣利用PV操作實現(xiàn)進程的同步:可用一個信號量與消息聯(lián)系起來,當信號量的值為0時表示希望的消息未產(chǎn)生,當信號量的值為非0時表示希望的消息已經(jīng)存在。假定用信號量S表示某條消息,進程可以通過調(diào)用P操作測試消息是否到達,調(diào)用V操作通知消息已準備好。最典型的是單緩沖區(qū)的生產(chǎn)者和消費者的同步問題。如果采用PV操作來實現(xiàn)進程PA和進程PB間的管道通信,并且保證這兩個進程并發(fā)執(zhí)行的正確性,則至少需要2個信號量,信號量的初值分別為0、1。9、高級通信原語,因為PV操作不足以描述復(fù)雜的進程間的信息交換,所以引入高級通信原語。高級通信原語有這么幾種:共享存儲系統(tǒng)、消息傳遞系統(tǒng)、管道通信。進程通信有直接和間接兩種方式。間接方式是以信箱以為媒介。10、管程(monitor):另一種同步機制,采用資源集中管理的方法,將系統(tǒng)中的資源用某種數(shù)據(jù)結(jié)構(gòu)抽象地表示出來。由于臨界區(qū)是訪問共享資源的代碼段,因而建立一個管程來管理進程提出的訪問請求。采用這種方式對共享資源的管理就可以借助數(shù)據(jù)結(jié)構(gòu)及在其上實施操作的若干過程來進行。對共享資源的申請和釋放可以通過過程在數(shù)據(jù)結(jié)構(gòu)上的操作來實現(xiàn)。11、進程調(diào)度,在某些系統(tǒng)中一個作業(yè)從提交到完成需要經(jīng)歷高、中、低三級的調(diào)度。高級調(diào)度(又稱長調(diào)度、作業(yè)調(diào)度或接納調(diào)度),它決定輸入池中的哪個后備作業(yè)可以調(diào)入主系統(tǒng)做好運行的準備,成為一個或一組就緒進程。中級調(diào)度(又稱對換調(diào)度),它決定處于交換區(qū)中的哪個就緒進程可以調(diào)入主存,以便直接參與CPU的競爭。低級調(diào)度(又稱進程調(diào)度),它決定處于主存中的哪個進程使用CPU.調(diào)度方式,是指當有更高優(yōu)先級的進程來到時如何分配CPU.調(diào)度的方式分為可剝奪式和不可剝奪式兩種。常用的調(diào)度算法:先來先服務(wù),主要用于宏觀調(diào)度,有利于長作業(yè),有利于CPU繁忙的作業(yè);時間片輪轉(zhuǎn),主要用于微觀調(diào)度,提高了并發(fā)性和響應(yīng)時間,最終提高了資源利用率;優(yōu)先級調(diào)度,
分為靜態(tài)和動態(tài)兩種;多級反饋調(diào)度,是在時間片輪轉(zhuǎn)和優(yōu)先級算法的基礎(chǔ)上改進得到。其特點是:照顧了短進程以提高系統(tǒng)吞吐量,照顧I/O型進程以獲得較好的I/O設(shè)備利用率并縮短響應(yīng)時間,不必估計進程的執(zhí)行時間和動態(tài)調(diào)節(jié)優(yōu)先級。12、死鎖:就是指兩個以上的進程相互請求對方已經(jīng)占有的資源時而導(dǎo)致無法繼續(xù)運行下去的現(xiàn)象。幾種會產(chǎn)生死鎖的情況:進程推進程順序不當,同類資源分配不當,PV使用不當。進程資源有向圖:由方框、圓圈和有向邊3部分組成。其中資源用方框表示,進程用圓圈表示。在方框中每一個小圓圈代表一個資源。有向邊分別代表請求資源和分配資源。死鎖產(chǎn)生的原因:因為競爭資源或進程推進順序非法。進程推進順序仍是關(guān)于進程請求和釋放資源的順序。死鎖產(chǎn)生的4個必要條件:互斥條件、請求保持條件、不可剝奪條件、環(huán)路條件?;コ馐钦f進程對所要求的資源有排它性控制。請求保持是說進程斷續(xù)地請求資源,但后續(xù)的資源被阻塞。環(huán)路是指在發(fā)生死鎖時在進程資源有向圖中,每個進程都占有了下一個進程請求的一個或多個資源。死鎖的4種處理:鴕鳥策略。預(yù)防策略,即破壞死鎖產(chǎn)生的4個必要條件之一。避免策略,即精心分配資源,主動回避死鎖。檢測與解除死鎖13、線程傳統(tǒng)的進程有兩個基本屬性,即可擁有資源的獨立單位,和可獨立調(diào)度、分配的基本單位。引入線程后,將傳統(tǒng)進程的兩個屬性分開,線程作為可獨立調(diào)度和
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024高考地理一輪復(fù)習(xí)第十章區(qū)域可持續(xù)發(fā)展第35講礦產(chǎn)資源合理開發(fā)和區(qū)域可持續(xù)發(fā)展-以德國魯爾區(qū)為例教案湘教版
- 2024高考歷史一輪復(fù)習(xí)方案專題十世界資本主義經(jīng)濟政策的調(diào)整和蘇聯(lián)社會主義建設(shè)專題整合備考提能教學(xué)案+練習(xí)人民版
- DB42-T 2338-2024 地質(zhì)調(diào)查階段海相頁巖氣選區(qū)評價技術(shù)要求
- 泰州市專業(yè)技術(shù)人員公修科目“溝通與協(xié)調(diào)能力”測試題及答案
- (3篇)2024年幼兒園讀書節(jié)活動總結(jié)
- 物資的管理和控制措施
- 二零二五版「鴻誠擔保招聘」人才測評與評估服務(wù)合同2篇
- 發(fā)起人與設(shè)立中公司
- 2024年海南工商職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 二零二五年度環(huán)保PPP項目合同風(fēng)險防控與應(yīng)對策略
- 實際控制人與法人協(xié)議模板
- 醫(yī)療器械質(zhì)量安全風(fēng)險會商管理制度
- 110kV變電站及110kV輸電線路運維投標技術(shù)方案(第一部分)
- 綠色制造與可持續(xù)發(fā)展技術(shù)
- 污水處理廠單位、分部、分項工程劃分
- 舌咽神經(jīng)痛演示課件
- 子宮內(nèi)膜癌業(yè)務(wù)查房課件
- 社會學(xué)概論課件
- 華為經(jīng)營管理-華為的研發(fā)管理(6版)
- C及C++程序設(shè)計課件
- 公路路基路面現(xiàn)場測試隨機選點記錄
評論
0/150
提交評論