操作系统-系统调用

1 什么是系统调用?

程序的执行一般是在用户态下执行的,但当程序需要使用操作系统提供的服务时,比如说打开某一设备、创建文件、读写文件(这些均属于系统调用)等,就需要向操作系统发出调用服务的请求,这就是系统调用。

也可将其看作是一个内核和用户空间程序交互的接口(将请求送达给内核,当内核将请求处理完毕后再将处理结果送回给用户空间)。

2 进程的执行在系统上的两个级别

为保护设备,操作系统不会让所有的程序都能够轻松访问到任何文件,因此将进程的执行在系统上地运行分为两个级别:

用户态:用户空间就是用户进程所在的内存区域,用户进程和系统进程的所有数据都在内存中。处于用户态的程序只能访问用户空间。

内核态:系统空间就是操作系统占据的内存区域。处于内核态的程序可以访问用户空间和内核空间。

3 用户态到内核态的三种转化方式

1)系统调用:程序的执行一般是在用户态下执行,但当程序需要使用操作系统提供的服务时,比如打开某一设备、创建文件、读写文件(这些均属于系统调用)等,就需要向操作系统发出调用服务的请求。

2)异常:当CPU在执行运行在用户态下的程序时,发生了某些实现不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,如缺页异常等。

3)外围设备的中断:当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令转而去执行于中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。

4 用户态与内核态的区别

权限不一样:当程序运行在3级特权上时,就可以称之为运行在用户态。当程序运行在0级特权级上时,就可以称之为运行在内核态。

用户态的进程能够存取它们自己的指令和数据,但不能存取内核指令和数据(或其他进程的指令和数据)。

核心状态下的进程能够存取内核和用户地址某些机器指令是特权指令,在用户态下执行特权指令会引起错误。在系统中内核并不是作为一个与用户进程平行的估计的进程的集合。

5 Ring

 如图,从内到外依次使用0-3标识环(Ring),越处于内部的圈,其代表的权限越大。即常见的ring 0 内核态,ring 3 用户态。

内圈可以访问修改外圈的资源,相反外圈不可访问修改内圈的资源,即可印证上文讲到的内核态与用户态之间的关系。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值