操作系统实验指导书_第1页
操作系统实验指导书_第2页
操作系统实验指导书_第3页
操作系统实验指导书_第4页
操作系统实验指导书_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、安全操作系统实验指导书赵锋2007-12-5绪论实验报告内容1,命令接口的使用2,多进程程序设计(同步、互斥、通信)3,linux的文件操作4,Socket网络编程实验报告的格式和要求实验报告的格式1,封皮(姓名 班级 学号)2,试验目的3,实验内容4,试验步骤5,试验结论实验报告的要求l 按照要求格式,字体用宋体,字号小四l 每个实验报告篇幅控制在6-8页l 总共8次试验课,需要写4个实验报告l 以班级为单位按时上交实验内容1,linux基本命令的使用: ls、cd、chmod等命令的使用2,linux命令接口的使用: Vi编辑器与shell程序的编写3,linux的C语言开发: gcc、g

2、db、make的使用4,linux多线程设计: fork等系统调用的使用5,linux下程序的同步: 同步算法的实现6,linux下程序的通信: 进程间的通信7,linux的文件操作: 有关文件操作的系统调用8,linux下的网络程序设计实验一 基本命令的使用实验目的 熟悉linux的基本命令 熟悉运用Linux的在线求助系统。(man info help)实验内容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,网络命令ifconfig(up/down) netstate (-t -p -u)5,进程管理ps (-a -f -x) ; pstree -pu ; kill -9 pid ; l

4、dconfigkillall reboot halt实验二 命令接口的使用实验目的 1熟练使用vi编辑器 2,熟悉Shell程序的设计实验内容: 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程序的编写环境变量 echo env set $ “” ? (1)熟悉shell script的结构和运行、调试方法。(2)熟悉shell script的变量声明方法及其输入输出。declare i a=3;read(3)熟悉shell script的分支结构。编写shell script文件test1.sh,判断用户根目录下是否有名为test的文件或者目录,如果有的话,将其删

6、除。if -e test ; then xxx else xxx fi (4)熟悉shell script的循环结构。编写shell script文件test2.sh,实现1到100所有奇数的和并输出。试验三 linux的C语言开发试验目的 熟悉gcc的使用 熟悉gdb的使用 熟悉make的使用试验内容1gcc (1)过程gcc hello.c o hello输入选项输出命令注释.c -E .i cpp预编译,文件包含、条件编译、宏展开.i -S .scc1 编译,生成汇编文件,注意命令的路径.s -c .o as汇编,生成目标文件.o ELFld链接(2)常用选项-v 显示进度-Wall 显

7、示警告信息-I头文件路径,不要空格-L库路径,不要空格-lName库名字(libName.或者libName.so)-shared编译成共享库-static 链接静态库-fpicfPIC 编译成共享库-On优化-Dmacro=BAR在命令行定义预处理宏FOO,其值为BAR -Wl,option 传递给ld程序option 选项,比如-Wl,-dn和-Wl,-dy注意区别: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)静态库的建立和使用a)建立gcc -c add.cgcc -c sub.car -r libaddsub.a add.o sub.o (查ar命令,注意/r/t/x的用法)b)调用gcc test2.c -o test2.static -I ./ -L ./ -Wl,-dn laddsub-Wl,-dn后面的库使用静态版本(5)共享库的建立和使用a

9、)建立 gcc -fpic -shared add.c sub.c -o libaddsub.sob)安装为了让动态链接库为系统所认识及共享, 就需要运行ldconfig命令。(man ldconfig,注意命令作用)默认目录/lib和/usr/lib配置文件/etc/ld.so.conf内所列的目录缓存文件/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)共享调用gcc test2.c -o test2 -I ./ -L ./ -Wl,-dy laddsub-Wl,-dy用于指定链接动态库版本,默认d)动态调用Linux 提供 4 个库函数(dlopen, dlerror, dlsym 和 dlclose),一个 include 文件(dlfcn.h)以及两个共享库(静态库 libdl.a 和动态库 libdl.so),以支持动态链接装入器。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查看文件的依赖关系nm查看文件的符号表,比如:nm test2|grep addobjdump 查看文件的信息2gd

12、b(1) 准备gcc -g(2) 打开gdb filename/file filename(3) 运行run/next/step(进入子程序)/continue(4) 设置断点break/delete(5) 显示表达式的值print exp立即输出表达式的值watch exp表达式的值发生变化时,程序停止并输出其新旧值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 执行命令 shell command str3make(1) Make命本: Make flags macro definitions targets flags如果没有"-f"参数,则系统将默认当前目录下名为makefile或者名为Makefile的文件为描述文件。在Linux中, GNU make 工具在当前工作目录中按照GNUmakefi

14、le、makefile、Makefile的顺序搜索 makefile文件。 macro definitionsmakefile文件中的变量定义 targetsmake的目标,默认是makefile文件中的第一个目标(2) makefile文件:规则的集合 a:b command a为目标。可以是.o,也可以是ELF,还可以是一个伪目标。 b为依赖文件。就是,要生成那个a所需要的文件或是目标。 command也就是make需要执行的,从b生成a的命令(3)其他变量:定义 CFLAGS=-c 引用 $(CFLAGS) 特殊变量$目标文件,$所有的依赖文件,$<第一个依赖文件命令:不显示命令内

15、容 命令出错不处理 - 多条相关命令 ;伪目标与自动推导: add.o : addsub.h .PHONY : clean clean :rm edit $(objects)文件搜索:特殊变量 VPATH=./include:./include特殊指令 vpath %.h ./include:./include4 实验任务(1)编写程序:main函数所在的文件名字为test3.c,程序功能为从键盘输入两个数求其和(调用add.c中的函数)和差(调用sub.c中的函数)。(2)编写一个makefile文件,并用make编译刚才的程序(3)设置断点,观察点,调试程序实验四 linux多进程设计实验

16、目的1.了解进程与程序的区别,加深对进程概念的理解;2.了解fork( )系统调用的返回值,掌握用fork()创建进程的方法;实验内容 1,用vi输入下面的程序,编译、调试、输出结果#include <sys/types.h>#include <unistd.h>int main()pid_t child_pid;/*fork函数*作用:系统调用,产生一个子进程,调用一次返回两次*返回值: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,试验任务编写一C语言程序,实现在程序运行时通过系统调用fork( )创建两个子进程,使父、子三进程并发执行,父亲进程执行时屏幕显示“I am father”,儿子进程执行时屏幕显示“I

18、 am son”,女儿进程执行时屏幕显示“I am daughter”。实验五 Linux进程间的同步实验目的1.掌握进程并发执行的原理,理解进程并发执行的特点,区分进程并发执行与串行执行;2.熟悉wait、exit等系统调用。 3.熟悉信号同步的方法。实验内容 1.用man察看wait、exit的用法 2.修改实验四的程序,在父、子进程中分别使用wait、exit等系统调用“实现”其同步推进,多次反复运行改进后的程序,观察并记录运行结果。实验六 Linux进程间的通信实验目的学习如何利用管道机制、消息缓冲队列、共享存储区机制进行进程间的通信,并加深对上述通信机制的理解。实验内容1了解系统调用

19、pipe()、msgget()、msgsnd()、msgrcv()、msgctl()、shmget()、shmat()、shmdt()、shmctl()的功能和实现过程。semget() semop() semctl()2编写一C语言程序,使其用管道来实现父子进程间通信。子进程向父进程发送字符串“is sending a message to parent!”;父进程则从管道中读出子进程发来的消息,并将其显示到屏幕上,然后终止。3运行该程序,观察、记录并简单分析其运行结果。实验七 Linux文件操作实验目的复习标准C语言的文件操作函数,熟悉linux有关文件操作的系统调用,并理解他们之间的关系

20、。实验内容1、标准的文件操作的函数#include <stdio.h>文件指针(FILE)fopen/fclose,fread/fwrite,fputc/fgetc,fprintf/fscanf,fseek/frewind,remove,rename,feof 2、系统调用中的文件操作#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中输入你的姓名和学号;在b.bin中输入你的年龄

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论