进程
1.冯诺依曼体系结构: 现代计算机的硬件体系结构。
五大硬件单元:输入设备/ 输出设备/ 存储器/ 运算器/ 控制器
输入设备:键盘
输出设备:显示器
存储器:内存 8G
运算器+控制器: CPU—主频2.5GHz
时钟振荡周期—机器指令周期–决定了一秒钟之内能处理多少条指令
内存条的存储介质和硬盘存储介质是不同的
内存条的存储介质:易失性----断电后数据就会消失
硬盘:实现断电数据依然存在----作为数据的持久化存储设备
内存是用作各个设备之间数据缓冲作用的,因此所有设备都是围绕内存工作—CPU想要处理数据必须先将数据加载到内存中
操作系统:是一个软件(程序)–用于管理计算机上的软硬件资源
操作系统的组成:系统内核+外部应用
2.进程概念:进程实际就是一个进程运行中的描述–pcb,通过这个描述可以实现一个程序的运行调度管理;而linux下这个pcb就是一个task_struct结构体
描述信息:
内存指针:指向要调度运行程序代码以及数据在内存中的位置
程序计数器:cpu要执行任何指令,都需要将指令加载到寄存器;程序计数器用于保存在CPU上即将执行的下一步指令的地址
上下文数据:保存CPU上正在处理的数据
进程标识符:进程id–pid
进程状态:不同的状态干不同的事情
进程优先级:决定获取CPU资源的优先权–为了让进程运行的更加良好
3.进程创建的初步认识以及查看进程:
pid_t fork(void);----通过复制查看进程(父进程),创建一个新的进程(子进程)
他们的内存指针一样,运行代码一样,程序计数器一样,当前运行位置一样。
fork函数的方绘制比较特殊:
对于父进程来说:返回的是子进程的pid;是大于0的
对于子进程来说:返回的是0
通过这个返回值的不同进行判断,就可以实现父子进程代码的分流。
创建子进程的意义:子进程与父进程干同样的事可以分摊压力;父进程可以让子进程干其他的事。
查看进程:ps -ef查看进程信息/ps -aux
4.进程状态:就绪, 阻塞, 运行;
linux下进程状态:
运行状态:(R):正在运行/只要拿到时间片就能运行—这种进程调度到cpu上处理
可中断休眠状态(S):当前处于休眠状态,但是这种休眠可以被打断;
不可中断休眠状态(D):当前处于休眠状态,但是这种休眠不会被打断
停止状态(T):什么都不干;
僵死状态(Z):进程已经退出,但是资源没有完全被释放时处于的一种状态,一种等待被处理的状态;
僵尸进程:处于将死状态的进程—一种退出了,但是资源没有完全释放的进程
危害:资源泄露(1.僵尸进程过多,导致创建新的子进程会失败;2.内存资源—内核中的pcb没有被回收)
产生:子进程先于父进程退出,但是父进程没有管子进程的退出状态,导致子进程资源无法完全释放,产生僵尸进程
如何避免僵尸进程:进程等待–父进程一直等待子进程的退出
孤儿进程:父进程先于子进程退出,子进程就会成为孤儿进程;运行在后台;父进程成为1号init/systemd进程
守护进程/精灵进程: 就是一个特殊的孤儿进程,脱离了终端,脱离了登陆会话,为了让进程完全不受影响的运行在后台
5.环境变量:保存/设置系统运行环境参数的变量–因此可以通过设置环境变量向进程 传递数据。
命令操作:
查看环境变量:env/echo/set
设置环境变量:export
删除环境变量:unset
6.程序地址空间: