Linux C系统编程-进程概念(一)
进程的概念
什么是程序?什么是进程?二者有什么区别?
程序是一堆待执行的代码。 -> 静态的文本数据。 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进程特点:一定会帮所有的孤儿回收资源。
- [linux] C语言Linux系统编程进程基本概念
- 八、Linux系统编程-进程(一)进程概念、进程数据结构、进程状态变迁、进程创建和撤销
- Linux系统进程控制编程(一)————基本概念和函数getpid的使用
- 【Linux系统编程】进程介绍
- Linux系统编程--进程编程
- [编程] C语言Linux系统编程-等待终止的子进程(僵死进程)
- linux系统编程之进程(四):进程退出exit,_exit区别即atexit函数
- linux下系统调用编程socket进程通信---(1)
- Linux C系统编程-进程之间的通信管道(四)
- 【Linux系统编程】浅谈进程地址空间与虚拟存储空间
- linux系统编程之进程(一):进程与程序
- linux系统编程之进程(八):守护进程详解及创建,daemon()使用
- [Linux]C语言Linux系统编程创建进程
- linux系统编程之进程(七):system()函数使用
- linux 系统编程——进程管理
- Linux系统进程控制编程——wait和waitpid函数
- Linux进程理解与实践(一)基本概念和编程概述(fork,vfork,cow)
- Linux C系统编程-进程exit,exec和内存资源(三)
- linux系统编程之进程(四):进程退出exit,_exit区别即atexit函数
- linux系统中进程相关概念