您的位置:首页 > 运维架构 > Linux

Linux C系统编程-进程概念(一)

2020-06-06 07:20 369 查看

进程的概念

什么是程序?什么是进程?二者有什么区别?
程序是一堆待执行的代码。 -> 静态的文本数据。 project.c (C程序) / project (可执行程序)
进程是当程序被CPU加载时,根据没一行代码做出相应的动作,才能形成一个真正动态的过程,那么这个过程就称之为进程! -> 动态过程!

如何在linux中开启新的进程?
在linux执行程序即可。
程序: project
开启新的进程: ./project -> 开启进程!

当程序被执行时,除了在内存空间中分配空间之外,还会分配一个task_struct结构体给进程。
也就是说:每启动一个进程,就会得到一个task_struct结构体!
/usr/src/linux-headers-3.5.0-23/include/linux/sched.h

查看进程信息

依然将实验放在MYZR-i.MX8M-EVK开发板上进行,给开发板烧录了ubuntu后就可以开始了。

查看整个系统所有进程的关系网:pstree
systemd进程称之为"祖先进程"
systemd进程有5个子进程,分别是:NetworkManager、 accounts-daemon、agetty等

查看系统所有进程的PID号 : ps -ef

查看进程CPU占用率/当前系统总进程数/进程状态个数 : top

进程诞生与死亡

进程的状态
当执行一个程序,就诞生了一个新的进程。

就绪态: 不占用CPU资源,不运行代码。
运行态: 占用CPU资源,运行代码
暂停态: 占用CPU资源,不运行代码,可以切换到就绪态/运行态
僵尸态: 占用CPU资源,不运行代码,不可以切换到就绪态/运行态
死亡态: 不占用CPU资源,不运行代码,进程结束。

什么是占用CPU资源?
其实代表task_struct结构体资源没有被释放。

进程的生老病死过程需要注意点:
1)进程在暂停态收到继续信号时,切换到就绪态,而不是运行态。
2)进程退出时,一定会变成僵尸态。
3)进程不可以同时拥有两个父亲。
4)孤儿进程特点: 当自己还在运行态时,父进程已经退出了,马上寻找init作为自己的继父。
5)init进程特点:一定会帮所有的孤儿回收资源。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: