嵌入式中级考试笔记
文章目錄
- 1、ISO 7層
- 2、A類、B類、C類
- 2.1 子網掩碼
- 2.1舉例1:
- 2.2 舉例2:
- 3、軟件能力成熟度模型(Capabilitymaturity model,CMM)
- 4、虛擬設備技術
- 5、不可重入函數
- 6、病毒
- 7、進制
- 8、常見的Dos攻擊
- 9、加密
- 10、知識產權
- 11、結構化分析方法
- 12、IEEE1394
- 13、浮點數
- 14、計數器
- 15、原碼、反碼、補碼
- 1. 原碼
- 2. 反碼
- 3. 補碼
- 4、舉例
- 16、CMM等級模型
- 17、解釋程序
- 18、#define f(a, b) a##b
- 19 四大網絡攻擊常見手段及防護
- 1、DoS攻擊
- 2、ARP攻擊
- 3、腳本攻擊
- 4、嗅探掃描
- 20、商標權
- 21、軟件生存周期模型
- 22、匯編語言
- 23、IEEE1394
- 24、軟件許可
- 25、位圖、矢量圖
- 26、Jackson
- 27、單總線、雙總線
- 28、片內總線和片外總線
- 29、指令流于數據流的關系
- 30、私鑰、公鑰
- 舉例1:
- 31、RS-232、RS-422與RS-485比較
- 32、語句覆蓋、條件覆蓋(分支覆蓋)、判定覆蓋、條件-判定覆蓋、組合覆蓋、路徑覆蓋 的區別
- 一、語句覆蓋(Statement Coverage)
- 二、判定覆蓋(Decision Coverage)
- 三、條件覆蓋(Condition Coverage)
- 四、判定條件覆蓋(Decision/Condition Coverage)
- 五、組合覆蓋(Branch Condition Combination Coverage)
- 六、路徑覆蓋
- 33、操作系統-文件管理
- 34、Cache寫機制:Write-through與Write-back
- 35、程序局部性
- 1、時間局部性
- 2、空間局部性
- 36、常見存儲器件
- 37、char取值范圍是 -128~+127
- 38、BIT檢測和定位
- 39、算法復雜度
- 40、立即尋址,直接尋址,間接尋址
- 1、立即尋址
- 2、直接尋址
- 3、間接尋址
- 41、飽和度
- 42、軟件開發方法
- 43、單緩存、雙緩存時間計算
- 1、單緩存
- 2、雙緩存
- 44、同步通訊、異步通訊
- 45、Cache 和主存 的三種映射方法
- 1、直接映射
- 2、全相聯映射
- 3、組相聯映射
- 46、加密技術
- 信息摘要
- 47、敏捷過程的典型方法
- 48、PV操作
- 49、各種常用的默認端口號
- 49、常見串、并行總線
1、ISO 7層
網絡層:路由器(識別IP,進行數據包的轉發)
鏈路層:網橋(識別MAC地址,進行幀轉發)、交換機(多端口網橋)
物理層:中繼器(對信號進行放大,延長傳輸距離)
2、A類、B類、C類
IP地址根據網絡號和主機號來分,分為A、B、C三類及特殊地址D、E。 全0和全1的都保留不用。
A類:(1.0.0.0-126.0.0.0)(默認子網掩碼:255.0.0.0或 0xFF000000)第一個字節為網絡號,后三個字節為主機號。該類IP地址的最前面為“0”,所以地址的網絡號取值于1~126之間。一般用于大型網絡。
00000001-01111110(1-126)
B類:(128.0.0.0-191.255.0.0)(默認子網掩碼:255.255.0.0或0xFFFF0000)前兩個字節為網絡號,后兩個字節為主機號。該類IP地址的最前面為“10”,所以地址的網絡號取值于128~191之間。一般用于中等規模網絡。
10000000-10111111(128-191)
C類:(192.0.0.0-223.255.255.0)(子網掩碼:255.255.255.0或 0xFFFFFF00)前三個字節為網絡號,最后一個字節為主機號。該類IP地址的最前面為“110”,所以地址的網絡號取值于192~223之間。一般用于小型網絡。
11000000-11011111 (192-223)
D類:是多播地址。該類IP地址的最前面為“1110”,所以地址的網絡號取值于224~239之間。一般用于多路廣播用戶[1] 。
E類:是保留地址。該類IP地址的最前面為“1111”,所以地址的網絡號取值于240~255之間。
2.1 子網掩碼
子網掩碼不能單獨存在,它必須結合IP地址一起使用。子網掩碼只有一個作用,就是將某個IP地址劃分成網絡地址和主機地址兩部分
將主機號拿出幾位作為子網號,就可以劃分出多個子網,此時IP地址組成為:
網絡號+子網號+主機號。
相當于:網絡號+主機號(子網號+主機號)
主機號不能全部是0或全部是1.
2.1舉例1:
某公司網絡的地址快是 220.17.192.0/20,該網絡被劃分為()個C類子網,不屬于該公司的子網絡是()
D.220.17.213.0
220.12.192.0/20,首先它為C類網,C類網絡號為 192-223,220在此范圍內。20位表示子網掩碼為20位,正常C類應該有24位子網,少了4位,左右被劃分成16個子網,范圍:220.12.192.0~220.12.207。(C類每個子網256給主機號)
主機號:20bit網絡號+(4bit子網號+8bit主機號)
2.2 舉例2:
A類網絡是很大的網絡,每個A類網絡中可以有()個網絡地址。實際使用中必須把A類網絡劃分為子網,如果指定的子網掩碼為255.255.192.0,則該網絡被劃分為()個子網。
空1:2^24
空2:1024
A類網絡的地址掩碼是8bit,剩余24bit可表示主機地址,所以主機地址數為2^24個。如果A類網絡指定的子網掩碼為255.255.192.0,則其二進制表示為11111111 11111111 11000000 00000000,實際把A類網絡劃分為2的10次方個子網即1024
3、軟件能力成熟度模型(Capabilitymaturity model,CMM)
CMM模型分為五級:初始級(1級)、可重復級(2級)、定義級(3級)、管理級(4級)、優化級(5級)共5個成熟度等級,低級別是實現高級別的基礎。
CMM/CMMI將軟件過程的成熟度分為5個等級,以下是5個等級的基本特征:
(1)初始級(initial)。工作無序,項目進行過程中常放棄當初的計劃。管理無章法,缺乏健全的管理制度。開發項目成效不穩定,項目成功主要依靠項目負責人的經驗和能力,他一但離去,工作秩序面目全非。
(2)可重復級(Repeatable)。管理制度化,建立了基本的管理制度和規程,管理工作有章可循。 初步實現標準化,開發工作比較好地按標準實施。 變更依法進行,做到基線化,穩定可跟蹤,新項目的計劃和管理基于過去的實踐經驗,具有重復以前成功項目的環境和條件。
(3)已定義級(Defined)。開發過程,包括技術工作和管理工作,均已實現標準化、文檔化。建立了完善的培訓制度和專家評審制度,全部技術活動和管理活動均可控制,對項目進行中的過程、崗位和職責均有共同的理解 。
(4)已管理級(Managed)。產品和過程已建立了定量的質量目標。開發活動中的生產率和質量是可量度的。已建立過程數據庫。已實現項目產品和過程的控制。可預測過程和產品質量趨勢,如預測偏差,實現及時糾正。
(5)優化級(Optimizing)。可集中精力改進過程,采用新技術、新方法。擁有防止出現缺陷、識別薄弱環節以及加以改進的手段。可取得過程有效性的統計數據,并可據進行分析,從而得出最佳方法。
4、虛擬設備技術
所謂虛擬設備技術,是在一類物理設備上模擬另一個物理設備技術,是將獨占設備轉換為共享設備的技術。
用來代替獨占型設備的那部分外存空間稱為虛擬設備。
對虛擬設備采用虛擬設備。當某進程需要與獨占設備交換信息時,系統就將與該獨占設備所對應的那部分磁盤的一部分存儲空間分配給它。
5、不可重入函數
C語言中大部分函庫函數都是線程安全的,但是也有幾個常用函數是線程不安全的,也叫不可重入函數。之所線程不安全,是因為這些系統函數使用了某些全局或者靜態變量。
6、病毒
木馬:通常是病毒攜帶的一個附屬程序,奪取計算機控制權。
蠕蟲:有些采用電子郵件附件的方式發送,有些利用計算機系統漏洞進行攻擊。破壞文件、造成數據丟失使系統無法正常運行,目前危害最大。
蠕蟲:紅色代碼、愛蟲病毒、熊貓燒香、Nimda病毒、愛麗絲病毒、羅密歐與朱麗葉、惡鷹、尼姆達、沖擊波、歡樂時光等
木馬軟件:冰河、特洛伊木馬、X臥底、QQ消息尾巴木馬
7、進制
二進制 十六進制 十進制 K 0000 0000 0000 1000 0000 0x80 128 0000 0000 0000 1111 1111 0XFF 255 0000 0000 0001 0000 0000 0x100 256 0000 0000 0010 0000 0000 0x200 512 0000 0000 0100 0000 0000 0x400 1024 1 0000 0000 1000 0000 0000 0x800 2048 2 0000 0001 0000 0000 0000 0x1000 4096 4 0000 0010 0000 0000 0000 0x2000 8192 8 0000 0100 0000 0000 0000 0x4000 16384 16 0000 1000 0000 0000 0000 0x8000 32768 32 0001 0000 0000 0000 0000 0x10000 65536 648、常見的Dos攻擊
實現Dos攻擊,常見的方式有:TCP SYN泛洪(SYN Flood),ping泛洪(ping-Flood),UDP泛洪(UDP-Flood),分片炸彈(fragmentation bombs),緩沖區溢出(buffer overflow)和ICMP路由重定向炸彈(ICMP routeing redirect bomb)。
9、加密
ECC、DSA、RSA屬于公開密鑰加密算法
DES是典型的私鑰加密體制。
10、知識產權
著作權人對作品享有權利:
發表權:即決定作品是否公之于眾的權利
署名權:即表明作者身份,在作品上署名的權利。
修改權:即修改或者授權他人修改作品的權利。
保護作品完整權:即保護作品不受歪曲、篡改的權利。
使用權、使用許可權和獲取報酬權
轉讓權:即以復制、表演、播放、展覽、發行、攝制電影、電視、錄像或者改編、翻譯、注釋、編輯等方式使用作品的權利;以及許可他人以上述方式使用作品,并由此獲得報酬的權利。
著作權保護期限
著作權屬于公民。
署名權、修改權、保護作品完整權的保護期沒有任何限制,永遠屬于保護范圍。而發表權、使用權和獲得報酬權的保護期為作者終生及其死亡后的50年(第50年的12月31日)。作者死亡后,著作權依照繼承法進行轉移。
著作權屬于單位。發表權、使用權和獲得報酬權的保護期為50年(首次發表后的第50年的,若50年內未發表的,不予保護。但單位變更、終止后,其著作權由承受其權利義務的單位享有。
11、結構化分析方法
結構化分析方法(SA)是一種面向數據流的軟件分析方法,適用于開發數據處理型軟件的需求分析。結構化分析方法適用的工具主要有數據流圖(DFD)、數據字典(DD)、結構化語言、判定表和判定樹。其中,數據流圖以圖形的方式表達數據處理系統中信息的交換和傳遞過程。與數據流圖配合適用的是數據字典,它對數據流圖重出現的所有圖形元素給出邏輯定義。有了數據字典,數據流圖重的數據流、加工和文件得到確切的解釋。
12、IEEE1394
IEEE1394是一種外部串行總線標準,IEEE1394接口是由APPLE和TI公司開始的高速串行接口標準。IEEE1394的通信協議中定義了三個協議層,分別是事務層、鏈路層和物理層,用于在請求者和響應者之間的數據傳輸過程中完成相關服務。IEEE1394規范僅支持64位固定解址模式。
13、浮點數
在IEEE754標準中,一個規格化的32位浮點數x的真值表示為
x = (-1) ^s X(1.M)X 2^(E-127)
e = E - 127
其中尾數域所表示的值是1.M。由于規格化的浮點數的尾數域最左位(最高有效位)總是1,故這一位經常不予存儲,而認為隱藏在小數點的左邊。于是用23位字段可以存儲24位有效數。
64位的浮點數中符號位1位,階碼域11位,尾數域52位,植樹偏移值是1023.因此規格化的64位浮點數x的真值為
x = (-1)s X(1.M)X 2^(E-1023)
e = E - 1023
例題
解:將16進制數展開后,可得二進制數格式為
指數e=階碼-127=10000010-01111111=00000011=(3)10
包括隱藏位1的尾數1.M=1.011 0110 0000 0000 0000 0000=1.011011
于是有
x=(-1)^S X 1.M X 2^e=+(1.011011) X 2^3 = +1011.011=(11.375)10
解:首先分別將整數和小數部分轉換成二進制數:
20.59375 = 10100.10011
然后移動小數點,使其在第1、2位之間
10100.10011 = 1.010010011 X 2^4 e = 4
于是得到
S = 0, E = 4 + 127 = 131, M = 010010011
最后得到32位浮點數的二進制存儲格式為
0100 0001 1010 0100 1100 0000 0000 0000 = (41A4C000)16
14、計數器
環形計數器
規則:環形計算器的規則是利用一個移位寄存器右移實現,N位的環形計數器能計數的個數為N;
扭環計數器
約翰遜計數器的長度N=2n,因為移位寄存器串行輸入端的信號是從反向端 ~Q取得的。經過n個時鐘后,計數器的狀態與初始狀態剛好相反,必須再經過n個時鐘后才能回到扭環原態。
15、原碼、反碼、補碼
補碼的作用;減法運算可作加法運算。
在計算機中,所有的數值都以補碼形式存儲。
1. 原碼
原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其余位表示值. 比如如果是8位二進制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
第一位是符號位. 因為第一位是符號位, 所以8位二進制數的取值范圍就是:
[1111 1111 , 0111 1111]==>[-127 , 127]
2. 反碼
反碼的表示方法是:
正數的反碼是其本身
負數的反碼是在其原碼的基礎上, 符號位不變,其余各個位取反.
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
3. 補碼
補碼的表示方法是:
正數的補碼就是其本身
負數的補碼是在其原碼的基礎上, 符號位不變, 其余各位取反, 最后+1. (即在反碼的基礎上+1)
當進行9-6運算時,可當做9+(-6)
若用原碼進行計算:
0000 1001
+1000 0110
=1000 1111
其結果是15,顯然,這是不對的。
若用補碼進行計算:
0000 1001
+1111 1010
=0000 0011(進位被舍棄)
4、舉例
已知5位二進制整數的機器碼是:11111
源碼位:11111 -15
反碼位:10000 -0
補碼為:10001 -1
16、CMM等級模型
初始級——軟件過程的特點是雜亂無章,有時甚至很混亂,幾乎沒有明確定義XX步驟,成功完全依賴個人努力和英雄式的核心任務。
可重復級——建立了基本的項目管理過程來跟蹤成本、進度和機能,有必要的過程準則來重復以往在同類項目中在成功。
已定義級——管理和工程的軟件過程已經文檔化、標準化,并綜合成整個軟件開發組織的標準軟件過程。所有項目都采用根據實際情況修改后得到的標準軟件過程來開展和維護軟件。
已管理級——制定了軟件工程和產品質量的詳細度量標準。軟件過程和產品的質量都被開發組織的成員所理解和控制。
優化級——加強了定量分析,通過來自過程質量反饋和來自新觀念、新技術的反饋過程能持續不斷地改進。
17、解釋程序
解釋程序是一種語言處理程序,在詞法、語法和語義分析方面與編譯程序的工作原理基本相同,但在運行用戶程序時,它直接執行源程序或源程序的內部形式(中間代碼)。因此,解釋程序并不產生目標程序,這是它和編譯程序的主要區別。
解釋程序它逐條地取出源程序中的語句,邊解釋,邊執行。編譯的話就是只要編譯一次,下次再執行就不用再解釋了。
18、#define f(a, b) a##b
#define Conn(x,y) x##y
#define ToChar(x) #@x
#define ToString(x) #x
x##y表示什么?表示x連接y,舉例說:
int n = Conn(123,456); 結果就是n=123456;
char* str = Conn(“asdf”, “adf”)結果就是 str = “asdfadf”;
怎么樣,很神奇吧
再來看#@x,其實就是給x加上單引號,結果返回是一個const char。舉例說:
char a = ToChar(1);結果就是a=‘1’;
做個越界試驗char a = ToChar(123);結果是a=‘3’;
但是如果你的參數超過四個字符,編譯器就給給你報錯了!error C2015: too many characters in constant :P
最后看看#x,估計你也明白了,他是給x加雙引號
char* str = ToString(123132);就成了str=“123132”;
19 四大網絡攻擊常見手段及防護
1、DoS攻擊
它通過協議方式,或抓住系統漏洞,集中對目標進行網絡攻擊,直到對方網絡癱瘓,大家常聽說的洪水攻擊,瘋狂Ping攻擊都屬于此類。
擴展訪問列表是防止DoS攻擊的有效工具
2、ARP攻擊
ARP:地址解析協議
網絡提示連接出現故障,IP沖突,無法打開網頁,頻繁彈出錯誤對話框。
一般我們采取安裝防火墻來查找攻擊元兇。
ARP欺騙是通過偽造IP地址和MAC翻譯錯誤造成計算機內的身份識別沖突,它和DOS一樣,目前沒有特別系統的解決方案,但有一些值得探討的技術技巧。
3、腳本攻擊
大家都聽過SQL注入攻擊吧,所謂SQL注入就是利用現有應用程序,將(惡意)的SQL命令注入到后臺數據庫引擎執行的能力,這種攻擊腳本最直接,也最簡單,當然,腳本攻擊更多的是建立在對方漏洞的基礎上,它比DOS和ARP攻擊的門檻更高。
4、嗅探掃描
程序–偷偷查看通過Internet的數據包,以捕獲口令或全部內容。通過安裝偵聽器程序來監視網絡數據流,從而獲取連接網絡系統時用戶鍵入的用戶名和口令。
20、商標權
商標權是指注冊商標專用權,只有依法進行商標注冊后,商標注冊人才能取得商標權。**商標權不包括商標設計人的權利,主要注重商標又有人的權利。**商標設計人的發表權、署名權等人身權在商標的使用中沒有反映,所有不受商標權法的保護,商標設計人可以通過其他法律來保護屬于自己的權利。如:可以將商標設計圖案作為美術作品通過著作權法來保護;與產品外觀關系密切的商標圖案可以通過申請外觀設計專利通過專利法保護。軟件商標制作人、軟件商標使用人均未涉及軟件注冊商標,所有均不能成為軟件商標的權利人。
21、軟件生存周期模型
瀑布模型:將軟件生存周期各個活動規定為依線性順序連接的若干階段的模型,適用于軟件需求很明確的軟件項目。
V模型:瀑布模型的一種演變模型,將測試和分析與設計關聯進行,加強分析與設計的驗證。
演化模型:是一種全局的軟件(或產品)生存周期模型。屬于迭代開發風范。
螺旋模型:將瀑布模型和快速原型模型結合起來,強調了其他模型所忽視的風險分析,特別適合于大型復雜的系統。
噴泉模型:是一種以用戶需求為動力,以對象為驅動的模型,主要用于采用對象技術的軟件開發項目。該模型的各個階段沒有明顯的界限,開發人員可以同步進行開發。其優點是可以提高軟件項目開發效率,節省開發時間,適應于面向對象的軟件開發過程。
22、匯編語言
CPU的構成:CPU主要由運算器、控制器、寄存器組和內部總線構成。
運算器:由算術邏輯單元ALU、通用寄存器、數據暫存器等組成。程序狀態字寄存器接受從控制器送來的命令并執行相應的動作,主要負責對數據的加工和處理。
算術邏輯單元ALU:用于進行各種算術邏輯運算(如與、或、非等)、算術運算(如加減乘除等)
通用寄存器:用來存放操作數、中間結果和各種地址信息的一系列存儲單元。常見的通用寄存器如下:
a) 數據寄存器:
AX,累加寄存器,算數運算的主要寄存器;
BX,基址寄存器;
CX,計數寄存器,串操作、循環控制的計數器;
DX,數據寄存器。
b) 地址指針寄存器:
SI:源變址寄存器;
DI:目的變址寄存器;
SP:堆棧寄存器;
BP:基址指針寄存器
c) 累加寄存器:AC,又稱為累加寄存器。當運算器的邏輯單元執行算術運算或者邏輯運算的時候,為ALU提供一個工作區。
3.數據暫存器:用來暫存從主存儲器讀出的數據,這個數據不能存放在通用寄存器中,否則會破壞其原有數據。
4.程序狀態字寄存器:用于保留與算術邏輯運算指令或測試指令的結果對應的各種狀態信息。
控制器:由程序計數器PC、指令寄存器IR、地址寄存器AR、數據寄存器DR、指令譯碼器等。
1. 程序計數器 (PC):用于指出下條指令在主存中的存放地址,CPU根據PC的內容去主存處取得指令,由于程序中的指令是按照順序執行的,所以PC必須有自動增加的功能, 也就是指向下一條指令的地址。
2. 指令寄存器 (IR):用于保存當前正在執行的這條指令的代碼,所以指令寄存器的位數取決于指令字長。
3. 地址寄存器 (AR):用于存放CPU當前訪問的內存單元地址。
4. 數據寄存器DR:用于暫存從內存儲器中讀出或寫入的指令或數據。
5. 指令譯碼器:用于對獲取的指令進行譯碼,產生該指令操作所需要的一些列微操作信號,以控制計算機各部件完成該指令。
標志位
CF:是否有進位或者借位。(Crarry)
ZF:0標記為
OF:溢出標志位
SF:符號位
AF:輔助進位標志位
PF:奇偶標志位。
程序計數器PC:存放指令地址的寄存器。
指令寄存器IR:存放正在執行的指令
狀態字寄存器PSW:存放執行完成后產生的條件碼。
23、IEEE1394
1、串行接口
2、64位尋址空間
3、定義了三個協議層:事務層、鏈路層、物理層
4、不分主從設備,都是主導者和服務者
24、軟件許可
獨占許可使用:實施獨占許可后,軟件著作人不得將軟件授權給第三方,軟件著作人也不能使用該軟件。
獨家許可使用:軟件著作人不得將軟件授權給第三方,軟件著作人能使用該軟件。
普通許可使用:軟件著作人可以將軟件授權給第三方,軟件著作人能使用該軟件。
25、位圖、矢量圖
矢量圖:使用計算機指令來描述和記錄一幅圖的內容,通過指令描述構成一幅圖的所有直線、曲線、圓、圓弧等。在屏幕上顯示一副圖形時,需要通過解釋指令,然后將描圖圖像圖像的指令轉換成屏幕上顯示的形狀和顏色。適用于生成于機械制圖、電路圖的AutoCAD軟件等。對矢量圖進行移動、縮放、疊加、扭轉等不會破壞圖像的畫面。顯示速度慢。
位圖:用像素點來描述的圖。圖像適用于表現比較細膩、層次較多,色彩豐富,包含大量細節。但占用存儲空間打。縮放易失真。顯示速度快。
26、Jackson
Jackson方法是一種面向數據結構的開發方法。
Booch、Coad、OMT方法是面向對象開發方法。
27、單總線、雙總線
單總線:
計算機的各個部件均由系統總線相連,在單總線結構中,CPU與主存之間、CPU與I/O設備之間、I/O設備與主存之間、各種設備之間都通過系統總線交換信息。單總線結構的優點是控制簡單方便,擴充方便。但由于所有設備部件均掛在單一總線上,使這種結構只能分時工作,即同一時刻只能在兩個設備之間傳送數據,這就使系統總體數據傳輸的效率和速度受到限制,這是單總線結構 的主要缺點。單總線結構圖如下所示:
單總線的典型代表(ARM架構的CPU)
雙總線:
雙總線結構又分為面向CPU的雙總線結構和面向存儲器的雙總線結構。
面向CPU的雙總線結構如下圖所示。其中一組總線是CPU與主存儲器之間進行信息交換的公共通路,稱為存儲總線。另一組是CPU與I/O設備之間進行信息交換的公共通路,稱為輸入/輸出總線(I/O總線)。外部設備通過連接在I/O總線上的接口電路與CPU交換信息。
多總線的典型代表(X86架構的CPU)。
28、片內總線和片外總線
片內總線是CPU內部的寄存器、算術邏輯部件、控制部件以及總線接口部件之間的公共信息通道。 片外總線則泛指CPU與外部器件之間的公共信息通道。常見的系統總線有ISA、PCI、PCI-E等。
外設的接口標準。目前在微型計算機上流行的接口標準有:IDE(EIDE/ATA,SATA)、SCSI、USB和IEEE 1394四種。前兩種主要用于連接硬盤、光驅等外部存儲設備,后面兩種可以用來連接多種外部設備。
對于掛接在總線上的多個部件,只能分時向總線發送數據,但可同時從總線接收數據。
常見的串行總線有:RS232、I2C、IEEE1394、USB等
常見的并行總線有:ISA、PCI、VME等
29、指令流于數據流的關系
30、私鑰、公鑰
A->B
1、A用它的私鑰對文件加密,從而對文件簽名
2、A將簽名文件發送給B
3、B用A的公鑰解密,從而驗證簽名
公鑰體系中,私鑰用于解密和簽名;公鑰用于加密和認證。
A向B發送消息P:
1、A用自己私鑰對P簽名,然后用B的公鑰對簽名后的數據加密。
2、B收到消息后,先用B的私鑰解密;然后再用A的公鑰認證A的簽名及消息的真偽。
舉例1:
用戶B收到A帶數字簽名的消息M,未來驗證M的真實性,首先需要從CA獲取用戶A的數字認證,并利用(CA的公鑰)驗證證書的真偽,然后利用(A的公鑰)驗證M的真實性。
31、RS-232、RS-422與RS-485比較
RS485:2線式、半雙工、點對多主從通訊(4線制因只能點對點已經淘汰) RS232:3線制、全雙工、點對點通訊(因點對點通訊方式而無法聯網,導致出現RS485) RS422:4線制、全雙工、點對多主從通訊(實際上還有一根信號地線,共5根線)
RS-232只允許一對一通信(單站能力)
RS-485接口在總線上是允許連接多達128個收發器(具有多站能力)
32、語句覆蓋、條件覆蓋(分支覆蓋)、判定覆蓋、條件-判定覆蓋、組合覆蓋、路徑覆蓋 的區別
一、語句覆蓋(Statement Coverage)
語句覆蓋,顧名思義就是針對代碼語句的嘛。它的含義是我們設計出來的測試用例要保證程序中的每一個語句至少被執行一次。通常語句覆蓋被認為是“最弱的覆蓋”,原因是它僅僅考慮對代碼中的執行語句進行覆蓋而沒有考慮各種條件和分支,因此在實際運用中語句覆蓋很難發現代碼中的問題。舉個非常簡單的例子:
public int foo(int a,int b)
{undefined
return a/b;
}
這是一個求兩數之商的函數。如果我們設計如下的測試用例:
TestCase: a = 2, b = 1
這時候我們會發現,該函數的代碼覆蓋率達到了100%,并且設計的case可以順利通過測試。但是顯然該函數有一個很明顯的bug:當 b=0 時,會拋出異常。
二、判定覆蓋(Decision Coverage)
判定覆蓋也被成為分支覆蓋(Branch Coverage),也就是說設計的測試用例要保證讓被測試程序中的每一個分支都至少執行一次。舉個例子,有如下流程圖:
針對該圖我們想要做到判定覆蓋,可以設計如下case:
TestCase1: a=1, b=1 (路徑:ab)
TestCase2: a=-1, b=-1 (路徑:acd)
TestCase3: a=2, b=-1 (路徑:ace)
判定覆蓋比語句覆蓋強一些,能發現一些語句覆蓋無法發現的問題。但是往往一些判定條件都是由多個邏輯條件組合而成的,進行分支判斷時相當于對整個組合的最終結果進行判斷,這樣就會忽略每個條件的取值情況,導致遺漏部分測試路徑。
三、條件覆蓋(Condition Coverage)
條件覆蓋于分支覆蓋不同,條件覆蓋要求所設計的測試用例能使每個判定中的每一個條件都獲得可能的取值,即每個條件至少有一次真值、有一次假值。
仍然以上面流程圖作為例子來說明。上圖中涉及到的條件一共有4個:
a>0, a<0, b>0, b<0
為了達到條件覆蓋的目的,我們設計的用例需要在 a 點有:
a>0, a≤0, b>0, b≤0,
這些情況出現,并且在 c 點有:
a<0, a≥0, b<0, b≥0
這些情況出現。現在可以設計如下用例:
TestCase1: a=1, b=1 (路徑:ab)
TestCase1: a=-1, b=-1 (路徑:acd)
TestCase1: a=-1, b=0 (路徑:ace)
TestCase1: a=1, b=-1 (路徑:ace)
通常而言條件覆蓋比判定覆蓋強,因為條件覆蓋使得判定中的每一個條件都取到了不同的結果,這一點判定覆蓋則無法保證。但條件覆蓋也有缺陷,因為它只能保證每個條件都取到了不同結果,但沒有考慮到判定結果,因此有時候條件覆蓋并不能保證判定覆蓋。
四、判定條件覆蓋(Decision/Condition Coverage)
判定條件覆蓋,說白了就是我們設計的測試用例可以使得判斷中每個條件所有的可能取值至少執行一次(條件覆蓋),同時每個判斷本身所有的結果也要至少執行一次(判定覆蓋)。不難發現判定條件覆蓋同時滿足判定覆蓋和條件覆蓋,彌補了兩者各自的不足,但是判定條件覆蓋并未考慮條件的組合情況。
五、組合覆蓋(Branch Condition Combination Coverage)
組合覆蓋也叫做條件組合覆蓋。意思是說我們設計的測試用例應該使得每個判定中的各個條件的各種可能組合都至少出現一次。顯然,滿足條件組合覆蓋的測試用例一定是滿足判定覆蓋、條件覆蓋和判定條件覆蓋的。
針對前文提到的流程圖,做條件組合覆蓋時我們可以設計如下用例:
TestCase1: a=1, b=1 (路徑:ab)
TestCase1: a=-1, b=-1 (路徑:acd)
TestCase1: a=-1, b=0 (路徑:ace)
TestCase1: a=1, b=-1 (路徑:ace)
條件組合覆蓋能夠同時滿足判定、條件和判定條件覆蓋,覆蓋度較高,但是組合覆蓋的測試用例數量相對來說也是比較多的。
六、路徑覆蓋
路徑覆蓋,意思是說我們設計的測試用例可以覆蓋程序中所有可能的執行路徑。這種覆蓋方法可以對程序進行徹底的測試用例覆蓋,比前面講的五種方法覆蓋度都要高。那么這種方法是不是就一定最好呢?當然不能講得這么絕對,它的缺點也是顯而易見的:由于需要對所有可能的路徑全部進行覆蓋,那么我們需要設計數量非常巨大的而且較為復雜的測試用例,用例數量將呈現指數級的增長。所以理論上來講路徑覆蓋是最徹底的測試用例覆蓋,但實際上很多時候路徑覆蓋的可操作性不強。
總結
以上簡單描述了幾種不用的邏輯覆蓋方法的原則和優劣。在實際的操作中,要正確使用白盒測試的代碼覆蓋方法,就要從代碼分析和代碼調研入手,根據調研的結果,可以選擇上述方法中的某一種,或者好幾種方法的結合,設計出高效的測試用例,盡可能全面地覆蓋到代碼中的每一個邏輯路徑。
33、操作系統-文件管理
題目:設文件索引結點中又7個地址項,其中4個地址項是直接地址索引,2個地址項是一級間接地址索引,1個地址項是二級間接索引,每個地址項大小為4B,若磁盤索引塊和磁盤數據塊大小均為256B,則可表示的單個文件最大長度是()
這里先給出求解的圖解示意圖:
1.先理解直接地址索引、一級間接索引、二級間接索引
直接地址索引:直接指向一個存數據的磁盤塊
一級間接索引:指向一個內容全部是直接地址索引的磁盤塊,它所指向的這個磁盤塊中的每個直接地址索引,又指向不同的存數據的磁盤塊
二級間接索引:先指向一個包含一級間接索引的磁盤塊,每個一級間接索引再指向一個包含直接地址索引的磁盤塊,每個直接地址索引再直接指向一個存數據的磁盤塊
2.分析
每個磁盤塊大小256B,每個地址項大小為4B,因此一個磁盤塊可以存放256/4=64個地址項,因此,在一級間接索引和二級間接索引的那些中間的存放地址索引的磁盤塊,每個可以存放64個地址
單個文件的索引結點包含的地址項所指向的存放數據的磁盤,若都是存放這個文件的數據,沒有其他文件的數據跟它共享一個磁盤塊,那這些所有所指的存放數據的磁盤塊的大小就是單個文件的最大長度
4個直接地址索引,直接指向4個存放數據的磁盤塊,這部分數據大小為4256B=1024B
1個一級間接地址索引,指向一個包含64個直接地址索引的磁盤塊,每個直接地址索引又指向一個存放數據的磁盤塊,因此,一個一級間接地址索引所對應的數據大小為64256B=16384B
1個二級間接地址索引,指向一個包含64個一級間接地址的磁盤塊,每個一級間接地址又指向64個直接地址索引,因此一個二級間接地址索引一共指向6464個直接地址索引,因此一個二級間接地址索引對應的數據大小為6464256=1048576B
因此,一個文件的索引結點包含的4個直接地址索引+2個一級間接索引+1個二級間接索引所能表示的單個文件最大長度為1024B+216384B+1048576B=1082368B=1057KB
34、Cache寫機制:Write-through與Write-back
通常有三種方法:
1 write through:CPU向cache寫入數據時,同時向memory(后端存儲)也寫一份,使cache
和memory的數據保持一致。優點是簡單,缺點是每次都要訪問memory,
速度比較慢。
2 post write:CPU更新cache數據時,把更新的數據寫入到一個更新緩沖器,在合適的
時候才對memory(后端存儲)進行更新。這樣可以提高cache訪問速度,
但是,在數據連續被更新兩次以上的時候,緩沖區將不夠使用,被迫同
時更新memory(后端存儲)。
3 write back:cpu更新cache時,只是把更新的cache區標記一下,并不同步更新memory
(后端存儲)。**只是在cache區要被新進入的數據取代時,才更新
memory(后端存儲)。**這樣做的原因是考慮到很多時候cache存入的是中間結
果,沒有必要同步更新memory(后端存儲)。優點是CPU執行的效率提高,
缺點是實現起來技術比較復雜。
35、程序局部性
從程序局部性來分類,主要有兩個種類,一個是時間局部性,一個是空間局部性。
1、時間局部性
時間局部性通常運用在循環當中,一條指令一旦被執行,那么不久以后該指令可能再次被執行,被訪問過的存儲器位置也肯能會在不久之后會被再次訪問,它強調的是數據的重復訪問。
而利用時間局部性的原理緩存可以極大的提高數據重復訪問的性能。
int sum( int *array, int n){int sum = 0;for ( int i = 0; i < n; i++ ){sum += array[i];}return sum; }如上代碼中的sum變量就是存在于循環當中,這個變量在此循環中被多次訪問,因此sum就具有良好的時間局部性。
2、空間局部性
程序訪問了某一個存儲器的位置,那么不久之后,它附近的存儲單元也肯能會被訪問,空間局部性更多的是強調它附近的位置會被經常引用。
int sum( int *array, int n){int sum = 0;for ( int i = 0; i < n; i++ ){sum += array[i];}return sum; }我們知道一個數組,在內存中存放的向下圖一樣連續存放的。
因此上面的程序變量array則具有良好的空間局部性,每次訪問其中的array[ i ]的時候,array[ i+1 ]總是在它的下一個位置。步數越長,空間局部性就會越差。
36、常見存儲器件
下面在半導體存儲器大類中,按照存儲器的實現技術原理來進行詳細分類。
NOR FLASH:
內存類接口,其最大的特點是norflash里面的程序可以直接運行,不必再把代碼讀到系統的RAM中,所以norflash能夠直接用來做boot。
2440開發板是2M的norflash,有自己的地址線和數據線,能夠采用類似于memory的隨機訪問方式,但不能向內存直接寫,需單獨設置操作。
傳輸速度高、寫入和擦除速度低,擦除前需要置零,讀取比nand快,適合做代碼存儲并片上執行,
norflash的讀取速度比nandflash稍快,但擦寫速度比nandflash慢非常多。
NAND FLASH
I/O類接口:存儲密度大,擦除簡單,擦除和寫入比nor快很多,但需要特殊的系統接口單元。類似電腦的硬盤,CPU從里面讀取數據的速度很慢,他里面的代碼也不能直接運行,要想運行需要把nandflash里面的數據讀到內存里面,然后CPU才能執行,但是他的集成度很高,成本很低。屬于IO設備,數據、地址、控制線都是共用的,須要軟件區控制讀取時序,所以不能像nor flash、內存一樣隨機訪問,不能EIP(片上執行)。因此不能直接作為boot。適合用來作大量數據存儲的。
37、char取值范圍是 -128~+127
singed char 的最小值計算。 在計算機中,數值是以補碼形式存儲的。正數的補碼是其本身; 而負數的補碼是 取反 (符號位保持不變),再加1。我們先來看 -1 的存儲過程:-1: 1 0 0 0 0 0 0 1 ->(取反) 1 1 1 1 1 1 1 0 ->(加1) 1 1 1 1 1 1 1 1-2: 1 0 0 0 0 0 1 0 ->(取反) 1 1 1 1 1 1 0 1 ->(加1) 1 1 1 1 1 1 1 0-3: 1 0 0 0 0 0 1 1 ->(取反) 1 1 1 1 1 1 0 0 ->(加1) 1 1 1 1 1 1 0 1… …-127 1 1 1 1 1 1 1 1 ->(取反) 1 0 0 0 0 0 0 0 ->(加1) 1 0 0 0 0 0 0 1-128 1 0 0 0 0 0 0 0 ->(取反) 1 1 1 1 1 1 1 1 ->(加1) 1 0 0 0 0 0 0 0不管是原碼還是補碼, 總會出現 -0 這個值。 本來 +0 與 -0 是沒有區別的。 但對于存儲器和編譯器來講,總得充分利用每個字節吧, 更不想出現二義性。 所以,將 -0 表示為 -128 , 這樣既增大了signed char 數值的表示范圍,又消除了 -0 的二義性。
所以signed char的取值范圍是 -128~127。
38、BIT檢測和定位
上電BIT:是在系統上電時對所有硬件資源進行自檢測的程序,擁有100%CPU控制權,可對系統中所有硬件進行完整測試。
周期BIT:在系統空閑時間,周期性對硬件進行檢測,由于系統處于正常運行狀態,測試程序必須采取非破壞測試算法,對部分可測部件進行測試。
維護BIT:在地面維護狀態下,對系統硬件的部分或全部進行維護性測試,測試軟件擁有100%的CPU控制權,可以對系統中的所有硬件進行完整的測試。
39、算法復雜度
時間復雜:算法執行過程中在所需要的基本運算次數,與模塊n(規模)相關,隨著n的增大,算法執行的時間的增長率和f(n)的增長率成正比。
時間復雜度并不是執行算法程序所需要的時間值,也與算法程序的長度無必然聯系。
空間復雜度:指執行這個算法所需要的內存空間。
40、立即尋址,直接尋址,間接尋址
1、立即尋址
立即尋址:指令當中自帶數據,直接讀取,最快;
操作數就包含在指令中。作為指令的一部分,跟在操作碼后存放在代碼段。
這種操作數成為立即數。立即數可以是8位的,也可以是16位的。
例如:
指令: MOV AX,1234H
則: AX = 1234H
2、直接尋址
直接尋址:指令中存放的是地址,直接解析這個地址;
操作數在寄存器中,指令直接包含有操作數的有效地址(偏移地址)
注:操作數一般存放在數據段
所以操作數的地址由DS加上指令中直接給出的16位偏移得到。如果采用
段超越前綴,則操作數也可含在數據段外的其他段中。
例如:
MOV AX,[8054]
如(DS) = 2000H,
則執行結果為(AX) = 3050H
(物理地址=20000+8054=28054H)
28054H里的內容為3050H
3、間接尋址
間接尋址就只指令中存放的是地址的地址,或者是存放地址的寄存器,最慢。
41、飽和度
飽和度是指顏色的純度,即顏色的深淺,或者說摻入白光的程度,對于同一色調的彩色光,飽和度越深顏色越純。
42、軟件開發方法
若用戶需求不清晰且經常發生變化,但系統規模不太大且不太復雜,則適合采用(原型法)開發方法。對于數據處理領域的問題,若系統規模不太大且不太復雜,需求變化也不大,則最合適采用(結構化)開發方法。
43、單緩存、雙緩存時間計算
假設磁盤塊與緩沖區大小相同,把每個磁盤塊讀入緩沖區記為T,磁盤塊送入用戶區記為M,系統對每個磁盤塊數據的處理記為C。
1、單緩存
如上圖所示如果有三個磁盤塊總時長為:T+M+Max(C,T)+M+Max(C,T)+M+C = (3-1)(Max(C,T)+M)+M+T+C = 3(Max(C,T)+M)+Min(C,T) 當有N個數據塊時,總耗時為(Max(C,T)+M)*N+Min(C,T)
即:N*(M+Max(T,C))+Min(T,C)
2、雙緩存
T > (M+C):
T < (M+C):
當有N個數據塊時雙緩沖區的總耗時為Max(T,M+C)*N+Min(T,M+C)
即:N * Max(T,M+C)+Min(T,M+C)
舉例:
單個磁盤讀入緩沖區為15us,緩沖區送至用戶區5us,用戶區內系統處理時間為1us。若用戶需要將10個磁盤塊的文件,從讀入到用戶區,到處理,那么采用單緩存為()uS,采用雙緩存需要()uS.
T=15uS
M=5uS
C=1uS
采用單緩存:
10*(Max(15,1)+5)+Min(15,1)=10*(15+5)+1=201uS
采用雙緩存:
10Max(15,6)+Min(15,6)=1015+6=156
44、同步通訊、異步通訊
一、同步通信和異步通信
串行通信可以分為兩種類型,一種叫同步通信,另一種叫異步通信。
同步通信方式(比如SPI),是把許多字符組成一個信息組,這樣,字符可以一個接一個地傳輸,但是,在每組信息(通常稱為信息幀)的開始要加上同步字符,在沒有信息要傳輸時,要填上空字符,因為同步傳輸不允許有間隙。同步方式下,發送方除了發送數據,還要傳輸同步時鐘信號,信息傳輸的雙方用同一個時鐘信號確定傳輸過程中每1位的位置。見下圖所示:
在異步通信方式(比如RS232)中,兩個數據字符之間的傳輸間隔是任意的,所以,每個數據字符的前后都要用一些位來作為分隔位。從下圖中可以看到,按標準的異步通信數據格式(叫做異步通信幀格式),1個字符在傳輸時,除了傳輸實際數據字符信息外,還要傳輸幾個外加位。具體說,在1個字符開始傳輸前,輸出線必須在邏輯上處于“1”狀態,這稱為標識態。傳輸一開始,輸出線由標識態變為“0”狀態,從而作為起始位。起始位后面為5~8個信息位,信息位由低往高排列,即先傳字符的低位,后傳字符的高位。信息位后面為校驗位,校驗位可以按奇校驗設置,也可以按偶校驗設置,或不設校驗位。最后是邏輯的“1”作為停止位,停止位可為1位、1.5位或者2位。如果傳輸完1個字符以后,立即傳輸下一個字符,那么,后一個字符的起始位便緊挨著前一個字符的停止位了,否則,輸出線又會進入標識態。在異步通信方式中,發送和接收的雙方必須約定相同的幀格式,否則會造成傳輸錯誤。在異步通信方式中,發送方只發送數據幀,不傳輸時鐘,發送和接收雙方必須約定相同的傳輸率。當然雙方實際工作速率不可能絕對相等,但是只要誤差不超過一定的限度,就不會造成傳輸出錯。下圖是異步通信時的標準數據格式:
比較起來,在傳輸率相同時,同步通信方式下的信息有效率要比異步方式下的高,因為同步方式下的非數據信息比例比較小。
45、Cache 和主存 的三種映射方法
主存與cache的地址映射方式有全相聯方式、直接方式和組相聯方式三種。
直接映射(directmapping)
將一個主存塊存儲到唯一的一個Cache行。
全相聯映射(fullyassociative mapping)
可以將一個主存塊存儲到任意一個Cache行。
組相聯映射(setassociative mapping)
可以將一個主存塊存儲到唯一的一個Cache組中任意一個行。
1、直接映射
多對一的映射關系,但一個主存塊只能拷貝到cache的一個特定行位置上去。
cache的行號i和主存的塊號j有如下函數關系:i=j mod m (m為cache中的總行數)
優點:硬件簡單,容易實現
缺點:命中率低, Cache的存儲空間利用率低
2、全相聯映射
主存的一個塊直接拷貝到cache中的任意一行上
優點:命中率較高,Cache的存儲空間利用率高
缺點:線路復雜,成本高,速度低
3、組相聯映射
將cache分成u組,每組v行,主存塊存放到哪個組是固定的,至于存到該組哪一行是靈活的,即有如下函數關系:cache總行數m=u×v 組號q=j mod u
組間采用直接映射,組內為全相聯
硬件較簡單,速度較快,命中率較高
46、加密技術
對稱加密技術:對數據的加密和解密的密碼是相同的。
常見的有:DES、3DES、AES、RC-5、IDEA
非對稱加密技術:加密和解密的密碼是不同的。
常見有:RSA、ECC(橢圓曲線算法)、Rabin、D-H
RSA:基于大數定律,通常用于對消息摘要進行簽名。
IDEA、RC4適于數據傳輸加密。
MD5:為摘要算法
信息摘要
信息摘要:一段數據的特征信息。當數據改變時,信息摘要也會改變。特點是無論數據多長,都會產生固定長度的信息摘要。
摘要算法:MD5(產生128位的輸出)、SHA-1
47、敏捷過程的典型方法
極限編程(XP):激發開發人員創造性、使管理負擔最小的一組技術;
水晶法(Crystal):每個不同的項目都需要一套不同的策略、約定和方法論;
并列爭球法(Scrum):使用迭代的方法,其中把每30天一次的迭代成為一個沖刺,并按需求的優先級來實現產品。
48、PV操作
V: vrijgeven 釋放 S=S+1
P: passerent 通過 S=S-1
49、各種常用的默認端口號
21端口:FTP 文件傳輸服務
22端口:SSH 遠程連接服務
23端口:TELNET 終端仿真服務
25端口:SMTP 簡單郵件傳輸服務
53端口:DNS 域名解析服務
80端口:HTTP 超文本傳輸服務
443端口:HTTPS 加密的超文本傳輸服務
3306端口:MYSQL數據庫端口
5432端口:PostgreSQL數據庫端口
6379端口:Redis數據庫端口
8080端口:TCP服務端默認端口
8888端口:Nginx服務器的端口
9200端口:Elasticsearch服務器端口
27017端口:mongoDB數據庫默認端口
22122端口:fastdfs服務器默認端口
49、常見串、并行總線
串行總線:I2C、SPI、RS232、UART、USB、CAN;IEEE1394、SATA、PCIE、RapidIO
并行總線:PCI、STD、PC總線、IEEE488總線、ISA、VME
總結
- 上一篇: 在java中柱状图代码_我在java中编
- 下一篇: docker mysql 操作_[Doc