版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、概念問題c+/數(shù)據(jù)結(jié)構(gòu)1、簡述你對“面向?qū)ο蟆焙汀懊嫦蜻^程”編程思想的認(rèn)識與思考用就可以了。面向過程就是分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟一步一步實(shí)現(xiàn),使用的時(shí)候一個(gè)一個(gè)依次調(diào)面向?qū)ο笫前褬?gòu)成問題事務(wù)分解成各個(gè)對象,建立對象的目的不是為了完成一個(gè)步驟,而是為了描敘某個(gè)事物在整個(gè)解決問題的步驟中的行為。例如五子棋,面向過程的設(shè)計(jì)思路就是首先分析問題的步驟:1、開始游戲,2、黑子先走,3、繪制畫面,4、判斷輸贏,5、輪到白子,6、繪制畫面,7、判斷輸贏,8、返回步驟2,9、輸出最后結(jié)果。把上面每個(gè)步驟用分別的函數(shù)來實(shí)現(xiàn),問題就解決了。而面向?qū)ο蟮脑O(shè)計(jì)則是從另外的思路來解決問題。整個(gè)五
2、子棋可以分為 1、黑白雙方,這兩方的行為是一模一樣的,2、棋盤系統(tǒng),負(fù)責(zé)繪制畫面,3、規(guī)則系統(tǒng),負(fù)責(zé)判定諸如犯規(guī)、輸贏等。第一類對象(玩家對象)負(fù)責(zé)接受用戶輸入,并告知第二類對象(棋盤對象)棋子布局的變化,棋盤對象接收到了棋子的i變化就要負(fù)責(zé)在屏幕上面顯示出這種變化,同時(shí)利用第三類對象(規(guī)則系統(tǒng))來對棋局進(jìn)行判定。可以明顯地看出,面向?qū)ο笫且怨δ軄韯澐謫栴},而不是步驟。同樣是繪制棋局,這樣的行為在面向過程的設(shè)計(jì)中分散在了總多步驟中,很可能出現(xiàn)不同的繪制版本,因?yàn)橥ǔTO(shè)計(jì)人員會(huì)考慮到實(shí)際情況進(jìn)行各種各樣的簡化。而面向?qū)ο蟮脑O(shè)計(jì)中,繪圖只可能在棋盤對象中出現(xiàn),從而保證了繪圖的統(tǒng)一。功能上的統(tǒng)一保證
3、了面向?qū)ο笤O(shè)計(jì)的可擴(kuò)展性。比如我要加入悔棋的功能,如果要改動(dòng)面向過程的設(shè)計(jì),那么從輸入到判斷到顯示這一連串的步驟都要改動(dòng),甚至步驟之間的循序都要進(jìn)行大規(guī)模調(diào)整。如果是面向?qū)ο蟮脑?,只用改?dòng)棋盤對象就行了,棋盤系統(tǒng)保存了黑白雙方的棋譜,簡單回溯就可以了,而顯示和規(guī)則判斷則不用顧及,同時(shí)整個(gè)對對象功能的調(diào)用順序都沒有變化,改動(dòng)只是局部的。再比如我要把這個(gè)五子棋游戲改為圍棋游戲,如果你是面向過程設(shè)計(jì),那么五子棋的規(guī)則就分布在了你的程序的每一個(gè)角落,要改動(dòng)還不如重寫。但是如果你當(dāng)初就是面向?qū)ο蟮脑O(shè)計(jì),那么你只用改動(dòng)規(guī)則對象就可以了,五子棋和圍棋的區(qū)別不就是規(guī)則嗎?(當(dāng)然棋盤大小好像也不一樣,但是你會(huì)覺
4、得這是一個(gè)難題嗎?直接在棋盤對象中進(jìn)行一番小改動(dòng)就可以了。)而下棋的大致步驟從面向?qū)ο蟮慕嵌葋砜礇]有任何變化。當(dāng)然,要達(dá)到改動(dòng)只是局部的需要設(shè)計(jì)的人有足夠的經(jīng)驗(yàn),使用對象不能保證你的程序就是面向?qū)ο?,初學(xué)者或者很蹩腳的程序員很可能以面向?qū)ο笾摱忻嫦蜻^程之實(shí),這樣設(shè)計(jì)出來的所謂面向?qū)ο蟮某绦蚝茈y有良好的可移植性和可擴(kuò)展性。2、 adt是什么?簡述你對“數(shù)據(jù)抽象”和“信息隱藏”的認(rèn)識抽象數(shù)據(jù)類型(abstract data type 簡稱adt)是指一個(gè)數(shù)學(xué)模型以及定義在此數(shù)學(xué)模型上的一組操作。抽象數(shù)據(jù)類型需要通過固有數(shù)據(jù)類型(高級編程語言中已實(shí)現(xiàn)的數(shù)據(jù)類型)來實(shí)現(xiàn)。抽象數(shù)據(jù)類型是與表示無關(guān)的
5、數(shù)據(jù)類型,是一個(gè)數(shù)據(jù)模型及定義在該模型上的一組運(yùn)算。對一個(gè)抽象數(shù)據(jù)類型進(jìn)行定義時(shí),必須給出它的名字及各運(yùn)算的運(yùn)算符名,即函數(shù)名,并且規(guī)定這些函數(shù)的參數(shù)性質(zhì)。一旦定義了一個(gè)抽象數(shù)據(jù)類型及具體實(shí)現(xiàn),程序設(shè)計(jì)中就可以像使用基本數(shù)據(jù)類型那樣,十分方便地使用抽象數(shù)據(jù)類型。抽象數(shù)據(jù)類型通過類(class)實(shí)現(xiàn)l 程序設(shè)計(jì)語言對抽象數(shù)據(jù)類型的支持是指允許用戶自定義具有如下特征的數(shù)據(jù)類型:1. 模塊封裝:the representation of, and operations on, objects of the type are defined in a singlesyntactic unit2. 信息
6、隱蔽:the representation of objects of the type is hidden from the program units that use theseobjects, so the only operations possible are those provided in the types definition3、const和static有什么作用?const是一個(gè)c和c+語言的關(guān)鍵字,它限定一個(gè)變量不允許被改變,即只讀。使用const在一定程度上可以提高程序的安全性和可靠性,也便于實(shí)現(xiàn)對此進(jìn)行優(yōu)化(如把只讀對象放入rom中)。const作為類型限定符,是
7、類型的一部分。4、友元關(guān)系的利與弊如果將一個(gè)函數(shù)或一個(gè)類聲明為另一個(gè)類的友元,那么它就可以直接存取這個(gè)類對象中的各種數(shù)據(jù),而不必在意這些數(shù)據(jù)的封裝級別,即無論是private的,protected的,還是public的,有錢同使,有難同當(dāng)。5、c+多態(tài)的實(shí)現(xiàn)1. 用virtual關(guān)鍵字申明的函數(shù)叫做虛函數(shù),虛函數(shù)肯定是類的成員函數(shù)。2. 存在虛函數(shù)的類都有一個(gè)一維的虛函數(shù)表叫做虛表。類的對象有一個(gè)指向虛表開始的虛指針。虛表是和類對應(yīng)的,虛表指針是和對象對應(yīng)的。3. 多態(tài)性是一個(gè)接口多種實(shí)現(xiàn),是面向?qū)ο蟮暮诵?。分為類的多態(tài)性和函數(shù)的多態(tài)性。4. 多態(tài)用虛函數(shù)來實(shí)現(xiàn),結(jié)合動(dòng)態(tài)綁定。5. 純虛函數(shù)是
8、虛函數(shù)再加上= 0。6. 抽象類是指包括至少一個(gè)純虛函數(shù)的類。構(gòu)造函數(shù)順序:基類構(gòu)造函數(shù)派生類構(gòu)造函數(shù)前面輸出的結(jié)果是因?yàn)榫幾g器在編譯的時(shí)候,就已經(jīng)確定了對象調(diào)用的函數(shù)的地址,要解決這個(gè)問題就要使用遲綁定(late binding)技術(shù)。當(dāng)編譯器使用遲綁定時(shí),就會(huì)在運(yùn)行時(shí)再去確定對象的類型以及正確的調(diào)用函數(shù)。而要讓編譯器采用遲綁定,就要在基類中聲明函數(shù)時(shí)使用virtual關(guān)鍵字(注意,這是必須的,很多學(xué)員就是因?yàn)闆]有使用虛函數(shù)而寫出很多錯(cuò)誤的例子),這樣的函數(shù)我們稱為虛函數(shù)。一旦某個(gè)函數(shù)在基類中聲明為virtual,那么在所有的派生類中該函數(shù)都是virtual,而不需要再顯式地聲明為virtu
9、al。前面輸出的結(jié)果是因?yàn)榫幾g器在編譯的時(shí)候,就已經(jīng)確定了對象調(diào)用的函數(shù)的地址,要解決這個(gè)問題就要使用遲綁定(late binding)技術(shù)。當(dāng)編譯器使用遲綁定時(shí),就會(huì)在運(yùn)行時(shí)再去確定對象的類型以及正確的調(diào)用函數(shù)。而要讓編譯器采用遲綁定,就要在基類中聲明函數(shù)時(shí)使用virtual關(guān)鍵字(注意,這是必須的,很多學(xué)員就是因?yàn)闆]有使用虛函數(shù)而寫出很多錯(cuò)誤的例子),這樣的函數(shù)我們稱為虛函數(shù)。一旦某個(gè)函數(shù)在基類中聲明為virtual,那么在所有的派生類中該函數(shù)都是virtual,而不需要再顯式地聲明為virtual。編譯器在編譯的時(shí)候,發(fā)現(xiàn)基類中有虛函數(shù),此時(shí)編譯器會(huì)為每個(gè)包含虛函數(shù)的類創(chuàng)建一個(gè)虛表(即v
10、table),該表是一個(gè)一維數(shù)組,在這個(gè)數(shù)組中存放每個(gè)虛函數(shù)的地址。那么如何定位虛表呢?編譯器另外還為每個(gè)類的對象提供了一個(gè)虛表指針(即vptr),這個(gè)指針指向了對象所屬類的虛表。在程序運(yùn)行時(shí),根據(jù)對象的類型去初始化vptr,從而讓vptr正確的指向所屬類的虛表,從而在調(diào)用虛函數(shù)時(shí),就能夠找到正確的函數(shù)。對于例1-2的程序,由于pan實(shí)際指向的對象類型是fish,因此vptr指向的fish類的vtable,當(dāng)調(diào)用pan-breathe()時(shí),根據(jù)虛表中的函數(shù)地址找到的就是fish類的breathe()函數(shù)。那么虛表指針在什么時(shí)候,或者說在什么地方初始化呢?答案是在構(gòu)造函數(shù)中進(jìn)行虛表的創(chuàng)建和虛表
11、指針的初始化。還記得構(gòu)造函數(shù)的調(diào)用順序嗎,在構(gòu)造子類對象時(shí),要先調(diào)用父類的構(gòu)造函數(shù),此時(shí)編譯器只“看到了”父類,并不知道后面是否后還有繼承者,它初始化父類對象的虛表指針,該虛表指針指向父類的虛表。當(dāng)執(zhí)行子類的構(gòu)造函數(shù)時(shí),子類對象的虛表指針被初始化,指向自身的虛表。對于例2-2的程序來說,當(dāng)fish類的fh對象構(gòu)造完畢后,其內(nèi)部的虛表指針也就被初始化為指向fish類的虛表。在類型轉(zhuǎn)換后,調(diào)用pan-breathe(),由于pan實(shí)際指向的是fish類的對象,該對象內(nèi)部的虛表指針指向的是fish類的虛表,因此最終調(diào)用的是fish類的breathe()函數(shù)。要注意:對于虛函數(shù)調(diào)用來說,每一個(gè)對象內(nèi)部
12、都有一個(gè)虛表指針,該虛表指針被初始化為本類的虛表。所以在程序中,不管你的對象類型如何轉(zhuǎn)換,但該對象內(nèi)部的虛表指針是固定的,所以呢,才能實(shí)現(xiàn)動(dòng)態(tài)的對象函數(shù)調(diào)用,這就是c+多態(tài)性實(shí)現(xiàn)的原理。6、stl是什么?組成部分和核心作用標(biāo)準(zhǔn)模板庫于1994年2月年正式成為ansi/iso c+的一部份,它的出現(xiàn),促使c+程序員的思維方式更朝向泛型編程(generic program)發(fā)展。7、闡述c+在什么情況下必須進(jìn)行運(yùn)算符重載。?8、 為什么說“繼承是c+面向?qū)ο蟮囊粋€(gè)主要特征之一”,請做一下簡要說明。?9、 請說明函數(shù)模板(function template)和函數(shù)模板實(shí)例化(function-tem
13、plate specification)的區(qū)別和聯(lián)系。函數(shù)模板實(shí)例化在函數(shù)模板為每個(gè)類型時(shí)首先調(diào)用中,編譯器創(chuàng)建一個(gè)實(shí)例化。 每個(gè)實(shí)例化是為該類型的該模板化功能的版本。 在中,此函數(shù)為類型時(shí),使用此實(shí)例化將調(diào)用。 如果您有幾個(gè)相同的實(shí)例化,即使在不同的模塊,因此,只有該實(shí)例化的一個(gè)副本在可執(zhí)行文件將結(jié)果。函數(shù)參數(shù)將所有參數(shù)的函數(shù)模板允許和參數(shù),對該參數(shù)不依賴于模板參數(shù)的位置。函數(shù)模板可以通過聲明與特定類型的模板顯式實(shí)例化作為參數(shù)。c+中提供了函數(shù)模板,實(shí)際上是建立一個(gè)通用函數(shù),其函數(shù)類型和形參類型不具體指定,用一個(gè)虛擬的類型來代表,這個(gè)通用函數(shù)就成為函數(shù)模板。使用模板的好處就是對于那些函數(shù)體相
14、同的函數(shù)都可以用這個(gè)模板來代替,而不必去定義每個(gè)具體的函數(shù)去實(shí)現(xiàn)。下面通過一個(gè)簡單的具體例子(比較兩個(gè)數(shù)的大小)來說明:#include using namespace std;template /模板聲明,t為類型參數(shù)t max(t a, t b) /定義一個(gè)通用函數(shù),用t作虛擬的類型名if (ab)return a;elsereturn b;模板實(shí)例化(template instantiation )是指在編譯或鏈接時(shí)生成函數(shù)模板或類模板的具體實(shí)例源代碼。iso c+定義了兩種模板實(shí)例化方法:隱式實(shí)例化(當(dāng)使用實(shí)例化的模板時(shí)自動(dòng)地在當(dāng)前代碼單元之前插入模板的實(shí)例化代碼)、顯式實(shí)例化(直接聲
15、明模板實(shí)例化)。10、編譯和鏈接的過程源文件的編譯過程包含兩個(gè)主要階段,而它們之間的轉(zhuǎn)換是自動(dòng)的。第一個(gè)階段是預(yù)處理階段,在正式的編譯階段之前進(jìn)行。預(yù)處理階段將根據(jù)已放置在文件中的預(yù)處理指令來修改源文件的內(nèi)容。#include指令就是一個(gè)預(yù)處理指令,它把頭文件的內(nèi)容添加到.cpp文件中還有其他許多預(yù)處理指令這個(gè)在編譯之前修改源文件的方式提供了很大的靈活性,以適應(yīng)不同的計(jì)算機(jī)和操作系統(tǒng)環(huán)境的限制。一個(gè)環(huán)境需要的代碼跟另一個(gè)環(huán)境所需的代碼可能有所不同,因?yàn)榭捎玫挠布虿僮飨到y(tǒng)是不同的。在許多情況下,可以把用于不同環(huán)境的代碼放在同一個(gè)文件中,再在預(yù)處理階段修改代碼,使之適應(yīng)當(dāng)前的環(huán)境。預(yù)處理器顯示為
16、一個(gè)獨(dú)立的操作,但一般不能獨(dú)立于編譯器來執(zhí)行這個(gè)操作。調(diào)用編譯器會(huì)自動(dòng)執(zhí)行預(yù)處理過程,之后才編譯代碼。編譯器為給定源文件輸出的是機(jī)器碼,執(zhí)行這個(gè)過程需要較長時(shí)間。在對象文件之間并沒有建立任何連接。對應(yīng)于某個(gè)源文件的對象文件包含在其他源文件中定義的函數(shù)引用或其他指定項(xiàng)的引用,而這些函數(shù)或項(xiàng)仍沒有被解析。同樣,也沒有建立同庫函數(shù)的鏈接。實(shí)際上,這些函數(shù)的代碼并不是文件的一部分。這些工作是由鏈接程序(有時(shí)稱為鏈接編輯器)完成的鏈接程序把所有對象文件中的機(jī)器碼組合在一起,并解析它們之間的交叉引用。它還集成了對象模塊所使用的庫函數(shù)的代碼。這是鏈接程序的一種簡化表示,因?yàn)檫@里假定在可執(zhí)行模塊中,模塊之間的
17、所有鏈接都是靜態(tài)建立的。實(shí)際上有些鏈接是動(dòng)態(tài)的,即這些鏈接是在程序執(zhí)行時(shí)建立的。鏈接程序靜態(tài)地建立函數(shù)之間的鏈接,即在程序執(zhí)行之前建立組成程序的源文件中所包含的函數(shù)鏈接。動(dòng)態(tài)建立的函數(shù)之間的鏈接(在程序執(zhí)行過程中建立的鏈接)將函數(shù)編譯并鏈接起來,創(chuàng)建另一種可執(zhí)行模塊 動(dòng)態(tài)鏈接庫或共享庫。動(dòng)態(tài)鏈接庫中的函數(shù)鏈接是在程序調(diào)用函數(shù)時(shí)才建立的,在程序調(diào)用之前,該鏈接是不存在的。動(dòng)態(tài)鏈接庫有幾個(gè)重要的優(yōu)點(diǎn)。一個(gè)主要的優(yōu)點(diǎn)是動(dòng)態(tài)鏈接庫中的函數(shù)可以在幾個(gè)并行執(zhí)行的程序之間共享,這將節(jié)省相同函數(shù)占用的內(nèi)存空間。另一個(gè)優(yōu)點(diǎn)是動(dòng)態(tài)鏈接庫在調(diào)用其中的函數(shù)之前是不會(huì)加載到內(nèi)存中的。也就是說,如果不使用給定動(dòng)態(tài)鏈接庫中
18、的函數(shù),該動(dòng)態(tài)鏈接庫就不會(huì)占用內(nèi)存空間11、解釋“優(yōu)先級隊(duì)列”這一抽象數(shù)據(jù)類型及實(shí)現(xiàn)方法如果我們給每個(gè)元素都分配一個(gè)數(shù)字來標(biāo)記其優(yōu)先級,不妨設(shè)較小的數(shù)字具有較高的優(yōu)先級,這樣我們就可以在一個(gè)集合中訪問優(yōu)先級最高的元素并對其進(jìn)行查找和刪除操作了。這樣,我們就引入了優(yōu)先級隊(duì)列 這種數(shù)據(jù)結(jié)構(gòu)。缺省情況下,優(yōu)先級隊(duì)列利用一個(gè)最大堆完成 函數(shù)列表:empty() 如果優(yōu)先隊(duì)列為空,則返回真pop() 刪除第一個(gè)元素push() 加入一個(gè)元素size() 返回優(yōu)先隊(duì)列中擁有的元素的個(gè)數(shù)top() 返回優(yōu)先隊(duì)列中有最高優(yōu)先級的元素用途就不用多說了吧,例如huffman編碼、分支限界、a*啟發(fā)式都需要用到優(yōu)先
19、隊(duì)列存放信息。12、逆波蘭式用什么數(shù)據(jù)結(jié)構(gòu)算法的效率比較高,為什么13、c和c+,c+和java的區(qū)別c是一個(gè)結(jié)構(gòu)化語言,如譚老爺子所說:它的重點(diǎn)在于算法和數(shù)據(jù)結(jié)構(gòu)。c程序的設(shè)計(jì)首要考慮的是如何通過一個(gè)過程,對輸入(或環(huán)境條件)進(jìn)行運(yùn)算處理得到輸出(或?qū)崿F(xiàn)過程(事務(wù))控制),而對于c+,首要考慮的是如何構(gòu)造一個(gè)對象模型,讓這個(gè)模型能夠契合與之對應(yīng)的問題域,這樣就可以通過獲取對象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程(事務(wù))控制。所以c與c+的最大區(qū)別在于它們的用于解決問題的思想方法不一樣。之所以說c+比c更先進(jìn),是因?yàn)槊嫦驅(qū)?4、什么是預(yù)處理程序設(shè)計(jì)中的預(yù)處理(preprocess),程序設(shè)計(jì)領(lǐng)域,預(yù)處
20、理是在程序源代碼被編譯之前,由預(yù)處理器(preprocessor)對程序源代碼進(jìn)行的處理。這個(gè)過程并不對程序的源代碼進(jìn)行解析,但它把源代碼分割或處理成為特定的符號用來支持宏調(diào)用。預(yù)處理器的主要作用就是把通過預(yù)處理的內(nèi)建功能對一個(gè)資源進(jìn)行等價(jià)替換,最常見 的預(yù)處理有:文件包含,條件編譯、布局控制和宏替換4種。15、堆和棧的區(qū)別棧區(qū)(stack) 由編譯器自動(dòng)分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等。其 操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。堆棧(英文:stack),也可直接稱棧。臺灣作堆疊,在計(jì)算機(jī)科學(xué)中,是一種特殊的串行形式的數(shù)據(jù)結(jié)構(gòu),它的特殊之處在于只能允許在鏈結(jié)串行或陣列的一端(稱為堆棧頂端指
21、標(biāo),英文為top)進(jìn)行加入資料(push)和輸出資料(pop)的運(yùn)算。另外堆棧也可以用一維陣列或連結(jié)串行的形式來完成。堆棧的另外一個(gè)相對的操作方式稱為佇列。由于堆棧數(shù)據(jù)結(jié)構(gòu)只允許在一端進(jìn)行操作,因而按照后進(jìn)先出(lifo, last in first out)的原理運(yùn)作。堆棧數(shù)據(jù)結(jié)構(gòu)使用兩種基本操作:推入(push)和彈出(pop):17、簡述在面向?qū)ο蟪绦蛟O(shè)計(jì)中,引入繼承和封裝的主要作用 繼承:代碼重用 封裝:代碼安全18、簡述c語言中指針及其作用19、java語言的多線程機(jī)制20、簡述四種常見的數(shù)據(jù)邏輯結(jié)構(gòu) 集合 集合中任何兩個(gè)數(shù)據(jù)元素之間都沒有邏輯關(guān)系,組織形式松散。 圖狀結(jié)構(gòu) 圖狀結(jié)構(gòu)
22、中的結(jié)點(diǎn)按邏輯關(guān)系互相纏繞,任何兩個(gè)結(jié)點(diǎn)都可以鄰接21、簡述在一棵二叉排序樹中查找一特定元素x的算法過程二叉排序樹(binary sort tree)又稱二叉查找樹。 它或者是一棵空樹;或者是具有下列性質(zhì)的二叉樹:(1)若左子樹不空,則左子樹上所有結(jié)點(diǎn)的值均小于它的根結(jié)點(diǎn)的值;(2)若右子樹不空,則右子樹上所有結(jié)點(diǎn)的值均大于它的根結(jié)點(diǎn)的值;(3)左、右子樹也分別為二叉排序樹;在最壞的情況是,兩子數(shù)列擁有大各為 1 和 n-1,且調(diào)用樹(call tree)變成為一個(gè) n 個(gè)嵌套(nested)調(diào)用的線性連串(chain)。第 i 次調(diào)用作了o(n-i)的工作量,且遞歸關(guān)系式為: 這與插入排序和
23、選擇排序有相同的關(guān)系式,以及它被解為t(n) = o(n2)。它的最壞情況是很恐怖的,需要空間,遠(yuǎn)比數(shù)列本身還多。23、簡述在一帶權(quán)有向圖中尋找關(guān)鍵路徑的基本思想關(guān)鍵路徑:關(guān)鍵路徑是指網(wǎng)絡(luò)終端元素的元素的序列,該序列具有最長的總工期并決定了整個(gè)項(xiàng)目的最短完成時(shí)間。在aoe網(wǎng)中,從始點(diǎn)到終點(diǎn)具有最大路徑長度(該路徑上的各個(gè)活動(dòng)所持續(xù)的時(shí)間之和)的路徑為關(guān)鍵路徑 關(guān)鍵活動(dòng):關(guān)鍵路徑上的活動(dòng)稱為關(guān)鍵活動(dòng)。只有所有關(guān)鍵活動(dòng)提前完成,整個(gè)工程才能提前完成。最早可能開始時(shí)間vei:從原點(diǎn)到頂點(diǎn)vi最長路徑的長度(之前所有事情做完了才可能開始); 最遲允許開始時(shí)間vli:保證匯點(diǎn)vn-1在ven-1時(shí)刻完成
24、的前提下(整體工期不拖),事件vi最遲允許的開始時(shí)間。vli=minvlk-dur()關(guān)鍵活動(dòng):松弛時(shí)間(slack time)alj-aek=0的節(jié)點(diǎn)。24、類作用域和文件作用域的區(qū)別是什么文件作用域也稱“全局作用域”。 定義在所有函數(shù)之外的標(biāo)識符,具有文件作用域,作用域?yàn)閺亩x處到整個(gè)源文件結(jié)束。 文件中定義的全局變量和函數(shù)都具有文件作用域。 如果某個(gè)文件中說明了具有文件作用域的標(biāo)識符,該文件又被另一個(gè)文件包含,則該標(biāo)識符的作用域延伸到新的文件中。如cin和cout是在頭文件iostream.h中說明的具有文件作用域的標(biāo)識符,它們的作用域也延伸到嵌入iostream.h的文件中。操作系統(tǒng)
25、1. 進(jìn)程和線程的區(qū)別及聯(lián)系,操作系統(tǒng)的程序棧線程和進(jìn)程的區(qū)別:1、 線程是進(jìn)程的一部分,所以線程有的時(shí)候被稱為是輕權(quán)進(jìn)程或者輕量級進(jìn)程。2、 一個(gè)沒有線程的進(jìn)程是可以被看作單線程的,如果一個(gè)進(jìn)程內(nèi)擁有多個(gè)進(jìn)程,進(jìn)程的執(zhí)行過程不是一條線(線程)的,而是多條線(線程)共同完成的。3、 系統(tǒng)在運(yùn)行的時(shí)候會(huì)為每個(gè)進(jìn)程分配不同的內(nèi)存區(qū)域,但是不會(huì)為線程分配內(nèi)存(線程所使用的資源是它所屬的進(jìn)程的資源),線程組只能共享資源。那就是說,出了cpu之外(線程在運(yùn)行的時(shí)候要占用cpu資源),計(jì)算機(jī)內(nèi)部的軟硬件資源的分配與線程無關(guān),線程只能共享它所屬進(jìn)程的資源。4、 與進(jìn)程的控制表pcb相似,線程也有自己的控制表
26、tcb,但是tcb中所保存的線程狀態(tài)比pcb表中少多了(上下文保存一下就行)。5、 進(jìn)程是系統(tǒng)所有資源分配時(shí)候的一個(gè)基本單位,擁有一個(gè)完整的虛擬空間地址,并不依賴線程而獨(dú)立存在。進(jìn)程與程序的區(qū)別:程序是一組指令的集合,它是靜態(tài)的實(shí)體,沒有執(zhí)行的含義。而進(jìn)程是一個(gè)動(dòng)態(tài)的實(shí)體,有自己的生命周期。一般說來,一個(gè)進(jìn)程肯定與一個(gè)程序相對應(yīng),并且只有一個(gè),但是一個(gè)程序可以有多個(gè)進(jìn)程,或者一個(gè)進(jìn)程都沒有也可以只有一個(gè)進(jìn)程。除此之外,進(jìn)程還有并發(fā)性和交往性。簡單地說,進(jìn)程是程序的一部分,程序運(yùn)行的時(shí)候會(huì)產(chǎn)生進(jìn)程??偨Y(jié):線程是進(jìn)程的一部分,進(jìn)程是程序的一部分。前一句說的不太準(zhǔn)確,線程也有自己的資源,比如棧,私有
27、數(shù)據(jù)等等。說他使用而不擁有資源指的是使用的是進(jìn)程的打開文件句柄,進(jìn)程的全局?jǐn)?shù)據(jù),進(jìn)程的地址空間等等,這些都屬于進(jìn)程,而不屬于線程,進(jìn)程內(nèi)個(gè)線程共享。進(jìn)程切換比線程切換開銷大是因?yàn)檫M(jìn)程切換時(shí)要切頁表,而且往往伴隨著頁調(diào)度,因?yàn)檫M(jìn)程的數(shù)據(jù)段代碼段要換出去,以便把將要執(zhí)行的進(jìn)程的內(nèi)容換進(jìn)來。本來進(jìn)程的內(nèi)容就是線程的超集。而且線程只需要保存線程的上下文(相關(guān)寄存器狀態(tài)和棧的信息)就好了,動(dòng)作很小。2. os里面進(jìn)程的“三態(tài)”“五態(tài)”“七態(tài)”是什么3. 什么是操作系統(tǒng)4. 死鎖的條件,檢測死鎖的可能方法及其基本思想a deadlock is a situation in which two or mor
28、e competing actions are each waiting for the other to finish, and thus neither ever does.1. (互斥): at least two resources must be non-shareable.1 only one process can use the resource at any given instant of time.2. hold and wait or resource holding: a process is currently holding at least one resour
29、ce and requestingadditional resources which are being held by other processes.3. no (禁止搶占): the operating system must not de-allocate resources once they have beenallocated; they must be released by the holding process voluntarily.4. a process must be waiting for a resource which is being held by an
30、other process,which in turn is waiting for the first process to release the resource. in general, there is a of waitingprocesses, p = p1, p2, ., pn, such that p1 is waiting for a resource held by p2, p2 is waiting for a resource held by p3 and so on until pn is waiting for a resource held by p1.17th
31、ese four conditions are known as the coffman conditions from their first description in a 1971 articleby 7 unfulfillment of any of these conditions is enough to preclude a deadlock from occurring.ensure that the system will never enter a deadlock state.prevention: ensure one of the four conditions f
32、ails.avoidance: the os needs more information so that it can determine if the current request can be satisfied ordelayed.死鎖檢測:1. resource-allocation graph2. detection algorithm5. 用戶態(tài)和內(nèi)核態(tài)當(dāng)程序運(yùn)行在3級特權(quán)級上時(shí),就可以稱之為運(yùn)行在用戶態(tài),因?yàn)檫@是最低特權(quán)級,是普通的用戶進(jìn)程運(yùn)行的特權(quán)級,大部分用戶直接面對的程序都是運(yùn)行在用戶態(tài);反之,當(dāng)程序運(yùn)行在級特權(quán)級上時(shí),就可以稱之為運(yùn)行在內(nèi)核態(tài)。 用戶態(tài)切換到內(nèi)核態(tài)的3
33、種方式a. 系統(tǒng)調(diào)用這是用戶態(tài)進(jìn)程主動(dòng)要求切換到內(nèi)核態(tài)的一種方式,用戶態(tài)進(jìn)程通過系統(tǒng)調(diào)用申請使用操作系統(tǒng)提供的服務(wù)程序完成工作,比如前例中fork()實(shí)際上就是執(zhí)行了一個(gè)創(chuàng)建新進(jìn)程的系統(tǒng)調(diào)用。而系統(tǒng)調(diào)用的機(jī)制其核心還是使用了操作系統(tǒng)為用戶特別開放的一個(gè)中斷來實(shí)現(xiàn),例如linux的int 80h中斷。b. 異常當(dāng)cpu在執(zhí)行運(yùn)行在用戶態(tài)下的程序時(shí),發(fā)生了某些事先不可知的異常,這時(shí)會(huì)觸發(fā)由當(dāng)前運(yùn)行進(jìn)程切換到處理此異常的內(nèi)核相關(guān)程序中,也就轉(zhuǎn)到了內(nèi)核態(tài),比如缺頁異常。c. 外圍設(shè)備的中斷當(dāng)外圍設(shè)備完成用戶請求的操作后,會(huì)向cpu發(fā)出相應(yīng)的中斷信號,這時(shí)cpu會(huì)暫停執(zhí)行下一條即將要執(zhí)行的指令轉(zhuǎn)而去執(zhí)行
34、與中斷信號對應(yīng)的處理程序,如果先前執(zhí)行的指令是用戶態(tài)下的程序,那么這個(gè)轉(zhuǎn)換的過程自然也就發(fā)生了由用戶態(tài)到內(nèi)核態(tài)的切換。比如硬盤讀寫操作完成,系統(tǒng)會(huì)切換到硬盤讀寫的中斷處理程序中執(zhí)行后續(xù)操作等。這3種方式是系統(tǒng)在運(yùn)行時(shí)由用戶態(tài)轉(zhuǎn)到內(nèi)核態(tài)的最主要方式,其中系統(tǒng)調(diào)用可以認(rèn)為是用戶進(jìn)程主動(dòng)發(fā)起的,異常和外圍設(shè)備中斷則是被動(dòng)的。6. 面包店算法該算法的基本思想源于顧客在面包店中購買面包時(shí)的排隊(duì)原理. 顧客在進(jìn)入面包店前, 首先抓一個(gè)號, 然后按照號碼由小到大的次序依次進(jìn)入面包店購買面包. 這里, 面包店發(fā)放的號碼是由小到大的, 但是兩個(gè)或兩個(gè)以上的顧客卻有可能得到相同的號碼(使所抓號碼不同需要互斥),
35、如果多個(gè)顧客抓到相同的號碼, 則規(guī)定按照顧客名字的字典次序進(jìn)行排序, 這里假定顧客是沒有重名的. 在計(jì)算機(jī)系統(tǒng)中, 顧客就相當(dāng)于進(jìn)程, 每個(gè)進(jìn)程有一個(gè)唯一的標(biāo)識, 我們用p的下面加一個(gè)下標(biāo)來表示. 例如: 對于 pi和pj, 如果有ij, 則先為pi服務(wù), 即pi先進(jìn)入臨界區(qū)7. 系統(tǒng)調(diào)用和庫函數(shù)的區(qū)別(1)調(diào)用形式不同。過程(函數(shù))使用一般調(diào)用指令,其轉(zhuǎn)向地址是固定不變的,包含在跳轉(zhuǎn)語句中;但系統(tǒng)調(diào)用中不包含處理程序入口,而僅僅提供功能號,按功能號調(diào)用。(2)被調(diào)用代碼的位置不同。過程(函數(shù))調(diào)用是一種靜態(tài)調(diào)用,調(diào)用者和被調(diào)用代碼在同一程序內(nèi),經(jīng)過連接編輯后作為目標(biāo)代碼的一部份。當(dāng)過程(函數(shù)
36、)升級或修改時(shí),必須重新編譯連結(jié)。而系統(tǒng)調(diào)用是一種動(dòng)態(tài)調(diào)用,系統(tǒng)調(diào)用的處理代碼在調(diào)用程序之外(在操作系統(tǒng)中),這樣一來,系統(tǒng)調(diào)用處理代碼升級或修改時(shí),與調(diào)用程序無關(guān)。而且,調(diào)用程序的長度也大大縮短,減少了調(diào)用程序占用的存儲(chǔ)空間。(3)提供方式不同。過程(函數(shù))往往由編譯系統(tǒng)提供,不同編譯系統(tǒng)提供的過程(函數(shù))可以不同;系統(tǒng)調(diào)用由操作系統(tǒng)提供,一旦操作系統(tǒng)設(shè)計(jì)好,系統(tǒng)調(diào)用的功能、種類與數(shù)量便固定不變了。(4)調(diào)用的實(shí)現(xiàn)不同。程序使用一般機(jī)器指令(跳轉(zhuǎn)指令)來調(diào)用過程(函數(shù)),是在用戶態(tài)運(yùn)行的;程序執(zhí)行系統(tǒng)調(diào)用,是通過中斷機(jī)構(gòu)來實(shí)現(xiàn),需要從用戶態(tài)轉(zhuǎn)變到核心態(tài),在管理狀態(tài)執(zhí)行,因此,安全性好。8.
37、經(jīng)典進(jìn)程同步問題是什么,同步思想?生產(chǎn)者-消費(fèi)者問題是著名的進(jìn)程同步問題,它描述一組生產(chǎn)者進(jìn)程向一組消費(fèi)者進(jìn)程提供消息。它們共享一個(gè)有界緩沖池,生產(chǎn)者向其中投放消息,消費(fèi)者從中取得消息。生產(chǎn)者-消費(fèi)者問題是許多相互合作進(jìn)程的一種抽象。假定緩沖池中有n個(gè)緩沖區(qū),每個(gè)緩沖區(qū)存放一個(gè)消息。由于緩沖池是臨界資源,它只允許一個(gè)生產(chǎn)者投入消息,或者一個(gè)消費(fèi)者從中取出消息。生產(chǎn)者之間、生產(chǎn)者與消費(fèi)者之間、消費(fèi)者之間都必須互斥地使用緩沖池。所以必須設(shè)置互斥信號量mutex,它代表緩沖池資源,它的數(shù)值為1。 讀者-寫者問題問題描述:一個(gè)數(shù)據(jù)集(如文件)被幾個(gè)并行進(jìn)程所共享,有些進(jìn)程只要求讀數(shù)據(jù)集內(nèi)容,稱為讀者,
38、而另一些進(jìn)程則要求修改數(shù)據(jù)集內(nèi)容,稱為寫者,幾個(gè)讀者可以同時(shí)讀數(shù)據(jù)集,而不需要互斥,但一個(gè)寫者不能和其他進(jìn)程(不管是寫者或讀者)同時(shí)訪問這些數(shù)據(jù)集,它們之間必須互斥。哲學(xué)家進(jìn)餐問題該問題描述如下:有五個(gè)哲學(xué)家,他們的生活方式是交替地進(jìn)行思考和進(jìn)餐。哲學(xué)家們公用一張圓桌,周圍放有五把椅子,每人坐一把。在圓桌上有五個(gè)碗和五根筷子,當(dāng)一個(gè)哲學(xué)家思考時(shí),他不與其他人交談,饑餓時(shí)便試圖取用其左、右最靠近他的筷子,但他可能一根都拿不到。只有在他拿到兩根筷子時(shí),方能進(jìn)餐,進(jìn)餐完后,放下筷子又繼續(xù)思考。9. 文件管理及組織,fatfat = file allocation table10. 設(shè)備驅(qū)動(dòng)程序是否屬
39、于os,他的作用是什么不是,驅(qū)動(dòng)程序是另外安裝的軟件,是操作系統(tǒng)控制并且和硬件之間通訊的橋梁(程序)11. 程序和任務(wù)的區(qū)別任務(wù)是最抽象的,是一個(gè)一般性的術(shù)語,指由軟件完成的一個(gè)活動(dòng)。一個(gè)任務(wù)既可以是一個(gè)進(jìn)程,也可以是一個(gè)線程。簡而言之,它指的是一系列共同達(dá)到某一目的的操 作。例如,讀取數(shù)據(jù)并將數(shù)據(jù)放入內(nèi)存中。這個(gè)任務(wù)可以作為一個(gè)進(jìn)程來實(shí)現(xiàn),也可以作為一個(gè)線程(或作為一個(gè)中斷任務(wù))來實(shí)現(xiàn)。 進(jìn)程常常被定義為程序的執(zhí)行。可以把一個(gè)進(jìn)程看成是一個(gè)獨(dú)立的程序,在內(nèi)存中有其完備的數(shù)據(jù)空間和代碼空間。一個(gè)進(jìn)程所擁有的數(shù)據(jù)和變量只屬于它自己。 線程則是某一進(jìn)程中一路單獨(dú)運(yùn)行的程序。也就是說,線程存在于進(jìn)程
40、之中。一個(gè)進(jìn)程由一個(gè)或多個(gè)線程構(gòu)成,各線程共享相同的代碼和全局?jǐn)?shù)據(jù),但各有其自己的堆棧。由于堆棧是每個(gè)線程一個(gè),所以局部變量對每一線程來說是私有的。由于所有線程共享同樣的代碼和全局?jǐn)?shù)據(jù),它們比進(jìn)程更緊密,比單獨(dú)的進(jìn)程間更趨向于相互作用,線程間的相互作用更容易些,因?yàn)樗鼈儽旧砭陀心承┕┩ㄐ庞玫墓蚕韮?nèi)存:進(jìn)程的全局?jǐn)?shù)據(jù)進(jìn)程的全局?jǐn)?shù)據(jù)進(jìn)程的全局?jǐn)?shù)據(jù)進(jìn)程的全局?jǐn)?shù)據(jù)進(jìn)程:資源分配、調(diào)度運(yùn)行的基本單位。線程:進(jìn)程中執(zhí)行運(yùn)算的最小單位,執(zhí)行處理機(jī)調(diào)度的基本單位。12. 數(shù)據(jù)庫安全性和操作系統(tǒng)安全性的關(guān)系安全性問題不是數(shù)據(jù)庫系統(tǒng)所獨(dú)有的,所有計(jì)算機(jī)系統(tǒng)都有這個(gè)問題.只是在數(shù)據(jù)庫系統(tǒng)中大量數(shù)據(jù)集中存放,而且為許
41、多最終用戶直接共享,從而使安全性問題更為突出.系統(tǒng)安全保護(hù)措施是否有效是數(shù)據(jù)庫系統(tǒng)的主要指標(biāo)之一.數(shù)據(jù)庫的安全性和計(jì)算機(jī)系統(tǒng)的安全性,包括操作系統(tǒng),網(wǎng)絡(luò)系統(tǒng)的安全性是緊密聯(lián)系,相互支持的.13. 中斷處理的過程請求中斷響應(yīng)中斷關(guān)閉中斷保留斷點(diǎn)中斷源識別保護(hù)現(xiàn)場中斷服務(wù)子程序恢復(fù)現(xiàn)場中斷返回 在實(shí)際運(yùn)行中,一旦設(shè)備通過某引腳n向8259a發(fā)出中斷指令,后者便向8086a的intr引腳發(fā)送中斷信號。8086a通過inta引腳通知8259a中斷有效(這個(gè)過程實(shí)際上還包括對此8259a的選址),后者即通過地址總線將對應(yīng)引腳n的中斷類型碼(已預(yù)先存好,見上節(jié))發(fā)送給cpu。cpu得到中斷類型碼后,先進(jìn)行
42、現(xiàn)場保護(hù),主要包括:1. 狀態(tài)寄存器flags壓棧(同時(shí)堆棧寄存器sp-2);2. 關(guān)閉中斷(將flags寄存器的if位置零);3. 將當(dāng)前代碼段寄存器cs和程序計(jì)數(shù)器ip壓棧(同時(shí)堆棧寄存器sp-4)。 現(xiàn)場保護(hù)完成后,cpu開始按照前述的兩步驟翻譯中斷程序入口地址。在得到中斷處理程序地址之后但調(diào)用中斷處理程序之前,cpu會(huì)再檢查一下nmi引腳是否有信號,以防在剛才的處理過程中忽略了可能的nmi中斷。nmi的優(yōu)先級始終高于intr。中斷處理程序雖然是由程序員編寫,但須循一定規(guī)范。作為例程,中斷處理程序應(yīng)該先將各寄存器信息(除了ip和cs,此二寄存器現(xiàn)已指向當(dāng)前中斷程序)壓入堆棧予以保存,這樣
43、才能在中斷處理程序內(nèi)部使用這些寄存器。在程序結(jié)束時(shí),應(yīng)該按與壓棧保護(hù)時(shí)相反的順序彈出各寄存器的值。中斷程序的最后一句始終是iret指令,這條指令將棧頂6個(gè)字節(jié)分別彈出并存入ip、cs和flags寄存器,完成了現(xiàn)場的還原。當(dāng)然,如果是操作系統(tǒng)的中斷處理程序,則未必通常不會(huì)還原中斷前的狀態(tài)。這樣的中斷處理程序通常會(huì)在調(diào)用完寄存器保存例程后,調(diào)用進(jìn)程調(diào)度程序(多由高級語言編寫),并決定下一個(gè)運(yùn)行的進(jìn)程。隨后將此進(jìn)程的寄存器信息(上次中斷時(shí)保存下來的)存入寄存器并返回。在中斷程序結(jié)束之后,主程序也發(fā)生了改變。14. 計(jì)算機(jī)系統(tǒng)怎樣實(shí)現(xiàn)存儲(chǔ)保護(hù)1. 防止地址越界(對進(jìn)程所產(chǎn)生的地址必須加以檢查,發(fā)生越界
44、時(shí)產(chǎn)生中斷,由操作系統(tǒng)進(jìn)行相應(yīng)處理)2. 防止操作越權(quán)(對屬于自己區(qū)域的信息,可讀可寫:對公共區(qū)域中允許共享的信息或獲得授權(quán)可使用的信息,可讀而不可修改;對未授權(quán)使用的信息,不可讀,不可寫)15. 調(diào)度的基本準(zhǔn)則(scheduling criteria)there are many criteria for comparing different scheduling algorithms. here are five common ones: cpu utilization(cpu利用率)throughput(吞吐量)turnaround time(周轉(zhuǎn)時(shí)間)waiting time(等待時(shí)
45、間)response time(響應(yīng)時(shí)間)16. 多線程是否真正能提高效率17. 磁盤調(diào)度算法有哪幾種fcfssstf (shortest seek time first)scan/lookc-sacn/c-look18. raid工作原理raid(redundant array of independent disks)通過條帶化存儲(chǔ)和奇偶校驗(yàn)兩個(gè)措施來實(shí)現(xiàn)其冗余和容錯(cuò)的目標(biāo)。條帶化存儲(chǔ)意味著可以一次寫入一個(gè)數(shù)據(jù)塊的方式將文件寫入多個(gè)磁盤。條帶化存儲(chǔ)技術(shù)將數(shù)據(jù)分開寫入多個(gè)驅(qū)動(dòng)器,從而提高數(shù)據(jù)傳輸速率并縮短磁盤處理總時(shí)間。這種系統(tǒng)非常適用于交易處理、但可靠性卻很差,因?yàn)橄到y(tǒng)的可靠性等于最差的單
46、個(gè)驅(qū)動(dòng)器的可靠性。奇偶校驗(yàn)通過在傳輸后對所有數(shù)據(jù)進(jìn)行冗余校驗(yàn)可以確保數(shù)據(jù)的有效性。利用奇偶校驗(yàn),當(dāng)raid系統(tǒng)的一個(gè)磁盤發(fā)生故障時(shí),其它磁盤能夠重建該故障磁盤。在這兩種情況中,這些功能對于操作系統(tǒng)都是透明的。由磁盤陣列控制器(dac)進(jìn)行條帶化存儲(chǔ)和奇偶校驗(yàn)控制。19. windows中段最長多少字節(jié)?20. 同步、互斥22. 簡述請求段頁式虛擬內(nèi)存管理基本思想bring a page into memory only when it is needed.less i/o neededless memory neededfaster responsemore users page is nee
47、ded reference to itinvalid reference abortnot-in-memory bring to memory網(wǎng)絡(luò)1. 路由協(xié)議常見路由協(xié)議有:rip,ospf,bgp等2. csma/cd, 指數(shù)回退載波偵聽多路訪問沖突檢測(英語:carrier sense multiple access with collisiondetection,csma/cd)此方案要求設(shè)備在發(fā)送幀的同時(shí)要對信道進(jìn)行偵聽,以確定是否發(fā)生沖突,若在發(fā)送數(shù)據(jù)過程中檢測到?jīng)_突,則進(jìn)行如下沖突處理操作:1. 發(fā)送特殊阻塞信息并立即停止發(fā)送數(shù)據(jù):特殊阻塞信息是連續(xù)幾個(gè)字節(jié)的全1信號,此舉意在強(qiáng)
48、化沖突,以使得其它設(shè)備能盡快檢測到?jīng)_突發(fā)生。2. 在固定時(shí)間(一開始是 1 contention period times)內(nèi)等待隨機(jī)的時(shí)間,再次發(fā)送。3. 若依舊碰撞,則采用進(jìn)行發(fā)送。即十次之內(nèi)停止前一次“固定時(shí)間”的兩倍時(shí)間內(nèi)隨機(jī)再發(fā)送,十次后則停止前一次“固定時(shí)間”內(nèi)隨機(jī)再發(fā)送。嘗試16次之后仍然失敗則放棄傳送。載波偵聽多路訪問沖突避免(英語:carrier sense multiple access with collision avoidance,csma/ca)此種方案采用主動(dòng)避免碰撞而非被動(dòng)偵測的方式來解決沖突問題。可以滿足那些不易準(zhǔn)確偵測是否有沖突發(fā)生的需求,如無線網(wǎng)域。csm
49、a/ca協(xié)議主要使用兩種方法來避免碰撞: 1. 設(shè)備欲發(fā)送訊框(frame),且訊框聽到通道空閑時(shí),維持一段時(shí)間后,再等待一段隨機(jī)的時(shí)間依然空閑時(shí),才提交數(shù)據(jù)。由于各個(gè)設(shè)備的等待時(shí)間是分別隨機(jī)產(chǎn)生的,因此很大可能有所區(qū)別,由此可以減少?zèng)_突的可能性。2. rts-cts三向握手(:handshake):設(shè)備欲發(fā)送訊框前,先發(fā)送一個(gè)很小的rts(request to send)訊框給目標(biāo)端,等待目標(biāo)端回應(yīng)cts(clear to send)幀后,才開始傳送。此方式可以確保接下來傳送數(shù)據(jù)時(shí),不會(huì)發(fā)生沖突。同時(shí)由于rts幀與cts幀都很小,讓傳送的無效開銷變小。3. 解釋ftp、http的全稱及其原理
50、。ftp、http文件傳輸?shù)漠愅琭tp:file transfer protocolhttp: hyper text transfer protocol都是應(yīng)用層協(xié)議。4. 七層協(xié)議的名稱physicaldata linknetworktransmissionsessionpresentationapplication5. 電子郵件發(fā)送到接收的過程,協(xié)議電子郵件的工作過程遵循客戶-服務(wù)器模式。每份電子郵件 的發(fā)送都要涉及到發(fā)送方與接收方,發(fā)送方式構(gòu)成客戶端,而接收方構(gòu)成服務(wù)器,服務(wù)器含有 眾多用戶的電子信箱。發(fā)送方通過郵件客戶程序,將編輯好的電子郵件向郵局服務(wù)器(smtp服 務(wù)器)發(fā)送。郵局服
51、務(wù)器識別接收者的地址,并向管理該地址的郵件服務(wù)器(pop3服務(wù)器)發(fā) 送消息。郵件服務(wù)器識將消息存放在接收者的電子信箱內(nèi),并告知接收者有新郵件到來。接收 者通過郵件客戶程序連接到服務(wù)器后,就會(huì)看到服務(wù)器的通知,進(jìn)而打開自己的電子信箱來查 收郵件。發(fā)送:smtp接收:pop, imap6. p2p技術(shù),具體的實(shí)現(xiàn)機(jī)制實(shí)現(xiàn)p2p需要一個(gè)中轉(zhuǎn)服務(wù)器。也就是需要一個(gè)第三方。(一會(huì)兒我們來說為什么需要一個(gè)第三方)7. 網(wǎng)絡(luò)中的握手問題8. 無線傳感網(wǎng)絡(luò)(wsn)及其應(yīng)用無線傳感網(wǎng)絡(luò)(wireless sensor network),或譯無線感知網(wǎng)絡(luò),是由許多在空間中分布的自動(dòng)裝置組成的一種無線通訊計(jì)算機(jī)
52、網(wǎng)絡(luò),這些裝置使用傳感器協(xié)作地監(jiān)控不同位置的物理或環(huán)境狀況(比如溫度、聲音、振動(dòng)、壓力、運(yùn)動(dòng)或污染物)。無線傳感器網(wǎng)絡(luò)的發(fā)展最初起源于戰(zhàn)場監(jiān)測等軍事應(yīng)用。而現(xiàn)今無線傳感器網(wǎng)絡(luò)被應(yīng)用于很多民用領(lǐng)域,如環(huán)境與生態(tài)監(jiān)測、健康監(jiān)護(hù)、家居自動(dòng)化以及交通控制等。無線傳感網(wǎng)絡(luò)主要包括三個(gè)方面:感應(yīng),通訊,計(jì)算(硬件,軟件,算法)。其中的關(guān)鍵技術(shù)主要有無線數(shù)據(jù)庫技術(shù),比如使用在無線傳感器網(wǎng)絡(luò)的查詢,和用于和其他傳感器通訊的網(wǎng)絡(luò)技術(shù),特別是多次跳躍路由協(xié)議。9. 當(dāng)前網(wǎng)絡(luò)新技術(shù)及其應(yīng)用,web2.0web 2.0,指的是一個(gè)利用web的平臺,由用戶主導(dǎo)而生成的內(nèi)容互聯(lián)網(wǎng)產(chǎn)品模式,為了區(qū)別傳統(tǒng)由網(wǎng)站雇員主導(dǎo)生成的
53、內(nèi)容而定義為web2.08. 無線傳感網(wǎng)絡(luò)(wsn)及其應(yīng)用無線傳感網(wǎng)絡(luò)(wireless sensor network),或譯無線感知網(wǎng)絡(luò),是由許多在空間中分布的自動(dòng)裝置組成的一種無線通訊計(jì)算機(jī)網(wǎng)絡(luò),這些裝置使用傳感器協(xié)作地監(jiān)控不同位置的物理或環(huán)境狀況(比如溫度、聲音、振動(dòng)、壓力、運(yùn)動(dòng)或污染物)。無線傳感器網(wǎng)絡(luò)的發(fā)展最初起源于戰(zhàn)場監(jiān)測等軍事應(yīng)用。而現(xiàn)今無線傳感器網(wǎng)絡(luò)被應(yīng)用于很多民用領(lǐng)域,如環(huán)境與生態(tài)監(jiān)測、健康監(jiān)護(hù)、家居自動(dòng)化以及交通控制等。無線傳感網(wǎng)絡(luò)主要包括三個(gè)方面:感應(yīng),通訊,計(jì)算(硬件,軟件,算法)。其中的關(guān)鍵技術(shù)主要有無線數(shù)據(jù)庫技術(shù),比如使用在無線傳感器網(wǎng)絡(luò)的查詢,和用于和其他傳感器
54、通訊的網(wǎng)絡(luò)技術(shù),特別是多次跳躍路由協(xié)議。9. 當(dāng)前網(wǎng)絡(luò)新技術(shù)及其應(yīng)用,web2.0web 2.0,指的是一個(gè)利用web的平臺,由用戶主導(dǎo)而生成的內(nèi)容互聯(lián)網(wǎng)產(chǎn)品模式,為了區(qū)別傳統(tǒng)由網(wǎng)站雇員主導(dǎo)生成的內(nèi)容而定義為web2.011. tcp擁塞控制(congestion control)與流量控制(flow control)的功能和區(qū)別流量控制解決的問題:通信雙方速率不匹配。方法:sliding window,控制滑動(dòng)窗口大小,自適應(yīng)速率。擁塞控制解決的問題:雙方速率都允許的情況下,如何保證途中不出問題。方法:使用rtt(round trip time)以及rto(retransmission ti
55、me out)以及計(jì)算這兩個(gè)量的算法,保證傳輸可能失敗的時(shí)候重傳。12. ppp協(xié)議點(diǎn)對點(diǎn)協(xié)議(英語:point-to-point protocol,ppp)工作在數(shù)據(jù)鏈路層(以osi參考模型的觀點(diǎn))。它通常用在兩節(jié)點(diǎn)間創(chuàng)建直接的連接,并可以提供連接認(rèn)證、傳輸加密(使用ecp,rfc 1968)以及壓縮。13. 集線器、路由器和交換機(jī)有什么區(qū)別。中繼器、集線器、交換機(jī)、網(wǎng)橋、網(wǎng)關(guān)、路由器的功能14. p2p網(wǎng)絡(luò)編程的特點(diǎn)?15. dns的遞歸查詢和迭代查詢(1)遞歸查詢遞歸查詢是一種dns 服務(wù)器的查詢模式,在該模式下dns 服務(wù)器接收到客戶機(jī)請求,必須使用一個(gè)準(zhǔn)確的查詢結(jié)果回復(fù)客戶機(jī)。如果d
56、ns 服務(wù)器本地沒有存儲(chǔ)查詢dns 信息,那么該服務(wù)器會(huì)詢問其他服務(wù)器,并將返回的查詢結(jié)果提交給客戶機(jī)。(2)迭代查詢dns 服務(wù)器另外一種查詢方式為迭代查詢,dns 服務(wù)器會(huì)向客戶機(jī)提供其他能夠解析查詢請求的dns 服務(wù)器地址,當(dāng)客戶機(jī)發(fā)送查詢請求時(shí),dns 服務(wù)器并不直接回復(fù)查詢結(jié)果,而是告訴客戶機(jī)另一臺dns 服務(wù)器地址,客戶機(jī)再向這臺dns 服務(wù)器提交請求,依次循環(huán)直到返回查詢的結(jié)果為止。16. arp協(xié)議、arp攻擊地址解析協(xié)議(address resolution protocol),其基本功能為通過目標(biāo)設(shè)備的ip地址,查詢目標(biāo)設(shè)備的mac地址,以保證通信的順利進(jìn)行。它是中網(wǎng)絡(luò)層必
57、不可少的協(xié)議,不過在中已不再適用,并被鄰居發(fā)現(xiàn)協(xié)議(ndp)所替代。在以太網(wǎng)協(xié)議中規(guī)定,同一局域網(wǎng)中的一臺主機(jī)要和另一臺主機(jī)進(jìn)行直接通信,必須要知道目標(biāo)主機(jī)的mac地址。而在tcp/ip協(xié)議中,網(wǎng)絡(luò)層和傳輸層只關(guān)心目標(biāo)主機(jī)的ip地址。這就導(dǎo)致在以太網(wǎng)中使用ip協(xié)議時(shí),數(shù)據(jù)鏈路層的以太網(wǎng)協(xié)議接到上層ip協(xié)議提供的數(shù)據(jù)中,只包含目的主機(jī)的ip地址。于是需要一種方法,根據(jù)目的主機(jī)的ip地址,獲得其mac地址。這就是arp協(xié)議要做的事情。所謂地址解析(address resolution)就是主機(jī)在發(fā)送幀前將目標(biāo)ip地址轉(zhuǎn)換成目標(biāo)mac地址的過程。arp欺騙的運(yùn)作原理是由攻擊者發(fā)送假的arp數(shù)據(jù)包到網(wǎng)絡(luò)上,尤其是送到網(wǎng)關(guān)上。其目的是要讓送至特定的ip地址的流量被錯(cuò)誤送到攻擊者所取代的地方。因此攻擊者可將這些流量另行轉(zhuǎn)送到真正的閘道(被動(dòng)式數(shù)據(jù)包嗅探,passive sniffing)或是篡改后再轉(zhuǎn)送(中間人攻擊,m
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國煤液化市場供需調(diào)研及項(xiàng)目發(fā)展可行性研究報(bào)告
- 2024-2030年中國火力發(fā)電廠水資源利用行業(yè)發(fā)展趨勢預(yù)測規(guī)劃研究報(bào)告
- 2024-2030年中國漆包線行業(yè)供需狀況發(fā)展?jié)摿ρ芯繄?bào)告版
- 2024-2030年中國液化石油氣橡膠軟管項(xiàng)目可行性研究報(bào)告
- 2024-2030年中國液化天燃?xì)馊谫Y商業(yè)計(jì)劃書
- 2024年液態(tài)食品無菌罐裝設(shè)備項(xiàng)目申請報(bào)告模板
- 2024-2030年中國油機(jī)制紙項(xiàng)目可行性研究報(bào)告
- 2024-2030年中國汽車線束產(chǎn)業(yè)面臨的挑戰(zhàn)及投資規(guī)劃研究報(bào)告
- 2024-2030年中國汽車減震器行業(yè)運(yùn)營態(tài)勢及發(fā)展?jié)摿ρ芯繄?bào)告版
- 2022年大學(xué)植物生產(chǎn)專業(yè)大學(xué)物理下冊模擬考試試題A卷-附解析
- tubeless胸科手術(shù)麻醉
- 電商免責(zé)聲明范本
- 飛行科普知識講座
- 社區(qū)健康服務(wù)與管理教案
- 上海中考英語考綱詞匯
- 創(chuàng)新方法與創(chuàng)新設(shè)計(jì)智慧樹知到期末考試答案2024年
- 川教版四年級英語上冊全冊練習(xí)含答案
- 2024年全國職業(yè)技能大賽(模特表演賽項(xiàng))理論考試題庫(含答案)
- 弘揚(yáng)正能量提升凝聚力課件
- 安全在我心健康伴我行主題班會(huì)通用課件
- 懸挑腳手架施工過程中的安全事故分析與預(yù)防
評論
0/150
提交評論