文章目录
一、进程控制
1.介绍
1、什么是进程:进程是可并发执行的程序,是一个在数据集合上运行的过程
当一个程序开始执行后,在开始执行到执行结束的这段时间里,它内存中的部分被称为进程
通俗讲:程序:在硬盘上的可执行文件
进程:在执行中的文件
2、什么是并发
多个进程同时运行,多个任务同时进行
3、虚拟内存
Linux虚拟内存管理技术
物理内存:实际在处理器中的内存模块, 几百M
将硬盘中的一部分存储单元来当内存使用 4g (受操作系统的寻址范围的影响)
0x00000000 - 0xffffffff
4、操作系统:内核空间(高地址 1g) 和 用户空间(低地址 3g)
(上面两个)好处:
1、有效防止内核空间被破坏
2、防止被恶意窥探(内存中有序的通过映射到虚拟机中是无序的)
3、拓展内存空间
虚拟机如何输出:物理内存+偏移量
2.进程的分类
1、守护进程
2、批处理进程
3、交互进程
3.进程的属性
1、进程的ID(PID):是唯一的数值,用来区分进程
2、父进程ID:PPID
3、启动进程的用户:UID
4、进程的状态:进行R、休眠S、僵尸进程Z
5、进程优先级
进程占用资源的大小(内存,CPU)
6、进程控制模块PCB:数据结构(进程号)
进程号 PS命令查看Linux系统中的进程
l:长格式输出
u:按用户名和启动时间的顺序来显示进程
f:用树状格式来显示进程
a:显示所有用户的所有进程
x:显示无控制终端进程 (查找所写的进程aux通常一起用)
RSS 是常驻内存集(Resident Set Size),表示该进程分配的内存大小。
VSZ 表示进程分配的虚拟内存。
Ssl+:小s进程的领导者
TIME:进程消耗CPU的时间
COMMAND:命令参数的名称
二、kill命令
1.kill使用格式
1、kill:kill+进程号 -9 :强制终止
root@jsetc-virtual-machine:~/2021/3.26# kiil 5959
2、pkill:pkill + 进程名 = killall
root@jsetc-virtual-machine:~/2021/3.26# pkill a.out
3、xkill:在桌面上杀死图像化界面
renice:改变进程的优先级,通过进程ID(PID)来改变谦让度,进而达到改变进程的优先度
renice:谦让度 PID
三、进程的状态转换
1.状态介绍
1、就绪:当进程已分配到除CPU以外的所有必要资源,只要获得处理器就可以立即执行
2、执行:已经获取处理器,其程序正在处理器上执行
3、阻塞:正在执行的进程,由于等待某个事件的发生而无法执行时,便放弃处理机会而处于阻塞状态
并发的本质:时间片轮询
四、Linux进程调度
1.算法介绍
1、FCFS也叫FIFO,先来先处理 缺点:对于短的任务可能变得非常缓慢
2、时间片轮询算法:周期性的切换 总体时长比FIFO短
3、STCF:短任务有限算法
抢占式和非抢占式
4、银行家算法
优先级反转
四、创建一个进程
1.函数介绍
fork ()函数:它是有两个返回值 0:子进程 -1:失败 >0父进程
getpid():获得当前进程号
getppid():获取当前父进程号
代码
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{
pid_t pit = fork();
//fork()函数的返回类型为 pid_t 类型,这时基本系统数据类型,它的实际类型是一个int类型。
if(-