linux下fork系统调用的实现

本文探讨了Linux-2.6.11内核中fork系统调用的实现过程,从用户态到内核态的转换,涉及中断、系统调用号和系统调用表。在内核中,fork调用由sys_fork、do_fork及copy_process等函数协同完成,同时介绍了struct pt_regs和struct thread_info结构体在其中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微笑微笑今天再来写一篇,


本文章是在研究了linux-2.6.11版本的内核源码写的,其他版本可能存在差异。

一. fork()函数从用户态到内核态的过程

     1. 基本名词

     用户空间:虚拟地址空间中较低的3G字节(从虚拟地址 0x00000000到0xBFFFFFFF),供各个进程使用,称为“用户空间。

     内核空间:虚拟地址空间中最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为“内核空间”。

     用户态:当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。此时处理器在特权级最低的(3级)用户代码中运行,用户栈。

     内核态;当一个任务(进程)执行系统调用而陷入内核代码中执行时,就称进程处于内核运行态(内核态)。处理器便处于特权级最高的(0级)内核代码中执行,内核栈。

     2. 此过程的实现机制  —— 中断

           (1). 中断:在运行一个程序的过程中,继续以“插入”的方式执行一些完成特定功能的程序段的处理方式。

           (2). 分类:

          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值