操作系统笔记一

为什么操作系统分为用户态与内核态?

        在计算机系统中,有两类程序,一种是操作系统内核程序,一种是用户编写的程序。操作系统内核程序执行一些特权指令如:I/O指令,置中断指令等来管理用户自编程序。而出于安全考虑,用户编写的程序无法执行特权指令。用户编写的程序运行在用户态,操作系统内核程序运行在核心态。具体实现是将cpu划分为用户态和内核态。

中断和异常

        用户程序运行在用户态,需要使用到核心态的功能。所以需要在内核态建立一些"门",以便CPU能从用户态进入到内核态。在实际操作系统中,实现从用户态到内核态的转换便是通过中断或异常。

用户态->内核态:发生中断或异常时,运行在用户态的CPU会立即进入到内核态。

内核态->用户态:执行一个特权指令,将程序状态字的标志位设置为用户态。

        中断:也称外中断,指来自CPU执行指令以外的事件的发生。比如设备I/O处理完成发出的I/O中断,时间片结束发出的时钟中断等。

        异常:也称内中断,例外或陷入。指CPU执行指令内部的事件,如地址越界,算数溢出,发生缺页等。对异常的处理一般依赖于当前程序的运行环境,而且异常不能被屏蔽,出现应立即处理。

如何处理中断?

  1. 关中断。CPU响应中断后需要保护程序的现场状态,并且在保护现场的过程不能响应更高级中断源的中断请求。
  2. 保存断点。为了执行中断服务程序后能正确恢复到原来的位置,需要保存断点,即程序计数器PC。
  3. 引出中断服务程序。将中断服务程序的入口地址放入程序计数器。
  4. 保存现场和屏蔽字。进入中断服务程序后需要保护现场,一般是程序状态字寄存器和一些通用寄存器。
  5. 开中断。允许响应更高级中断源的中断请求。
  6. 执行中断服务程序。中断请求的目的。
  7. 关中断。保证在恢复现场和屏蔽字时不被中断。
  8. 恢复现场和屏蔽字。
  9. 开中断,中断返回。返回到原程序的断点处,继续执行原程序。

系统调用

        应用程序通过系统调用请求操作系统的服务。凡是与资源有关的操作,都必须通过系统调用的方式向操作系统提出服务请求,由操作系统内核程序进行相应处理。系统调用可分为:设备管理、文件管理、进程控制、进程通信、内存管理。由于系统调用对系统影响非常大,所以需由操作系统内核完成。

        用户可以执行陷入指令(访管指令或trap指令)来发起系统调用请求系统服务。访管指令不是特权指令。使用访管指令会产生一个中断事件(自愿中断),也叫访管中断。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值