进程的基础知识 -- 进程概念 ,PCB,进程状态(僵尸进程孤儿进程),进程优先级

进程基本概念

进程是什么

  • 宏观:执行中的一个程序,一段指令的集合
  • 微观:分配系统资源的一个基本单位

进程就是执行中的程序,而程序则是一段有序指令的集合,根据冯诺依曼体系结构我们可以得到,程序员的代码存储在硬盘中,当其执行的时候代码会首先被加载到内存上面。
当加载到内存上面时候,就需要操作系统对其进行描述与组织,也就是管理。
而操作系统则是通过一个结构体对这个指令和数据进行描述然后组织,从而达到管理的目的。
在这里插入图片描述
这个描述我们把它叫做PCB,通过对pcb的管理,操作系统实现了对不同进程的切换与调度,实现了并发与并行。

PCB - 进程控制块

操作系统中一个进程的各种信息都被一个PCB(进程控制块)所描述起来,我们可以将其理解为进程属性的集合。在Linux下的pcb是一个 task _struct 的结构体
task _struct是Linux内核的一种数据结构,被装载到RAM里面

task _struct内部信息

标示符: 描述本进程的唯一标示符,用来区别其他进程。
状态: 任务状态,退出代码,退出信号等。
优先级: 相对于其他进程的优先级。
程序计数器: 程序中即将被执行的下一条指令的地址。
内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。
I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
其他信息

进程状态

进程状态查看
ps aux / ps axj 命令
进程状态分类

"R (running)", 
"S (sleeping)",
"D (disk sleep)"
"T (stopped)", 
"t (tracing stop)"
"X (dead)", 
"Z (zombie)",

常见状态

  • 运行态 R 就绪/运行(+代表前台运行)
  • 可中断休眠态 S 当前阻塞能被中断唤醒
  • 不可中断休眠态 D 当前阻塞不能被中断唤醒 等待条件满足自己醒来
  • 停止态 T 停止运行什么都不干
  • 僵死态 Z 进程已经退出但是资源没有完全释放

阻塞的含义可以理解为:为了执行某个命令,但是没有达到可以执行该命令的条件,于是一直等待,通常将这种等待视为阻塞。

僵尸进程

僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。如果父进程先退出 ,子进程被init接管,子进程退出后init会回收其占用的相关资源
危害
1.占用空间 如文件描述符表
2.内存泄露

如何避免僵尸进程
一般采用wait等待

孤儿进程

与僵尸进程相反, 孤儿进程的产生是因为父进程先于子进程退出,子进程被一号进程收养,子进程就变成了孤儿进程。

创建一个孤儿进程

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
pid_t id = fork();
if(id < 0){
perror("fork");
return 1;
}
else if(id == 0){//child
printf("I am child, pid : %d\n", getpid());
sleep(10);
}else{//parent
printf("I am parent, pid: %d\n", getpid());
sleep(3);
exit(0);
}
return 0;
}

进程优先级

cpu资源分配的先后顺序,就是指进程的优先权(priority)。

查看操作
ps -l 我们会看到以下内容
在这里插入图片描述
PRI就是进程优先级
NI全名为nice值
通常我们通过修改nice值来改变进程的优先级
一般来说 这两个的值越小进程的优先级越高 NI值为 -19 – 20 40个级别

修改命令
通过top进行修改
进入top后按“r”–>输入进程PID–>输入nice值

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.基本系统进程   Csrss.exe:这是子系统服务器进程,负责控制Windows创建或删除线程以及16位的虚拟DOS环境。   System Idle Process:这个进程是作为单线程运行在每个处理器上,并在系统不处理其它线程的时候分派处理器的时间。   Smss.exe:这是一个会话管理子系统,负责启动用户会话。   Services.exe:系统服务的管理工具。   Lsass.exe:本地的安全授权服务。   Explorer.exe:资源管理器。   Spoolsv.exe:管理缓冲区的打印和传真作业。   Svchost.exe:这个进程要着重说明一下,有不少朋友都有这种错觉:若是在“任务管理器”看到多个Svchost.exe在运行,就觉得是有病毒了。其实并不一定,系统启动的时候,Svchost.exe将检查注册表的位置来创建需要加载的服务列表,如果多个Svchost.exe同时运行,则表明当前有多组服务处于活动状态;多个DLL文件正在调用它。   至于其它一些附加进程,大多为系统服务,是可以酌情结束运行的。由于其数量众多,我们在此也不便于一一列举。   在系统资源紧张的情况下,我们可以选择结束一些附加进程,以增加资源,起到优化系统的作用。在排除基本系统及附加进程后,新增的陌生进程就值得被大家怀疑了。 更多内容请看Windows操作系统安装、系统优化大全、系统安全设置专题,或进入讨论组讨论。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值