Linux进程入门学习(一)-认识进程

来源:互联网 发布:pokemon go unity源码 编辑:程序博客网 时间:2024/06/01 10:20

1.进程的概念

一个可执行的程序文件(ELF格式)被加载到内存当中,然后让CPU逐条执行其代码,根据代码作出相应的动作,这样一个动态进程就产生了。因此,进程是一个动态变化的过程。

下面用一张图来表示一个程序从编写到最终运行的过程:

进程的概念以及程序的运行过程

一段固化在磁盘的代码可以多次被加载到内存中运行,从而产生多个进程。磁盘,即ROM(Read Only Memory只读存储器) 掉电不丢失数据,但读写速度非常慢,所以用来存储数据;内存DDR,即RAM(RamdomAccessMemory随机存取存储器),读写速度快,掉电丢失数据。故程序固化在磁盘中,运行时则加载到内存中,然后执行代码。
当ELF格式的程序被执行时,内核中实际上产生了一个名为task_struct{}的结构体来表示这个进程。进程从一开始就需要各种资源来维护,比如内存资源、CPU资源、文件、信号、各种锁资源等,所有这些东西都是动态变化的,而进程的这些信息都会记录在task_struct当中,所以这个结构体也常称为进程控制块(Process Control Block,简称PCB)。
下面是内核中task_struct的截图

task_struct

总之,当一个程序文件被执行产生一个进程时,内核将会产生一个task_struct结构体,来承载该进程运行后所需要的所有资源,随着进程的运行,各种资源被分配和释放,是一个动态的过程。

2.进程的组织方式

进程是一个动态的过程,既然会产生进程,那么进程也会消失,即死亡。每个进程都是有其父进程产生,若子进程结束后,父进程会回收其资源。若子进程的父进程先被结束,那么子进程就会进入孤儿态,其会被系统的1号进程回收其资源。
shell命令ps -lA可以查看当前系统的进程,例如:

系统进程

关于进程的生命周期,下节继续学习。

原创粉丝点击