⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000001.htm

📁 一份很好的linux入门资料
💻 HTM
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;raner&nbsp;(lilo),&nbsp;信区:&nbsp;Linux&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;NACHOS论坛(1)&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木调试站&nbsp;(Thu&nbsp;Jun&nbsp;&nbsp;4&nbsp;16:43:12&nbsp;1998)&nbsp;<BR>&nbsp;<BR>作&nbsp;&nbsp;家:&nbsp;solmon&nbsp;(所罗门王)&nbsp;on&nbsp;board&nbsp;'Unix'&nbsp;<BR>题&nbsp;&nbsp;目:&nbsp;NACHOS论坛(1)&nbsp;<BR>来&nbsp;&nbsp;源:&nbsp;&nbsp;鼓浪听涛站&nbsp;<BR>日&nbsp;&nbsp;期:&nbsp;Thu&nbsp;Mar&nbsp;&nbsp;6&nbsp;23:02:20&nbsp;1997&nbsp;<BR>出&nbsp;&nbsp;处:&nbsp;<A HREF="mailto:mysu@JingXian.xmu.edu.cn">mysu@JingXian.xmu.edu.cn</A>&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第一章&nbsp;&nbsp;&nbsp;机器模拟&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Nachos是建立在一个软件模拟的虚拟机上的.这个虚拟机包括计算机的基本部分,&nbsp;<BR>如CPU,主存,中断系统,还有一些外部设备,如键盘,显示器,网络,以及磁盘系统.现代&nbsp;<BR>许多操作系统都是先在用软件模拟的硬件上建立并调试,最后才在真正的硬件上运行.&nbsp;<BR>这样做便于调试程序.因为软件模拟的硬件可靠性比真实的硬件高的多,不会因为硬件&nbsp;<BR>故障而导致系统出错.模拟的硬件还可以监视程序对硬件的操作,严格限制程序对硬件&nbsp;<BR>的操作,并在程序误操作时报告详尽的出错信息.这些都是真实硬件难以做到的.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Nachos用软件来模拟硬件还可以充分利用现有的软件资源,避免了编写复杂的硬件&nbsp;<BR>控制程序.更重要的是可以提高程序的可移植性,只要在不同硬件上实现这个虚拟机器&nbsp;<BR>就完成了大部分移植工作.我们移植Nachos的工作就受益于这种设计.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;下面就介绍Nachos的机器模拟的细节.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Machine类用来模拟计算机主机.它提供的功能有:读写寄存器,读写主存,运行一条&nbsp;<BR>用户程序的汇编指令,运行用户程序,单步调试用户程序,显示主存和寄存器状态,将虚拟&nbsp;<BR>内存地址转换为物理内存地址,陷入Nachos内核等等.&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Machine类实现方法是分配两块内存分别作为虚拟机的寄存器和物理内存.运行用户&nbsp;<BR>程序时,先将用户程序从Nachos文件系统中读出,然后调用指令模拟模块对每一条用户指&nbsp;<BR>令解释执行.对用户程序的读写内存要求,将调用虚拟内存模块提供的功能把它转变为对&nbsp;<BR>物理内存地址的读写.当用户要求调试程序时,执行一条指令后会自动停下来,让用户查&nbsp;<BR>看系统状态.如果用户程序想使用操作系统提供的功能或者发出异常信号时,Machine调&nbsp;<BR>用系统陷入功能,进入Nachos的核心部分.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;从Machine类的功能可以看出,它是用户和操作系统的界面,用户的各种操作都通过&nbsp;<BR>它去调用相应的Nachos模块,也可以说Machine类是Nachos的总控部分.&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Interrupt类用来模拟硬件中断系统.在这个中断系统中,中断状态有开,关两种,中&nbsp;<BR>断类型有时钟中断,磁盘中断,控制台写中断,控制台读中断,网络发送中断,网络接收中&nbsp;<BR>断.机器状态有用户态,核心态和空闲态.中断系统提供的功能有开/关中断,读/写机器状&nbsp;<BR>态,将一个即将发生中断放入中断队列,以及使机器时钟前进一步.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;在Interrupt类中有一个记录即将发生中断的队列,这个队列的元素中包括的信息有:&nbsp;<BR>中断类型,&nbsp;中断处理程序的地址及参数,中断应当发生的时间.一般是由硬件设备模拟程&nbsp;<BR>序把将要发生的中断放入中断队列.中断系统提供了一个模拟的机器时钟,机器时钟在下&nbsp;<BR>列情况前进一步:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.用户程序打开中断&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.执行一条用户指令&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.没有进程占用处理机&nbsp;<BR>机器时钟前进时,处理的过程如下图:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;┃&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↓&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;┏━━━━━━━━━━━┓&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;┃&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;关闭中断&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -