开发者社区> 异步社区> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》——第1章 回顾UNIX内核原理 1.1引言

简介: UNIX系统是一种多用户、多任务操作系统,它提供了高度的程序可移植性以及丰富的开发工具集合。UNIX系统取得成功的一部分原因在于它提供的可移植的应用程序接口集合。这一接口集合能够轻而易举地处理把应用程序从一家厂商的系统移植到另一家厂商的问题。
+关注继续查看

本节书摘来自异步社区《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》一书中的第1章,第1.1节,作者:【美】Curt Schimmel著,更多章节内容可以访问云栖社区“异步社区”公众号查看

第1章 回顾UNIX内核原理

本章回顾了UNIX内核原理的有关内容,在以后各章中会用到它们。这里没有完整地讨论这个主题,而是作为那些已经熟悉基本概念和术语的人对这些内容进行的一次复习。本章的内容涉及单处理器系统。多处理器UNIX系统的实现是本书第二部分的主题。不熟悉UNIX操作系统或者UNIX内核原理的读者应该首先从本章末尾给出的参考文献中选出一些阅读。

1.1 引言

UNIX系统是一种多用户、多任务操作系统,它提供了高度的程序可移植性以及丰富的开发工具集合。UNIX系统取得成功的一部分原因在于它提供的可移植的应用程序接口集合。这一接口集合能够轻而易举地处理把应用程序从一家厂商的系统移植到另一家厂商的问题。UNIX取得成功的另一部分原因在于操作系统、命令和库(library)本身的编写都可以轻松地移植到不同的计算机上,从而促进了市场上UNIX硬件平台的多样性。

UNIX系统在逻辑上具有分层的结构,可以分成两个主要部分:内核(kernel)和用户程序(user program)。图形化的表示如图1-1所示。
screenshot

内核的用途是与硬件接口并且控制硬件。内核还向用户程序提供一组抽象的系统服务,称为系统调用(system call),使用可移植的接口就能够访问系统调用。内核在内核级(kernel level)上运行,在这个级别上它能够执行特权操作。这能让内核完全控制硬件和用户级程序,并且提供一个让所有的程序协调共享底层硬件的环境。

UNIX系统调用服务的定义在很大程度上能够让它们在所有的UNIX系统上都显得相同,而不管硬件的特殊性如何。这些抽象概念提供了UNIX用户级程序高度的可移植性。文件(file)就是一种内核抽象服务的例子。UNIX文件呈现为一个顺序字节流的形式,其中没有记录(record)或者任何其他类型的边界。用户程序可以从文件的任何部分读取任意数量的字节,而无需考虑对齐任何类型的边界。这就使用户程序在存取一个文件的时候无需考虑磁盘的物理扇区(physical sector)、磁道(track)和柱面(cylinder)的边界。文件抽象如何映射到硬件上的细节问题是由内核来负责处理的。

用户的应用程序、UNIX命令以及库(常用子例程的集合)都共存于用户级(user level)。用户级包含非特权的硬件执行状态。因此,用户级程序是在一个受限的环境中执行的,它受到了内核的控制,防止同时执行的多个程序彼此互相干扰(无论是有意还是无意的)。当用户程序通过执行一次系统调用来请求服务的时候,系统调用会转入内核,在那儿它代表发出请求的用户程序执行一次服务。还可能执行权限检查以确保该程序有权访问被请求的服务。

图1-1描绘出了UNIX系统以及其他大多数操作系统传统上是如何实现的:它们都是作为一个单片的程序(monolithic program)。随着时间的推移,这种实现一直在向结构化的方向发展。在结构化的方式中,内核服务被分割成了独立的一些模块(module)。这就增加了实现的灵活性,更易于添加、改变以及移植系统服务,也有可能将一些服务移到内核之外,然后在特殊的服务器进程中以用户级来运行它们。这就减少了内核自身所必须提供的服务,从而使其缩小到微内核(micro-kernel)。因为本书所介绍的概念和技术并不依靠内核的内部组织,所以也就无需进一步深入考虑其组织的问题。从现在开始,术语“内核”一词将用来指提供UNIX系统服务的东西,而不管它是一个单片程序还是一组模块。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
程序员必知的缓存套图
程序员必知的缓存套图
0 0
《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》——导读
虽然高速缓存能够在多处理器中增加有效的存储器带宽,但是高速缓存结构对于管理它所需要的操作系统开销有很大的影响,这又反过来影响了系统的整体性能。
1373 0
《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》——2.14 进一步的读物
本节书摘来自异步社区《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》一书中的第2章,第2.14节,作者:【美】Curt Schimmel著,更多章节内容可以访问云栖社区“异步社区”公众号查看
1151 0
《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》——2.13 习题
一个程序通过每次将一个字保存到存储器连续的地址中来使存储器清零。观察一个系统,它采用带有写分配的写回高速缓存,在一开始被清零的存储器块并没有被高速缓存起来的时候,该系统会发生什么样的情况?假定行的大小比一个字大,第一次把数据保存到每一行中的时候会造成一次缺失,要从主存储器读取该行的内容。
1045 0
《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》——2.12 各种高速缓存体系的差异
前5项影响高速缓存的性能,而且从保持高速缓存一致性的角度来看,除了一项(组大小)之外,其他的项对操作系统都没有直接影响。偶尔必须考虑一下组的大小,这将在3.3.2、4.2.2和4.2.6节中介绍。清单中的最后3项也影响性能,但是它们还影响操作系统。
849 0
《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》——2.11 高速缓存的性能
虽然全面讨论高速缓存的性能超出了本书的范围,但还是可以做以下一些观察。首先,高速缓存的性能不仅取决于高速缓存的设计,而且取决于应用程序的引用模式。因此,必须谨慎地通过测试基准程序来判定高速缓存的性能以及一般化测试结果。
786 0
《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》——2.10 独立的指令高速缓存和数据高速缓存
将指令高速缓存和数据高速缓存分开的做法目前在计算机系统中相当常见。这种做法能够有效地使高速缓存的带宽加倍,因为它能让CPU从指令高速缓存预取指令的同时把数据载入或者保存到数据高速缓存中。图2-17描绘了这样的一种组织结构。
847 0
《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》——2.9 无缓存的操作
大多数实现都允许CPU绕过高速缓存直接访问主存储器,这称为无缓存的(uncached)操作。例如,如果执行一次无缓存的读取操作,那么即使地址已经在高速缓存中造成一次命中,也还是从主存储器读取数据。在这种情况下,忽略被缓存的数据,返回来自主存储器的值。
1108 0
《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》——2.8 高速缓存冲洗
所有的高速缓存实现都为操作系统提供了从高速缓存中删除数据的能力,这种功能一般称为高速缓存冲洗(cache flushing)。根据高速缓存组织结构的不同,这对于防止意外引用过时数据、保持高速缓存一致性来说可能是必不可少的功能(高速缓存一致性在多处理器系统上有更广泛的含义,这将在第三部分讨论)。
969 0
+关注
异步社区
异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
分布式高并发缓存6.0
立即下载
高并发分布式缓存Redis6.0
立即下载
基于英特尔 SSD 的虚拟机缓存解决SSD
立即下载