操作系统精髓与设计原理(原书第6版) 第二章操作系统概述 学习笔记(2)

                                           第二章  操作系统概述

 


2.4 现代操作系统的特征


1 微内核体系结构:微内核体系结构只给内核分配一些最基本的功能,包括地址空间、进程间通信( InterProcess Communication,简称IPC)和基本的调度。其他的操作系统服务都是由运行在用户态下且与其他应用程序类似的进程提供,这些进程可根据特定的应用和环境需求进行定制,有时也称这些进程为服务器。这种方法把内核和服务程序的开发分离开,可以为特定的应用程序或环境要求定制服务程序。

2 线程与进程:

线程:可分派的工作单元。它包括处理器上下文环境(包含程序计数器和栈指针)和栈中自己的数据区域(为允许子程序分支)。线程顺序执行,并且可中断,这样处理器可以转到另一个线程。

进程:一个或多个线程和相关系统资源(如包含数据和代码的存储器空间、打开的文件和设备)的集合。这紧密对应于一个正在执行的程序的概念。通过把一个应用程序分解成多个线程,程序员可以给在很大程度上控制应用程序的模块性和应用程序相关事件的时间安排。

3 对称多处理器结构定义(SMP):

(1)有多个处理器;(2)这些处理器共享一个内存和I/O设备,他们之间通过总线或别的内部连接方案互相连接。(3)所有处理器都可以执行相同的功能。

4 对称多处理器机构比单处理器结构的优势:

(1)性能:多个处理器的系统比只有一个同类型处理器的系统产生更好的性能,对多道程序设计而言,一次只能执行一个进程,此时所有别的进程都在等待处理器。对多处理器系统而言,多个进程可以分别在不同的处理器上同时运行。

(2)可用性:在对称多处理计算机中,其中单个处理器的失败不会使机器停止。相反,系统可继续运行,只是性能有所降低。

(3)增量增长:用户可以通过添加额外的处理器来增强系统的功能。

(4)可扩展性:生产商可以根据系统配置的处理器的数量,提供一系列不同价格和性能特征的产品。

5 多线程与对称多处理的区别:

他们是两个独立的概念。即使在单处理器机器中,多线程对结构化的应用程序和内核进程也是很有用的。由于多个处理器可以并行运行多个进程,因而堆成多处理计算机对非线程化的进程也是有用的。但是两个设施是互补的,一起使用效果更好。

6 分布式操作系统使用户产生错觉,使多机系统好像具有一个单一的内存空间、外存空间以及其他的统一存取措施,如分布式文件系统。

7 操作系统设计的另一个改革是使用面向对象技术,面向对象设计的原理用于给小内核增加模块化的扩展性。操作系统一级,基于对象的结构使程序员可以定制操作系统,而不会破坏熊的完整性。面向对象技术使得分布式工具和分布式操作系统的开发变得更容易。


2.5 微软的Windows概述


1 历史:

1981年8月发布DOS1.0,它使用Intel 8086 微处理器云下载8KB内存。

1983年发布DOS2.0

1984年IBM发布PC AT,微软发布DOS3.0。AT包含Intel 80286微处理器,提供扩充访问和内存保护功能。

1987年发布DOS3.3提供对新型IBM机器PS/2的支持。

1990年微软发布GUI版本,也称Windows3.0。仍然需要运行在DOS之上。

1993年发布Windows NT(3.1),32位操作系统,具有支持老的DOS和Windows应用程序的能力。

之后发布了Windows NT4.0 :作为Windows子系统一部分的几个图形组件(用户态下运行)被移到Windows NT(内核态下运行)执行体中。

2000年发布了Windows 2000.核心元素是活动目录。增加了即插即用和电源管理工具。

2001年发布了64位版本的Windows XP。

2003年发布了Windows server 2003,包括32位和64位的。

2007年发布了Windows Vista。

2 发展单用户多任务操作系统的两个主要原因是:

(1)随着微处理器的速度和存储能力的不断增长以及虚拟存储器的支持,应用程序变得更加复杂且相关性更强。

(2)客户/服务器计算的发展。

3 下图展示了Windows和Windows Vista的体系结构:

Windows的体系结构是高度模块化的。和几乎所有的操作系统一样,Windows把面向应用的软件和操作系统核心软件区分开。系统核心软件包括在内核下运行的执行体,内核,设备驱动器和硬件抽象层。内核模块软件可以访问系统数据和硬件,在用户态下运行的其他软件被限制访问系统数据和硬件。

4 Windows的内核态组件包括以下类型:
执行体:包括操作系统基础服务,例如内存管理、进程和线程管理等。
内核:控制处理器的执行。内核管理包括线程调度、进程切换、异常和中断处理、多处理器同步。跟执行体和用户级的其他部分不同,内核本身的代码并不在线程内执行,因此,内核是操作系统中唯一不可抢占或分页的一部分。
硬件抽象层(Hardware Abstraction Layer, HAL):在通用的硬件命令和响应与某一特定平台专用的命令和响应之间进行映射,它将操作系统从与平台相关的硬件差异中隔离出来。
设备驱动:用来扩展执行体的动态库。

窗口和图形系统:实现图形用户界面函数(简称GUI函数)。


5 Windows执行体包括一些特殊的系统函数模块,并为用户态的软件提供API。以下是对每个执行体模块的简单描述:
I/O管理器:提供了应用程序访问I/O设备的一个框架,还负责为进一步的处理分发合适的设备驱动程序。
高速缓存管理器:通过使最近访问过的磁盘数据驻留在内存中以提供快速访问,以及在更新后的数据发送到磁盘之前,通过在内存中保持一段很短的时间以延迟磁盘写操作,来提高基于文件的I/O性能。
●对象管理器:创建、管理和删除Windows执行体对象和用于表示诸如进程、线程和同步对象等资源的抽象数据类型。为对象的保持、命名和安全设置实施统一的规则。对象管理器还创建对象句柄,对象句柄是由访问控制信息和指向对象的指针组成的。
●即插即用管理器:决定并加载为支持一个特定的设备所需的驱动。
●电源管理器:调整各种设备间的电源管理。
●安全访问监控程序:强制执行访问确认和审核产生的规则。
●虚拟内存管理器:管理虚拟地址、物理地址和磁盘上的页面文件。控制内存管理硬件和响应的数据结构,把进程地址空间中的虚地址映射到计算机内存中的物理页。
●进程/线程管理器:创建、管理和删除对象,跟踪进程和线程对象。
●配置管理器:负责执行和管理系统注册表,系统注册表是保存系统和每个用户参数设置的数据仓库。
●本地过程调用(LPC)机制:为本地进程实现服务和子系统间的通信,而实现的一套高效的跨进程的过程调用机制。

6 Windows支持的4中基本的用户进程类型:

●特殊系统进程     ●服务进程     ●环境子系统     ●用户应用程序

7 客户/服务器模型的优点:

●简化了执行体

●提高了可靠性

●为应用程序与服务间通过RPC调用进行通信提供了一直的方法,且没有限制灵活性。

●为分布式计算提供了适当的基础。

8 Windows支持线程和SMP(对称多处理)的特征:

●操作系统例程可以在任何可以得到的处理器上运行,不同的例程可以在不同的处理器上同时执行。
●Windows支持在单个进程的执行中使用多个线程。同一个进程可以在不同的处理器上同时执行。
●服务器进程可以使用多线程,以处理多个用户同时发出的请求。
●Windows提供在进程间共享数据和资源的机制以及灵活的进程间通信能力。

9 面向对象的特点:

●封装    ●对象类和实例     ●继承    ●多态性

10 微内核管理的两类对象:

●分派器对象:是执行体对象的子集,线程可以在该类对象上等待,用来控制基于线程的系统操作的分派和同步。

●控制对象:被内核组件用来管理不受管理线程调度控制的处理器操作。表2.5列出了内核控制对象。表格如下:


2.6 传统的Unix系统


1 Unix最初是在贝尔实验室开发的。

2 Unix系统的里程碑阶段

●Unix系统从PDP-7上移植到PDP-11上,第一次暗示了Unix系统将成为所有计算机上的操作系统。

●用C语言重写Unix系统。

3 关于传统Unix系统的综述:它被设计成在单一处理器上运行,缺乏保护其数据结构避免被多个处理器同时访问的能力;它的内核不是通用的,只支持一种文件系统、进程调用策略和可执行文件格式。传统Unix的内核没有设计成可扩展的,几乎没有代码重用的设施。其结果是,当以往不同的Unix版本中增加新功能时,必须增加很多新的代码,因而产生一个膨胀的、非模块化的内核。


2.7 现代的Unix系统


1 现代Unix内核:有一个小的核心软件,它以模块化的风格编写,提供许多操作系统进程所需要的功能和服务,每个外部圆圈表示相应的功能和以多种方式实现的接口。具体如下图: 

2 现代Unix系统的例子:

●系统V版本4(SVR4)      ●BSD            ●Solaris 10


2.8 Linux操作系统


1 Linux成功的关键在于它是自由软件基金会(FSF)赞助的自由软件包。

2 Linux是高度模块化和已于配置的。这使得他在很多平台上显示出最佳的性能。

3 可以获得它的源码,销售商可以调整应用程序和使用方法以满足特定需求。

4 Linux没有采用微内核的方法,但是由于它特殊的模块结构,也具有很多为何方法的优点。

5 Linux的结构是一个模块的集合,这些模块可以根据需要自动的加载或卸载。这些相对独立的块称为可加载模块。

6 一个模块实际上就是内核在运行时可以链接或断开链接的一个对象文件。

7 Linux可加载块的两个重要特征:

动态链接:当内核已经在内存中并正在运行时,内核模块可以被加载和链接到内核。模块也可以在任何时刻被断开链接,从内存中移出。

可堆栈模块:模块按层次排列,,当被高层的客户模块访问时,它们作为库;当被底层模块访问时,它们作为客户。

8 动态链接简化了配置任务,节省了内核所占的内存空间

9 Linux中,用户程序或用户可以使用insmod和rmmod命令显示地加载和卸载内核模块,内核自身监视对于特定函数的需求,并可以根据需求加载和卸载模块。

10 通过可堆栈模块可以定义模块间的依赖关系,这有两个好处:

●对一组相似的模块的相同的代码可以移入一个模块,以减少重复。

●内核可以确保所需要的模块都存在,避免卸载其他正在运行的模块仍然依赖着的模块,并且当加载一个新模块时,加载任何所需要的附加模块

11 Linux内核组件:

12 主要的内核组件简要介绍:

信号:内核通过信号通知进程。

系统调用:进程是通过调用来请求系统服务的。可以粗略地分为6类:文件系统、进程、调度、进程间通信、套接字(网络)和其他。                                
进程和调度器:创建、管理和调度进程。
虚拟内存:为进程分配和管理虚拟内存。
文件系统:为文件、目录和其他文件相关的对象提供一个全局的、分层次的命名空间,还提供文件系统函数。
网络协议:为用户的TCP/IP协议套件提供套接字接口。

字符设备驱动:管理向内核一次发送或接收一个数据的设备,比如终端、调制解调器和打印机。

块设备驱动:管理以块为单位向内核发送和接收数据的设备,比如各种样式的外存(磁盘,CD-ROM等)。

网络设备驱动:对网络接口卡和通信端口提供管理,它们负责连接到网桥或路由之类的网络设备。

陷阱和错误:处理CPU产生的陷阱和错误,例如内存错误。

物理内存:管理实际内存中的内存页池和为虚拟内存分配内存页。

中断:处理来自外设的中断。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值