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

    xiaoxiao2023-07-06  157

    本节书摘来自异步社区《现代体系结构上的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所示。

    内核的用途是与硬件接口并且控制硬件。内核还向用户程序提供一组抽象的系统服务,称为系统调用(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系统服务的东西,而不管它是一个单片程序还是一组模块。

    相关资源:现代体系结构上的UNIX系统内核程序员的对称多处理和缓存技术(修订版)
    最新回复(0)