操作系统实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
答:父子进程共享资源的方式可以类比硬链接方式(个人理解)。
3)查找资料讨论Linux的文件系统有什么特点?它是如何兼容各类文件系统的?
4)
系统如何管理设备的?怎样体现“与设备无关”的思想方法?
体会:
这章感觉最着重的就是linux的文件共享和保护方面,基于索引节点的共享方式与利用符号链接实现文件共享。前者感觉要更普遍一点,另外在创建进程时,子进程对父进程资源“写时拷贝”, 内核此时并不复制整个进程的地址空间,而是让父子进程共享同一个地址空间,共享读写指针。这在一定程度上避免了冗余式存储,提高了空间的利用率。
(2)设计一个树形目录结构的文件系统,其根目录为root,各分支可以是目录,也可以是文件,最后的叶子都是文件。提示:可以参考UNIX操作系统的文件结构和管理方法。可采用多级保护,即把用户分成文件主,伙伴和普通用户三类,分别给予使用权。为了缩短搜索文件的路径,可设置工作目录(或值班目录),使能在当前使用的目录下查找文件,不必每次都从根目录开始查找。
实验题目:文件操作与管理(四)
实验环境:vc++6.0
实验目的:学生应独立地用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解,掌握它们的实施方法,加深理解课堂上讲授过的知识。
实验内容:
(1)实际一个n个用户的文件系统,每个用户最多可保存m个文件。
(3)菜单选择
(4)OPT/ LRU/FIFO演示(pagesize=1K)
(5)过程说明(PAGESIZE = 4K)
OPT:最佳置换算法(淘汰的页面是以后永不使用,或许是在最长时间内不再被访问的页面)
LRU:最近最久未使用算法(利用最近的过去代表将来)
FIFO:先进先出页面置换算法(总是淘汰最先进入内存的页面)
相信以后再生活中会更加注意整个文件管理系统的魅力!
实验题目:Linux文件实验(五)
实验环境:Ubuntu +CentOS Linux release 6.0
实验目的:
1)掌握操作系统中文件分类的概念。
2)了解Linux文件系统管理文件的基本方式和特点。
3)学会使用Linux文件系统的命令界面和程序界面的基本要领。
后装入的成分重复使用先装入成分所使用的存储区,及覆盖先装入的成分。
(2)自行设计或选用一种较为完善的内存管理方法,并加以实现。提示:设计一个段页式管理的模拟程序或通过一个实际系统的消化和分析,编制一个程序来模拟该系统。
答:
页式管理:基本原理是将各进程的虚拟空间划分成若干个长度相等的页(page),把内存空间按页的大小划分成片或者页面(page frame),然后把页式虚拟地址与内存地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题。
操作过程及结果:
思考题
(1)编制一个通过屏幕选择命令的文件管理系统,每幅屏幕要为用户提供足够的选择信息,不需要打入冗长的命令。提示:为了便于用户操作,微机大多采用按照屏幕的提示选择命令,这里可以使用高级语言编制通过屏幕显示选择文件操作命令的文件管理模拟程序。
答:即采用如上图中登录或注册方式,设置快捷方式,列出菜单(参看试验三种选择菜单),可以方便操作者了解程序的流程。
6.编写一个涉及流文件的程序。要求:
思考:你的程序用到哪那些设备文件操作?你对设备编程了吗?看来没有吧。
文件在磁盘上,但文件操作很简单,这些都是操作系统提供的方便。这是不是叫“设备无关性”、“设备独立性”呢?
答:用到了open() create()等设备文件操作。没有对设备编程但可以方便直接的对文件进行操作,利用的是设备对外提供的统一接口,这就是“设备无关性”的体现。
实验内容:
1.用shell命令查看Linux文件类型(ls–l命令)。
思考:Linux文件类型有哪些?用什么符号表示。
Linux的文件类型包括:普通文件(—)、目录文件(d)、字符设备文件(c)、块设备文件(b)硬链接文件、套接口文件(s)、符号链接文件(l)和管道文件(p)。
2.用shell命令了解Linux文件系统的目录结构。
(2)限制用户在一次运行中只能打开l个文件。
(3)系统应能检查打入命令的正确性,出错要能显示出错原因。
(4)对文件必须设置保护措施,如只能执行,允许读、允许写等。在每次打开文件时,根据本次打开的要求,再次设置保护级别,即可有二级保护。
(5)对文件的操作至少应有下述几条命令:creat建立文件。delete删除文件。open打开文件。close关闭文件。read读文件。write写文件。
将LRU与OPT算法进行比较可知:“最近的过去”并不全部能代表“最近的将来”,只能在一定程度上近似。但OPT只是理想的状态,FIFO的命中率还算比较适中的,实现也比较简单,所以三者比较,我倾向于FIFO。
然后,在LRU算法的编写过程中,用了链表保存数据,因为指针的原因,调试了很长时间,在table列表中总会缺少数据,最后还是在一步步调试中解决了问题。虽然只是一个小程序,但在这个过程中的一步步调试成功也是对自己能力的肯定和学习的稳固。
段式管理:以段为单位分配内存,然后通过地址影射机构把段式虚拟地址转换为实际内存物理地址。程序通过分段划分为多个模块,如代码段、数据段、共享段。其优点是可以分别编写和编译。
段页式管理:系统必须为每个作业或进程建立一张段表以管理内存分配与释放、缺段处理、存储保护相地址变换等。另外,由于一个段又被划分成了若干页,每个段又必须建立一张页表以把段中的虚页变换成内存中的实际页面。
答:每份文件有三类拥有者,owner、同组用户、其他,所以权限属性可设置为三个数组。类似int file.Prot[3]与int AFD.Prot[3]。
(3)根据学校的各级机构,编制一个文件系统,要求上级机构能查阅和修改下级机构的文件,而下级机构只有在授权情况下才能查阅上级的文件,但不能修改,同一级的文件可以共享。
思考:建立硬链接文件和建立符号链接文件有什么区别,体现在哪里?
答:硬连接指通过索引节点来进行的连接。索引到同一个节点,且节点索引号加1,在删除时,索引count-1;这样只有当count=0才释放节点。符号链接时,只有文件主才拥有指向其索引节点的指针。二共享该文件的其他用户则只有该文件的路径名。当其他用户视图用该链接区访问被删的文件时,系统会访问失败,并将此符号链接删除。
答:其实这与MFD、UFD、AFD的方式差不多,对权限的设置时上级级别大于其下属级别,所以主要需考虑权限的逻辑性。
体会:
这次实验对文件的操作及文件的管理方式有了深一步的了解,自己动手切实去实现原本认为理所当然的系统文件管理。
虽然这只是实现了一部分简单的功能,但有了对系统文件的管理实现方法的感性的认识后,更容易理解文件的管理方法确实带来了不少便利,不论是从用户对文件高速存取和管理方面,还是存储空间的分配和回收方面。
7.研究并讨论
1)硬链接文件和符号链接文件。有什么区别?系统如何处理的?举例说明。
答:硬链接共享文件时,该链接有直接指向该文件的索引节点的指针,并使其链接计数加1;删除源文件不影响链接文件。符号链接没有直接指向该索引节点的指针,只能通过路径找到源文件实现,源文件不存在了,那么符号链接就会被清除。
2)从实验6的结果可以让我们了解父、子进程之间在资源共享方面是如何处理的?
体会:
这次实验主要是对三种页面置换算法的实现。通过大量实验数据感性认识算法的差异性。不仅只是对思想的理解,更需要在理解的基础上对实验数据进行分析,加深对理论的理解。
实验中,虚存容量(vmsize)32K,页面尺寸(pagesize)1K至8K,实存容量(vmsize/pagesize)4页~32页,对这几个量的理解刚开始还有些模糊,以致后面编程的时候没有把握好三者之间的关系。例如:页面尺寸为8K时,实存容量最大为4页。
答:界地址存储管理:
1)内存分配表和空闲区域表array of (addr , size)
2)基址寄存器:保存运行进程的起始地址
限长寄存器:保存运行进程长度
3)地址映射:物理地址=逻辑地址+首址寄存器内容
分配算法:首次适应、循环首次适应、最佳适应、最坏适应、快速适应
回收:1)回收区与插入点的前一个空闲分区F1相邻接
(4)Open时,先查找是否存在该文件,然后再打开(加入AFDLine)。
(5)Close时,先确定该文件是否已打开,然后再将其从AFDLine去除。
(6)Read时,该文件是否已打开,再判断权限够否,然后才能读操作。
(7)Write时,该文件是否已打开,判断权限,然后操作。
(8)另外,自己还增加了对MFDLine(主文件目录)的操作,即注册用户。
结果:
通过上图中三种算法的命中率可比较得:OPT>LRU>FIFO
四、思考题
(1)设计一个界地址存储管理的模拟系统,模拟界地址方式下存储区的分配和回收过程。提示:必须设置一个内存分配表,按照分配表中有关信息实施存储区的分配,并不断根据存储区的分配和回收修改该表。算法有首次匹配法,循环首次匹配法和最佳匹配法等。可用各种方法的比较来充实实习内容。可使用碎片收集和复盖等技术。
下面是关于文件管理的一些功能:
①统一管理文件存储空间(即外存),实施存储空间的分配与回收。
②确定文件信息的存放位置及存放形式。
③实现文件从名字空间到外存地址空间的映射,即实现文件的按名存取。
④有效实现对文件的各种控制操作(如建立、撤销、打开、关闭文件等)和存取操作(如读、写、修改、复制、转储等)
⑤实现文件的高速存取
/lib系统函数
/etc系统设置用的配置文件
/bin中是可执行程序
/home包括了每个用户主目录
3.用命令分别建立硬链接文件和符号链接文件。通过ls –il命令所示的inode、链接计数观察它们的区别
找找一个其他目录中的文件,如:/home/zzl/mytest.c执行$ ln /home/zzl/mytest.c myt.c(建立硬链接文件)$ ln –s /home/zzl/mytest.c myt2.c(建立符号链接文件)
4.复习Unix或Linux文件目录信息i节点的概念。编程察看指定文件的inode信息。
思考:Linux文件的inode是不是很有特色?找一些这方面的资料,熟悉文件系统的实现方法,会让你的水平提升一个台阶的。
5.
再来一个更有趣的实验。修改父进程创建子进程的程序,用显示程序段、数据段地址的方法,说明子进程继承父进程的所有资源。再用父进程创建子进程,子进程调用其它程序的方法进一步证明子进程执行其它程序时,程序段发生的变化。
《计算机操作系统》实验报告
教师:
学号:
姓名:
2012年3月6日
计算机学院
实验题目:请求页式存储管理(三)
-----------------------------------------------------------------------------
实验环境:VC6.0++
实验目的:学生应独立地用高级语言编写几个常用的存储分配算法,并设计一个存储管理的模拟程序,对各种算法进行分析比较,评测其性能优劣,从而加深对这些算法的了解。
实ຫໍສະໝຸດ Baidu内容:
(1)编制和调试示例给出的请求页式存储管理程序,并使其投入运行。
(2)增加1~2种已学过的淘汰算法,计算它们的页面访问命中率。试用各种算法的命中率加以比较分析。(增加了FIFO)
操作过程:
(1)产生随机数
(2)输入PageSize(页面大小1 /2/4/8 K)(pageno[i]=int(a[i]/1024)+1)
注意事项及解决办法:
(1)读写二级保护时的打开模式等级不能高于创建时赋予的权限。所以需要在打开时与其权限进行比较。
(2)Create时,先考虑是否已有同名文件;然后再创建(加入UFDLine用户链表),创建后还需要将其连入AFDLine(打开文件链表)中。
(3)Delete时,首先考虑文件是否已打开,若是,则不能直接删除;还需要查看是否有该文件存在。
2)回收区与插入点的后一个空闲分区F2相邻接
3)回收区同事与插入点的前、后两个空闲分区相邻接
4)回收区既不与F1邻接,也不与F2相邻接
碎片收集:可采用将贮存中所有作业进行移动,使它们相邻接。把原来分散的多个小分区拼接成一个大分区。
覆盖技术:将较大程序装入较小进程空间的技术。
只将全局代码和数据静态装入内存,其他部分动态装入。
3)查找资料讨论Linux的文件系统有什么特点?它是如何兼容各类文件系统的?
4)
系统如何管理设备的?怎样体现“与设备无关”的思想方法?
体会:
这章感觉最着重的就是linux的文件共享和保护方面,基于索引节点的共享方式与利用符号链接实现文件共享。前者感觉要更普遍一点,另外在创建进程时,子进程对父进程资源“写时拷贝”, 内核此时并不复制整个进程的地址空间,而是让父子进程共享同一个地址空间,共享读写指针。这在一定程度上避免了冗余式存储,提高了空间的利用率。
(2)设计一个树形目录结构的文件系统,其根目录为root,各分支可以是目录,也可以是文件,最后的叶子都是文件。提示:可以参考UNIX操作系统的文件结构和管理方法。可采用多级保护,即把用户分成文件主,伙伴和普通用户三类,分别给予使用权。为了缩短搜索文件的路径,可设置工作目录(或值班目录),使能在当前使用的目录下查找文件,不必每次都从根目录开始查找。
实验题目:文件操作与管理(四)
实验环境:vc++6.0
实验目的:学生应独立地用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解,掌握它们的实施方法,加深理解课堂上讲授过的知识。
实验内容:
(1)实际一个n个用户的文件系统,每个用户最多可保存m个文件。
(3)菜单选择
(4)OPT/ LRU/FIFO演示(pagesize=1K)
(5)过程说明(PAGESIZE = 4K)
OPT:最佳置换算法(淘汰的页面是以后永不使用,或许是在最长时间内不再被访问的页面)
LRU:最近最久未使用算法(利用最近的过去代表将来)
FIFO:先进先出页面置换算法(总是淘汰最先进入内存的页面)
相信以后再生活中会更加注意整个文件管理系统的魅力!
实验题目:Linux文件实验(五)
实验环境:Ubuntu +CentOS Linux release 6.0
实验目的:
1)掌握操作系统中文件分类的概念。
2)了解Linux文件系统管理文件的基本方式和特点。
3)学会使用Linux文件系统的命令界面和程序界面的基本要领。
后装入的成分重复使用先装入成分所使用的存储区,及覆盖先装入的成分。
(2)自行设计或选用一种较为完善的内存管理方法,并加以实现。提示:设计一个段页式管理的模拟程序或通过一个实际系统的消化和分析,编制一个程序来模拟该系统。
答:
页式管理:基本原理是将各进程的虚拟空间划分成若干个长度相等的页(page),把内存空间按页的大小划分成片或者页面(page frame),然后把页式虚拟地址与内存地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题。
操作过程及结果:
思考题
(1)编制一个通过屏幕选择命令的文件管理系统,每幅屏幕要为用户提供足够的选择信息,不需要打入冗长的命令。提示:为了便于用户操作,微机大多采用按照屏幕的提示选择命令,这里可以使用高级语言编制通过屏幕显示选择文件操作命令的文件管理模拟程序。
答:即采用如上图中登录或注册方式,设置快捷方式,列出菜单(参看试验三种选择菜单),可以方便操作者了解程序的流程。
6.编写一个涉及流文件的程序。要求:
思考:你的程序用到哪那些设备文件操作?你对设备编程了吗?看来没有吧。
文件在磁盘上,但文件操作很简单,这些都是操作系统提供的方便。这是不是叫“设备无关性”、“设备独立性”呢?
答:用到了open() create()等设备文件操作。没有对设备编程但可以方便直接的对文件进行操作,利用的是设备对外提供的统一接口,这就是“设备无关性”的体现。
实验内容:
1.用shell命令查看Linux文件类型(ls–l命令)。
思考:Linux文件类型有哪些?用什么符号表示。
Linux的文件类型包括:普通文件(—)、目录文件(d)、字符设备文件(c)、块设备文件(b)硬链接文件、套接口文件(s)、符号链接文件(l)和管道文件(p)。
2.用shell命令了解Linux文件系统的目录结构。
(2)限制用户在一次运行中只能打开l个文件。
(3)系统应能检查打入命令的正确性,出错要能显示出错原因。
(4)对文件必须设置保护措施,如只能执行,允许读、允许写等。在每次打开文件时,根据本次打开的要求,再次设置保护级别,即可有二级保护。
(5)对文件的操作至少应有下述几条命令:creat建立文件。delete删除文件。open打开文件。close关闭文件。read读文件。write写文件。
将LRU与OPT算法进行比较可知:“最近的过去”并不全部能代表“最近的将来”,只能在一定程度上近似。但OPT只是理想的状态,FIFO的命中率还算比较适中的,实现也比较简单,所以三者比较,我倾向于FIFO。
然后,在LRU算法的编写过程中,用了链表保存数据,因为指针的原因,调试了很长时间,在table列表中总会缺少数据,最后还是在一步步调试中解决了问题。虽然只是一个小程序,但在这个过程中的一步步调试成功也是对自己能力的肯定和学习的稳固。
段式管理:以段为单位分配内存,然后通过地址影射机构把段式虚拟地址转换为实际内存物理地址。程序通过分段划分为多个模块,如代码段、数据段、共享段。其优点是可以分别编写和编译。
段页式管理:系统必须为每个作业或进程建立一张段表以管理内存分配与释放、缺段处理、存储保护相地址变换等。另外,由于一个段又被划分成了若干页,每个段又必须建立一张页表以把段中的虚页变换成内存中的实际页面。
答:每份文件有三类拥有者,owner、同组用户、其他,所以权限属性可设置为三个数组。类似int file.Prot[3]与int AFD.Prot[3]。
(3)根据学校的各级机构,编制一个文件系统,要求上级机构能查阅和修改下级机构的文件,而下级机构只有在授权情况下才能查阅上级的文件,但不能修改,同一级的文件可以共享。
思考:建立硬链接文件和建立符号链接文件有什么区别,体现在哪里?
答:硬连接指通过索引节点来进行的连接。索引到同一个节点,且节点索引号加1,在删除时,索引count-1;这样只有当count=0才释放节点。符号链接时,只有文件主才拥有指向其索引节点的指针。二共享该文件的其他用户则只有该文件的路径名。当其他用户视图用该链接区访问被删的文件时,系统会访问失败,并将此符号链接删除。
答:其实这与MFD、UFD、AFD的方式差不多,对权限的设置时上级级别大于其下属级别,所以主要需考虑权限的逻辑性。
体会:
这次实验对文件的操作及文件的管理方式有了深一步的了解,自己动手切实去实现原本认为理所当然的系统文件管理。
虽然这只是实现了一部分简单的功能,但有了对系统文件的管理实现方法的感性的认识后,更容易理解文件的管理方法确实带来了不少便利,不论是从用户对文件高速存取和管理方面,还是存储空间的分配和回收方面。
7.研究并讨论
1)硬链接文件和符号链接文件。有什么区别?系统如何处理的?举例说明。
答:硬链接共享文件时,该链接有直接指向该文件的索引节点的指针,并使其链接计数加1;删除源文件不影响链接文件。符号链接没有直接指向该索引节点的指针,只能通过路径找到源文件实现,源文件不存在了,那么符号链接就会被清除。
2)从实验6的结果可以让我们了解父、子进程之间在资源共享方面是如何处理的?
体会:
这次实验主要是对三种页面置换算法的实现。通过大量实验数据感性认识算法的差异性。不仅只是对思想的理解,更需要在理解的基础上对实验数据进行分析,加深对理论的理解。
实验中,虚存容量(vmsize)32K,页面尺寸(pagesize)1K至8K,实存容量(vmsize/pagesize)4页~32页,对这几个量的理解刚开始还有些模糊,以致后面编程的时候没有把握好三者之间的关系。例如:页面尺寸为8K时,实存容量最大为4页。
答:界地址存储管理:
1)内存分配表和空闲区域表array of (addr , size)
2)基址寄存器:保存运行进程的起始地址
限长寄存器:保存运行进程长度
3)地址映射:物理地址=逻辑地址+首址寄存器内容
分配算法:首次适应、循环首次适应、最佳适应、最坏适应、快速适应
回收:1)回收区与插入点的前一个空闲分区F1相邻接
(4)Open时,先查找是否存在该文件,然后再打开(加入AFDLine)。
(5)Close时,先确定该文件是否已打开,然后再将其从AFDLine去除。
(6)Read时,该文件是否已打开,再判断权限够否,然后才能读操作。
(7)Write时,该文件是否已打开,判断权限,然后操作。
(8)另外,自己还增加了对MFDLine(主文件目录)的操作,即注册用户。
结果:
通过上图中三种算法的命中率可比较得:OPT>LRU>FIFO
四、思考题
(1)设计一个界地址存储管理的模拟系统,模拟界地址方式下存储区的分配和回收过程。提示:必须设置一个内存分配表,按照分配表中有关信息实施存储区的分配,并不断根据存储区的分配和回收修改该表。算法有首次匹配法,循环首次匹配法和最佳匹配法等。可用各种方法的比较来充实实习内容。可使用碎片收集和复盖等技术。
下面是关于文件管理的一些功能:
①统一管理文件存储空间(即外存),实施存储空间的分配与回收。
②确定文件信息的存放位置及存放形式。
③实现文件从名字空间到外存地址空间的映射,即实现文件的按名存取。
④有效实现对文件的各种控制操作(如建立、撤销、打开、关闭文件等)和存取操作(如读、写、修改、复制、转储等)
⑤实现文件的高速存取
/lib系统函数
/etc系统设置用的配置文件
/bin中是可执行程序
/home包括了每个用户主目录
3.用命令分别建立硬链接文件和符号链接文件。通过ls –il命令所示的inode、链接计数观察它们的区别
找找一个其他目录中的文件,如:/home/zzl/mytest.c执行$ ln /home/zzl/mytest.c myt.c(建立硬链接文件)$ ln –s /home/zzl/mytest.c myt2.c(建立符号链接文件)
4.复习Unix或Linux文件目录信息i节点的概念。编程察看指定文件的inode信息。
思考:Linux文件的inode是不是很有特色?找一些这方面的资料,熟悉文件系统的实现方法,会让你的水平提升一个台阶的。
5.
再来一个更有趣的实验。修改父进程创建子进程的程序,用显示程序段、数据段地址的方法,说明子进程继承父进程的所有资源。再用父进程创建子进程,子进程调用其它程序的方法进一步证明子进程执行其它程序时,程序段发生的变化。
《计算机操作系统》实验报告
教师:
学号:
姓名:
2012年3月6日
计算机学院
实验题目:请求页式存储管理(三)
-----------------------------------------------------------------------------
实验环境:VC6.0++
实验目的:学生应独立地用高级语言编写几个常用的存储分配算法,并设计一个存储管理的模拟程序,对各种算法进行分析比较,评测其性能优劣,从而加深对这些算法的了解。
实ຫໍສະໝຸດ Baidu内容:
(1)编制和调试示例给出的请求页式存储管理程序,并使其投入运行。
(2)增加1~2种已学过的淘汰算法,计算它们的页面访问命中率。试用各种算法的命中率加以比较分析。(增加了FIFO)
操作过程:
(1)产生随机数
(2)输入PageSize(页面大小1 /2/4/8 K)(pageno[i]=int(a[i]/1024)+1)
注意事项及解决办法:
(1)读写二级保护时的打开模式等级不能高于创建时赋予的权限。所以需要在打开时与其权限进行比较。
(2)Create时,先考虑是否已有同名文件;然后再创建(加入UFDLine用户链表),创建后还需要将其连入AFDLine(打开文件链表)中。
(3)Delete时,首先考虑文件是否已打开,若是,则不能直接删除;还需要查看是否有该文件存在。
2)回收区与插入点的后一个空闲分区F2相邻接
3)回收区同事与插入点的前、后两个空闲分区相邻接
4)回收区既不与F1邻接,也不与F2相邻接
碎片收集:可采用将贮存中所有作业进行移动,使它们相邻接。把原来分散的多个小分区拼接成一个大分区。
覆盖技术:将较大程序装入较小进程空间的技术。
只将全局代码和数据静态装入内存,其他部分动态装入。