Linux-进程概念

1. 进程基本概念

        书面概念:程序的一个执行实例,正在执行的程序等

        内核概念:担当分配系统资源(CPU时间,内存)的实体。

2. 描述和组织进程-PCB

        PCB(process contral block),进程信息被放在一个叫进程信息控制块的数据结构里面,在Linux下,PCB是:task_strut

        每一个进程都会对应生成一个task_struc,操作系统通过这个结构体来管理进程。

        这些task_struc会以链表的形式存在内核中,操作系统通过增删查改这个链表来管理这些进程。

3. task_struc包含内容

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

3.1 标识符

        进程用PID(process id)来标识,可以通过三种方式来查看:

1. /proc 目录

ls /proc

所有进程都会放在这个目录下,还可以通过

ls -al /proc/(pid)

获得进程的详细信息

这里cwd就是表示可执行程序的当前工作目录

2. ps

ps axj

显示所有的进程

ps -axj | head -1 && ps -axj | grep myproc | grep -v grep

 查询单个进程

3. top

3.2 进程状态

进程状态(STAT)在系统层面可以大致分成以下几种:

  • 新建:进程刚刚创建出来,代码和数据还没有加载到内存中
  • 运行:进程被放到了,CPU的运行队列中
  • 阻塞:等待非CPU资源就为,例如位于磁盘读取等待队列
  • 挂起:在内存资源不足时,OS通过适当的置换进程的代码和数据到磁盘(swap)来缓解内存不足

在Linux下,task_struc的进程状态可以分为下面几种:

  • R(runing)
  • S(sleeping)
  • D(disk sleep)
  • T(stopped)
  • t (tarcing stop)
  • X(dead)
  • Z (zombie)

R运行状态:对应运行态

S睡眠状态:对应阻塞态,可中断睡眠

D磁盘休眠状态:进程不可以被中断,需要等待io完成,磁盘返回信息,结束休眠状态,不可中断睡眠

T停止状态:通过信号来暂停进程,例如(kill -19 pid),也可以通过信号来结束停止状态例如(kill -18 pid)

t调试状态:和暂停状态一样,是由调试暂停引起的进程暂停

X死亡状态:这个状态只是一个返回状态,你不会在任务列表里看到这个状态

Z僵尸状态:当子进程退出,并且父进程没有读取到子进程退出的返回代码时,就会产生僵死(尸)进程

这个状态下,子进程的PCB会被保留下来

还有一种叫孤儿进程:父进程先退出,子进程就称之为“孤儿进程”,孤儿进程会被1号init进程领养,结束时再被init进程回收

注意:

R+表示程序运行,在前台

./myproc&

就可以让程序在后台运行,状态就是R

3.3 优先级

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

查看进程优先级:

ps -l

这里PRI就是priority的简写,NI是nice的简写

PRI值越小,优先级越高,越早被执行

nice值,表示进程可被执行的优先级的修正数值,可以通过修改nice来改变PRI

PRI(new)= PRI(old)+ NI

PRI(old)表示进程创建时的默认优先级。

NI值的取值范围【-20,19】

修改进程优先级:

top -> 'r' ->输入进程的PID -> 输入nice值

3.4 内存指针

struct mm_struct *mm;

task_struct里面有一个指针指向mm_struct这样的一个结构体

在mm_struct中包含对应内存中的地址空间的begin和end,描述进程所需内存的区域划分。

3.5 上下文数据

为了更好的理解这里,先提出进程并发的概念

一个CPU在一个时刻只能执行一个进程,但是CPU是一个一个处理进程的吗?

其实不是,每的进程在CPU上只跑一小会,不论进程完成的程度怎么样,都要退下来,让下一个进程继续执行。一小会假定是10ms,那么在一秒钟CPU就可以跑100个进程。在短时间内,我们可以认为,CPU在同时执行这些进程,这些进程也在同步进行。

对于一个进程而言,这次CPU执行到这里,下次CPU来了要继续从这里执行下去。所以就需要保存程序执行时产生的数据和代码执行到的对应位置。CPU下次通过寄存器直接获取这些数据,就可以继续下去。

这些数据就叫上下文数据,由task_struct来保存。

这样子做到了,CPU在不同进程间的切换

4. 其他概念

竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高 效完成任务,更合理竞争相关资源,便具有了优先级

独立性: 多进程运行,需要独享各种资源,多进程运行期间互不干扰

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

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

关于进程的更多内容敬请关注Linux-地址空间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/591777.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二维码:技术、商业与未来

title: 二维码:技术、商业与未来 date: 2024/4/3 19:12:28 updated: 2024/4/3 19:12:28 tags: 二维码技术商业应用移动支付物联网AR/VR融合智能家居数字化社会 第一章:引言 1. 二维码在数字化时代的重要性和普及程度 在数字化时代,二维码作…

数据结构:排序

排序的概念 1.概念 就我当前所认识的排序来说。排序是把一串相同类型的数据,按照升序或者降序排列起来的操作。 以下介绍的排序大多可以排列不限于整型和文件,但也有一些算法有较明显的局限性。 2.稳定性 如果在排列之前,一组数据中&…

MVCC详细总结

简介 MVCC(Multi-Version Concurrency Control)是一种多版本并发控制机制,主要用于数据库管理系统中,实现对数据库的并发访问。在编程语言中,MVCC可以实现事务内存。 MVCC的特点是读不加锁,读写不冲突。MVC…

Fog Project 安装与应用

一、Fog Project 的安装 要求 在开始安装 FOG 之前,您需要决定要使用哪个服务器操作系统。 FOG 可以安装在基于 RedHat 的发行版 CentOS、Fedora、RHEL 等以及 Debian、Ubuntu 和 Arch Linux 上。 选择您最喜欢并且最了解的!众所周知,光纤陀…

佳能打印机E568扫描书和文件方法

官方网站; Canon : Inkjet 手册 : IJ Scan Utility : 启动IJ Scan Utility 打开打印机电源 扫描一个文件,翻页后盖好盖子。再点击扫描。 所有扫描结束之后点退出 点击保存

docker部署nacos,单例模式(standalone),使用内置的derby数据库,简易安装

文章目录 前言安装创建文件夹docker指令安装docker指令安装-瘦身版 制作docker-compose.yaml文件查看页面 前言 nacos作为主流的服务发现中心和配置中心,广泛应用于springcloud框架中,现在就让我们一起简易的部署一个单例模式的nacos,版本可…

ruoyi-nbcio-plus基于vue3的flowable流程设计器主界面升级修改

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

window中如何在Anaconda虚拟环境中安装compressai

1, 进入CompressAI的Github代码页下载压缩包并解压到自己的项目路径 2,打开anaconda的prompt命令行,激活需要安装的虚拟环境,然后进入compressai文件夹,比如下操作: 3,输出安装命令行 pip install -e . -…

前端订阅后端推送WebSocket定时任务

0.需求 后端定时向前端看板推送数据,每10秒或者30秒推送一次。 1.前言知识 HTTP协议是一个应用层协议,它的特点是无状态、无连接和单向的。在HTTP协议中,客户端发起请求,服务器则对请求进行响应。这种请求-响应的模式意味着服务器…

微信公众号如何开通留言功能?

首先,我们需要了解为什么现在注册的公众号没有留言功能。这是因为所有在2018年之后注册的微信公众号都无法再自带留言功能。这一变化是根据微信的通知而实施的。自2018年2月12日起,微信对新注册的公众号进行了调整,取消了留言功能。这一决策主…

yolo v5 中 letterbox对不规则矩形框的输入调整

在对数据或特征的处理中,为了避免输入图像或特征,经过resize等等操作,改变了目标特征的尺度信息,一般会引入一些操作,比如: 在特征维度,加入SPP(空间金字塔池化)&#x…

信创(统信)系统上的软件安装及软件使用手册

一.各软件的安装文档 1.达梦数据库在统信系统上的安装 官方手册:https://eco.dameng.com/document/dm/zh-cn/start/install-dm-linux-prepare.html 1.1下载安装包 官网:https://www.dameng.com/list_103.html 点击”服务与合作”--> “下载中心” 这里选择对应的cpu和操作…