《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》——导读

简介: 虽然高速缓存能够在多处理器中增加有效的存储器带宽,但是高速缓存结构对于管理它所需要的操作系统开销有很大的影响,这又反过来影响了系统的整体性能。


screenshot


**
前言
**
在计算机系统发展历史中的许多时期,构建整体上速度更快的系统的愿望都集中在系统的三大组成部分——CPU、存储子系统和I/O子系统——的速度都更快上面。通过提高时钟速度就可以制造出更快的CPU。通过降低存取时间就可以制造出更快的存储子系统。通过提高数据传输速率就可以制造出更快的I/O子系统。但是,随着时钟速度和传输速率的提高,要提高系统的整体速度就变得越来越困难了,因此要设计和构建这样的系统,成本也变得越来越高。随着速度的提高,传输延迟(propagation delay)、信号上升时间(signal rise time)、时钟同步和分发(clock synchronization and distribution)等都变得越发重要起来。这类高速设计的高成本更难获得有效的性能价格比。

因为受这样和那样的因素影响,系统设计人员扩大了他们的关注范围,以找出提高系统整体性能的其他途径。精简指令集计算机(Reduced Instruction Set Computer,RISC)系统的概念就是其成果之一,在RISC系统中对CPU指令集进行了简化,从而让一个低成本的快速硬件实现就能完成这些指令。另一项成果是高速缓存存储系统的开发。高速缓存通过把程序中引用最频繁的数据和指令保存在一小块高速存储器中,以此降低主存储系统的负载,从而提高系统的性能。通过增加一小块成本划算、高速度的高速缓存(而不是一个成本高、规模大的高速主存储子系统)就能加速存储器整体存取速度。采用高速缓存存储器有可能带来更快的存储器整体存取时间,这对于RISC系统来说尤为重要,因为要完成相同的任务,使用精简的指令集通常要求RISC CPU比传统的CPU体系结构取得和执行更多的指令。一般而言,RISC系统需要更高的带宽来以峰值性能运行。

通过并行运行更多台设备而不是提高任何单台设备的速度就能获得更高的I/O传输速率。这就导致了诸如廉价磁盘冗余阵列(Redundant Arrays of Inexpensive Disks,RAID)之类设备的发展,在RAID中,多块磁盘并行运行以提供更高的整体传输率。通过增加一个系统中CPU的数量来构建多处理器,这样的技术也可以用于提高CPU的速度。多处理器把系统负载分散到多个处理器上来增加整个系统的吞吐率。

多处理器和高速缓存是密切相关的。紧密耦合多处理器系统(tightly coupled multiprocessor system)有一个共享的主存储子系统,随着处理器数量的增加,它需要更高的主存储带宽,因为每个处理器在取得和执行一条独立的指令流的同时,都必须在存储器中访问一组独立的数据。将一块高速缓存和每个处理器进行耦合,从高速缓存而不是共享的主存储器来满足处理器大部分的存储器访问请求,就可以降低主存储器的负载。这是一种颇为划算的提高系统性能的途径。

虽然高速缓存能够在多处理器中增加有效的存储器带宽,但是高速缓存结构对于管理它所需要的操作系统开销有很大的影响,这又反过来影响了系统的整体性能。

总而言之,构建速度更快的计算机系统不仅仅是一件诸如提高CPU时钟速度这样的事。虽然这样的技术实际上造就了更快的系统,但是它们不一定就是经济上划算的解决方法。通过集中研究如何利用现有的系统部件来提供更高的系统性能,人们已经发现高速缓存和多处理器是划算的解决方案。因此,我们就从这里开始研究高速缓存和多处理器的体系结构,以及它们给操作系统带来的问题。

目录

**[第1章 回顾UNIX内核原理
1.1 引言](https://yq.aliyun.com/articles/102602)**
1.2 进程、程序和线程
1.3 进程地址空间
1.3.1 地址空间映射
1.4 上下文切换
1.5 内存管理和进程管理的系统调用
1.5.1 系统调用fork
1.5.2 系统调用exec
1.5.3 系统调用exit
1.5.4 系统调用sbrk和brk
1.5.5 共享内存
1.5.6 I/O操作
1.5.7 映射文件
1.6 小结
1.7 习题
1.8 进一步的读物
**[第2章 高速缓存存储系统概述
2.1 存储器层次结构](https://yq.aliyun.com/articles/102691)**
2.2 高速缓存基本原理
2.2.1 如何存取高速缓存
2.2.2 虚拟地址还是物理地址
2.2.3 搜索高速缓存
2.2.4 替换策略
2.2.5 写策略
2.3 直接映射高速缓存
2.3.1 直接映射高速缓存的散列算法
2.3.2 直接映射高速缓存的实例
2.4 双路组相联高速缓存
2.5 n路组相联高速缓存
2.6 全相联高速缓存
2.7 n路组相联高速缓存的总结
2.8 高速缓存冲洗
2.9 无缓存的操作
2.10 独立的指令高速缓存和数据高速缓存
2.11 高速缓存的性能
2.12 各种高速缓存体系的差异
2.13 习题
2.14 进一步的读物

相关文章
|
15天前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
144 78
|
3月前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
85 6
|
6天前
|
数据采集 存储 缓存
如何使用缓存技术提升Python爬虫效率
如何使用缓存技术提升Python爬虫效率
|
10天前
|
存储 缓存 负载均衡
从零到一:分布式缓存技术初探
分布式缓存通过将数据存储在多个节点上,利用负载均衡算法提高访问速度、降低数据库负载并增强系统可用性。常见产品有Redis、Memcached等。其优势包括性能扩展、高可用性、负载均衡和容错性,适用于页面缓存、应用对象缓存、状态缓存、并行处理、事件处理及极限事务处理等多种场景。
31 1
|
3月前
|
缓存 Java Shell
Android 系统缓存扫描与清理方法分析
Android 系统缓存从原理探索到实现。
91 15
Android 系统缓存扫描与清理方法分析
|
3月前
|
存储 缓存 数据库
缓存技术有哪些应用场景呢
【10月更文挑战第19天】缓存技术有哪些应用场景呢
|
3月前
|
存储 缓存 运维
缓存技术有哪些优缺点呢
【10月更文挑战第19天】缓存技术有哪些优缺点呢
|
4月前
|
存储 缓存 NoSQL
解决Redis缓存击穿问题的技术方法
解决Redis缓存击穿问题的技术方法
82 2
|
4月前
|
存储 缓存 Java
在Spring Boot中使用缓存的技术解析
通过利用Spring Boot中的缓存支持,开发者可以轻松地实现高效和可扩展的缓存策略,进而提升应用的性能和用户体验。Spring Boot的声明式缓存抽象和对多种缓存技术的支持,使得集成和使用缓存变得前所未有的简单。无论是在开发新应用还是优化现有应用,合理地使用缓存都是提高性能的有效手段。
53 1
|
4月前
|
缓存 运维 NoSQL
二级缓存架构极致提升系统性能
本文详细阐述了如何通过二级缓存架构设计提升高并发下的系统性能。
141 12