软件技术基础复习提纲
文章目錄
- 第一章 緒論
- 軟件開(kāi)發(fā)過(guò)程
- 數(shù)據(jù)結(jié)構(gòu)在計(jì)算問(wèn)題中的用途
- 算法設(shè)計(jì)
- 操作系統(tǒng)
- 操作系統(tǒng)主要功能
- 編譯原理相關(guān)
- 數(shù)據(jù)庫(kù)相關(guān)
- 第二章 數(shù)據(jù)結(jié)構(gòu)
- 2.1 線性表
- 2.2 復(fù)雜度分析
- 2.3 分治遞歸
- 2.4 樹(shù)
- 樹(shù)的各種基本概念
- 二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)
- 二叉樹(shù)、滿二叉樹(shù)、完全二叉樹(shù)
- 二叉樹(shù)的遍歷
- 2.5 圖
- 圖的定義及相關(guān)術(shù)語(yǔ)
- 圖的存儲(chǔ)結(jié)構(gòu)
- 圖的遍歷
- 貪心算法與單源最短路徑
- 第三章 操作系統(tǒng)
- 3.1 進(jìn)程相關(guān)
- 進(jìn)程的定義
- 進(jìn)程的五狀態(tài)轉(zhuǎn)換模型
- 進(jìn)程的構(gòu)成與PCB
- 運(yùn)行Fork()創(chuàng)建進(jìn)程
- 3.2 線程相關(guān)
- 線程的定義
- 進(jìn)程和線程的區(qū)別
- 三類線程(用戶級(jí)、內(nèi)核級(jí)、混合)
- 3.3 互斥與同步
- 競(jìng)爭(zhēng)臨界資源引起的問(wèn)題和互斥的條件
- 掌握信號(hào)量方法
- 信號(hào)量進(jìn)行互斥和同步
- 解決生產(chǎn)者消費(fèi)者問(wèn)題
- 進(jìn)程間通信方式
- 3.4 程序的裝入和鏈接
- 高級(jí)語(yǔ)言的源代碼轉(zhuǎn)化為進(jìn)程的三個(gè)步驟
- 靜態(tài)鏈接,裝入時(shí)鏈接,運(yùn)行時(shí)鏈接的區(qū)別,以及各自的優(yōu)缺點(diǎn)
- 絕對(duì)裝入方式和可重定位裝入方式的優(yōu)缺點(diǎn)
- 第四章 編譯原理
- 4.1 數(shù)據(jù)類型及其抽象層次
- 4.2 六種數(shù)據(jù)類型聚合方式
- 4.3 語(yǔ)句級(jí)控制結(jié)構(gòu)
- 4.4 定義語(yǔ)言:生成(文法)或識(shí)別(語(yǔ)法圖)
- 4.5 文法的分類
- 4.6 推導(dǎo)與規(guī)約,文法與語(yǔ)言,二義性問(wèn)題
- 4.7 短語(yǔ)、直接短語(yǔ)、句柄的含義和求法
- 4.8 編譯步驟
- 4.9 語(yǔ)法分析的兩大類別:自下而上和自上而下
- 4.10 遞歸下降分析法
- 4.11 預(yù)測(cè)分析法
- 4.12 LR分析法是句柄規(guī)約
- 4.13 語(yǔ)義翻譯的概念、作用
- 4.14 類型檢查
- 4.15 語(yǔ)義翻譯
- 4.16 中間代碼的寫(xiě)法:三地址碼、四元式
- 第五章 數(shù)據(jù)庫(kù)
- 5.1 數(shù)據(jù)庫(kù)基本概念
- 5.2 模式的體系結(jié)構(gòu),三種模式
- 5.3 關(guān)系模式的基本概念
- 5.4 主碼與候選碼
- 5.5 關(guān)系運(yùn)算,運(yùn)算符表達(dá)式
- 5.6 完整性約束,規(guī)則、類別等
- 5.7 SQL語(yǔ)法
- 5.8 數(shù)據(jù)庫(kù)設(shè)計(jì)理論
- 函數(shù)依賴,模式分解
- 范式的概念、如何區(qū)分不同的范式
- 5.9 數(shù)據(jù)庫(kù)應(yīng)用設(shè)計(jì)方法
- 數(shù)據(jù)庫(kù)的三種數(shù)據(jù)模型
- ER模型的概念、結(jié)構(gòu)及使用其構(gòu)造數(shù)據(jù)庫(kù)的方法
- 數(shù)據(jù)庫(kù)設(shè)計(jì)的各個(gè)階段及主要工作
第一章 緒論
復(fù)習(xí)課地址
軟件開(kāi)發(fā)過(guò)程
數(shù)據(jù)結(jié)構(gòu)在計(jì)算問(wèn)題中的用途
存放要處理的數(shù)據(jù)、實(shí)現(xiàn)算法策略
算法設(shè)計(jì)
研究各類數(shù)據(jù)結(jié)構(gòu)上的各種運(yùn)算方法,從而解決計(jì)算問(wèn)題
操作系統(tǒng)
一組控制和管理計(jì)算機(jī)硬件和軟件資源、合理的對(duì)各類作業(yè)進(jìn)行調(diào)度,以及方便用戶使用的程序的集合
操作系統(tǒng)主要功能
按照一定的算法把處理機(jī)分配給進(jìn)程(線程),并對(duì)其進(jìn)行有效的管理和控制
2. 存儲(chǔ)器管理
為多道程序的運(yùn)行提供良好的環(huán)境,方便用戶使用存儲(chǔ)器,提高存儲(chǔ)器的利用率以及 能 從邏輯上擴(kuò)充內(nèi)存
完成用戶進(jìn)程提出的I/O請(qǐng)求;為用戶進(jìn)程分配其所需的I/O設(shè)備;提高CPU和I/O設(shè)備的利用率;提高I/O速度;方便用戶使用I/O設(shè)備
文件管理
對(duì)用戶文件和系統(tǒng)文件進(jìn)行管理,以方便用戶使用,并保證文件的安全性
用戶接口
提供友好的用戶接口以方便用戶使用
系統(tǒng)調(diào)用是用戶程序取得操作系統(tǒng)服務(wù)的唯一途徑
編譯原理相關(guān)
依賴操作系統(tǒng)的編譯方式
不依賴操作系統(tǒng)的編譯方式
相關(guān)語(yǔ)言
數(shù)據(jù)庫(kù)相關(guān)
數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS) 是位于用戶與操作系統(tǒng)之間的數(shù)據(jù)管理軟件。
數(shù)據(jù)庫(kù)在建立、運(yùn)用和維護(hù)時(shí)由數(shù)據(jù)庫(kù)管理系統(tǒng)統(tǒng)一管理、統(tǒng)一控制。它使用戶方便的定義數(shù)據(jù)和操作數(shù)據(jù),并能夠保證數(shù)據(jù)的安全性、完整性、以及多用戶對(duì)數(shù)據(jù)的并發(fā)使用及發(fā)生故障后的數(shù)據(jù)庫(kù)恢復(fù)。
第二章 數(shù)據(jù)結(jié)構(gòu)
2.1 線性表
-
線性表的邏輯存儲(chǔ)結(jié)構(gòu)
-
線性表的順序和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
順序:用一組地址連續(xù)的存儲(chǔ)單元依次存放線性表中的數(shù)據(jù)元素
鏈?zhǔn)?#xff1a;用一組地址任意的存儲(chǔ)單元存放線性表中的數(shù)據(jù)元素 -
兩種方式插入刪除操作
順序:均為O(n)
鏈?zhǔn)?#xff1a;O(1) -
兩種存儲(chǔ)結(jié)構(gòu)的優(yōu)缺點(diǎn)
順序適合查找,鏈?zhǔn)竭m合插入刪除
2.2 復(fù)雜度分析
- 常見(jiàn)關(guān)系式
例題:
- 漸進(jìn)分析
2.3 分治遞歸
-
分治遞歸算法思想
第一步:要求解一個(gè)大問(wèn)題可劃分為k個(gè)子問(wèn)題,對(duì)這k個(gè)子問(wèn)題進(jìn)行求解,如果子問(wèn)題的規(guī)模仍然不夠小,則再劃分為k個(gè)子問(wèn)題,如此遞歸的進(jìn)行下去,直到問(wèn)題的規(guī)模足夠小,很容易求出其解為止
第二步:將求出的小規(guī)模問(wèn)題的解合并為一個(gè)更大規(guī)模的問(wèn)題的解,自底向上逐步求出原來(lái)問(wèn)題的解 -
分支法的適用條件
該問(wèn)題的規(guī)模縮小到一定的程度就可以容易地解決;
該問(wèn)題可以分解為若干個(gè)規(guī)模較小的相同問(wèn)題,即該問(wèn)題具有最優(yōu)子結(jié)構(gòu)性質(zhì);
利用該問(wèn)題分解出的子問(wèn)題可以合并為該問(wèn)題的解;
該問(wèn)題所分解出的各個(gè)子問(wèn)題是相互獨(dú)立的,即子問(wèn)題之間不包含公共的子問(wèn)題。
Tips: 如果各個(gè)子問(wèn)題不獨(dú)立,需要重復(fù)的解決公共的子問(wèn)題,用動(dòng)態(tài)規(guī)劃更好 -
分治思想求解排序問(wèn)題
思想:
比如:
應(yīng)用:歸并排序,快速排序等
2.4 樹(shù)
樹(shù)的各種基本概念
- 樹(shù)(Tree)是n(n≥0)個(gè)結(jié)點(diǎn)的有限集,有且只有一個(gè)根結(jié)點(diǎn),其余結(jié)點(diǎn)可劃分為不同的根的子樹(shù)
- 樹(shù)的結(jié)點(diǎn)包含一個(gè)數(shù)據(jù)元素及若干指向其子樹(shù)的分支
- 結(jié)點(diǎn)擁有的子樹(shù)數(shù)稱為結(jié)點(diǎn)的度(Degree)
- 度數(shù)為0的結(jié)點(diǎn)稱為葉子(Leaf)或終端結(jié)點(diǎn)
- 度數(shù)不為0的結(jié)點(diǎn)稱為非終端結(jié)點(diǎn)或分支結(jié)點(diǎn)
- 樹(shù)的度是樹(shù)內(nèi)各結(jié)點(diǎn)的度的最大值
- 結(jié)點(diǎn)的子樹(shù)的跟稱為該結(jié)點(diǎn)的孩子,該結(jié)點(diǎn)稱為孩子的雙親,同一個(gè)雙親的孩子互稱兄弟
- 結(jié)點(diǎn)的祖先是從根到該結(jié)點(diǎn)所經(jīng)分支上的所有結(jié)點(diǎn),反之,以某結(jié)點(diǎn)為根的子樹(shù)的任意結(jié)點(diǎn)都稱為該結(jié)點(diǎn)的子孫
- 結(jié)點(diǎn)的層次(Level)從根開(kāi)始定義起,根為第一層,根的孩子為第二層
- 其雙親在同一層的結(jié)點(diǎn)互稱為堂兄弟
- 樹(shù)中結(jié)點(diǎn)的最大層次稱為樹(shù)的深度
- 如果樹(shù)中結(jié)點(diǎn)的各子樹(shù)看成從左到右是有次序的,則稱該樹(shù)為有序樹(shù),否則稱為無(wú)序樹(shù)
- 森林(Forest)是m(m≥0)棵互不相交的樹(shù)的集合
二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)
- 順序存儲(chǔ)結(jié)構(gòu)
用一組地址連續(xù)的存儲(chǔ)單元依次自上而下、自左至右存儲(chǔ)完全二叉樹(shù)上的結(jié)點(diǎn)元素;對(duì)于一般二叉樹(shù) - 鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
二叉樹(shù)的鏈表中的結(jié)點(diǎn)至少包含3個(gè)域:數(shù)據(jù)域和左、右指針域,稱之為二叉鏈表,如若還包含指向雙親結(jié)點(diǎn)的指針域則稱之為三叉鏈表
容易證得,在含有nnn個(gè)結(jié)點(diǎn)的二叉鏈表中有n+1n+1n+1個(gè)空鏈域,則應(yīng)將其每個(gè)結(jié)點(diǎn)于完全二叉樹(shù)上的結(jié)點(diǎn)相對(duì)照,存儲(chǔ)在一維數(shù)組的相應(yīng)分量中
二叉樹(shù)、滿二叉樹(shù)、完全二叉樹(shù)
- 二叉樹(shù)(Binary Tree)是另一種樹(shù)型結(jié)構(gòu),它的特點(diǎn)是每個(gè)結(jié)點(diǎn)至多只有兩棵子樹(shù)(度小于等于2),并且二叉樹(shù)的子樹(shù)有左右之分
- 滿二叉樹(shù)一棵深度為kkk且有222kkk?1-1?1個(gè)結(jié)點(diǎn)的二叉樹(shù)
- 完全二叉樹(shù)深度為kkk的,有n個(gè)結(jié)點(diǎn)的二叉樹(shù),當(dāng)且僅當(dāng)其中每一個(gè)結(jié)點(diǎn)都與深度為kkk的滿二叉樹(shù)中編號(hào)1至n的結(jié)點(diǎn)一一對(duì)應(yīng)
二叉樹(shù)的遍歷
先序中序后序遍歷
關(guān)鍵: 遞歸實(shí)現(xiàn)(先序指的是根結(jié)點(diǎn)的順序在先)
層次遍歷
關(guān)鍵:隊(duì)列實(shí)現(xiàn)(父節(jié)點(diǎn)出隊(duì)列,子節(jié)點(diǎn)入隊(duì))
題:給定先序和中序遍歷恢復(fù)二叉樹(shù)
核心:判斷根結(jié)點(diǎn)
2.5 圖
圖的定義及相關(guān)術(shù)語(yǔ)
- 圖是一種較線性表和樹(shù)更為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。在圖形結(jié)構(gòu)中,結(jié)點(diǎn)之間的關(guān)系是任意的,圖中任意兩個(gè)數(shù)據(jù)元素之間都可能相關(guān)。
- 在圖中的數(shù)據(jù)元素通常稱做頂點(diǎn)(Vertex),V是頂點(diǎn)的有窮非空集合;VR是兩個(gè)頂點(diǎn)之間的關(guān)系的集合。若<v,w>∈VR<v,w>∈VR<v,w>∈VR,則<v,w><v,w><v,w>表示從vvv到www的一條弧(Arc), 且稱vvv為弧尾(Tail)或起始點(diǎn),稱www為弧頭(Head)或終端點(diǎn)。
- 無(wú)向圖中<v,w><v,w><v,w>與<w,v><w,v><w,v>是相同的,即VR是對(duì)稱的,用(v,w)(v,w)(v,w)表示vvv和www的一條邊(Edge),反之稱為有向圖。
- 有12\Large\frac{1}{2}21?n(n?1)n(n-1)n(n?1)條邊的無(wú)向圖稱為完全圖,有n(n?1)n(n-1)n(n?1)條邊的有向圖稱為有向完全圖
- 有很少條邊或弧的無(wú)向圖稱為稀疏圖,反之稱為稠密圖。
- 有時(shí)圖的邊或弧具有與它相關(guān)的數(shù),這種與圖的邊或弧相關(guān)的數(shù)叫做權(quán)(Weight)。
- 對(duì)于無(wú)向圖G=(V,G=(V,G=(V,{EEE}))),如果邊(v,v′)∈E(v,v')∈E(v,v′)∈E,則稱頂點(diǎn)vvv和v′v'v′互為鄰接點(diǎn)(Adjacent)。邊(v,v′)(v,v')(v,v′)依附于頂點(diǎn)vvv和v′v'v′,或者說(shuō)(v,v′)(v,v')(v,v′)和頂點(diǎn)vvv和v′v'v′相關(guān)聯(lián)。
- 頂點(diǎn)的度(Degree)是和vvv相關(guān)聯(lián)的邊的數(shù)目,記為TD(V)TD(V)TD(V)。以頂點(diǎn)vvv為頭的弧的數(shù)目稱為vvv的入度(InDegree),記為ID(v)ID(v)ID(v);以頂點(diǎn)vvv為尾的弧的數(shù)目稱為vvv的出度(OutDegree),記為OD(v)OD(v)OD(v);TD(v)=ID(v)+OD(v)TD(v)=ID(v)+OD(v)TD(v)=ID(v)+OD(v)。
- 一般地,如果頂點(diǎn)vvviii的度記為TD(vTD(vTD(viii))),那么一個(gè)有nnn個(gè)頂點(diǎn),eee條邊或弧的圖,滿足e=e=e=12\Large\frac{1}{2}21?∑TD(v)\sum TD(v)∑TD(v)
- 無(wú)向圖中從頂點(diǎn)vvv到頂點(diǎn)v′v'v′的路徑是一個(gè)頂點(diǎn)序列。第一個(gè)頂點(diǎn)和最后一個(gè)頂點(diǎn)相同的路徑稱為回路或環(huán)(Cycle)。序列中頂點(diǎn)不重復(fù)出現(xiàn)的路徑稱為簡(jiǎn)單路徑,類似的,除了第一個(gè)和最后一個(gè)頂點(diǎn)外,其余頂點(diǎn)不重復(fù)出現(xiàn)的回路稱為簡(jiǎn)單回路或簡(jiǎn)單環(huán)。
- 在無(wú)向圖GGG,如果通過(guò)頂點(diǎn)vvv到頂點(diǎn)v′v'v′有路徑,則稱vvv和v′v'v′是連通的。如果對(duì)圖GGG中任意兩個(gè)頂點(diǎn)都滿足連通關(guān)系,則稱圖GGG為連通圖(Connected Graph)。連通分量(Connected (Connected Graph))是指無(wú)向圖中的極大連通子圖。
- 在有向圖GGG,如果每一對(duì)頂點(diǎn)都有路徑,則稱GGG為強(qiáng)連通圖,有向圖中的極大強(qiáng)連通子圖稱做有向圖的強(qiáng)連通分量。
- 一個(gè)連通圖的生成樹(shù)是一個(gè)極小連通子圖,它含有圖中全部頂點(diǎn),但只有足以構(gòu)成一棵樹(shù)的n?1n-1n?1條邊。
- 一個(gè)有向圖的生成森林由若干棵有向樹(shù)組成,含有圖中全部頂點(diǎn),但只有足以構(gòu)成若干棵不相交的有向樹(shù)的弧。
圖的存儲(chǔ)結(jié)構(gòu)
- 由于圖的結(jié)構(gòu)比較復(fù)雜,任意兩個(gè)頂點(diǎn)之間都可能存在聯(lián)系,因此沒(méi)有順序映像的存儲(chǔ)結(jié)構(gòu)
- 鄰接矩陣
- 鄰接表
圖的遍歷
深搜和廣搜
深搜:遞歸進(jìn)行
廣搜:隊(duì)列進(jìn)行,類似樹(shù)是層次遍歷
貪心算法與單源最短路徑
- 貪心算法
- 在對(duì)問(wèn)題求解時(shí),總是做出在當(dāng)前看來(lái)是最好的選擇,也就是說(shuō)僅僅是在某種意義上的局部最優(yōu)解。
貪心算法不能對(duì)所有問(wèn)題都得到整體最優(yōu)解。
活動(dòng)安排
Dijkstra
第三章 操作系統(tǒng)
3.1 進(jìn)程相關(guān)
進(jìn)程的定義
- 一個(gè)正在執(zhí)行的程序
- 可并發(fā)執(zhí)行的程序在一個(gè)數(shù)據(jù)結(jié)合上的運(yùn)行過(guò)程
- 基本特征
進(jìn)程的五狀態(tài)轉(zhuǎn)換模型
- 新建狀態(tài)
進(jìn)程在創(chuàng)建時(shí)需要申請(qǐng)一個(gè)空白PCB,向其中填寫(xiě)控制和管理進(jìn)程的信息,完成資源分配。如果創(chuàng)建工作無(wú)法完成,比如資源無(wú)法滿足,就無(wú)法被調(diào)度運(yùn)行,把此時(shí)進(jìn)程所處狀態(tài)稱為創(chuàng)建狀態(tài) - 就緒狀態(tài)
進(jìn)程已經(jīng)準(zhǔn)備好,已分配到所需資源,只要分配到CPU就能夠立即運(yùn)行 - 執(zhí)行狀態(tài)
進(jìn)程處于就緒狀態(tài)被調(diào)度后,進(jìn)程就會(huì)進(jìn)入到執(zhí)行狀態(tài) - 阻塞狀態(tài)
正在執(zhí)行的進(jìn)程由于某些事件(I/O請(qǐng)求,申請(qǐng)緩存區(qū)失敗)而暫時(shí)無(wú)法運(yùn)行,進(jìn)程受到阻塞。在滿足請(qǐng)求時(shí)進(jìn)入就緒狀態(tài)等待系統(tǒng)調(diào)用 - 終止?fàn)顟B(tài)
進(jìn)程結(jié)束,或出現(xiàn)錯(cuò)誤,或被系統(tǒng)終止,進(jìn)入終止?fàn)顟B(tài),無(wú)法再執(zhí)行
進(jìn)程的構(gòu)成與PCB
-
進(jìn)程 = 進(jìn)程控制塊(PCB) + 程序塊 + 數(shù)據(jù)段
-
PCB(process control block)
進(jìn)程存在的唯一標(biāo)識(shí),進(jìn)程新建時(shí)就有
運(yùn)行Fork()創(chuàng)建進(jìn)程
-
進(jìn)程的創(chuàng)建
-
Fork()
-
例題
3.2 線程相關(guān)
線程的定義
線程是操作系統(tǒng)匯總獨(dú)立調(diào)度和分派的基本單位,大部分情況下,他被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單位。
進(jìn)程的倆基本特點(diǎn):資源所有權(quán)和調(diào)度基本單位
現(xiàn)將調(diào)度權(quán)力給了線程,線程也就不含資源所有權(quán),進(jìn)程中的所有線程共享進(jìn)程的資源,當(dāng)然TCB、程序計(jì)數(shù)器、寄存器和堆棧這些必不可少的資源除外
進(jìn)程和線程的區(qū)別
概念
進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位
線程是進(jìn)程中的一個(gè)實(shí)體,是獨(dú)立調(diào)度和分配的基本單位
調(diào)度
并發(fā)性
擁有資源
系統(tǒng)開(kāi)銷
三類線程(用戶級(jí)、內(nèi)核級(jí)、混合)
- 根據(jù)線程是否對(duì)內(nèi)核透明
用戶級(jí)線程
含義:線程的創(chuàng)建、撤銷和切換等操作全部由應(yīng)用程序完成
操作系統(tǒng)內(nèi)核不知道線程的存在,仍以進(jìn)程為調(diào)度單位
Infomix OS
內(nèi)核級(jí)線程
含義:線程的創(chuàng)建、撤銷和切換等操作由系統(tǒng)內(nèi)核完成,操作系統(tǒng)以線程為調(diào)度單位
Win Linux OS
優(yōu)缺點(diǎn):
混合線程
含義:線程的創(chuàng)建、撤銷、調(diào)度和同步等操作在用戶級(jí)應(yīng)用程序中完成,多個(gè)用戶級(jí)線程被影射到一個(gè)或較少的某些內(nèi)核級(jí)線程
Solaris OS
用戶級(jí)、內(nèi)核級(jí)、混合模式比較
3.3 互斥與同步
競(jìng)爭(zhēng)臨界資源引起的問(wèn)題和互斥的條件
-
臨界資源
必須互斥使用的資源稱為臨界資源 -
臨界區(qū)
訪問(wèn)臨界資源的那段代碼 -
引起的問(wèn)題
忙等、饑餓和死鎖
-
臨界區(qū)使用原則/互斥條件
空閑讓進(jìn)
當(dāng)無(wú)進(jìn)程處于臨界區(qū)時(shí),允許進(jìn)程進(jìn)入臨界區(qū)
忙則等待
當(dāng)一個(gè)進(jìn)程正處在某臨界區(qū)內(nèi),任何試圖進(jìn)入其臨界區(qū)的進(jìn)程都必須進(jìn)入代碼連續(xù)循環(huán),陷入忙等狀態(tài)。連續(xù)測(cè)試一個(gè)變量直到某個(gè)值出現(xiàn)為止,稱為忙等
有限等待
對(duì)要求訪問(wèn)臨界資源的進(jìn)程,應(yīng)保證有限時(shí)間內(nèi)能進(jìn)入自己的臨界區(qū),以免陷入“死等”狀態(tài)~(受惠的是進(jìn)程自己)
讓權(quán)等待
當(dāng)進(jìn)程不能進(jìn)入自己的臨界區(qū)時(shí),應(yīng)立即釋放處理機(jī),以免進(jìn)程陷入“忙等”狀態(tài)~(受惠的是其他進(jìn)程)
掌握信號(hào)量方法
- 互斥與同步解決策略
信號(hào)量進(jìn)行互斥和同步
-
基本原理
兩個(gè)或多個(gè)進(jìn)程可以通過(guò)傳遞信號(hào)的方式進(jìn)行合作,可以迫使進(jìn)程在某個(gè)位置暫停執(zhí)行(阻塞等待),知道他收到一個(gè)可以“向前推進(jìn)”的信號(hào)(被喚醒)
將實(shí)現(xiàn)信號(hào)燈作用的變量稱為信號(hào)量,常定義為記錄型變量s,其中一個(gè)域?yàn)檎?#xff0c;另一個(gè)域?yàn)殛?duì)列,其元素為等待該信號(hào)量的阻塞進(jìn)程(FIFO) -
P/V操作
-
信號(hào)量的物理意義
-
wait、signal應(yīng)用
-
信號(hào)量分類
互斥信號(hào)量:用于申請(qǐng)或釋放資源的使用權(quán),通常初始化為1
資源信號(hào)量:用于申請(qǐng)或歸還資源,可以初始化為大于1的正整數(shù)表示系統(tǒng)中某類資源的可用個(gè)數(shù)
解決生產(chǎn)者消費(fèi)者問(wèn)題
進(jìn)程間通信方式
-
進(jìn)程通信
進(jìn)程之間的信息交換 -
進(jìn)程通信方式
-
掌握消息傳遞機(jī)制
-
如何用消息傳遞機(jī)制實(shí)現(xiàn)互斥
3.4 程序的裝入和鏈接
高級(jí)語(yǔ)言的源代碼轉(zhuǎn)化為進(jìn)程的三個(gè)步驟
靜態(tài)鏈接,裝入時(shí)鏈接,運(yùn)行時(shí)鏈接的區(qū)別,以及各自的優(yōu)缺點(diǎn)
-
靜態(tài)鏈接
在程序運(yùn)行之前,先將各目標(biāo)模塊及他們所需的庫(kù)函數(shù),鏈接成一個(gè)完整的裝配模塊(又稱執(zhí)行模塊),以后不再拆開(kāi)。
-
裝入時(shí)動(dòng)態(tài)鏈接
目標(biāo)模塊在裝入內(nèi)存時(shí),采用邊裝入邊鏈接的鏈接方式。
-
運(yùn)行時(shí)動(dòng)態(tài)鏈接
對(duì)某些目標(biāo)模塊的鏈接,是在程序執(zhí)行中需要該目標(biāo)模塊時(shí),由操作系統(tǒng)去找到該模塊并將之裝入內(nèi)存,隨后把他鏈接到調(diào)用者模塊e
絕對(duì)裝入方式和可重定位裝入方式的優(yōu)缺點(diǎn)
-
絕對(duì)裝入方式
-
可重定位裝入方式
-
運(yùn)行時(shí)重定位(動(dòng)態(tài)重定位)裝入方式
第四章 編譯原理
4.1 數(shù)據(jù)類型及其抽象層次
- 含義
數(shù)據(jù)類型實(shí)質(zhì)上是對(duì)存儲(chǔ)器中所存儲(chǔ)的數(shù)據(jù)進(jìn)行的抽象,包括了一組值的集合和一組操作 - 抽象層次分類
內(nèi)部類型、用戶定義類型和抽象數(shù)據(jù)類型 - 抽象數(shù)據(jù)類型
滿足下述特性的用戶定義類型稱為抽象數(shù)據(jù)類型
(1)在定義該類型的程序單元中,建立與表示有關(guān)的基本操作
(2)對(duì)使用該類型的程序單元來(lái)說(shuō),該類型的表示是隱蔽的比如Java中g(shù)et,set而不用public,為了封裝性與安全性
4.2 六種數(shù)據(jù)類型聚合方式
笛卡爾積
- 定義
n個(gè)集合A1, A2, … , An的笛卡兒積:
A1×A2×…×An,
它是一個(gè)集合,其元素時(shí)有序的n元式
(a1, a2, … , an) - 舉例
例如一個(gè)正多邊形用一個(gè)整數(shù)表示邊數(shù),用一個(gè)實(shí)數(shù)表示長(zhǎng)度
integer×realC語(yǔ)言中的結(jié)構(gòu)就是很好應(yīng)用
有限映像
- 定義
從定義域類型DT值的有限集合,到值域類型RT值的有限集合的函數(shù)(映像)稱為有限映像
值域?qū)ο陆o你通過(guò)下標(biāo)變量方式對(duì)應(yīng) - 舉例
數(shù)組
序列
(1)任意多個(gè)數(shù)據(jù)項(xiàng)組成,數(shù)據(jù)項(xiàng)稱為該序列的成分,且類型相同
(2)串是序列(字符串)
(3)順序文件的思想也來(lái)自序列的概念,只能順序讀寫(xiě)
遞歸
若數(shù)據(jù)類型T包含屬于同一類型T的成分——遞歸類型
(1)在類型定義中使用被定義類型的名字
(2)不允許直接遞歸(C++的靜態(tài)對(duì)象成員除外)
(3)指針是構(gòu)造遞歸類型的重要手段
struct mlink { int data; struct mlink *next; …
判定或
可以選擇不同成員的構(gòu)造機(jī)制
例如C的聯(lián)合union
union Data
{
int i;
float f;
char str[20];
} data;
現(xiàn)在,Data 類型的變量可以存儲(chǔ)一個(gè)整數(shù)、一個(gè)浮點(diǎn)數(shù),或者一個(gè)字符串。這意味著一個(gè)變量(相同的內(nèi)存位置)可以存儲(chǔ)多個(gè)多種類型的數(shù)據(jù)。您可以根據(jù)需要在一個(gè)共用體內(nèi)使用任何內(nèi)置的或者用戶自定義的數(shù)據(jù)類型。
冪集
類型T的元素所有子集的集合,稱為冪集,T稱為基類型(并不所有語(yǔ)言都有冪集聚合機(jī)制,沒(méi)有的話可以用鏈表,數(shù)組實(shí)現(xiàn))
4.3 語(yǔ)句級(jí)控制結(jié)構(gòu)
-
語(yǔ)句級(jí)控制結(jié)構(gòu)
規(guī)定語(yǔ)句執(zhí)行流程的控制單元級(jí)控制結(jié)構(gòu):控制調(diào)用程序單元
-
三種 語(yǔ)句級(jí)控制結(jié)構(gòu)
順序
選擇(分支)
重復(fù)(循環(huán))
順序
-
語(yǔ)言可用的、最簡(jiǎn)單的控制結(jié)構(gòu)
A;
B; -
復(fù)合語(yǔ)句
若干個(gè)語(yǔ)句可以組合在一起。邏輯上作為一條語(yǔ)句對(duì)待
如{…}
選擇
選擇控制結(jié)構(gòu)允許在某些可選擇的語(yǔ)句中選擇其中一條來(lái)執(zhí)行
單選: if then
二選一: if then else
多選一:嵌套 if then else
重復(fù)
-
兩種情況
計(jì)數(shù)器制導(dǎo)
條件制導(dǎo) -
計(jì)數(shù)器制導(dǎo)
當(dāng)預(yù)先知道重復(fù)次數(shù)時(shí),在循環(huán)計(jì)數(shù)器值的有限集合上重復(fù)
(for循環(huán)) -
條件制導(dǎo)
不知道次數(shù),只知道條件
(while, do-while)
4.4 定義語(yǔ)言:生成(文法)或識(shí)別(語(yǔ)法圖)
- 文法從產(chǎn)生的觀點(diǎn)來(lái)定義語(yǔ)言的語(yǔ)法,通用性好
- 語(yǔ)法圖從識(shí)別的觀點(diǎn)定義語(yǔ)言的語(yǔ)法,更直觀和清晰
文法
4.5 文法的分類
文法
0型文法:沒(méi)有限制
1型文法:左邊表達(dá)式長(zhǎng)度小于右邊(s->埃普西隆除外)
2型文法:在1基礎(chǔ)上,左邊是非終結(jié)符
3型文法:3型文法也叫正規(guī)文法,它對(duì)應(yīng)于有限狀態(tài)自動(dòng)機(jī)。它是在2型文法的基礎(chǔ)上滿足:A→α|αB(右線性)或A→α|Bα(左線性)。
4.6 推導(dǎo)與規(guī)約,文法與語(yǔ)言,二義性問(wèn)題
文法
4.7 短語(yǔ)、直接短語(yǔ)、句柄的含義和求法
詳解博客及練習(xí)
4.8 編譯步驟
每個(gè)步驟的任務(wù),符號(hào)表及管理程序的任務(wù)
- 變量四要素:類型、值、作用域和生存期
- 編譯步驟
詞法分析
輸入字符串,根據(jù)此法規(guī)則識(shí)別出單詞符號(hào)
語(yǔ)法分析
根據(jù)語(yǔ)法規(guī)則,將單詞符號(hào)構(gòu)成各類語(yǔ)法單位,并執(zhí)行語(yǔ)法檢查
語(yǔ)義分析
根據(jù)語(yǔ)義規(guī)則,進(jìn)行初步編譯
優(yōu)化
對(duì)中間代碼進(jìn)行等價(jià)變換,以使代碼更有效
目標(biāo)代碼生成
生成機(jī)器語(yǔ)言程序或匯編語(yǔ)言程序
符號(hào)表管理
完成符號(hào)表的建立,查找,更新
出錯(cuò)處理
發(fā)現(xiàn),指出,限制
(1)實(shí)用的編譯程序不一定總是分成5個(gè)階段
(2)目標(biāo)程序不一定能立即執(zhí)行,可能還要經(jīng)過(guò)鏈接、裝入等階段
(3)編譯的各階段均需要和符號(hào)表管理程序、出錯(cuò)程序打交道
4.9 語(yǔ)法分析的兩大類別:自下而上和自上而下
先導(dǎo)內(nèi)容-詞法分析
語(yǔ)法分析
4.10 遞歸下降分析法
公共左因子和左遞歸消除
語(yǔ)法分析
4.11 預(yù)測(cè)分析法
分析方法,流程,組成
FIRST集和FOLLOW集
預(yù)測(cè)分析表的構(gòu)造
LL(1)文法的判斷
語(yǔ)法分析
4.12 LR分析法是句柄規(guī)約
語(yǔ)法分析
4.13 語(yǔ)義翻譯的概念、作用
4.14 類型檢查
4.15 語(yǔ)義翻譯
語(yǔ)義分析
賦值語(yǔ)句的翻譯
布爾表達(dá)式
IF語(yǔ)句的翻譯
4.16 中間代碼的寫(xiě)法:三地址碼、四元式
語(yǔ)義分析
第五章 數(shù)據(jù)庫(kù)
5.1 數(shù)據(jù)庫(kù)基本概念
-
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)、有組織的、可共享的大量數(shù)據(jù)集合 -
DBMS
一個(gè)能夠讓用戶定義、創(chuàng)建和維護(hù)數(shù)據(jù)庫(kù)以及控制對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的軟件系統(tǒng)組成:查詢處理器 + 存儲(chǔ)管理器
查詢處理器:DDL編譯器、DML編譯器、嵌入式DML的預(yù)編譯器及查詢運(yùn)行核心程序
存儲(chǔ)管理器:授權(quán)和完整性管理器、事務(wù)管理器、文件管理器及緩沖區(qū)管理器
-
數(shù)據(jù)庫(kù)系統(tǒng)
DBS是指在計(jì)算機(jī)系統(tǒng)中引入數(shù)據(jù)庫(kù)后的系統(tǒng)構(gòu)成
由硬件系統(tǒng)、數(shù)據(jù)庫(kù)集合、數(shù)據(jù)庫(kù)管理系統(tǒng)及相關(guān)軟件、DBA、用戶組成
5.2 模式的體系結(jié)構(gòu),三種模式
-
型 和 值 的概念
型:對(duì)某一類數(shù)據(jù)的結(jié)構(gòu)和屬性的說(shuō)明
值:是型的一個(gè)具體賦值 -
模式
數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)和特征的描述
是型的描述
反映的是數(shù)據(jù)的結(jié)構(gòu)及其聯(lián)系
模式是相對(duì)穩(wěn)定的
5.3 關(guān)系模式的基本概念
-
關(guān)系模式
關(guān)系名、屬性的名字及相關(guān)聯(lián)的域名、完整性約束(表頭)
關(guān)系必須是規(guī)范化的,滿足一定的規(guī)范條件
-
關(guān)系
笛卡爾積的一個(gè)有意義的子集
關(guān)系模式是靜態(tài)的,比如我們看到的一張二維表的表頭,即有哪些構(gòu)成,每個(gè)列的名稱,類型啊長(zhǎng)度等等
關(guān)系是動(dòng)態(tài)的,就是一張二維表的具體內(nèi)容,就是除了標(biāo)題以外的數(shù)據(jù)行,因?yàn)楸頂?shù)據(jù)經(jīng)常被修改,插入,刪除,所以不同時(shí)刻、關(guān)系可能不一樣、其實(shí),關(guān)系就是數(shù)學(xué)中的集合了,每一行就是集合的一個(gè)元素
關(guān)系為一張二維表的具體內(nèi)容,就是除了標(biāo)題行以外的數(shù)據(jù)行,因?yàn)楸頂?shù)據(jù)經(jīng)常被修改,插入,刪除,所以不同時(shí)刻,關(guān)系可能不一樣。
- 元組
表中的一行,表示一個(gè)實(shí)體,關(guān)系是由元組組成的 - 屬性
表中的每一列在關(guān)系中稱為屬性 - 域(Domin)
屬性的取值范圍
5.4 主碼與候選碼
5.5 關(guān)系運(yùn)算,運(yùn)算符表達(dá)式
-
并運(yùn)算
-
差運(yùn)算
-
交運(yùn)算
-
笛卡爾積運(yùn)算
-
選擇運(yùn)算
-
投影運(yùn)算
-
條件運(yùn)算
-
自然連接
-
連接運(yùn)算
5.6 完整性約束,規(guī)則、類別等
-
概述
完整性約束是加在數(shù)據(jù)庫(kù)模式上的一個(gè)具體條件,它規(guī)定什么樣的數(shù)據(jù)能夠存儲(chǔ)到數(shù)據(jù)庫(kù)系統(tǒng)中。比如,年齡必須為整數(shù),有取值范圍等
學(xué)號(hào)一定是唯一的
學(xué)生所在的系是學(xué)校開(kāi)設(shè)的系 -
控制機(jī)制
-
目的
數(shù)據(jù)的完整性是為了防止數(shù)據(jù)庫(kù)中存在不符合的數(shù)據(jù),防止錯(cuò)誤數(shù)據(jù)的輸入和輸出所造成的無(wú)效操作和錯(cuò)誤結(jié)果。 -
分類
PK約束
主鍵約束,非空唯一
UNIQUE約束
唯一,允許為空,多個(gè)空都可
NOT NULL約束
CHECK約束
FK約束
外鍵約束
5.7 SQL語(yǔ)法
SQL語(yǔ)法
5.8 數(shù)據(jù)庫(kù)設(shè)計(jì)理論
函數(shù)依賴,模式分解
范式的概念、如何區(qū)分不同的范式
-
范式
是一種關(guān)系的狀態(tài),是衡量關(guān)系模式的標(biāo)準(zhǔn)。
1NF、2NF、3NF、BCNF檢查關(guān)系中屬性間的函數(shù)依賴
滿足特定約束
避免不必要的數(shù)據(jù)重復(fù) -
1NF
在關(guān)系模式R的每個(gè)關(guān)系中,如果每個(gè)屬性值都是不可再分的原子值,那么稱R是第一范式的模式 -
2NF
如果關(guān)系模式R屬于1NF, 且每個(gè)非主屬性(非候選碼中的屬性)完全函數(shù)依賴于候選碼,那么稱R屬于2NF的模式只有在主鍵是復(fù)合屬性下才可能不符合2NF
-
3NF
如果關(guān)系模式R屬于1NF, 且每個(gè)非主屬性都不傳遞依賴于R的候選碼,那么R屬于3NF的模式。
-
BCNF
如果關(guān)系模式R屬于1NF,且每個(gè)屬性都不傳遞依賴R的候選碼,那么稱R是BCNF的模式
-
范式總結(jié)
5.9 數(shù)據(jù)庫(kù)應(yīng)用設(shè)計(jì)方法
數(shù)據(jù)庫(kù)的三種數(shù)據(jù)模型
物理,概念,邏輯
ER模型的概念、結(jié)構(gòu)及使用其構(gòu)造數(shù)據(jù)庫(kù)的方法
數(shù)據(jù)庫(kù)設(shè)計(jì)的各個(gè)階段及主要工作
總結(jié)
以上是生活随笔為你收集整理的软件技术基础复习提纲的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java数独最快解,Java解数独--世
- 下一篇: 计算机数学基础试卷及答案,2012计算机