第一章 操作系统的基本知识
从 UNIX 到 Linux 的发展历程
-
重要的UNIX标准包括: ANSI C、IEEE POSIX 等,UNIX 标准只是对应用程序接口进行统一,内部实现机
制则留给操作系统开发者自行实现。 -
ANSI C
- ANSI C 是美国国家标准协会 (ANSI) 于1983年发布的 C 语言标准;
- 1989年,此标准被采纳为国际标准 ISO/IEC 9899:1990;
- ISO C 标准现旨在提供应用程序的可移植性,使其能适应于不同的操作系统,而不仅仅是 UNIX 操作系统。
-
POSIX
- 1986年,IEEE 制定了IEEE P1003 标准,这套标准被称为 POSIX (Potable Operating System Interface);
- POSIX 定义了一整套的应用程序接口,包括系统调用、库函数、公共命令;
- POSIX 标准希望在源代码级别保证应用程序可移植性。
-
自由软件并不是指“免费”的,而是指具有“自由度”的软件,也就是使用者运行、复制、发布、研究、修改和改进该软件的自由。
-
GNU通用公共许可协议
- GNU GPL 是一个广泛被使用的自由软件许可协议条款,最初由 Stallman 为 GNU 计划而撰写,GPL 授予程序接受人以下权利,或称“自由”;
- 以任何目的运行此程序的自由;
- 再发行复制件的自由;
- 改进此程序,并公开发布改进的自由;
- Linux 是在 GNU 通用公共许可证下发行,它却不是 GNU 计划的一部分;
- Linux 是一种外观和性能与 UNIX 相同或更好的操作系统,但 Linux 不源于任何版本的 UNIX 的源代码,是一个类似于 UNIX 的产品。
UNIX/Linux 体系结构
-
操作系统在计算机体系中的位置
-
内核的功能
- 内存管理
- 内存分配调用
- 包括静态分配方式、动态分配方式。
- 内存保护
- 确保每个程序在自己的内存空间运行、互不干扰;
- 方法是使用界限寄存器或存储保护键。
- 地址映射
- 实现程序的逻辑地址与存储器的物理地址之间的映射功能。
- 内存扩充
- 从逻辑上扩充物理内存,以允许比物理内存更大的程序在机器内运行,为此操作系统必须具有请求调入功能与置换功能。
- 内存分配调用
- 进程管理
- 进程控制
- 包括进程创建、进程撤销、进程阻塞、进程唤醒。
- 进程协调
- 由于进程运行的异步性,因此进程同步的任务是对诸进程的运行协调,包括两种方式:进程互斥方式与进程同步方式。
- 进程通信
- 主要完成同一台机器上不同进程间通信和不同机器上进程间的通信,以共同完成一相同的任务。
- 进程调度
- 操作系统按照一定的规则对等待运行的多道程序进行调度,以保证每个程序都能有机会得到运行,并最终完成。
- 进程控制
- 文件管理
- 文件存储空间的管理
- 为每一文件分配必要的外存空间;
- 为提高外部存储空间的利用率,系统应设置相应的数据结构,用于记录文件存储空间的使用情况。
- 目录管理
- 为了方便对用户的文件进行管理,对文件系统建立一定结构的目录结构;
- 同时要求快速的目录查询手段。
- 文件的读、写管理和存取控制
- 利用一定的系统调用对文件进行读写操作;
- 为防止系统中的文件被非法访问和窃取,文件系统中必须提供有效存取控制功能。
- 文件存储空间的管理
- 设备管理
- 缓冲管理
- 管理各种类型的缓冲区,如字符缓冲区和块缓冲区;
- 缓和CPU和I/O速度不匹配的矛盾,最终达到提高CPU和I/O设备的利用率,进而提高系统吞吐量的目的。
- 设备分配
- 根据用户的I/O请求,为之分配其所需要的设备。
- 设备处理
- 又称为设备驱动程序,任务是实现CPU和设备控制器之间的通信。
- 设备独立性和虚拟设备
- 一方面保证用户程序独立于物理设备,另一方面保证多个进程能并发地共享同一个设备。
- 缓冲管理
- 内存管理
-
Unix/Linux 系统架构