理解进程创建、可执行文件的加载和进程执行进程切换,重点理解分析fork、execve和进程切换

本文详细分析了Linux系统中进程创建的机制,通过研究`fork`、`execve`系统调用的内核处理函数,探讨了如何创建新进程和加载可执行文件。同时,通过对`schedule`函数的跟踪,揭示了进程调度与切换的过程。内容包括task_struct数据结构、do_fork中的copy_process以及do_execve中的load_elf_binary等关键步骤。
摘要由CSDN通过智能技术生成

学号:077
转载请注明出处 + https://github.com/mengning/linuxkernel/

一、阅读理解task_struct数据结构

sched.h中task_struct的定义有几百行,其主要结构如下:

在这里插入图片描述

进程是程序执行时的一个实例,为了管理进程,内核必须对每个进程所做的事情进行描述,这些信息就保存在进程控制块PCB,在Linux中就是task_struct,其中包含进程状态,调度信息,通讯状况,父子兄弟的指针(也是task_struct),时间信息,标号,文件信息, 进程上下文和内核上下,处理器上下文和内存信息。

volatile long state;  //进程的状态

unsigned long flags;  //进程号


mm_segment_t addr_limit; //进程地址空间

volatile long need_resched;//调度标志

long nice;       //进程的基本时间片

unsigned long policy;//进程的调度策略

struct mm_struct *mm; //进程内存管理信息

struct task_struct *next_task, *prev_task; //进程的双向循环链表

struct thread_struct thread;//进程的CPU状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值