操作系统和内核简介
操作系统是指在整个系统中负责完成最基本功能和系统管理的那些部分,包括:
- 内核
- 设备驱动程序
- 启动引导程序
- 命令行 Shell 或者其他用户界面
- 基本的文件管理工具
- 基本的系统工具
内核包括:
- 负责响应中断的中断服务程序
- 负责管理多个进程从而分享处理器时间的调度程序
- 负责管理进程地址空间的内存管理程序
- 进程间通信等系统服务
内核与应用程序:
- 内核处于系统态,拥有受保护的内存空间和访问硬件设备的所有权限
- 内核空间:系统态和被保护起来的内存空间
- 应用程序只能看到允许它们使用的部分系统资源,只能使用某些特定的系统功能,不能直接访问硬件,也不能访问内核划给别人的内存范围
- 应用程序通过系统调用让内核代其执行
- 应用程序通过系统调用在内核空间运行
- 内核运行于进程上下文中
内核与硬件设备:
- 内核响应硬件设备
- 为保证中断服务程序能够在第一时间响应和处理中断请求,中断服务程序不在进程上下文中执行,而是在一个与所有进程无关的、专门的中断上下文中运行
内核的运行模式:
- 运行于用户空间,执行用户进程
- 运行于内核空间,处于进程上下文,代表某个特定的进程执行
- 运行于内核空间,处于中断上下文,与任何进程无关,处于某个特定的中断
Linux内核与Unix内核比较
单内核与微内核设计之比较
单内核:
- 单内核从整体上作为一个单独的大过程来实现,也运行在一个单独的地址空间上
- 通常以单个静态二进制文件存放于磁盘中
- 内核可以直接调用函数
- 特点:简单、性能高
微内核:
- 功能被划分为多个独立的进程(服务器)
- 每个服务器都保持独立并运行在各自的地址空间上
- 不可直接调用函数,而是通过消息传递:进程间通信(IPC),处理微内核通信
- 特点:模块化、避免一个服务失效祸及另一个、IPC开销大
Linux内核:
- 是一个单内核
- 吸取微内核精华:采用模块化设计、抢占式设计,支持内核线程以及动态装载内核模块的能力
- 兼顾单内核性能:全部运行在内核态,可直接调用函数,无需消息传递
Linux内核与Unix内核差异
- Linux支持动态加载内核模块
- Linux支持对称多处理(SMP)机制
- Linux内核可以抢占
- Linux内核不区分线程和其他一般进程,区别在于共享资源的不同
- Linux提供具备设备类的面向对象的设备模型、热插拔事件,以及用户空间的设备文件系统(sysfs)
- 坚持原则:任何改变都必须要通过简洁的设计及正确可靠的实现来解决现实中确实存在的问题。