Linux进程管理概述

本文详细介绍了Linux内核中的进程管理,包括进程的概念、进程管理的各个方面,如进程描述符、进程状态、进程创建(涉及fork()和vfork())以及进程终止的过程。重点讨论了进程描述符的分配、状态转换和写时拷贝技术在进程创建中的应用。
摘要由CSDN通过智能技术生成

1. 内核是什么

计算机真正工作的东西是硬件,数据运算需要CPU,数据存储需要硬盘,图形显示需要显卡,音乐播放需要声卡等等,那么如何控制这些硬件?这就是内核的工作,内核就是管理计算机硬件的软件。

2. 进程的概念

进程就是处于执行期的程序,但进程并不仅仅局限于一段可执行程序代码,也就是代码段,通常进程还包括很多其它的资源,像打开的文件,挂起的信号,内核内部数据,处理器状态,一个或多个具有内存映射的内存地址空间及一个或多个执行线程以及用来存放全局变量的数据段等。
现代操作系统的进程提供两种虚拟机制:虚拟处理器和虚拟内存。虚拟处理器是指虽然实际上可能是许多进程分享一个处理器,但是虚拟处理器给进程一个假象让这些进程觉得自己在独享处理器;虚拟内存机制则让进程在分配和管理内存的时候觉得自己拥有整个系统的所有内存资源。
linux支持多进程特性,可以最大化的使用cpu资源;用户可以在同一个cpu上运行多个用户程序。多进程的原理是:时钟中断触发进程调度程序,调度程序分时运行多个进程。这就要求每个进程能够保留现场信息(cpu现场、系统资源、调度信息等)。

3. 进程管理

3.1 进程描述符

进程存放在叫做任务队列(task list)的双向循环链表中。链表中的每一项包含一个具体进程的所有信息,类型为task_struct,称为进程描述符(process descriptor),
task_struct相对较大,在32位机器上,它大约有1.7KB。但如果考虑到该结构内包含了内核管理一个进程所需的所有信息,那么它的大小也算相当小了。每个进程都有一个进程描述符,记录以下重要信息:进程标识符PID、进程占用的内存区域、相关文件的文件描述符、进程环境、信号处理、同步处理等。

3.2 分配进程描述符

Linux通过slab分配器分配task_struct结构,这样能达到对象复用和缓存着色(cache coloring)的目的。在2.6以前的内核中,各个进程的task_struct结构存放在它们内核栈的尾端,这样做是为了让那些像x86那样寄存器较少的硬件体系结构只要通过栈指针就可以计算出它的位置,而避免使用额外的寄存器专门记录。现在则在栈底

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值