linux基础总结(三)------ 用户态 内核态

一.概念

1.用户态:执行自己的代码

2.内核态:执行操作系统的代码

二.联系

1.用户态向内核态的转换

(1).转换条件

a.系统调用,内核代表用户执行。(eg.银行存钱过程(银行属于内核,我们自己属于用户,银行代表我们将钱存进银行卡里,但是我们自己不能完成这个操作))

  [其和库函数的区别:函数的实现在库中执行,执行后会跳转,不会发生内核和用户的切换;系统调用的实现在内核中,执行时会发生内核和用户的切换]

b.异常。

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

        

                      strlen()(属于库函数)执行完之后产生                     用户空间

                                                              0x80(中断)   (内核换上来执行)                                                        将fd的值写入寄存器中 (线程保护)                
strlen()
fd = open()
          【sys_open()】 ( 执行前先在寄存器中读值)            内核空间                                           






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值