1 / 14
文档名称:

操作系统实验报告.doc

格式:doc   大小:55KB   页数:14页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

操作系统实验报告.doc

上传人:xnzct26 2022/1/21 文件大小:55 KB

下载得到文件列表

操作系统实验报告.doc

相关文档

文档介绍

文档介绍:-
. z
课程 设计报告
课程名称:操 作 系 统
专业班级:
学 号:
姓 名:
报告日期:生〔关闭窗口、点击按钮等〕,并捕获该信号,告诉GTK程序应该调用哪个回调函数进展相应的处理,并在终端中显示结果。
编写gtk程序:1 初始化Gtk; 2 建立控件; 3 登记消息与消息处理
函数; 4 执行消息循环函数gtk_main();只有gtk_main_quit()函数才能停顿Gtk+的执行,从而最终退出应用程序。把gtk_main_quit()函数放在*个消息处理函数之中
编译和执行gtk程序:程序中用到Gtk+函数或定义的每一局部必须包含
gtk/,此外,还必须连接假设干库。gcc -o hello `gtk-config --cflags``gtk-config --libs` 反引号〔在键盘上位于字符1的左边〕, chmod -777 hello〞将hello设定为可执行的文件。
Linu*编程环境
函数库:glibc :要构架一个开发环境,glibc是必不可少的,它是Linu*下C的主要函数库。
编译器 :gcc(GNU Cpiler)是GNU推出的功能强大、性能优越的多平台编译器,gcc编译器能将C、C++语言源程序、汇编程序和目标程序编译、连接成可执行文件.
系统头文件:glibc_header,缺少了系统头文件 ,就会无法编译C源程序
其他软件: vi, rpm , tar, binutils, make
算法设计及分析
文件拷贝
设计思路:A,用open函数翻开源文件,并做出错处理;B,用open函数
以创立的方式翻开目的文件,并作出错处理;C,用read函数循环从源文件中读出BUFFER_SIZE个字节的字符,wirte函数写入目的文件,至文件全部写完;D,关闭源文件和目的文件。
-
. z
分窗口显示三进程
软件实现:用gtk实现图形界面。
设计思路:main函数中,用fork创立子进程和父进程,子进程实现 ./time 可执行文件,父进程再次调用fork创立二个进程。再为每个进程设计一个弹框
实验步骤
这个实验比拟简单,首先编写源程序,后编译,再执行。
需要注意的是,显示三个进程的实验编译时,使用的命令为:假设源程序名为“〞
gcc `pkg-config --cflags --libs gtk+-` -o col
而且首先分别编译好三个子程序,再编译main程序,最后运行main可执行文件。
这里因为使用了gtk,故编译的命令和以前直接编译有所不同。
源程序及注释
见电子档
程序测试及结果
实验二

掌握系统调用的实现过程,通过编译内核方法,增加一个新的系统调用。另编写一个应用程序,调用新增加的系统调用。
(1) 实现的功能是:文件拷贝;
(2) 实现的功能是:P、V操作。
实验知识准备
系统调用
Linu*内核中设置了一组用于实现各种系统功能的子程序,称为系统调用。用户可以通过系统调用命令在自己的应用程序中调用它们。
关键字:系统调用 核心态 操作系统核心提供
普通的函数调用 用户态 函数库或用户自己提供
很多已经被我们****以为常的C语言标准函数,在Linu*平台上的实现都是靠系统调用完成的,如 open(), close(), malloc(), fork() .
系统调用工作原理
用户权限不能内核所占内存空间,也不能调用内核函数。
-
. z
进程调用一个特殊的指令,这个指令会跳到一个事先定义的内核中的一个位置〔当然,这个位置是用户进程可读但是不可写的〕。在Intel CPU中,这个由中断INT0*80实现。 (与DOS功能调用int0*21很相似) 跳转到的内核位置叫做sysem_call。检查系统调用号,这个代表进程请求哪种效劳。然后,它查看系统调用表(sys_call_table)找到所调用的内核函数入口地址。接着,就调用函数,等返回后,做一些系统检查,最后返回到进程〔或到其他进程,如果这个进程时间用尽〕。