编辑推荐
                                        《操作系统:精髓与设计原理(原书第6版)》是计算机界巨擘William Stallings的经典著作之一,其第4版曾获得美国计算机科学与工程类大奖,得到了全球计算机教育界和工程技术人员的好评。书中不仅全面地讲述了操作系统的基本概念、原理和方法,而且还以当代流行的操作系统为例,全面清楚地展现了当代操作系统的本质和特点。作者针对近几年操作系统领域的全新变化,对操作系统的设计原理进行深入的阐述,同时将其对操作系统整个领域全面而深入的理解呈现给读者。
    《操作系统:精髓与设计原理(原书第6版)》特色
    ·选择WirldowsVista、LJNIX和Linux三个操作系统作为示例,以帮助读者熟悉当代操作系统的设计原理和实现问题。
    ·新增嵌入式操作系统一章,讨论了嵌入式操作系统的基本特点,并给出了两个实例系统:TinyOS和eCos。
    ·在第5版的基础上扩展了计算机安全的相关内容,包括计算机安全威胁和计算机安全技术。
    ·扩展和更新了并发的相关内容,并增加了有关游戏软件中多处理器调度设计问题的实例。
    ·补充动画演示、模拟项目和编程项目,便于培养学生的动手实践能力。
    ·改进了插图,增加大量新的“现场测试”(field-tested)型家庭作业。
    ·调整和扩充了章末的练习题,有助于读者深入理解操作系统的精髓。                 
内容简介
     操作系统是计算机系统的核心系统软件,负责控制和管理整个系统,使之协调工作。《操作系统:精髓与设计原理(原书第6版)》不仅全面地讲述了操作系统的基本概念、原理和方法,还清楚地展现了当代操作系统的本质和特点。全书分为八个部分,由浅入深地介绍了计算机系统、操作系统、进程描述和控制、线程、微内核、并发性、内存管理、虚拟内存、单处理器调度、多处理器和实时调度、I/O管理和磁盘调度、文件管理、嵌入式操作系统、计算机安全技术以及分布式操作系统等内容。
  《操作系统:精髓与设计原理(原书第6版)》内容丰富,具有很强的实用价值,适合作为高等院校计算机及相关专业本科生的操作系统课程教材,也可供专业技术人员参考。     
作者简介
     斯托林斯(William Stallings),拥有美国麻省理工学院计算机科学博士学位,现任教于澳大利亚新南威尔士大学国防学院(堪培拉)信息技术与电子工程系。他是世界知名的计算机学者和畅销教材作者,已经撰写了17部著作,出版了40多本书籍,内容涉及计算机安全、计算机网络和计算机体系结构等方面,堪称计算机界的全才。他曾九次荣获美国“教材和学术专著作者协会”颁发的“年度上佳计算机科学教材”奖。     
内页插图
          目录
       出版者的话
    译者序
    前言
    第0章 读者指南
    0.1 本书概述
    0.2 读者和教师的学习路线图
    0.3 Internet和Web资源 
    第一部分 背景
    第1章 计算机系统概述
    1.1 基本构成
    1.2 处理器寄存器
    1.2.1 用户可见寄存器
    1.2.2 控制和状态寄存器
    1.3 指令的执行
    1.3.1 取指令和执行指令
    1.3.2 I/0函数
    1.4 扣断
    1.4.1 中断和指令周期
    1.4.2 中断处理
    1.4.3 多个中断
    1.4.4 多道程序设计
    1.5 存储器的层次结构
    1.6 高速缓存
    1.6.1 动机
    1.6.2 高速缓存原理
    1.6.3 高速缓存设计
    1.7 I/O通信技术
    1.7.1 可编程I/O
    1.7.2 中断驱动I/O
    1.7.3 直接内存存取
    1.8 推荐读物和网站
    1.9 关键术语、复习题和习题
    附录1 A两级存储器的性能特征
    附录1 B过程控制 
    第2章 操作系统概述
    2.1 操作系统的目标和功能
    2.1.1 作为用户/计算机接口的操作系统
    2.1.2 作为资源管理器的操作系统
    2.1.3 操作系统的易扩展性
    2.2 操作系统的发展
    2.2.1 串行处理
    2.2.2 简单批处理系统
    2.2.3 多道程序设计批处理系统
    2.2.4 分时系统
    2.3 主要的成就
    2.3.1 进程
    2.3.2 内存管理
    2.3.3 信息保护和安全
    2.3.4 调度和资源管理
    2.3.5 系统结构
    2.4 现代操作系统的特征
    2.5 微软的Windows概述
    2.5.1 历史
    2.5.2 单用户多任务
    2.5.3 体系结构
    2.5.4 客户,服务器模型
    2.5.5 线程和SMP
    2.5.6 Windows对象
    2.6 传统的UNIX系统
    2.6.1 历史
    2.6.2 描述
    2.7 现代UNIX系统
    2.7.1 系统V版本4(SVR4)
    2.7.2 BSD
    2.7.3 Solaris10
    2.8 Linux操作系统
    2.8.1 历史
    2.8.2 模块结构
    2.8.3 内核组件
    2.9 推荐读物和网站
    2.10 关键术语、复习题和习题 
    第二部分 进程
    第3章 进程描述和控制
    3.1 什么是进程
    3.1.1 背景
    3.1.2 进程和进程控制块
    3.2 进程状态
    3.2.1 两状态进程模型
    3.2.2 进程的创建和终止
    3.2 -3五状态模型
    3.2.4 被挂起的进程
    3.3 进程描述
    3.3.1 操作系统的控制结构
    3.3.2 进程控制结构
    3.4.进程控制
    3.4.1 执行模式
    3.4.2 进程创建
    3.4.3 进程切换
    3.5 操作系统的执行
    3.5.1 无进程的内核
    3.5.2 在用户进程中执行
    3.5.3 基于进程的操作系统
    3.6 安全问题
    3.6.1 系统访问威胁
    3.6.2 对抗措施
    3.7 UNIXSVR4进程管理
    3.7.1 进程状态
    3.7.2 进程描述
    3.7.3 进程控制
    3.8 小结
    3.9 推荐读物
    3.10 关键术语、复习题和习题
    编程项目1:开发一个shell程序 
    第4章 线程、对称多处理(SMP)和微内核
    4.1 进程和线程
    4.1.1 多线程
    4.1.2 线程功能特性
    4.1.3例子:Adobe Page Maker
    4.1.4 用户级和内核级线程
    4.1.5 其他方案
    4.2 对称多处理
    4.2.1 SMP体系结构
    4.2.2 SMP系统的组织结构
    4.2.3 多处理器操作系统的设计思考
    4.3 微内核
    4.3.1 微内核体系结构
    4.3.2 微内核组织结构的优点
    4.3.3 微内核性能
    4.3.4 微内核设计
    4.4 Windows线程和SMP管理
    4.4.1 进程对象和线程对象
    4.4.2 多线程
    4.4 -3线程状态
    4.4.4 X寸操作系统子系统的支持
    4.4.5 对称多处理的支持
    4.5 Solaris的线程和SMP管理
    4.5.1 多线程体系结构
    4.5.2 动机
    4.5.3 进程结构
    4.5.4 线程的执行
    4.5.5 把中断当做线程
    4.6 Linux的进程和线程管理
    4.6.1 Linux任务
    4.6.2 Linux线程
    4.7 小结
    4.8 推荐读物
    4.9 关键术语、复习题和习题 
    第5章 并发性:互斥和同步
    5.1 并发的原理
    5.1.1 一个简单的例子
    5.1.2 竞争条件
    5.1 -3操作系统关注的问题
    5.1.4 进程的交互
    5.1.5 互斥的要求
    5.2 互斥:硬件的支持
    5.2.1 中断禁用
    5.2.2 专用机器指令
    5.3 信号量
    5.3.1 互斥
    5.3.2 生产者/消费者问题
    5.3.3 信号量的实现
    5.4 管程
    5.4.1 使用信号的管程
    5.4.2 使用通知和广播的管程
    5.5 消息传递
    5.5.1 同步
    5.5.2 寻址
    5.5.3 消息格式
    5.5.4 排队原则
    5.5.5 互斥
    5.6 读者一写者问题
    5.6.1 读者优先
    5.6.2 写者优先
    5.7 小结
    5.8 推荐读物
    5.9 关键术语、复习题和习题 
    第6章 并发:死锁和饥饿
    6.1 死锁的原理
    6.1.1 可重用资源
    6.1.2 可消耗资源
    6.1.3 资源分配图
    6.1.4 死锁的条件
    6.2 死锁预防
    6.2.1 互斥
    6.2.2 占有且等待
    6.2.3 不可抢占
    6.2.4 循环等待
    6.3 死锁避免
    6.3.1 进程启动拒绝
    6.3.2 资源分配拒绝
    6.4.死锁检测
    6.4.1 死锁检测算法
    6.4.2 恢复
    6.5 一种综合的死锁策略
    6.6 哲学家就餐问题
    6.6.1 使用信号量解决方案
    6.6.2 使用管程解决方案
    6.7 UNIX的并发机制
    6.7.1 管道
    6.7.2 消息
    6.7.3 共享内存
    6.7.4 信号量
    6.7.5 信号
    6.8 Linux内核并发机制
    6.8.1 原子操作
    6.8.2 自旋锁
    6.8.3 信号量
    6.8.4 屏障.
    6.9 Solaris线程同步原语
    6.9.1 互斥锁
    6.9.2 信号量
    6.9.3 多读者/单写者锁
    6.9.4 条件变量
    6.10 Windows并发机制
    6.10.1 等待函数
    6.10.2 分派器对象
    6.10.3 临界区
    6.10.4 轻量级读写锁和条件变量
    6.11 小结
    6.12 推荐读物
    6.13 关键术语、复习题和习题 
    第三部分 内存
    第7章 内存管理
    7.1 内存管理的需求
    7.1.1 重定位
    7.1.2 保护
    7.1.3 共享
    7.1.4 逻辑组织
    7.1.5 物理组织
    7.2 内存分区
    7.2.1 固定分区
    7.2.2 动态分区
    7.2.3 伙伴系统
    7.2.4 重定位
    7.3 分页
    7.4 分段
    7.5 安全问题
    7.5.1 缓冲区溢出攻击
    7.5.2 预防缓冲区溢出
    7.6 小结
    7.7 推荐读物
    7.8 关键术语、复习题和习题
    附录7A加载和链接 
    第8章 虚拟内存
    8.1 硬件和控制结构
    8.1.1 局部性和虚拟内存
    8.1.2 分页
    8.1.3 分段
    8.1.4 段页式
    8.1.5 保护和共享
    8.2 操作系统软件
    8.2.1 读取策略
    8.2.2 放置策略
    8.2.3 置换策略
    8.2.4 驻留集管理
    8.2.5 清除策略
    8.2.6 加载控制
    8.3 UNIX和Solaris内存管理
    8.3.1 分页系统
    8.3.2 内核内存分配器
    8.4 Linux内存管理
    8.4.1 Linux虚拟内存
    8.4.2 内核内存分配
    8.5 Windows内存管理
    8.5.1 Windows虚拟地址映射
    8.5.2 Windows分页
    8.6 t]I、结
    8.7 推荐读物和网站
    8.8 关键术语、复习题和习题
    附录8A散列表 
    第四部分 调度
    第9章 单处理器调度
    9.1 处理器调度的类型
    9.1.1 长程调度
    9.1.2 p程调度
    9.1.3 短程调度
    9.2 调度算法
    9.2.1 短程调度准则
    9.2.2 优先级的使用
    9.2.3 选择调度策略
    9.2.4 性能比较
    9.2.5 公平共享调度
    9.3 传统的UNIX调度
    9.4 小结
    9.5 推荐读物
    9.6 关键术语、复习题和习题
    附录9A响应时间
    附录9B排队系统
    编程项目2:主机调度shell程序 
    第10章 多处理器和实时调度
    10.1 多处理器调度
    10.1.1 粒度
    10.1.2 设计问题
    10.1.3 进程调度
    10.1.4 线程调度
    10.2 实时调度
    10.2.1 背景
    10.2.2 实时操作系统的特点
    10.2.3 实时调度
    10.2.4 限期调度
    10.2.5 速率单调调度
    ……
    第五部分 I/O和文件
    第11章 I/O管理和磁盘调度
    第12章 文件管理 
    第六部分 嵌入式系统
    第13章 嵌入式操作系统 
    第七部分 安全
    第14章 计算机安全威胁
    第15章 计算机安全技术 
    第八部分 分布式系统
    第16章 分布式处理、客户/服务器和集群      
精彩书摘
       第O章读者指南
    USENET新闻组本书及相关Web站点包含了大量的资料,下面将给读者提供一个总体介绍。
    0.1 本书概述
    本书共分为八个部分:
    第一部分背景:提供关于计算机组织与系统结构的综述,重点讲述与操作系统设计相关的主题,并且概述了本书的其余部分操作系统(OS)的各个主题。
    第二部分进程:详细分析进程、多线程、对称多处理(SMP)和微内核,还讨论了单一系统中的并发机制,重点讲述了互斥和死锁。
    第三部分存储器:全面讲述存储器管理技术,包括虚拟存储器。
    第四部分调度:对多种进程调度方法进行分析比较,同时还讨论线程调度、SMP调度和实时调度。
    第五部分输入/输出与文件:分析操作系统中有关输人/输出函数的控制,特别是磁盘输入/输出,它是决定系统性能的关键所在。本部分还给出了关于文件管理的综述。
    第六部分嵌入式系统:嵌入式系统的数量远远多于通用计算系统,因此存在许多独特的嵌入式操作系统。本章讨论了嵌入式操作系统的一般性原理,并且介绍了两个实例系统:TinyOS和eCoso第七部分安全:对涉及计算机和网络安全的威胁和防护机制进行了概述。
    第八部分分布式系统:分析计算机系统网络化技术的主要趋势,包括TCP/IP、客户/服务器计算和集群,同时还介绍分布式系统开发中的一些主要设计领域。      
前言/序言
     目标本书是一本关于操作系统的概念、结构和机制的教材,其目的是尽可能清楚和全面地展现当代操作系统的本质和特点。这是一项具有挑战性的任务。首先,需要为各种各样的计算机系统设计操作系统,包括单用户工作站和个人计算机、中等规模的共享系统、大型计算机和超级计算机以及诸如实时系统之类的专门机器。多样性不仅表现在机器的容量和速度上,而且表现在具体应用和系统支持的需求上。其次,计算机系统正以日新月异的速度发展变化,操作系统设计中的许多重要领域都是新近开始研究的,而关于这些领域以及其他新领域的研究工作仍然在继续着。尽管存在着多样性和变化快等问题,一些基本概念仍然贯穿始终。当然,这些概念的应用依赖于当前的技术状况和特定的应用需求。
  本书的目的是对操作系统设计的基本原理提供全面的讨论,并且与当代流行的设计问题以及当前操作系统的发展方向联系起来。
  示例系统本书试图使读者熟悉当代操作系统的设计原理和实现问题,因此单纯讲述概念和理论是远远不够的。为了说明这些概念,同时将它们与真实世界中不得不做出的设计选择相联系,本书选择了三个操作系统作为示例:WindowsVista:用于个人计算机、工作站和服务器的多任务操作系统。它融合了很多操作系统发展的最新技术,此外,Windows是最早采用面向对象原理设计的重要的商业操作系统之一。本书涵盖了在Windows最新版本Vista中所采用的技术。UNIX:最初是为小型计算机而设计的多用户操作系统,但后来广泛用于从微机到超级计算机的各种机器中。本书包含若干版本的UNIX。FreeBSD结合了很多反映当代水平的功能,是一款得到广泛应用的操作系统。
  Solaris是一款应用广泛的商业版UNIX系统。Linux:一款目前非常普及且源码开放的UNIX版本。选择这些系统是由于它们的相关性和代表性。关于这些示例系统的讨论贯穿全书,而不是集中在某一章或附录部分。因此,在讨论并发性的过程中,将描述每个示例系统的并发机制,并探究各个设计选择的动机。通过这种方法,可以利用真实的例子立即加深对某一特定章节中设计概念的理解。     
				
 
				
				
					数字世界的基石:探索计算的奥秘  我们生活在一个由数字驱动的时代,从智能手机到超级计算机,从互联网的无形脉络到人工智能的飞速发展,这一切的背后都离不开一个至关重要的幕后英雄——操作系统。它如同一个不知疲倦的指挥家,在复杂的硬件与纷繁的应用之间搭建起一座坚实的桥梁,确保着海量数据的流畅传输,保障着无数进程的协同工作,以及为我们提供了与这个数字世界互动的便捷界面。然而,这个看似理所当然的存在,其内部却蕴含着精妙绝伦的设计与深邃的原理。  本书旨在揭示操作系统这门学科的本质,带领读者深入理解其核心概念、基本原理以及前沿发展。我们将从最基础的层面出发,逐步剖析操作系统的各个组成部分,展现它们是如何协同工作,共同构建起现代计算系统的骨骼与血肉。  程序的生命周期:从代码到运行的旅程  一切计算的起点,都是程序。那么,一个程序是如何从我们编写的文本,转化为一台计算机能够理解并执行的指令呢?这将是我们的第一站。我们将探讨编译、链接和加载等关键过程,了解源代码如何一步步被转化为可执行文件,以及操作系统如何在内存中为程序分配空间,并启动它的生命周期。     进程管理:舞台上的舞者与观众      在操作系统的世界里,运行的程序被称为“进程”。想象一下,在一个繁忙的舞台上,有无数的演员(进程)在表演,观众(用户)在欣赏。操作系统需要扮演好导演的角色,高效地调度这些演员,确保每个人都能得到充分的表演时间,并且不会互相干扰。我们将深入研究进程的概念,包括进程的状态(创建、就绪、运行、等待、终止),进程的创建与终止机制,以及进程之间的通信与同步。         线程:进程内部的精细化执行          对于一些复杂的任务,一个进程内部可能需要同时执行多个子任务。这时,“线程”的概念就应运而生。线程可以看作是进程内的一个独立执行流,它们共享进程的资源,却拥有独立的执行路径。我们将探讨线程的优势,如提高程序的并发性和响应速度,以及线程的创建、同步与通信机制,这对于编写高性能的多核应用至关重要。         CPU调度:时间洪流的分配者          CPU是计算机的核心,所有进程的执行都离不开它的计算能力。然而,CPU的数量是有限的,而等待执行的进程却可能无数。如何公平、高效地将CPU时间分配给各个进程,是CPU调度的核心问题。我们将学习各种经典的调度算法,如先来先服务(FCFS)、最短作业优先(SJF)、优先级调度、轮转调度(Round Robin)等,并分析它们的优缺点,以及在不同场景下的适用性。我们还将探讨多处理器调度、实时调度等更复杂的调度场景。     内存管理:数字世界的空间规划师      程序在运行过程中需要大量的内存空间来存储代码、数据和中间结果。操作系统如同一个精明的空间规划师,负责管理计算机的内存资源。我们将学习内存管理的基本概念,包括逻辑地址和物理地址的区别,以及如何将程序从硬盘加载到内存中。         内存分配策略:一块“地”如何分给“人”          当多个进程需要内存时,操作系统如何将有限的内存空间有效地分配出去?我们将探讨各种内存分配策略,如连续内存分配(固定分区、可变分区)和非连续内存分配(分页、分段)。         虚拟内存:无限空间的幻象          即使计算机的物理内存有限,我们也能运行比物理内存总和还要大的程序,这得益于“虚拟内存”技术。虚拟内存通过将部分程序存储在硬盘上,并在需要时动态地加载到内存中,为我们创造了一个比实际物理内存更大的“虚拟”内存空间。我们将深入理解分页、页面置换算法(如FIFO、LRU、OPT)以及内存映射等关键技术,它们是如何协同工作,实现虚拟内存的魔力的。     输入/输出(I/O)管理:连接内外世界的桥梁      计算机不仅仅是进行计算,它还需要与外部世界进行交互,无论是读取键盘输入,还是将数据写入硬盘,亦或是通过网络发送信息。I/O管理模块就是负责协调这些输入输出操作的。我们将了解I/O设备的类型、I/O控制器的作用,以及操作系统如何通过设备驱动程序来控制硬件,实现高效的数据传输。         缓冲与高速缓存:加速数据流动的通道          由于CPU的速度远超I/O设备,直接读写I/O设备会造成大量的CPU等待。缓冲和高速缓存技术能够有效地缓解这种速度不匹配,提高I/O效率。我们将学习缓冲区的概念,以及磁盘高速缓存的工作原理。         文件系统:信息的组织与检索          将大量的数据存储在硬盘上,如何有效地组织、管理和检索这些信息,就依赖于文件系统。我们将探讨文件系统的基本概念,如文件、目录、文件系统结构(如FAT、NTFS、ext4),以及文件的创建、删除、读写、访问控制等操作。我们还将了解文件系统的性能优化技术,如日志文件系统和RAID。     并发与同步:协奏曲的和谐奏鸣      在多任务环境下,多个进程或线程可能需要同时访问共享资源(如共享变量、打印机等)。如果不加以控制,就会发生“竞争条件”,导致数据不一致甚至程序崩溃。因此,并发与同步是操作系统中的核心问题。我们将学习各种同步机制,如互斥锁(Mutex)、信号量(Semaphore)、条件变量(Conditonal Variable),以及死锁的产生原因、检测与避免方法。理解这些机制,对于编写健壮的并发程序至关重要。  安全与保护:数字世界的守护者  随着计算的普及,信息安全的重要性日益凸显。操作系统作为所有用户和应用程序的入口,其安全性和保护机制至关重要。我们将探讨操作系统如何实现用户身份验证、权限管理,防止非法访问和恶意软件的侵扰。我们将学习访问控制列表(ACL)、安全审计等机制,以及虚拟机和容器技术在隔离和安全方面的应用。  现代操作系统的发展趋势:面向未来  除了深入理解经典的概念,本书还将放眼未来,探讨现代操作系统的发展趋势。我们将关注以下几个方面:     分布式系统与云计算:连接全球的计算网络      随着互联网的普及,计算能力早已不再局限于单台机器。分布式系统将多台计算机连接起来,形成一个强大的计算网络,而云计算则是分布式系统在服务模式上的重要体现。我们将探讨分布式文件系统、分布式共享内存、分布式事务等概念,以及它们在构建大规模、高可用性系统中的作用。     嵌入式系统与物联网:无处不在的智能      从智能家电到自动驾驶汽车,嵌入式系统和物联网正在以前所未有的速度渗透到我们生活的方方面面。我们将了解嵌入式操作系统的特点,如资源受限、实时性要求高,以及它们在物联网设备中的应用。     面向多核与异构计算:释放硬件潜能      现代处理器普遍拥有多个核心,甚至集成GPU等异构计算单元。操作系统需要有效地管理和利用这些强大的硬件资源,以实现更高的计算性能。我们将探讨多核调度、GPU计算的协同等相关技术。     操作系统安全性与隐私保护:数字时代的信任基石      随着网络攻击的日益复杂,操作系统的安全性和用户隐私保护面临着前所未有的挑战。我们将讨论新型的安全威胁,以及操作系统在应对这些威胁方面所做的努力,如可信计算、差分隐私等。  本书的独特价值  本书并非简单地罗列概念,而是致力于以一种清晰、有逻辑的方式,将操作系统庞杂的知识体系展现在读者面前。我们强调理论与实践相结合,通过分析真实的系统设计案例和性能评估,帮助读者理解抽象概念的实际意义。无论您是计算机科学专业的学生,还是希望深入了解计算原理的开发者,亦或是对数字世界运作机制充满好奇的爱好者,本书都将是您探索操作系统奥秘的理想起点。  让我们一同踏上这段探索之旅,揭开操作系统神秘的面纱,理解数字世界是如何运转的,并为未来计算的发展打下坚实的基础。