操作系统与虚拟化安全第一次作业-关键习题
《操作系統(tǒng)與虛擬化安全》
第一次作業(yè)(預(yù)備知識(shí))本次作業(yè)要求:
1.? 這是個(gè)人作業(yè),每位同學(xué)獨(dú)立完成和提交。
2.? 提交時(shí)間10月13日24點(diǎn)。
3.? 如果遇到問(wèn)題,請(qǐng)聯(lián)系助教。
?一、操作系統(tǒng)設(shè)計(jì)技術(shù)
1.? 操作系統(tǒng)的主要任務(wù)是什么?
管理好計(jì)算機(jī)全部軟硬件資源,提高計(jì)算機(jī)的利用率;擔(dān)任用戶與計(jì)算機(jī)之間的接口,使用戶通過(guò)操作系統(tǒng)提供的命令或菜單方便地使用計(jì)算機(jī)
2.? 操作系統(tǒng)文件的內(nèi)部表示有文件索引節(jié)點(diǎn)表、文件表、用戶文件描述符表,請(qǐng)你描述一下這三者之間的關(guān)系如何?并舉例說(shuō)明。
每個(gè)文件都有一個(gè)索引節(jié)點(diǎn),索引節(jié)點(diǎn)包括文件所有者、存取權(quán)限、及其存取時(shí)間等信息;文件表示一個(gè)全局表,每個(gè)活動(dòng)的open,它都包含一個(gè)條目,每個(gè)文件系統(tǒng)表的條目都包含文件偏移量、訪問(wèn)模式以及指向它的文件描述表的條目計(jì)數(shù)。每個(gè)進(jìn)程包含一個(gè)用戶文件描述表,標(biāo)志進(jìn)程打開(kāi)文件的文件。
如在Linux中,每個(gè)文件在內(nèi)核中用索引節(jié)點(diǎn)表示,已打開(kāi)的文件在內(nèi)核中用file結(jié)構(gòu)體表示,文件描述符表中的指針指向file結(jié)構(gòu)體,每個(gè)進(jìn)程用一個(gè)files_struct結(jié)構(gòu)體記錄文件描述符的使用情況,files_struct結(jié)構(gòu)成為用戶打開(kāi)文件表。
3.? 操作系統(tǒng)進(jìn)程的數(shù)據(jù)結(jié)構(gòu)的主要組成部分包括哪幾部分?并請(qǐng)你重點(diǎn)解釋一下進(jìn)程標(biāo)識(shí)、進(jìn)程樹(shù)關(guān)系、進(jìn)程間通信機(jī)制等三個(gè)部分。
(1)共包括八部分:1.標(biāo)識(shí)號(hào)2.狀態(tài)信息3.調(diào)度信息4.有關(guān)進(jìn)程間通信信息5.進(jìn)程鏈接信息6.時(shí)間定時(shí)器7.文件系統(tǒng)信息8. 進(jìn)程和相關(guān)的上下文信息
(2)進(jìn)程標(biāo)識(shí):系統(tǒng)通過(guò)進(jìn)程標(biāo)識(shí)號(hào)(PID)唯一標(biāo)識(shí)一個(gè)進(jìn)程,進(jìn)程標(biāo)識(shí)號(hào)是線性增長(zhǎng)的;進(jìn)程樹(shù)關(guān)系:0進(jìn)程是一個(gè)特殊進(jìn)程,它是在系統(tǒng)引導(dǎo)時(shí)被“手工”創(chuàng)建的,當(dāng)它創(chuàng)建一個(gè)子進(jìn)程(1進(jìn)程-init進(jìn)程,是系統(tǒng)中其他每個(gè)進(jìn)程的祖先)之后,0進(jìn)程就變成對(duì)換進(jìn)程,除了0進(jìn)程以外,每個(gè)進(jìn)程都是被另外一個(gè)進(jìn)程執(zhí)行fork創(chuàng)建的,每個(gè)進(jìn)程都有一個(gè)父進(jìn)程,但一個(gè)父進(jìn)程可有多個(gè)子進(jìn)程;進(jìn)程間通信機(jī)制:為了使進(jìn)程能在同一項(xiàng)任務(wù)上協(xié)調(diào)工作,進(jìn)程之間必須能進(jìn)行通信。如信號(hào)Signals,管道Pipes,以及內(nèi)存共享shared memory, 信號(hào)量semaphore, 消息隊(duì)列 Message Queues等。
4.? 請(qǐng)你描述一下操作系統(tǒng)I/O子系統(tǒng)中內(nèi)核與驅(qū)動(dòng)程序接口、系統(tǒng)調(diào)用與驅(qū)動(dòng)程序接口的作用是什么?
內(nèi)核與驅(qū)動(dòng)程序接口:由塊設(shè)備開(kāi)關(guān)表(block device switch table)和字符設(shè)備開(kāi)關(guān)表(characterdevice switch table)描述。每一種設(shè)備類型在表中有若干表項(xiàng),這些表項(xiàng)在系統(tǒng)調(diào)用時(shí)引導(dǎo)內(nèi)核轉(zhuǎn)向適當(dāng)?shù)脑O(shè)備驅(qū)動(dòng)程序接口。
系統(tǒng)調(diào)用與驅(qū)動(dòng)程序接口:對(duì)于特殊設(shè)備文件的系統(tǒng)調(diào)用,內(nèi)核通過(guò)文件描述符找到對(duì)應(yīng)的索引節(jié)點(diǎn),從索引節(jié)點(diǎn)中抽取主設(shè)備號(hào)和次設(shè)備號(hào),使用主設(shè)備號(hào)作為索引值進(jìn)入適當(dāng)?shù)拈_(kāi)關(guān)表,根據(jù)用戶的系統(tǒng)調(diào)用來(lái)調(diào)用驅(qū)動(dòng)程序中的函數(shù)。
二、虛擬化技術(shù)
1. 系統(tǒng)虛擬化體系結(jié)構(gòu)分為宿主型和獨(dú)立監(jiān)控型兩種類型,請(qǐng)你分析一下這兩種類型體系結(jié)構(gòu),并分別舉例說(shuō)明現(xiàn)有虛擬化軟件的體系結(jié)構(gòu)屬于哪種類型。
宿主型:需要運(yùn)行在HostOS 之上,由其提供驅(qū)動(dòng)程序與硬件通信;
獨(dú)立監(jiān)控型:直接運(yùn)行于硬件之上;
比如VMwareworkstation 是宿主型,需要運(yùn)行在操作系統(tǒng)之上,比如windows,
Xen是獨(dú)立監(jiān)控型,可以直接運(yùn)行在硬件上。
2. 請(qǐng)你分析一下系統(tǒng)虛擬化實(shí)現(xiàn)技術(shù)中全虛擬化、泛虛擬化和硬件輔助虛擬化技術(shù),比較一下各自優(yōu)缺點(diǎn),并分別舉例說(shuō)明現(xiàn)有虛擬化軟件實(shí)現(xiàn)技術(shù)屬于哪種類型。
(1)全虛擬化:原本的操作系統(tǒng)調(diào)直接調(diào)用硬件接口,給底層硬件發(fā)送的指令是二進(jìn)制指令,加了一層虛擬機(jī)之后,操作系統(tǒng)不能直接調(diào)用底層,但依然發(fā)送二進(jìn)制指令,這時(shí)候,虛擬機(jī)要攔截下指令,由虛擬機(jī)完成調(diào)用,所以虛擬機(jī)要轉(zhuǎn)換二進(jìn)制指令。優(yōu)點(diǎn)在于不需要修改原來(lái)的操作系統(tǒng),且操作系統(tǒng)運(yùn)行在1環(huán)上,安全性很高,缺點(diǎn)在于這種軟件攔截機(jī)制開(kāi)銷比較大。
(2)泛虛擬化:操作系統(tǒng)仍然可運(yùn)行在0環(huán)上,更改操作系統(tǒng)內(nèi)核,以前的二進(jìn)制指令變成了hypercall調(diào)用,只有特權(quán)指令需要虛擬化。優(yōu)點(diǎn)在于降低了虛擬機(jī)的難度,不需要對(duì)二進(jìn)制指令進(jìn)行轉(zhuǎn)換了。缺點(diǎn)在于:需要修改OS內(nèi)核。
(3)硬件輔助虛擬化:優(yōu)點(diǎn)在于特權(quán)指令調(diào)用之時(shí),不需要半虛擬化更改操作系統(tǒng)內(nèi)核,也不需要二進(jìn)制轉(zhuǎn)換,因?yàn)橛辛擞布闹С帧H秉c(diǎn):需要有硬件支持(如Intel VT, AMD SVM)。
VMware workstation與KVM是全虛擬化,Xen是硬件輔助虛擬化。
3. 請(qǐng)你簡(jiǎn)要描述一下Xen虛擬化系統(tǒng)中基于額度的調(diào)度算法思想。
該算法有兩個(gè)參數(shù)其中一個(gè)參數(shù)cap是指示占用多少個(gè)cpu。另一個(gè)參數(shù)是weight指示一個(gè)是cpu占多少時(shí)間。初始化時(shí):weight=credit,若cap=100則 vcpu占一個(gè)物理cpu,cap=200vcpu占兩個(gè)物理cpu,在算法中有三個(gè)隊(duì)列:OVER(已獲得),UNDER(等待),BOOST(某些虛擬機(jī)讓出了cpu,下次調(diào)度放進(jìn)boost,在調(diào)度時(shí)優(yōu)先調(diào)度),每10毫秒運(yùn)行一次后credit=credit-100+30/n,3次之后額度用完,讓出cpu,保證每個(gè)vcpu運(yùn)行時(shí)間,保證相對(duì)公平。
該算法曾經(jīng)出現(xiàn)過(guò)bug:某cpu阻塞掛起,加入boost隊(duì)列,下個(gè)周期優(yōu)先調(diào)度,周期加長(zhǎng),但是可以利用,在每次結(jié)束時(shí),主動(dòng)掛起,則可以無(wú)限期使用cpu可占80-90%的時(shí)間。現(xiàn)已經(jīng)修復(fù)。
4. 請(qǐng)你簡(jiǎn)要描述一下MMU泛虛擬化和影子頁(yè)表技術(shù),以及比較一下他們的異同處。
MMU泛虛擬化方法:VMM將映射關(guān)系 f?g 直接寫(xiě)入guest OS的頁(yè)表中,并替換原來(lái)的映射 g,這實(shí)際上違背了“f-map對(duì)于虛擬機(jī)不可見(jiàn)”的原則。
影子頁(yè)表方法:為guest OS的每個(gè)頁(yè)表維護(hù)一個(gè)影子頁(yè)表,并將合成后的映射關(guān)系 f?g 寫(xiě)入到“影子”中,guest OS的頁(yè)表內(nèi)容保持不變。最后,VMM將影子頁(yè)表交給MMU進(jìn)行地址轉(zhuǎn)換。
相同點(diǎn):都是由VMM根據(jù)映射f和g生成符合映射f?g 并直接將這個(gè)映射關(guān)系交給MMU,從而利用現(xiàn)有的MMU機(jī)制實(shí)現(xiàn)虛擬地址到機(jī)器地址的高效轉(zhuǎn)換。
不同點(diǎn):虛擬地址到機(jī)器地址的轉(zhuǎn)換執(zhí)行者不同,一個(gè)是Guest OS,一個(gè)是VMM。
總結(jié)
以上是生活随笔為你收集整理的操作系统与虚拟化安全第一次作业-关键习题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: (二)网络安全概论之云安全
- 下一篇: (四)系统虚拟化关键技术