中断与系统调用
操作系统接口是什么?
用户通过程序(应用软件)使用计算机
程序是普通代码加上一些重要的函数(如printf函数)
操作系统提供重要函数(重要函数就是操作系统接口,接口表现为函数调用,由系统提供,因此叫系统调用)
常见的系统调用有:
fork()
open()
为什么要区分用户态与内核态?
因为内核中有很多重要的信息与内容,若能随意调用和jmp那就很危险。
比如root密码被修改,word内容通过显存被看到
如何划分用户态与内核态?
硬件把内存割成了两个区域,一个叫用户态,一个叫内核态。
内核态可以访问任何数据,用户态不能访问内核数据
引入DPL与CPL
DPL用来描述目标内存段的特权级别(要访问的目标区域的特权级别)
CPL当前的特权级别
若CPL的数字<=DPL的数字,表示当前特权级别更高,则可以进入,否则不能进入
系统调用如何进入内核态?
硬件提供了主动进入内核的方法——中断指令int(唯一的方法)