Linux内核学习笔记(四)进程管理

本文详细介绍了Linux操作系统中的进程管理,包括进程的基本概念、进程描述符task_struct、进程状态转换、进程创建(fork和clone)、线程实现、内核线程以及进程终结。重点讲解了Copy-on-Write优化、僵尸进程与孤儿进程的处理机制,是学习Linux内核进程管理的重要参考资料。
摘要由CSDN通过智能技术生成

进程简介

进程(Process)是Unix操作系统最基本的抽象概念之一。进程是正在执行的程序,同时也是操作系统进行资源管理的最小单位,进程需要管理打开的文件、挂起的信号、内核内部数据、处理器状态等。

线程(Thread)是进程中正在执行的程序片段,是操作系统进行调度的最小单位,一个线程指的是进程中一个单一顺序的控制流。Linux中线程只是一个特殊的进程,并没有对进程和线程进行专门的区分。

进程提供了两种虚拟抽象:虚拟处理器和虚拟内存。虚拟处理器让进程觉得自己独占处理器,虚拟内存让程序觉得自己独占系统所有内存。

Linux系统中通常通过fork()创建一个新的进程,通过exec函数族来载入新的程序执行(一般在fork了一个新进程之后调用),通过exit()退出执行。

进程描述符task_struct

进程描述符包含一个进程的所有信息,使用task_struct结构存储。内核使用双向循环列表来存储所有进程的文件描述符,该链表被称为任务队列(task list)。task_struct是一个非常大的结构,存储的信息包括进程号、打开的文件、进程的地址空间、挂起的信号、进程状态等。
task_struct

task_struct结构使用slab allocator进行分配(slab通过对象重用的方式提高分内存使用效率)。和进程描述符相关的一个数据结构是tread_info,这个结构存储在内核栈的底部(此时栈向下扩展)或者顶部&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值