【Linux】进程

进程简单来说就是运行的程序,由PCD(process control block)和程序代码和数据组成,本篇文章重点讲解进程的概念和Linux操作系统的进程细节。


进程的信息被放在一个叫做进程控制块的数据结构(PCB)中,在Linux操作系统下的PCB是task_struct

1.进程查看

在windows操作系统中可以在任务管理器中查看

 在Linux中也能查看进程

在根目录下有一个proc文件里面可以查看当前系统实时进程信息

 如果想要查看具体的进程信息,可以用ps ajx查看进程信息,同时结合grep指令筛选出我们想要的那个进程

比如:

先创建一个简单的程序

当这个程序运行起来的时候就进程

用ps和grep查看mytest进程的信息

 第二条是grep的进程信息,如果想把第二条屏蔽掉,可以一个grep -v选项

当我们在学C语言的文件操作的时候,总是会听到当前路径这词,其实这个当前路径指的就是进行的路径

 2. 获取pid、ppid

pid就相当于一个进程的标识,类似于我们的身份证,可以用getpid()接口调用(这个是系统接口,在windows下不一定能调用)

ppid就是parent pid是父进程的pid可以通过getppid()获得

 

 

 可以发现pid在变但是ppid是不变的,29520是bash进程,一般程序的父进程都是bash

Linux中也能像windows操作系统一样可以强行终止进程

3.创建子进程 

fork():创建子进程

有两个返回值,一是给父进程返回子进程的pid,而是给子进程返回0

子进程继承父进程的代码

 比如:

 由于fork之后又两个进程执行这段代码,所以会输出两个hello world

通过pid和ppid可以发现第二个进程是第一个进程的子进程

4.进程状态

运行态: 进程只要在运行队列中就叫做运行态,代表进程已经做好准备,随时可以调度

终止态:改进程还在,只不过永远不运行,随时等待被释放

阻塞态:cpu运行速度很快,当进程在申请其他资源的时候(网卡、显卡等),需要把cpu资源让出来,其他资源申请完成后进入就绪状态,等待获取cpu

挂起态:如果内存不足的时候,OS会将短期内不会被调度的进程代码和资源换到磁盘上,然后释放空间,只留一个PCB,腾出更多空间,因此内存不足的时候,往往伴随着磁盘被高频访问

Linux进程状态:

R(运行态):

 当我们执行这个程序的时候,会一直打印hello world,但该进程的状态并不是R

 这是因为打印到显示器上,而外设的调度比cpu慢很多,所以cpu大部分时间都在等显示器准备就绪

当我们把printf和sleep删掉后,进程状态就是R了

 

 S、D(阻塞态):

S和D的区别是D是深度睡眠,当进程在长时间调度磁盘的时候,经常长时间处于休眠状态,为了防止被OS误杀掉,所以有了D状态,在D状态下的进程不能被OS杀掉

Z、X:

Z是僵尸状态,X是死亡状态

当Linux进程退出的时候,一般不会立马进入X状态回收资源,而是进入Z状态

Z状态是为了维护退出信息,让父进程或OS读取

如果父进程还在运行,而子进程退出了,那么子进程就会进入僵尸态

 如果父进程在子进程之前被干掉,那子进程的父进程会变为OS,子进程退出的时候需要将退出信息交给OS,这种进程称为孤儿进程

T、t(暂停)

当我们在调试时、下载暂停等场合中,进程都会进入暂停状态

5.进程优先级

优先权高的进程有优先执行的权利,可以改善系统性能

Linux种进程的优先级由进程的PRI属性决定,值越小优先级越高

修改进程的优先级是通过对进程NI的属性进行修改

 进入top后按“r”–>输入进程PID–>输入nice值 就能修改进程优先级

进程的优先级PRI(new)=PRI(old)+nice

每次设置nice时,PRI都从60开始

nice的取值范围是-20-19,一共40级

6. 并发与并行

并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行

并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发

操作系统会给每一个进程赋予一个时间片的概念,多个进程会通过交叉的方式,让多个进程代码在一段时间内都得到推进

在进程切换的过程种,需要把cpu中的进程数据存放回PCB,这样在下一个周期执行到这个进程是可以接着上一次的执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值