原创 中断、内核空间和用户空间

2020-7-18 14:30 1458 9 9 分类: 软件与OS

 第一个术语是中断(interrupt),它来源于两个方面:硬件中断,例如磁盘指明其中存放一些数据(这与本章无关);和软件中断,一种等价的软件机制。在x86系列CPU中,软件中断是用户进程通知内核需要触发系统调用的基本方法(出于这种目的使用的中断号是0x80,对于Intel芯片的研究者来说更为熟悉的是INT 80)。内核通过system_call171行)函数响应中断,这一点我们马上就会介绍。

另外两个术语是内核空间(kernel space)和用户空间(user space),它们分别对应内核保留的内存和用户进程保留的内存。当然,多用户进程也经常同时运行,而且各个进程之间通常不会共享它们的内存,但是,任何一个用户进程使用的内存都称为用户空间。内核在某一个时刻通常只和一个用户进程交互,因此实际上不会引起任何混乱。

由于这些内存空间是相互独立的,用户进程根本不能直接访问内核空间,内核也只能通过put_user13278行)和get_user13254行)宏和类似的宏才可以访问用户空间。因为系统调用是进程和进程所运行的操作系统之间的接口,所以系统调用需要频繁地和用户空间交互,因此这些宏也就会不时的在系统调用中出现。在通过数值传递参数的情况下并不需要它们,但是当用户把指针——内核通过这个指针进行读写——传递给系统调用时,就需要这些宏了。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
9
关闭 站长推荐上一条 /3 下一条