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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

编程问答

软件技术基础复习提纲

發(fā)布時(shí)間:2023/12/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软件技术基础复习提纲 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 第一章 緒論
    • 軟件開(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ò)程

  • 問(wèn)題的理解:清楚問(wèn)題的輸入、要求和輸出
  • 算法設(shè)計(jì):包括軟件架構(gòu)設(shè)計(jì)、模塊分解、選擇具體算法策略、用適當(dāng)?shù)姆绞矫枋龊椭鸩郊?xì)化算法步驟
  • 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì):一方面要選擇或設(shè)計(jì)能有效表示和存儲(chǔ)應(yīng)用問(wèn)題中所涉及的數(shù)據(jù)對(duì)象的數(shù)據(jù)結(jié)構(gòu),同時(shí)還要選擇或設(shè)計(jì)能支持算法策略實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)
  • 算法分析:發(fā)現(xiàn)有改進(jìn)完善之處,返回第二步,重新選擇或設(shè)計(jì)算法與數(shù)據(jù)結(jié)構(gòu)
  • 程序設(shè)計(jì):設(shè)計(jì)具體的數(shù)據(jù)存儲(chǔ)方案、數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)細(xì)節(jié)、基于某種操作系統(tǒng)設(shè)計(jì)程序?qū)崿F(xiàn)細(xì)節(jié),在計(jì)算機(jī)上調(diào)試和運(yùn)行程序
  • 程序?qū)崿F(xiàn):用某種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,定義數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)存儲(chǔ)、基于某種操作系統(tǒng)編寫(xiě)實(shí)現(xiàn)算法的代碼,編譯代碼并在計(jì)算機(jī)上調(diào)試和運(yùn)行程序,并不斷優(yōu)化程序設(shè)計(jì)
  • 數(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ī)分配給進(jìn)程(線程),并對(duì)其進(jìn)行有效的管理和控制

  • 2. 存儲(chǔ)器管理
    為多道程序的運(yùn)行提供良好的環(huán)境,方便用戶使用存儲(chǔ)器,提高存儲(chǔ)器的利用率以及 能 從邏輯上擴(kuò)充內(nèi)存

  • 設(shè)備管理
    完成用戶進(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)的順序在先)

    #include<iostream>using namespace std;typedef struct BiTNode {char data;struct BiTNode* lchild, * rchild; }BiTNode, * BiTree;void creatBiTree(BiTree& T); void InOrderTraverse(BiTree T); void PostOrderTraverse(BiTree T); int getNumOfLeaf(BiTree T, int count); int getDepth(BiTree T);int main() {BiTree T = new BiTNode;cout << "請(qǐng)先序輸入結(jié)點(diǎn):" << endl;creatBiTree(T);cout << endl;cout << "中序遍歷:";InOrderTraverse(T);cout << endl;cout << "后序遍歷:";PostOrderTraverse(T);cout << endl;cout << "葉子結(jié)點(diǎn)數(shù):";cout << getNumOfLeaf(T, 0) << endl;cout << "樹(shù)的高度:";cout << getDepth(T) << endl << endl;system("pause");return 0; } void creatBiTree(BiTree& T) {char data;cin >> data;if (data == ',') {T = nullptr;return;}T = new BiTNode;T->data = data;creatBiTree(T->lchild);creatBiTree(T->rchild); } void InOrderTraverse(BiTree T) {if (T) {InOrderTraverse(T->lchild);cout << T->data << " ";InOrderTraverse(T->rchild);} } void PostOrderTraverse(BiTree T) {if (T) {PostOrderTraverse(T->lchild);PostOrderTraverse(T->rchild);cout << T->data << " ";} } int getNumOfLeaf(BiTree T, int count) {if (T) {if (!T->lchild && !T->rchild) {return ++count;}count = getNumOfLeaf(T->lchild, count);count = getNumOfLeaf(T->rchild, count);}return count; } int getDepth(BiTree T) {if (T) {int HL = getDepth(T->lchild);int HR = getDepth(T->rchild);int MaxH = HL > HR ? HL : HR;return (MaxH + 1);}else {return 0;} }

    層次遍歷
    關(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>表示從vvvwww的一條(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)表示vvvwww的一條(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)vvvv′v'v互為鄰接點(diǎn)(Adjacent)。邊(v,v′)(v,v')(v,v)依附于頂點(diǎn)vvvv′v'v,或者說(shuō)(v,v′)(v,v')(v,v)和頂點(diǎn)vvvv′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有路徑,則稱vvvv′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ò)程
    • 基本特征
  • 動(dòng)態(tài)性:存在生命周期
  • 并發(fā)性:任何進(jìn)程都可以同其他進(jìn)程一起推進(jìn)
  • 獨(dú)立性:各進(jìn)程的地址空間相互獨(dú)立,除非采用進(jìn)程間通信手段
  • 異步性:按各自獨(dú)立的、不可預(yù)知的速度向前推進(jìn)
  • 結(jié)構(gòu)性:進(jìn)程 = 進(jìn)程控制塊(PCB) + 程序塊 + 數(shù)據(jù)段
  • 進(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×real

      C語(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)題。

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