

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《操作系統(tǒng)原理》課程設(shè)計(jì)報(bào)告</p><p> 姓 名: </p><p> 學(xué) 號(hào): </p><p> 指導(dǎo)老師: _ </p><p> 起始時(shí)間: 2010年3月4日</p
2、><p> 起止時(shí)間: 2010年6月 22 日</p><p><b> 第一章 系統(tǒng)概述</b></p><p><b> 1.1 設(shè)計(jì)背景</b></p><p> 為了提高同學(xué)們的自學(xué)能力,老師決定給予一項(xiàng)我們沒(méi)有接觸過(guò)的課程設(shè)計(jì),也是我們很不熟悉,但是在IT界卻是很重要的一門
3、技藝,我覺(jué)得老師的目的就是為了鍛煉我們的自學(xué)力,而不是課程設(shè)計(jì)的能力,課程設(shè)計(jì)的能力是通過(guò)自學(xué)能力表現(xiàn)出來(lái)的。</p><p><b> 1.2 設(shè)計(jì)目的</b></p><p> 掌握unix操作系統(tǒng)常用API的調(diào)用;了解目錄操作、進(jìn)程控制等相關(guān)知識(shí)。</p><p> 掌握創(chuàng)建子進(jìn)程和信號(hào);</p><p>
4、 初步學(xué)會(huì)使用管道進(jìn)行進(jìn)程間通訊;</p><p> 掌握命令解釋程序的設(shè)計(jì)方法。</p><p> 理解并發(fā)程序中的同步問(wèn)題。</p><p> 培養(yǎng)C/C++語(yǔ)言程序設(shè)計(jì)技能,提高程序設(shè)計(jì)和文檔編寫能力。</p><p> 鍛煉團(tuán)隊(duì)成員的交流與合作能力。</p><p><b> 1.3 開(kāi)發(fā)環(huán)
5、境</b></p><p> 操作系統(tǒng):Windows XP 2000 、UNIX系統(tǒng)</p><p> 開(kāi)發(fā)平臺(tái):Notepad++、 putty</p><p> 編譯器版本:GNU GCC</p><p><b> 開(kāi)發(fā)語(yǔ)言:C語(yǔ)言</b></p><p> 第二章 總
6、體要求與設(shè)計(jì)</p><p><b> 2.1 設(shè)計(jì)要求:</b></p><p> Unix Shell是unix的命令解釋程序,用于讓用戶以一種友好的方式運(yùn)行程序和執(zhí)行命令。本設(shè)計(jì)要求在利用C或C++語(yǔ)言在linux環(huán)境下設(shè)計(jì)一個(gè)簡(jiǎn)單的命令解釋程序,實(shí)現(xiàn)shell的基本功能。即:用戶在命令行輸入命令(包括內(nèi)部命令和外部命令)及參數(shù),執(zhí)行該命令,以及實(shí)現(xiàn)輸入、輸
7、出重定向等功能。</p><p><b> 1)具體功能要求:</b></p><p> 試驗(yàn)環(huán)境為unix,編程語(yǔ)言為C或C++;</p><p> 整個(gè)程序必須經(jīng)過(guò)測(cè)試,完整實(shí)現(xiàn)所有基本功能;</p><p> 程序的運(yùn)行必須穩(wěn)定可靠,不得出現(xiàn)執(zhí)行某命令時(shí),系統(tǒng)無(wú)響應(yīng)或退出現(xiàn)象;</p><
8、;p> 程序編寫應(yīng)有良好的風(fēng)格,源程序必須有比較詳細(xì)的注釋;</p><p> 程序中不得使用system()系統(tǒng)調(diào)用;</p><p><b> 2)其它要求</b></p><p> 命令解釋程序的提示符為:@</p><p> 命令解釋程序把命令解釋為內(nèi)部命令和外部命令(要執(zhí)行的程序)。內(nèi)部命令直接
9、在命令解釋程序中執(zhí)行,外部命令則由解釋程序通過(guò)fork()創(chuàng)建一個(gè)子進(jìn)程,然后在子進(jìn)程中調(diào)用exec()執(zhí)行該程序;</p><p> 2.2 程序流程圖:</p><p> 圖2.1 程序流程圖</p><p><b> 2.3 主程序:</b></p><p> int main(int argc, char
10、 *argv[])</p><p> { </p><p><b> int i;</b></p><p><b> init();</b></p><p> while (exit1 == 0) </p><p><b> {<
11、/b></p><p> int ch = 0;</p><p> ch = GetCommand(Command, &NumberCommand);</p><p> switch (ch)</p><p><b> {</b></p><p><b> cas
12、e 1: </b></p><p> dir1(NumberCommand, Command);</p><p><b> break;</b></p><p><b> case 2:</b></p><p> cd(NumberCommand, Command);</p
13、><p><b> break;</b></p><p><b> case 3:</b></p><p> pwd(NumberCommand, Command);</p><p><b> break;</b></p><p><b>
14、 case 4:</b></p><p> md(NumberCommand, Command);</p><p><b> break;</b></p><p><b> case 5:</b></p><p> copy(NumberCommand, Command);&l
15、t;/p><p><b> break;</b></p><p><b> case 6:</b></p><p> date(NumberCommand, Command);</p><p><b> break;</b></p><p><
16、b> case 7: </b></p><p> Time(NumberCommand, Command);</p><p><b> break;</b></p><p><b> case 8:</b></p><p> ren(NumberCommand, Com
17、mand);</p><p><b> break;</b></p><p><b> case 9:</b></p><p> del(NumberCommand, Command);</p><p><b> break;</b></p><p&
18、gt;<b> case 10:</b></p><p> Exit1(NumberCommand, Command);</p><p><b> break;</b></p><p><b> case 11:</b></p><p> find(NumberCom
19、mand, Command);</p><p><b> break;</b></p><p><b> case 12:</b></p><p> more(NumberCommand, Command);</p><p><b> break;</b></p&
20、gt;<p><b> deluat:</b></p><p> printf("It is not Command in this progame!\n");</p><p><b> break;</b></p><p><b> }</b></p&
21、gt;<p><b> }</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> 第三章 主要模塊功能設(shè)計(jì)</p><p> 由于此次課程設(shè)計(jì)是以小組的形式完成的,本人主要完成了time、d
22、ate、pwd、md、ren這五個(gè)模塊。</p><p> 3.1 Time/Date模塊:</p><p> 1、算法思想:先判斷是否符合命令模塊的基本格式;不符合的話,則退出time/date模塊。符合的話,則對(duì)時(shí)間相關(guān)信息進(jìn)行保存;最后根據(jù)需要打印出相關(guān)信息。</p><p><b> 2、程序?qū)崿F(xiàn):</b></p>
23、<p> void date()</p><p><b> {</b></p><p> time_t timep;</p><p> struct tm *p;</p><p> char *wday[] = {"Sunday", "Monday", &q
24、uot;Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};</p><p> if (NumberCommand != 2) </p><p><b> {</b></p><p> p
25、rintf("usage: date directory_name\n");</p><p><b> return;</b></p><p><b> }</b></p><p> time(&timep);</p><p> p = gmtime(&t
26、imep);</p><p> printf("%d %d %d %s\n", (1900 + p->tm_year), (1 + p->tm_mon), p->tm_mday, wday[p->tm_wday]);</p><p><b> }</b></p><p> void Time()
27、</p><p><b> {</b></p><p> time_t timep;</p><p> struct tm *p;</p><p> char *wday[] = {"Sunday", "Monday", "Tuesday", "
28、;Wednesday", "Thursday", "Friday", "Saturday"};</p><p> if (NumberCommand != 2) </p><p><b> {</b></p><p> printf("usage: time
29、directory_name\n");</p><p><b> return;</b></p><p><b> }</b></p><p> time(&timep);</p><p> p = gmtime(&timep);</p><p&
30、gt; printf("%d %d %d %s %d:%d:%d\n", (1900 + p->tm_year), (1 + p->tm_mon), </p><p> p->tm_mday, wday[p->tm_wday], p->tm_hour + 8, p->tm_min, p->tm_sec);</p><p>&
31、lt;b> }</b></p><p> 3.2 MD模塊:</p><p> 1、算法思想:調(diào)用mkdir函數(shù)即可以實(shí)現(xiàn)創(chuàng)建一個(gè)目錄。</p><p><b> 2、程序?qū)崿F(xiàn):</b></p><p><b> void md()</b></p><
32、;p><b> {</b></p><p> if (NumberCommand != 3) </p><p><b> {</b></p><p> printf("usage: md directory_name\n");</p><p><b>
33、return;</b></p><p><b> }</b></p><p> if (mkdir(Command[1], S_IRUSR | S_IREAD) != 0) </p><p><b> {</b></p><p> printf("Create erro
34、r\n");</p><p><b> }</b></p><p><b> }</b></p><p> 3.3 PWD模塊:</p><p> 1、算法思想:直接打印當(dāng)前目錄pathname;</p><p><b> 2、程序?qū)崿F(xiàn):<
35、;/b></p><p> void pwd()</p><p><b> {</b></p><p> if (NumberCommand != 2) </p><p><b> {</b></p><p> printf("usage: pwd
36、directory_name\n");</p><p><b> return;</b></p><p><b> }</b></p><p><b> else </b></p><p><b> {</b></p>&l
37、t;p> printf("%s\n", pathname);</p><p><b> }</b></p><p><b> }</b></p><p> 3.3 REN模塊:</p><p> 1、算法思想:直接調(diào)用rename函數(shù);</p>&
38、lt;p><b> 2、程序?qū)崿F(xiàn):</b></p><p> void ren()</p><p><b> {</b></p><p> if (NumberCommand != 4) </p><p><b> {</b></p><p&
39、gt; printf("usage: ren directory_name\n");</p><p><b> return;</b></p><p><b> }</b></p><p> if (rename(Command[1], Command[2]) == 0)</p>
40、<p><b> {</b></p><p><b> ;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p>&l
41、t;p> printf("Rename error\n");</p><p><b> }</b></p><p><b> }</b></p><p><b> 第四章 總結(jié)</b></p><p> 幾周的課程設(shè)計(jì)終于可以結(jié)束了,在這幾周
42、里,我們感觸頗深。我們學(xué)到了很多東西,也暴露出了許多缺點(diǎn)。在寫程序的時(shí)候我們感覺(jué)到要想寫好一個(gè)程序,首先要有一個(gè)清晰的思路,只有思路清晰才能進(jìn)行下一階段的設(shè)計(jì),這樣才能很好的完成整個(gè)程序。由于平時(shí)缺乏鍛煉,很少去寫這種代碼較多的程序,我們發(fā)現(xiàn)在宏觀的控制和把握上很缺乏經(jīng)驗(yàn)。也許主要的問(wèn)題還是自己能力的問(wèn)題,語(yǔ)音運(yùn)用能力差,掌握性差,希望能在以后的學(xué)習(xí)中多一些這樣的機(jī)會(huì),多多鍛煉。</p><p><b>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)原理課程設(shè)計(jì)
- 操作系統(tǒng)原理課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)——操作系統(tǒng)課程設(shè)計(jì)模擬操作系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告--操作系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告
- 《操作系統(tǒng)》課程設(shè)計(jì)報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)-- 操作系統(tǒng)
- 操作系統(tǒng)原理課程設(shè)計(jì)報(bào)告-可變分區(qū)存儲(chǔ)管理
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告2014217151
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告2
- 操作系統(tǒng)程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告-操作系統(tǒng)模擬實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論