文章目录
一、什么是程序,什么是进程?
程序是静态的概念,在linux下通过命令gcc xxx.c -o main磁盘中生产一个文件main 叫做程序。例如下面main、a.out 、f_config文件
进程是程序的一次运行活动,也就是说程序运行,系统就多一个进程。
通过ps指令可以查看系统中的进程
ps -aux 可以显示全部进程,示例如下
除此之外linux下还有一个top指令,相当于window下的任务管理器
二、什么是进程标识符?
每个进程都有一个非负整数来表示唯一的ID,linux系统下称之为PID号,可以同比文件标识符、身份证号。每个进程都有唯一的进程标识符,如上图所示。
PID=0,称为交换进程,用于进程调度
PID=1,init进程,用于系统初始化
三、进程的结构
1.将要被grep命令执行的代码保存在一个磁盘文件中。正常情况下,Linux进程不能对存放这代码文件的内存区域进行写的操作,即代码是以只读方式写入内存区域。可被多个进程安全的共享。
2.进程有自己的栈空间,用于保持函数中的局部变量和控制函数的调用与返回。
3.进程有自己的环境空间,包含专门为这个进程建立的环境变量。在linux系统中,在/proc中有一组特殊的文件,它允许你查看正在运行的进程内部的情况
3.1.1 进程表
Linux进程表像一种数据结构,它把当前加载在内存中的所有进程的有关信息保存在一个表中,如PID、进程状态、命令字符串等等信息。操作系统通过PID对他们进行管理和一些操作。早期的UNIX系统只能同时运行256个进程,而现在最新的版本,可以运行的进程数可能仅仅和建立进程表象的内存空间有关,也就是说这部分内存空间越大,相对之下,可运行的进程数越多,可以说是没了数字限制。
3.1.2 查看进程
ps命令可以显示我们正在运行的进程、其他用户正在运行的进程或者目前在系统上运行的所有进程。
3.1.3、ps命令下STAT序列
STAT这一序列表示的是进程当前的状态
S 睡眠,通常在等待事件发生,如 一个信号或者输入
R 运行,通常表示“可运行”队列中,正在执行或者正在运行
D 不可终端的睡眠,又称等待,通常是在等待输入或者输入完成
T 停止,它通常是被shell作业控制而停止,或者进程处于调式器控制下
Z 僵尸进程
N 低优先级任务,nice
W 分页,不适用于version2.6以后的Linux内核
s 进程是会话期首进程
+ 进程属于前台进程组
l 进程是多线程
< 高优先级任务
3.1.4 ps
ps -a 查看所有进程
ps -f 显示进程完整信息
ps命令的精确语法可能和系统版本不同而不同,Linux使用的GNU版本的
ps命令支持来自以前几个ps命令实现版本中的选项,
具体情况和更多命令 大家可以自行查看其手册
四、进程中的父进程和子进程?
在某一个进程A中,创建了进程B,称进程A为父进程、进程B为子进程。linux系统中,通过fork()函数创建子进程。
五、C程序中存储空间的分配
此部分不需要深究,有大致了解即可。
六、总结
基础概念很重要,这里只是简单介绍,深入了解可以多查查百度
增强编程能力,光看不行,动手最关键,最后总结出一片文章记录自己的学习过程。