二、操作系统运行机制
操作系统运行机制
用户空间和内核空间
- 用户空间运行应用程序,内核空间运行系统程序
- cpu在执行应用程序时为用户态,在执行系统程序时为内核态
- 应用程序的指令为非特权指令,系统程序的指令为特权指令
时钟管理
时钟中断
- 外中断:中断来源是外部设备,属于被迫中断
- 内中断:中断来源程序本身,属于主动中断
- 中断可以提高cpu的利用率。例如网络IO十分耗时,此时程序可以中断,cpu可以去执行其他任务
内中断三种情况
- 陷入(Trap):由程序主动引起。当程序中需要cpu去执行特权指令时,就会发起陷入中断,cpu由用户态转变为内核态
- 故障(fault):由一些正常机制而引发的中断。待中断处理程序执行后,应用程序可继续往下执行。例如内存缺页故障,在运行大程序时,只会将核心功能加载到内存中,当执行的功能内存没有加载时,引发内存缺页故障,加载所需功能,然后继续执行
- 终止(abort):由致命错误引起。例如数组越界,内存溢出等。这种情况下引发的中断一般会停止程序运行
中断处理流程
- 关中断:cpu响应中断,并且不再响应其他中断请求
- 保存断点:保存程序计数器的内容,以便中断处理完后,回来继续执行应用程序
- 引出中断服务程序:加载中断服务程序入口地址,以便后面执行
- 保存现场:保存应用程序的上下文信息
- 开中断:此时cpu可以响应其他中断
- 执行中断服务程序:此时cpu在执行中断服务程序,期间可以响应其他中断
- 关中断:cpu不再响应其他中断
- 恢复现场:将应用程序上下文信息加载到寄存器
- 开中断:cpu可以响应其他中断,如果没有其他中断,cpu返回执行应用程序
原语
- 原语是若干个指令组成的程序段
- 原语运行在内核空间
- 原语实现了某个特定功能
- 原语具有原子性,不能被中断
操作系统结构
- 传统操作系统的内核空间有进程管理服务,进程调度服务等,属于大内核
- 微内核操作系统的内核空间中有与硬件处理紧密相关的程序。这些程序是操作系统的核心功能。但是光微内核不足以构成操作系统
- 微内核与大内核相比,少了些非核心功能