完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
进程不但包括程序的指令和数据,而且包括程序计数器和处理器的所有寄存器及存储临时数据的进程堆栈,因此正在执行的进程包括处理器当前的一切活动。 因为Linux是一个多进程的操作系统,所以其他的进程必须等到系统将处理器使用权分配给自己之后才能运行。当正在运行的进程等待其他的系统资源时,Linux内核将取得处理器的控制权,并将处理器分配给其他正在等待的进程,它按照内核中的调度算法决定将处理器分配给哪一个进程。 内核将所有进程存放在双向循环链表(进程链表)中,其中链表的头是init_task描述符。链表的每一项都是类型为task_struct,称为进程描述符的结构,该结构包含了与一个进程相关的所有信息,定义在 下面详细讲解task_struct结构中最为重要的两个域:state(进程状态)和pid(进程标识符)。 1)进程状态 Linux中的进程有以下几种状态。 它们之间的转换关系如图3.2所示。
内核可以使用set_task_state和set_current_state宏来改变指定进程的状态和当前执行进程的状态。 2)进程标识符 Linux内核通过唯一的进程标识符PID来标识每个进程。PID存放在进程描述符的pid字段中,新创建的PID通常是前一个进程的PID加1,不过PID的值有上限(最大值 = PID_MAX_DEFAULT – 1,通常为32767),读者可以查看/proc/sys/kernel/pid_max来确定该系统的进程数上限。 当系统启动后,内核通常作为某一个进程的代表。一个指向task_struct的宏current用来记录正在运行的进程。current经常作为进程描述符结构指针的形式出现在内核代码中,例如,current->pid表示处理器正在执行的进程的PID。当系统需要查看所有的进程时,则调用for_each_process()宏,这将比系统搜索数组的速度要快得多。 在Linux中获得当前进程的进程号(PID)和父进程号(PPID)的系统调用函数分别为getpid()和getppid()。 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
「含关键代码」基于AM3352/AM3354/AM3359的Linux开发案例分享
4897 浏览 0 评论
87415 浏览 0 评论
【高手问答】如何做到精通linux技术?资深工程师带你突破难点
4728 浏览 2 评论
3624 浏览 2 评论
解读Linux :先从创建一个文件夹用来存放jdk压缩文件开始
2484 浏览 0 评论
2004浏览 3评论
1287浏览 1评论
求解:aarch64交叉编译工具已经安装成功,环境变量已经配置,怎么将系统架构切换为ARM的架构
1345浏览 0评论
电脑和虚拟机可以互ping,电脑和开发板也可以互ping,但是虚拟机和开发板ping不通是什么原因
1236浏览 0评论
1176浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 02:27 , Processed in 1.241070 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号