<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      計算機體系

      • 繼電器,真空管,晶體管。

      繼電器。使用電控制的機械開關。控制導線連接一個中間線圈,電流通過中間線圈產生磁場,吸引金屬臂閉合,產生通路。可以連接其它,比如馬達。

      真空管。密封玻璃管兩個電極,加熱一端電極會發射正電荷,另一端吸引這些正電荷,形成通路。如果發射負電荷,則不會吸引,無法形成通路。

      引入控制電級,向控制電極施加正電荷,就會允許電子通過。如果施加負電荷,則阻止電子通過。從而連接或斷開電路。

      巨人計算機,第一臺可編程的計算機。編程時把一些電線插到電板上即可。真空管的出現使計算機由機電驅動進入電子驅動。

      晶體管。兩個電級被某材料隔開,這種材料有時導電,有時不導電,稱為半導體。引入控制線,連接一個門電極,改變門電極的電荷,可以控制半導體材料的導電性。控制通路形成。

      • 布爾運算,二進制?半加器,全加器,ALU?

      使用晶體管構造NOT,AND,OR,XOR,邏輯門電路。完成基礎的真假運算。只有兩個值0和1,通過增加位數來表示更多的數。

      使用一個異或邏輯門和一個與邏輯門構造一個半加器。

      三個數A,B,C相加。A,B使用一個半加器,有輸出位,進位兩個引腳。輸出位和C再構造一個半加器,有了新的輸出位,進位。輸出位是最終的輸出位。進位和第一個半加器的進位組成或門,構造最終進位。

      ALU由算術運算器和邏輯運算器構成。算術運算器實現多位數相加。

      • 與門,或門構造存儲器

      存一位,稱為鎖存器。一個與門和或門共同構成。有設置,復位兩個輸入。設置為1,復位為0時,輸出為1;設置為1,復位為1時,輸出為0;設置和復位都是0,輸出不變,存放最后一個輸出。

      使用一個數據輸入線代替設置和復位,一個允許寫入線,構成一個門鎖,稱為鎖存器。

      存八位,稱為寄存器。八個鎖存器并排存放,有一條全局允許寫入線,有八條數據輸入線,八條結果輸出線。

      存256位,使用矩陣。16*16的鎖存器構成一個矩陣。有一條輸入輸出數據線,一條允許寫入線,一條允許讀出線,16+16根定位一個鎖存器的線。

      使用只有4位輸入的多路復用器表示矩陣中的一個行,再使用4位輸入的多路復用器表示矩陣中的一個列。這樣,一個256位存儲器就使用8條地址輸入線,1條數據輸入輸出線,一條允許寫入線,一條允許讀出線。

      并排存放8個256位的寄存器,構成一個256字節的存儲器。有8條數據輸入輸出線,8條地址輸入線,一條允許寫入線,一條允許讀出線。

      • CPU和內存通信

      CPU。指令地址寄存器,指令寄存器。向內存發出第一條指令地址,內存收到后,傳入指令,稱為取指操作。接下來就是解碼,專門的解碼電路分析出指令的意義,是把內存中的某個值放到寄存器A中。

      最后就是執行過程,內存讀入指令中地址碼,拿到地址后,再傳入CPU中的寄存器A。

      在第三條指令中需要把寄存器A的值和寄存器B的值相加,就需要一個ALU單元,以寄存器A,B作為輸入,相加后的結果存放至ALU中,再傳輸到寄存器A。

      一些寄存器,控制單元,運算單元ALU共同構成一個CPU。

      上述就是一個簡單的程序,描述CPU和內存之間的數據傳輸以及地址傳輸。

      • 高端CPU,提升性能?

      CPU和主存之間使用Cache緩解主存速度慢的問題。同時也要注意Cache和主存中的數據不一致的問題。也就是出現了臟位。

      出現臟位后,Cache需要新數據是,對內存進行檢查,把臟位數據寫入內存。

      另一種提升性能的方法是使用指令流水。以往CPU執行都是取指,譯碼。執行,一條指令需要三個時鐘周期。

      使用指令流水后,可以執行第一條指令,譯碼第二條指令,取指第三條指令,這樣一個時鐘周期就執行一條指令。提高了性能。

      指令流水也會造成數據不一致的問題。解決方案是使用數據依賴性,必要時停止流水線,以免造成更大的錯誤。

      指令流水第二個問題是遇到跳轉指令,一般都會停止,等待運行。但這樣也會造成資源浪費,所以使用指令預測,預測跳轉指令后是什么指令,再執行。

      另一種性能提升方法是超標量指令機。即便使用流水線,還是會有處理機資源空閑的情況。在取值過程中,ALU還是會閑置。

      一次性執行多條指令就更好。這些指令頻次都很高。

      第四種提升性能方法是多核處理器。上述三種方法都是優化一條指令流,這種方法就是同時運行多條指令流。上述優化一條指令流的方法同樣也也適應在這里。

      • 早期編程方式,編程語言?

      早期使用打孔紙帶,插線板,插線板集成后的開關編程。這些方式直接編制二進制0和1代碼讓計算機運行。

      對二進制機器代碼抽象后產生LOAD A 30這樣的匯編指令。再對匯編指令抽象后產生高級編程語言。例如C,python,Java等。

      • 現代編程

      算法,數據結構,軟件工程,之后的最大軟件操作系統誕生。

      操作系統也是一種軟件,只是能夠驅動硬件,并提供其它程序的運行環境。打開計算機后,第一個運行的就是操作系統。

      操作系統最基本功能有處理機管理,內存管理,設備管理,文件管理。這些功能都是操作系統的內核。

      • 存儲器

      有了操作系統,執行任務的程序外。這些程序的存儲就是個問題。最開始使用打孔紙卡,打孔紙帶存儲。后來有磁芯存儲器,磁帶。

      再到熟悉的硬盤,軟盤,U盤,移動硬盤等。這些存儲設備內部都是使用集成電路。

      集成電路的制作過程。使用一個硅盤面。上面加氧化層,再加光刻膠,再加光掩膜。光照之下,沒被光掩膜遮住的光刻膠會融化,露出氧化層。再使用一種化學物質洗掉光刻膠。

      再使用另一種化學物質洗掉漏出的氧化層,到達硅表面。為了改變硅的導電性,一種摻雜的技術,填充被洗掉的氧化層。

      使用幾輪光刻,制作晶體管。多個晶體管組合構成邏輯門。組成集成電路。

      • 文件,壓縮

      有了上述的存儲器后,就能夠存儲很大的數據。這些數據高達萬億位。就是操作系統也能夠當做文件存儲在存儲器上。

      文件系統抽象了文件在磁盤的存儲情況。也是操作系統的一個具體功能。

      壓縮就是減少文件的存儲空間,達到相同空間存儲更多文件的目的。常見的壓縮方法有哈夫曼壓縮。

      采用哈夫曼樹,到樹根的距離代表了使用的頻率。如果一個項目使用頻繁,就靠近樹根,這樣二進制代碼就相對短。反之,就相對比較長。

      • 輸入,輸出

      早期電傳打印機,按下鍵盤后,信號通過電報線傳到另一臺打印機上,并在打印機的紙上輸出。

      陰極射線管,把電子發射到有磷光體的屏幕上。電子是帶點粒子,路徑由磁場控制。兩種顯示方式,用很多小線段繪制圖形,甚至文字。

      矢量掃描,電子只發光一會,重復的足夠快,可以顯示出圖形。

      光柵掃描,按固定路徑,一行一行來,只在特定的點打開電子束,以此繪制圖形。

      像素,屏幕上顯示清晰的點。使用字符生成器(第一代顯卡),從內存讀出每個字符的二進制代碼,顯示在屏幕。

      顯示任意的形狀,使用CRT“矢量模式”,使用矢量指令顯示各種形狀。矢量指令和字符集一樣都存儲在內存中,所以程序可以改變。

      sketchpad第一個圖形程序,有線連著電腦的觸控筆,筆尖用光線傳感器,檢測顯示器的刷新,判斷刷新時間,電腦判斷筆的位置。有了光筆和按鈕電腦就可以做出各種圖形。

      內存“幀緩沖區”的各種像素數據可以顯示圖形。

      3D圖形顯示。掃描線填充,抗鋸齒,光照,紋理化這些技術渲染圖形。

      • 計算機網絡,網絡安全,密碼學

      網絡安全三個特性。保密性,有權限的用戶使用數據。完整性,有權限的用戶修改數據。可用性,有權限的用戶隨時訪問數據。

      使用身份驗證,訪問控制。確定你是誰?你能訪問什么?

      身份驗證包括,你知道什么?你有什么?你是誰?這三種驗證。

      身份驗證之后,需要確定用戶能訪問什么數據。使用三種訪問控制方式,絕密,機密,公開。只能向下讀,向上寫。

      凱撒加密,英格瑪,AES都是對稱加密。RSA是非對稱加密。

      訪問一個服務器,驗證服務器的密鑰,建立臨時密鑰,使用對稱加密保證通信。

      • 機器學習,人工智能,計算機視覺,自然語言處理,計算機未來

      機器學習算法,決策樹,支持向量機都源于統計學。

      人工神經網絡不來自于統計學,加權,求和,偏置,激活函數是每個神經元的基本過程,有許多隱藏層,每一層的神經元都要執行上述過程,這就成為深度學習。

      把核應用于像素塊,這種操作就是“卷積”。兩個邊緣增強的核叫“prewitt算子”。

      給每個神經元二維數組當做權重來計算,第一層得出是圖形的某個特征,層層遞進,最后識別出一個完整的圖形。這種算法叫做卷積神經網絡。

      計算機能聽懂人類語言,就是自然語言處理過程。使用短語結構規則,來分析人類語言。深度神經網絡處理自然語言。

      VR,AR,無人駕駛,無人機,可穿戴設備,服務型機器人,新服務連接人們,新硬件神經網絡,3D圖形,無處不在的虛擬助手。

      加密貨幣,無線通訊,3D打印,生物信息學,量子計算。

      • 現代計算機體系結構?

      馮諾依曼計算機工作原理,存儲程序+程序控制。基本特點有,指令和數據以二進制形式存放于存儲器中,并能夠尋址。指令在存儲器按順序存放。指令由操作碼和地址碼組成,操作碼表示操作的性質,地址碼表示操作數在存儲器中的位置。

      基本構成。控制器,運算器,存儲器,輸入輸出設備。

      控制器。由程序計數器PC,指令寄存器IR,控制單元組成CU。PC用來存放當前欲執行的指令地址,可以自動加一形成下一條指令地址,與主存的MAR之間有一條通路。

      IR用來存放當前執行的指令,內容來自于主存MDR。指令中的操作碼送到CU,分析指令并發出各種微操作命令序列,地址碼送往MAR取操作數。

      運算器。完成數據運算和邏輯運算。包括若干通用寄存器,暫存操作數和中間結果(累加器ACC,操作數寄存器,變址寄存器,基址寄存器)還有程序狀態字寄存器,保留各類運算指令或測試指令執行結果的狀態信息,表征系統運行狀態。

      存儲器。存儲器由若干個存儲單元組成,每個存儲單元由若干個存儲元件組成。每個存儲元件存放一位二進制0或1,存儲單元存放一連串二進制代碼。這段代碼稱為存儲字,代碼長度為存儲字長。

      存儲器按照存儲單元的地址進行存取,這種方式稱為按地址存取。

      主存的基本組成。存儲元件,存儲二進制信息;地址寄存器MAR,存放訪存地址,地址譯碼后找到所選的存儲單元;數據寄存器MDR,主存和其它部件的中介機構,暫存從存儲器讀寫的信息;時序控制邏輯產生存儲器操作的各種時序信號。

      MAR和MDR屬于存儲器,但位于CPU。

      輸入設備。將程序和數據以機器能識別和接收的形式傳入到計算機。

      輸出設備。將計算機的處理結果以人能夠接受的形式或其它系統要求的形式展示出來。

      哈佛結構采用數據和程序的分離存儲結構,是一種并行體系結構。程序存儲器和數據存儲器是兩個獨立的存儲器,可以獨立編址,獨立訪問。兩個存儲器對應系統四條總線,程序存儲器數據總線和地址總線,數據存儲器數據總線和地址總線。這種存儲可以在一個機器周期內同時獲得指令字和操作數,提高執行速度和吞吐量。程序和數據在兩個物理空間,取指和執行能完全分開。

      • 計算機怎樣啟動,從電源開始?

      第一階段,基本輸入輸出系統BIOS。1970年,只讀內存芯片ROM發明,通電后的第一件事就是讀取BIOS。BIOS程序首先檢查計算機硬件能否滿足基本運行條件。

      硬件自檢后,BIOS會把控制權交給下一階段的啟動程序,所以,BIOS需要知道下一階段的啟動程序的存放位置。于是,BIOS需要一個外部設備的排序,這種排序就叫啟動順序。

      第二階段,主引導記錄。BIOS按照啟動順序,把控制權交給排在第一位的存儲設備。計算機讀取該設備的第一個扇區,也是最前面的512字節,這512字節就叫主引導記錄,告訴計算機到硬盤的那個位置去找操作系統。512字節中的最后兩個字節是0x55和0xAA,則表示能夠啟動該設備,如果不是,則不能啟動。控制權轉移到啟動順序的下一個設備。

      主引導記錄512字節。1-446字節,存放調用操作系統的機器碼。447-510字節,存放分區表。511-512字節,存放主引導記錄簽名。

      硬盤分區表示在不同分區上裝不同操作系統,主引導記錄必須知道將控制權交給哪個分區。分區表64字節,分了四項,所以一個硬盤只能分四個一級分區,叫做主分區。

      第三階段,硬盤啟動。這時,計算機的控制權要交給某個分區,有三種情況。

      情況A,卷引導記錄。四個分區里面只有一個是激活的,計算機會讀取激活分區的第一個扇區,叫做卷引導記錄。告訴計算機操作系統在分區的位置,然后加載操作系統。

      情況B,擴展分區和邏輯分區。硬盤越來越大,四個分區已經不夠了,需要更多的分區。分區表只有四項,因此規定一個區被定義成擴展分區,這個區里面又分多個區,這種分區里面的分區稱為邏輯分區。

      計算機先讀取擴展分區的第一個扇區,叫擴展引導記錄。再讀取第二個邏輯分區的第一個扇區,找到第三個邏輯分區的位置,以此類推。所以擴展分區可以包含無數個邏輯分區。

      情況C,計算機讀取主引導記錄前面446字節機器碼后,不再把控制權交給某個分區,而是運行事先安裝的啟動管理器,用戶選擇啟動哪個操作系統。

      第四階段,控制權轉交給操作系統后,操作系統的內核首先被載入主存。

      linux為例,先載入/boot下的kernel。內核加載成功后,第一個運行的程序是/sbin/init。根據配置文件產生Init進程。這是Linux產生后的第一個進程,pid編號為1,其它進程都是它的后代。

      然后,init線程加載系統的各個模塊,比如窗口程序和網絡程序,直至執行/bin/login,跳出登錄界面,等待用戶輸入用戶名和密碼。

      至此,計算機啟動過程完成。

      • 控制單元分為組合邏輯和微程序?

      電路的輸出僅由某時刻的輸入決定,稱這樣的電路為組合邏輯電路。

      微程序,對邏輯電路按照一般程序設計的方法進行設計。

      速度上,組合邏輯電路用戶指定邏輯關系后,輸入信號經過電路響應,直接得出結果,是純硬件的響應,所以速度很快。微程序設計相比于組合邏輯電路就要慢很多。

      復雜度上,組合邏輯電路是按照用戶的設想組合眾多邏輯器件,對于一個復雜的系統,設計邏輯電路就是一個很大的工程。微程序控制的方法就方便很多,只需要為CPU設計一個很精煉的算法就能實現。

      成本上,大型可編程邏輯器件的成本要比高端處理器或單片機成本高得多,而且工作量大,花費也多。

      • 微程序設計,微指令,微操作?微指令序列地址形式?

      微程序設計,把一個機器指令編寫成一個微程序,每個微程序包括若干條微指令,每一個微指令包含若干個微操作。再把這些微操作存儲到一個控制存儲器中,使用尋找用戶程序機器指令的方法尋找每個微程序中的微指令。

      微指令,在機器的一個CPU周期中,一組實現一定操作功能的微命令組合。

      微操作,控制部件通過控制線向執行部件發出控制命令,也叫微命令,而執行部件接收微命令后執行的操作就叫微操作。

      微指令序列地址直接由微指令下的地址字段指出,根據機器指令的操作碼,硬件產生微程序入口地址。

      • 指令周期,機器周期,時鐘周期,總線周期?微指令周期,存取周期?

      指令周期,計算機取出并執行一條指令所需要的時間。包括取指,譯碼,執行。每個階段由一個或多個時鐘周期完成。

      機器周期,取指,存儲器讀寫。這樣的操作就稱為一個基本操作。計算機完成一個基本操作所花費的時間。

      時鐘周期,計算機系統中最小的時間單位,定義為一個節拍。在一個時鐘周期內,計算機僅能完成一個最簡單的操作。

      總線周期,CPU完成一次訪問內存或I/O設備所需要的時間,一個總線周期由幾個時鐘周期組成。

      微指令周期,串行微程序控制器中,微指令周期等于讀出微指令需要的時間加上執行微指令的時間。

      存取周期,CPU讀寫內存數據需要的時間。

      • CPU功能和基本結構,CPU主要寄存器? 

      程序控制,控制指令的執行順序,保證計算機按照一定順序執行程序是CPU首要任務。

      操作控制,控制指令進行操作,一條指令往往由若干個操作信號的組合實現,CPU管理每條指令的操作信號,把各種操作信號送往相應的部件,從而控制這些部件按指令的要求操作。

      時間控制,各種指令的操作信號和一條指令的的整個執行過程都受到嚴格定時,這樣,計算機才能有效工作。

      數據加工,完成對數據的算術,邏輯加工。完成數據處理是CPU的根本任務。

      CPU由控制器和運算器兩個部件構成。控制器包括程序計數器PC,指令寄存器IR,指令譯碼器ID,時序發生器,操作控制器。運算器由算術邏輯單元ALU,累加寄存器AC,數據寄存器DR,程序狀態字寄存器PSW。

      北橋芯片,提供對CPU類型和主頻的支持,系統高速緩存的支持,主板系統總線頻率,內存管理,顯卡插槽規格等的支持。

      南橋芯片,提供對I/O設備的支持,提供對鍵盤控制器,時鐘控制器,通用串行總線USB等的支持。

      • 32位機和64位機的具體含義?

      32位處理器指一次性能處理32位,4個字節的數據。64位處理機指一次性能處理64位,8個字節的數據。

      總長度128位的指令使用32位處理器需要四個指令,使用64位機需要2個指令。顯然,在工作頻率相同的情況下,64位機比32位速度更快。

      傳統32位機最大尋址空間時4GB,對于一些需要大容量內存的程序就無法滿足。64位處理機在理論上可以達到1800萬個TB,64位機能徹底解決32位機的瓶頸問題。

      • 主存和緩存?

      內存又稱為主存,是CPU直接尋址的存儲空間。暫存程序和數據的地方。計算機系統中的應用,文件,數據一般都存放在磁盤上,需要用到時再調入內存。

      把一些臨時或少量的數據和程序放在內存。內存的大小直接決定計算機系統的性能。

      緩存在CPU內部,CPU存取數據的速度非常快,一秒能夠存取,處理十億條指令或數據,內存的速度就慢很多。緩存就是解決CPU速度和內存速度差異而提出。緩存的速度接近于CPU,使得緩存具有靜態性。

      • 物理內存,虛擬內存?

      物理內存是主板內存槽上所插內存條的大小。CPU地址線決定進行尋址的內存空間大小。

      虛擬內存是一種計算機系統存儲管理的技術,屬于計算機程序,使得應用程序認為它有連續的可使用的內存,實際上,只是將一部分裝入內存,另一部分留在磁盤上,需要時進行數據交換 。

      物理內存作為硬件,當處理較大程序時,內存不夠用,就會把硬盤當做內存來使用,交換數據做緩沖區。

      物理內存實質就是主板上的內存條。虛擬內存實質就是計算機程序。

      • 緩存與虛擬內存區別?

      緩存解決的是CPU與主存速度不匹配的問題,屬于內部存儲器。虛擬存儲器一般指虛擬設備,是外部存儲器。

      • 存儲容量擴展方式?存儲的多級層次,及解決的問題?

      字擴展,存儲單元位數不變,增加地址線數目,增加存儲單元個數。

      位擴展,存儲單元個數不變,增加數據線數目,增加存儲單元大小。

      字位擴展,結合上述兩種方式,既增加存儲單元個數,也增加存儲單元大小。

      每個存儲系統主要包括,Cache-主存,主存-輔存。兩個存儲層次。

      Cache-主存,使用高速緩沖存儲器,彌補主存速度不足,解決主存和CPU速度不匹配的問題。

      主存-輔存,使用容量大的存儲器,彌補主存容量不足,實現虛擬存儲。

      • 指令尋址和數據尋址方式?

      指令尋址找到當前需要執行的指令的位置,有順序尋址和跳躍尋址兩種。

      順序尋址,每次執行指令后程序計數器PC指向下一條指令的位置,指令執行的順序和指令在內存中的存儲順序一致。

      跳躍尋址是通過特定的指令直接為PC寄存器賦值,實現特定位置指令的執行。

      數據尋址有多種方式,通過指令中地址碼獲取操作數地址。

      立即尋址,尋址中直接讀取指令可獲得操作數。

      直接尋址,尋址先通過指令中的地址碼獲取操作數地址,再訪問內存獲得操作數。

      隱含尋址,適用于特定的指令,不需要存儲地址碼,讀取操作碼即可知道操作數的地址。

      間接尋址,尋址時,先根據指令中的地址碼訪問內存,得到操作數的地址,根據操作數地址,再次訪問內存得到操作數。這里指令中地址碼存放的是操作數地址的內存地址。

      寄存器尋址,尋址時,根據指令中地址碼得到寄存器編號,再訪問寄存器,獲取操作數。

      寄存器間接尋址,尋址時,先根據指令中地址碼得到寄存器編號,再通過寄存器得到操作數地址,訪問內存獲取操作數。

      基址尋址,尋址時,把指令中地址碼的偏移地址和基址寄存器BR中的基地址相加得到操作數地址,再訪問內存獲取操作數。

      變址尋址,尋址時,先把地址碼中的偏移地址和變址寄存器TX中數據相加獲得操作數地址,再訪問內存獲取操作數。

      相對尋址,尋址時,先把地址碼中的偏移地址和PC寄存器數據相加獲取操作數地址,再訪問內存獲取操作數。

      • 總線?總線的集中仲裁方式?

      總線就是一個傳輸通道,接口就是一個連接標準。通俗講,總線的盡頭就是接口。

      片內總線,芯片內部的總線。

      系統總線,CPU,主存,I/O設備之間傳輸信息的通道。包括數據總線,地址總線,控制總線。

      數據總線,把CPU的數據傳送到I/O或其他設備,也可把I/O或其他設備的數據傳送到CPU。數據總線的位數和微處理器的字長一致。雙向傳輸。

      地址總線,把地址從CPU傳到外部設備或I/O上。地址總線的位數決定了CPU可直接尋址的內存空間的大小。單向傳輸。

      控制總線,用來傳送控制信號和時序信號。如讀寫信號,片選信號,中斷信號。雙向傳輸。

      通信總線,計算機系統之間或計算機系統與其它系統之間的通信的通道。有串行通信和并行通信兩種方式。

      同步通信,雙方采用統一時鐘信號。

      異步通信,雙方不需要統一時鐘信號,有不互鎖,半互鎖,全互鎖三種方式。

      異步通信不需要共同的時鐘總線,為實現數據同步,采用“應答”機制。主模塊發出數據后,等待從模塊的應答信息,從模塊收到數據后,立即向主模塊發出應答信息。實現數據同步。

      不互鎖,主模塊發出信號后,不必等待從模塊的應答信號,等待一段時間后,便自動確認從模塊收到數據。從模塊發出應答信號后,不必等待主模塊撤銷請求信號,等待一段時間后,自動確認主模塊已收到應答信號,主模塊自動撤銷請求信號。主從模塊沒有互鎖關系。

      半互鎖,主模塊發出信號后,一定要收到從模塊的應答信號才能確認從模塊收到數據,有互鎖關系。從模塊發出應答信號后,不必等待主模塊撤銷請求信號。等待一段時間,便確認主模塊已收到應答信號,主模塊自動撤銷請求信號,沒有互鎖關系。

      全互鎖,主模塊發出請求信號后,一定要收到從模塊的應答信號才能確認從模塊已收到數據。從模塊發出應答信號后,必須等待主模塊撤銷請求信號后,才能確認主模塊收到應答信號。主存模塊有互鎖關系。

      總線仲裁

      鏈式查詢,依次詢問各設備是否需要總線,第一個提出總線需求的設備占有總線,距離總線控制部件近的設備優先級高。

      計時器定時查詢,總線控制部件中設定計數器,依照編號各個設備輪流占有總線。

      獨立請求方式,為每一個設備安排獨立的請求線,各個設備直接和總線控制部件交互。

      • 簡述中斷的處理過程?

      中斷源發出中斷請求后,處理機響應這個請求,現行程序被中斷,轉去執行中斷處理程序,直至中斷處理程序執行完畢后,再返回原程序繼續執行。

      中斷過程包括中斷請求,中斷判優,中斷響應,中斷處理,中斷返回。其中,中斷處理過程最為繁雜,先保護現場,對于非向量式的中斷請求需要確定中斷源,打開中斷,允許高級別的中斷請求打斷低級別的中斷處理程序,接著執行真正為某中斷源服務的中斷處理程序,關閉中斷。防止在恢復過程中被中斷。恢復現場,在程序恢復后,打開中斷,接收新的中斷。

      • 中斷向量,中斷向量地址,中斷隱指令,中斷屏蔽字?

      中斷向量,在CPU響應中斷后,必須有中斷源提供地址信息,引導程序進入中斷處理子程序。用來形成相應中斷處理子程序的入口地址或存放相應中斷處理子程序的首地址就是中斷向量地址。

      中斷隱指令,CPU響應中斷后,經過某些操作,轉去執行中斷處理子程序,這些操作由硬件實現,稱為中斷隱指令。

      中斷屏蔽字,中斷源申請中斷,由軟件設置,使之不能響應的控制字稱為中斷屏蔽字。

      • I/O端口和I/O接口區別?I/O端口編址?

      接口是主機和外設之間的一種緩沖電路,包括硬件電路和軟件控制,現在接口是可編程的大規模集成電路芯片

      端口,接口電路通常有三種寄存器,數據輸入輸出緩沖寄存器,控制寄存器,狀態寄存器。這些寄存器被稱為端口。對I/O設備的訪問就是通過對端口的訪問實現,每個端口賦予一個唯一的地址碼,稱為端口地址。

      端口兩種編址方式。統一編址,獨立編址。

      統一編址,將端口當做寄存器單元,與內存統一編址。端口和內存的操作指令統一,所以功能強。但端口占用了內存的地址空間,使存儲容量減少。

      獨立編址,端口和內存各自擁有獨立的地址空間。端口不占用內存空間。80x86采用獨立編址。

      I/O端口譯碼,使用邏輯門電路譯碼,譯碼器譯碼,比較器譯碼,PROM和GAL譯碼。

      • 顯卡,顯卡作用,原理?

      顯卡,全稱顯示接口卡,將計算機系統所需要顯示的信息進行驅動轉換,并向顯示器提供轉換掃描信號,控制顯示器的正確顯示。

      首先將CPU送來的數據送到北橋,再送到GPU芯片進行處理。將芯片處理完的數據送到顯存。

      從顯存讀出數據再送到RAM DAC進行數據轉換(數據信號轉模擬信號),將轉完的模擬信號送到顯示屏。

      • 什么是軟件危機?典型表現?產生原因?

      軟件危機是計算機軟件開發和維護過程中遇到的一系列問題。有以下表現。

      軟件的產品質量達不到要求。用戶對軟件系統不滿意。軟件維護困難。軟件沒有合適的文檔資料。

      對軟件開發成本和進度估計不準確。軟件成本在計算機總成本占比越來越大。

      軟件開發生產率的提高不能滿足社會對軟件產品增長的需求。

      產生軟件危機主要有以下原因。

      軟件規模龐大,程序復雜性隨著程序規模增大以指數級增長。

      軟件是計算機的邏輯部件,而不是物理部件,缺乏可見性。軟件開發缺乏科學的管理和控制。

      只重視軟件本身,而忽視其配置部分。輕視軟件維護。

      軟件可靠性缺乏嚴格的標準,質量無法保證。對用戶要求沒有完整的認識,就開始寫程序。

      • 軟件產品的特性?

      軟件產品是邏輯實體,不是物理實體,具有抽象性。軟件開發和硬件不同,沒有明確的生產過程。

      軟件開發受計算機系統的限制,對計算機系統有依賴性。

      軟件開發至今是手工作坊的形式。軟件使用期間,沒有硬件的磨損,老化問題。

      軟件成本非常昂貴,包括人工費,宣傳費,運營費和稅收。

      軟件本身就很復雜,不可預見實際問題的復雜性(需求改變),不可預見外界環境的變化(斷電,硬盤已滿,網絡故障,病毒),程序邏輯結構的復雜性(看別人程序困難)等。

      • 什么是軟件工程?軟件工程有那些基本原理?

      軟件工程是指導計算機軟件開發和維護的一門工程學科。生產出按期交付,預算范圍內,滿足用戶需求,質量合格的軟件產品。主要有以下基本原理。

      分階段的生命周期嚴格管理。嚴格的產品控制。堅持階段評審。結果能夠審查。現代化程序設計技術。開發人員少而精。不斷改進軟件。

      • 什么是軟件工程方法學?包含哪些要素?常用的方法學有哪些?

      通常在軟件生命周期全過程使用的一整套技術方法集合稱為方法學,也稱為范型。

      軟件工程方法學包含三個要素。方法,工具和過程。

      方法,完成軟件開發各項任務的技術方法。

      工具,運用方法提供的自動或半自動軟件工程支撐環境。

      過程,獲得高質量軟件需要的一系列任務框架,規定了各項任務的步驟。

      使用最廣泛的軟件工程方法學,傳統方法學和面向對象方法學。

      傳統方法學(結構化范型)。采用結構化技術(結構化分析,結構化設計,結構化實現)完成軟件開發。

      把軟件生命周期分為若干個階段,然后順序完成各階段任務。

      面向對象方法學(面向對象范型)。面向對象方法=對象+類+繼承+消息通信

      使用面向對象范型時,開發出的軟件是由相對小的,獨立的單元組成。面向對象降低了軟件產品的復雜度,簡化軟件開發與維護工作。

      • 軟件生命周期?

      軟件生命周期分為軟件定義,開發,維護三個階段。

      軟件定義。通常分為三個階段,問題定義,可行性分析,需求分析。

      問題定義,回答了要解決什么問題?可行性分析,回答對上一階段問題有行得通的方案?需求分析,為了解決這個問題,目標系統必須做什么,就是確定目標系統具備哪些功能?

      軟件開發。通常分為四個階段,總體設計,詳細設計,編碼和單元測試,綜合測試。

      總體設計,回答應該怎樣實現目標系統?詳細設計,回答了應該怎樣具體實現這個系統?編碼和單元測試,寫出正確,易理解,易維護的程序模塊。綜合測試,通過各種類型的測試使軟件達到目標要求。

      軟件維護。通過各種必要的維護使系統持久滿足用戶需求。軟件使用過程中發現錯誤加以維護,環境改變時修改軟件適應新環境。有新要求時及時改進。每一次維護本質上是壓縮和簡化的定義和開發過程。

      • 需求分析準則,需求分析的任務?

      理解并描述問題的信息域,建立數據模型。定義軟件的功能,建立功能模型。

      描述外部事件結果的軟件行為,建立行為模型。對數據,功能,行為模型進行分解,用層次的方式展示細節。

      需求分析主要任務

      確定對系統的綜合要求,包括功能需求,性能需求,可靠性和可用性需求,接口需求等。

      分析系統的數據要求。導出系統的邏輯模型。修正系統開發計劃。

      • 總體設計和詳細設計的任務?

      總體設計主要有方案設計和軟件體系結構設計。

      方案設計,首先設想實現目標系統的各種可能方案,根據系統規模和目標,綜合技術,經濟和操作選出若干個可行方案。再綜合分析,對比各方案的利弊,選出一個最佳方案。

      軟件體系結構設計,確定軟件系統中每個程序由哪些模塊組成,以及這些模塊之間的關系。

      詳細設計主要有三項任務。過程設計,數據設計,接口設計。

      過程設計,軟件體系結構中每個模塊的實現算法。數據設計,軟件中所需的數據結構。接口設計,軟件內部各模塊之間,軟件和協作系統之間,軟件和用戶之間的通信方式。

      • 軟件過程,使用那些模型描述軟件過程?

      軟件過程,為了獲得高質量軟件需要完成的一系列任務框架,規定了完成各項任務的工作步驟。

      軟件過程定義了運用技術方法的順序,交付的文檔資料,保證軟件質量的管理措施。通常使用生命周期模型來描述軟件過程。

      瀑布模型,傳統軟件工程方法學中的軟件過程都可以用瀑布模型描述。

      優點,規定開發人員使用規范的技術方法,嚴格規定各個階段提交的文檔,每階段結束前有嚴格的技術審查和管理復審。

      缺點,軟件交付給用戶之前,用戶只能通過文檔了解產品,開發人員和用戶缺乏溝通,導致開發出的軟件不能真正滿足用戶需求。

      快速原型模型,是快速建立起來,可在計算機上運行的程序,它所完成的功能往往是最終軟件產品所有功能的子集。

      優點,使用這種軟件過程開發出的軟件產品能滿足用戶的真實需求。開發過程基本上是線性順序過程。

      增量模型,把軟件產品作為一系列增量構件來設計,編碼,集成和測試。每個構件由若干個相互協作的模塊構成,并能完成相對獨立的功能。

      優點,短時間內向用戶提交完成部分工作的產品。逐步增加產品功能,減少全新軟件帶給用戶的沖擊。

      螺旋模型,實質是一種在快速原型模型的每個階段之前增加了風險分析過程。

      優點,有利于軟件的重用。有利于把軟件質量作為軟件開發的主要目標。減少過多測試和測試不足帶來的風險。軟件維護和軟件開發沒有本質區別。

      噴泉模型,軟件開發過程各階段之間的迭代或同一階段內各個工作步驟之間的迭代,在面向對象范型中很常見。

      噴泉模型充分體現了面向對象軟件開發過程迭代和平滑過渡的特性。

      • 軟件設計過程中遵守哪些原理?

      模塊化和模塊獨立。模塊化就是把程序分成獨立命名且可獨立訪問的模塊。每個模塊完成一個子功能,全部模塊集合成一個整體,可以完成指定的功能,滿足用戶的需求。

      模塊獨立是指導模塊劃分和組織最重要的原理。開發具有獨立功能且和其它模塊沒有過多相互作用的模塊就能做到模塊獨立。

      抽象。現實中,一些事物,狀態或過程總有相似之處,把這些共性集中概括,忽略差異,這就是抽象。一個復雜的軟件系統由一些高級抽象概念理解和構造。這些高級概念又可以由低級的概念理解和構造。如此下去,直至最底層元素。每級抽象層次的一個概念將以某種方式對應于程序中。

      逐步求精,看做是一項把一個時期內必須解決的種種問題按優先級排序的技術。

      信息隱藏,設計軟件模塊時,使一個模塊內包含的信息(過程和數據)對不需要這些信息的模塊來說不可訪問。

      局部化,把一些關系密切的軟件元素物理地址彼此靠近,局部化有助于信息隱藏。

      • 什么來度量模塊的獨立性?

      內聚,一個模塊內部各個元素彼此結合的緊密程度,是信息隱藏和局部化概念的自然擴展。設計軟件時,應該做到高內聚。

      耦合,一個軟件結構內不同模塊之間的互聯程度,耦合程度取決于模塊間接口的復雜程度。在軟件設計中應該盡可能的使用松耦合。

      • 一個好程序遵循的規則?

      程序內部有好的文檔。數據說明易于理解。語句構造盡可能簡單直觀。輸入輸出遵循人機交互準則。效率滿足用戶需求。盡可能少的運行時間。盡可能少的占用存儲器。

      • 什么是測試?

      軟件測試的目標發現程序中的錯誤。

      軟件測試的準則。所有的測試追溯到用戶需求。在測試之前制定測試計劃。從小測試到大測試。由獨立的第三方從事測試工作。

      軟件測試的方法。白盒測試,黑盒測試。

      軟件測試的步驟。模塊測試,子系統測試,系統測試,驗收測試。平行測試。

      • Alpha測試和Beta測試?

      Alpha測試。用戶在開發者場所測試,開發者對用戶指導之下的測試。開發者負責記錄錯誤和使用中的問題。

      Beta測試。在客戶場所進行,Beta測試是開發者不能控制的真實場景中,用戶記錄測試中遇到的一系列問題,并把這些問題報告給開發者,開發者再做出修改,發布最終軟件產品。

      • 什么是白盒測試?白盒測試方法?

      白盒測試是測試者完全知道程序的結構和處理算法。按照程序內部的邏輯,測試程序。檢測程序中通路是否都按照特定要求正常工作。

      邏輯覆蓋。有選擇的執行程序中最具代表性的通路是替代窮盡測試唯一方法。

      語句覆蓋。被測試的每個語句至少執行一次,只關心表達式的值,不關心取不同值的情況。邏輯覆蓋標準弱。

      判定覆蓋。每個語句執行一次,每個判定的每個分支都執行一次。邏輯覆蓋程度稍強,但仍不是很強。

      條件覆蓋。不僅每個語句執行一次,判定表達式中每個條件都取各種可能的結果。邏輯覆蓋程度比判定覆蓋強一點。

      判定/條件覆蓋。使判定表達式中的每個條件都取到各種可能的值,每個判定表達式取到可能的結果。

      條件組合覆蓋。每個判定表達式中條件的各種可能組合至少出現一次。

      點覆蓋。點覆蓋標準和語句覆蓋標準相同。

      邊覆蓋。邊覆蓋標準和判定覆蓋一致。

      路徑覆蓋。選取足夠多的測試。每條執行路徑可能執行一次。

      控制結構測試。

      基本路徑測試。從該基本集合導出的測試用例保證程序中每條語句執行一次。

      條件測試。著重測試程序中的每個條件,不僅是檢測程序條件中的錯誤,而是檢測程序中的其它錯誤。

      循環測試。簡單循環,串接循環,嵌套循環。

      • 黑盒測試?

      黑盒測試完全不考慮程序內部結構和處理過程。是對程序接口的測試。

      等價劃分,把程序的輸入類劃分成若干個數據域,導出測試用例。

      邊界值分析,處理邊界情況時,程序最容易出現錯誤。

      錯誤推測,不同類型不同特點的程序有一些特殊的容易出錯的情況。

      • 面向對象思想?

      對象。具有相同狀態的一組操作集合,對象是屬性值和操作的封裝。

      類。對有相同屬性和行為的一個或多個對象的描述。

      實例。以某個特定的類為樣板建立的具體對象。

      方法。對象所執行的操作,也就是類中定義的服務。

      屬性。類中定義的數據,對客觀世界實體具有性質的抽象。

      封裝。就是信息隱藏,通過封裝對外界隱藏了對象的實現細節。

      繼承。子類自動共享父類中定義的數據和方法。

      多態。根據該對象所屬類動態選用類中定義的實現算法。

      重載。參數特征不同或被操作數類型不同時,實現函數的算法或運算符的語義不同。

      • 軟件開發中一般產生哪些文檔?

      可行性與計劃研究階段。可行性研究報告,說明軟件項目在技術,經濟和社會條件的可行性。項目開發計劃,開發人員數,開發進度,預算,所需軟硬件問題。

      需求分析階段。軟件需求說明書,用戶和開發者對該軟件初步認識。數據要求說明書,開發過程中處理數據和數據采集的描述。初步用戶手冊,用戶初步了解軟件各個功能。

      設計階段。

      概要設計說明書,程序系統的基本流處理,組織結構,模塊劃分,功能分配,接口設計,運行設計,數據結構設計,處理錯誤設計。

      詳細設計說明書,軟件系統中各層次每一個模塊設計的考慮。

      數據庫設計說明書,對數據庫中的標識,邏輯結構,物理結構做出具體的設計規定。

      測試計劃,本計劃編制是為了提供一個對軟件的測試計劃。

      實現階段。用戶手冊,用戶了解軟件的各個功能;操作手冊,向操作人員提供每一個模塊的具體過程;模塊開發卷宗,每完成一個模塊就編寫一份,把所有的模塊開發卷宗匯集起來;測試計劃。

      測試階段。模塊開發卷宗(終稿);測試分析報告;開發進度月報;項目開發總結報告;

      運行和維護階段。

      • 操作系統,設計目標,功能,特征,類型? 

      操作系統是為了用戶能夠方便的使用計算機軟硬件資源而設計的系統軟件。操作系統的設計目標有

      1. 方便性,提供方便,統一的用戶接口。
      2. 有效性,管理各種軟硬件資源,組織工作流程,提高工作效率。
      3. 可擴展性,為了匹配硬件及計算機體系結構的不斷發展,操作系統應能夠擴展各種功能。

      操作系統具有 處理機管理,存儲器管理,設備管理,文件管理,用戶接口的功能。
      操作系統具有并發性,共享性,虛擬性,異步性。
      操作系統有,批處理系統,分時系統,實時系統,單用戶系統,網絡系統,分布式系統。

      • 什么是微內核?

      微內核操作系統可以有效的支持多處理機的環境,非常適合分布式系統。

      1. 微內核有足夠小的內核,不是操作系統的全部,而是操作系統的一部分。
      2. 采用C/S模式,將操作系統的一部分放入微內核,將操作系統的大部分放入微內核外部的一組服務器中。
      3. 采用“機制和策略分離”,一般將機制放在內核底層,將策略放在內核高層。而在微內核中將機制放入微內核。這樣才使微內核足夠小。
      4. 采用面向對象的設計技術

      功能:進程管理,存儲器管理,中斷處理。
      優勢:可擴展,高可靠,可移植,支持分布式,面向對象。

      • 操作系統中硬實時和軟實時?

      硬實時系統是一個剛性的,不可改變的時間限制,不允許任何超時的錯誤。軟實時的時限可以是柔性靈活,可以容忍偶然的時限錯誤。

      • 系統調用,及過程。

      系統調用是應用程序與操作系統之間的接口。應用程序可以通過系統調用進行通信,獲得操作系統的服務。系統調用不僅僅面向應用程序,也面向OS中的其它部分。如命令處理程序。

      系統調用是OS為了擴充機器功能,增強系統能力,方便用戶使用而建立。是用戶編程時與操作系統之間交互的接口。
      系統調用的處理步驟,
      首先由用戶態轉為系統態,再由硬件和內核執行處理程序。保護被中斷的CPU環境,處理機狀態字PSW,程序計數器PC,系統調用號,用戶棧指針,通用寄存器內容等壓入堆棧。再由用戶定義的參數放到指定的地址保存起來。
      然后,分析系統調用類型,轉去執行相應的系統調用處理子程序。
      最后,在系統調用處理子程序執行完畢后,返回被中斷的CPU現場,再返回中斷進程或新進程。

      • 為什么有用戶態,核心態?什么時候用戶態轉為核心態

      限制不同程序之間的訪問能力,CPU劃分出兩個權限等級,用戶態,核心態。

      當系統發生中斷,異常,系統調用,執行特權指令均可由用戶態轉為核心態。

      • 總的來說,操作系統提供的服務可以分為哪兩類?

      第一類是OS為各個并發執行的進程提供保護功能。各個進程只能訪問各自的存儲空間,不允許破壞其它用戶占有的文件,進程訪問各設備只能通過操作系統的干預。

      第二類是指擴展機器功能,為用戶提供服務。如虛擬存儲管理,文件系統。

      • 參數在操作系統之間的傳遞有哪些方式?

      通過寄存器來傳遞參數;將參數的地址放置寄存器中,再傳遞;由程序將參數地址壓入堆棧,操作系統再將參數彈出堆棧;

      • 操作系統為用戶提供哪些接口?區別是?

      為用戶提供了命令級接口,供用戶組織和控制作業的執行以及管理計算機系統。程序級接口,編程人員使用系統調用請求操作系統來提供服務。

      • 分時系統,實時系統特點及區別?

      分時系統特點

      1. 多路性,多個用戶共用同一臺計算機,從宏觀層面看,是多個用戶同時使用一個CPU和其它資源,從微觀層面看,是多個用戶在不同時刻輪流使用計算機。
      2. 獨占性,各終端彼此獨立,互不干擾使用一臺主機。用戶感覺在獨占了一臺機器。
      3. 及時性,主機對各終端用戶的請求能夠快速的做出響應。
      4. 交互性,采用人機對話的方式,各終端用戶直接輸入,調試,運行程序。

      實時系統是指系統對特定輸入快速做出響應。

      1. 實時性,主機快速對各種請求做出響應并處理。
      2. 可靠性,安全性,實時系統的故障帶來的后果無法估量,因此要更加注重其可靠性。

      分時系統和實時系統的區別。

      1. 設計目標不同,前者提供一個通用的交互式開發運行環境,后者為特殊用途提供專用系統。
      2. 交互性強弱不同,前者交互性強,后者交互性弱。
      3. 響應時間不同,前者以用戶能接受的響應時間為標準,后者與受控對象及應用場合有關。
      • 程序和進程的區別,進程和線程的區別?作業和進程的區別?為什么引入進程,線程?

      程序和進程的區別

      1. 進程是一個程序的動態執行過程,具有動態性。程序是一組指令的有序集合,具有靜態性。
      2. 一個進程可以執行一個或多個程序,同一程序可以由幾個進程同時執行。
      3. 進程可以獨立的接受調度,獨立的分配單位,獨立的運行,程序不可以。
      4. 程序和進程都包括數據段和程序段,進程還有進程控制塊PCB這個數據結構。

      進程,線程關系,區別?

      線程是進程的一個執行單元。一個線程屬于一個進程,一個進程有多個線程,至少一個線程。同一進程的所有線程共享進程所有資源。不同進程間的線程要通過消息通信實現同步。處理機上真正運行的是線程。

      1. 進程是系統資源分配的基本單位,線程是處理機調度的基本單位。
      2. 在創建或撤銷進程時,系統都要分配回收資源。導致進程的系統開銷明顯大于線程的開銷。進程有獨立的地址空間,進程崩潰后不會對其它進程產生影響。線程只是進程的一個執行體,有自己的堆棧和局部變量,但沒有單獨的地址空間。一個線程崩潰等于整個進程崩潰,所以多進程的程序比多線程的程序更健壯,但在進程切換時,耗費資源大,效率差。
      3. 進程是擁有資源的基本單位,線程不擁有資源,但可以訪問資源。
      4. 進程間可以并發執行,同一進程多個線程也可以并發執行。

      進程,作業區別

      進程是一個程序在一組數據集合上的動態執行過程。作業是用戶需要計算機完成的各種任務,是要求計算機工作的集合。作業包括作業提交,作業收容,作業執行,作業完成。進程就是對已提交程序所執行過程的描述。主要區別如下。

      1. 作業是用戶向計算機提交任務的任務實體,一旦提交,作業就會保存在外存的作業等待隊列中等待運行。進程是對用戶提交任務的執行體。進程一旦被創建,總有一部分存放于內存。
      2. 一個作業由多個進程組成,至少由一個進程組成。
      3. 作業的概念只出現在批處理系統中,而進程的概念存在于任何多道程序系統中,就是操作系統分配資源的基本單位。在windows系統中,進程又被細化成線程,允許一個進程有多個獨立運行的更小單位。

      引入進程是并發執行程序,提高系統資源利用率和吞吐量。進程的互斥和同步是進程間競爭和協作。
      引入線程是降低處理機的空閑時間,降低處理機切換調度造成時間和空間的開銷。

      •  進程同步

      在操作系統中引入了進程,提高了系統資源利用率和吞吐量,但是也使得系統變得復雜。如果沒有合理的進程管理方式,必然引起進程對系統資源的無序競爭,使系統變得混亂。實現對并發進程的有效管理,引入了同步機制。進程同步應遵循空閑讓進,忙則等待,有限等待,讓權等待。實現同步有硬件機制,信號量機制,管程機制。

      • 饑餓狀態?和死鎖的區別?

      等待時間給進程推進和響應帶來明顯影響稱為進程饑餓。饑餓不一定使系統發生死鎖,但一定讓系統中某個進程產生無限期推遲。

      饑餓和死鎖的差別是,饑餓的進程可以是一個,但是死鎖的進程必須是兩個以上。處于饑餓狀態的進程是就緒狀態,處于死鎖的進程是阻塞狀態。

      • 調度的幾種方式?

      高級調度,又稱作業調度,把處于后備隊列中的作業調入內存,創建進程,排在就緒隊列中。

      中級調度,把暫時不運行的進程調出內存,排在掛起隊列上。

      低級調度,又稱進程調度,為處于就緒隊列中的某個進程分配處理機資源,從而執行。

      • 進程切換系統內核的處理過程?忙等的概念?

      當進程切換,內核需要保存進程的當前狀態,包括內存的分配狀況,CPU中各種寄存器的內容。上下文切換一般涉及到系統架構的操作,包括刷新數據和指令高速緩存。忙等是進程在循環隊列中,同時還競爭處理機資源。忙等可以消除,可以通過阻塞等待的進程,在合適的時機再喚醒該進程。但同時會造成阻塞和喚醒的時間開銷。

      • 什么是P,V操作?

      信號量是表示一個資源的實體,是一個就緒隊列中的整形變量。PV操作和信號量有關。P代表申請一個資源,V代表釋放一個資源。PV操作是不可中斷的操作,稱為原語。如果把信號量看做共享資源,那么PV操作就是臨界區。信號量除了賦初值外,其余都由PV操作執行。

      • 死鎖?死鎖的必要條件?死鎖的解決方法?

      系統中一組進程都占有資源,每個進程也都在等待其它進程釋放資源,導致系統一直無法向前運行,此時稱系統處于死鎖狀態。

      產生死鎖的四種必要條件。

      1. 互斥條件
      2. 不可剝奪條件
      3. 占有且等待條件
      4. 環路條件

      死鎖的解決方法包括,死鎖預防,死鎖避免,死鎖檢測和恢復。

      1. 死鎖預防,破壞互斥條件,破壞不可剝奪條件,破壞占有且等待條件(資源靜態分配策略),破壞環路條件(資源有序分配策略)
      2. 死鎖避免,和死鎖預防對進程申請資源加以限制不同,死鎖避免是對進程申請資源進行檢查,根據檢查結果來決定是否分配資源。銀行家算法是典型的死鎖避免方式。
      3. 死鎖檢測和恢復
      • 存儲器及功能?

      存儲器主要任務是為多道程序提供良好的運行環境,方便用戶使用存儲器,提高存儲器的利用率及在邏輯上擴充存儲器。

      1. 分配和回收內存,分配內存空間或回收系統,用戶程序所釋放的內存空間。
      2. 地址轉換,將邏輯地址轉為物理地址。
      3. 擴充存儲空間,使用虛擬存儲或自動覆蓋技術為用戶提供比內存空間大的多的地址空間,從邏輯上擴充內存。
      4. 地址保護,保證進入內存的各道作業在各自的存儲空間內運行,互不干擾。
      • 動態分區存儲管理思想?

      動態分區存儲管理根據用戶程序大小,動態的劃分內存區,所以分區數目無法預估,分區大小也不一致。動態分區相比于固定分區明顯的提高存儲空間的利用率,但需要為用戶程序分配連續的主存空間,所以難免會產生內存碎片。

      • 程序的裝入有以下幾個階段,方式?

      應用程序從用戶編寫的源代碼到在內存中運行,需要三個階段。首先,編譯程序將源代碼編譯成目標模塊。然后,鏈接程序把目標模塊和庫函數鏈接形成完整的裝入模塊。最后,裝入程序把裝入模塊裝入內存執行。
      絕對裝入,在編譯時就知道程序駐留在內存的物理地址,編譯程序產生含有物理地址的目標代碼。
      可重定位裝入,根據內存的情況,將裝入模塊裝入到合適的位置,地址變換通常在裝入時一次完成,之后,不可更改。稱為靜態重定位。操作系統為程序分配一個以某地址為起始地址的連續主存區域,重定位時,程序中指令或操作數的邏輯地址加上起始地址就得到了物理地址。
      動態重定位,允許程序在運行時可以移動位置,裝入模塊在裝入內存空間時得到的也是相對地址,只有程序執行過程中訪問到指令和數據時,才將要訪問的指令和數據地址轉為物理地址。動態重定位的實現要靠硬件地址變換機構。

      • 程序的鏈接方式?

      1. 靜態鏈接,將目標模塊和所需庫函數鏈接,形成一個完整的可執行程序,以后不再拆分。
      2. 裝入時動態鏈接,對目標模塊在裝入內存時采用邊裝入邊鏈接的方式。
      3. 運行時動態鏈接,直到程序運行過程中需要一些模塊,才對這些模塊進行鏈接。
      • 碎片,拼接技術?

      碎片有內部碎片和外部碎片兩種。
      外部碎片,系統中無法利用的小存儲塊。內部碎片,分配給作業的存儲空間未被利用的部分。
      當系統運行一段時間后,內存會出現一部分的碎片,拼接技術就是解決碎片問題的方法。
      把存儲器中已分配的分區移動到一端,使本來分散的小分區連接成一個大分區。這種移動小分區拼接成大分區的方法稱為拼接技術

      • 虛擬存儲器,以及相關算法?

      根據程序的局部性原理,一個作業在運行之前,先將一部分裝入內存,另一部分留在磁盤,等到需要時,再裝入內存。這樣就可以用小的內存空間運行大的作業,也可將多個進程裝入內存,并發執行。這樣在用戶看來,系統的存儲容量要比實際存儲容量大的多。這種存儲方式稱為虛擬存儲。
      FIFO算法,每次淘汰最先進入內存的頁面,也是淘汰駐留內存時間最多的頁面。
      LRU算法,選擇最近最久未被使用的頁面淘汰。

      • 為什么要分頁?分頁需要哪些硬件支持?如何用分頁實現虛擬存儲?實現虛擬存儲需要哪些硬件支持?

      分頁是將進程的邏輯地址空間分成若干個大小相同的頁。由于內存空間有限,無法一次性調入全部進程,所以需要分頁依次調入。

      分頁需要頁表,地址轉換機構(邏輯地址寄存器,物理地址寄存器,頁表寄存器,快表)等硬件。

      虛擬存儲是為了擴充主存空間設置的一種存儲方式。分頁虛擬存儲是將作業放入磁盤,調用作業時,不把全部作業裝入主存,而是將一些立即執行的作業頁面調入主存,執行過程中遇到不在主存的頁,再把它們動態裝入。

      實現虛擬存儲需要,分頁/段的頁表或段表,缺頁中斷機構,地址轉換結構。

      • TLB?

      TLB在處理機訪問內存數據時做地址轉換,可以叫做一個旁路緩沖,是一個具有并行查詢能力的高速緩沖存儲器。TLB存放了頁表文件,記錄了虛擬地址和物理地址的之間的映射關系。當應用程序查詢出一個虛擬地址時,會從頁表中找到物理地址,再訪問物理地址。

      • 分頁存儲管理系統虛擬地址轉為物理地址過程?
      1. 是否越界,若是,則中斷。若不是,則繼續尋址。
      2. 查找快表,若找到頁表項,修改訪問位,形成物理地址。若沒有,繼續尋址。
      3. 查找頁表,若找到頁表項,修改訪問位,形成物理地址,頁表項放入快表。若沒有,產生缺頁中斷,繼續尋址。
      4. 若內存沒有滿,則將外存調入內存。否則,置換一頁出內存,再調入一頁入內存。
      5. 修改頁表。

      分頁存儲管理系統虛擬地址轉為物理地址

      段頁式存儲管理中,地址映像表,每個作業或進程一張段表,每個段一張頁表。

      抖動是指剛被換出的頁很快又要被訪問,為此還需要再換出其它的頁,而該頁也很快被訪問。如此頻繁的置換頁面,大部分時間都花在置換頁面上,所以不合適的置換算法是導致系統抖動的根本原因。

      對信號量進行V原語操作后,若信號量值大于0,則表示沒有進程等待使用該資源,該進程繼續調度或轉進程執行。若信號量值小于0,則表示有進程由于申請該資源而沒有得到分配,處于等待狀態,所以需要喚醒一個等待隊列,放入就緒隊列。

      • 分頁和分段的聯系和區別

      頁是信息的物理單位,分頁實現離散分配,提高內存的利用率,分頁僅僅是系統管理的需要,不是用戶的需要,對用戶透明。段是信息的邏輯單位,含有一組相對完整的信息,數據段,代碼段,堆棧段,為了滿足用戶而使用。

      頁的大小不固定由系統確定,邏輯地址分為頁號和頁內兩部分,由硬件實現,所以系統只有一種頁面,段的長度不固定,取決于用戶編寫的程序。

      分頁的作業地址空間一維,程序員只利用一個記憶符,線性地址的16進制,即可表示一個地址。段的作業地址空間二維,程序員在標識一個地址,既需要給出段名,又需要給出段內地址。

      頁段都有存儲保護機制,存取權限不同。段有讀寫,執行三種權限。頁只有讀寫兩種權限。

      • 頁面,塊或物理塊,頁表?

      頁面,作業地址空間被分成若干個大小相等的區域。塊,將內存空間分為和頁面大小相同的區域,這些區域被稱為物理塊。頁表,便于在內存中找到每個頁面對應的物理塊,系統為每個進程建立一個映射表,存儲頁號到物理塊號的映射。

      • 可變分區的保護采用哪種方式?

      界限寄存器,在CPU中設置一個下限寄存器和一個上限寄存器,存放用戶作業在主存中的上限和下限地址。一個寄存器作為基址寄存器,另一個作為限長寄存器。當CPU訪問主存,硬件自動將被訪問的主存地址和界限寄存器比較,判斷是否越界。如果未越界,按此地址訪問主存,否則產生程序中斷。

      存儲保護鍵機制,每一個被保護的存儲塊分配一個保護鍵,這個保護鍵相當于鎖,進入系統的每個作業也賦予一個保護鍵,放在PCB程序狀態字中,當選擇一個作業運行時,把它的鍵(相當于鑰匙)裝入一個特定的寄存器,對一個保護鍵與鑰匙不匹配存儲塊的訪問,都將產生保護鍵違例中斷,并中止該程序。

      • 緩沖區,緩沖池?

      由于CPU與外設之間存在速度不匹配的問題,所以需要緩沖技術來緩解這種矛盾。緩沖技術有三種緩沖。

      1. 單緩沖,OS在主存中設置一個緩沖區。
      2. 雙緩沖,OS在主存中設置兩個緩沖區。
      3. 緩沖池,OS在主存中設置一組緩沖區。

      處理機要讀入一個文件,先發出讀取指令,將文件讀入主存的緩沖區中,再讀入高速緩沖寄存器,再讀入處理機中的寄存器,處理機中的控制單元和邏輯單元進行處理,處理后邏輯單元將處理結果送至處理機中的寄存器。完成讀指令。

      由于計算機系統中的大量信息都是存儲在磁盤。系統在運行中不斷的執行讀寫操作,采用緩沖技術可以減少處理機對磁盤的訪問頻率,提高系統效率。

      • Cache?Cache需要注意什么?

      Cache是一種存取速度比一般RAM快的RAM,介于CPU和主存之間的一級存儲器,由靜態存儲芯片SRAM組成,容量比主存小,但速度比主存快很多,接近于CPU速度。Cache包括三部分。

      Cache存儲體,存放由主存調入指令和數據塊。地址轉換部件,建立目錄表實現主存地址到緩存地址的轉換。替換部件,在緩存已滿時按一定策略進行數據塊轉換,并修改地址轉換部件。

      Cache是為解決處理機和主存速度不匹配而提出的一種解決方案。使用Cache需要注意數據不一致的問題。尤其是在多處理器系統中,多個處理器對同一個數據進行操作,某個處理器操作共享數據時,其它

      處理器的Cache數據塊已成為過時的數據,如果不及時通知處理器更新數據,就會導致錯誤的處理結果。

      • Cache和主存的映射方式?

      全相聯映像是指將主存和Cache按照固定的大小進行分塊,內存的塊和Cache的塊可以任意對應,在Cache塊已滿的情況下,也允許替換出一個舊Cache塊。

      直接映像先將Cache分成若干塊,每塊大小相同,并對塊編號。同時根據Cache的容量將內存分成若干大小相同的區,每個區的容量和Cache容量相同。再對內存每區分塊,每塊大小和Cache塊相同,對每個區的塊編號。映像時,內存某區中的塊只能保存在與塊號相同的Cache塊中。

      組相聯映像是全相聯映像和直接映像的折中方案。先將Cache分成大小相同的區,再對每個區按照直接相聯的方式分塊,再編號。所以,Cache中有許多相同編號的塊。對內存按照Cache區的大小分區,再對每區按照Cache塊分塊。每個內存塊可以對應不同Cache區中相同塊號的塊。

      • 覆蓋,交換,原理及區別?

          由于內存空間有限,作業或進程比較大,不能一次性運行完,所以提出了對內存空間的各種管理方式,來實現小內存運行大程序的任務。

      1. 覆蓋,按自身邏輯把程序分成幾個相互獨立的模塊,不會同時執行的模塊可以共享同一塊內存,按照時間順序運行。程序員來劃分模塊和確定覆蓋關系,編程難度增加。
      2. 交換,把在內存中暫時不運行的進程,程序,數據都換出,把已經具備運行條件的進程和數據換入內存。交換技術由OS控制。
      • Belady異常?抖動原理?如何解決?

      對一個進程沒有分配它要求的全部頁面,有時出現分配的頁面數增加但缺頁率反而升高的現象。稱為Belady異常。

      在更換頁面時,如果要更換的頁面是很快又被訪問的頁面,那么在產生缺頁中斷后會再次發生缺頁中斷,使得系統的效率降低,此現象稱為抖動或顛簸。

      解決策略

      1. 如果頁面替換算法有誤,可以修改頁面替換算法。
      2. 如果內存運行進程過多,無法同時將頻繁訪問的頁面調入內存,則需要減少進程的數目。
      3. 終止該進程或擴充物理內存空間。
      • 什么是虛擬設備?操作系統為什么要引入虛擬設備?虛擬打印機的操作原理?

      將一臺獨占的物理設備虛擬成多臺邏輯設備,供多個用戶使用。這種經過虛擬的設備稱為虛擬設備。

      操作系統引入虛擬設備是用高速設備模擬低速設備,把慢速的獨占設備改造成多個進程共享的快速共享設備。

      當進程請求打印輸出時,操作系統并不是把實際打印機分配到該進程,而是在磁盤輸出井上分配一塊相關區域,該進程要輸出的數據高速存入輸出井的相關區域,輸出井的相關區域就是一個虛擬打印機。各進程的輸出數據都暫存在輸出井上,形成一個數據隊列,最后由SPOOLing技術將數據實際打印出。

      SPOOLing技術是慢速字符設備如何與計算機主機交換信息的一種技術,稱為假脫機技術。SPOOLing技術實際上是一種外圍設備同時聯機操作,又稱為排隊轉儲技術。在輸入和輸出之間增加了輸入井和輸出井的排隊轉儲環節,消除用戶的“聯機”等待時間。

      • 什么是設備獨立性?為何引入設備獨立性?

      設備獨立性就是應用程序獨立于物理設備。用戶程序中不直接調用物理設備,而是使用邏輯設備。系統執行時,將邏輯設備轉為物理設備,類似于存儲管理中的邏輯地址和物理地址。

      為了提高OS的可擴充性,可適應性,每種OS都提供了設備獨立性。用戶程序不使用物理設備,而是使用邏輯設備,轉為物理設備。執行I/O操作。

      操作系統中引入線程是為了提高系統效率,提高系統資源利用率,減少進程并發執行造成的系統開銷,使OS有更好的并發性。

      • 輪詢,中斷,DMA,通道?

      輪詢,是指用戶進程可以直接控制CPU與外設和主存與外設之間的信息傳遞。當用戶進程傳遞數據時,通過CPU啟動設備,此時用戶進程進入測試等待狀態,CPU不斷執行I/O測試指令測試設備狀態。

      中斷,當用戶進程需要傳遞數據時,CPU啟動I/O控制器,轉去執行其他程序,I/O請求結束后,向CPU發出中斷請求,CPU收到后才花很少的事件去處理。中斷是解決了CPU與外設之間只能串行工作的問題,也就是封裝好了CPU與外設之間相互測試的過程。但是每傳輸一次數據都要執行中斷處理程序,每執行一次中斷處理程序都要保護CPU現場,處理結束后還要恢復CPU現場。如果處理的I/O設備過多,CPU就會陷入這些I/O請求當中,無法執行其他程序。

      DMA,直接存取控制。引入了直接存儲器,外設直接與主存交換數據,沒有CPU的干擾,減少了CPU對主存的控制。DMA在中斷的基礎上,又封裝了傳輸數據的過程。DMA控制器包括,指令寄存器CR,數據緩沖寄存器DR,內存地址寄存器MAR,數據計數器DC。以CPU從磁盤讀入數據為例,描述DMA工作流程。

      CPU從磁盤讀入數據塊。向磁盤寄存器發送命令,該命令存放到CR。再發送要讀入的字節(符)數到DR。再發送讀入數據存放至內存的地址,該地址存放到MAR。把磁盤的源地址傳送至DMA控制器的I/O控制邏輯上。然后啟動DMA控制器來傳輸,此后一切傳輸都由DMA控制器來完成。

      通道是一個控制外部設備工作的硬件機制,相當于一個簡單的處理機。通道獨立于CPU,專門負責數據輸入,輸出,傳輸。對外部設備統一管理,代替了CPU對外設的控制,使I/O與CPU可以并行。通道是計算機和傳輸并行的基礎,提高整體性能。

      • 軟中斷,硬中斷?區別?

      軟中斷

      1. 是編程異常的中斷。
      2. 是通信進程來模擬硬中斷的一種方式。
      3. 是由程序運行時其他程序對該程序的中斷。
      4. 中斷源發送中斷請求或軟中斷處理,相應進程會執行中斷請求或完成軟中斷信號對應的功能。

      硬中斷

      1. 硬中斷由外部事件引發,具有隨機性和突發性。軟中斷是由中斷指令驅動,由程序控制,所以不具有隨機性和突發性。
      2. 硬中斷的中斷響應周期,CPU需要發送中斷回合信號,軟中斷的中斷響應周期,CPU不需要發送中斷回合信號。
      3. 硬中斷的中斷號由中斷控制器提供,軟中斷的中斷號由中斷指令提供,無需中斷控制器。
      4. 硬中斷可屏蔽,軟中斷不可屏蔽。
      • 磁盤概念,存儲,原理?

      磁盤是一種輔存設備。是構成計算機系統不可或缺的一部分。內部結構如下。

      磁盤內部結構磁盤內部結構

      磁盤的各種參數。

      • 磁道:當磁盤開始旋轉,磁頭保持移動的位置不變,會在磁盤上畫出一個圓形軌跡,此軌跡即是磁道。
      • 柱面:不同盤面上的相同磁道構成一個柱面。柱面數和每個盤面上的磁道數相同。
      • 扇區:每個磁道都可劃分成若干個大小相同的片段,此片段即是扇區。每個扇區大小512字節。
      • 盤面:硬盤的盤片,每個盤片都有正反兩面。

      磁盤容量計算:512B*扇區數*磁道數(柱面數)*盤面數

      特權指令:對I/O操作的指令,(啟動I/O,測試I/O,控制I/O指令),訪問程序狀態的指令,存取特殊寄存器的指令(中斷寄存器,時鐘寄存器)

      • 磁盤性能參數?磁盤調度?
      1. 尋道時間,磁頭定位到磁道所需的時間
      2. 旋轉時間,磁頭定位后,磁盤控制器開始等待,直到適當的扇區旋轉至磁頭所在位置。
      3. 存取時間,尋道時間+旋轉時間
      4. 傳輸時間,磁道,扇區定位后,磁頭通過下面旋轉的扇區,完成讀或寫的操作,稱為傳輸時間。

      磁盤調度就是在磁頭尋道的過程中,磁頭到達磁道的各種順序。

      CPU調度不影響CPU和I/O的使用時間,只影響進程的等待時間。

      RAID,獨立磁盤冗余陣列。把多塊獨立的硬盤按不同的方式組合形成一個硬盤組,提供比單個硬盤更高的存儲性能和提供數據備份技術。

      • 什么是文件目錄?文件目錄包含哪些信息?常用的目錄結構有哪幾種?

      文件目錄包括文件的一些基本信息。也稱為文件控制塊FCB

      文件目錄一般包括以下幾種信息。

      1. 文件的結構信息,邏輯結構,存儲結構。
      2. 文件的管理信息,文件的建立,保留,上次存取文件的日期和時間。
      3. 文件的存取權限控制信息,文件主所具有的存取權限,同組用戶所具有的存取權限,其它用戶所具有的存取權限。

      常用的文件目錄有一級文件目錄,二級文件目錄,多級文件目錄。

      • 文件在磁盤中的組織方式?

      順序組織。把邏輯文件的邏輯記錄順序的存儲到磁盤塊中,稱為順序文件。

      鏈接組織。邏輯文件的邏輯記錄任意的存放到各個磁盤塊中,使用指針鏈接各個磁盤塊,文件第一塊的地址和最后一塊的地址存放到FCB中,這樣的組織稱為隱式鏈接。

      把鏈接文件的各個指針都存入一張表中,稱為FAT表。每個磁盤只有一張FAT。在FCB中只存放首磁盤塊號。這種組織稱為顯示鏈接。

      索引組織。在主文件之外再建立一張關鍵字和磁盤塊對應關系的表。稱為索引表,主文件和索引表共同構成索引文件。

      • 什么是編譯器,解釋器?

      一個程序在運行之前,需要翻譯成一種能被計算機執行的形式,完成這項翻譯工作的軟件系統稱為編譯器。

      源程序被分割成多個模塊,需要一個預處理的程序聚合源程序,包括把宏定義轉為源語言語句。

      經過預處理的源程序傳給編譯程序,生成匯編語言程序。

      匯編語言程序由匯編器處理,生成可重定位的機器代碼。

      大型程序分割成多個部分編譯,可重定位的機器代碼有必要和其它可重定位的機器代碼以及庫文件連接,形成真正的機器代碼。鏈接器解決外部內存地址問題。

      加載器把所有可執行目標文件放到內存運行。

      解釋器并不通過翻譯的方式產生機器代碼,從用戶角度看,直接利用用戶提供的輸入執行源程序的操作。

      由一個解釋器產生機器代碼比編譯器快很多,但是編譯器的錯誤診斷比解釋器更好。

      • 編譯過程的具體步驟?

      我們把編譯器當做一個黑盒子,把源程序映射成一個語義上等價的目標程序,映射過程由兩部分組成,分析部分和綜合部分。

      分析就是把源程序分解為多個組成要素,在這些要素之上加入語法結構,使用這些結構創建源程序的中間表示。分析部分還會收集源程序信息,存放于符號表這種數據結構,符號表和中間表示一起傳送給綜合部分。

      綜合就是利用分析到的中間表示和符號表信息構造用戶期待的目標程序。

      詞法分析。讀入組成源程序的字符流,并組成有意義的詞素序列。詞法分析器產生鍵值對這種形式的詞法單元(token)作為輸出:(token-name,attribute-value)

      源程序包含 position=inital+60*rate賦值語句。詞法分析有下列表示。

      position是一個詞素,映射成詞法單元<id,1>,id是標識符的抽象符號,1表示符號表中position對應的條目。剩余在符號表中類似表示。

      語法分析。使用詞法分析生成詞法單元的第一個分量創建樹形中間表示。給出了詞法分析產生詞法單元流的語法結構。

      語義分析。使用語法樹和符號表中的信息檢查程序是否和源語言定義的語義一致。同時也收集類型信息,存放于語法樹或符號表中,以便在中間代碼生成過程使用。

      語義分析很重要的部分是類型檢查,檢查每個運算符是否有匹配的運算分量。

      中間代碼生成。在翻譯過程中,一個編譯器可以構造出多個中間表示,這些中間表示可以有多種形式。

      語法分析和語義分析后,編譯器產生明確的低級的或類機器語言的中間表示,看做某個抽象機器的程序,這種程序易于生成,輕松翻譯成目標機器上的語言。

      也可以考慮一種類似于匯編指令序列的三地址代碼的中間表示。

      代碼優化。試圖改進中間代碼,得到更好的目標代碼。更好意味著更快,更短或能耗更低的目標代碼。

      代碼生成。以源程序的中間表示作為輸入,映射到目標語言。如果目標語言是機器代碼,那就要為變量選擇寄存器或內存地址。然后,中間指令翻譯成完成相同任務的機器指令,代碼生成重要的方面是合理分配寄存器存放變量。

      符號表管理為每個變量名提供一個記錄條目,記錄各變量的屬性。這種數據結構允許編譯器迅速查到每個變量的記錄,并快速存放或獲取記錄數據。

      多個步驟組合成趟。前面的各步驟就是一個編譯器的邏輯組織方式。多個步驟的活動被稱為一趟。前面的詞法分析,語法分析,語義分析,中間代碼生成組合在一起可以成為一趟。代碼優化作為一個可選的趟,特定目標機生成代碼的后端一趟。

      • 數據庫操作
      • 登錄數據庫 mysql -uroot -pwkf19961014
      • 查看數據庫 show databases; 創建數據庫 create database test; 刪除數據庫 drop database test;進入數據庫 use test;
      • 創建數據表create table score(snum varchar(3),sname varchar(5));
      • 查看數據 show tables;   查看數據表屬性 show columns from score 查看定義的表 show create table score 刪除表 drop table score
      • 復制表 只復制表結構,不復制表數據 create table score1 like score  復制表,也復制表中數據 create table score2 as (select * form score)
      • 修改表名 alter table score rename score0  添加列 alter table score0 add column class varchar(10)  刪除列 alter table score0 drop class 修改列名,alter table score0 change course age tinyint 修改列的類型 alter table score0 modify sname varch
      • 插入數據 insert into score values('','','') 插入多行數據  insert into score values('','',''),('','',''),('','','')
      • 修改數據 update score set course='english' where set snum='007'  修改時使用表達式 update score0 set score=score+5 where score<90
      • 刪除數據 delete from score0 where snum='007'
      • 添加主鍵約束 alter table score0 add primary key (snum) 添加snum為表score0的主鍵
      • 添加外鍵約束 創建表時添加外鍵約束create table score(num varchar(5),score float,foreign key (num) references stu(snum));  創建表后添加外鍵約束 alter table score add foreign key (num) references stu(snum)
      • 增加自增長 auto_increment 通常和主鍵約束一起使用。
      • unique,表示唯一約束,該記錄的關鍵字不能重復。
      • 非空約束 not null 表示該字段不能為空
      • 默認值約束 default 'default'

      SQL數據類型,tinyint,大小1B,0-255,-127~128。int,大小4B,可以表示任意的整數數值。float,4B,表示7位小數。double,8B,15位小數。char,固定長度的字符串。varchar()不固定長度的字符串。二進制數據類型。時間類型date,3B,YY--MM--DD。time,HH:MM:SS,3B。datetime,8B,yy-mm-dd hh:mm:SS。

      • 什么是數據庫?

      數據庫就是長期存儲在計算機內有組織,可共享的數據集合。數據庫系統具有共享性高,冗余度低,數據獨立性高的特點。

      • 數據庫出現不一致性,原因?

      由于數據冗余,數據庫的并發控制不當造成,各種故障,錯誤,如軟硬件故障的失誤。

      • 數據庫系統特點?

      數據的結構化,數據庫系統實現整體的結構化,數據不是面向單一應用程序,而是面對整個組織或企業。這是數據庫系統區別與文件系統最主要的特征。

      數據共享性高,冗余度底,易擴充。

      數據的獨立性,數據庫中的三層模式和兩層映像保證了數據的獨立性。應用程序與數據庫中數據的存儲結構之間的物理獨立性,應用程序與數據庫中數據邏輯結構之間的邏輯獨立性。

      數據由DBMS統一管理和控制。具有安全性保護,完整性檢查,并發控制,數據庫恢復的功能。

      • 數據,數據庫,數據庫系統,數據庫管理系統?

      數據,描述事物的符號記錄稱為數據,數據有文字,圖像,圖形,音頻,視頻。數據與其語義不可區分。

      數據庫,長期存儲在計算機內,有組織,可共享的數據集合。數據庫中數據按照一定的數據模型組織,描述,儲存。數據庫中數據具有獨立性,冗余度底,可共享的特征。

      數據庫系統,在計算機系統中引入數據庫后的系統構成。數據庫系統包括數據庫,數據庫管理系統,應用程序,數據庫管理員。

      數據庫管理系統,是用戶和操作系統之間的一層數據管理軟件。科學的組織和存儲數據,高效的獲取和維護數據。數據庫管理系統具有定義,操縱數據,管理數據庫的運行,以及數據庫的建立和維護功能。

      • 使用數據庫系統的好處?

      提高了應用程序的開發效率。開發人員不必考慮數據的組織,存儲和數據的存取,這些工作都由數據庫管理系統來完成。

      當應用邏輯改變時,數據的邏輯結構也需要改變,此時數據庫系統提供了程序和數據之間的獨立性,所以數據邏輯結構改變就是DBA的責任。開發人員不必修改應用程序,簡化了應用程序的編制,減少了應用程序的修改和維護。

      使用數據庫系統可以減輕數據庫管理人員維護系統的負擔。總之,使用數據庫系統有集中管理數據,控制數據冗余,提高數據的利用率和一致性,管理和維護應用程序。

      • 文件系統和數據庫系統的聯系,區別?

      文件系統和數據庫系統都是計算機系統中管理數據的軟件。

      文件系統面向某一個應用程序,數據共享性差,獨立性差,冗余度高。記錄內有結構,整體無結構,數據由應用程序自己控制。

      數據庫系統面向現實世界,數據共享性高,冗余度底,具有物理獨立性和邏輯獨立性,數據結構化,由數據模型來描述。數據庫管理系統提供安全性,完整性,并發控制,數據恢復等功能。

      • 簡述適應于文件系統的實例,適用于數據庫系統的實例?

      數據的備份,軟件或應用程序使用過程中的臨時數據存儲使用文件系統比較合適。

      企業或部門的信息系統使用數據庫系統比較合適。某個工廠的信息管理系統,學生管理系統,人事管理系統,圖書館中的圖書管理系統都使用數據庫系統較為合適。

      • 數據模型概念,數據模型作用,數據模型三個要素?

      數據模型是數據庫中對現實世界的抽象工具,是數據庫中用于提供信息表示和操作手段的形式架構。

      數據模型是嚴格定義的概念的集合,這些概念精準的描述系統的靜態特性,動態特性,以及數據庫完整性約束。因此,數據模型包括數據結構,數據操作,完整性約束三部分。

      數據結構,所研究對象類型的集合,是系統的靜態描述。

      數據操作,對數據庫中各種對象允許進行各種操作的集合,對系統的動態描述。

      數據約束條件,完整性規則的集合,完整性規則對給定的數據模型中數據及其聯系所具有的制約規則。限定數據模型中的數據庫的狀態及其變化。

      • 概念模型?作用?

      概念模型用于信息世界的建模,是現實世界到信息世界的第一層抽象。是數據庫設計人員設計數據庫的有力工具,也是數據庫設計人員和用戶交流的語言。

      信息世界的基本概念有,實體,屬性,碼,實體型,實體集,聯系。

      實體:客觀存在并可相互區別的事物稱為實體。

      屬性:實體所具有的某一特性稱為屬性。

      碼:唯一標識實體的屬性集稱為碼。

      實體型:用實體名和屬性名的集合來刻畫和抽象同類實體,稱為實體型。

      實體集:同一類型的實體型合稱為實體集。

      聯系:實體的內部聯系是指組成實體的不同屬性之間的聯系。實體的外部聯系是指不同實體集之間的聯系。

      實體-聯系方法是常用的概念模型的表示方法,E-R圖來描述現實世界的概念。

      • 數據庫系統的結構

      數據庫有“型”和“值”的概念,模式相對穩定,實例則相對變動。數據庫有三級模式,模式,外模式,內模式。

      1. 模式,稱為邏輯模式。是數據庫中全體數據的邏輯結構和特征的描述,是所有用戶的公共視圖,一個數據庫只有一個模式。
      2. 外模式,也稱為子模式和用戶模式。是數據庫用戶能夠看見和使用的局部數據的邏輯結構和特征的描述,與某個應用有關的數據的邏輯表示。一個數據庫可以有多個外模式。
      3. 內模式,也稱存儲模式。它是數據物理結構和存儲方式的描述,是數據在數據庫內部的組織方式。一個數據庫只有一個內模式。

      數據庫的兩層映像,外模式/模式映像,模式/內模式映像保證了數據庫中數據較高的物理獨立性和邏輯獨立性。

      1. 外模式/模式映像,保證邏輯獨立性。當模式發生改變時,數據庫管理員對外模式/模式做出修改,可以使外模式保持不變,應用程序根據數據的外模式編寫,從而應用程序不必修改,保證數據的邏輯獨立性。
      2. 模式/內模式映像,保證物理獨立性。當數據庫的存儲結構發生改變時,數據庫管理員對模式/內模式做出修改,可以使模式保持不變,應用程序也不變,保證了數據的物理獨立性。
      • 數據定義,數據操作,數據控制,數據查詢?
      1. 數據定義DDL,create,drop,alter,關鍵字

      2. 數據操作DML,insert,update,delete關鍵字

      3. 數據控制DCL,revoke,grant關鍵字

      4. 數據查詢DQL,select關鍵字

      • SQL語言特點?

      1. 綜合統一,SQL語言包括數據定義DDL,數據操作DML,數據控制DCL,數據查詢DQL。

      2. 高度非過程化,SQL語言只需知道“做什么”。無需知道“怎么做”,操作過程由系統自動完成。

      3. 面向集合的操作方式,不僅操作對象,查詢結果是元組的集合,一次性插入,刪除,更新的對象也是元組的集合。

      4. 一種語言形式,兩種操作方式。SQL語言獨立于聯機交互,也可以嵌入到高級語言中,供程序員調用。

      5. 語言簡潔,易學易用。

      • 什么是基本表?什么是視圖?兩者的區別?視圖特點?視圖優點?所有視圖都是可以更新?哪類視圖可以更新?

      基本表是本身獨立存在的表,在關系數據庫中一個關系就是一個基本表。

      視圖是從一個或幾個基本表中導出的表。視圖本身不獨立存儲在數據庫中,是一個虛表。數據庫只存放視圖的定義,不存放視圖對應的數據,這些數據仍存放在導出視圖的基本表中。

      視圖的優點,簡化用戶操作,使用戶從多種角度看待同一數據,重構數據庫提供了邏輯獨立性,保護機密數據。

      視圖是不存放數據的虛表,對視圖的更新要轉為對基本表的更新。并不是所有視圖的更新能夠轉為唯一有意義的相應基本表的更新。所以并不是所有的視圖都可以更新。

      基本表的行列子集視圖一般可以更新。

      • 關系模型的三個成分

      數據結構,數據操作,完整性約束。

      關系數據語言有,關系代數語言ISBL,關系演算語言(元組關系演算語言,域關系演算語言),關系代數關系演算兩重特點語言SQL。

      • 域,笛卡爾積,關系,元組,屬性,主碼,候選碼,外部碼?

      域,具有相同數據類型的值的集合。

      笛卡爾積,不同域之間的一種集合運算。

      關系,笛卡爾積的一個子集稱為關系。關系是一張二維數據表。表的每一行為一個元組,表的每一列為一個屬性。

      候選碼,關系中某一屬性組的值能唯一標識一個元組,該屬性組為候選碼。

      主碼,一個關系有多個候選碼,選定一個作為主碼。

      外部碼,f是關系R的一個或一組屬性,但不是R的碼,f與關系S的碼ks相對應,則稱f為關系R的外部碼,簡稱外碼。

      • 關系,關系模式,關系數據庫?

      關系的描述稱為關系模式,關系是關系模式在某一時刻的狀態或內容,關系模式是靜態的,穩定的。關系是動態的,隨時間不短變化。

      關系數據庫有型和值之分。關系數據庫的型稱為關系數據庫模式,是對關系數據庫的描述,定義一些域以及在域上的某些關系模式。關系數據庫的值即為這些關系模式在某時刻所對應的關系的集合,稱為關系數據庫。

      • 數據依賴對關系模式的影響?

      數據依賴通過一個關系中屬性間值相等與否體現出數據間的相互關系。是現實世界屬性間相互聯系的抽象,是數據的內在性質,是語義的體現。函數依賴是數據依賴的一種。部分函數依賴,傳遞函數依賴會導致關系模式中的插入異常,更新異常,刪除異常,數據冗余等諸多問題。

      • 關系模型的完整性規則?參照完整性外碼為空條件?

      關系模型的完整性是對關系的某種約束條件。

      實體完整性,屬性A是關系R的一個主屬性,則屬性A的值不能為空。

      參照完整性,屬性F是關系R的外碼,它與關系S的某個主碼ks相對應,則R中每個元組在F上必須取空或等于關系S中某個元組主碼值。

      用戶定義完整性,針對某一具體關系數據庫的約束條件。反映某一應用所涉及數據必須滿足的語義要求。

      參照完整性中,F是關系R的外碼,但不是關系R的主碼,則F可以為空。如果F是外碼,但又是主碼,則F不能為空。

      • DBMS在實現參照完整性需要考慮的問題?

      參照關系的外碼值能否為空。

      刪除被參照關系的元組,有以下策略。

      1. 級聯刪除,同時刪除參照關系相關元組。
      2. 受限刪除,當參照關系的元組外碼值和被參照關系中要刪除元組主碼值相同時,才刪除參照關系的相關元組。
      3. 置空值刪除,將參照關系相關元組的外碼值置為空。

      參照關系中增加元組時,有以下策略。

      1. 受限插入,不允許在參照關系中插入。
      2. 遞歸插入,同時在被參照關系中插入一個元組,其主碼值為參照關系插入元組的外碼值。
      • 自然連接,等值連接?

      等值連接,從關系R,S的笛卡爾積中選取A,B屬性值相同的元組。

      自然連接,特殊的等值連接,兩個關系中要比較的分量必須是相同的屬性組,并在結果中把相同的屬性組去掉。若關系R,S有相同的屬性組,就可以自然連接。

      • 關系模型,范式?

      關系模型必須要求關系規范化,規范化的關系稱為范式。

      第一范式,列不可再分。

      第二范式,非主屬性完全函數依賴于主屬性。消除了非主屬性對碼的部分函數依賴。

      第三范式,非主屬性間都不傳遞依賴于主屬性。消除了非主屬性對碼的傳遞函數依賴。

      第四范式,主屬性間無依賴關系。

      • 關系范式中,關系的分解原則?完全函數依賴,部分函數依賴?多值依賴?多值依賴實例?

      無損連接,保持原有的依賴關系。

      關系模式中,函數依賴無法表示一對多的聯系,這些屬性之間沒有直接聯系,但有間接聯系。把這種沒有直接聯系,但有間接聯系的數據依賴稱為多值依賴。

      多值依賴對稱性,若X->->Y,則X->->Z。Z=U-X-Y。

      多值依賴傳遞性,若X->->Y,Y->->Z,則X->->Z-Y。

      函數依賴為多值依賴的特殊情況,若X->Y,則X->->Y。

      關系R(I,S,A)I為興趣小組,S為學生,A為興趣小組內活動。每個學生要求參加興趣小組內的所有活動,每個活動都要求所有學生參加。I->->S,I->->A。

      • BCNF的判斷準則?

      關系R屬于3NF,不存在主屬性對非主屬性的函數依賴,則稱R為BCNF。

      如果一個關系的每個函數依賴左部都是候選碼,則稱該關系為BCNF。

      如果一個關系每個決定因素都是候選碼,則稱為BCNF。

      關系R為1NF,且能決定其他屬性取值的屬性必定包含碼,則稱為BCNF。

      • 數據庫的安全性和完整性?

      數據庫的完整性是保證數據的正確性和相容性。正確性是指數據庫中的數據是符合現實中的語義。相容性是指同一個數據庫對象中的數據在不同的關系表中符合邏輯。數據庫完整性防止數據庫中存在不符合語義的數據。

      數據庫安全性是指保護數據庫,防止不合法使用數據庫造成的數據泄露,更改,破壞。

      數據庫安全的五種措施。

      用戶身份認證,是DBMS提供的最外層的安全方法,每一個用戶都有一個用戶標識,用戶標識包括標識名和標識號。

      多層存取控制,包括用戶權限和合法權限檢查。

      1. 自主存取控制,用戶可以自主的把存取數據的權限授予任何人,也可以把“授權”的權限授予任何人。
      2. 強制存取控制,對比主體敏感度和客體敏感度,決定主體是否有操作客體的權限。主體敏感度強于客體敏感度時,主體才能讀客體。主體敏感度弱于客體敏感度,主體能寫客體。強制存取控制是對數據本身進行安全標記,無論數據如何復制,標記和數據總是不可分割。只有符合密級要求的用戶才能操作數據,提供了更高級別的安全性。

      視圖機制,對不同的用戶創建不同的視圖,把數據對象限制在一定的范圍內。通過視圖可以把要保密的數據對無權限的用戶隱藏,這樣就可實現更高級別的數據保護。

      審計機制,將用戶對數據庫的各種操作都記錄到日志文件中,審計員利用審計日志來監控數據庫的行為,分析潛在的危險。

      數據加密,使用一定的算法對原始數據加密,不知道加密算法的操作無法獲取數據內容。數據加密包括存儲加密和傳輸加密。存儲加密有透明加密和不透明加密。傳輸加密有鏈路加密和端到端加密。基于SSL的可信傳輸是端到端加密。

      • 數據庫設計各個階段及其主要任務?

      需求分析,準確了解與分析用戶需求。

      概念結構設計,對用戶需求總結,歸納,抽象,形成一個獨立于DBMS的概念模型。

      邏輯結構設計,將概念模型轉為某個DBMS所支持的邏輯模型,并進行優化。

      物理結構設計,為邏輯模型選擇一個合適的物理結構,包括存儲結構和存取方法。

      數據庫實施,設計人員根據DBMS所提供的數據語言,工具,宿主語言,根據邏輯設計和物理設計的結果建立數據庫,調試運行,組織數據進入數據庫。

      數據庫運行,維護,數據庫運行階段對其評價,調整,修改。

      • 需求分析階段設計目標,調查內容?

      需求分析是調查現實世界中要處理的對象,了解原系統的工作狀況,明確用戶的需求,進而設計出新系統的功能。

      信息要求,數據庫要存儲哪些數據,用戶能從數據庫中獲得信息的內容和性質。

      處理要求,用戶要完成什么處理,對處理的響應有什么要求,處理方式的選擇之類。

      • 數據字典內容,作用?

      數據字典是數據庫系統中各種數據描述的集合。包括數據項,數據結構,數據流,數據存儲,數據處理。

      數據字典是關于數據庫中數據的描述,在需求分析階段建立,是概念設計階段的基礎。

      數據項是不可再分的數據單位,包括基本數據信息的類型,長度,取值范圍。

      數據結構是數據之間的組合關系。

      數據流是數據結構在系統內的傳輸路徑。

      數據存儲是數據結構停留或保存的地方。

      處理過程描述該過程的功能及處理要求。

      • 數據庫的概念結構,特點?數據抽象?概念結構的重要性?

      概念結構是信息世界的結構,真實而充分的反映現實世界,是對現實世界的一個概念模型。

      易于理解,用概念結構和不理解計算機的用戶交換意見。

      易于修改,當應用環境和應用要求改變時,容易對概念模型進行擴充和修改。

      易于向關系,層次,網狀模型轉變。

      概念結構是數據庫設計的關鍵階段,是對需求分析階段所得到的需求進行抽象,以此作為各種數據模型的基礎。更精確的使用DBMS實現這些要求。

      常使用E-R圖來描述概念模型。

      • 邏輯結構設計,步驟?

      邏輯結構設計是將概念結構設計階段設計好的E-R圖轉為選用的DBMS所支持的數據模型相符合的邏輯結構。

      邏輯結構設計階段的步驟

      首先將E-R圖轉為關系,層次,網狀等數據模型。

      再將關系,層次,網狀數據模型轉為DBMS所支持的數據模型。對數據模型進行優化。

      • E-R圖?E-R圖構成元素?E-R圖向關系模型的轉化規則?

      E-R圖是實體-聯系表示方法。是描述現實世界概念結構模型的方法。由實體型,屬性,聯系構成。

      實體型,用實體名和屬性名來刻畫和抽象同類實體。屬性,實體的某個特性,一個實體由若干屬性來刻畫。聯系,也稱關系。表示現實世界中實體內部或實體之間的某種聯系。

      一個1:1的聯系可以轉為一個獨立的關系模式,也可和其它關系模式合并。如果轉為一個獨立的關系模式,關系的屬性就是實體的屬性和聯系的屬性。關系的碼就是

      各實體的碼。如果合并其它關系模式,則該關系模式的屬性加入另一個關系模式的聯系構成新屬性。

      一個1:n的聯系可以轉為一個獨立的關系模式,也可以與n端關系模式合并。轉為一個獨立的關系模式,則各實體的碼和聯系的屬性轉為關系的屬性。關系的碼就是n端實體的碼。

      一個n:m的聯系可以轉為一個獨立的關系模式。該聯系相連的實體的碼和聯系的屬性轉為關系的屬性。實體碼的組合構成關系的碼,或碼的一部分。

      三個或三個以上的實體間的多元聯系轉為一個關系模式。該聯系相連的各實體的碼和聯系的屬性組成該關系的屬性。關系的碼為各實體碼的組合。

      • 事務概念,事務特性?

      事務是用戶定義的一個數據庫操作序列,這些操作要么全做,要么全不做。是一個不可分割的工作單位。

      事務特性

      1. 原子性,事務是數據庫操作的邏輯單位,要么全做,要么全不做。
      2. 一致性,事務對數據庫的執行結果必須由一個一致性轉為另一個一致性。
      3. 隔離性,一個事務對數據庫的操作不能受其它事務的影響。
      4. 持久性,一個事務一旦提交,它對數據庫的改變是永久的。
      • 數據庫中的封鎖

      封鎖是一種并發控制技術,用來對共享數據,例如數據庫中數據的并行存取。

      共享鎖S,對讀操作,每個事務都可以獲得共享鎖。阻止其他事務對已獲得個共享鎖的數據進行排它封鎖。

      排它鎖X,一個事務對某個數據進行了排它鎖,其他事務就不能再對該數據施加排它鎖,而是要等待該事務解除對數據的排它封鎖,才能再次加排它鎖。

      一級封鎖協議,事務T對要修改的數據加X鎖,直到事務結束時才釋放。能夠保證不丟失更新,不能保證讀“臟”數據,不可重復讀。

      二級封鎖協議,一級封鎖協議之上加入事務T對要讀取的數據加S鎖,讀完立即釋放S鎖。

      三級封鎖協議,一級封鎖協議之上加入事務T對讀取的數據加S鎖,事務結束后才釋放S鎖。

      • 事務非正常結束影響數據庫數據正確性?為什么要有數據庫恢復子系統?

      事務執行的結果必須是從一個一致性轉為另一個一致性。如果數據庫系統運行發生故障,導致事務被迫中斷,事務的另一部分已經完成,對數據庫的修改已經寫入物理數據庫。這時數據

      就出于一種不正確的狀態。

      在計算機系統中的硬件故障,軟件錯誤,操作人員的失誤,惡意破壞,不可避免。這些故障使事務被迫中斷,影響數據庫的正確性,破壞數據庫,使得數據庫中部分數據丟失。必須要有數

      據庫恢復子系統。

      • 數據庫產生的故障,數據庫恢復技術?

      數據庫產生事務內部故障,系統故障,介質故障,計算機病毒。

      事務內部故障,系統故障,介質故障影響事務的正常運行。介質故障,計算機病毒破會數據庫中數據。

      數據庫恢復有數據轉儲,登錄日志文件兩種技術。當數據庫系統發生故障,利用轉儲后的數據庫后備副本和日志文件就能恢復數據庫之前的某種狀態。

      • 數據轉儲,轉儲方法?

      數據轉儲是數據庫恢復所使用的技術,數據庫管理員定期將數據庫復制到磁帶或磁盤上,當數據庫系統遭遇破壞,可將后備副本裝入數據庫,恢復到轉儲前的狀態。

      轉儲有靜態轉儲,動態轉儲方法。

      1. 靜態轉儲,當系統中無用戶事務時,才進行轉儲操作。靜態轉儲操作簡單,但必須無用戶事務運行,同樣,用戶事務也必須等待轉儲操作結束,才能運行。
      2. 動態轉儲,允許在轉儲過程中對數據庫操作和修改,但是轉儲過程中,用戶事務可能對數據庫的數據進行修改,使得后援副本數據庫與轉儲前數據庫存在不一致的狀況。所以,需要日志文件,記錄用戶事務對數據庫的修改活動。這樣,后援副本和日志文件兩者共同作用即可得到某時刻數據庫的準確狀態。
      3. 轉儲還分為海量轉儲,增量轉儲。
      4. 海量轉儲,每次轉儲全部數據庫。
      5. 增量轉儲,只轉儲上次轉儲之后所更新的數據。
      • 事務日志,作用?登記日志文件為什么先寫日志文件,再修改數據庫?數據庫恢復轉儲冗余數據?

      日志文件記錄事務對數據庫的更新操作文件。

      日志文件用于事務故障恢復,系統故障恢復,和后援數據庫文件協同完成介質故障恢復。

      修改的數據寫入數據庫,修改的日志記錄寫入日志文件這兩個是不同的寫操作。

      如果先修改數據,而運行記錄中沒有這個修改,則無法對數據進行恢復。如果先寫入日志記錄,再修改數據庫,在恢復數據庫時,只是進行了一次undo操作。所以,一定要先寫入日志記

      錄,再修改數據庫。

      • 根據不同的故障,給出不同的恢復策略和方法?

      事務故障由DBMS完成,對用戶完全透明。事務故障恢復方法如下。

      1. 反向掃描日志文件,查找事務的更新操作。
      2. 對事務更新操作進行逆操作,即將日志記錄中“更新前的數據”寫入數據庫。
      3. 繼續反向掃描日志文件,做同樣處理。
      4. 如此處理下去,直到讀到此事務的開始標記,則事務故障恢復完成。

      系統故障有兩種形式。

      1. 未完成的事務對數據庫更新可能已寫入數據庫。
      2. 已完成的事務對數據庫的更新還停留在緩沖區,未寫入數據庫。

      對未完成的事務要執行撤銷undo操作,對已完成的事務要進行redo操作。

      1. 對日志文件進行正向掃描,找出故障發生時,已提交的事務隊列和未完成的事務隊列。
      2. 對未完成的事務隊列執行undo操作。
        undo操作,反向掃描日志文件,對每個undo事務的更新操作執行逆操作,將日志記錄中“更新前的值”寫入數據庫。
      3. 對已提交的事務隊列執行redo操作。
        redo操作,正向掃描日志文件,對每個redo事務重新執行日志記錄的登記操作,將日志記錄中“更新后的值”寫入數據庫。

      介質故障恢復操作

      1. DBA裝入最新的數據庫后備副本,使數據庫恢復到轉儲時的一致性狀態。
      2. DBA裝入轉儲結束時刻的日志文件副本。
      3. DBA啟動恢復指令,由DBMS完成恢復功能。
      • 檢查點恢復,優勢?

      利用日志技術恢復數據庫,恢復子系統必須搜索日志文件,確定哪些是undo事務,哪些是redo事務。需要檢查所有的日志文件。有兩個缺點。

      1. 需要搜索全部日志文件。浪費時間。
      2. 許多redo事務已經將它們的更新結果寫入數據庫,恢復子系統又重新執行這些操作浪費時間

      檢查點方法恢復步驟。

      1. 從重新開始文件找到最后一個檢查點記錄在日志文件中的地址,由該地址在日志文件中找到最后一個檢查點記錄。
      2. 由該檢查點記錄得到檢查點建立時刻所有正在執行的事務清單。
      3. 從檢查點開始正向掃描日志文件。
      4. 對redo事務執行redo操作,對undo事務執行undo操作。
      • 數據鏡像,作用?

      數據鏡像根據數據庫管理員的要求,自動把整個數據庫或其中的關鍵部分復制到磁盤上,每當數據庫更新時,DBMS自動把更新后的數據復制過去。DBMS自動保證數據鏡像和主數據庫的一致性。

      數據鏡像用于介質故障時的數據恢復操作,還能提高數據庫的可用性,其它用戶對數據庫中數據加排它鎖進行修改,其它用戶可以讀數據庫鏡像中數據,而不必等待用戶解除排它鎖。

      事務日志用于保存事務的更新操作,轉儲冗余數據包括日志文件,數據庫后備副本。

      posted @ 2020-04-22 12:33  岐岐卡卡西  閱讀(323)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲欧美人成人综合在线播放 | 丁香五月网久久综合| 高潮迭起av乳颜射后入| 日本熟妇大乳| 苍井空一区二区三区在线观看| 上司的丰满人妻中文字幕| 久久免费观看归女高潮特黄| 99riav国产精品视频| 亚欧洲乱码视频在线观看| 国产精品剧情亚洲二区| 日本一道一区二区视频| 精品人妻伦一二二区久久| 女人被爽到高潮视频免费国产| 人妻av无码系列一区二区三区| av午夜久久蜜桃传媒软件| 国产精品一线天粉嫩av| 依依成人精品视频在线观看| 一区二区三区四区亚洲综合| 国产免费又黄又爽又色毛| 国产永久免费高清在线观看| 真实国产老熟女无套内射| 男男车车的车车网站w98免费| 国模精品视频一区二区三区| 18禁无遮挡啪啪无码网站破解版| 丰台区| 精品国产一区二区在线视| 2021国产成人精品久久| 昌吉市| 四虎影视一区二区精品| 五月综合婷婷开心综合婷婷| 色吊丝中文字幕在线观看| 99精品久久毛片a片| 青青青久热国产精品视频| 精品一区二区亚洲国产| 国产美女高潮流白浆视频| 9久9久热精品视频在线观看| 99人体免费视频| 少妇被多人c夜夜爽爽av| 麻豆aⅴ精品无码一区二区| 亚洲精品一区二区三区片| 亚洲人妻精品一区二区|