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