河北工业大学2014操作系统实验报告 下载本文

内容发布更新时间 : 2024/6/2 5:35:47星期一 下面是文章的全部内容请认真阅读。

5、分析程序的运行结果。

首先生产者3生产了产品3,然后生产者1生产了产品1,最后生产者4生产了产品4. 消费时,消费者5消费产品3,然后消费2消费产品1,最后消费者5消费产品4. 四、实验总结

请总结一下本次实验的收获、教训和感受,结合课本内容谈一下你对进程间控制的理解。

深刻了解了生产者消费者进程,进一步理解了“生产者-消费者”模型。进一步理解P、V原语和信号量在线程互斥和同步机制中的运用,我进一步明白了进程间同步的概念。我也进一步掌握了基本的互斥与同步算法,特别是生产者消费者算法。我也学会了如何通过Windows中的同步信号量、互斥信号量的创建和使用,来实现进程之间或线程之间的同步与互斥。还有临界区的创建和使用,线程的创建。

实验四 页式存储管理部分功能模拟

一、实验目的

(1)了解存储器的管理任务和功能

(2)了解 Windows 存储器管理模式和特点 (3)深入了解页式存储管理如何实现地址转换 (4)进一步认识页式存储管理中如何处理缺页中断 (5)掌握几种页面置换算法的实现方法 二、实验内容和步骤 1、实验内容 1、j = p[head];

2、p[head] = lnumber;

3、head = (head + 1) % m; 4、if(page[j].write == 1) 5、page[j].flag = 0;

6、page[lnumber].flag = 1; 7、page[lnumber].write = 0;

8、page[lnumber].pnumber = page[j].pnumber; 9、page[j].pnumber, 10、j,

11、page[lnumber].dnumber, 12、Lnumber

13、lnumber = laddress >> 10; //分离逻辑地址 14、ad = laddress & 0x03FF; 15、page_interrupt(lnumber);

16、pnumber = page[lnumber].pnumber; 17、paddress = pnumber << 10 | ad; 18、page_interrupt(lnumber); 19、page[i].lnumber = lnumber; 20、page[i].flag = 0; 21、page[i].write = 0;

22、page[i].dnumber = dnumber; 23、i++;

24、page[m].pnumber = pnumber; 25、page[m].flag = 1; 26、p[m] = m; 27、m ++;

28、command(laddress, write); 2、程序运行结果及简要分析

9

结果分析:

首先输入页号和辅存地址,如上图,输入1、1000,2、2000,3、3000,4、4000,5、5000. 然后输入主存块号,确定主存块数为2,主存块数分别是1、2.

最后,我们就可以模拟程序运行了,首先输入了一条需要修改内存的指令,逻辑地址为1000,因为没有在内存里,因此发生缺页中断,执行中断服务程序,淘汰主存块1中的页,从磁盘第5000块中调入页4。第二次输入0 2000,依然发生缺页中断。第三次时,输入1 3000,此时淘汰的页4修改过,因此要将页4写回磁盘第5000块。其他类似。 三、实验总结

请总结一下本次实验的收获、教训和感受,结合课本相关内容谈一下你对 Windows 2000 内存管理的理解。

通过本实验我了解了请求页式存储的基本实现,用户应用进程以32位虚拟地址方式编址,每个虚拟地址与一个称作“页表端”的结构有关,它包含了虚拟地址映射的物理地址,了解了虚拟存储器的工作原理,以及虚存如何在操作系统中实现的。还有就是,当发生缺页中断时,操作系统如何将外部磁盘中的信息调入内存中,在调入内存中之前,先用页面置换算法将每一页置换出去。内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。

实验五 设备管理模拟实验

一、实验目的

(1) 了解 Windows 操作系统中设备驱动程序的组成 (2) 理解 Windows 操作系统的设备管理机制

(3) 掌握 Windows 操作系统关于设备管理的 API 函数的使用方法 (4) 了解并掌握 Windows 中鼠标、键盘等简单设备的检测方法 二、实验内容和步骤

1、SystemParametersInfo(SPI_SETMOUSEBUTTONSWAP,0,NULL,NULL);//鼠标改为右手习惯 2、SystemParametersInfo(SPI_SETMOUSEBUTTONSWAP,1,NULL,NULL);//鼠标改为左手习惯 3、iFunctionKeynum = GetKeyboardType(2); 4、Beep(iFreq[j], 300); 三、程序运行结果及简要分析

结果分析:通过输入1、2、3、4、分别选择鼠标改为右手习惯,鼠标改为左手习惯,获得键盘类型和功能键个数,喇

叭播放音乐等功能。如上图,我选择了选项3,图显示我的键盘类型为IBM增强型(101或101键)键盘,功能

1

键个数为12.

四、实验总结

请总结一下本次实验的收获、教训和感受,结合课本相关内容谈一下你对 Windows 2000设备管理的理解。

设备管理的主要任务是控制设备和CPU之间进行I/O操作,满足用户I/O请求,满足用户I/O请求。设备管理的主要任务是要尽可能的提高CPU和I/O设备之间、I/O设备和I/O设备之间的并行性以及I/O设备的利用率,从而使包括I/O设备的系统资源获得最佳使用效率。Windows设备驱动程序是一种可以安装有Windows操作系统的计算机和外部设备之间通信的特殊程序,可以说相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。

实验六 文件系统

一、实验目的

通过本实验,要求学生熟练掌握 Linux 各种文件操作命令,包括:使用控制字符执行特殊功能;使用 file 和strings命令确定文件类型;使用 cat 利more 命令显示文本文件的内容;使用head 和 tail 命令显示文本文件的部分内容;使用 wc 命令确定单词、行和字符数;使用 diff 命令比较 2 个文件;回顾文件和目录命名约定;使用 touch命令创建新文件;使用 mkdir 命令创建新目录;使用 rm 命令删除文件;使用 rm -r 命令删除目录。

三、实验内容和步骤 1. 文件信息命令

Ctrl + Z:终止当前活动。显示 ls 命令的手册页面 (man ls) ,然后使用 Ctrl -z 中止输出。 当你接下 Ctrl + Z 的时候,发生了什么事情?

退出帮助,返回shell提示符

当使用计算器的时候,你的提示符是什么? fuxin@fuxin-K42JZ:~$ bc bc 1.06.95

Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 无提示符。(我的Linux系统为Ubuntu11.10)

如果输入一个命令,如 ls –R/,有时候,会在按下回车键之前想擦除命令行。输入一个命令,在接下回车键执行命令之前按下 Ctrl + U。结果是什么?

输入的命令被消除了

使用 file 命令来确定 test文件的文件类型。它是哪种类型的文件? test:ASCII text

2) 可执行 (或二进制) 文件:包括 32 位的可执行文件和可扩展链接格式(ELF) 编码文件,和其他动态链接的可执行文件。这种文件类型表示这个文件是一个命令或程序。

使用 file 命令确定你所建立的文件类型。它是哪种类型的文件?(注意文件名部分必须包括扩展名,如 file ww.sxw 。)

ww.odt Open Document Text(我的电脑上装的是LibreOffice) 步骤 5:使用 strings 命令。

使用 strings命令查看 /usr/bin/cal 文件的可读字符。列出 strings 命令中的一些输出。 fuxin@fuxin-K42JZ:~$ strings /usr/bin/cal /lib/ld-linux.so.2 libncurses.so.5 __gmon_start__

_Jv_RegisterClasses tgetent

步骤 6:使用 cat 命令显示文件的内容。 键入 ls /dev > dev1

使用 cat 命令显示主目录中 dev1 文件的内容。文本的显示出现了什么情况? 文件的所有内容都显示出来了,屏幕自动换行。 步骤 7:使用 more 命令显示文件的内容。

使用 more 命令显示主目录中 dev1 文件的内容。文本的显示出现了什么情况? 只显示最开始的一屏。

步骤 8:使用 head 命令显示文件的一部分。

1) 单独使用head 命令,显示主目录中 dev1 文件的开始部分。显示了多少行? 10

2) 使用带 -n 选项的head 命令,显示主目录中 dante 文件的前20 行。您输入什么命令?

1

head -20 dante

步骤 9:使用 tail 命令显示文件的一部分。

单独使用 tail命令,显示主目录中 dante 文件的末端。显示了多少行? 10

步骤 10:通过使用 wc 命令,确定行数、单词数和字符数。

使用 wc 命令确定主目录中 dev1 文件的行数、单词数和字符数。有多少行、多少个单词和多少个字符? 205行, 205个单词, 1238个字符。

步骤 11:使用 wc 计算目录条目的数目。

更多符号是竖线,和后斜线 (\\) 在同一个键上。在命令行提示行下,输入命令 ls l wc -w。有多少个文件和目录名 (单词) ?

24

步骤 12:使用 diff命令确定文件之间的不同之处。

使用 diff命令执行细节比较,确定 fruit1 文件和 fruit2 文件之间的区别。 在 fruit1 文件和在 fruit2 文件中,哪几行是不同的? 1c1.2

fruit1:banana fruit2:banane 1) cat 命令:

· 对 fruit1文件使用 cat命令。 · 对 fruit2文件使用 cat命令。

· 键入命令行 cat fruit1 fruit2 > filex。

· 对 filex 文件使用 cat 命令。上面的命令行做了什么工作? 将fruit1和fruit2两个文件合并,并且写入文件filex。 2) 可以使用哪 2 个命令来确定 2 个文件是否相同? diff。

2. 基本的命令行文件管理

步骤 14:回顾 Linux 的文件和目录命名规则。 表7-1 实验记录 文件名 是否为Linux 文件或目录名 为什么是或为什么不是 12345abcde678 是 只有字母和数字 Hobbies: 2 是 只有字母、数字和“;” Adcd-123 是 只有字母、数字和'-' Sales*repts*2001 是,但不推荐 有'*' D.projects.bj.2001 是 只有字母、数字和'.' Projects>1.bj-2001 否 与‘>’号 步骤 15:使用 touch 命令创建文件。 命令格式:

touch filename (s)

1) 在主目录中使用 touch命令创建一个名为 newfile 的文件,应该使用什么命令? touch newfile

2) 使用 touch 命令在这个目录中创建另一个叫做 filenew的新文件,应该使用什么命令? touch filenew

3) 输入命令显示 practice目录中的文件的长列表。创建的文件列出来了吗? 列出来了

4) 谁是文件的所有者? fuxin 当前登录的用户 5) 和文件关连的组是什么? 用户组

6) 创建的日期和时间是什么? 2011-12-10 16:02 7) 文件的大小是多少? 0

8) 使用 file命令确定 newfile的文件类型。它是哪一类的文件? newfile:empty

9) 使用 touch 命令同时创建 3 个文件:new1、new2 和new3,应该使用什么命令? touch new1 new2 new3

10) 输入命令显示 practice目录中文件的长列表。创建的 3 个新文件列出来了吗? 列出来了

1