文档介绍:课程实验报告题目: 操作系统原理 专业班级:信息安全1302班学号: 姓名: 指导教师: 报告日期:2016年2月29日计算机科学与技术学院初探Linux编程环境 1实验目的 1实验内容 1实验一 1实验二 1实验设计 1实验一 1实验二 2实验环境 3实验步骤 3实验一 3实验二 3调试记录 4实验一 4实验二 4实验结果 5实验一 5实验二 6通过编译内核的方式为Linux增加系统调用 8实验目的 8实验内容 8实验设计 8实验环境 8实验步骤 8调试记录 10实验结果 11编写设备驱动程序 13实验目的 13实验内容 13实验设计 13实验环境 14实验步骤 14调试记录 15实验结果 15实现系统监控程序 17实验目的 17实验内容 1743 实验设计 18实验环境 22实验步骤 22调试记录 22实验结果 23设计模拟文件系统 28实验目的 28实验内容 28实验设计 28实验环境 33实验步骤 34调试记录 34实验结果 34附注:程序清单 40文件拷贝程序 40多进程多窗口实验 41编译内核添加系统调用 42编写模块 44任务监视器 50模拟文件系统 651・初探Linux编程环境实验目的掌握Linux操作系统的使用方法,包括键盘命令、系统调用;掌握在Linux下的编程环境,了解在Linux如何进行多线程编程以及图形编程。实验内容实验一编写一个C程序,其内容为实现文件拷贝的功能。要求使用系统调用open、read>writeo实验二编写一个C程序,其内容为分窗口同时显示三个并发进程的运行结果。耍求用到Linux下的图形库(Gtk/Qt)。,就是将源文件的内容全部拷贝到新的文件中,产生一个与源文件一模一样的副本。因此,文件拷贝的实质就是数据的转移。在Linux系统中,文件拷贝的功能比较简单,其核心流程如图1・1所示。,并在这三个并发的进程中分别显示窗口。因此,很容易就想到可以使用利用一个主控程序來启动三个不同的窗口程序的方式来完成本实验。因此本实验也是比较简单的。本实验屮,我首先写了一个“主控程序”,用来创建三个进程来启动另外的三个窗口程序,这三个窗口程序中,有两个是单一的窗口程序,而第三个窗口程序则又创建了4个进程来进行不同的计算操作。“主控程序”非常简单,就是使用了3个fork系统调用来创建3个新的进程,再在进程屮使用execl()函数来调用我已经编制完成的三个窗口程序。在主程序的最后,我还使用了三个wait(NULL)函数用來等待所创建的子进程结束,并起到回收“僵尸进程”的作用。三个窗口程序中,前两个单一的窗口程序都非常简单。第一个程序的作用是在窗口屮显示一个图片文件,它的实现方式就是将图片加载进程序的资源屮,然后在窗口屮添加一个QLabel,再用QLabel显示这个图像;第二个窗口文件是在窗口的QLabel控件屮动态显示当前时间,它是使用了QTimer这个定时器,给它设置一个回调函数,用来定时地获取时间并将时间显示在QLabel中。其屮,。相比起前两个窗口程序,第三个稍微复杂一些。它是在程序中创建了4个进程,并且申请了5个缓冲区和9个信号灯来控制着4个进程的行为。在进程创建的时候,窗口程序通过excel()函数将创建的为各进程创建的共享内存区的ID与信号灯ID传递给各进程,让其可以正常工作。其屮,这4个进程运行的都是同一个程序,它们唯一不同的地方就是在执行的时候传递给它们的参数。主进程在子进程启动后,又会启动一个线程,来定时获取各进程的计算结果,并将其显示在窗口屮。子进程的执行流程如图1・2所示。而窗口程序屮线程获取各子进程的计算结果以及向子进程发出退出信号等的方式与子进程屮对共享内存区的操作相同,因此这里就不再列岀窗口程序屮的代码流程了。图1・2第三个窗口程序中子进程的执行流程实验环境硬件平台: VMware虚拟机,2G内存,2个CPU核心,40G虚拟硬盘空间操作系统:,-49-generic编译器: ::-bit实验步骤实验一首先,我查询了open、read、write这三个系统调用的相关资料,了解了它们的大概用法;接着,我就开始按照既定的算法编制程序了。等程序编制完成后,我使用一个文本文件来进行测试,检查复制的文件与先前的文件是否一样。-,结果表明程序运行正常。实验二在此使用中,我首先编写了要在子进程中运行的三个窗口程序,其中,第三个窗口程序我也是采