计算机软件技术基础考前整理
第一章
計算機由五個基本部分組成:運算器、控制器、存儲器、輸入設備、輸出設備
程序的三種基本結構(順序、選擇、循環)
1.什么是信息,信息和數據的區別和聯系在何處?
信息是經過加工、具有一定含義的且對決策有價值的數據。信息與數據的關系信息是有一定含義的數據信息是經過加工(處理)后的數據信息是對決策有價值的數據2.信息有哪些基本屬性
事實性 等級性 可壓縮性 可擴散性 可傳輸性 共享性 增值性與再生性 轉換性3.什么是計算機硬件,什么是計算機軟件
計算機硬件(HardWare) 是指那些由電子器件和機械裝置組成的“硬”設備,如鍵盤、顯示器、主板等,它們是計算機能夠工作的物質基礎 計算機軟件(SoftWare) 是指那些在硬件設備上運行的各種程序、數據和相關的技術資料,如Windows系統、數據庫管理系統等。4.計算機軟件有那幾類,試舉例說明
計算機軟件系統由系統軟件和應用軟件兩個部分組成。 系統軟件( System SoftWare) 是為了高效使用和管理計算機而編寫的各種程序。如操作系統,數據庫管理系統等 應用軟件( Application SoftWare) 是指專門為解決某個應用領域里的總體任務而編制的程序。如游戲,辦公軟件等。第二章
知識點
程序=數據結構+算法
數據元素是數據的基本單位,數據項是具有獨立含義的最小標識單位。
什么是數據結構?數據結構是研究數據及數據元素之間關系的一門學科。它包括三個方面的內容:數據的邏輯結構、數據的存儲結構、數據的運算。
數據的邏輯結構與數據的存儲無關,它是獨立于計算機的。
通常數據結構分為集合、線性、樹形、圖四類。
數據的存儲結構包括順序存儲結構、鏈式存儲結構、索引存儲結構、散列存儲結構
算法的特點?有窮性,確定性,可行性,輸入輸出
算法的描述,可以用流程圖,自然語言或其他方式如數學語言或約定的符號語言來描述,c語言描述
衡量算法的標準:正確性,可讀性,健壯性,效率和存儲量需求
算法的時間復雜度是指在計算機上運行時所消耗的時間
算法的空間復雜度是指計算機執行過程中所需要的最大存儲空間。
確定算法的時間和空間的方法有事后統計法和事前分析估算法
線性表的順序存儲結構就是將線性表的元素按其邏輯次序依次存放在一組地址連續的存儲單元里
存放數據元素的結點至少包括兩個域,一個域存放該元素的數據,稱為數據域(data);另一個域存放后繼結點在存儲器中的地址,稱為指針域或鏈域(next)。這種鏈式分配的存儲結構稱為鏈表。
棧(stack)是限定只能在表的一端進行插入和刪除操作的線性表。特點:先進后出(FILO)或后進先出(LIFO)
隊列(Queue)是一種先進先出(FIFO,First In First Out)的線性表。
循環隊列的問題:無法區分隊空和隊滿的方法,解決方法1.用一個標志位區分2,少用一個存儲空間front==rear隊空front == (rear+1)% maxsize隊滿
數組:常用語言都是以行優先順序存放
樹型結構是以分支關系定義的層次結構。
數型結構常用術語
結點:表示樹中的元素。
結點的度:一個結點擁有的子樹數目。如A結點的度為3,它有三個子樹T1、T2和T3。E、F結點的度為0,它們沒有子樹。
葉子:度為零的結點稱葉子或終端結點。
雙親(parent):一個結點是它的那些子樹的根的雙親結點。
孩子(child):除根結點外每個結點都是其前趨結點的孩子。
兄弟(sibling):同一個雙親的孩子之間互為兄弟。如A是B、C、D的雙親;B、C、D是A的孩子;B、C、D互為兄弟。
結點的層次:根結點的層數為1,其它任何結點的層數等于它的父結點的層數加1。
樹的深度:一棵樹中,結點的最大層次值就是樹的深度。圖3-1中樹的深度為4。
森林:森林是m(m≥0)棵互不相交的樹的集合。
樹的度:一棵樹上所有結點的度的最大值就是這棵樹的度。
有序樹:樹中結點在同層中按從左到右有序排列、不能互換的稱為有序樹,反之,稱為無序樹。
二叉樹的定義:一個二叉樹是一個有限結點的集合,該集合或者為空,或由一個根結點和兩棵互不相交的被稱為該根的左子樹和右子樹的二叉樹組成。
二叉樹的存儲結構:通常用具有兩個指針域的鏈表作為二叉樹的存儲結構,其中每個結點由數據域(data)、左指針(Lchild)、右指針(Rchild)組成。
二叉樹的性質
性質1:在二叉樹中,第i層的結點數最多有2i?12^{i-1}2i?1(i≥1)個。
性質2:在深度為k的二叉樹中結點總數最多有2k2^k2k–1個。
性質3:?對任何一棵二叉樹T,如果其終端結點數為n0,度為2的結點數為n2,則n0=n2+1。
特殊形式的二叉樹
滿二叉樹:如果一棵二叉樹的深度為k,并且含有2k–1個結點,則稱此二叉樹為滿二叉樹。圖2-7是一棵深度為4的滿二叉樹。
完全二叉樹:深度為k,有n個結點的二叉樹,當且僅當其每一個結點都與深度為k的滿二叉樹中的編號從1到n的結點一一對應時,稱之為完全二叉樹。
平衡二叉樹: 二叉樹上任一結點的左子樹深度減去右子樹深度的差值,稱為此結點的平衡因子。若一棵二叉樹中,每個結點的平衡因子之絕對值都不大于1,則稱這棵二叉樹為平衡二叉樹。
一般樹轉換為二叉樹的步驟:加線-抹線-旋轉
二叉樹的遍歷:先序遍歷,中序遍歷,后序遍歷
給定N個權值作為N個葉子結點,構造一棵二叉樹若該樹的帶權路徑長度達到最小,稱這樣的二叉樹為最優二叉樹,也稱為哈夫曼樹(Huffman Tree)。
哈夫曼樹的構建方法:https://blog.csdn.net/lee18254290736/article/details/77618201
1.什么是算法,和程序有什么區別?
算法(algorithm)算法是解決某一特定類型問題的有限運算序列
算法的含義與程序十分相似,但二者是有區別的。一個程序不一定滿足有窮性(死循環),另外,程序中的指令必須是機器可執行的,而算法中的指令則無此限制。一個算法若用計算機語言來書寫,則它就可以是一個程序。
2.數據的存儲結構有哪些?它們之間本質的區別?
線性存儲結構和鏈式存儲結構
數組靜態分配內存,鏈表動態分配內存;
數組在內存中連續,鏈表不連續;
數組利用下標定位,時間復雜度為O(1),鏈表定位元素時間復雜度O(n);
數組插入或刪除元素的時間復雜度O(n),鏈表的時間復雜度O(1)。
3.試編寫算法求一只單鏈表的長度,并考慮表空的情況
int length(NODE *head) {NODE *p; int j=0;p=head->next;if( p== null )return j;//鏈表為空,返回0while(p){j++; p = p->next; }return j; //返回鏈表的長度 }以下兩個問題在面試時也會經常碰到,熟記
4.試比較順序表和鏈表的優缺點
順序存儲結構
優點
1.隨機訪問性強
2.查找速度快
缺點
1.插入刪除效率低
2.可能浪費內存(在給長度變化較大的線性表預先分配空間時必須按照最大空間分配,使存儲空間不能得到充分的利用)
3.內存空間要求高,必須有足夠的連續內存空間。
3.表的容量難以擴充
鏈式存儲結構
優點
1.插入刪除速度快
2.內存利用率高,不會浪費內存
3.大小沒有固定,拓展很靈活。
缺點
查找效率低
5.試比較單向鏈表和雙向鏈表的優缺點
單向鏈表:
優點:單向鏈表增加刪除節點簡單。
缺點:只能從頭到尾遍歷。
雙向鏈表:
優點:可以找到前驅和后繼,可進可退。
缺點:增加刪除節點復雜
6.試說明樹和二叉樹有何不同?為何要將一般樹轉換為二叉樹?
樹和二叉樹的區別主要是二叉樹的結點的子樹要區分左子樹和右子樹
二叉樹比樹便于處理
一般樹轉換為二叉樹
步驟:
(1) 加線:親兄弟之間加一連線。
(2)抹線:對于每個結點,除了與它的第一個孩子保持聯系外,除去與其它孩子的聯系。
(3) 旋轉:以樹根為軸心,將整棵樹順時針旋轉45度。
先序遍歷,中序遍歷,后序遍歷
圖的相關術語
(1) 圖。圖G由兩個集合V(G)和E(G)所組成,記作G=(V,?E)。其中,V(G)是圖中頂點的非空有限集合,E(G)是圖中邊的有限集合。
(2) 有向圖。如果圖中每條邊都是頂點的有序對,即每條邊都用箭頭表明了方向,則此圖為有向圖。有向圖中的邊也稱為弧,用尖括號括起一對頂點表示。
E(G1)= {< V1, V2>,< V1, V3>,< V3, V4>,< V4, V1>}
如其中弧< V1, V2>,稱V1為初始點或弧尾,V2為終端點或弧頭。
(3) 無向圖。如果圖中每條邊都是頂點的無序對,則稱此圖為無向圖。無向邊用圓括號括起的兩個相關頂點來表示。
E(G2)= {(V1, V2),(V1, V3),(V3, V4),( V4, V1)}
(4) 子圖。設有兩個圖GA和GB,且滿足
則稱GB是GA的子圖
(5) 帶權圖。在圖的邊或弧上加上一個相關聯的數(權),稱為帶權圖或網。網分為有向網和無向網。
(6) 路徑和回路。
在無向圖中,從頂點Vp到Vq的路徑是頂點序列 (Vp,Vi1,Vi2,…,Vik , Vq),且(Vp ,Vi1),(Vi1,Vi2)…(Vik ,Vq)都屬于E中的邊。
在有向圖中,則由頂點的弧組成有向路徑。
路徑上邊或弧的數目稱為路徑長度。
網的路徑長度定義為路徑上權值的和。
除第一個和最后一個頂點外,序列中其余頂點各不相同的路徑稱為簡單路徑。
第一個頂點和最后一個頂點相同的簡單路徑稱為簡單回路。
(7)連通圖和連通分量。在無向圖中,若從Vi到Vj存在路徑,則稱Vi到Vj是連通的。若圖中每一對頂點都是連通,則稱G為連通圖。
連通分量是指無向圖中的極大連通子圖。
(8) 頂點的度、入度、出度。在無向圖中,頂點的度就是和該頂點相關聯的邊的數目。
在有向圖中,以某頂點為弧頭的弧的數目,稱為此頂點的入度;以某頂點為弧尾的弧的數目稱為此頂點的出度。該頂點的度則是此頂點的入度與出度之和。
圖的存儲結構
鄰接矩陣表示法和鄰接表表示法。
1、鄰接矩陣
根據圖的定義可知,一個圖的邏輯結構分兩部分,一部分是組成圖的頂點的集合;另一部分是頂點之間的聯系,即邊或弧的集合。因此,在計算機中存儲圖只要解決對這兩部分的存儲表示即可。
可用一個一維數組存放圖中所有頂點的信息;用一個二維數組來存放數據元素之間的關系的信息(即邊或弧的集合E)。這個二維數組稱之為鄰接矩陣。鄰接矩陣是表示頂點之間的鄰接關系的矩陣。
借助于鄰接矩陣,可以很容易地求出圖中頂點的度。
鄰接矩陣有如下結論:
(1) 無向圖的鄰接矩陣是對稱的,而有向圖的鄰接矩陣不一定對稱。對無向圖可考慮只存下三角(或上三角)元素。
(2) 對于無向圖,鄰接矩陣第i行(或第i列)的元素之和是頂點Vi的度。
(3) 對于有向圖,鄰接矩陣第i行元素之和為頂點Vi的出度;第i列的元素之和為頂點Vi的入度。
2、鄰接表
鄰接表是一種順序分配和鏈式分配相結合的存儲結構。它包括兩個部分:一部分是鏈表;另一部分是向量。
在鄰接表中,對圖中每個頂點建立一個單鏈表,第i個單鏈表中的結點包含了與頂點Vi的所有鄰接頂點。每個結點由三個域組成:鄰接域adjvex、數據域data和鏈域nextarc
在鄰接表上容易找到任一頂點的第一個鄰接點和下一個鄰接點,但要判定任意兩個頂點(Vi和Vj)之間是否有邊或弧相連,則需搜索第i個或第j個鏈表,因此不及鄰接矩陣方便。
對一個圖來說,鄰接表不是惟一的,它取決于建立鄰接表時,結點在每個單鏈表中的插入策略。另外,對于有向圖,其鄰接表中第i個單鏈表的結點個數就是此結點的出度;對于無向圖,其鄰接表中第i個單鏈表的結點個數就是此結點的度。
圖 的 遍 歷
深度優先搜索和廣度優先搜索。
1.深度優先搜索DFS
深度優先搜索的基本思想是:
(1) 首先訪問圖G的指定起始點V0;
(2) 從V0出發,訪問一個與V0鄰接的頂點W1后,再從W1出發,訪問與W1鄰接且未被訪問過的頂點W2。從W2出發,重復上述過程,直到遇到一個所有與之鄰接的頂點均被訪問過的頂點為止;
(3) 沿著剛才訪問的次序,反向回退到尚有未被訪問過的鄰接點的頂點,從該頂點出發,重復步驟(2)、(3),直到所有被訪問過的頂點的鄰接點都已被訪問過為止;若此時圖中尚有頂點未被訪問,則另選圖中一個未曾被訪問的頂點作起始點,重復上述過程,直至圖中所有頂點都被訪問到為止。
2.廣度優先搜索BFS
廣度優先搜索(breadth-first search)類似于樹的按層次遍歷的過程。
假設從圖中某頂點V0出發,在訪問了V0之后依次訪問V0的各個未曾被訪問過的鄰接點,然后分別從這些鄰接點出發廣度優先搜索遍歷圖,直至圖中所有已被訪問的頂點的鄰接點都被訪問到。若此時圖中尚有頂點未被訪問,則另選圖中一個未曾被訪問的頂點作起始點,重復上述過程,直至圖中所有頂點都被訪問到為止。
具體遍歷步驟如下:
(1) 訪問V0。
(2) 從V0出發,依次訪問V0的未被訪問過的鄰接點W1,W2,…,Wt。然后依次從W1,W2,…,Wt出發,訪問各自未被訪問過的鄰接點。
(3)重復步驟(2),直到所有頂點的鄰接點均被訪問過為止。
查找和排序
查找的基本概念
查找是數據處理中最基本的操作之一,當查找所涉及的數據量很大時,查找方法的效率直接影響數據處理的速度。 在數據處理中,被查找的元素通常是以記錄形式出現,即每一個數據元素(記錄)由若干個數據項組成,其中能用來唯一標識記錄的數據項稱為主關鍵字(Primary Key)。查找就是根據給定值K,在查找表中確定一個關鍵字等于給定值K的記錄或數據元素。若存在這樣的數據元素,則稱查找是成功的,否則稱查找不成功。
常見查找算法
順序查找(線性查找)
最簡單、常用的查找技術。
基本思想:從第一個記錄開始,依次將每個元素的關鍵字同給定值K進行比較,若某個元素的關鍵字等于給定值K,則表明查找成功,返回該元素的下標;反之,若直到所有元素都比較完畢,仍找不到關鍵字為K的元素,則表明查找失敗,返回特定的值(常用?1表示)。
若對此算法進行一些改進,在原表長n基礎上在表尾增加一個關鍵字為指定值K的記錄,可避免每“比較”一次,就要判別查找是否結束。當n很大時,大約可節省一半的時間。
2.對分查找
如果查找表中的記錄按關鍵字有序,則可以采用一種高效率的查找方法——對分查找,也稱二分查找
對分查找的基本思想是:對于有序表,查找時先取表中間位置的記錄關鍵字和所給關鍵字進行比較,若相等,則查找成功;如果給定值比該記錄關鍵字大,則在后半部分繼續進行折半查找;否則在前半部分進行折半查找,直到找到或者查找范圍為空而查不到為止。
對分查找的過程實際上是先確定待查元素所在的區域,然后逐步縮小區域,直到查找成功或失敗為止。
算法中需要用到三個變量,?low表示區域下界,?high表示上界,?中間位置mid=(low+high)DIV 2。
對分查找只適用于以順序存儲結構組織的有序表。
3.分塊查找
分塊查找又稱索引順序查找,這是順序查找的另一種改進方法。
它要求查找表“分塊有序”。假如按關鍵字遞增順序進行分塊排列,就是指第j塊的所有記錄的關鍵字均大于第j?1塊的所有記錄的關鍵字(j=2,3,…,n),并建立一個索引表。把每塊中的最大關鍵字值及每塊的第一個記錄在表中的位置存放在索引項中。
整個查找過程分兩步進行:
(1) 確定待查記錄所在的塊。
(2) 在塊內查找。
二叉排序樹的查找
若對查找表既允許進行查找運算,又允許進行插入和刪除運算,則稱該表為動態查找表。二叉排序樹的查找就是動態查找。
1.二叉排序樹的查找
二叉排序樹(binary sort tree)或者是一棵空樹;或者是具有下列性質的二叉樹。
(1) 若它的左子樹不空,則左子樹上所有結點的值均小于它的根結點的值;
(2) 若它的右子樹不空,則右子樹上所有結點的值均大于或等于它的根結點的值;
(3) 它的左、右子樹也分別為二叉排序樹。
2.二叉排序樹的生成
對一組數據序列{K1,K2,…,Kn},先設一棵空二叉樹,然后依次將序列中的元素生成結點后逐個插入到已生成的二叉排序樹中。步驟如下:
(1) ?K1是二叉排序樹的根;
(2) 若K2<K1,則K2所在的結點應插入到K1的左子樹上;否則插入到K1的右子樹上;
(3) 讀Ki,若Ki< K1(根),則插入到根的左子樹上,否則Ki插入到根的右子樹上;
(4) 若i≤n,則繼續執行步驟(3),否則結束。
哈 希 查 找
順序查找、對分查找、分塊查找、二叉排序樹查找:
都需進行一系列和關鍵字的比較確定被查元素在查找表中的位置,查找的效率依賴于查找過程中所進行的比較次數。
哈希查找:
哈希查找方法是利用關鍵字進行某種運算后直接確定元素的存儲位置,所以哈希查找方法是用關鍵字計算元素存儲位置的查找方法。
1.哈希表的建立
哈希表的建立:以線性表中的每個元素的關鍵字K為自變量,通過一種函數H(K)計算出函數值,然后將該元素存入H(K)所指定的相應的存儲單元。
查找時,只要根據要查找的關鍵字用同樣的函數計算出地址H(K),然后直接到相應的單元中去取所要找的元素。稱函數H(K)為哈希(Hash)函數,按這個思想建立的表為哈希表。
對于哈希法,主要考慮兩個問題:
(1) 構造一個合適的哈希函數。分析數據元素的關鍵字集合的特點,找出適當的函數H(K),使計算出的存儲地址盡可能均勻地分布在哈希表中;同時也希望函數H(K)盡量簡單,便于快速計算;哈希函數H(K)一般應是一個壓縮映象函數,它應具有較大的壓縮性,以節省存儲空間。
常用的構造哈希函數的方法有:
① 數字分析法;
② 平方取中法;
③ 除留余數法;
④ 折疊法;
排 序
排序是計算機程序設計中的一種重要運算,它的功能是將一個數據元素的無序序列調整為一個有序序列。經排序的數據若按由大到小的順序排列,稱為降序;反之,若按由小到大的順序排列,稱為升序。
1、簡單選擇排序
簡單選擇排序的方法是在所有的記錄中選出關鍵字最小的記錄,把它與第一個記錄交換存儲位置,然后再在余下的記錄中選出次小的關鍵字對應的記錄,把它與第二個記錄交換,依此類推,直至排序完成。
簡單選擇的時間復雜度是O(n2)。
2.直接插入排序
插入排序的基本思想是把記錄逐一按其關鍵字的大小插入到已經排好次序的記錄序列中的適當位置,直到全部插入完為止。這很象打撲克牌時,一邊抓牌,一邊理牌的過程,每抓一張牌就把它插到適當的位置上去。
設有n個記錄(R1,R2,…,Rn),已劃分為已排序部分和未排序部分,即插入Ri時,(R1,R2,…,Ri?1)是已排好序的部分,(Ri,Ri+1,…,Rn)屬于未排序部分。用Ri依次與Ri?1,Ri?2,…,R1進行比較,找出Ri在有序子文件中的插入位置,將Ri插入,原位置上的記錄至Ri?1均順序后移一位。
直接插入排序是穩定的,其時間復雜度為O(n2)。
3.冒泡排序
冒泡排序的基本思想為:從R1開始,兩兩比較相鄰記錄的關鍵字,即比較Ri和Ri+1(i=1,2,…,n?1)的關鍵字大小,若逆序(如Ki>Ki+1),則交換Ri和Ri+1的位置,如此經過一趟排序,關鍵字最大的記錄被安置在最后一個位置(Rn)上。然后再對前n?1個記錄進行同樣的操作,則具有次大關鍵字的記錄被安置在第n?1個位置(Rn?1)上。如此反復,進行n?1趟冒泡排序后所有待排序的n個記錄已經按關鍵字由小到大有序。
冒泡排序方法是穩定的,其在最壞情況下的時間復雜度為O(n2)。但由于冒泡排序能“判別”記錄的狀態,所以當待排序序列是基本有序的序列時,采用冒泡排序方法的效率是很高的。
4.快速排序
快速排序也稱作劃分交換排序,和冒泡排序同屬于交換排序類型。它是目前內部排序中速度最快的排序方法,故稱為快速排序,其平均時間復雜度為O(nlogn) 。它的基本思想是:在待排序的n個記錄中任取一個記錄R(通常為第一個),以該記錄的關鍵字K為準,將所有剩下的n?1個記錄劃分為兩個子序列,第一個子序列中所有記錄的關鍵字均小于或等于K;第二個子序列中所有記錄的關鍵字均大于K。
待排序記錄數n較小:直接插入、簡單選擇
基本有序:直接插入、冒泡
快速排序:越亂越好
畫一棵對20個記錄進行對分查找的判定樹,并求等概率情況下的平均查找長度
第三章 操作系統
計算機系統分層
操作系統的發展過程:
1.手工操作階段 2.早期批處理階段 3.執行系統階段 4.多道程序系統操作系統是計算機系統中的一個系統軟件,它是這樣一些程序模塊的集合:它們能夠有效地組織和管理計算機系統中的硬件與軟件資源,合理地組織計算機工作流程,控制程序的執行,并向用戶提供各種服務功能,使用戶能夠靈活、方便和有效地使用計算機。
操作系統一般分為三種基本類型:
即多道批處理操作系統、分時系統和實時系統。
1多道批處理操作系統
多道:計算機內存中同時可以存放多道作業
批處理:用戶與作業之間沒有交互作用,用戶不能直接控制作業的運行,“脫機操作”
用戶作業 外存緩存器 內存執行
用于計算中心等較大型計算機系統,目的是為了充分利用中央處理機及各種設備資源。
2分時系統
多道批處理系統能提高機器資源利用率,但用戶不能與機器直接交互,對程序開發帶來很大不變。
在一臺主機上連接了多個帶有顯示器和鍵盤的終端,同時允許多個用戶共享主機中的資源,每個用戶都可通過自己的終端以交互方式使用計算機。
將CPU分割成很小的時間片輪流分配給多個用戶,時間片分割得很小,如同自己獨占一臺計算機。
3實時系統
1)實時控制系統
把計算機用于生產過程的控制,要求實時采集現場數據,實時處理數據,進而自動控制執行機構,使某個參數按預定規律變化,以保證產品質量和提高產量。
用于武器的控制,如火炮的自動控制系統,飛機的自動駕駛系統,導彈的制導系統等。
(2)實時信息處理系統
由一臺或多臺主機通過通信線路連接成百上千個遠程終端,計算機接收從遠程終端發來的服務請求,根據用戶提出的問題,對信息進行檢索和處理,并在很短時間內為用戶做出正確回答。如:飛機訂票系統。
操作系統的功能和特征
1、操作系統的功能
操作系統的特性:并發性,共享性,不確定性
存儲管理
存儲器管理分為實存儲器管理和虛擬存儲器管理。
存儲器的分級結構:三級,高速緩存(cpu可訪問),內存(cpu可訪問),外存
用戶的程序在運行時應存放在主存中,以便處理機訪問。但是由于主存容量有限,所以把那些不馬上使用的程序、數據放在外部存儲器(又稱次級存儲)中。當用到時再把它們讀入主存。
存儲管理功能
(1) 在多個用戶間分配主存-主存分配 (2) 映射邏輯地址為存貯地址-地址映射(轉換) (3) 對主存中信息提供保護-存儲保護 (4) 擴充邏輯存儲區-主存擴充(1) 主存分配: 多道程序中,內存需要存放多個用戶作業,因此內存分配要解決如何合理分配內存空間以保證 各個作業互不沖突,而且系統提供適當的分配算法,以提供內存的利用率和運行效率。 (2)地址轉換或重定位 地址空間與存儲空間 物理地址:(需要區分存貯器中不同的存貯單元 統一編號, 這些編號稱為地址) 物理地址是主存的真實地址 ––– 絕對地址是:存儲控制部件能夠識別的主存單元編號(或字節 地址)。 名空間 ––– 存放源程序的空間。 地址空間 ––– 一個目標程序所占有的地址范圍。 邏輯地址:又稱相對地址,是指相對于某個基準量(通常用0)編址時所使用的地址, 相對地址常用于程序編寫和編譯過程中。地址映射(重定位) 當用戶程序要調入內存時,必須把相對地址轉換為絕對地址,同時要包括對程序中與地址有關的指令進行修改,這一過程稱為地址映射(重定位) 靜態重定位 在程序裝入時進行,通過處理機中一對界地址寄存器來實現。 物理地址=邏輯地址+下界地址 動態重定位 : 在程序執行過程中進行,當CPU訪問內存指令時由動態變換機構自動進行地址轉換。(3) 存儲保護: 設置兩個界地址寄存器,分別用于存放正在執行程序的上界和下界。系統需對每條指令所訪問的地址進行越界檢查,如果發生越界,便發出越界中斷請求,以停止該程序的執行。(4) 主存擴充: 把內外存聯合起來向用戶提供一個容量比實際內存大得多的存儲空間。通常采用的內存擴充技術有覆蓋、交換和虛擬存儲技術。實存管理
虛擬存儲管理
邏輯地址→虛擬地址 虛擬地址空間
主存地址→實在地址 實在地址空間
程序和數據所在的虛擬地址必須放入主存的實在地址中才能運行。因此要建立虛擬地址和實在地址的對應關系,這種地址轉換由動態地址映象機構來實現。
1.分頁存儲管理
系統以頁架為單位把內存分配給各作業,每個作業占有的內存無須連續,而且作業的所有頁面也不一定同時都要裝入內存。
2.分段存儲管理
段
按模塊分配存儲空間,一個程序一般由若干個標準或非標準程序模塊組成,分段管理把每個模塊的地址空間稱為段。每個段規定一個段號,每個段的地址空間都從“0”開始。
3.段頁式存儲管理
段頁式管理是分頁和分段管理結合的結果。
處理器管理
1.作業、程序與進程
作業是用戶在一次算題過程中或一個事務處理中要求計算機系統所做工作的集合。
進程可以看作程序的一次執行,即是在指定內存區域中的一組指令序列的執行過程。
進程與程序的區別
區別:a.進程是程序的執行,是動態概念,程序是一組指令的集合,是靜態概念。
b. 進程有生命過程的,進程的誕生(創建)和死亡(撤銷),而程序沒有,因此進程的存在是暫時的,程序的存在是永久的。
存儲器管理目的:選擇哪一個作業進入內存;如何在進程間分配處理器
處理器管理,又稱為處理器調度,一般分為兩級:
作業調度,又稱高級調度或宏觀調度。
功能:根據某調度原則,選取某些作業進入內存,為它們分配必要的資源,建立相應的進程,并當作業完成后做好一切善后工作。
進程調度又稱為低級調度或微觀調度。
功能:按照某種調度原則,實現處理器在各進程間的轉換。
系統為每個進程建立一個進程控制塊(PCB)。
PCB是進程存在的唯一標志。
PCB中的信息分為:
說明信息:進程名、優先數、當前狀態;
保留信息:保留該進程由運行狀態轉入阻塞或就緒狀態時當時各寄存器的內容,便于該進程重新進入運行時恢復當時各寄存器狀況。
處理機的數目一般總是少于進程數,在單處理機系統中,只有一個進程可真正獲得處理。
原語是機器指令的延伸,是用若干條機器指令構成的,用以完成特定功能的一段程序。為保證操作的正確性,原語在執行期間是不可分割的。
用于進程控制的原語有:
(1) 創建進程原語 (2) 撤消進程原語 (3) 掛起進程原語 (4) 激活進程原語
多道程序并發運行出現的問題
對資源的共享問題
相關進程間的制約問題
進程間的通信問題
進程的死鎖問題
1.進程的同步與互斥
進程的“同步”是指兩個事件的發生存在某種時序上的關系,如果系統中有若干個進程要共同完成某一任務,那么它們之間必須協調配合,這種進程間的協調配合就稱為進程的同步
進程“互斥”是當進程要求共享系統中某些硬件或軟件資源,而這些資源卻又要求排他性使用時,這樣往往引起由于多個進程競爭同一資源使運行結果出現問題。為了防止發生這種情況,必須把多個進程使用同一資源的過程“分離”開來,也就是互斥的使用該類資源。
2.解決同步與互斥的工具
信號量(P-V操作)
2.進程通信
負責進程之間的信息交換稱為進程通信 (各進程為了保持聯系而交換信息)。P-V操作也是一種通信方式,但只適合傳遞少量信息,效率較低,稱為低級通信方式.除此之外還有較高效率,傳遞大批數據的高級通信方式.
(1)直接通信 一個進程直接發送一個消息給接收進程
(2)間接通信 進程不把消息直接發給接收者進程,而把消息放在某個雙方共知的信箱中。
3.死鎖
(1)死鎖的原因和必要條件
死鎖的定義:死鎖是指計算機系統中進程所處的一種狀態。即在系統中的一組進程,由于競爭資源而永遠阻塞,稱此時進程處于死鎖狀態
死鎖產生的原因
系統資源不足
進程推進的順序不當
死鎖的必要條件
互 斥:所涉及的資源是非共享的
占有等待:進程在等待新資源時,繼續占用已分配到的資源
不可剝奪:一個進程占有的資源不能被別的進程強行搶占
循環等待:一個進程獲得的資源同時被另一個進程所請求,從而形成一個進程的循環鏈
解決死鎖的方法:
死鎖的預防
死鎖的避免
死鎖的檢測和恢復
死鎖定理:
系統在某一狀態下死鎖的充要條件是當且僅當某一狀態下的進程-資源圖是不可完全化簡的。
死鎖的恢復
資源剝奪法:強制性地從系統中撤消某些進程,并剝奪它們的資源給剩下的進程使用。這樣被撤消進程前面已完成的工作全部損失了。
撤消進程法:使用一個有效的掛起和解除掛起機構來掛起一些進程,從掛起進程那里搶占資源以解除死鎖。
設備管理
1.設備管理的功能
設備管理的功能是按用戶需求制定分配和使用設備的策略,為I/O操作的進程分配一條傳輸信息的通路,最大限度的實行并行操作。
要求達到的目標是:(1)方便性(2)設備獨立性(3)并行性(4)有效性與均衡性
2設備的簡單分類
按設備的使用性質分:
獨享設備
共享設備
虛擬設備
3.通道與中斷
(1)循環測試I/O方式
(2)程序中斷方式
(3)通道I/O方式
文件管理
文件的分類:
(2) 按存取權限分:可執行、只讀、讀寫、不保護
文件結構和存取方式
文件的邏輯結構
從用戶的角度看到的文件面貌,也就是文件的記錄結構。
(1) 順序結構:一個邏輯文件的信息依次存于輔存的若干連續的物理塊中。操作系統的用戶接口
(2) 鏈接(或串聯)結構
(3)索引結構(索引順序結構)
操作系統的用戶接口
程序一級的接口:在應用程序中以函數調用的方式來享用系統服務。
作業控制方面的接口:是用戶在操作系統界面上以命令方式來操作和控制計算機的手段。
幾種常用的操作系統接口:
Unix操作系統接口,shell外殼,實現用戶與操作系統的交互。
DOS操作系統接口,為用戶提供的界面主要是命令形式,通過命令用戶與操作系統交互。
Windows系列操作系統接口,圖形用戶接口,界面友好,便于用戶的使用。
1.操作系統的基本功能是什么?它包括哪些基本部分?
(1)處理器管理
(2)存儲管理
(3)設備管理
(4)文件管理
(5)用戶接口
構成部分:
(1)對CPU的使用進行管理的進程調度程序
(2)對內存分配進行管理的內存管理程序
(3)對輸入輸出設備進行管理的驅動程序
(4)對外存中信息進行管理的文件系統
2.試著說明虛擬機的概念及實現方法
在裸機外面每增加一個軟件層之后就會編程一臺功能更強的 機器,我們通常把這種計算機系統成為虛擬機
虛擬機的實現方法:在裸機上裝上操作系統對機器進行首次拓展,再在操作系統的的基礎上增加其他軟件,這樣就可以實現"虛擬機"
3.解釋名空間,作業地址空間和存儲空間的關系以及邏輯地址和物理地址的區別
存放源程序的空間稱為名空間。
當匯編或編譯程序將源程序轉換成目標程序,一個目標程序所占有的地址范圍成為地址空間,這些地址的編號是相對于起始地址而定的,一般定起始位零,稱為邏輯地址或相對地址。
存儲空間是指當目標程序裝入主存后占用的一系列物理單元的集合,這些單元編號稱為物理地址或絕對地址。
4.什么是重定位?靜態重定位和動態重定位的區別是什么?各舉一例說明
當用戶程序要調入內存時,必須把相對地址轉換為絕對地址。同時要包括對程序中與地址油管的指令進行修改,這一過程稱為重定位。
靜態重定位是在程序裝入時進行,一般通過處理機中一對界地址寄存器來實現。
動態重定位是在程序執行過程中進行的,當處理器訪問主存指令時由動態變換機構自動進行地址轉換。
5.存儲管理的功能是什么?為什么要引入虛擬存儲器的概念?虛存的容量由什么決定?
存儲管理的功能主要有:內存分配,地址轉換,存儲保護和內存擴充
虛擬存儲器能提供給用戶一個比實際內存大得多的存儲空間,使用戶在編制程序時可以不必考慮存儲空間的限制。
虛存的容量受兩個條件的約束:指令中地址場長度的限制,外存儲器容量的限制。
6.處理器管理主要是解決什么問題?
在大型通用系統中,可能數百個批處理作業存放在磁盤中,又有數百個終端用戶與主句連接,如何從這些作業中挑選一些作業進入主存運行,又如何在主存各進程間分配處理器,是操作系統資源管理的一個重要問題,處理器管理就是用來解決此問題的
7.什么是進程的同步和互斥?什么是臨界區?
同步是指兩個時間的發生存在某種時序上的關系,如果系統中有若干個進程要共同完成某一任務,那么他們仙姑之間必須協調配合。
互斥是指當多個進程要求共享系統中某些硬件或軟件資源,而這些資源卻又要求排他性使用時,這樣往往引起由于多個進程競爭同一資源使運行結果出現問題。
如果在兩個進程P1P2中加入P,V操作后,可以實現對公用變量count的互斥使用,其中P(s),V(s)之間的程序段稱為臨界區。
8.死鎖產生的必要條件是什么?死鎖的預防,避免和檢測各有什么不同?各舉出一種相應的辦法?
死鎖產生的必要條件是:1.所涉及的資源是非共享的,2進程在等待新資源時,繼續占用已分配的資源3.一個進程戰友的資源不能被其他進程占有,4.一個進程獲得的資源同時被另一個進程所請求,從而形成一個循環鏈
死鎖的預防是研究如何破壞產生死鎖的必要條件之一,從而達到不使死鎖發生的目的。死鎖的避免和死鎖的預防區別組要你在于,死鎖的預防是嚴格破壞形成死鎖的必要條件之一,使得死鎖不在系統中出現。預防方法之一,采用假脫機技術將非共享設備變成共享設備來實現。
而死鎖的避免并不嚴格限制必要條件的存在,因為必要條件存在并不一定產生死鎖。而進程推進順序不當,也可以導致系統發生死鎖,因此死鎖的避免是考慮萬一當死鎖有可能出現時,就小型的避免這種情況的最終發生。避免方法有相應的銀行算法和方法
死鎖的檢測和恢復,這是一種變通的方法,它允許死鎖的產生,但能在適當時間檢測出來,并設法進行恢復。利用化簡進程-資源有向圖的方法來檢測系統在某一特定狀態時是否處于死鎖狀態
9.設備管理的功能是什么?怎么樣把 一臺物理設備虛擬為多臺設備?
設備管理的功能:設備驅動程序,即插即用,通用即插即用,集中,同一管理,添加硬件
通過虛擬機軟件,就可以在一臺物理計算機上模擬出一臺或多臺虛擬的計算機
10.什么是記錄,文件,文件系統
記錄:文件由若干個記錄組成,每一個記錄是一些相關信息的集合
文件:在裸機上具有完整意義的數據或字符序列的集合
文件系統:負責服務和管理文件的機構
第四章 數據庫
數據管理的三個階段
1.人工管理階段(20世紀50年代中期以前)
2.文件管理系統(20世紀50年代末~60年代中)
3.數據庫系統(20世紀60年代后)
信息的三個領域
(1)現實世界
(2)信息世界
(3)數據世界
2.實體間的聯系
(1)一對一聯系
(2)一對多聯系
(3)多對多聯系
3.數據庫組織
(1)層次數據模型
(2)網狀數據模型
(3)關系數據模型
四個基本概念:數據,數據庫,數據庫管理系統,數據庫系統
4.數據庫設計
(1)需求分析階段
(2)邏輯結構設計階段
(3)物理設計階段
(4)數據庫實施階段
(5)數據庫運行和維護階段
步驟:
(1)系統調查
(2)系統分析
(3)視圖定義
關系數據庫系統
關系數據庫的特點
(1)數據結構簡單
在關系模型中,實體和實體之間的聯系均由關系(二維表)來表示。
(2)可以直接處理多對多的關系
不論實體間的聯系是一對多還是多對多,在關系數據模型中均可用表格形式表示。
(3)能夠一次獲取多個記錄數據
在關系數據庫中,每一個查找命令可以得到滿足該命令的所有記錄。
(4)數據獨立性較高
關系數據庫中,用戶一般只要指出他要存放的數據類型、長度等特性,而不必關心數據的物理存放。
(5)有較堅實的理論基礎
關系數據庫是以關系數學理論為基礎,這樣使關系模型的研制和應用設計有理論指導,保證數據庫的質量。
基本概念和術語
關系代數
關系模式的范式
第一范式(1NF)
定義:如果關系模式R的每個屬性值都是不可再分的數據單位,則稱R滿足第一范式。
第二范式(2NF)
定義:如果關系模式R滿足第一范式,且非主屬性完全依賴于主屬性(主關鍵字),則該模式滿足第二范式。
第三范式3NF
定義:如果關系R滿足第二范式,且每個非主屬性均非傳遞函數依賴于主屬性,則該關系滿足3NF。
1.數據庫系統的三級結構模式各起什么作用?
(1)用戶級
又稱外模式,這是從各個用戶角度看到和使用的數據庫,因此也稱為用戶視圖,每個用戶獲準使用的部分數據稱為子模式,這部分數據的邏輯結構稱為局部邏輯結構。
(2)概念級
又稱概念模式,是對數據庫整體邏輯的描述,稱為DBA視圖,他是所有用戶視圖的一個最小集合,是對數據庫整體邏輯的描述,故稱為整體邏輯結構。
(3)物理級
又稱內模式,是系統管理員對數據進行的物理組織,稱為系統程序員視圖,也稱為數據的存儲結構
2.試說明數據庫設計的主要步驟,完成什么工作
(1)需求分析,對唄設計對象進行調查研究的基礎上提出的對應關系的描述形式
(2)邏輯設計(3)物理設計
邏輯設計和物理設計實在需求分析的基礎上將系統描述形式轉化成數據庫管理系統相適應的數據模型
(4)應用程序設計及測試(5)性能測試及企業確認(6)裝配數據庫
3.解釋名詞
關鍵字,候選關鍵字,主關鍵字:關鍵字是指在一個關系中有些屬性那能唯一的識別的元組,具有唯一標識關系中的元組性或最小屬性組,稱為該關系的候選關鍵字
關系模式:一個關系的屬性名表,即二維標的框架稱為關系模式
關系模型:又稱為關系數據庫模式,一個關系模型可以有多個關系模式組成
關系數據庫:對應于一個關系模型的額全部慣性的額集合稱為關系數據庫
總結
以上是生活随笔為你收集整理的计算机软件技术基础考前整理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 74芯片引脚真值表汇总
- 下一篇: 学习记录(电子信息专业)