操作系统虚拟机小论文
有关计算机操作系统及应用的参考论文(2)

有关计算机操作系统及应用的参考论文(2)有关计算机操作系统及应用的参考论文篇二《计算机操作系统探讨》摘要:21世纪是信息化时代,计算机的应用将更加广泛,为了更好的使用计算机,应该对操作系统基本了解,因此本文主要对操作系统的概念和发展史进行探讨,并对Windows,UNIX和Linux操作系统做了简单的介绍,使广大读者加深对计算机操作系统的理解。
关键词:计算机操作系统;Windows;UNIX;Linux中图分类号:TP316 文献标识码:A 文章编号:1674-7712 (2014) 04-0000-01当今现代,人们学习、生活等都已经不能离开计算机,计算机由硬件和软件组成,在计算机系统软件中最重要的软件就是操作系统。
操作系统如同指挥官一样,指挥着计算机里的所有部件,并指挥它们按照某个计划协同工作。
计算机系统越复杂,操作系统的作用和地位就越重要。
一、操作系统概述操作系统,负责管理计算机硬件资源和软件资源,并通过这种管理为用户提供服务,成为计算机和用户之间的接口。
操作系统的主要功能是:(1)处理机管理;(2)存储器管理;(3)文件管理;(4)设备管理;(5)用户接口。
基本上所有的操作系统都具有如下的特征:(1)并发性;(2)共享性;(3)虚拟性;(5)不确定性。
二、操作系统发展史操作系统的产生迄今已有70年的时间,最早期的操作系统诞生于20世纪50年代中期,只是简单的单道批处理操作系统;接着演变成了多道程序批处理系统,与此同时,实时操作系统也应运而生;最后伴随着微型机、多处理机和计算机网络的发展,与之相对应的微机OS、多处理机OS和网络OS也随之迅速发展。
(一)串行处理系统世界上最早的计算机诞生之时,并没有操作系统,当时程序员直接和硬件打交道,具体流程是:首先程序员将已经穿孔的纸带(或卡片)装入内存,接着通过控制台或开关启动程序运行,最后当程序全部运行完毕,取出纸带(或卡片)和运算结果。
该系统严重地降低了计算机资源的利用率,形成了所谓的人机矛盾。
浅谈操作系统(操作系统论文)

浅谈操作系统(操作系统论文) 浅谈操作系统(操作系统论文)1:引言1.1 研究背景1.2 研究目的1.3 研究意义2:操作系统的定义与发展2.1 操作系统的定义2.2 操作系统的发展历程2.3 操作系统的分类3:操作系统的基本功能3.1 进程管理3.1.1 进程的创建与销毁3.1.2 进程调度3.2 内存管理3.2.1 内存分配与回收3.2.2 虚拟内存管理3.3 文件系统3.3.1 文件的创建与删除 3.3.2 文件的读写与修改 3.4 设备管理3.4.1 设备的分配与释放 3.4.2 设备的驱动与控制4:操作系统的关键技术4.1 进程间通信4.2 同步与互斥4.3 死锁的预防与避免 4.4 中断与异常处理4.5 虚拟化技术4.6 分布式操作系统5:操作系统的应用领域5.1 桌面操作系统5.2 服务器操作系统5.3 嵌入式操作系统5.4 移动操作系统5.5 实时操作系统6:操作系统的优缺点分析6.1 优点6.2 缺点6.3 改进方向7:操作系统与其他相关技术的关系 7.1 编程语言7.2 数据库管理系统7.3 网络通信技术7.4 人机交互技术8:操作系统的未来发展趋势8.1 云操作系统8.2 大数据与的融合8.3 安全与隐私保护8.4 自动化与智能化9:结论附件:1:操作系统原始代码示例2:操作系统相关实验数据3:相关调研问卷回收数据法律名词及注释:1:版权法:保护原创作品的权益,禁止未经授权的复制和使用。
2:商标法:保护商号和商标的专有权,禁止未经授权的商标使用和侵权行为。
3:隐私保护法:保护个人隐私信息的泄露和滥用。
《操作系统》小论文

《操作系统》课程小论文【浅谈Windows XP 操作系统的安全性】学生姓名:***学号: ************专业班级: 11计科一班任课教师:***山东女子学院信息技术学院2013年12 月26 日【浅谈Windows XP 操作系统的安全性】摘要随着互联网的出现与迅速发展,以及金融、政务、商务等重要信息网络与之互连,互联网这个全球性的信息网络已经在政治、经济等方面起着越来越重要的作用。
以此同时,这些重要的信息网络系统面临入侵攻击的威胁,而操作系统和应用服务程序的漏洞正是攻击者实施攻击的基础。
操作系统是直接与计算机硬件打交道的基础软件,是计算机资源的直接管理者,操作系统的安全性是其他应用软件安全性的根基,缺乏这个安全的根基,构筑在其上的应用系统以及安全保障系统,如PKI、机密性保护措施的安全性将得不到根本保障。
在网络环境中,网络安全依赖于各主机系统的安全可信,没有操作系统的安全,就谈不上主机系统和网络系统的安全性,因此操作系统的安全是整个计算机系统安全的基础。
本文首先介绍了操作系统的一般概念和定义,Windows XP系统的安全目标、架构和实现,然后详细介绍了其安全机制并对其进行了分析,进一步介绍了不同使用环境下的配制方法等。
关键词:操作系统;Windows XP;安全性;原理;配置ON THE WINDOWS XP OPERATING SYSTEMSECURITYABSTRACTWith the emergence of the Internet and the rapid development, as well as financial, government, business and other important information network interconnection, the global Internet information network has been in such aspects as politics, economy, plays a more and more important role. At the same time, these important information network system faces the threat of invasion attack, and operating system and application service program vulnerabilities is the foundation of the attacker to carry out attacks. Operating system is the basis of dealing directly with the computer hardware software, is the direct management of computer resources, the security of the operating system is the foundation of other application software security, lack of the foundation of the security, to build on its application system and security system, such as PKI, confidentiality protection measures of security will not guarantee. In the network environment, network security depends on the host system security are to be believed, no operating system security, let alone the host system and the security of network system, so the safety of the operating system is the foundation of the entire computer system security.This paper first introduces the general concept and definition of the operating system, Windows XP system security objectives, architecture and implementation, and then introduces its detailed and analyzes its security mechanism, further introduced the different preparation methods using environment, etc.Key words:the operating system; Windows XP; security; the principle; configuration【概述】1.1 操作系统概述操作系统(英语:Operating System,简称OS)是一管理电脑硬件与软件资源的程序,同时也是计算机系统的内核与基石。
虚拟机操作系统

虚拟机操作系统在当今的计算机技术领域,虚拟机操作系统已经成为了一项非常重要的技术。
对于许多计算机用户和企业来说,它带来了诸多便利和优势。
首先,让我们来理解一下什么是虚拟机操作系统。
简单来说,虚拟机操作系统就是在一台物理计算机上,通过软件模拟出多个“虚拟”的计算机环境,每个虚拟环境都可以运行独立的操作系统。
这就好像在一个大房子里划分出多个小房间,每个房间都有自己的独立空间和规则。
虚拟机操作系统有很多显著的优点。
其一,它提供了很好的隔离性。
不同的虚拟机可以运行不同的操作系统和应用程序,它们之间相互独立,互不干扰。
这意味着如果一个虚拟机出现问题,比如感染病毒或者系统崩溃,不会影响到其他虚拟机的正常运行。
这对于企业来说尤其重要,因为可以在同一台物理服务器上运行多个业务系统,即使某个业务系统出现故障,也不会导致其他业务中断。
其二,虚拟机操作系统方便进行系统测试和开发。
开发人员可以在一台计算机上创建多个虚拟机,每个虚拟机模拟不同的操作系统和环境,来测试他们开发的软件在各种条件下的兼容性和稳定性。
这样就不需要为了测试而准备多台物理计算机,大大节省了成本和空间。
其三,虚拟机操作系统还便于资源的灵活分配。
物理计算机的资源,如 CPU、内存、硬盘等,可以根据不同虚拟机的需求进行动态分配。
当某个虚拟机需要更多资源来处理任务时,可以临时为它分配更多;而当任务完成后,资源又可以回收分配给其他虚拟机使用。
这种灵活性使得计算机资源得到了更高效的利用。
在实际应用中,虚拟机操作系统也有广泛的场景。
对于企业来说,服务器虚拟化是常见的应用之一。
通过将多个服务器整合到一台物理服务器上的虚拟机中,可以降低硬件成本、减少能耗,同时也便于管理和维护。
例如,一家公司可能有多个不同的业务系统,如邮件服务器、数据库服务器、Web 服务器等,以前可能需要为每个系统配备一台独立的物理服务器,现在则可以通过虚拟机技术在一台高性能服务器上实现。
在教育领域,虚拟机操作系统也发挥着重要作用。
有关计算机操作系统及应用的论文

有关计算机操作系统及应用的论文计算机操作系统是计算机中不可缺少的重要组成部分,是计算机的灵魂,没有操作系统,计算机的功能与价值就无法实现下面是店铺为大家整理的有关计算机操作系统及应用的论文,供大家参考。
有关计算机操作系统及应用的论文范文一:计算机操作系统的功能、发展及分类摘要:操作系统是统一管理计算机软件、硬件资源,合理组织计算机的工作流程,随着计算机技术的发展,人们对计算机的人性化、方便简洁提出了更高的要求,减少计算机占用的空间,缩小计算机的体积和重量,使计算机能更加方便地携带成为未来计算机发展的一个重要方向,以及嵌入式硬件技术的不断提高,使得越来越多的嵌入式产品需要嵌入式操作系统的支持。
关键词:计算机操作系统;发展;分类中图书分类号:TP316-4 文献标识码:A 文章编号:1006-8937(2012)32-0077-02操作系统是计算机系统中非常重要的部分。
对操作系统的研究与实现一直是计算机科学中挑战性和实用性完美结合的典范。
不同的计算机环境和不同的应用环境,需要不同的操作系统。
从个人计算机到大型计算机,从办公自动化到电子商务应用环境,从小型企业管理到大型企业的工业自动化控制,都需要有操作系统的支持。
操作系统的职责是管理计算机系统的硬件资源、软件资源,控制计算机的整个工作流程。
一方面,计算机系统结构和硬件技术的发展推动了操作系统的发展,因此而出现了多种形式、能够满足多种应用、资源利用效率不断提高的操作系统;另一方面,操作系统技术的不断发展又使得计算机的处理器、存储器等硬件资源的利用率得到了很大提高,能够不断满足用户方便、高效、快捷应用计算机的需求。
计算机系统由硬件和软件两部分组成。
对于这类操作系统相信用过电脑的人都不会陌生,这是全球最大的软件开发商——Microsoft(微软)公司开发的。
Microsoft公司的Windows系统在操作系统中占有绝对优势。
主流Windows系统都可以用在工作站中,如高Windows NT 4.0、Windows 9x/ME/XP、Windows 2000,以及最新的Windows 2003等。
计算机虚拟机技术及应用论文

计算机虚拟机技术及应用论文计算机的普及应用使计算机机房不断增多,机房传统管理模式的不足也随之逐步显现,而虚拟机技术的提出,为计算机系统教学提供了新的选择。
下面是店铺给大家推荐的计算机虚拟机技术及应用论文,希望大家喜欢!计算机虚拟机技术及应用论文篇一《计算机虚拟机技术及应用》摘要:计算机作为一门实用性很强的学科,它要求学生不仅有一定的理论基础,还必须有实际操作、维护与使用技能。
本文结合计算机课程,对计算机虚拟机技术以及应用进行了简单的探讨。
关键字:计算机;虚拟机;技术;应用二十一世纪作为综合性人才的聚集地,面对计算机软硬件快速发展的现实,很多高校与培训单位的计算机教学和实践都出现了设备滞后的矛盾,所以根本不能满足教学与培训需求。
将虚拟机应用在计算机教学中,不仅能突破不足,还能有效提高计算机工作效率。
虚拟机是在独立的计算机上独立虚拟的计算机,并且拥有独立的也虚拟硬盘、内存、CPU、光驱、网络适配器、声卡、显卡等。
在进行宿主计算机运行时,也可以进行其他虚拟计算机运行,并且虚拟机之间都有独立的操作系统,互不干扰。
在虚拟环境中,它能模拟实体操作,弥补现代资源的不足,所以一直广受好评。
一、计算机虚拟机概述近年来,随着科学技术水平的不断进步,推动了诸多领域的发展,计算机技术便是其中之一,也是发展速度较快的一类技术。
计算机的普及应用使计算机机房不断增多,机房传统管理模式的不足也随之逐步显现,而虚拟机技术的提出,为计算机系统教学提供了新的选择。
在部分网络课程和计算机系统教学中,很多时候都需要运行对计算机构成威胁的软件,例如:病毒软件与格式化软件;在多台计算机连接时,老师才能对实际操作与网络课程进行讲解。
但是大部分培训学校与单位都会受资金流影响,根本没有足够的能力加强机房管理,很多知识只能停留在理论基础上,最后对教学成果造成影响。
虚拟机技术可以作为一种新的教学辅助手段。
在计算机组装与维护课程、计算机网络课程教学实践应用中,表明利用虚拟机技术搭建的虚拟环境既丰富了教师的教学手段,也为学生提供了一种真实又无损坏的实验环境。
计算机操作系统论文(2)

计算机操作系统论文(2)计算机操作系统论文篇二《计算机操作系统教学探析》摘要:主机操作系统不同于常见操作系统,入门较难。
为让学生尽快掌握主机操作系统,文章从实践环境、教学模式、考核方式、课外实践几方面对新型主机操作系统课程的教学改革实践进行了分析。
关键词:操作系统教学操作系统课程是计算机专业的核心专业课程,一直在教学计划和实际教学中受到重视。
作为计算机系统上最重要的系统软件,操作系统本身一直与时俱进,不断发展。
在教学中引入现代新型主机操作系统,让教学内容紧跟计算机技术更新的步伐,是适应新形式下操作系统教学改革的需要。
让学生在掌握基础理论知识的基础上,学习业界流行的优秀、先进的新型主机操作系统,是培养符合社会需要的计算机专业人才的需要。
在一般学校的教学中,多是以UNIX等常见操作系统为实例及实践环境讲解操作系统的基本理论和基本方法。
而UNIX、Windows等在可靠性、可用性、并行化、共享性、安全性、数据处理能力等方面远逊于目前的新型主机操作系统。
主机操作系统从1964年诞生以来,经历了从封闭到开放的与时俱进的发展过程。
特别是2000年以来,IBM推出的更开放更可靠的新型主机操作系统Z/OS,使得主机操作系统焕发了前所未有的活力。
基于技术的先进性和社会的需要,从2006年开始,我校计算机专业开始开设“新型主机操作系统”选修课。
主机操作系统先进、庞大、复杂,和常见操作系统既有相同点,又有很多不同点。
为了让学生学好这门课程,我们从实践环境、教学模式、考核方式、课外实践等方面进行了有益的教学研究和改革。
1 建立先进开放的实践环境由于主机界面和常见操作系统界面差别大,学生普遍感觉入门难,因此保证随时随地的用机,方便逐渐熟悉主机,显得十分必要。
作为加入IBM主机合作项目的9所高校之一,我校拥有IBM公司2005年捐赠的一台大型主机Z900。
在此有利条件上,我们建立了一个开放的主机实践环境,包括Z/OS操作系统、RACF安全子系统、COBOL语言、DB2数据库、PL/1、CICS中间件等。
Linux操作系统论文(精选8篇) 2021

随着网络得不断发展,网络安全是我们应该时刻注意得问题。
Linux系统是类unix得网络操作系统,应用日益广泛,特别是在网络服务器方面,其安全性问题也逐渐突出,受到人们更多得关注。
下面是搜素整理得Linux操作系统论文8篇,供大家借鉴参考。
Linux操作系统论文第一篇:Linux操作系统组成及应用---------------------------------------------------------------------------------------------------------------------感谢使用本套资料,希望本套资料能带给您一些思维上的灵感和帮助,个人建议您可根据实际情况对内容做适当修改和调整,以符合您自己的风格,不太建议完全照抄照搬哦。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------感谢使用本套资料,希望本套资料能带给您一些思维上得灵感和帮助,个人建议您可根据实际情况对内容做适当修改和调整,以符合您自己得风格,不太建议完全照抄照搬哦。
---------------------------------------------------------------------------------------------------------------------摘要:针对于Linux操作系统来说,需要对于该套系统得功能以及在实际当中得应用做出系统性得分析探讨,从而有效得提升该套系统在各个领域当中得应用,进而使其能够为社会上各个领域得发展做出更大得贡献。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计课程设计名称:计算机操作系统专业班级:计算机科学与技术学生姓名:学号:指导教师:课程设计时间:操作系统专业课程设计任务书说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页目录一、设计目的为了掌握Linux环境下常用编译工具如gcc/g++/nasm及开源虚拟机bochs 的下载、安装、使用,掌握x86架构下分页式存储管理系统的基本原理,设计一个请求分页式虚拟存储系统。
掌握Linux系统下程序的编写及运行等方面展开实验。
二、设计要求2.1要求熟练掌握sudo apt-get install的用法。
2.2要求能够掌握分页存储管理系统的基本原理。
2.3要求学会在Linux系统下编写程序、执行程序。
三、设计容3.1运行环境3.1.1虚拟机系统下3.1.2使用Ubuntu下提供的apt-get软件包安装工具安装vim、 g++ 、nasm 、bochs等3.2 2.详细设计1)回顾虚拟页式存储系统:作业分页,存分块,只有当进程要使请认真阅读readme.txt文件,弄清楚各个文件的作用2)用其虚拟存时,其对应的数据才装入物理存。
3)完成frame_pool.H 、frame_pool.C 、page_table.C三个文件,其中page_table.H已经提供,我们需要添加page_table.C,自己设计并实现这些函数。
4)在frame_pool.H定义所需要的数据结构,在frame_pool.C完成这些函数。
添加代码如下所示:class FramePool {private: unsigned long base_frame_no; unsigned long nframes;unsigned long info_frame_no; unsigned char* free_frames;public:static const unsigned char USED -1;static const unsigned char UNUSED -0;static const unsigned int FRAME_SIZE -4096;public:FramePool(unsigned long _base_frame_no,unsigned long _nframes,unsigned long _info_frame_no);5)建立Frame_pool.C文件系统中使用位示图bitmap标识页面是否使用,start_frame表示第一个页面的起始地址(如系统存池从2M开始),pool_size表示在用户池中页框的总数(如系统存池的页框从2M~4M,因此共有(4M-2M)/4KB=512个页框)。
初始化用户池中位示图的容Frame_pool::frame_pool()初始化bitmap记录系统中所有物理块是否可用,如果可用设置为0,否则为1。
Frame_pool::get_frame()通过该方法去查询bitmap,查找可用物理块号。
FramePool::mark_inaccessible( )方法将bitmap中对应位置置1。
FramePool::release_frame()方法将bitmap中对应位置置0。
设计一个私有函数set_frame_flag ,来设置某一个字节的某个bit为0或则为1。
6)打开page_table.H页表如下图所示:其中,页面大小为4K,即可用12位表示页地址,各个位含义如上图页表所示,其余20位表示页号,即1M。
7)创建一个文件:page_table.CPageTable::init_paging()给私有变量传递参数。
PageTable::PageTable()构造函数。
当bochs启动时,start.asm首先被读入到软盘镜像文件中,并将kernel.C 放入到存1MB-2MB空间,然后启动CPU运行,操作系统开始启动。
#include "page_table.H"#include "exceptions.H"#include "frame_pool.H"#include "paging_low.H"FramePool* PageTable::kernel_mem_pool =NULL;FramePool* PageTable::process_mem_pool =NULL;unsigned long PageTable::shares_size;PageTable*PageTable::current_page_table;void PageTable::init_paging(FramePool* _kernel_mem_pool,FramePool* _process_mem_pool,const unsigned long _shared_size){kernel_mem_pool =_kernel_mem_pool;process_mem_pool =_process_mem_pool;shared_size =_shared_size;}PageTable::PageTable(){unsigned long phys_address =0;page_directory =(unsigned long*) (kernel_mem_pool->get_frame()* PAGE_SIZE);unsigned long* page_table=(unsigned long*)(kernel_mem_pool->get_frame() *PAGE_SIZE);for(unsigned int i=0;i<ENTRIES_PER_PAGE;i++) {page_table[i]=phys_address|3phys_address+=PAGE_SIZE;}page_directory[0]=(unsigned long) page_table |3;for(unsigned int i=1;i<ENTRIES_PER_PAGE;i++){ page_directory[i]=0|2;}void PageTable::enable_paging()writE_cr3((unsigned long )(current_page_table->page_directory));write_cr0(read_cr0()|0x80000000);}void PageTable::handle_fault(REGS *_r){unsigned int page_fault_addr=read_cr2()unsigned long* page_table;Console::putui(page_fault_addr);Console::puts("\n");unsigned int page_dir_entry+page_fault_addr >>22;unsigned long page_table_addr =current_page->directory[page_dir_entry];if ((page_fault_addr & 0x01)==0){unsigned long new_page_table_addr=kernel_mem_pool ->get_frame() *PAGE_SIZE;page_table=(unsigned long*)(new_page_table_addr);current_page_table->page_directory[page_dir_entry]=(unsigned long) new_page_table_addr|3;for(unsigned int i=0;i<ENTRIES_PER_PAGE;i++){page_table[i]=0x00;}} else{page_table=(unsigned long*)(page_table_addr &0xFFFF000);unsigned long free_frame_no=process_mem_pool->frame();page_table[page_tab_entry]=(free_frame_no*PAGE_SIZE)|7;}代码如下:#include "page_table.H"#include "exceptions.H"#include "frame_pool.H"#include "paging_low.H"FranePool* PageTable::kernel_mem_pool = NULL;FramePool* PageTable::process_mem_pool = NULL;unsigned long PageTable::shared_size;PageTable* PageTable::curent_page_table;void PageTable::init_paging(FarmePool* _kernel_mem_pool,FramePool* _process_mem_pool,const unsigned long _shared_size) {kernel_mem_pool = _kernel_mem_pool;process_mem_pool = _process_mem_pool;shared_size = _shared_size;}PageTable::PageTable(){unsigned long phys_address = 0;page_directory = (unsigned long *)(kernel_mem_pool->get_frame() * PAGE_SIZE);unsigned long * page_table = (unsigned long *)(kernel_mem_pool->get_frame() * PAGE_SIZE);for(unsigned int i = 0; i<ENTRIES_PER_PAGE;i++){page_table[i] = phys_adress | 3;phys_adress += PAGE_SIZE;}page_directory[0] = (unsigned long) page_table | 3;for(unsigned int i = 1;i < ENTRIES_PER_PAGE;i++){page_directory[i] = 0 | 2;}}void PageTable::enable_paging(){write_cr3 ((unsigned long ) (current_page_table_>page_directory));write_cr0(read_cr0() | 0x80000000);}void PageTable::handle_fault(REGS * _r)(unsigned int page_fault_addr = read_cr2();unsigned long* page_table;Console::putui(page_fault_addr);Console::puts("\n");unsigned int page_dir-entry = page_fault_addr >>22;unsigned int page_dir-entry = (page_fault_addr & (0x03FF << 12)) >> 12;unsigned long page_table_addr = current_page_table->page_directory[page_dir_entry];if ((page_fault_addr & 0x01 == 0){unsigned long new_page_table_addr = kernel_men_pool -> get_frame() * PAGE_SIZE;page_table = (unsigned long*) (new_page_table_addr);current_page_table->page_directory[page_dir_entry] = (unsigned long new_page_table_addr | 3;for(unsiqned int i =0;i<ENTRIKS_PER_PAGE:i++){page_table[i]=0x00;}}else{//Page table has been present, but the entry in page table is not present//get page table address from page_table_addrpage_table=(unsigned long*) {page_table_addr&0xFFFFF000);}//find a free framo from process memory pool and give it to page table entryunsigned long free_framo_no=process_mem_pool->get_framo();//attributo set to; user level,read/write, present(111 in binary)page_table(page_tab_entry)=(free_framo_no*PAGE_SIZE)1 7; #include "frame_pool.H"#define MB * (0x1 << 20)#define kB * (0x1 << 20)Framepool::Framepool(unsigned long _base_frame_no,unsigned long _nframe,unsigned long _info_frame_no){base_frame_no =_base_frame_no;nframes =_nframes;info_frame_no =_info_frame_no;if (info_frame_no == 0){info_frame_no - (2MB)/FRAME_SIZE;}free_frames =(unsigned char*)(info_frame_no * FRAME_SIZE); unsigned long total_bitmap_bytes = (nframes + 7) /8;for( unsigned long i = 0;i<total_bitmap_bytes; i++){free_frames[ i ] =0x00;}set_frame_flag(info_frame_no,USED);}/////////////////////////////////unsigned long Framepool::get_frame(){unsigned long which_byte_free;unsigned char val;unsigned long total_bitmap_bytes = (nframes + 7) /8;for(which_byte_free = 0;which_byte_free<total_bitmap_bytes;which_byte_free++) {val = *(free_frame + which_byte_free);if(val !=0xFF)break;}if(val == 0xFF)return 0;char bit = 0;while(1){if ((va;&(USED<<BIT)) ==0)break;bit++;}unsigned long abs_free_frame_add =base_frame_no + which_byte_free *8 + bit;set_frame_flag( abs_free_frame_add ,USED);return abs_free_frame_add;}void Framepool::mark_inaccessible(unsigned long _base_frame_no, unsigned long _nframe,){for(unsigned long i = 0;i < _nframes; i++){set_frame_flag(_base_frame_no + i,USED);}}void Framepool::release_frame( unsigned long _frame_no){set_frame_flag(_frame_no,UNUSED);}inline void Framepool::set_frame_flag(unsigned long _frame_no, unsigned char ifused) {_frame_on -= base_frame_on;int bit_counter = _frame_on%8;unsigned char mask = 0;if(ifused ==USED){mask=(0x01 << bit_counter);*(free_frames + _frame_no /8) |=mask; }else {mask=(~(0x01 << bit_counter));*(free_frames + _frame_no /8) &=mask; }}#include "page_table.H"#include "exceptions.H"#include "frame_pool.H"#include "paging_low.H"FranePool* PageTable::kernel_mem_pool = NULL; FramePool* PageTable::process_mem_pool = NULL; unsigned long PageTable::shared_size; PageTable* PageTable::curent_page_table;void PageTable::init_paging(FarmePool* _kernel_mem_pool,FramePool* _process_mem_pool,const unsigned long _shared_size){kernel_mem_pool = _kernel_mem_pool;process_mem_pool = _process_mem_pool;shared_size = _shared_size;}PageTable::PageTable(){unsigned long phys_address = 0;page_directory = (unsigned long *)(kernel_mem_pool->get_frame() * PAGE_SIZE);unsigned long * page_table = (unsigned long *)(kernel_mem_pool->get_frame() * PAGE_SIZE);for(unsigned int i = 0; i<ENTRIES_PER_PAGE;i++){page_table[i] = phys_adress | 3;phys_adress += PAGE_SIZE;}page_directory[0] = (unsigned long) page_table | 3;for(unsigned int i = 1;i < ENTRIES_PER_PAGE;i++){page_directory[i] = 0 | 2;}void PageTable::enable_paging(){write_cr3 ((unsigned long ) (current_page_table_>page_directory));write_cr0(read_cr0() | 0x80000000);}void PageTable::handle_fault(REGS * _r){unsigned int page_fault_addr = read_cr2();unsigned long* page_table;Console::putui(page_fault_addr);Console::puts("\n");unsigned int page_dir_entry = page_fault_addr >> 22;unsigned int page_tab_entry = (page_fault_addr & (0x03FF << 12)) >> 12;unsigned long page_table_addr = current_page_table->page_directory[page_dir_entry];if((page_fault_addr & 0x01) == 0){unsigned long new_page_table_addr = kernel_mem_pool ->get_frame() *PAGE_SIZE;page_table =(unsigned long*)(ew_page_table_addr);current_page_table->page_directory[page_dir_entry] = ( unsigned long)new_page_table_addr | 3;for( unsigned int i = 0;i< ENTRIES_PAR_PAGE; i++){page_table[i] = 0x00;}}else {page_table =(unsigned long*)(page_table_addr &0xfffff000);}unsigned long free_frame_no = process_mem_pool ->get_frame();page_table[page_tab_entry] = (free_frame_no *PAGE_SIZE) | 7;}8)编写Makefile文件执行makefile文件,即make –f makefile.linux 3.3调试分析修改bochsrc.bxrc文件,增加display_library:sdl属性去掉所有用户的可执行属性增加copykernel.sh文件的可执行属性建立/mnt/floppy目录修改引导程序copykernel.sh文件,添加强制卸载属性。