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

下載本文檔

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

文檔簡介

1、安全操作系統(tǒng)實驗指導(dǎo)書趙鋒2007-12-5緒論實驗報告內(nèi)容1,命令接口的使用2,多進程程序設(shè)計(同步、互斥、通信)3,linux的文件操作4,Socket網(wǎng)絡(luò)編程實驗報告的格式和要求實驗報告的格式1,封皮(姓名 班級 學(xué)號)2,試驗?zāi)康?,實驗內(nèi)容4,試驗步驟5,試驗結(jié)論實驗報告的要求l 按照要求格式,字體用宋體,字號小四l 每個實驗報告篇幅控制在6-8頁l 總共8次試驗課,需要寫4個實驗報告l 以班級為單位按時上交實驗內(nèi)容1,linux基本命令的使用: ls、cd、chmod等命令的使用2,linux命令接口的使用: Vi編輯器與shell程序的編寫3,linux的C語言開發(fā): gcc、g

2、db、make的使用4,linux多線程設(shè)計: fork等系統(tǒng)調(diào)用的使用5,linux下程序的同步: 同步算法的實現(xiàn)6,linux下程序的通信: 進程間的通信7,linux的文件操作: 有關(guān)文件操作的系統(tǒng)調(diào)用8,linux下的網(wǎng)絡(luò)程序設(shè)計實驗一 基本命令的使用實驗?zāi)康?熟悉linux的基本命令 熟悉運用Linux的在線求助系統(tǒng)。(man info help)實驗內(nèi)容1,文件與磁盤操作man/info cd ls(-a -l -h -t) cp(-R -f -l) mv cat/less/more pwd mkdir rm(-r -f) chmod -R user:group file find

3、(-name -user) grep df(-h) mount /umount clear time 2,用戶管理useradd (-g -d -s -G) userdel (-r) passwd groupadd/groupdelgpasswd(-a -d) su kernelversion hostname3,軟件安裝rpm( -i -e -ivh -U -q -qa -qd -ql -qi -qR)tar4,網(wǎng)絡(luò)命令ifconfig(up/down) netstate (-t -p -u)5,進程管理ps (-a -f -x) ; pstree -pu ; kill -9 pid ; l

4、dconfigkillall reboot halt實驗二 命令接口的使用實驗?zāi)康?1熟練使用vi編輯器 2,熟悉Shell程序的設(shè)計實驗內(nèi)容: 1 vi編輯器的使用1,三種模式進入命令模式vi <文件名>進入編輯模式i/I a/A o/O ESC進入特殊模式:q :q! :e!:w :wq :wq file :n1,n2 w file:r file:e filename :!command2,光標移動b e j k l h 0 $ ctrl+f ctrl+bn+space n+enter 6G G H L3,刪除操作x dw D dd4,替換操作r cw C cc5,查詢命令/a

5、bc ?abc n N :n1,n2 s/word1/word2/gc6,拷貝粘貼y Y 2yy p P 7,其他命令:set nu; :set nonu; u .;v y pgf CTRL-SHIFT-62 shell程序的編寫環(huán)境變量 echo env set $ “” ? (1)熟悉shell script的結(jié)構(gòu)和運行、調(diào)試方法。(2)熟悉shell script的變量聲明方法及其輸入輸出。declare i a=3;read(3)熟悉shell script的分支結(jié)構(gòu)。編寫shell script文件test1.sh,判斷用戶根目錄下是否有名為test的文件或者目錄,如果有的話,將其刪

6、除。if -e test ; then xxx else xxx fi (4)熟悉shell script的循環(huán)結(jié)構(gòu)。編寫shell script文件test2.sh,實現(xiàn)1到100所有奇數(shù)的和并輸出。試驗三 linux的C語言開發(fā)試驗?zāi)康?熟悉gcc的使用 熟悉gdb的使用 熟悉make的使用試驗內(nèi)容1gcc (1)過程gcc hello.c o hello輸入選項輸出命令注釋.c -E .i cpp預(yù)編譯,文件包含、條件編譯、宏展開.i -S .scc1 編譯,生成匯編文件,注意命令的路徑.s -c .o as匯編,生成目標文件.o ELFld鏈接(2)常用選項-v 顯示進度-Wall 顯

7、示警告信息-I頭文件路徑,不要空格-L庫路徑,不要空格-lName庫名字(libName.或者libName.so)-shared編譯成共享庫-static 鏈接靜態(tài)庫-fpicfPIC 編譯成共享庫-On優(yōu)化-Dmacro=BAR在命令行定義預(yù)處理宏FOO,其值為BAR -Wl,option 傳遞給ld程序option 選項,比如-Wl,-dn和-Wl,-dy注意區(qū)別:gcc hello.c o hello.static Wl,-dn-Bstatic-staticgcc hello.c o hello.dynaticWl,-dy-Bdynamic 默認(3)c+編寫hello.cxx程序:#

8、include <iostream.h>using namespce std;int main()Cout<<”hello”<<endl;Return 0;編譯命令:g+ hello.cxx -o hello(4)靜態(tài)庫的建立和使用a)建立gcc -c add.cgcc -c sub.car -r libaddsub.a add.o sub.o (查ar命令,注意/r/t/x的用法)b)調(diào)用gcc test2.c -o test2.static -I ./ -L ./ -Wl,-dn laddsub-Wl,-dn后面的庫使用靜態(tài)版本(5)共享庫的建立和使用a

9、)建立 gcc -fpic -shared add.c sub.c -o libaddsub.sob)安裝為了讓動態(tài)鏈接庫為系統(tǒng)所認識及共享, 就需要運行l(wèi)dconfig命令。(man ldconfig,注意命令作用)默認目錄/lib和/usr/lib配置文件/etc/ld.so.conf內(nèi)所列的目錄緩存文件/etc/ld.so.cache四種安裝方式:#cp libaddsub.so /usr/bin #ldconfig #pwd>>/etc/ld.so.conf #ldconfig #ldconfig pwd /更新緩存無效 #export LD_LIBRARY_PATH=&q

10、uot;." /另開shell則無效c)共享調(diào)用gcc test2.c -o test2 -I ./ -L ./ -Wl,-dy laddsub-Wl,-dy用于指定鏈接動態(tài)庫版本,默認d)動態(tài)調(diào)用Linux 提供 4 個庫函數(shù)(dlopen, dlerror, dlsym 和 dlclose),一個 include 文件(dlfcn.h)以及兩個共享庫(靜態(tài)庫 libdl.a 和動態(tài)庫 libdl.so),以支持動態(tài)鏈接裝入器。gcc test2.c -o test2 ldl參考:#include <stdio.h>#include <dlfcn.h>int

11、 main()int a,b;scanf("%d,%d",&a,&b);void *pHandle;int (*sub)(int m,int n);pHandle=dlopen("libsub.so",RTLD_LAZY);sub=dlsym(pHandle,"sub");printf("%dn",sub(a,b);dlclose(pHandle);return 0;附:幾個命令ldd查看文件的依賴關(guān)系nm查看文件的符號表,比如:nm test2|grep addobjdump 查看文件的信息2gd

12、b(1) 準備gcc -g(2) 打開gdb filename/file filename(3) 運行run/next/step(進入子程序)/continue(4) 設(shè)置斷點break/delete(5) 顯示表達式的值print exp立即輸出表達式的值watch exp表達式的值發(fā)生變化時,程序停止并輸出其新舊值display exp程序一旦停止就顯示表達式的值(6) 顯示棧的信息backtrace/backtrace fullframe traceNum(7) 顯示程序的信息list/list num/list funcinfo breakpoints/info breakinfo f

13、unc/into var /info filesinfo local /info prog/info argsdisassemble func/info frame/ examine(x) addr(8) 退出quit 幫助help 執(zhí)行命令 shell command str3make(1) Make命本: Make flags macro definitions targets flags如果沒有"-f"參數(shù),則系統(tǒng)將默認當(dāng)前目錄下名為makefile或者名為Makefile的文件為描述文件。在Linux中, GNU make 工具在當(dāng)前工作目錄中按照GNUmakefi

14、le、makefile、Makefile的順序搜索 makefile文件。 macro definitionsmakefile文件中的變量定義 targetsmake的目標,默認是makefile文件中的第一個目標(2) makefile文件:規(guī)則的集合 a:b command a為目標。可以是.o,也可以是ELF,還可以是一個偽目標。 b為依賴文件。就是,要生成那個a所需要的文件或是目標。 command也就是make需要執(zhí)行的,從b生成a的命令(3)其他變量:定義 CFLAGS=-c 引用 $(CFLAGS) 特殊變量$目標文件,$所有的依賴文件,$<第一個依賴文件命令:不顯示命令內(nèi)

15、容 命令出錯不處理 - 多條相關(guān)命令 ;偽目標與自動推導(dǎo): add.o : addsub.h .PHONY : clean clean :rm edit $(objects)文件搜索:特殊變量 VPATH=./include:./include特殊指令 vpath %.h ./include:./include4 實驗任務(wù)(1)編寫程序:main函數(shù)所在的文件名字為test3.c,程序功能為從鍵盤輸入兩個數(shù)求其和(調(diào)用add.c中的函數(shù))和差(調(diào)用sub.c中的函數(shù))。(2)編寫一個makefile文件,并用make編譯剛才的程序(3)設(shè)置斷點,觀察點,調(diào)試程序?qū)嶒炈?linux多進程設(shè)計實驗

16、目的1.了解進程與程序的區(qū)別,加深對進程概念的理解;2.了解fork( )系統(tǒng)調(diào)用的返回值,掌握用fork()創(chuàng)建進程的方法;實驗內(nèi)容 1,用vi輸入下面的程序,編譯、調(diào)試、輸出結(jié)果#include <sys/types.h>#include <unistd.h>int main()pid_t child_pid;/*fork函數(shù)*作用:系統(tǒng)調(diào)用,產(chǎn)生一個子進程,調(diào)用一次返回兩次*返回值:pid_t類型,在頭文件中定義,通常為整形*0子進程返回*ID父進程返回的子進程ID*/child_pid=fork();if(child_pid=0)int i=0;for(;i&l

17、t;5;i+)printf("childn");sleep(1);/wait one secondelseprintf("child's pid is %d",child_pid);int j=0;for(;i<5;i+)printf("childn");sleep(1);return 0; 2,用man察看fork、sleep的用法 3,試驗任務(wù)編寫一C語言程序,實現(xiàn)在程序運行時通過系統(tǒng)調(diào)用fork( )創(chuàng)建兩個子進程,使父、子三進程并發(fā)執(zhí)行,父親進程執(zhí)行時屏幕顯示“I am father”,兒子進程執(zhí)行時屏幕顯示“I

18、 am son”,女兒進程執(zhí)行時屏幕顯示“I am daughter”。實驗五 Linux進程間的同步實驗?zāi)康?.掌握進程并發(fā)執(zhí)行的原理,理解進程并發(fā)執(zhí)行的特點,區(qū)分進程并發(fā)執(zhí)行與串行執(zhí)行;2.熟悉wait、exit等系統(tǒng)調(diào)用。 3.熟悉信號同步的方法。實驗內(nèi)容 1.用man察看wait、exit的用法 2.修改實驗四的程序,在父、子進程中分別使用wait、exit等系統(tǒng)調(diào)用“實現(xiàn)”其同步推進,多次反復(fù)運行改進后的程序,觀察并記錄運行結(jié)果。實驗六 Linux進程間的通信實驗?zāi)康膶W(xué)習(xí)如何利用管道機制、消息緩沖隊列、共享存儲區(qū)機制進行進程間的通信,并加深對上述通信機制的理解。實驗內(nèi)容1了解系統(tǒng)調(diào)用

19、pipe()、msgget()、msgsnd()、msgrcv()、msgctl()、shmget()、shmat()、shmdt()、shmctl()的功能和實現(xiàn)過程。semget() semop() semctl()2編寫一C語言程序,使其用管道來實現(xiàn)父子進程間通信。子進程向父進程發(fā)送字符串“is sending a message to parent!”;父進程則從管道中讀出子進程發(fā)來的消息,并將其顯示到屏幕上,然后終止。3運行該程序,觀察、記錄并簡單分析其運行結(jié)果。實驗七 Linux文件操作實驗?zāi)康膹?fù)習(xí)標準C語言的文件操作函數(shù),熟悉linux有關(guān)文件操作的系統(tǒng)調(diào)用,并理解他們之間的關(guān)系

20、。實驗內(nèi)容1、標準的文件操作的函數(shù)#include <stdio.h>文件指針(FILE)fopen/fclose,fread/fwrite,fputc/fgetc,fprintf/fscanf,fseek/frewind,remove,rename,feof 2、系統(tǒng)調(diào)用中的文件操作#include <unistd.h>#incldue <sys/types.h>#include <sys/stat.h>#include <fcntl.h>文件描述符(int)open/close,creat/unlink,read/write,lseek,eof mkdir/rmdir,opendir/closedir,readdir,stat,access3建立一個目錄(mkdir),在目錄下建立兩個文件(creat)a.txt、b.bin;在a.txt中輸入你的姓名和學(xué)號;在b.bin中輸入你的年齡

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論