内核概述
Linux版本
在2.5之前, 版本号用三个数字描述(例如2.6.10)。前两个数字用来表示版本号。第三个数字表示发布号。第一位版本号2从1996年开始就没变过。第二位版本号表示内核的类型: 偶数代表稳定的内核,奇数代表开发中的内核。
2.6的开发过程中,第二个数字不再表示一个内核是稳定版本还是开发版本。所以,现在内核开发者都在2.6中的内核进行大幅改进。只有在内核开发者必须对内核的重大修改进行测试时,才会采用一个新的内核分支2.7。
此外,发布好的内核依然有可能潜藏着不稳定性和各种错误,为了解决这个问题。内核开发者可能发布带有补丁程序的内核版本,并且用第四位数字表示带有不同补丁的内核版本,例如2.6.11.12
操作系统
操作系统的两个主要目标:
- 与硬件交互,为硬件平台上的所有底层可编辑部件提供服务
- 为运行在计算机系统伤的应用程序提供执行环境
类Unix操作系统把计算机物理组织相关的所有底层细节都对用户运行的程序隐藏起来。
多用户系统
多用户系统(multiuser system)就是一台能并发和独立执行分别属于两个或者多个用户的若干应用程序的计算机。
这样的系统必须包含几个特点:
- 核实用户身份的认证机制
- 防止错误的用户程序妨碍其他应用程序在系统中运行的保护机制
- 防止有恶意的用户程序干涉或者窥视其他用户的活动
- 限制分配给每个用户的资源数的记账机制
Unix文件系统
Unix文件是以字节序列组成的信息载体,内核不解释文件的内容(内核不会去解析文件的具体数据,比如不会关心这是文本、图片还是可执行文件。所有的解释工作都交给用户空间的应用程序来处理。比如,当用户打开一个JPEG图片,内核只是负责读取字节,而由图片查看器来解释这些字节如何组成图像。)
从用户的观点看,文件被组织在一个树结构的命名空间:

文件类型
分类如下:
- 普通文件
- 目录
- 符号链接
- 面向块的设备文件
- 面向字符的设备文件
- 管道和命名管道
- 套接字
文件描述符与索引节点
Unix中除了设备文件和特殊文件系统外,每个文件都是字符序列组成的。文件内容不包含任何控制信息,如文件长度或者文件结束符(EOF)。
文件系统处理文件需要的信息包含在一个名为inode的数据结构中。每个文件都有自己的索引节点。无论是哪种Unix系统 其中必须包含:
- 文件类型
- 与文件相关的硬链接个数
- 以字节为单位的文件长度
- 设备标识符(包含文件的设备的标识符)
- 在文件系统中标识文件的索引节点号
- 文件拥有者的UID
- 文件的用户组
- 时间戳
- 访问权限和文件模式
Unix内核
Unix内核提供了应用程序可以运行的执行环境.因此,内核必须实现一组服务以及先用的结构.应用程序使用这些接口通常不会与硬件资源直接交互。
进程/内核模式
CPU既可以运行在用户态也可以运行在内核态。实际上一些CPU可以有两种以上的只想状态。例如, Intel 80x86有四种不同的执行状态。当时所有标准的Unix内核都仅仅利用内核态和用户态。
当一个程序在用户态执行,不能直接访问讷河数据结构火内核的程序。一个程序执行时,大部分时间处于用户态,只有需要内核需要提供的服务才切换到内核态。当内核满足了用户程序的请求后,程序有回到用户态。
内核本身并不是一个进程,而是进程的管理者。可以从几个方面对比他们:
| 特性 | 内核 | 进程 |
|---|---|---|
| 运行模式 | 内核态(特权模式) | 用户态(非特权模式) |
| 调度方式 | 由硬件中断/异常触发 | 由内核调度器分配时间片 |
| 资源访问权限 | 直接操作所有硬件 | 受限访问(需内核授权) |
| 生命周期 | 从开机到关机持续存在 | 可被创建和终止 |
进程使用系统调用来请求内核服务。

浙公网安备 33010602011771号