受限直接执行(1)学习

1.虚拟化CPU

        虚拟化CPU就是一个程序运行一会,再让另一个程序运行一会。在一个时间片内就好像有多个CPU在运行多个程序。而我们在虚拟化CPU时,都会有这样的问题。如何不减少性能而虚拟化CPU,如何保持系统对CPU的控制权。这是必须解决的问题,虚拟化CPU,就意味着很多进程共享CPU,这样子就会造成性能的损失。而系统没有对CPU的控制权,一些程序就会霸占CPU无休止的运行,这样操作系统就失去了意义,只有重启来解决了。

2.受限直接执行

        直接执行,就是让程序直接在CPU上运行,这样子无疑是速度最快的执行方法。我们怎么能保证进程不会做一些我们不想让他干的事情。当进程想执行一些受限制的操作,比如说访问一个有权限的文件系统时要检查是否有权限,但如果一个进程可以随意想磁盘发送IO,这样权限就失去了作用,磁盘也没有了保护。所依 ,对于进程的限制是重要的,是为了确保系统的安全。

        此时,操作系统出现了用户模式和内核模式,用户模式的权限比较低,运行的代码受到限制,例如运行的程序不能发出IO。内核模式权限高,他可以随意操作,包括一些特权操作。也就是说,在用户模式下,进程不能完全访问硬件资源,在特权模式下,进程可以访问任何硬件资源,操作系统就是用来管理物理资源的。

        但是用户想要访问硬件资源 ,想要执行一些特权操作,应该如何应对呢?这时就会用到系统调用API,系统调用是用用户模式到内核模式的一些接口,这样子就可以进入特权模式开始执行特区操作。        

        但是系统调用进入使系统进入内核模式通过陷阱指令来完成的。当进程发起系统调用时,操作系统会执行陷阱指令,会把程序的寄存器加载到内核栈,系统模式变成内核模式,然后会有陷阱处理程序,去为进程执行任务。执行完后会从陷阱返回指令返回到相应的进程,内核模式变成用户模式。

        其中最重要的是陷阱表,系统启动时就会设置陷阱表,告诉硬件发生异常事件时要去哪里运行相应的代码。陷阱表里面有各种类型陷阱处理程序的地址,陷阱处理程序就是发生陷阱后执行系统调用的程序,它是操作系统的一部分。程序在发生进入陷阱后,就不再执行,而是由陷阱处理程序执行,而程序相应的寄存器也会被放入内核栈,当执行完从陷阱返回时,这些寄存器也会从内核栈弹出,这时候硬件就必须有足够的资源确保程序能够继续运行。相当于程序把数据容器交给陷阱处理程序操作后又给返回来,借助更高权限的人完成一些事情。

        

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值