版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
操作系統(tǒng)實(shí)驗(yàn)報(bào)告學(xué)號(hào) 姓名班級(jí)
實(shí)驗(yàn)一實(shí)驗(yàn)報(bào)告【實(shí)驗(yàn)名稱】:并發(fā)程序設(shè)計(jì)(實(shí)驗(yàn)1)【實(shí)驗(yàn)?zāi)康摹浚赫莆赵诔绦蛑袆?chuàng)建新進(jìn)程的方法,觀察并理解多道程序并發(fā)執(zhí)行的現(xiàn)象?!緦?shí)驗(yàn)原理】:fork():建立子進(jìn)程。子進(jìn)程得到父進(jìn)程地址空間的一個(gè)復(fù)制。返回值:成功時(shí),該函數(shù)被調(diào)用一次,但返回兩次,fork()對(duì)子進(jìn)程返回0,對(duì)父進(jìn)程返回子進(jìn)程標(biāo)識(shí)符(非0值)。不成功時(shí)對(duì)父進(jìn)程返回-1,沒有子進(jìn)程。另一個(gè)迸程的數(shù)據(jù)區(qū)另一個(gè)迸程的數(shù)據(jù)區(qū)用用<父進(jìn)程數(shù)據(jù)區(qū)和棧區(qū)戶另一個(gè)迸程的數(shù)據(jù)區(qū)另一個(gè)迸程的數(shù)據(jù)區(qū)用用<父進(jìn)程數(shù)據(jù)區(qū)和棧區(qū)戶1區(qū)父進(jìn)程數(shù)據(jù)區(qū)和棧區(qū)戶5區(qū)父進(jìn)程代碼父子迸程代碼另一個(gè)進(jìn)程的區(qū)另一個(gè)迸程的區(qū)子迸程數(shù)據(jù)區(qū)(與父迸程數(shù)據(jù)區(qū)內(nèi)容完全一樣)OSyOSyproc數(shù)組區(qū)'proc數(shù)組區(qū)』proc數(shù)組proc數(shù)組另一個(gè)進(jìn)程的數(shù)據(jù)區(qū)于進(jìn)程代碼(新裝入的)父進(jìn)程數(shù)據(jù)區(qū)和棧區(qū)父進(jìn)程代碼另一個(gè)進(jìn)程的區(qū):于進(jìn)程數(shù)據(jù)區(qū)(新)proc數(shù)組Vproc數(shù)組進(jìn)程標(biāo)識(shí) 所執(zhí)行的程序 (父) 進(jìn)程標(biāo)識(shí) 所執(zhí)行的程序 (父) (于)(同父) 進(jìn)程標(biāo)識(shí) 所執(zhí)行的程序 (父) (于)(新) (c)exec后的內(nèi)存物理空間(a)fbrkWu的內(nèi)存^物JS&空I'可(b)fbrk后、execWu的內(nèi)存物理空間【實(shí)驗(yàn)內(nèi)容I:首先分析一下程序運(yùn)行時(shí)其輸出結(jié)果有哪幾種可能性,然后實(shí)際調(diào)試該程序觀察其實(shí)際輸出情況,比較兩者的差異,分析其中的原因。voidmain(void)(intx=5;if(fork())(x+=30;printf("%d\n”,x);}elseprintf("%d\n”,x);printf(("%d\n”,x);}【實(shí)驗(yàn)要求】:每個(gè)同學(xué)必須獨(dú)立完成本實(shí)驗(yàn)、提交實(shí)驗(yàn)報(bào)告、源程序和可執(zhí)行程序。實(shí)驗(yàn)報(bào)告中必須包含預(yù)計(jì)的實(shí)驗(yàn)結(jié)果,關(guān)鍵代碼的分析,調(diào)試記錄,實(shí)際的實(shí)驗(yàn)結(jié)果,實(shí)驗(yàn)結(jié)果分析等內(nèi)容?!绢A(yù)計(jì)的實(shí)驗(yàn)結(jié)果】355355【關(guān)鍵代碼分析】代碼主要由fork()函數(shù)和一個(gè)ifelse條件分支語句組成。fork()函數(shù),它是Linux的系統(tǒng)調(diào)用。函數(shù)定義:intfork(void);返回值:子進(jìn)程中返回0,父進(jìn)程中返回子進(jìn)程ID,出錯(cuò)返回-1函數(shù)說明:一個(gè)現(xiàn)有進(jìn)程可以調(diào)用fork函數(shù)創(chuàng)建一個(gè)新進(jìn)程。由fork創(chuàng)建的新進(jìn)程被稱為子進(jìn)程(childprocess)ofork函數(shù)被調(diào)用一次但返回兩次。兩次返回的唯一區(qū)別是子進(jìn)程中返回0值而父進(jìn)程中返回子進(jìn)程ID。子進(jìn)程是父進(jìn)程的副本,它將獲得父進(jìn)程數(shù)據(jù)空間、堆、棧等資源的副本。注意,子進(jìn)程持有的是上述存儲(chǔ)空間的“副本”,這意味著父子進(jìn)程間不共享這些存儲(chǔ)空間,它們之間共享的存儲(chǔ)空間只有代碼段。linux將復(fù)制父進(jìn)程的地址空間內(nèi)容給子進(jìn)程,因此,子進(jìn)程有了獨(dú)立的地址空間。父進(jìn)程和子進(jìn)程的代碼段都是上面的所有代碼,由定義可知不過子進(jìn)程的代碼只從創(chuàng)建此子進(jìn)程那里開始執(zhí)行。也就是從if(fork())語句開始,出現(xiàn)了子進(jìn)程,兩個(gè)進(jìn)程并發(fā)執(zhí)行。的。可以完全看成普通的兩個(gè)進(jìn)程。所以在執(zhí)行printf(("%d\n”,x);的時(shí)候,父子進(jìn)程當(dāng)然都會(huì)執(zhí)行它,因?yàn)樗麄儽旧沓绦蚨卫锒加羞@句代碼?!菊{(diào)試記錄】在紅帽終端里做gdb調(diào)試在第五行加入斷點(diǎn),執(zhí)行run得到55,這是子進(jìn)程執(zhí)行的結(jié)果。再執(zhí)行next得到3535,這是父進(jìn)程的結(jié)果。這里可以看出,由父進(jìn)程創(chuàng)建的子進(jìn)程先執(zhí)行完畢,但是宏觀上是并發(fā)執(zhí)行。include<stdioLti>muin(void){intx=5;if(forkO)TOC\o"1-5"\h\z1printf( hx)i}eIseprintf( hx)i(gdb)bSBjeakpoint1atOx8O4837c3fileca.chline5,(gdb)runStartingprogram;/horre/yuiuiui/cbBreakpoint1.nuin()atca.f>x+=30;(gdb)Ifgdh)n7 printf( hx):Cgdh)n11 printf( hx):Cgdh)n【實(shí)際的實(shí)驗(yàn)結(jié)果】553535【實(shí)驗(yàn)結(jié)果分析】從實(shí)際結(jié)果來看,子進(jìn)程比父進(jìn)程先執(zhí)行完,但是由fork函數(shù),我們可知,兩者優(yōu)先級(jí)應(yīng)該是一樣的。至于哪個(gè)可能先執(zhí)行,可能和操作系統(tǒng)的具體調(diào)度算法有關(guān)。當(dāng)實(shí)驗(yàn)超過一定次數(shù)時(shí),應(yīng)該會(huì)出現(xiàn)其它結(jié)果。實(shí)驗(yàn)二實(shí)驗(yàn)報(bào)告【實(shí)驗(yàn)名稱】:進(jìn)程通信(實(shí)驗(yàn)2)【實(shí)驗(yàn)?zāi)康摹浚赫莆沼绵]箱方式進(jìn)行進(jìn)程通信的方法,并通過設(shè)計(jì)實(shí)現(xiàn)簡(jiǎn)單郵箱理解進(jìn)程通信中的同步問題以及解決該問題的方法?!緦?shí)驗(yàn)原理】:郵箱機(jī)制類似于日常使用的信箱。對(duì)于用戶而言使用起來比較方便,用戶只需使用send()向?qū)Ψ洁]箱發(fā)郵件receive()從自己郵箱取郵件,send()和receive()的內(nèi)部操作用戶無需關(guān)心。因?yàn)猷]箱在內(nèi)存中實(shí)現(xiàn),其空間有大小限制。其實(shí)send()和receive()的內(nèi)部實(shí)現(xiàn)主要還是要解決生產(chǎn)者與消費(fèi)者問題。【實(shí)驗(yàn)內(nèi)容】:進(jìn)程通信的郵箱方式由操作系統(tǒng)提供形如send()和receive()的系統(tǒng)調(diào)用來支持,本實(shí)驗(yàn)要求學(xué)生首先查找資料了解所選用操作系統(tǒng)平臺(tái)上用于進(jìn)程通信的系統(tǒng)調(diào)用具體形式,然后使用該系統(tǒng)調(diào)用編寫程序進(jìn)行進(jìn)程間的通信,要求程序運(yùn)行結(jié)果可以直觀地體現(xiàn)在界面上。在此基礎(chǔ)上查找所選用操作系統(tǒng)平臺(tái)上支持信號(hào)量機(jī)制的系統(tǒng)調(diào)用具體形式,運(yùn)用生產(chǎn)者與消費(fèi)者模型設(shè)計(jì)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的信箱,該信箱需要有創(chuàng)建、發(fā)信、收信、撤銷等函數(shù),至少能夠支持兩個(gè)進(jìn)程互相交換信息,比較自己實(shí)現(xiàn)的信箱與操作系統(tǒng)本身提供的信箱,分析兩者之間存在的異同。【實(shí)驗(yàn)要求】:每個(gè)同學(xué)必須獨(dú)立完成本實(shí)驗(yàn)、提交實(shí)驗(yàn)報(bào)告、源程序和可執(zhí)行程序。實(shí)驗(yàn)報(bào)告中必須包含背景知識(shí)介紹,設(shè)計(jì)方案,預(yù)計(jì)的實(shí)驗(yàn)結(jié)果,關(guān)鍵代碼的分析,調(diào)試記錄,實(shí)際的實(shí)驗(yàn)結(jié)果,實(shí)驗(yàn)結(jié)果分析等內(nèi)容?!颈尘爸R(shí)介紹】:1、sembuf數(shù)據(jù)結(jié)構(gòu)structsembuf(unsignedshortintsem_num;//semaphorenumbershortintsem_op;//semaphoreoperationshortintsem_flg;//operationflag};sem_num:是相對(duì)應(yīng)的信號(hào)量集中的某一個(gè)資源,所以其值是一個(gè)從0到相應(yīng)的信號(hào)量集的資源總數(shù)(ipc_perm.sem_nsems)之間的整數(shù)。sem_op:指明所要執(zhí)行的操作。如果其值為正數(shù),該值會(huì)加到現(xiàn)有的信號(hào)內(nèi)含值中。通常用于釋放所控資源的使用權(quán);如果sem_op的值為負(fù)數(shù),而其絕對(duì)值又大于信號(hào)的現(xiàn)值,操作將會(huì)阻塞,直到信號(hào)值大于或等于sem_op的絕對(duì)值。通常用于獲取資源的使用權(quán);如果sem_op的值為0,則操作將暫時(shí)阻塞,直到信號(hào)的值變?yōu)?。sem_flg:信號(hào)操作標(biāo)志,可能的選擇有兩種IPC_NOWAIT//對(duì)信號(hào)的操作不能滿足時(shí),semop()不會(huì)阻塞,并立即返回,同時(shí)設(shè)定錯(cuò)誤信息。IPC_UNDO//程序結(jié)束時(shí)(不論正?;虿徽?,保證信號(hào)值會(huì)被重設(shè)為semop()調(diào)用前的值。這樣做的目的在于避免程序在異常情況下結(jié)束時(shí)未將鎖定的資源解鎖,造成該資源永遠(yuǎn)鎖定。2、 semop函數(shù)函數(shù)原型:intsemop(intsemid,structsembuf*sops,unsignednsops);參數(shù)說明:semid:信號(hào)集的識(shí)別碼,可通過semget獲取。sops:指向存儲(chǔ)信號(hào)操作結(jié)構(gòu)的數(shù)組指針。nsops:信號(hào)操作結(jié)構(gòu)的數(shù)量,恒大于或等于1。返回說明:成功執(zhí)行時(shí),兩個(gè)系統(tǒng)調(diào)用都返回0。失敗返回-1,錯(cuò)誤信息保存在errno中。3、 semget函數(shù)函數(shù)原型:intsemget(key_tkey,intnsems,intsemflg);參數(shù)說明:key:關(guān)鍵字值一般是由系統(tǒng)調(diào)用ftok()返回的nsems:指出了一個(gè)新的信號(hào)量集中應(yīng)該創(chuàng)建的信號(hào)量的個(gè)數(shù)semflg:打開和存取操作與參數(shù)semflg中的內(nèi)容相關(guān)。返回說明:如果成功,則返回信號(hào)量集的IPC標(biāo)識(shí)符。如果失敗,返回-1,錯(cuò)誤信息保存在errno中。4、 semctl函數(shù)函數(shù)原型:intsemctl(intsemid,intsemnum,intcmd,unionsemunarg);參數(shù)說明:senid:關(guān)鍵字值semnum:信號(hào)量數(shù)目cmd:要操作的具體命令arg:semnu的一個(gè)聯(lián)合類型的副本。返回說明:返回值:如果成功,則為一個(gè)正數(shù)。如果失敗,則為-1。錯(cuò)誤信息保存在errno中。5、 pthread_create函數(shù)函數(shù)原型:intpthread_create(pthread_t*restricttidp,constpthread_attr_t^restrictattr,void*(*start_rtn)(void*),void^restrictarg);參數(shù)說明:tidp:指向線程標(biāo)識(shí)符的指針。attr:用來設(shè)置線程屬性。第三個(gè)參數(shù)是線程運(yùn)行函數(shù)的起始地址。arg:運(yùn)行函數(shù)的參數(shù)?!驹O(shè)計(jì)方案】:采用兩個(gè)程序并行的方式,打開兩個(gè)終端,為兩個(gè)進(jìn)程都創(chuàng)建一個(gè)郵箱。并且,要求先輸入操作命令,使信箱執(zhí)行哪種操作,以完成兩個(gè)進(jìn)程間的郵件通信。同時(shí),還應(yīng)采用pv操作,使當(dāng)郵箱滿和空的時(shí)候,分別不能執(zhí)行發(fā)送和接收的工作?!緦?shí)驗(yàn)預(yù)計(jì)結(jié)果】:A_Receive()和B_Receive()分別接收B_Send()和A_Send()發(fā)出的信息,發(fā)送的信息和接受的信息應(yīng)該一樣。【關(guān)鍵代碼分析】:PV操作實(shí)現(xiàn):intp(intsem_id)(structsembufsem_b;sem_b.sem_num=0;sem_b.sem_op=-1; //V操作只需將-1改為0。sem_b.sem_flg=SEM_UNDO;if(semop(sem_id,&sem_b,1)==-1)(return0;}return1;}A向B發(fā)送信息:void*A_Send(void*arg){ —inti;for(i=0;i<10;i++)(semaphore_P(sem_idAs);//P操作semaphore_P(a_mutex_semaphore);//互斥intnumber=rand(); //隨機(jī)數(shù)為發(fā)送的郵件printf("AsendtoB:%d\n”,number);b_buf[b_buf_top]=number;//郵箱B中接收A發(fā)送的郵件b_buf_top+=1;//A向B發(fā)送郵件,B的郵件數(shù)量加一
semaphore_V(a_mutex_semaphore);//互斥semaphore_V(sem_idBr);//V操作sleep(1);}}【調(diào)試記錄】:pthread庫不是Linux系統(tǒng)默認(rèn)的庫,連接時(shí)需要使用庫libpthread.a,所以在使用pthread_create創(chuàng)建線程時(shí),在編譯中要加-lpthread參數(shù)gcc-w-lpthreadsemaphore.c【實(shí)驗(yàn)的實(shí)際結(jié)果】:yuiuiui@yuiuiui-desktop:-$gcc-w-osemaphore-lpthreadsemaphore.cyuiuiui@yuiuiui-desktop:-$./semaphoreBsendtoA:2AreceivefromB:2BsendtoA:2AreceivefromB:2AsendtoB:56BreceivefromA:56BsendtoA:37AreceivefromB:37AsendtoB:45BreceivefromA:45BsendtoA:97AsendtoB:asdfBreceivefromA:asdfBsendtoA:rtAreceivefromB:rtAreceivefromB:97AsendtoB:145BreceivefromA:145BsendtoA:564AreceivefromB:564AsendtoB:5647BreceivefromA:5647BsendtoA:23123AreceivefromB:23123【實(shí)驗(yàn)結(jié)果分析】:四個(gè)線程并發(fā)運(yùn)行,A_Send()和B_Send()發(fā)出信息,同時(shí)打印出發(fā)出的信息內(nèi)容;A_Receive()和B_Receive()分別接收B_Send()和A_Send()發(fā)出的信息,并打印出接受的信息內(nèi)容。發(fā)出的內(nèi)容和接收的內(nèi)容一樣,符合時(shí)間情況。實(shí)驗(yàn)三實(shí)驗(yàn)報(bào)告【實(shí)驗(yàn)?zāi)康摹浚赫莆沾疟P的工作原理和操作系統(tǒng)進(jìn)行文件管理的原理【實(shí)驗(yàn)原理】:硬盤的MBR:MBR(MainBootRecord),按其字面上的理解即為主引導(dǎo)記錄區(qū),位于整個(gè)硬盤的0磁道0柱面1扇區(qū)。在總共512字節(jié)的主引導(dǎo)扇區(qū)中,MBR只占用了其中的446個(gè)字節(jié)(偏移0000--偏移01BD),另外的64個(gè)字節(jié)(偏移01BE--偏移01FD)交給了DPT(DiskPartitionTable硬盤分區(qū)表),最后兩個(gè)字節(jié)”55,AA"(偏移01FE-偏移01FF)是分區(qū)的結(jié)束標(biāo)志。這個(gè)整體構(gòu)成了硬盤的主引導(dǎo)扇區(qū)。大致的結(jié)構(gòu)如圖所示:TOC\o"1-5"\h\z0000| II II I| Main.BootRecord |I II II 主引導(dǎo)記錄〔44日字節(jié)) |01BD | |01BE | |I I01CD | 分區(qū)信息1〔16字節(jié)) |DICE | |I I01DD | 分區(qū)信息沮1日字節(jié)) |01DE | |I I01ED | 分區(qū)信息3〔1日字節(jié)) |01EE | |I I硬盤依據(jù)分區(qū)表中的信息酗盤劃分為最多四個(gè)分區(qū)(對(duì)于擴(kuò)展分區(qū),可進(jìn)一步劃分為多個(gè)邏輯分區(qū))"]U盤采用類似的方法劃分分區(qū)。每個(gè)分區(qū)或軟盤上可建立獨(dú)立的文件系統(tǒng)。下圖是FAT文件系統(tǒng)空間分布結(jié)構(gòu)。| | 引導(dǎo)扇區(qū)1*1FAT1111FA:T2111i根目錄區(qū)文件數(shù)據(jù)區(qū)【實(shí)驗(yàn)內(nèi)容】:在掌握磁盤的工作原理和操作系統(tǒng)進(jìn)行文件管理原理的基礎(chǔ)上,自行設(shè)計(jì)實(shí)現(xiàn)在磁盤上建立文件系統(tǒng)的軟件,該軟件應(yīng)該具有與Format類似的功能,至少支持一種文件系統(tǒng)格式,如FAT、NTFS或EXT2,至少能夠?qū)σ环N媒體進(jìn)行格式化,如軟盤,U盤或硬盤(不得在實(shí)驗(yàn)室的機(jī)器上進(jìn)行硬盤格式化的實(shí)驗(yàn))等。不能直接調(diào)用操作系統(tǒng)提供的格式化工具或類似SHFormatDrive()的高層系統(tǒng)函數(shù)實(shí)現(xiàn)該軟件。在DOS環(huán)境可使用biosdisk()函數(shù)完成底層盤操作,在Windows環(huán)境可使用WriteFile(涵數(shù)完成底層盤操作,在Linux環(huán)境上可參考format的源代碼。比較自己設(shè)計(jì)實(shí)現(xiàn)的軟件與FORMAT,分析存在什么異同?!緦?shí)驗(yàn)要求】每個(gè)同學(xué)必須獨(dú)立完成本實(shí)驗(yàn)、提交實(shí)驗(yàn)報(bào)告、源程序和可執(zhí)行程序。實(shí)驗(yàn)報(bào)告中必須包含背景知識(shí)介紹,設(shè)計(jì)方案,預(yù)計(jì)的實(shí)驗(yàn)結(jié)果,關(guān)鍵代碼的分析,調(diào)試記錄,實(shí)際的實(shí)驗(yàn)結(jié)果,實(shí)驗(yàn)結(jié)果分析等內(nèi)容。背景知識(shí)介紹一個(gè)分區(qū)或磁盤能作為文件系統(tǒng)使用前,需要初始化,并將記錄數(shù)據(jù)結(jié)構(gòu)寫到磁盤上。這個(gè)過程就叫建立文件系統(tǒng)。大部分linux文件系統(tǒng)種類具有類似的通用結(jié)構(gòu)。其中心概念是超級(jí)塊superblock,i節(jié)點(diǎn)inode,數(shù)據(jù)塊datablock,目錄塊directoryblock,和間接塊indirectionblock。超級(jí)塊包括文件系統(tǒng)的總體信息。 i節(jié)點(diǎn)包括除了名字外的一個(gè)文件的所有信息,名字與i節(jié)點(diǎn)數(shù)目一起存在目錄中,目錄條目包括文件名和文件的i節(jié)點(diǎn)數(shù)目。i節(jié)點(diǎn)包括幾個(gè)數(shù)據(jù)塊的數(shù)目,用于存儲(chǔ)文件的數(shù)據(jù)。i節(jié)點(diǎn)中只有少量數(shù)據(jù)塊數(shù)的空間,如果需要更多,會(huì)動(dòng)態(tài)分配指向數(shù)據(jù)塊的指針空間。這些動(dòng)態(tài)分配的塊是間接塊;為了找到數(shù)據(jù)塊,這名字指出它必須先找到間接塊的號(hào)碼。Linux文件系統(tǒng)通常允許在文件中產(chǎn)生孔(hole),意思是文件系統(tǒng)假裝文件中有一個(gè)特殊的位置只有0字節(jié),但沒有為這文件的這個(gè)位置保留實(shí)際的磁盤空間。這對(duì)小的二進(jìn)制文件經(jīng)常發(fā)生,Linux共享庫、一些數(shù)據(jù)庫和其他一些特殊情況。設(shè)計(jì)方案1、 用一個(gè)文件(3)模擬一個(gè)物理硬盤,通過對(duì)該文件格式化操作,模擬linux文件系統(tǒng)中的文件操作。2、 將文件劃分為四個(gè)分區(qū)預(yù)計(jì)的實(shí)驗(yàn)結(jié)果文件會(huì)被格式化,原先文件里的內(nèi)容都會(huì)刪除,創(chuàng)建新的文件系統(tǒng)。關(guān)鍵代碼的分析1、 i節(jié)點(diǎn)結(jié)構(gòu)structinode(structinode*i_forw;structinode*i_back;chari_flag;unsignedinti_ino;//磁盤i節(jié)點(diǎn)標(biāo)號(hào)unsignedinti_count;//弓I用計(jì)數(shù)unsignedshortdi_number;//關(guān)聯(lián)文件數(shù)unsignedshortdi_mode;//存取權(quán)限unsignedshortdi_uid;//磁盤i節(jié)點(diǎn)用戶idunsignedshortdi_gid;//磁盤i節(jié)點(diǎn)住idunsignedintdi_size;//大小unsignedintdi_addr[NADDR];//物理塊號(hào)};2、 目錄項(xiàng)結(jié)構(gòu)structdirect(chard_name[DIRSIZ];//目錄名unsignedintd_ino;//目錄號(hào)};3、 超級(jí)塊structfilsys(unsignedshorts_isize;//i節(jié)點(diǎn)塊塊數(shù)unsignedlongs_fsize;//數(shù)據(jù)塊塊數(shù)unsignedints_nfree;//空閑塊塊數(shù)unsignedshorts_pfree;//空閑塊指針unsignedints_free[NICFREE];//空閑塊堆棧unsignedints_ninode;//空閑i節(jié)點(diǎn)數(shù)unsignedshorts_pinode;//空閑i節(jié)點(diǎn)指針unsignedints_inode[NICINOD];//空閑i節(jié)點(diǎn)數(shù)組unsignedints_rinode;//超級(jí)塊修改標(biāo)志chars_fmod;};4、 函數(shù)說明ifree:釋放i節(jié)點(diǎn)區(qū)函數(shù)bfree:磁盤塊釋放函數(shù)iget:i節(jié)點(diǎn)內(nèi)容獲取函數(shù)iput:i節(jié)點(diǎn)內(nèi)容釋放函數(shù)format:格式化函數(shù)調(diào)試記錄實(shí)際的實(shí)驗(yàn)結(jié)果fzu@fzu-desktop:~/OS$gcc-w-oformatformat.cfzu@fzu-desktop:~/OS$./format請(qǐng)輸入文件的位置/home/fzu/OS/3formatsuccussfzu@fzu-desktop:~/OS$fzu@fzu-desktop:~/OS$vim3在文件3中輸入一些內(nèi)容,運(yùn)行格式化程序后,文件不再是原來的內(nèi)容和格式,想要雙擊打開,但是顯示無法打開次文件。
文件(日融(日查看(Y)終端①幫助曲歐典rtAA(aA(a^^AA(aA(a^GrtAA(aA(aAFAAA(aA(a2A(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(a'但人H'BT”?????'亍亍礦①礦①①①足禪禪***"強(qiáng)?????d??*??? 足?????????rtS??"$??YiiF(????i??E???K?p人H'(r(r(r笆h???e???-b禪??h???矽m???????-T???¥TF*?????p他'但'他■爬'他■爬■爬■爬外酒'但Hp??p???室掣魚趨.N=?X???q??yy'他■爬■爬'P???博???'(rb(r<r(r<r(r<rbbb<r<rb<r(r??x???%?ad^hr????fwa禪禪^????.N=?(????????r????????'D'Ht?????'愈'足飛^虞???勺足'足'包飛^愈'也X???'四爬'笆'笆'笆'強(qiáng)'笆'笆足丹足丹里丹強(qiáng)'強(qiáng)'笆'笆'笆'笆足丹足丹里丹吊'強(qiáng)'強(qiáng)'笆'笆'笆'笆足丹足丹里外笆'強(qiáng)'笆'笆'笆'笆足^(aA(aA(aA(aAtaA(aAtaA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aAtaA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aAtaA(aA(aA(aA(aA(aA(aA(aA(aAtaA(aAtaA(aA強(qiáng)'強(qiáng)'強(qiáng)'愈'足'足-足-足-足-足-強(qiáng)-強(qiáng)'強(qiáng)'強(qiáng)'愈'愈'足-足-足-足-足-足-強(qiáng)'強(qiáng)'強(qiáng)'強(qiáng)'愈'足'足-足-足-足-足-強(qiáng)-強(qiáng)'強(qiáng)'強(qiáng)'愈'愈'足-足-足人強(qiáng)外愈外觸'強(qiáng)'用k足-足-足-用外強(qiáng)外強(qiáng)外強(qiáng)'愈'相'用呂用呂足k足-足-用-強(qiáng)外強(qiáng)外強(qiáng)外強(qiáng)'強(qiáng)'用k超-足-足-用外強(qiáng)外足外強(qiáng)'強(qiáng)'用'用呂足外?'強(qiáng)-強(qiáng)'?'?'但-但-@-但-但-巧-強(qiáng)-強(qiáng)-強(qiáng)-?'?'(^但外但巧-強(qiáng)-強(qiáng)-強(qiáng)巧-強(qiáng)-強(qiáng)-強(qiáng)-?'?'(^但外但A(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aAi!aA(aA(aA(aA(aA(aA足'強(qiáng)'強(qiáng)'愈'足'足-足-足-足-足-強(qiáng)-強(qiáng)'強(qiáng)'強(qiáng)'愈'愈'足-足-足-足-足-里-強(qiáng)'強(qiáng)'強(qiáng)'強(qiáng)'愈'足'足-足-足-足-足-強(qiáng)-強(qiáng)'強(qiáng)'強(qiáng)'愈'愈'足-足-足A(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(art(a^(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(a八強(qiáng)'強(qiáng)'強(qiáng)足-足-足-足-足-強(qiáng)'強(qiáng)'強(qiáng)'強(qiáng)'里'足'足-足-里-足-定-強(qiáng)-強(qiáng)'強(qiáng)'強(qiáng)'里'里'足-足-足-足足-強(qiáng)'強(qiáng)'足'強(qiáng)'里'足'足外足外(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(a八電'他'但但'但巧'電'強(qiáng)'但'?'他'他'但'電-強(qiáng)'強(qiáng)'強(qiáng)電'但'但電'電'?'色但'但人(a^(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(a八強(qiáng)'愈
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 備考會(huì)計(jì)基礎(chǔ)秀課件推
- 養(yǎng)老院老人康復(fù)理療師職業(yè)發(fā)展規(guī)劃制度
- 增收節(jié)支課件
- 2024年挖掘機(jī)租賃合同范本(含應(yīng)急維修服務(wù))3篇
- 2024年度生態(tài)園林樹木補(bǔ)種與養(yǎng)護(hù)管理合同3篇
- 大年夜學(xué)期末財(cái)務(wù)學(xué)課件期末溫習(xí)資料試卷
- 《肝癌與其他》課件
- 2024年版:工程機(jī)械短期租賃協(xié)議
- 《在大多數(shù)廣告中》課件
- 2025年四川貨運(yùn)從業(yè)考試試題及答案詳解
- 高一物理必修一課程綱要Word版
- 設(shè)備單機(jī)試運(yùn)轉(zhuǎn)記錄
- 2020年領(lǐng)導(dǎo)干部個(gè)人有關(guān)事項(xiàng)報(bào)告表
- 人教版小學(xué)數(shù)學(xué)三年級(jí)下冊(cè)《年 月 日》的認(rèn)識(shí)-文檔資料
- 一年級(jí)童謠誦讀計(jì)劃
- 全風(fēng)險(xiǎn)全流程外包概述
- 培養(yǎng)研究生的一點(diǎn)經(jīng)驗(yàn)和體會(huì).PPT
- 變電站電氣工程質(zhì)量監(jiān)理旁站點(diǎn)及旁站監(jiān)理記錄
- 消防產(chǎn)品入場(chǎng)核查清單
- 醫(yī)用護(hù)理墊備案
- 地球的地殼元素豐度列表
評(píng)論
0/150
提交評(píng)論