日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

计算机软件技术基础考前整理

發(fā)布時(shí)間:2025/4/16 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机软件技术基础考前整理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

第一章


計(jì)算機(jī)由五個(gè)基本部分組成:運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備、輸出設(shè)備
程序的三種基本結(jié)構(gòu)(順序、選擇、循環(huán))


1.什么是信息,信息和數(shù)據(jù)的區(qū)別和聯(lián)系在何處?

信息是經(jīng)過(guò)加工、具有一定含義的且對(duì)決策有價(jià)值的數(shù)據(jù)。信息與數(shù)據(jù)的關(guān)系信息是有一定含義的數(shù)據(jù)信息是經(jīng)過(guò)加工(處理)后的數(shù)據(jù)信息是對(duì)決策有價(jià)值的數(shù)據(jù)

2.信息有哪些基本屬性

事實(shí)性 等級(jí)性 可壓縮性 可擴(kuò)散性 可傳輸性 共享性 增值性與再生性 轉(zhuǎn)換性

3.什么是計(jì)算機(jī)硬件,什么是計(jì)算機(jī)軟件

計(jì)算機(jī)硬件(HardWare) 是指那些由電子器件和機(jī)械裝置組成的“硬”設(shè)備,如鍵盤、顯示器、主板等,它們是計(jì)算機(jī)能夠工作的物質(zhì)基礎(chǔ) 計(jì)算機(jī)軟件(SoftWare) 是指那些在硬件設(shè)備上運(yùn)行的各種程序、數(shù)據(jù)和相關(guān)的技術(shù)資料,如Windows系統(tǒng)、數(shù)據(jù)庫(kù)管理系統(tǒng)等。

4.計(jì)算機(jī)軟件有那幾類,試舉例說(shuō)明

計(jì)算機(jī)軟件系統(tǒng)由系統(tǒng)軟件和應(yīng)用軟件兩個(gè)部分組成。 系統(tǒng)軟件( System SoftWare) 是為了高效使用和管理計(jì)算機(jī)而編寫的各種程序。如操作系統(tǒng),數(shù)據(jù)庫(kù)管理系統(tǒng)等 應(yīng)用軟件( Application SoftWare) 是指專門為解決某個(gè)應(yīng)用領(lǐng)域里的總體任務(wù)而編制的程序。如游戲,辦公軟件等。

第二章


知識(shí)點(diǎn)
程序=數(shù)據(jù)結(jié)構(gòu)+算法
數(shù)據(jù)元素是數(shù)據(jù)的基本單位,數(shù)據(jù)項(xiàng)是具有獨(dú)立含義的最小標(biāo)識(shí)單位。
什么是數(shù)據(jù)結(jié)構(gòu)?數(shù)據(jù)結(jié)構(gòu)是研究數(shù)據(jù)及數(shù)據(jù)元素之間關(guān)系的一門學(xué)科。它包括三個(gè)方面的內(nèi)容:數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)、數(shù)據(jù)的運(yùn)算。
數(shù)據(jù)的邏輯結(jié)構(gòu)與數(shù)據(jù)的存儲(chǔ)無(wú)關(guān),它是獨(dú)立于計(jì)算機(jī)的。
通常數(shù)據(jù)結(jié)構(gòu)分為集合線性樹形四類。
數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)包括順序存儲(chǔ)結(jié)構(gòu)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)索引存儲(chǔ)結(jié)構(gòu)散列存儲(chǔ)結(jié)構(gòu)
算法的特點(diǎn)?有窮性確定性可行性輸入輸出
算法的描述,可以用流程圖,自然語(yǔ)言或其他方式如數(shù)學(xué)語(yǔ)言或約定的符號(hào)語(yǔ)言來(lái)描述,c語(yǔ)言描述
衡量算法的標(biāo)準(zhǔn):正確性可讀性健壯性效率和存儲(chǔ)量需求
算法的時(shí)間復(fù)雜度是指在計(jì)算機(jī)上運(yùn)行時(shí)所消耗的時(shí)間
算法的空間復(fù)雜度是指計(jì)算機(jī)執(zhí)行過(guò)程中所需要的最大存儲(chǔ)空間
確定算法的時(shí)間和空間的方法有事后統(tǒng)計(jì)法事前分析估算法

線性表的順序存儲(chǔ)結(jié)構(gòu)就是將線性表的元素按其邏輯次序依次存放在一組地址連續(xù)的存儲(chǔ)單元里
存放數(shù)據(jù)元素的結(jié)點(diǎn)至少包括兩個(gè)域,一個(gè)域存放該元素的數(shù)據(jù),稱為數(shù)據(jù)域(data);另一個(gè)域存放后繼結(jié)點(diǎn)在存儲(chǔ)器中的地址,稱為指針域或鏈域(next)。這種鏈?zhǔn)椒峙涞拇鎯?chǔ)結(jié)構(gòu)稱為鏈表。
棧(stack)是限定只能在表的一端進(jìn)行插入和刪除操作的線性表。特點(diǎn):先進(jìn)后出(FILO)或后進(jìn)先出(LIFO)
隊(duì)列(Queue)是一種先進(jìn)先出(FIFO,First In First Out)的線性表。
循環(huán)隊(duì)列的問題:無(wú)法區(qū)分隊(duì)空和隊(duì)滿的方法,解決方法1.用一個(gè)標(biāo)志位區(qū)分2,少用一個(gè)存儲(chǔ)空間front==rear隊(duì)空f(shuō)ront == (rear+1)% maxsize隊(duì)滿
數(shù)組:常用語(yǔ)言都是以行優(yōu)先順序存放

樹型結(jié)構(gòu)是以分支關(guān)系定義的層次結(jié)構(gòu)。
數(shù)型結(jié)構(gòu)常用術(shù)語(yǔ)
結(jié)點(diǎn):表示樹中的元素。
結(jié)點(diǎn)的度:一個(gè)結(jié)點(diǎn)擁有的子樹數(shù)目。如A結(jié)點(diǎn)的度為3,它有三個(gè)子樹T1、T2和T3。E、F結(jié)點(diǎn)的度為0,它們沒有子樹。
葉子:度為零的結(jié)點(diǎn)稱葉子或終端結(jié)點(diǎn)。
雙親(parent):一個(gè)結(jié)點(diǎn)是它的那些子樹的根的雙親結(jié)點(diǎn)。
孩子(child):除根結(jié)點(diǎn)外每個(gè)結(jié)點(diǎn)都是其前趨結(jié)點(diǎn)的孩子。
兄弟(sibling):同一個(gè)雙親的孩子之間互為兄弟。如A是B、C、D的雙親;B、C、D是A的孩子;B、C、D互為兄弟。
結(jié)點(diǎn)的層次:根結(jié)點(diǎn)的層數(shù)為1,其它任何結(jié)點(diǎn)的層數(shù)等于它的父結(jié)點(diǎn)的層數(shù)加1。
樹的深度:一棵樹中,結(jié)點(diǎn)的最大層次值就是樹的深度。圖3-1中樹的深度為4。
森林:森林是m(m≥0)棵互不相交的樹的集合。
樹的度:一棵樹上所有結(jié)點(diǎn)的度的最大值就是這棵樹的度。
有序樹:樹中結(jié)點(diǎn)在同層中按從左到右有序排列、不能互換的稱為有序樹,反之,稱為無(wú)序樹。
二叉樹的定義:一個(gè)二叉樹是一個(gè)有限結(jié)點(diǎn)的集合,該集合或者為空,或由一個(gè)根結(jié)點(diǎn)和兩棵互不相交的被稱為該根的左子樹和右子樹的二叉樹組成。
二叉樹的存儲(chǔ)結(jié)構(gòu):通常用具有兩個(gè)指針域的鏈表作為二叉樹的存儲(chǔ)結(jié)構(gòu),其中每個(gè)結(jié)點(diǎn)由數(shù)據(jù)域(data)、左指針(Lchild)、右指針(Rchild)組成。
二叉樹的性質(zhì)
性質(zhì)1:在二叉樹中,第i層的結(jié)點(diǎn)數(shù)最多有2i?12^{i-1}2i?1(i≥1)個(gè)。
性質(zhì)2:在深度為k的二叉樹中結(jié)點(diǎn)總數(shù)最多有2k2^k2k–1個(gè)。
性質(zhì)3:?對(duì)任何一棵二叉樹T,如果其終端結(jié)點(diǎn)數(shù)為n0,度為2的結(jié)點(diǎn)數(shù)為n2,則n0=n2+1。
特殊形式的二叉樹
滿二叉樹:如果一棵二叉樹的深度為k,并且含有2k–1個(gè)結(jié)點(diǎn),則稱此二叉樹為滿二叉樹。圖2-7是一棵深度為4的滿二叉樹。
完全二叉樹:深度為k,有n個(gè)結(jié)點(diǎn)的二叉樹,當(dāng)且僅當(dāng)其每一個(gè)結(jié)點(diǎn)都與深度為k的滿二叉樹中的編號(hào)從1到n的結(jié)點(diǎn)一一對(duì)應(yīng)時(shí),稱之為完全二叉樹。
平衡二叉樹: 二叉樹上任一結(jié)點(diǎn)的左子樹深度減去右子樹深度的差值,稱為此結(jié)點(diǎn)的平衡因子。若一棵二叉樹中,每個(gè)結(jié)點(diǎn)的平衡因子之絕對(duì)值都不大于1,則稱這棵二叉樹為平衡二叉樹。
一般樹轉(zhuǎn)換為二叉樹的步驟:加線-抹線-旋轉(zhuǎn)
二叉樹的遍歷:先序遍歷,中序遍歷,后序遍歷
給定N個(gè)權(quán)值作為N個(gè)葉子結(jié)點(diǎn),構(gòu)造一棵二叉樹若該樹的帶權(quán)路徑長(zhǎng)度達(dá)到最小,稱這樣的二叉樹為最優(yōu)二叉樹,也稱為哈夫曼樹(Huffman Tree)。
哈夫曼樹的構(gòu)建方法:https://blog.csdn.net/lee18254290736/article/details/77618201


1.什么是算法,和程序有什么區(qū)別?
算法(algorithm)算法是解決某一特定類型問題的有限運(yùn)算序列
算法的含義與程序十分相似,但二者是有區(qū)別的。一個(gè)程序不一定滿足有窮性(死循環(huán)),另外,程序中的指令必須是機(jī)器可執(zhí)行的,而算法中的指令則無(wú)此限制。一個(gè)算法若用計(jì)算機(jī)語(yǔ)言來(lái)書寫,則它就可以是一個(gè)程序。

2.數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)有哪些?它們之間本質(zhì)的區(qū)別?
線性存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
數(shù)組靜態(tài)分配內(nèi)存,鏈表動(dòng)態(tài)分配內(nèi)存;
數(shù)組在內(nèi)存中連續(xù),鏈表不連續(xù);
數(shù)組利用下標(biāo)定位,時(shí)間復(fù)雜度為O(1),鏈表定位元素時(shí)間復(fù)雜度O(n);
數(shù)組插入或刪除元素的時(shí)間復(fù)雜度O(n),鏈表的時(shí)間復(fù)雜度O(1)。

3.試編寫算法求一只單鏈表的長(zhǎng)度,并考慮表空的情況

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; //返回鏈表的長(zhǎng)度 }

以下兩個(gè)問題在面試時(shí)也會(huì)經(jīng)常碰到,熟記

4.試比較順序表和鏈表的優(yōu)缺點(diǎn)
順序存儲(chǔ)結(jié)構(gòu)
優(yōu)點(diǎn)
1.隨機(jī)訪問性強(qiáng)
2.查找速度快
缺點(diǎn)
1.插入刪除效率低
2.可能浪費(fèi)內(nèi)存(在給長(zhǎng)度變化較大的線性表預(yù)先分配空間時(shí)必須按照最大空間分配,使存儲(chǔ)空間不能得到充分的利用)
3.內(nèi)存空間要求高,必須有足夠的連續(xù)內(nèi)存空間。
3.表的容量難以擴(kuò)充

鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
優(yōu)點(diǎn)
1.插入刪除速度快
2.內(nèi)存利用率高,不會(huì)浪費(fèi)內(nèi)存
3.大小沒有固定,拓展很靈活。
缺點(diǎn)
查找效率低

5.試比較單向鏈表和雙向鏈表的優(yōu)缺點(diǎn)
單向鏈表:
優(yōu)點(diǎn):單向鏈表增加刪除節(jié)點(diǎn)簡(jiǎn)單。
缺點(diǎn):只能從頭到尾遍歷。
雙向鏈表:
優(yōu)點(diǎn):可以找到前驅(qū)和后繼,可進(jìn)可退。
缺點(diǎn):增加刪除節(jié)點(diǎn)復(fù)雜

6.試說(shuō)明樹和二叉樹有何不同?為何要將一般樹轉(zhuǎn)換為二叉樹?
樹和二叉樹的區(qū)別主要是二叉樹的結(jié)點(diǎn)的子樹要區(qū)分左子樹和右子樹
二叉樹比樹便于處理

一般樹轉(zhuǎn)換為二叉樹
步驟:
(1) 加線:親兄弟之間加一連線。
(2)抹線:對(duì)于每個(gè)結(jié)點(diǎn),除了與它的第一個(gè)孩子保持聯(lián)系外,除去與其它孩子的聯(lián)系。
(3) 旋轉(zhuǎn):以樹根為軸心,將整棵樹順時(shí)針旋轉(zhuǎn)45度。

先序遍歷,中序遍歷,后序遍歷


圖的相關(guān)術(shù)語(yǔ)
(1) 圖。圖G由兩個(gè)集合V(G)和E(G)所組成,記作G=(V,?E)。其中,V(G)是圖中頂點(diǎn)的非空有限集合,E(G)是圖中邊的有限集合。
(2) 有向圖。如果圖中每條邊都是頂點(diǎn)的有序?qū)?#xff0c;即每條邊都用箭頭表明了方向,則此圖為有向圖。有向圖中的邊也稱為弧,用尖括號(hào)括起一對(duì)頂點(diǎn)表示。
E(G1)= {< V1, V2>,< V1, V3>,< V3, V4>,< V4, V1>}
如其中弧< V1, V2>,稱V1為初始點(diǎn)或弧尾,V2為終端點(diǎn)或弧頭。
(3) 無(wú)向圖。如果圖中每條邊都是頂點(diǎn)的無(wú)序?qū)?#xff0c;則稱此圖為無(wú)向圖。無(wú)向邊用圓括號(hào)括起的兩個(gè)相關(guān)頂點(diǎn)來(lái)表示。
E(G2)= {(V1, V2),(V1, V3),(V3, V4),( V4, V1)}
(4) 子圖。設(shè)有兩個(gè)圖GA和GB,且滿足

則稱GB是GA的子圖
(5) 帶權(quán)圖。在圖的邊或弧上加上一個(gè)相關(guān)聯(lián)的數(shù)(權(quán)),稱為帶權(quán)圖或網(wǎng)。網(wǎng)分為有向網(wǎng)和無(wú)向網(wǎng)。
(6) 路徑和回路。
在無(wú)向圖中,從頂點(diǎn)Vp到Vq的路徑是頂點(diǎn)序列 (Vp,Vi1,Vi2,…,Vik , Vq),且(Vp ,Vi1),(Vi1,Vi2)…(Vik ,Vq)都屬于E中的邊。

在有向圖中,則由頂點(diǎn)的弧組成有向路徑
路徑上邊或弧的數(shù)目稱為路徑長(zhǎng)度
網(wǎng)的路徑長(zhǎng)度定義為路徑上權(quán)值的和
除第一個(gè)和最后一個(gè)頂點(diǎn)外,序列中其余頂點(diǎn)各不相同的路徑稱為簡(jiǎn)單路徑
第一個(gè)頂點(diǎn)和最后一個(gè)頂點(diǎn)相同的簡(jiǎn)單路徑稱為簡(jiǎn)單回路

(7)連通圖和連通分量。在無(wú)向圖中,若從Vi到Vj存在路徑,則稱Vi到Vj是連通的。若圖中每一對(duì)頂點(diǎn)都是連通,則稱G為連通圖。
連通分量是指無(wú)向圖中的極大連通子圖。
(8) 頂點(diǎn)的度、入度、出度。在無(wú)向圖中,頂點(diǎn)的度就是和該頂點(diǎn)相關(guān)聯(lián)的邊的數(shù)目
有向圖中,以某頂點(diǎn)為弧頭的弧的數(shù)目,稱為此頂點(diǎn)的入度;以某頂點(diǎn)為弧尾的弧的數(shù)目稱為此頂點(diǎn)的出度。該頂點(diǎn)的度則是此頂點(diǎn)的入度與出度之和。

圖的存儲(chǔ)結(jié)構(gòu)
鄰接矩陣表示法鄰接表表示法
1、鄰接矩陣
根據(jù)圖的定義可知,一個(gè)圖的邏輯結(jié)構(gòu)分兩部分,一部分是組成圖的頂點(diǎn)的集合;另一部分是頂點(diǎn)之間的聯(lián)系,即邊或弧的集合。因此,在計(jì)算機(jī)中存儲(chǔ)圖只要解決對(duì)這兩部分的存儲(chǔ)表示即可。
可用一個(gè)一維數(shù)組存放圖中所有頂點(diǎn)的信息;用一個(gè)二維數(shù)組來(lái)存放數(shù)據(jù)元素之間的關(guān)系的信息(即邊或弧的集合E)。這個(gè)二維數(shù)組稱之為鄰接矩陣。鄰接矩陣是表示頂點(diǎn)之間的鄰接關(guān)系的矩陣。



借助于鄰接矩陣,可以很容易地求出圖中頂點(diǎn)的度。
鄰接矩陣有如下結(jié)論:
(1) 無(wú)向圖的鄰接矩陣是對(duì)稱的,而有向圖的鄰接矩陣不一定對(duì)稱。對(duì)無(wú)向圖可考慮只存下三角(或上三角)元素。
(2) 對(duì)于無(wú)向圖,鄰接矩陣第i行(或第i列)的元素之和是頂點(diǎn)Vi的度。
(3) 對(duì)于有向圖,鄰接矩陣第i行元素之和為頂點(diǎn)Vi的出度第i列的元素之和為頂點(diǎn)Vi的入度。

2、鄰接表
鄰接表是一種順序分配和鏈?zhǔn)椒峙湎嘟Y(jié)合的存儲(chǔ)結(jié)構(gòu)。它包括兩個(gè)部分:一部分是鏈表;另一部分是向量。
在鄰接表中,對(duì)圖中每個(gè)頂點(diǎn)建立一個(gè)單鏈表第i個(gè)單鏈表中的結(jié)點(diǎn)包含了與頂點(diǎn)Vi的所有鄰接頂點(diǎn)。每個(gè)結(jié)點(diǎn)由三個(gè)域組成:鄰接域adjvex、數(shù)據(jù)域data和鏈域nextarc

在鄰接表上容易找到任一頂點(diǎn)的第一個(gè)鄰接點(diǎn)和下一個(gè)鄰接點(diǎn),但要判定任意兩個(gè)頂點(diǎn)(Vi和Vj)之間是否有邊或弧相連,則需搜索第i個(gè)或第j個(gè)鏈表,因此不及鄰接矩陣方便。
對(duì)一個(gè)圖來(lái)說(shuō),鄰接表不是惟一的,它取決于建立鄰接表時(shí),結(jié)點(diǎn)在每個(gè)單鏈表中的插入策略。另外,對(duì)于有向圖,其鄰接表中第i個(gè)單鏈表的結(jié)點(diǎn)個(gè)數(shù)就是此結(jié)點(diǎn)的出度;對(duì)于無(wú)向圖,其鄰接表中第i個(gè)單鏈表的結(jié)點(diǎn)個(gè)數(shù)就是此結(jié)點(diǎn)的度。

圖 的 遍 歷
深度優(yōu)先搜索廣度優(yōu)先搜索。
1.深度優(yōu)先搜索DFS
深度優(yōu)先搜索的基本思想是:
(1) 首先訪問圖G的指定起始點(diǎn)V0;
(2) 從V0出發(fā),訪問一個(gè)與V0鄰接的頂點(diǎn)W1后,再?gòu)腤1出發(fā),訪問與W1鄰接且未被訪問過(guò)的頂點(diǎn)W2。從W2出發(fā),重復(fù)上述過(guò)程,直到遇到一個(gè)所有與之鄰接的頂點(diǎn)均被訪問過(guò)的頂點(diǎn)為止;
(3) 沿著剛才訪問的次序,反向回退到尚有未被訪問過(guò)的鄰接點(diǎn)的頂點(diǎn),從該頂點(diǎn)出發(fā),重復(fù)步驟(2)、(3),直到所有被訪問過(guò)的頂點(diǎn)的鄰接點(diǎn)都已被訪問過(guò)為止;若此時(shí)圖中尚有頂點(diǎn)未被訪問,則另選圖中一個(gè)未曾被訪問的頂點(diǎn)作起始點(diǎn),重復(fù)上述過(guò)程,直至圖中所有頂點(diǎn)都被訪問到為止。

2.廣度優(yōu)先搜索BFS
廣度優(yōu)先搜索(breadth-first search)類似于樹的按層次遍歷的過(guò)程。
假設(shè)從圖中某頂點(diǎn)V0出發(fā),在訪問了V0之后依次訪問V0的各個(gè)未曾被訪問過(guò)的鄰接點(diǎn),然后分別從這些鄰接點(diǎn)出發(fā)廣度優(yōu)先搜索遍歷圖,直至圖中所有已被訪問的頂點(diǎn)的鄰接點(diǎn)都被訪問到。若此時(shí)圖中尚有頂點(diǎn)未被訪問,則另選圖中一個(gè)未曾被訪問的頂點(diǎn)作起始點(diǎn),重復(fù)上述過(guò)程,直至圖中所有頂點(diǎn)都被訪問到為止。
具體遍歷步驟如下:
(1) 訪問V0。
(2) 從V0出發(fā),依次訪問V0的未被訪問過(guò)的鄰接點(diǎn)W1,W2,…,Wt。然后依次從W1,W2,…,Wt出發(fā),訪問各自未被訪問過(guò)的鄰接點(diǎn)。
(3)重復(fù)步驟(2),直到所有頂點(diǎn)的鄰接點(diǎn)均被訪問過(guò)為止。



查找和排序
查找的基本概念
查找是數(shù)據(jù)處理中最基本的操作之一,當(dāng)查找所涉及的數(shù)據(jù)量很大時(shí),查找方法的效率直接影響數(shù)據(jù)處理的速度。 在數(shù)據(jù)處理中,被查找的元素通常是以記錄形式出現(xiàn),即每一個(gè)數(shù)據(jù)元素(記錄)由若干個(gè)數(shù)據(jù)項(xiàng)組成,其中能用來(lái)唯一標(biāo)識(shí)記錄的數(shù)據(jù)項(xiàng)稱為主關(guān)鍵字(Primary Key)。查找就是根據(jù)給定值K,在查找表中確定一個(gè)關(guān)鍵字等于給定值K的記錄或數(shù)據(jù)元素。若存在這樣的數(shù)據(jù)元素,則稱查找是成功的,否則稱查找不成功。
常見查找算法

  • 順序查找(線性查找)
    最簡(jiǎn)單、常用的查找技術(shù)。
    基本思想:從第一個(gè)記錄開始,依次將每個(gè)元素的關(guān)鍵字同給定值K進(jìn)行比較,若某個(gè)元素的關(guān)鍵字等于給定值K,則表明查找成功,返回該元素的下標(biāo);反之,若直到所有元素都比較完畢,仍找不到關(guān)鍵字為K的元素,則表明查找失敗,返回特定的值(常用?1表示)。

    若對(duì)此算法進(jìn)行一些改進(jìn),在原表長(zhǎng)n基礎(chǔ)上在表尾增加一個(gè)關(guān)鍵字為指定值K的記錄,可避免每“比較”一次,就要判別查找是否結(jié)束。當(dāng)n很大時(shí),大約可節(jié)省一半的時(shí)間。

    2.對(duì)分查找
    如果查找表中的記錄按關(guān)鍵字有序,則可以采用一種高效率的查找方法——對(duì)分查找,也稱二分查找
    對(duì)分查找的基本思想是:對(duì)于有序表,查找時(shí)先取表中間位置的記錄關(guān)鍵字和所給關(guān)鍵字進(jìn)行比較,若相等,則查找成功;如果給定值比該記錄關(guān)鍵字大,則在后半部分繼續(xù)進(jìn)行折半查找;否則在前半部分進(jìn)行折半查找,直到找到或者查找范圍為空而查不到為止。
    對(duì)分查找的過(guò)程實(shí)際上是先確定待查元素所在的區(qū)域,然后逐步縮小區(qū)域,直到查找成功或失敗為止。
    算法中需要用到三個(gè)變量,?low表示區(qū)域下界,?high表示上界,?中間位置mid=(low+high)DIV 2。
    對(duì)分查找只適用于以順序存儲(chǔ)結(jié)構(gòu)組織的有序表。
    3.分塊查找
    分塊查找又稱索引順序查找,這是順序查找的另一種改進(jìn)方法。
    它要求查找表“分塊有序”。假如按關(guān)鍵字遞增順序進(jìn)行分塊排列,就是指第j塊的所有記錄的關(guān)鍵字均大于第j?1塊的所有記錄的關(guān)鍵字(j=2,3,…,n),并建立一個(gè)索引表。把每塊中的最大關(guān)鍵字值及每塊的第一個(gè)記錄在表中的位置存放在索引項(xiàng)中。
    整個(gè)查找過(guò)程分兩步進(jìn)行:
    (1) 確定待查記錄所在的塊。
    (2) 在塊內(nèi)查找。

  • 二叉排序樹的查找
    若對(duì)查找表既允許進(jìn)行查找運(yùn)算,又允許進(jìn)行插入和刪除運(yùn)算,則稱該表為動(dòng)態(tài)查找表。二叉排序樹的查找就是動(dòng)態(tài)查找。
    1.二叉排序樹的查找
    二叉排序樹(binary sort tree)或者是一棵空樹;或者是具有下列性質(zhì)的二叉樹。
    (1) 若它的左子樹不空,則左子樹上所有結(jié)點(diǎn)的值均小于它的根結(jié)點(diǎn)的值;
    (2) 若它的右子樹不空,則右子樹上所有結(jié)點(diǎn)的值均大于或等于它的根結(jié)點(diǎn)的值;
    (3) 它的左、右子樹也分別為二叉排序樹。
    2.二叉排序樹的生成
    對(duì)一組數(shù)據(jù)序列{K1,K2,…,Kn},先設(shè)一棵空二叉樹,然后依次將序列中的元素生成結(jié)點(diǎn)后逐個(gè)插入到已生成的二叉排序樹中。步驟如下:
    (1) ?K1是二叉排序樹的根;
    (2) 若K2<K1,則K2所在的結(jié)點(diǎn)應(yīng)插入到K1的左子樹上;否則插入到K1的右子樹上;
    (3) 讀Ki,若Ki< K1(根),則插入到根的左子樹上,否則Ki插入到根的右子樹上;
    (4) 若i≤n,則繼續(xù)執(zhí)行步驟(3),否則結(jié)束。

    哈 希 查 找
    順序查找、對(duì)分查找、分塊查找、二叉排序樹查找:
    都需進(jìn)行一系列和關(guān)鍵字的比較確定被查元素在查找表中的位置,查找的效率依賴于查找過(guò)程中所進(jìn)行的比較次數(shù)
    哈希查找:
    哈希查找方法是利用關(guān)鍵字進(jìn)行某種運(yùn)算后直接確定元素的存儲(chǔ)位置,所以哈希查找方法是用關(guān)鍵字計(jì)算元素存儲(chǔ)位置的查找方法。

    1.哈希表的建立
    哈希表的建立:以線性表中的每個(gè)元素的關(guān)鍵字K為自變量,通過(guò)一種函數(shù)H(K)計(jì)算出函數(shù)值,然后將該元素存入H(K)所指定的相應(yīng)的存儲(chǔ)單元。
    查找時(shí),只要根據(jù)要查找的關(guān)鍵字用同樣的函數(shù)計(jì)算出地址H(K),然后直接到相應(yīng)的單元中去取所要找的元素。稱函數(shù)H(K)為哈希(Hash)函數(shù),按這個(gè)思想建立的表為哈希表。
    對(duì)于哈希法,主要考慮兩個(gè)問題:
    (1) 構(gòu)造一個(gè)合適的哈希函數(shù)。分析數(shù)據(jù)元素的關(guān)鍵字集合的特點(diǎn),找出適當(dāng)?shù)暮瘮?shù)H(K),使計(jì)算出的存儲(chǔ)地址盡可能均勻地分布在哈希表中;同時(shí)也希望函數(shù)H(K)盡量簡(jiǎn)單,便于快速計(jì)算;哈希函數(shù)H(K)一般應(yīng)是一個(gè)壓縮映象函數(shù),它應(yīng)具有較大的壓縮性,以節(jié)省存儲(chǔ)空間。
    常用的構(gòu)造哈希函數(shù)的方法有:
    ① 數(shù)字分析法;
    ② 平方取中法;
    ③ 除留余數(shù)法;
    ④ 折疊法;

    排 序

    排序是計(jì)算機(jī)程序設(shè)計(jì)中的一種重要運(yùn)算,它的功能是將一個(gè)數(shù)據(jù)元素的無(wú)序序列調(diào)整為一個(gè)有序序列。經(jīng)排序的數(shù)據(jù)若按由大到小的順序排列,稱為降序;反之,若按由小到大的順序排列,稱為升序。

    1、簡(jiǎn)單選擇排序
    簡(jiǎn)單選擇排序的方法是在所有的記錄中選出關(guān)鍵字最小的記錄,把它與第一個(gè)記錄交換存儲(chǔ)位置,然后再在余下的記錄中選出次小的關(guān)鍵字對(duì)應(yīng)的記錄,把它與第二個(gè)記錄交換,依此類推,直至排序完成。
    簡(jiǎn)單選擇的時(shí)間復(fù)雜度是O(n2)。

    2.直接插入排序
    插入排序的基本思想是把記錄逐一按其關(guān)鍵字的大小插入到已經(jīng)排好次序的記錄序列中的適當(dāng)位置,直到全部插入完為止。這很象打撲克牌時(shí),一邊抓牌,一邊理牌的過(guò)程,每抓一張牌就把它插到適當(dāng)?shù)奈恢蒙先ァ?br /> 設(shè)有n個(gè)記錄(R1,R2,…,Rn),已劃分為已排序部分和未排序部分,即插入Ri時(shí),(R1,R2,…,Ri?1)是已排好序的部分,(Ri,Ri+1,…,Rn)屬于未排序部分。用Ri依次與Ri?1,Ri?2,…,R1進(jìn)行比較,找出Ri在有序子文件中的插入位置,將Ri插入,原位置上的記錄至Ri?1均順序后移一位。
    直接插入排序是穩(wěn)定的,其時(shí)間復(fù)雜度為O(n2)。
    3.冒泡排序
    冒泡排序的基本思想為:從R1開始,兩兩比較相鄰記錄的關(guān)鍵字,即比較Ri和Ri+1(i=1,2,…,n?1)的關(guān)鍵字大小,若逆序(如Ki>Ki+1),則交換Ri和Ri+1的位置,如此經(jīng)過(guò)一趟排序,關(guān)鍵字最大的記錄被安置在最后一個(gè)位置(Rn)上。然后再對(duì)前n?1個(gè)記錄進(jìn)行同樣的操作,則具有次大關(guān)鍵字的記錄被安置在第n?1個(gè)位置(Rn?1)上。如此反復(fù),進(jìn)行n?1趟冒泡排序后所有待排序的n個(gè)記錄已經(jīng)按關(guān)鍵字由小到大有序。
    冒泡排序方法是穩(wěn)定的,其在最壞情況下的時(shí)間復(fù)雜度為O(n2)。但由于冒泡排序能“判別”記錄的狀態(tài),所以當(dāng)待排序序列是基本有序的序列時(shí),采用冒泡排序方法的效率是很高的。

    4.快速排序
    快速排序也稱作劃分交換排序,和冒泡排序同屬于交換排序類型。它是目前內(nèi)部排序中速度最快的排序方法,故稱為快速排序,其平均時(shí)間復(fù)雜度為O(nlogn) 。它的基本思想是:在待排序的n個(gè)記錄中任取一個(gè)記錄R(通常為第一個(gè)),以該記錄的關(guān)鍵字K為準(zhǔn),將所有剩下的n?1個(gè)記錄劃分為兩個(gè)子序列,第一個(gè)子序列中所有記錄的關(guān)鍵字均小于或等于K;第二個(gè)子序列中所有記錄的關(guān)鍵字均大于K。

    待排序記錄數(shù)n較小:直接插入、簡(jiǎn)單選擇
    基本有序:直接插入、冒泡
    快速排序:越亂越好


    畫一棵對(duì)20個(gè)記錄進(jìn)行對(duì)分查找的判定樹,并求等概率情況下的平均查找長(zhǎng)度

    第三章 操作系統(tǒng)


    計(jì)算機(jī)系統(tǒng)分層

    操作系統(tǒng)的發(fā)展過(guò)程:

    1.手工操作階段 2.早期批處理階段 3.執(zhí)行系統(tǒng)階段 4.多道程序系統(tǒng)

    操作系統(tǒng)是計(jì)算機(jī)系統(tǒng)中的一個(gè)系統(tǒng)軟件,它是這樣一些程序模塊的集合:它們能夠有效地組織和管理計(jì)算機(jī)系統(tǒng)中的硬件與軟件資源,合理地組織計(jì)算機(jī)工作流程,控制程序的執(zhí)行,并向用戶提供各種服務(wù)功能,使用戶能夠靈活、方便和有效地使用計(jì)算機(jī)

    操作系統(tǒng)一般分為三種基本類型:
    多道批處理操作系統(tǒng)分時(shí)系統(tǒng)實(shí)時(shí)系統(tǒng)
    1多道批處理操作系統(tǒng)
    多道:計(jì)算機(jī)內(nèi)存中同時(shí)可以存放多道作業(yè)
    批處理:用戶與作業(yè)之間沒有交互作用,用戶不能直接控制作業(yè)的運(yùn)行,“脫機(jī)操作”
    用戶作業(yè) 外存緩存器 內(nèi)存執(zhí)行
    用于計(jì)算中心等較大型計(jì)算機(jī)系統(tǒng),目的是為了充分利用中央處理機(jī)及各種設(shè)備資源。
    2分時(shí)系統(tǒng)
    多道批處理系統(tǒng)能提高機(jī)器資源利用率,但用戶不能與機(jī)器直接交互,對(duì)程序開發(fā)帶來(lái)很大不變。
    在一臺(tái)主機(jī)上連接了多個(gè)帶有顯示器和鍵盤的終端,同時(shí)允許多個(gè)用戶共享主機(jī)中的資源,每個(gè)用戶都可通過(guò)自己的終端以交互方式使用計(jì)算機(jī)。
    將CPU分割成很小的時(shí)間片輪流分配給多個(gè)用戶,時(shí)間片分割得很小,如同自己獨(dú)占一臺(tái)計(jì)算機(jī)。
    3實(shí)時(shí)系統(tǒng)
    1)實(shí)時(shí)控制系統(tǒng)
    把計(jì)算機(jī)用于生產(chǎn)過(guò)程的控制,要求實(shí)時(shí)采集現(xiàn)場(chǎng)數(shù)據(jù),實(shí)時(shí)處理數(shù)據(jù),進(jìn)而自動(dòng)控制執(zhí)行機(jī)構(gòu),使某個(gè)參數(shù)按預(yù)定規(guī)律變化,以保證產(chǎn)品質(zhì)量和提高產(chǎn)量。
    用于武器的控制,如火炮的自動(dòng)控制系統(tǒng),飛機(jī)的自動(dòng)駕駛系統(tǒng),導(dǎo)彈的制導(dǎo)系統(tǒng)等。
    (2)實(shí)時(shí)信息處理系統(tǒng)
    由一臺(tái)或多臺(tái)主機(jī)通過(guò)通信線路連接成百上千個(gè)遠(yuǎn)程終端,計(jì)算機(jī)接收從遠(yuǎn)程終端發(fā)來(lái)的服務(wù)請(qǐng)求,根據(jù)用戶提出的問題,對(duì)信息進(jìn)行檢索和處理,并在很短時(shí)間內(nèi)為用戶做出正確回答。如:飛機(jī)訂票系統(tǒng)。

    操作系統(tǒng)的功能和特征
    1、操作系統(tǒng)的功能

    (1)處理器管理 (2)存儲(chǔ)管理 (3)設(shè)備管理 (4)文件管理 (5)用戶接口

    操作系統(tǒng)的特性:并發(fā)性,共享性,不確定性

    存儲(chǔ)管理

    存儲(chǔ)器管理分為實(shí)存儲(chǔ)器管理虛擬存儲(chǔ)器管理。
    存儲(chǔ)器的分級(jí)結(jié)構(gòu):三級(jí),高速緩存(cpu可訪問),內(nèi)存(cpu可訪問),外存
    用戶的程序在運(yùn)行時(shí)應(yīng)存放在主存中,以便處理機(jī)訪問。但是由于主存容量有限,所以把那些不馬上使用的程序、數(shù)據(jù)放在外部存儲(chǔ)器(又稱次級(jí)存儲(chǔ))中。當(dāng)用到時(shí)再把它們讀入主存。

    存儲(chǔ)管理功能

    (1) 在多個(gè)用戶間分配主存-主存分配 (2) 映射邏輯地址為存貯地址-地址映射(轉(zhuǎn)換) (3) 對(duì)主存中信息提供保護(hù)-存儲(chǔ)保護(hù) (4) 擴(kuò)充邏輯存儲(chǔ)區(qū)-主存擴(kuò)充(1) 主存分配: 多道程序中,內(nèi)存需要存放多個(gè)用戶作業(yè),因此內(nèi)存分配要解決如何合理分配內(nèi)存空間以保證 各個(gè)作業(yè)互不沖突,而且系統(tǒng)提供適當(dāng)?shù)姆峙渌惴?#xff0c;以提供內(nèi)存的利用率和運(yùn)行效率。 (2)地址轉(zhuǎn)換或重定位 地址空間與存儲(chǔ)空間 物理地址:(需要區(qū)分存貯器中不同的存貯單元 統(tǒng)一編號(hào), 這些編號(hào)稱為地址) 物理地址是主存的真實(shí)地址 ––– 絕對(duì)地址是:存儲(chǔ)控制部件能夠識(shí)別的主存單元編號(hào)(或字節(jié) 地址)。 名空間 ––– 存放源程序的空間。 地址空間 ––– 一個(gè)目標(biāo)程序所占有的地址范圍。 邏輯地址:又稱相對(duì)地址,是指相對(duì)于某個(gè)基準(zhǔn)量(通常用0)編址時(shí)所使用的地址, 相對(duì)地址常用于程序編寫和編譯過(guò)程中。地址映射(重定位) 當(dāng)用戶程序要調(diào)入內(nèi)存時(shí),必須把相對(duì)地址轉(zhuǎn)換為絕對(duì)地址,同時(shí)要包括對(duì)程序中與地址有關(guān)的指令進(jìn)行修改,這一過(guò)程稱為地址映射(重定位) 靜態(tài)重定位 在程序裝入時(shí)進(jìn)行,通過(guò)處理機(jī)中一對(duì)界地址寄存器來(lái)實(shí)現(xiàn)。 物理地址=邏輯地址+下界地址 動(dòng)態(tài)重定位 : 在程序執(zhí)行過(guò)程中進(jìn)行,當(dāng)CPU訪問內(nèi)存指令時(shí)由動(dòng)態(tài)變換機(jī)構(gòu)自動(dòng)進(jìn)行地址轉(zhuǎn)換。(3) 存儲(chǔ)保護(hù): 設(shè)置兩個(gè)界地址寄存器,分別用于存放正在執(zhí)行程序的上界和下界。系統(tǒng)需對(duì)每條指令所訪問的地址進(jìn)行越界檢查,如果發(fā)生越界,便發(fā)出越界中斷請(qǐng)求,以停止該程序的執(zhí)行。(4) 主存擴(kuò)充: 把內(nèi)外存聯(lián)合起來(lái)向用戶提供一個(gè)容量比實(shí)際內(nèi)存大得多的存儲(chǔ)空間。通常采用的內(nèi)存擴(kuò)充技術(shù)有覆蓋、交換和虛擬存儲(chǔ)技術(shù)。

    實(shí)存管理
    虛擬存儲(chǔ)管理
    邏輯地址→虛擬地址 虛擬地址空間
    主存地址→實(shí)在地址 實(shí)在地址空間
    程序和數(shù)據(jù)所在的虛擬地址必須放入主存的實(shí)在地址中才能運(yùn)行。因此要建立虛擬地址和實(shí)在地址的對(duì)應(yīng)關(guān)系,這種地址轉(zhuǎn)換由動(dòng)態(tài)地址映象機(jī)構(gòu)來(lái)實(shí)現(xiàn)。
    1.分頁(yè)存儲(chǔ)管理
    系統(tǒng)以頁(yè)架為單位把內(nèi)存分配給各作業(yè),每個(gè)作業(yè)占有的內(nèi)存無(wú)須連續(xù),而且作業(yè)的所有頁(yè)面也不一定同時(shí)都要裝入內(nèi)存。
    2.分段存儲(chǔ)管理


    按模塊分配存儲(chǔ)空間,一個(gè)程序一般由若干個(gè)標(biāo)準(zhǔn)或非標(biāo)準(zhǔn)程序模塊組成,分段管理把每個(gè)模塊的地址空間稱為段。每個(gè)段規(guī)定一個(gè)段號(hào),每個(gè)段的地址空間都從“0”開始。
    3.段頁(yè)式存儲(chǔ)管理
    段頁(yè)式管理是分頁(yè)和分段管理結(jié)合的結(jié)果。

    處理器管理
    1.作業(yè)、程序與進(jìn)程
    作業(yè)是用戶在一次算題過(guò)程中或一個(gè)事務(wù)處理中要求計(jì)算機(jī)系統(tǒng)所做工作的集合。
    進(jìn)程可以看作程序的一次執(zhí)行,即是在指定內(nèi)存區(qū)域中的一組指令序列的執(zhí)行過(guò)程。
    進(jìn)程與程序的區(qū)別
    區(qū)別:a.進(jìn)程是程序的執(zhí)行,是動(dòng)態(tài)概念,程序是一組指令的集合,是靜態(tài)概念。
    b. 進(jìn)程有生命過(guò)程的,進(jìn)程的誕生(創(chuàng)建)和死亡(撤銷),而程序沒有,因此進(jìn)程的存在是暫時(shí)的,程序的存在是永久的。

    存儲(chǔ)器管理目的:選擇哪一個(gè)作業(yè)進(jìn)入內(nèi)存;如何在進(jìn)程間分配處理器
    處理器管理,又稱為處理器調(diào)度,一般分為兩級(jí):
    作業(yè)調(diào)度,又稱高級(jí)調(diào)度或宏觀調(diào)度。
    功能:根據(jù)某調(diào)度原則,選取某些作業(yè)進(jìn)入內(nèi)存,為它們分配必要的資源,建立相應(yīng)的進(jìn)程,并當(dāng)作業(yè)完成后做好一切善后工作。
    進(jìn)程調(diào)度又稱為低級(jí)調(diào)度或微觀調(diào)度。
    功能:按照某種調(diào)度原則,實(shí)現(xiàn)處理器在各進(jìn)程間的轉(zhuǎn)換。

    系統(tǒng)為每個(gè)進(jìn)程建立一個(gè)進(jìn)程控制塊(PCB)。
    PCB是進(jìn)程存在的唯一標(biāo)志。
    PCB中的信息分為:
    說(shuō)明信息:進(jìn)程名、優(yōu)先數(shù)、當(dāng)前狀態(tài);
    保留信息:保留該進(jìn)程由運(yùn)行狀態(tài)轉(zhuǎn)入阻塞或就緒狀態(tài)時(shí)當(dāng)時(shí)各寄存器的內(nèi)容,便于該進(jìn)程重新進(jìn)入運(yùn)行時(shí)恢復(fù)當(dāng)時(shí)各寄存器狀況。
    處理機(jī)的數(shù)目一般總是少于進(jìn)程數(shù),在單處理機(jī)系統(tǒng)中,只有一個(gè)進(jìn)程可真正獲得處理。

    原語(yǔ)是機(jī)器指令的延伸,是用若干條機(jī)器指令構(gòu)成的,用以完成特定功能的一段程序。為保證操作的正確性,原語(yǔ)在執(zhí)行期間是不可分割的。
    用于進(jìn)程控制的原語(yǔ)有:
    (1) 創(chuàng)建進(jìn)程原語(yǔ) (2) 撤消進(jìn)程原語(yǔ) (3) 掛起進(jìn)程原語(yǔ) (4) 激活進(jìn)程原語(yǔ)

    多道程序并發(fā)運(yùn)行出現(xiàn)的問題
    對(duì)資源的共享問題
    相關(guān)進(jìn)程間的制約問題
    進(jìn)程間的通信問題
    進(jìn)程的死鎖問題

    1.進(jìn)程的同步與互斥
    進(jìn)程的“同步”是指兩個(gè)事件的發(fā)生存在某種時(shí)序上的關(guān)系,如果系統(tǒng)中有若干個(gè)進(jìn)程要共同完成某一任務(wù),那么它們之間必須協(xié)調(diào)配合,這種進(jìn)程間的協(xié)調(diào)配合就稱為進(jìn)程的同步
    進(jìn)程“互斥”是當(dāng)進(jìn)程要求共享系統(tǒng)中某些硬件或軟件資源,而這些資源卻又要求排他性使用時(shí),這樣往往引起由于多個(gè)進(jìn)程競(jìng)爭(zhēng)同一資源使運(yùn)行結(jié)果出現(xiàn)問題。為了防止發(fā)生這種情況,必須把多個(gè)進(jìn)程使用同一資源的過(guò)程“分離”開來(lái),也就是互斥的使用該類資源。
    2.解決同步與互斥的工具
    信號(hào)量(P-V操作)

    2.進(jìn)程通信
    負(fù)責(zé)進(jìn)程之間的信息交換稱為進(jìn)程通信 (各進(jìn)程為了保持聯(lián)系而交換信息)。P-V操作也是一種通信方式,但只適合傳遞少量信息,效率較低,稱為低級(jí)通信方式.除此之外還有較高效率,傳遞大批數(shù)據(jù)的高級(jí)通信方式.
    (1)直接通信 一個(gè)進(jìn)程直接發(fā)送一個(gè)消息給接收進(jìn)程
    (2)間接通信 進(jìn)程不把消息直接發(fā)給接收者進(jìn)程,而把消息放在某個(gè)雙方共知的信箱中。

    3.死鎖
    (1)死鎖的原因和必要條件
    死鎖的定義:死鎖是指計(jì)算機(jī)系統(tǒng)中進(jìn)程所處的一種狀態(tài)。即在系統(tǒng)中的一組進(jìn)程,由于競(jìng)爭(zhēng)資源而永遠(yuǎn)阻塞,稱此時(shí)進(jìn)程處于死鎖狀態(tài)
    死鎖產(chǎn)生的原因
    系統(tǒng)資源不足
    進(jìn)程推進(jìn)的順序不當(dāng)
    死鎖的必要條件
    互 斥:所涉及的資源是非共享的
    占有等待:進(jìn)程在等待新資源時(shí),繼續(xù)占用已分配到的資源
    不可剝奪:一個(gè)進(jìn)程占有的資源不能被別的進(jìn)程強(qiáng)行搶占
    循環(huán)等待:一個(gè)進(jìn)程獲得的資源同時(shí)被另一個(gè)進(jìn)程所請(qǐng)求,從而形成一個(gè)進(jìn)程的循環(huán)鏈
    解決死鎖的方法:
    死鎖的預(yù)防
    死鎖的避免
    死鎖的檢測(cè)和恢復(fù)

    死鎖定理:
    系統(tǒng)在某一狀態(tài)下死鎖的充要條件是當(dāng)且僅當(dāng)某一狀態(tài)下的進(jìn)程-資源圖是不可完全化簡(jiǎn)的。

    死鎖的恢復(fù)
    資源剝奪法:強(qiáng)制性地從系統(tǒng)中撤消某些進(jìn)程,并剝奪它們的資源給剩下的進(jìn)程使用。這樣被撤消進(jìn)程前面已完成的工作全部損失了。
    撤消進(jìn)程法:使用一個(gè)有效的掛起和解除掛起機(jī)構(gòu)來(lái)掛起一些進(jìn)程,從掛起進(jìn)程那里搶占資源以解除死鎖。

    設(shè)備管理
    1.設(shè)備管理的功能
    設(shè)備管理的功能是按用戶需求制定分配和使用設(shè)備的策略,為I/O操作的進(jìn)程分配一條傳輸信息的通路,最大限度的實(shí)行并行操作。
    要求達(dá)到的目標(biāo)是:(1)方便性(2)設(shè)備獨(dú)立性(3)并行性(4)有效性與均衡性

    2設(shè)備的簡(jiǎn)單分類
    按設(shè)備的使用性質(zhì)分:
    獨(dú)享設(shè)備
    共享設(shè)備
    虛擬設(shè)備
    3.通道與中斷
    (1)循環(huán)測(cè)試I/O方式
    (2)程序中斷方式
    (3)通道I/O方式

    文件管理
    文件的分類:

  • 按用途分:系統(tǒng)文件,庫(kù)文件,用戶文件
    (2) 按存取權(quán)限分:可執(zhí)行、只讀、讀寫、不保護(hù)
    文件結(jié)構(gòu)和存取方式
    文件的邏輯結(jié)構(gòu)
    從用戶的角度看到的文件面貌,也就是文件的記錄結(jié)構(gòu)。
    (1) 順序結(jié)構(gòu):一個(gè)邏輯文件的信息依次存于輔存的若干連續(xù)的物理塊中。操作系統(tǒng)的用戶接口
    (2) 鏈接(或串聯(lián))結(jié)構(gòu)
    (3)索引結(jié)構(gòu)(索引順序結(jié)構(gòu))
  • 操作系統(tǒng)的用戶接口
    程序一級(jí)的接口:在應(yīng)用程序中以函數(shù)調(diào)用的方式來(lái)享用系統(tǒng)服務(wù)。
    作業(yè)控制方面的接口:是用戶在操作系統(tǒng)界面上以命令方式來(lái)操作和控制計(jì)算機(jī)的手段。
    幾種常用的操作系統(tǒng)接口:
    Unix操作系統(tǒng)接口,shell外殼,實(shí)現(xiàn)用戶與操作系統(tǒng)的交互。
    DOS操作系統(tǒng)接口,為用戶提供的界面主要是命令形式,通過(guò)命令用戶與操作系統(tǒng)交互。
    Windows系列操作系統(tǒng)接口,圖形用戶接口,界面友好,便于用戶的使用。


    1.操作系統(tǒng)的基本功能是什么?它包括哪些基本部分?
    (1)處理器管理
    (2)存儲(chǔ)管理
    (3)設(shè)備管理
    (4)文件管理
    (5)用戶接口
    構(gòu)成部分:
    (1)對(duì)CPU的使用進(jìn)行管理的進(jìn)程調(diào)度程序
    (2)對(duì)內(nèi)存分配進(jìn)行管理的內(nèi)存管理程序
    (3)對(duì)輸入輸出設(shè)備進(jìn)行管理的驅(qū)動(dòng)程序
    (4)對(duì)外存中信息進(jìn)行管理的文件系統(tǒng)

    2.試著說(shuō)明虛擬機(jī)的概念及實(shí)現(xiàn)方法
    在裸機(jī)外面每增加一個(gè)軟件層之后就會(huì)編程一臺(tái)功能更強(qiáng)的 機(jī)器,我們通常把這種計(jì)算機(jī)系統(tǒng)成為虛擬機(jī)
    虛擬機(jī)的實(shí)現(xiàn)方法:在裸機(jī)上裝上操作系統(tǒng)對(duì)機(jī)器進(jìn)行首次拓展,再在操作系統(tǒng)的的基礎(chǔ)上增加其他軟件,這樣就可以實(shí)現(xiàn)"虛擬機(jī)"

    3.解釋名空間,作業(yè)地址空間和存儲(chǔ)空間的關(guān)系以及邏輯地址和物理地址的區(qū)別
    存放源程序的空間稱為名空間。
    當(dāng)匯編或編譯程序?qū)⒃闯绦蜣D(zhuǎn)換成目標(biāo)程序,一個(gè)目標(biāo)程序所占有的地址范圍成為地址空間,這些地址的編號(hào)是相對(duì)于起始地址而定的,一般定起始位零,稱為邏輯地址或相對(duì)地址。
    存儲(chǔ)空間是指當(dāng)目標(biāo)程序裝入主存后占用的一系列物理單元的集合,這些單元編號(hào)稱為物理地址或絕對(duì)地址。

    4.什么是重定位?靜態(tài)重定位和動(dòng)態(tài)重定位的區(qū)別是什么?各舉一例說(shuō)明
    當(dāng)用戶程序要調(diào)入內(nèi)存時(shí),必須把相對(duì)地址轉(zhuǎn)換為絕對(duì)地址。同時(shí)要包括對(duì)程序中與地址油管的指令進(jìn)行修改,這一過(guò)程稱為重定位。
    靜態(tài)重定位是在程序裝入時(shí)進(jìn)行,一般通過(guò)處理機(jī)中一對(duì)界地址寄存器來(lái)實(shí)現(xiàn)。
    動(dòng)態(tài)重定位是在程序執(zhí)行過(guò)程中進(jìn)行的,當(dāng)處理器訪問主存指令時(shí)由動(dòng)態(tài)變換機(jī)構(gòu)自動(dòng)進(jìn)行地址轉(zhuǎn)換。

    5.存儲(chǔ)管理的功能是什么?為什么要引入虛擬存儲(chǔ)器的概念?虛存的容量由什么決定?
    存儲(chǔ)管理的功能主要有:內(nèi)存分配,地址轉(zhuǎn)換,存儲(chǔ)保護(hù)和內(nèi)存擴(kuò)充
    虛擬存儲(chǔ)器能提供給用戶一個(gè)比實(shí)際內(nèi)存大得多的存儲(chǔ)空間,使用戶在編制程序時(shí)可以不必考慮存儲(chǔ)空間的限制。
    虛存的容量受兩個(gè)條件的約束:指令中地址場(chǎng)長(zhǎng)度的限制,外存儲(chǔ)器容量的限制。

    6.處理器管理主要是解決什么問題?
    在大型通用系統(tǒng)中,可能數(shù)百個(gè)批處理作業(yè)存放在磁盤中,又有數(shù)百個(gè)終端用戶與主句連接,如何從這些作業(yè)中挑選一些作業(yè)進(jìn)入主存運(yùn)行,又如何在主存各進(jìn)程間分配處理器,是操作系統(tǒng)資源管理的一個(gè)重要問題,處理器管理就是用來(lái)解決此問題的

    7.什么是進(jìn)程的同步和互斥?什么是臨界區(qū)?
    同步是指兩個(gè)時(shí)間的發(fā)生存在某種時(shí)序上的關(guān)系,如果系統(tǒng)中有若干個(gè)進(jìn)程要共同完成某一任務(wù),那么他們仙姑之間必須協(xié)調(diào)配合。
    互斥是指當(dāng)多個(gè)進(jìn)程要求共享系統(tǒng)中某些硬件或軟件資源,而這些資源卻又要求排他性使用時(shí),這樣往往引起由于多個(gè)進(jìn)程競(jìng)爭(zhēng)同一資源使運(yùn)行結(jié)果出現(xiàn)問題。
    如果在兩個(gè)進(jìn)程P1P2中加入P,V操作后,可以實(shí)現(xiàn)對(duì)公用變量count的互斥使用,其中P(s),V(s)之間的程序段稱為臨界區(qū)。

    8.死鎖產(chǎn)生的必要條件是什么?死鎖的預(yù)防,避免和檢測(cè)各有什么不同?各舉出一種相應(yīng)的辦法?
    死鎖產(chǎn)生的必要條件是:1.所涉及的資源是非共享的,2進(jìn)程在等待新資源時(shí),繼續(xù)占用已分配的資源3.一個(gè)進(jìn)程戰(zhàn)友的資源不能被其他進(jìn)程占有,4.一個(gè)進(jìn)程獲得的資源同時(shí)被另一個(gè)進(jìn)程所請(qǐng)求,從而形成一個(gè)循環(huán)鏈
    死鎖的預(yù)防是研究如何破壞產(chǎn)生死鎖的必要條件之一,從而達(dá)到不使死鎖發(fā)生的目的。死鎖的避免和死鎖的預(yù)防區(qū)別組要你在于,死鎖的預(yù)防是嚴(yán)格破壞形成死鎖的必要條件之一,使得死鎖不在系統(tǒng)中出現(xiàn)。預(yù)防方法之一,采用假脫機(jī)技術(shù)將非共享設(shè)備變成共享設(shè)備來(lái)實(shí)現(xiàn)。
    而死鎖的避免并不嚴(yán)格限制必要條件的存在,因?yàn)楸匾獥l件存在并不一定產(chǎn)生死鎖。而進(jìn)程推進(jìn)順序不當(dāng),也可以導(dǎo)致系統(tǒng)發(fā)生死鎖,因此死鎖的避免是考慮萬(wàn)一當(dāng)死鎖有可能出現(xiàn)時(shí),就小型的避免這種情況的最終發(fā)生。避免方法有相應(yīng)的銀行算法和方法
    死鎖的檢測(cè)和恢復(fù),這是一種變通的方法,它允許死鎖的產(chǎn)生,但能在適當(dāng)時(shí)間檢測(cè)出來(lái),并設(shè)法進(jìn)行恢復(fù)。利用化簡(jiǎn)進(jìn)程-資源有向圖的方法來(lái)檢測(cè)系統(tǒng)在某一特定狀態(tài)時(shí)是否處于死鎖狀態(tài)

    9.設(shè)備管理的功能是什么?怎么樣把 一臺(tái)物理設(shè)備虛擬為多臺(tái)設(shè)備?
    設(shè)備管理的功能:設(shè)備驅(qū)動(dòng)程序,即插即用,通用即插即用,集中,同一管理,添加硬件
    通過(guò)虛擬機(jī)軟件,就可以在一臺(tái)物理計(jì)算機(jī)上模擬出一臺(tái)或多臺(tái)虛擬的計(jì)算機(jī)

    10.什么是記錄,文件,文件系統(tǒng)
    記錄:文件由若干個(gè)記錄組成,每一個(gè)記錄是一些相關(guān)信息的集合
    文件:在裸機(jī)上具有完整意義的數(shù)據(jù)或字符序列的集合
    文件系統(tǒng):負(fù)責(zé)服務(wù)和管理文件的機(jī)構(gòu)


    第四章 數(shù)據(jù)庫(kù)


    數(shù)據(jù)管理的三個(gè)階段
    1.人工管理階段(20世紀(jì)50年代中期以前)
    2.文件管理系統(tǒng)(20世紀(jì)50年代末~60年代中)
    3.數(shù)據(jù)庫(kù)系統(tǒng)(20世紀(jì)60年代后)
    信息的三個(gè)領(lǐng)域
    (1)現(xiàn)實(shí)世界
    (2)信息世界
    (3)數(shù)據(jù)世界
    2.實(shí)體間的聯(lián)系
    (1)一對(duì)一聯(lián)系  
    (2)一對(duì)多聯(lián)系
    (3)多對(duì)多聯(lián)系
    3.數(shù)據(jù)庫(kù)組織

  • 數(shù)據(jù)模型
    (1)層次數(shù)據(jù)模型
    (2)網(wǎng)狀數(shù)據(jù)模型
    (3)關(guān)系數(shù)據(jù)模型
  • 數(shù)據(jù)庫(kù)的結(jié)構(gòu)
    四個(gè)基本概念:數(shù)據(jù),數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)管理系統(tǒng),數(shù)據(jù)庫(kù)系統(tǒng)
    4.數(shù)據(jù)庫(kù)設(shè)計(jì)
  • 內(nèi)容與步驟
    (1)需求分析階段
    (2)邏輯結(jié)構(gòu)設(shè)計(jì)階段
    (3)物理設(shè)計(jì)階段
    (4)數(shù)據(jù)庫(kù)實(shí)施階段
    (5)數(shù)據(jù)庫(kù)運(yùn)行和維護(hù)階段
  • 需求分析
    步驟:
    (1)系統(tǒng)調(diào)查
    (2)系統(tǒng)分析
    (3)視圖定義
  • 關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)
    關(guān)系數(shù)據(jù)庫(kù)的特點(diǎn)
    (1)數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單
    在關(guān)系模型中,實(shí)體和實(shí)體之間的聯(lián)系均由關(guān)系(二維表)來(lái)表示。
    (2)可以直接處理多對(duì)多的關(guān)系
    不論實(shí)體間的聯(lián)系是一對(duì)多還是多對(duì)多,在關(guān)系數(shù)據(jù)模型中均可用表格形式表示。
    (3)能夠一次獲取多個(gè)記錄數(shù)據(jù)
    在關(guān)系數(shù)據(jù)庫(kù)中,每一個(gè)查找命令可以得到滿足該命令的所有記錄。
    (4)數(shù)據(jù)獨(dú)立性較高
    關(guān)系數(shù)據(jù)庫(kù)中,用戶一般只要指出他要存放的數(shù)據(jù)類型、長(zhǎng)度等特性,而不必關(guān)心數(shù)據(jù)的物理存放。
    (5)有較堅(jiān)實(shí)的理論基礎(chǔ)
    關(guān)系數(shù)據(jù)庫(kù)是以關(guān)系數(shù)學(xué)理論為基礎(chǔ),這樣使關(guān)系模型的研制和應(yīng)用設(shè)計(jì)有理論指導(dǎo),保證數(shù)據(jù)庫(kù)的質(zhì)量。

    基本概念和術(shù)語(yǔ)

  • 關(guān)系
  • 關(guān)鍵字
  • 關(guān)系模式
  • 關(guān)系模型
  • 關(guān)系數(shù)據(jù)庫(kù)
  • 關(guān)系代數(shù)

    關(guān)系模式的范式
    第一范式(1NF)
    定義:如果關(guān)系模式R的每個(gè)屬性值都是不可再分的數(shù)據(jù)單位,則稱R滿足第一范式。
    第二范式(2NF)
    定義:如果關(guān)系模式R滿足第一范式,且非主屬性完全依賴于主屬性(主關(guān)鍵字),則該模式滿足第二范式。
    第三范式3NF
    定義:如果關(guān)系R滿足第二范式,且每個(gè)非主屬性均非傳遞函數(shù)依賴于主屬性,則該關(guān)系滿足3NF。


    1.數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)結(jié)構(gòu)模式各起什么作用?
    (1)用戶級(jí)
    又稱外模式,這是從各個(gè)用戶角度看到和使用的數(shù)據(jù)庫(kù),因此也稱為用戶視圖,每個(gè)用戶獲準(zhǔn)使用的部分?jǐn)?shù)據(jù)稱為子模式,這部分?jǐn)?shù)據(jù)的邏輯結(jié)構(gòu)稱為局部邏輯結(jié)構(gòu)。
    (2)概念級(jí)
    又稱概念模式,是對(duì)數(shù)據(jù)庫(kù)整體邏輯的描述,稱為DBA視圖,他是所有用戶視圖的一個(gè)最小集合,是對(duì)數(shù)據(jù)庫(kù)整體邏輯的描述,故稱為整體邏輯結(jié)構(gòu)。
    (3)物理級(jí)
    又稱內(nèi)模式,是系統(tǒng)管理員對(duì)數(shù)據(jù)進(jìn)行的物理組織,稱為系統(tǒng)程序員視圖,也稱為數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)

    2.試說(shuō)明數(shù)據(jù)庫(kù)設(shè)計(jì)的主要步驟,完成什么工作
    (1)需求分析,對(duì)唄設(shè)計(jì)對(duì)象進(jìn)行調(diào)查研究的基礎(chǔ)上提出的對(duì)應(yīng)關(guān)系的描述形式
    (2)邏輯設(shè)計(jì)(3)物理設(shè)計(jì)
    邏輯設(shè)計(jì)和物理設(shè)計(jì)實(shí)在需求分析的基礎(chǔ)上將系統(tǒng)描述形式轉(zhuǎn)化成數(shù)據(jù)庫(kù)管理系統(tǒng)相適應(yīng)的數(shù)據(jù)模型
    (4)應(yīng)用程序設(shè)計(jì)及測(cè)試(5)性能測(cè)試及企業(yè)確認(rèn)(6)裝配數(shù)據(jù)庫(kù)

    3.解釋名詞
    關(guān)鍵字,候選關(guān)鍵字,主關(guān)鍵字:關(guān)鍵字是指在一個(gè)關(guān)系中有些屬性那能唯一的識(shí)別的元組,具有唯一標(biāo)識(shí)關(guān)系中的元組性或最小屬性組,稱為該關(guān)系的候選關(guān)鍵字

    關(guān)系模式:一個(gè)關(guān)系的屬性名表,即二維標(biāo)的框架稱為關(guān)系模式

    關(guān)系模型:又稱為關(guān)系數(shù)據(jù)庫(kù)模式,一個(gè)關(guān)系模型可以有多個(gè)關(guān)系模式組成

    關(guān)系數(shù)據(jù)庫(kù):對(duì)應(yīng)于一個(gè)關(guān)系模型的額全部慣性的額集合稱為關(guān)系數(shù)據(jù)庫(kù)

    總結(jié)

    以上是生活随笔為你收集整理的计算机软件技术基础考前整理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。