西安交通大学
操作系统课内实验报告
________________________________________________________________________________________
班级:电信硕01 学号:10058007 姓名: 樊 斌 2013/5/31
操作系统课内实验报告
目录
1内核编译与系统调用 .......................................................................................................... 2
1.1实验目的............................................................................................................................. 2 1.2实验内容............................................................................................................................. 2 1.3实验思想(或流程图) .................................................................................................... 2 1.4实验步骤 ............................................................................................................................ 2 1.5测试数据设计????????????????????????????? 5 1.6程序运行初值及运行结果分析?????????????????????? 5 1.7实验总结??????????????????????????????? 6 1.8附件???????????????????????????????? 7 2. Linux源码分析 .................................................................................................................. 7
2.1实验目的 ???????????????????????????????7 2.2实验内容 ???????????????????????????????7 2.3数据结构 ???????????????????????????????7 2.4常量和出错信息的意义?????????????????????????10
2.5各模块/函数详细框图 ?????????????????????????10 2.5.1do_fork模块 ?????????????????????????? 10 2.5.2 get_pid模块???????????????????????????13
2.5.3 do_execve模块...................................................................................................... 16 2.5.4 do_exit模块 ........................................................................................................... 19 2.5.5 sys_wait4模块 .................................................................................................... 22 2.6实验总结 ??????????????????????????????24
3.编程设计实现进程同步和通信 ......................................................................................... 25
3.1实验目的 .......................................................................................................................... 25 3.2实验内容 .......................................................................................................................... 25 3.3实验思想(或流程图) .................................................................................................. 25 3.4实验步骤 .......................................................................................................................... 27
3.5程序运行初值及运行结果分析??????????????????????27 3.6实验总结 .......................................................................................................................... 30 3.7附件 .................................................................................................................................. 30
2
操作系统课内实验报告
1内核编译与系统调用
1.1实验目的
1. 熟悉Linux操作系统的安装步骤,建立实验环境, 并了解Linux的最基本操作;
2. 学会编译内核,并且构建安装自己的Linux内核;
3. 掌握系统调用的设计过程,为以后设计更复杂的系统调用奠定基础
1.2实验内容
1. 安装Linux,熟悉Linux的操作,并编译内核,构建、使用自己的Linux内核;
2. 设计一个系统调用,功能为在内核日志中打印“Hello ,My ,World”,重新编译内核予以验证。
1.3实验思想(或流程图)
本实验首先在虚拟机的环境下安装好一种Linux的发行版本,然后修改(或者升级)其内核,接着把修改后的内核进行编译,重新安装,在重启后验证内核修改是否成功。然后再在新内核中设计自己的系统调用,重复上述步骤,最后重启,编写测试代码,验证自己系统调用是否成功
1.4实验步骤
1.安装虚拟机
虚拟机的版本很多,实验指导推荐安装Vmware,因此我在网上下载了最新的版本Vmware Workstation 9. 2.在虚拟机上搭建Linux平台
Linux的发行版本有很多,如Redhat,Redflag,当然最近据说国防科大跟Ubuntu合作,发行了Ubuntu麒麟版,为了可靠起见,我还是沿用以前安装过的Ubuntu12.04,这是当前发行最稳定的版本。
3
操作系统课内实验报告
首先我们在网上下载其镜像文件,然后依照实验指导书上的步骤安装,为了方便起见,我选择了汉语版,设置了自己的用户名和密码。 3.虚拟机与Windows共享文件
为了使虚拟机能和主机更好的联系,须在虚拟机上安装Vmware tools,这部分我是在网上找的教程,由于版本的发行相对来说比较晚,所以教程也比较少,再加上刚开始接触ubuntu,对它的命令也不是太了解,因此安装着费了一番功夫。首先在菜单栏中点击VM—>Vmware tools install,cancel updating,然后会在ubuntu的文件系统中找到media,点击进入可见VmwareTools-9.2.3-1031360.tar.gz,将其移动到桌面上,然后解压缩到usr/src中,进入该文件再运行vmware install.pl文件,便可安装,最终出现enjoy,表示安装成功,并设置D盘为共享盘,然后进入终端,输入命令:sudomkdir /mnt/share,这条命令是在mnt文件夹新建一个share文件夹。然后输入命令:sudo mount -t vmwaresf D_DRIVE /mnt/share,这样就设置好了。能实现主机与虚拟机间互相拖动文件。
开始安装虚拟机时,由于网上教程手动分配磁盘,分的sda1为10G,sda2,sda4都不足10G,导致内核编译一半时提示磁盘容量不足,没办法又重新安装虚拟机,分配20G才解决问题。
4.下载新内核压缩包并解压
由于安装的ubuntu12.04已经是很高版本的内核了(3.2.0-24),一般的指导都以2.6的内核举例,但我不想把内核降级,所以我去官网上下载了最新最稳定版本的Linux内核版本Linux3.8.4,但是这也给我下面的实验带来了不少麻烦。感觉在windows下载稍快些,因此在windows系统中将压缩包linux-3.8.4.tar.xz下载下来,并拖动到ubuntu窗口中,并解压到usr/src中,解压过程同上述安装Vmware tools,由于在终端解压到指定文件夹,尝试了几个命令都不行,就用了一个比较偷懒的方法,先解压到桌面上,再在终端输入mv $cd /home/fanbin/桌面/linux-3.8.4/$cd /usr/src,将其移动到指定文件夹中,效果一样。 5. 编译内核和编译模块
依照实验指导书上的说明,
首先安装基本软甲与库文件,终端输入命令sudo apt-get install libncurses5-dev 然后进入目录linux-3.8.4,输入命令 make menuconfig
编译内核输入命令前,输入命令make clean, make mrproper ,然后再输入make bzImage,大概过了快一个小时内核编译完毕。
在终端输入命令make modules 来编译模块,此次时间更长,用了大概两个小时才完成。
4