关于视频3.4系统调用的问题
匿名2023/07/31 19:53:50提问
    视频纠错student
217

    老师在讲解通过系统调用进入内核,堆栈为什么要切换时,打的比方是,用户取钱,银行账号上余额没有减少;或者用户存钱,银行账号上余额没有增加。我觉得这个比方不准确,不能说明问题。我没在银行这个问题中找到堆栈的对应~银行这个问题,我第一次看的时候,感觉是在讲同步互斥~
    堆栈切换的问题:内核堆栈所在的内存的读写有特权要求,所以用户态不能访问内核堆栈。内核服务过程需要堆栈,虽然内核态能访问内存所有位置(这个描述不确定,不知道内存权限判断是==还是<=),但是如果内核使用了用户态的栈,就可能导致用户态程序运行出错,所以内核态不应该访问用户堆栈。综上,内核态和用户态应该各自使用各自的堆栈,于是在特权切换的同时需要堆栈切换。
    不知道我这么理解是否正确?如果正确,可以这么比方:各自使用自己的堆栈,好比把自己的钱放在自己的钱包里,使用起来很安全;如果不切换堆栈,那么就好比把钱放在别人的钱包里,使用起来不安全,可能被修改。(这个比方没有体现特权)
    祝好!:)

回答(0
    推荐问答
      Simple Empty
      暂无数据