操作系統(tǒng)實驗_第1頁
操作系統(tǒng)實驗_第2頁
操作系統(tǒng)實驗_第3頁
操作系統(tǒng)實驗_第4頁
操作系統(tǒng)實驗_第5頁
已閱讀5頁,還剩84頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 bca(有時會出現(xiàn)abc的任意的排列)分析:從進程執(zhí)行并發(fā)來看,輸出abc的排列都是有可能的。原因:fork()創(chuàng)建進程所需的時間雖然可能多于輸出一個字符的時間,但各個進程的時間片的獲得卻不是一定是順序的,所以輸出abc的排列都是有可能的。2.進程的控制修改已編寫的程序,將每個進程輸出一個字符改為每個進程輸出一句話,再觀察程序執(zhí)行時屏幕上出現(xiàn)的現(xiàn)象,并分析原因。如果在程序中使用系統(tǒng)調(diào)用lockf()來給每一個進程加鎖,可以實現(xiàn)進程之間的互斥,觀察并分析出現(xiàn)的現(xiàn)象。2.1 實驗指導 (1)所涉及的系統(tǒng)調(diào)用lockf()lockf(files,function,size):用作鎖定文件的某些段或

2、者整個文件,本函數(shù)適用的頭文件為:#include參數(shù)定義:int lockf(files,function,size)int files,function;long size;其中:files是文件描述符:function是鎖定和解鎖;1表示鎖定,0表示解鎖。size是鎖定和解鎖的字節(jié)數(shù),若用0,表示從文件的當前位置到文件尾。(2)參考程序程序1#include main( )int p1,p2,i;while(p1=fork( )= = -1);/*創(chuàng)建子進程p1*/if (p1= =0)for(i=0;i100;i+)printf(daughter%d/n,i);elsewhile(p2

3、=fork( )= = -1);/*創(chuàng)建子進程p2*/if(p2= =0)for(i=0;i100;i+)printf(son%d/n,i);elsefor(i=0;i100;i+)printf(parent%d/n,i);運行結(jié)果parentsondaughter.daughter.或parentsonparentdaughter等分析:由于函數(shù)printf()輸出的字符串之間不會被中斷,因此,每個字符串內(nèi)部的字符順序輸出時不變。但是 , 由于進程并發(fā)執(zhí)行時的調(diào)度順序和父子進程的搶占處理機問題,輸出字符串的順序和先后隨著執(zhí)行的不同而發(fā)生變化。這與打印單字符的結(jié)果相同。程序2#include#

4、includemain()int p1,p2,i;while(p1=fork()=-1);if(p1=0)lockf(1,1,0);for(i=0;i50;i+)printf(child %d/n,i);lockf(1,0,0);elsewhile(p2=fork()=-1);if(p2=0)lockf(1,1,0);for(i=0;i50;i+)printf(son %d/n,i);lockf(1,0,0);elselockf(1,1,0);for(i=0;i50;i+)printf(daughter %d/n,i);lockf(1,0,0);運行結(jié)果輸出parent塊,son塊,grand

5、child塊的順序可能不同,但是每個塊的輸出過程不會被打斷。分析:因為上述程序執(zhí)行時,lockf(1,1,0)鎖定標準輸出設(shè)備,lockf(1,0,0)解鎖標準輸出設(shè)備,在lockf(1,1,0)與lockf(1,0,0)中間的for循環(huán)輸出不會被中斷,加鎖與不加鎖效果不相同。六、注意事項本課程每個實驗為LINUX環(huán)境下進行實驗,要求使用GCC編譯器,能夠熟練使用VIM編輯器進行文件編輯和代碼開發(fā),使用操作系統(tǒng)RedHat Enterprise 6 以上操作系統(tǒng)。七、實驗報告內(nèi)容及要求1.實驗的程序源碼;2.運行程序,給出運行結(jié)果截圖;3.分析實驗結(jié)果,給出實驗結(jié)論。實驗二 銀行家算法實驗屬性

6、實驗性質(zhì): 驗證性實驗學時: 4學時實驗要求: 必做二、實驗?zāi)康?.進一步理解利用銀行家算法避免死鎖的問題;2.在了解和掌握銀行家算法的基礎(chǔ)上,編制銀行家算法通用程序,將調(diào)試結(jié)果顯示在計算機屏幕上,再檢測和筆算的一致性;3.理解和掌握安全序列、安全性算法。三、實驗環(huán)境及知識準備 1.實驗環(huán)境: Linux系統(tǒng)開發(fā)環(huán)境2.知識準備:(1)銀行家算法基本算法概念;(2)C語言基本語法及設(shè)計理念。四、實驗內(nèi)容1. 了解和理解死鎖;2. 理解利用銀行家算法避免死鎖的原理;3. 會使用某種編程語言。五、實驗步驟及指導1.安全狀態(tài)指系統(tǒng)能按照某種順序如(稱為序列為安全序列),為每個進程分配所需的資源,直至

7、最大需求,使得每個進程都能順利完成。2. 銀行家算法假設(shè)在進程并發(fā)執(zhí)行時進程i提出請求j類資源k個后,表示為Requestij=k。系統(tǒng)按下述步驟進行安全檢查:(1)如果RequestiNeedi則繼續(xù)以下檢查,否則顯示需求申請超出最大需求值的錯誤。(2)如果RequestiAvailable則繼續(xù)以下檢查,否則顯示系統(tǒng)無足夠資源,Pi阻塞等待。(3)系統(tǒng)試探著把資源分配給進程Pi,并修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù)值:Availablej=Availablej-Requestij;Allocationi,j=Allocationi,j+Requestij;Needi,j=Needi,j-Request

8、ij;(4)系統(tǒng)執(zhí)行安全性算法,檢查此次資源分配后,系統(tǒng)是否處于安全狀態(tài)。若安全,才正式將資源分配給進程Pi,以完成本次分配;否則, 將本次的試探分配作廢,恢復(fù)原來的資源分配狀態(tài),讓進程Pi等待。3.安全性算法(1)設(shè)置兩個向量: 工作向量Work: 它表示系統(tǒng)可提供給進程繼續(xù)運行所需的各類資源數(shù)目,它含有m個元素,在執(zhí)行安全算法開始時,Work=Available; Finish: 它表示系統(tǒng)是否有足夠的資源分配給進程,使之運行完成。開始時先做Finishi=false; 當有足夠資源分配給進程時, 再令Finishi=true。(2)從進程集合中找到一個能滿足下述條件的進程: Finish

9、i=false; Needi,jWorkj; 若找到, 執(zhí)行步驟(3), 否則,執(zhí)行步驟(4)。(3)當進程Pi獲得資源后,可順利執(zhí)行,直至完成,并釋放出分配給它的資源,故應(yīng)執(zhí)行:Workj=Worki+Allocationi,j;Finishi=true;go to step 2; (4)如果所有進程的Finishi=true都滿足, 則表示系統(tǒng)處于安全狀態(tài);否則,系統(tǒng)處于不安全狀態(tài)4. 實驗步驟(1)參考圖2-1所示流程圖編寫安全性算法。YY所有finish都為true?輸出安全序列NYN存在Finishi =false&Needij 解密后文件路徑,此時gpg要求輸入前面設(shè)置的用于保護本

10、機私鑰的密碼,輸入密碼,解開私鑰。在存放加密文件的目錄下就生了一個解密后的文件,打開解密文件,瀏覽正文,與同組主機確定其正確性。五、實驗步驟及指導1. 實驗原理RSA公鑰體系的特點使它非常適合用來滿足兩個要求:保密性(privacy)和認證性(authentication)。PGP(Pretty Good Privacy),是一個基于RSA公鑰加密體系的郵件加密軟件,它提供了非對稱加密和數(shù)字簽名。其創(chuàng)始人是美國的Phil Zimmermann,他把RSA公鑰體系的方便和傳統(tǒng)加密體系的高速結(jié)合起來,并且在數(shù)字簽名和密鑰認證管理機制上有巧妙的設(shè)計,因此PGP成為目前非常流行的公鑰加密軟件包。PGP

11、有以下主要功能:(1)使用PGP對郵件加密,以防止非法閱讀;(2)能給加密的郵件追加上數(shù)字簽名,從而使收信人進一步確信郵件的發(fā)送者,而事先不需要任何保密的渠道用來傳遞密鑰;(3)可以實現(xiàn)只簽名而不加密,適用于發(fā)表公開聲明時證實聲明人身份,也可防止聲明人抵賴,這一點在商業(yè)領(lǐng)域有很大的應(yīng)用前景;(4)能夠加密文件,包括圖形文件、聲音文件以及其它各類文件;(5)利用PGP代替Unicode生成RADIX64(就是MIME的BASE 64格式)的編碼文件。PGP給郵件加密和簽名的過程是這樣的:首先甲用自己的私鑰將上述的128位值加密,附加在郵件后,再用乙的公鑰將整個郵件加密(要注意這里的次序,如果先加

12、密再簽名的話,別人可以將簽名去掉后簽上自己的簽名,從而篡改了簽名)。這樣這份密文被乙收到以后,乙用自己的私鑰將郵件解密,得到甲的原文和簽名,乙的PGP也從原文計算出一個128位的特征值來和用甲的公鑰解密簽名所得到的數(shù)進行比較,如果符合就說明這份郵件確實是甲寄來的。這樣兩個安全性要求都得到了滿足。2. 實驗步驟2.1 生成公私密鑰(1)本機單擊實驗平臺“GnuPG”工具按鈕,進入工作目錄,鍵入命令:gpg -gen-key開始生成公私鑰對。期間gpg會依次詢問如下信息:欲產(chǎn)生密鑰種類(默認選擇1)密鑰大?。J大小2048字節(jié))密鑰有效期限(默認選擇0永不過期)(2)生成用戶標識,期間gpg會依

13、次詢問如下信息:Real name(用戶名,請按本機的組編號和主機編號確定你的用戶名)Email address(Email地址,如user2DCServer.Netlab)Common(注釋信息,建議與用戶名相同)確定上述輸入后,gpg會提示你將要生成的USER-ID。鍵入“O”確定以上信息后,gpg需要一個密碼來保護即將生成的用戶私鑰,為了方便記憶,我們選擇密碼與用戶名相同。(3)接下來gpg會根據(jù)以上信息生成公私密鑰對,并將它們存放在 C:Documents and SettingsAdministratorApplication Datagnupg目錄下,名字分別為:pubring.g

14、pg和secring.gpg。2.2 導出公鑰本機在gpg工作目錄鍵入命令:gpg -a -o D:WorkPGPuserGXpubkey.asc -export userGX (userGX) (userGXCServer.Netlab),gpg會將公鑰導入到D:WorkPGP這個指定目錄的userGXpubkey.asc文件中。將userGXpubkey.asc文件發(fā)送到同組主機PGP共享目錄中。2.3 導入同組主機公鑰本機從同組主機發(fā)送來的userGYpubkey.asc文件中,將對方公鑰導入至本機gpg庫,其命令如下:gpg -import D:WorkPGPuserGYpubkey.

15、asc。2.4 利用對方公鑰進行加密(1)在“D:WorkPGP”目錄中新建一文本文件“userGX.txt”。(2)利用對方公鑰對userGX.txt加密,并對其進行簽名在gpg工作目錄鍵入如下命令:gpg -sea -r userGYCServer.Netlab 加密文件絕對路徑,其中userGYCServer.Netlab為USER-ID。最后在原文件所在目錄下,生成一個名為“userGX.txt.asc”的文件,將該文件發(fā)送到同組主機PGP目錄中。2.5 解密密文(1)在gpg工作目錄下鍵入命令:gpg -d 加密文件絕對路徑 解密后文件路徑,此時gpg要求輸入前面設(shè)置的用于保護本機私

16、鑰的密碼,輸入密碼,解開私鑰。在存放加密文件的目錄下就生了一個解密后的文件,打開解密文件,瀏覽正文,與同組主機確定其正確性。六、注意事項1實驗指導書中的截圖和操作均為windows平臺下操作,使用的軟件為GNUPG工具,在windows操作的步驟和過程和linux操作十分相似,需要學生將此實驗移植到linux平臺下;2在實驗中加密的位數(shù)保持在1024上下,確保實驗機器的內(nèi)存足夠用。七、實驗報告內(nèi)容及要求1.實驗的程序源碼;2.運行程序,給出運行結(jié)果截圖;3.分析實驗結(jié)果,給出實驗結(jié)論。 實驗六 linux文件系統(tǒng)及系統(tǒng)調(diào)用實驗屬性 實驗性質(zhì): 驗證性實驗學時: 2學時實驗要求: 選做二、實驗?zāi)?/p>

17、的在linux系統(tǒng)中共享文件,通過網(wǎng)絡(luò)使得遠程的客戶端能夠順利的加載服務(wù)器的文件系統(tǒng),在加載的過程中觀察操作系統(tǒng)的驅(qū)動變化。三、實驗環(huán)境及知識準備 1.實驗環(huán)境: Linux系統(tǒng)環(huán)境 2.知識準備: (1)了解Linux文件系統(tǒng);(2)了解NFS文件系統(tǒng)的服務(wù)端和客戶端。四、實驗內(nèi)容掌握本地文件系統(tǒng)及網(wǎng)絡(luò)網(wǎng)絡(luò)文件系統(tǒng)之間的區(qū)別;了解網(wǎng)絡(luò)文件系統(tǒng)存儲過程;了解網(wǎng)絡(luò)文件系統(tǒng)在讀取或者存儲時的驅(qū)動加載。五、實驗步驟及指導NFS網(wǎng)絡(luò)文件系統(tǒng),服務(wù)端完成文件的共享,控制權(quán)限和限制地域使用,客戶端使用Linux 系統(tǒng)自帶的工具軟件掛載網(wǎng)絡(luò)文件系統(tǒng)形成本地的文件系統(tǒng),在掛載的同事觀察網(wǎng)絡(luò)文件系統(tǒng)的驅(qū)動加載及

18、vfs文件系統(tǒng)層面的驅(qū)動加載變化。1.配置Linux NFS的服務(wù)端,共享文件2.檢查Linux文件系統(tǒng)VFS接口的關(guān)聯(lián)情況3.檢查VFS層面驅(qū)動加載情況4.在文件讀寫操作發(fā)生時,調(diào)用系統(tǒng)底層的系統(tǒng)調(diào)用數(shù)目記錄(1)Linux Kernel VFS 文件系統(tǒng)超級塊代碼:struct super_block struct list_head s_list; /*指向超級塊鏈表的指針*/*包含該具體文件系統(tǒng)的塊設(shè)備標識符。*例如,對于 /dev/hda1,其設(shè)備標識符為 0 x301 kdev_t s_dev;/*該具體文件系統(tǒng)中數(shù)據(jù)塊的大小,以字節(jié)為單位*/ unsigned long s_bl

19、ocksize;/*塊大小的值占用的位數(shù),例如,如果塊大小為1024字節(jié),則該值為10*/ unsigned char s_blocksize_bits; unsigned char s_dirt; /*修改標志*/ unsigned long long s_maxbytes; /*文件的最大長度*/ struct file_system_type *s_type;/*指向某個特定的具體文件系統(tǒng)的用于超級塊操作的函數(shù)集合的指針*/ struct super_operations *s_op;struct dquot_operations*dq_op;/*指向磁盤限額方法的指針*/ unsign

20、ed long s_flags; /*魔數(shù),即該具體文件系統(tǒng)區(qū)別于其它文系統(tǒng)的一個標志*/ unsigned long s_magic; struct dentry *s_root; struct rw_semaphore s_umount; struct semaphore s_lock; ints_count; atomic_t s_active;structlist_head s_dirty; /*已修改索引節(jié)點的鏈表*/struct list_head s_locked_inodes;/*涉及I/O的索引節(jié)點的鏈表*/struct list_heads_files; /*分配給超級的文

21、件對象的鏈表*/ struct block_device *s_bdev; struct list_head s_instances; struct quota_mount_options s_dquot; /*磁盤限額的選項*/*一個共用體,其成員是各種文件系統(tǒng)的fsname_sb_info數(shù)據(jù)結(jié)構(gòu)*/ union struct minix_sb_info minix_sb; struct ext2_sb_info ext2_sb; struct ext3_sb_info ext3_sb; struct hpfs_sb_info hpfs_sb; struct ntfs_sb_infontf

22、s_sb; struct msdos_sb_info msdos_sb; struct isofs_sb_info isofs_sb; struct nfs_sb_infonfs_sb; struct sysv_sb_info sysv_sb; struct affs_sb_info affs_sb; struct ufs_sb_info ufs_sb; struct efs_sb_info efs_sb; struct shmem_sb_info shmem_sb; struct romfs_sb_info romfs_sb; struct smb_sb_info smbfs_sb; str

23、uct hfs_sb_info hfs_sb; struct adfs_sb_info adfs_sb; struct qnx4_sb_infoqnx4_sb; struct reiserfs_sb_info reiserfs_sb; struct bfs_sb_info bfs_sb; struct udf_sb_infoudf_sb; struct ncp_sb_infoncpfs_sb; struct usbdev_sb_info usbdevfs_sb; struct jffs2_sb_info jffs2_sb; struct cramfs_sb_info cramfs_sb; vo

24、id *generic_sbp; u; struct semaphore s_vfs_rename_sem; struct semaphore s_nfsd_free_path_sem;(2)Linux Kernel VFS 文件系統(tǒng)索引節(jié)點對象代碼 struct inode /*描述索引節(jié)點高速緩存管理的域*/ struct list_head i_hash; /*指向哈希鏈表的指針*/ struct list_head i_list; /*指向索引節(jié)點鏈表的指針*/ struct list_head i_dentry; /*指向目錄項鏈表的指針*/ struct list_head i_d

25、irty_buffers; struct list_head i_dirty_data_buffers;/*描述文件信息的域*/ unsigned long i_ino; /*索引節(jié)點號*/ atomic_t i_count; /*引用計數(shù)器*/ kdev_t i_dev; /*設(shè)備標識號 */ umode_t i_mode; nlink_t i_nlink; uid_t i_uid; /*文件擁有者標識號*/ gid_t i_gid; /*文件擁有者所在組的標識號*/ kdev_t i_rdev; /*實際設(shè)備標識號*/ loff_t i_size; time_t i_atime; /*文件

26、的最后訪問時間*/ time_t i_mtime; /*文件的最后修改時間*/ time_t i_ctime; /*節(jié)點的修改時間*/ unsigned int i_blkbits;/*塊的位數(shù)*/ unsigned long i_blksize; /*塊大小*/ unsigned long i_blocks; /*該文件所占塊數(shù)*/ unsigned long i_version; /*版本號*/ struct semaphore i_sem; struct semaphore i_zombie; /*僵死索引節(jié)點的信號量*/ struct inode_operations*i_op; /*

27、索引節(jié)點的操作*/ struct file_operations *i_fop; /*指向缺省的文件操作*/ struct super_block*i_sb; /*指向該文件系統(tǒng)超級塊的指針 */ wait_queue_head_t i_wait; /*指向索引節(jié)點等待隊列的指針*/ struct file_lock *i_flock; /*指向文件加鎖鏈表的指針*/*用于分頁機制的域*/ struct address_space *i_mapping;/*把所有可交換的頁面管理起來*/ struct address_space i_data; struct dquot *i_dquotMAX

28、QUOTAS; /*以下幾個域應(yīng)當是聯(lián)合體*/ struct list_head i_devices; /*設(shè)備文件形成的鏈表*/ struct pipe_inode_info *i_pipe; /*指向管道文件*/ struct block_device *i_bdev; /*指向塊設(shè)備文件的指針*/ struct char_device *i_cdev; /*指向字符設(shè)備文件的指針*/ unsigned long i_dnotify_mask; /*目錄通知事件標志*/ struct dnotify_struct *i_dnotify; unsigned long i_state; /*索引節(jié)點的狀態(tài)標志*/ unsigned int i_flags; /*文件系統(tǒng)的安裝標志*/ unsigned char i_sock; /*如果是套接字文件則為真*/ atomic_t i_writecount; /*寫進程的引用計數(shù)*/ unsigned int i_attr_flags; /*文件創(chuàng)建標志*/ _u32 i_generation;/*類似于超級塊的一個共用體,其成員是各種具體*文件系統(tǒng)的fsname_inode_info數(shù)據(jù)結(jié)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論