资源描述:
《操作系统-linux课程实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验1.1、1.2LinuxUbuntu的安装、创建新的虚拟机VMWare实验1.3Shell编程1.实验目的与内容通过本实验,了解Linux系统的shell机制,掌握简单的shell编程技巧。编制简单的Shell程序,该程序在用户登录时自动执行,显示某些提示信息,如“WelcometoLinux”,并在命令提示符中包含当前时间、当前目录和当前用户名等基本信息。2.程序源代码清单#include#includeintmain(){printf("HelloLinux");
2、intpid;intstate;intpfd[2];pipe(pfd);if(fork()==0){printf("Inthegrepprogress");dup2(pfd[0],0);close(pfd[0]);close(pfd[1]);execlp("grep","grep","sh",0);perror("exelpgreperror");}esleif(fork()==0){printf("Inthepsprogress");dup2(pfd[1],1);close(pfd[0]);close(pf
3、d[1]);execlp("ps","ps","-ef",0);perror("execlpps-ef");}close(pfd[1]);close(pfd[0]);wait(&state);wait(&state);}实验2.3内核模块实验步骤:(1).编写内核模块文件中主要包含init_clock(),exit_clock(),read_clock()三个函数。其中init_clock(),exit_clock()负责将模块从系统中加载或卸载,以及增加或删除模块在/proc中的入口。read_clock()负责产
4、生/proc/clock被读时的动作。(2).编译内核模块Makefile文件#Makefileunder2.6.25ifneq($(KERNELRELEASE),)#kbuildsyntax.dependencyrelationshsipoffilesandtargetmodulesarelistedhere.obj-m:=proc_clock.oelsePWD:=$(shellpwd)KVER?=$(shelluname-r)KDIR:=/lib/modules/$(KVER)/buildall:$(MAKE)-
5、C$(KDIR)M=$(PWD)modulesclean:rm-rf.*.cmd*.o*.mod.c*.ko.tmp_versions*.symvers*.orderendif编译完成之后生成proc_clock.ko模块文件。(3).内核模块源代码clock.c#include#include#include#include#include#includ
6、e#defineMODULE#defineMODULE_VERSION"1.0"#defineMODULE_NAME"clock"structproc_dir_entry*my_clock;intread_clock(char*page,char**start,off_toff,intcount,int*eof,void*data){intlen;structtimevalxtime;do_gettimeofday(&xtime);len=sprintf(page,"%d%d",xt
7、ime.tv_sec,xtime.tv_usec);printk("clock:read_func()");returnlen;}structproc_dir_entry*clock_proc_file;intinit_clock(void){clock_proc_file=create_proc_read_entry("clock",0,NULL,read_clock,NULL);return0;}voidexit_clock(void){remove_proc_entry("clock",clock_proc
8、_file);}module_init(init_clock)module_exit(exit_clock)MODULE_LICENSE("GPL");(4).编译内核模块#make(5).加载内核模块在系统root用户下运行用户态模块命令装载内核模块#insmodproc_clock.ko(6).测试在终端中输入以下命令:#cat/proc/