《操作系统概念》学习笔记-第二章
第二章 操作系统结构
在具有多个命令解释程序选择的系统中,解释程序被称为外壳(shell)
命令解释程序的主要作用是获取并执行用户指定的下一条命令。
有三种应用程序员常用的API,适用于windows系统的win32API,适用于POSIX系统的POSIX API,以及用于设计运行于JAVA虚拟机程序的JAVA API。
操作系统传递参数有三种方法:
- 最简单的方法是通过寄存器来传递参数,不过有时,参数数量会比寄存器多,这时,这些参数通常存在内存的块和表中,并将块的地址通过寄存器来传递。Linux和solaris就是用这种方法。
- 通过程序放在或压入堆栈中,并通过操作系统弹出。
- 采用块或堆栈方法,因为这些方法并不限制所传递的参数的数量或长度。
2.4系统调用类型
系统调用可分成五大类:进程控制,文件管理,设备管理,信息维护和通信。
控制卡:一个批处理系统概念,一个管理进程执行的命令。当出现一个错误的时候,有的程序允许控制卡指出一个具体的恢复动作。
许多操作系统都提供程序的时间表,以表示一个程序在某个位置或某些位置执行所花的时间。时间表要求具有跟踪功能或定时时间中断。
有两种通信模型:消息传递模型和共享内存模型。
每个进程也有进程名,它通常转换成标识符以便操作系统引用。
共享内存要求两个甚至多个进程都同意取消内存访问限制。这样它们就可以通过读写公共区域来交换信息。进程负责确保它们不会同时向同一个地方写。
一个重要原理是策略和机制的区分,机制决定如何做,策略决定做什么。
在MS-DOS系统中,并没有很好地区分接口和功能层次。
UNIX是另一个最初受到硬件功能限制的系统,它由内核和系统程序两个独立的部分组成,内核进一步分成一系列接口和驱动程序。内核通过系统调用以提供文件系统,CPU调度,内存管理和其他操作系统功能,这一层组合了大量的功能,这种单一式的结构使得UNIX难以增强。
系统模块化有许多方法,一种方法是分层法。
分层的方法主要有点在于构造和调试的简单化。
微内核:包括最小的进程和内存管理以及通信功能,主要功能是使客户程序和运行在用户空间的各种服务之间进行通信。通信以消息传递形式提供。微内核方法的好处之一在于便于扩充操作系统,所有新服务可以在用户空间增加,绝大多数服务是作为用户而不是作为内核进程来运行,因此微内核也就提供了更好的安全性和可靠性。
也许最新的操作系统设计方法是用面向对象变成技术来生成模块化的内核。这种方法更为高校,因为模块不需要调用消息传递来通信。
苹果Mac OS X操作系统采用一种混合结构。采用分层技术构建操作系统,其中一层包括Mach微内核。
Mach提供内存管理,支持远程程序调用和进程间通信工具,包括消息传递和线程调度。而BSD提供了BSD命令行接口,以及POSIX API的实现。
虚拟机软件可以运行在内核模式,因为它就是操作系统,虚拟机本身只能运行在用户模式。
JVM是一个抽象计算机的规范,它包括类加载器和执行与平台无关的字节码的JAVA解释器。
类加载器从java程序和java API中加载编译过的.class文件,以便为java解释器所执行。
如果在软件上实现JVM,JAVA解释程序一次只能执行一个字节代码,一种更快的软件技术是采用JIT(just-in-time)编译器。第一次调用JAVA方法时,该方法的字节码被转换成主机的本地机器语言,然后,这些操作被隐藏起来,以使随后的调用通过采用本地机器指令和字节码操作来完成。而不再需要全部重新解释一次。
.NET框架是一套包含了类库集合,执行环境和软件开发平台的技术。
.NET框架的核心是公共语言运行时间(CLR),CLR是.NET虚拟机的实现。
可擦鞋制度存储器(EPROM)
所有形式的ROM都是固件,因为它们的特征介于硬件和软件之间。