操作系统精髓与设计原理(原书第6版)——学习笔记(9)



2.5.4
客户/服务器模型

Windows操作系统服务、受保护子系统和应用程序都采用客户/服务器计算模型构造,客户/服务器模型是分布式计算中的一种常用模型。

客户/服务器结构的优点如下:

  • 简化了执行体。可以在用户态服务器中构造各种各样的API,而不会有任何冲突或重复;可以很容易地加入新的API。
  • 提高了可靠性。每个新的服务运行在内核之外,有自己的存储空间,这样可以免受其他服务的干扰,单个客户的失败不会使操作系统的其余部分崩溃。
  • 为应用程序与服务间通过RPC调用进行通信提供了一致的方法,且没有限制其灵活性。函数桩(functionstub)把消息传递进程给客户应用程序隐藏起来,函数桩是为了包装RPC调用的一段代码。当通过一个API访问一个环境子系统或服务时,位于客户端应用程序中的函数桩把调用参数包作为一个消息发送给一个服务器子系统执行。
  • 为分布式计算提供了适当的基础。典型地,分布式计算使用客户/服务器模块,通过分布的客户和服务器模块以及客户与服务器间的消息交换实现远程过程调用。对于Windows,本地服务器可以代表本地客户应用程序给远程服务器传递一条消息,客户不需要知道请求是在本地还是在远程得到服务。实际上,一条请求是在本地还是远程得到服务,可以基于当前负载条件和动态配置的变化而动态变化。

2.5.5
线程和SMP

Windows的两个重要特征是支持线程和支持对称多处理(SMP),windows支持线程和SMP的下列特征:

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

2.5.6 Windows
对象

Windows大量使用面向对象设计的概念。面向对象方法简化了进程间资源和数据的共享,便于保护资源面试未经许可的访问。Windows使用的面向对象重要概念如下:

  • 封装:一个对象由一个或多个称作属性的数据项组成,在这些数据上可以执行一个或多个称作服务的过程。访问对象中数据的唯一方法是引用对象的一个服务,因此,对象中的数据可以很容易地保护起来,避免未经授权的使用和不正确的使用。
  • 对象类和实例:一个对象类是一个模板,它列出了对象的属性和服务,并定义了对象的某些特征。操作系统可以在需要时创建对象类的特定实例,例如,每个当前处于活动状态的进程只有一个进程对象类和一个进程对象。这种方法简化了对象的创建和管理。
  • 继承:尽管要靠手工编码实现,但执行体使用继承通过添加新的特性来扩展对象类。每个执行体都基于一个基类,这个基类定义虚方法,以便支持创建、命名、安全保护和删除对象。调度程序对象是继承事件对象属性的执行体对象,因此,它们能使用常规的同步方法。其他特定的对象类型,允许这些面向特定设备的类从基类中继承,增加额外的数据和方法。
  • 多态性:Windows内部使用通用的API函数集操作任何类型的对象,这是本节附录B中定义的多态性的一个特征。但是,由于许多API是特定的对象类型所持有的,因此Windows并不是完全多态的。

Windows中的所有实体并非都是对象。当数据对用户态的访问时开放的,或者当数据访问是共享的或受限制的时都使用对象。对象表示的实体有文件、进程、线程、信号、计时器和窗口。Windows通过对象管理器以一致的方法创建和管理所有的对象类型,对象管理器代表应用程序负责创建和销毁对象,并负责授权访问对象的服务和数据。

执行体中的每个对象有时称为内核对象(区分执行体并不关心的用户级对象),作为内核分配的内存块存在,并且只能被内核访问。数据结构的一些元素对所有的对象类型都是相同的,而其余的元素是某一特定对象所特有的。因为这些对象的数据结构位于只能由内核来访问的进程地址空间,应用程序不可能引用这些数据结构并且直接地读写。

对象可以有与之相关联的安全信息,以安全描述符(SD)的形式表示。安全信息可以用于限制对对象的访问。例如,一个进程可以创建一个命名信号量对象,使得只有某些用户可以打开和使用这个信号。信号对象的安全描述符可以列出那些允许(或不允许)访问信号对象的用户,以及允许访问的类型(读、写、改变等)。

在Windows中,对象可以是命名的,也可以是未命名的。当一个进程创建了一个未命名对象,对象管理器返回这个对象的句柄,而句柄是访问该对象的唯一途径。命名对象有一个名字,其他进程可以使用这个名字获得对象的句柄。

作为Windows管理的对象的一个例子,下面列出了微内核管理的两类对象:

  • 分派器对象:是执行体对象的子集,线程可以在该类对象上等待,用来控制基于线程的系统操作的分派和同步。
  • 控制对象:被内核组件用来管理不受管理线程调度控制的处理器操作。表2.5列出了内核控制对象。

Windows不是一个成熟的面向对象操作系统,它不是用面向对象语言实现的,完全位于执行体组件中的数据结构没有表示成对象。Windows展现了面向对象技术的能力,表明了这种技术在操作系统设计中不断增长的趋势。

2.6
传统的UNIX系统

2.6.1
历史

UNIX最初是在贝尔实验室开发,1970年在PDP-7上开始运行。在贝尔实验室,第一个著名的里程碑是把UNIX系统从PDP-7上移植到PDP-11上,第一次暗示了UNIX将成为所有计算机上的操作系统;下一个重要的里程碑是用C语言重写UNIX。通常人们认为操作系统必须完全用汇编语言编写。产生这种看法的原因如下:

  • 按照今天的标准,内存(包括RAM和二级存储器)容量小且价格贵,因此高效使用内存很重要。这包括了不同的内存副高(OVERLAY)技术,如果使用不同的代码段和数据段,以及自修改代码。
  • 尽管自20世纪50年代就开始使用编译器,计算机业一直对自动生成的代码的质量持有怀疑。资源空间很小的情况下,时间上和空间上都高效的代码就很有必要了。
  • 处理器和总线速度相对较慢,因此,节省时钟会使得运行时间上有很大的改进。

C语言实现证明了对大部分而不是全部系统代码使用高级语言的优点。现在,实际上所有的UNIX实现都是用C语言编写。

1974年,UNIX系统第一次出现在一本技术期刊中国,激发了人们的兴趣,UNIX的许可证提供给了商业机构和大学。第一个在贝尔实验室外可以使用的版本是1976年的第6版本,接着1978年发行的第7版是大多数现代UNIX系统的先驱。1982年,贝尔实验室将UNIX的多个AT&T变种合并成一个系统,即商业销售的UNIX
System III。后来在操作系统中又增加了很多功能组件,产生了UNIX System V。

2.6.2
描述

图2.14给出了对UNIX结构的概述。底层硬件被操作系统软件包围,操作系统通常称作系统内核,或简称为内核,以强调它与用户和应用程序的隔离。本书中举的UNIX的例子,主要关注的是UNIX内核。但是,UNIX拥有许多用户服务和接口,它们也被看做是系统的一部分,可以分为命令解释器、其他接口软件和C编译器部分(编译器、汇编器和加载器),它们的外层由用户应用程序和到C编译器的用户接口组成。

图2.15提供了对内核的更深入描述。用户程序可以直接调用操作系统服务,也可以通过库程序调用。系统调用接口是内核和用户的边界,它允许高层软件使用特定的内核函数。另一方面,操作系统包含直接与硬件交互的原子例程(primitive
routine)。在这两个接口之间,系统被划分成两个主要部分,一个关心进程控制,另一个关心文件管理和I/O。进程控制子系统负责内存管理、进程的调度和分发、进程的同步以及进程间的通信。文件系统按字符流或块的形式在内存和外部设备间交换数据,为实现这一点,需要各种设备驱动程序。面向块的传送,使用磁盘高速缓存方法:内存中的一个系统缓冲区介于用户地址空间和外部设备之间。

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

2.7 现代UNIX系统

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

2.7.1
系统V版本4(SVR4)

由AT&T和Sun Microsystem联合开发的SVR4结合了SVR3、4.3BSD、MiscrosoftXenix
System V和SunOS的特点。这个版本的新特点包括对实时处理的支持、进程调度、动态分配数据结构、虚拟内存管理、虚拟文件系统和可以剥夺的内核。

2.7.2 BSD

UNIX版本的BSD(BerkeleySoftware Distribution)系列在操作系统设计原理的发展中扮演着重要角色。4.4BSD是4.3BSD的升级,包含新的虚拟内存系统、对内核结构所做的改变以及对一系列其他特征的增强。应用最广且文档最好的一个BSD版本是FreeBSD。FressBSD在基于因特网的服务器和防火强中最长用到,还应用在许多嵌入式系统中。

最新版本的Macintosh操作系统Mac OS X基于FreeBSD
5.0和 Mach 3.0微内核的。

2.7.3 Solaris 10

Solaris是Sun基于SVR4的UNIX版本,最新版本是10。Solaris的实现提供了SVR4的所有特征以及许多高级的特征,如完全可抢占、支持多线程的内核、完全支持SMP以及文件熊的面向对象接口。Solaris是使用最为广泛、最成功的商业UNIX实现版本。

时间: 2024-08-27 00:54:22

操作系统精髓与设计原理(原书第6版)——学习笔记(9)的相关文章

<<操作系统精髓与设计原理>>读书笔记(一) 并发性:互斥与同步(1)

<<操作系统精髓与设计原理>>读书笔记(一) 并发性:互斥与同步 并发问题是所有问题的基础,也是操作系统设计的基础.并发包括很多设计问题,其中有进程间通信,资源共享与竞争,多个进程活动的同步以及分配给进程的处理器时间的. 和并发相关的关键术语:原子操作: 一个或多个指令的序列,对外是不可分的:即没有其他进程可以看到其中间状态或者中断此操作. 并发中,为了确保并发下的数据完整性,我们有一系列的同步方法,其实这些就是为了实现互斥性!对临界区程序的互斥性.有三种方法: 1.软件方法,但是

操作系统精髓与设计原理------调度概述

前言:操作系统必须为多个进程之间可能有竞争关系的请求分配计算机资源.对处理器而言,可分配的资源是处理器上的执行时间,分配的途径是"调度".调度功能必须设计成可以满足多个目标,包括公平.任何进程都不会产生饥饿.有效的使用处理器时间以及较低的开销,此外,调度中还需要考量优先级和实时期限方面.从根本上说,调度是属于队列管理,用来在排队环境中减少延迟和优化性能.(只记录了一些基本概念,细节还要回顾书) 一.调度类型 长程调度:决定加入到待执行的进程池中. 中程调度:决定加入到部分或全部在内存中

《操作系统精髓与设计原理》习题第三章

第三章习题 3.10.1关键术语 阻塞态:进程在某些事件发生之前不能执行,等待这种事件发生的状态. 退出态:操作系统从可执行进程组中释放出的进程,自身停止了,或者因某种原因被取消. 内核态:某些指令只能在特权状态下执行,而这种特权状态称为内核态. 子进程:由一个进程创建的进程,该进程的终止受父进程的影响. 中断:由外部事件引发进程挂起,CPU转而去处理发起中断的事件,并处理结束后恢复进程的执行. 模式切换:CPU由用户态和核心态之间相互切换. 新建态:进程创建时仅仅创建了对应的进程控制块而没有在

学习PHP爬虫--《Webbots、Spiders和Screen Scrapers:技术解析与应用实践(原书第2版)》

<Webbots.Spiders和Screen Scrapers:技术解析与应用实践(原书第2版)> 译者序 前言 第一部分 基础概念和技术 第1章 本书主要内容3 1.1 发现互联网的真正潜力3 1.2 对开发者来说3 1.2.1 网络机器人开发者是紧缺人才4 1.2.2 编写网络机器人是有趣的4 1.2.3 网络机器人利用了“建设性黑客”技术4 1.3 对企业管理者来说5 1.3.1 为业务定制互联网5 1.3.2 充分利用公众对网络机器人的经验不足5 1.3.3 事半功倍6 1.4 结论

C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)——互动出版网

这篇是计算机类的优质预售推荐>>>><C安全编码标准:开发安全.可靠.稳固系统的98条规则(原书第2版)> 部分目录 译者序 前言 贡献者简介 第1章 预处理器(PRE) 1 1.1 PRE30-C. 不要通过连接创建通用字符名称 1 1.2 PRE31-C. 避免不安全宏参数的副作用 3 1.3 PRE32-C. 不要在类函数的宏调用中使用预处理器指令 7 第2章 声明和初始化(DCL) 9 2.1 DCL30-C. 声明具有正确存储持续期的对象 10 2.2 DCL

Web前端工程师修炼之道(原书第4版) 中文pdf扫描版

你是否也曾想过自己创建网页,但却苦于没有经验?那么从现在开始学习吧!本书由浅入深地讲解了Web设计的一些重要概念.基本原理,以及HTML.CSS和JavaScript的具体使用方法与技巧.当你读完本书后,将会掌握创建适用于移动设备的多列页面的技巧. Web前端工程师修炼之道(原书第4版)将帮助你学习如何使用最新技术.最佳实践经验,以及当今的Web标准,其中包括HTML5和CSS3.每章都提供一些练习和小测验,帮助你了解不同的技术,巩固你对重要概念的理解. 作者对本版内容做了全面更新和修订,涵盖W

ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse

ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 提供ROS接口的3D软件比较多,本章以最典型的Gazebo介绍为主,从Player/Stage/Gazebo发展而来,现在独立的机器人仿真开发环境,目前2016年最新版本Gazebo7.1配合ROS(kinetic)使用. 补充内容:http://blo

IT项目管理(原书第7版)——互动出版网

这篇是计算机类的优质预售推荐>>>><IT项目管理(原书第7版)> 译者序 1984年,美国项目管理协会(Project Management Institute,PMI)推出了项目管理知识体系(Project Management Body of Knowledge,PMBOK),描述了以项目为研究对象的知识板块,以多维.横断.交叉等全息方式聚集相关知识,反映了当前社会快速发展和变化的需求,得到国际学术界和产业界的积极响应. 在过去的30多年中,随着全球经济和政治的巨

《软件测试的艺术(原书第2版)》【PDF】下载

<软件测试的艺术(原书第2版)>[PDF]下载链接: https://u253469.ctfile.com/fs/253469-231196343 内容简介 本书以一次自评价测试开篇,从软件测试的心理学和经济学入手,探讨了代码检查.走查与评审.测试用例的设计.模块(单元)测试.系统测试.调试等主题,以及极限测试.互联网应用测试等高级主题,全面展现了作者的软件测试思想.第3版在前两版的基础上,结合软件测试的最新发展进行了更新,覆盖了可用性测试.移动应用测试以及敏捷开发测试等内容. 本书适合软件开