上研之前以为自己的研究方向将是操作系统,所以在操作系统相关的方面进行了一些不系统的学习,对操作系统尤其是基于Windows NT的操作系统的内部机理有了较清晰的认识。现在我的研究内容转向操作系统之上的Web Services(说这句话时我是没有多少底气的,因为我也不是很清楚Web Services究竟是什么,只是觉得自己现在研究的是与Web相关的服务,所以就借用了这个领域名词),以后可能很长时间不会研究操作系统底层的一些东西,现在我把对操作系统的一些理解记下来,以备不时之需。
1.操作系统是依托底层硬件、面向当前主流应用,提供服务的一种中间件。作为这样一种中间件,操作系统就必然要与底层硬件和主流应用发生紧密的联系。操作系统设计人员要实现一种功能,首先得详细地了解处理器的编程接口,然后基于这些接口来设计实现具体功能的方案。事实上,处理器的编程接口也是会根据操作系统设计的需要而改变的。例如早期的操作系统没有虚拟内存的概念,处理器也不提供分页机制,但是当虚拟内存的概念在多任务操作系统中提出来后,新的提供了分页机制的处理器也被设计出来了。同样地,操作系统要实现的功能与出现的各种应用尤其是网络应用也是紧密相关的,微软公司提出的.NET思想就是证明。
2.更准确地讲,操作系统是传统意义上的中间件,因为它摆脱不了自操作系统诞生之日起就已经被强加上的处理机管理、存储管理、设备管理、文件管理和应用程序接口等功能。直至今日,各种各样的网络应用已经基本上取代了单机应用,当前几款主流操作系统虽然也开始面向这些网络应用提供服务,但是因其受到传统服务的制约,它们面向网络应用提供的服务始终不是那么完善。当前的情况是,面向当前主流网络应用的服务被从操作系统中分离出来,作为操作系统之上独立的一层来实现,这一层就是一般意义上的中间件。
3.当通用操作系统的设计已经渐趋成熟,而面向网络应用的服务已逐渐由操作系统之上的中间件来实现,另一方面,电子产品智能化正越来越被人们接受。这是当前操作系统所处的发展环境。在这个环境下,操作系统朝两个方向发展:一是面向网络应用的网络处理平台;二是嵌入式操作系统。
4.学习Windows操作系统后得出的几个要点:
- 计算机系统结构:处理器、存储器、I/O设备;
- 计算机资源:内存空间、I/O空间、中断线、DMA线;
- 资源分配:非可配置设备的资源需求通常被操作系统保留(例如ISA设备),可配置设备的资源需求由操作系统通过写配置空间满足(例如PCI设备);
- 操作系统在进行更多操作之前,首先要做的就是为连接在系统中的设备分配资源,建立内存空间、I/O空间。
- WDM:通过IRP在驱动程序栈中的传递来处理I/O请求。总线型驱动程序控制对设备的访问,功能型驱动程序细化IRP中的参数(如地址和长度)和控制各个IRP的发送顺序。
5.对操作系统在x86平台上的引导过程的认识:
- 加电或复位进入BIOS并执行固化的跳转指令;
- 执行BIOS中的程序以读入引导磁盘的第一个扇区,即主引导记录,控制流转到主引导记录中的控制程序;
- 主引导记录中的控制程序通过调用BIOS中断加载操作系统代码到内存并将控制流转向操作系统代码。