操作系统课程设计项目.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Free_Space_On_Paging_File()函数将释放由Find_Space_On_Paging_File()函数在分页调度文件里所分配的的磁盘块。 Write_To_Paging_File()函数将把存储在内存的一页数据写出到分页调度文件里。 Read_From_Paging_File()函数将读取分页调度文件里的一页数据到内存空间。 (2)在src/geekos/uservm.c文件中编写代码完成以下函数: Destroy_User_Context()释放进程所占用的所有内存和其它资源。 Load_User_Program()装载可执行文件到内存里,创建一个就绪的用户地址空间,功能类似于分段系统的实现。 Copy_From_User()从一个用户缓冲区复制数据到一个内核缓冲区。 Copy_To_User()从一个内核缓冲区复制数据到一个用户缓冲区。 Switch_To_Address_Space()利用它装载相应页目录和LDT来切换到一个用户地址空间。 1、地址转换 三、项目设计提示 线性地址到物理地址的转换过程 2、用户进程的线性地址空间 3、请求分页系统实现 操作系统将需要在磁盘设备上创建一个page file文件暂时保存从内存中替换出去的页, 实现一个类LRU算法在内存中选取一个替换页把它写到磁盘的page file文件中。 缺页中断处理 表12-1 缺页处理表 缺页情况 标识 相应处理 堆栈生长到新页 超出原来分配一页的限制 分配一个新页进程继续 此页保存在磁盘上 数据标识这一页在page file中存在 从page file读入需要的页继续 因为无效地址缺页 非法地址访问 终止用户进程 在“/src/geekos/mem.c”文件中,已经定义了一个函数Alloc_Pageable_Page实现交换一页到磁盘的操作,具体执行步骤如下: 调用mem.c文件中已经实现的Find_Page_To_Page_Out函数来确定要替换的页(这个函数依赖于页数据结构中的clock域)。 调用paging.c文件中已经实现的Find_Space_On_Paging_File函数在page file中找到空闲的存储空间。 调用paging.c文件中已经实现的Write_To_Paging_File函数把被替换的页写到page file文件中。 修改页表的相应表项,清除页存在的标志,标识为此页在内存为不存在。 修改页表项的页基地址为包含这一页的第一个磁盘块号。 修改页表项的kernelInfo位标识为KINFO_PAGE_ON_DISK状态(标识这一页是在磁盘上存在,而不是没有效)。 调用lowlevel.asm文件中已经实现的Flush_TLB来刷新TLB。 第13章 设计项目5 一、项目设计目的 了解文件系统的设计原理。掌握操作系统文件系统的具体实现技术。 二、项目设计要求 (1)为实现GOSFS文件系统,用户在“/src/geeekos /gosfs.c” 中添加代码,实现以下函数。 GOSFS_Fstat( )函数:为给定的文件得到元数据。 GOSFS_Read( )函数:从给定文件的当前位置读数据。 GOSFS_Write( )函数:从给定文件的当前位置写数据。 GOSFS_Seek( )函数:在给定文件中定位。 GOSFS_Close( )函数:关闭给定文件。 项目设计要求 GOSFS_Fstat_Directory( )函数:为一个打开的目录得到元数据。 GOSFS_Close_Directory( )函数:关闭给定目录。 GOSFS_Read_Entry( )函数:从打开的目录表读一个目录项。 GOSFS_Open( )函数:为给定的路径名打开一个文件。 GOSFS_Create_Directory( )函数:为给定的路径创建一个目录。 GOSFS_Open_Directory( )函数:为给定的路径打开一个目录。 GOSFS_Delete( )函数:为给定的路径名删除一个文件。 GOSFS_stat( )函数:为给定的路径得到元数据(大小,权限等信息)。 GOSFS_Sync( )函数:对磁盘上的文件系统数据实现同步操作。 GOSFS_Format( )函数:格式化GOSFS文件系统操作。 GOSFS_Mount( )函数:挂载文件系统操作。 1、 GeekOS文件系统框架 三、项目设计提示 2、GOSFS读文件处理流程 用户进程调用 C语言库函数Read函数 软件中断,内核调用Sys_Read()函数 虚拟文件系统层的Read()函数读出文件的数据

文档评论(0)

nnh91 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档