Linux内核学习笔记 -16 进程用户空间管理机制

每个进程都有自己独立的地址空间,那么进程的地址空间到底是什么时候创建的? 实际上,当fork系统调用创建进程的时候,也就为该进程创建了完整的用户空间。如上图。

这个用户空间是如何被创建出来的?通过copy或共享父进程的用户空间来实现,即内核内核调用copymm函数来实现。这样就为新进程建立了所有的页表何mm_struct结构。

通常来说,每个进程都有自己的用户空间,但是如果调用clone函数,创建的内核线程只会共享父进程的用户空间。linux利用写时复制技术,来快速创建进程。

写时复制技术到底是如何实现的?当子进程共享父进程的地址空间的时候,只要其中任何一个进程进行写入,则该页面就复制一份,如上图的Copy of page C。子进程用写C页,复制一份该页。

猜你喜欢

转载自blog.csdn.net/f2157120/article/details/107725153
今日推荐