进程的管理

news2024/9/21 14:33:06

进程的概念

进程的引入是为了更好的研究、描述和控制并发程序的执行,使多道程序的并发执行具有了可控性和可再现性。
进程是一个具有一定独立功能的程序在一个数据集合上一次动态执行过程,简而言之,进程就是程序的一次运行的过程。
进程 = 程序 + 数据 + 进程控制块
进程 = 资源管理 + 线程
进程和程序的概念是既是相互关联的,又是相互区别的。

  1. 联系:
    程序是进程的组成部分,一个进程的运行目标是执行它所对应的程序,从静态来看,进程是由程序、数据和进程控制块三部分组成的。简单来说,进程就是一个程序运行的过程,因此进程是有生命周期的,有诞生(创建)、也有消亡(kill)。
  2. 区别
    程序是静态的,进程是动态的。程序的存在是永久的,进程的存在是暂时的,会动态产生和消亡,一个进程可以执行一个或多个程序,一个程序也可以构成多个进程。进程具有创建其它进程的功能。

此外进程的定义还有以下几种:
进程是程序的一次执行过程。
进程是程序及数据,在处理机(CPU)上顺序执行时所发生的活动。
进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立或基本单位。
进程是可以和别的计算并发执行的计算。
进程是可并发执行的程序在一个数据集合上的运行过程。

进程的特征

  1. 动态性
    进程的实质是程序的一次执行过程,因此,动态性是进程最基本的特性。其动态性还表现为:它因创建而产生,由调度而执行,由撤销而消亡,可见进程是有生命周期的,而程序是一组有序指令集合,存放于某种介质中,因此程序是静态的。
  2. 并发性
    并发性是指进程能在一段时间内(生命周期)同时运行,并发性是进程的重要特征,引入进程的目的也正是为了使程序能和其它进程的程序并发运行,而程序(没有建立进程的程序)是不能并发运行的,即程序是不能反应执行过程的动态性的。
  3. 独立性
    独立性是指进程是一个能独立运行、独立分配资源和独立调度的基本单位,凡是未能建立进程的程序,都不能作为一个独立的单位参加运行。只有进程才有资格向系统申请资源并获得系统提供的服务。
  4. 异步性
    这是指进程按照各自独立的、不可预知的速度向前推进,或说进程按照异步的方式运行。
  5. 结构性
    为使进程能够独立运行,应为之配置一个称为进程控制块(Process Control Block)的数据结构。从结构上看,进程是由程序段、数据段和PCB这三个部分组成,UNIX把这三部分称为“进程映像”。

进程的基本状态及其转换

基本状态

  1. 就绪状态
    当进程已分配到了除了处理机(CPU)之外的所有必要资源后,只要能再获得处理机,就能立刻执行,把进程这时的状态称为就绪状态。在一个系统中,可以有多个进程处于就绪状态,把这些进程排列成一个队列,称为就绪队列。
  2. 阻塞状态
    进程因发生某些事件(如请求I/O)而暂停执行,即进程的执行处于受到阻塞,称这种暂停状态为阻塞状态,也称等待状态和睡眠状态。将处于阻塞状态的进程排成一个队列,则称为阻塞队列。
  3. 执行状态
    指进程已经获得CPU,其程序正在执行的状态,在单处理系统中,只能有一个进程处于执行状态。

转换

处于就绪状态的进程,在进程调度程序为其分配CPU之后,其状态便由就绪状态变为执行状态。当进程在执行的过程中,由于时间片已完,这时进程的状态就会从执行状态变为就绪状态,而如果因为该进程由于访问临界资源,而该资源被其它进程所占用,这时进程的状态就由执行状态变为阻塞状态,当资源能够进行访问时,进程就由阻塞状态先变为就绪状态,等待进程调度程序分配CPU资源,一旦分配到CPU之后,便由就绪状态变为执行状态。
由上述可知,当执行状态的进程因为某些原因变为阻塞状态时,当等待的事件发生之后(资源可以被访问了),阻塞状态不会直接变为执行状态,而是会先变为就绪状态,然后等待进程调度程序分配处理机,才能转换为执行状态,其原因是因为当进程进程进入阻塞状态之后,处理机会被进程调度系统分配给另外一个处于就绪状态的进程。

进程控制块(Process Control Block, PCB)

进程控制块的作用是为了描述和控制进行的运行,系统为每个进程定义了一个数据结构,该数据结构被称为进程控制块。
所谓系统创建一个进程就是系统为某个程序设置一个PCB,用于对该程序的控制和管理。
进程任务完成,由系统回收其PCB,该进程就消亡。系统根据某PCB感知进程的存在,因此PCB是进程存在的唯一标志。

进程和线程的区别

根本区别

进程管理是操作系统的主要功能之一,进程是操作系统资源分配的基本单位,而线程是处理器进行任务调度和执行的基本单位。

相互关系

线程是进程的一部分,通常一个进程包含多个线程,且至少包含一个线程,同一进程下的多个线程的资源和地址空间是共享的,而不同进程之间的资源和地址空间是相互独立的。每个独立的进程都有程序运行的入口、顺序执行序列和程序出口,可以独立运行,但线程不能独立运行,必须依存于应用程序中,进程和线程都可以并发执行。

相互影响

一个进程崩溃之后,在保护模式之下,不会对其它进程造成影响,但进程中只要有一个线程崩溃,那么整个进程就会死掉,所以多进程比多线程健壮。

进程相关的指令

查看进程的相关指令

ps:查看进程。
ctrl+z::将进程挂起。例如可以运行一个vi编辑器的进程,然后按ctrl+z将该进程挂起,然后可以通过ps查看正在运行的vi进程。
在这里插入图片描述
可以看到挂起的vi进程。此外,可以通过fg命令将挂起的命令唤醒。按:q退出vi之后,再输入ps命令就可以看到没有vi进程了。
在这里插入图片描述
ps也后面可以加参数-u,可以看到运行的进程的当前状态和开始时间。
在这里插入图片描述

STAT为进程当前的状态 ,S表示sleep,T表示temporarily,R表示执行,Z表示僵死状态,D表示不可中断睡眠状态。
VSZ:进程虚拟内存的大小。
RSS:进程占用实际内存的大小。
START:进程开始的时间。
vi test.txt是前台启动进程的方式,也可以用后台的方式启动进程,用命令vi test.txt&
在这里插入图片描述

进程调度的相关指令

ps -l可以查看进程的优先级。
在这里插入图片描述
其中PRI是实际的优先级,是由操作系统动态计算的,是实际的进程优先级,NI表示的是请求进程执行的优先级,它由进程拥有者或超级管理员进行设置,NI的设置是会影响实际的进程优先级(PRI)。
nice命令可以在进程启动时改变进程优先级,renice可以在进程执行时改变进程的优先级。

挂起和激活

挂起:ctrl+z
激活:fg(激活到前台),bg(激活到后台),注意后面跟的参数是进程序号
,不是进程标识号。
在这里插入图片描述

中止进程

ctrl+c和kill + PID

进程的监视

top
top进入之后可以按q退出,按k可以中止一个进程,s改变刷新的时间

系统日志

常用的日志文件都在/var/log目录。
dmesg:可以获知系统能够检测出的硬件等信息。
last:列出目前与过去登入系统的用户相关信息。

系统监视器

gnome-system-monitor

文件系统监控

df -h

查看内存情况

free -m

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

决策树(手写代码+隐形眼镜项目)

决策树作为一个分类问题,以信息增益作为特征分类的参考依据,作为一个分类算法,决策树可以将分类过程可视化,而且对于模型所不熟悉的数据,决策树也可以从中提炼出一系列的规则,然后根据数据来创造规则&#…

ArrayList简介

ArrayList 简介 ArrayList 是一个数组列表。它的主要底层实现是Object数组,但与 Java 中的数组相比,它的容量能动态变化,可看作是一个动态数组结构。特别注意的是,当我们装载的是基本类型的数据 int,long,…

Cortex-R52 GIC:Generic Interrupt Controller

ARM Cortex-R52 GIC:Generic Interrupt Controller 1.关于GIC GIC是支持和管理cluster系统中断的资源。它支持中断优先级、中断路由到核心或输出端口、中断抢占和中断虚拟化。 Cortex-R52处理器实现了一个内部GIC分配器用于处理器,每个核心还有一个GIC CPU接口。每…

FreeRTOS 信号量(二)

文章目录 一、计数型信号量1. 计数型信号量简介2. 创建计数型信号量①函数 xSemaphoreCreateCounting()②函数 xSemaphoreCreateCountingStatic() 3. 计数型信号量创建过程分析4. 释放和获取计数信号量 二、计数型信号量操作实验 一、计数型信号量 1. 计数型信号量简介 有些资…

C语言从入门到精通第13天(函数的调用)

函数的调用 无参函数的调用有参函数的调用函数的嵌套调用递归函数的调用函数的声明 函数在定义完以后,如果不被调用时不会被执行到的;在程序中main函数是主函数,是会被自动调用,C程序有且只有一个main函数。 无参函数的调用 调用…

C/C++程序添加ico图标详解

制作Ico图标文件 将图片素材进行编辑,可以截取成正方形,然后以通过在线转换图标工具转换成 ico 格式的图标文件 将ico图标文件放在之前编写好的 startprintservices.cpp 文件目录中 创建资源文件 接着我们创建一个文件命名为 ico.rc 的文件&#xff0…

vue3快速上手学习笔记,还不快来看看?

Vue3快速上手 1.Vue3简介 2020年9月18日,Vue.js发布3.0版本,代号:One Piece(海贼王)耗时2年多、2600次提交、30个RFC、600次PR、99位贡献者github上的tags地址:https://github.com/vuejs/vue-next/release…

react-antd-procomponents组件库 ProTable表格实现跨页多选。

table表格多选时所需要的api 1.onSelect - 单行选择(用户手动选择/取消选择某行的回调) 2.onSelectMultiple - 多行选择(用户使用键盘 shift 选择多行的回调) 3.onSelectAll - 全选全不选(用户手动选择/取消选择所有行的回调) 4.onChange - 每次选择行都…

高可用keepalived + Nginx 负载均衡器

准备操作: [rootlocalhost ~]# systemctl stop firewalld # 或 systemctl disable --now firewalld [rootlocalhost ~]# setenforce 0 [rootlocalhost ~]# cd /etc/yum.repos.d [rootlocalhost ~]# mv repo.bak/* ./ [rootlocalhost ~]# yum -y install epel-rele…

Linux中的YUM源仓库和NFS文件共享服务(うたかたの夢)

YUM仓库源的介绍和相关信息 简介 yum是一个基于RPM包(是Red-Hat Package Manager红帽软件包管理器的缩写)构建的软件更新机制,能够自动解决软件包之间的依赖关系。 yum由仓库和客户端组成,也就是整个yum由两部分组成&#xff0…

Python爬虫基础之三

Python爬虫基础包括HTTP协议、HTML、CSS和JavaScript语言基础、requests库的使用、Beautiful Soup库的使用、xpath和正则表达式的使用等。此外,还应该了解反爬虫机制和爬虫的一些常见问题及解决方法。 上一篇文章讲解了有关条件判断语句、循环语句、元组、字典等相…

排序 - 插入排序(Insertion Sort)

文章目录 插入排序介绍插入排序实现插入排序的时间复杂度和稳定性插入排序时间复杂度插入排序稳定性 代码实现核心&总结 每日一道算法,提高脑力。第三天,插入排序。 插入排序介绍 直接插入排序(Straight Insertion Sort)的基本思想是: 把n个待排序…

浅谈个人对“孔乙己的长衫“的感受

名人说:往者不可谏,来者犹可追。——《论语微子篇》 创作者:Code_流苏(CSDN) ★温馨提示:以下仅代表个人观点,不代表其它任何人看法。 目录 〇、缘由一、社会对于学历和职业之间的关系认知是怎样的?二、学…

android studio AlertDialog弹出对话框

1.定义弹出的对话框的按钮和显示结果的文本框 <Buttonandroid:id"id/btn7"android:layout_width"match_parent"android:layout_height"wrap_content"android:background"drawable/btn_nine_selector"android:text"弹出对话提醒…

ROS学习第三十五节——URDF集成Gazebo实操

https://download.csdn.net/download/qq_45685327/87719249 1.编写封装惯性矩阵算法的 xacro 文件 head.xacro <robot name"base" xmlns:xacro"http://wiki.ros.org/xacro"><!-- Macro for inertia matrix --><xacro:macro name"sp…

微软杀疯了,谷歌蒸发1000亿市值作陪,中文编程和它却打起翻身仗

微软VS谷歌&#xff0c;究竟谁是最后赢家&#xff1f; 当微软宣布收购OpenAI开发的ChatGPT的决定一出&#xff0c;Google深感威胁&#xff0c;开发出Gmail的早期员工甚至大胆预测&#xff0c;Google离完全毁灭只剩下一到两年&#xff01; 好歹也在互联网之战中屹立多年&#…

密码学|AES加密算法|学习记录

AES简介 AES加密是分组加密的一种 明文长度为固定的128位 密钥可长度为128&#xff0c;192&#xff0c;256位 128bit16字节&#xff0c;在AES中我们将数据用4x4字节的矩阵表示。&#xff08;注排列顺序为先从上到下再从左到右&#xff09; AES的一般步骤 对于上图最终轮区…

ChatGPT生成式算法及发展历程

引言 GPT&#xff08;Generative Pre-Trained Transformer&#xff09;系列是OpenAI开发的一系列以Transformer[2]为基础的生成式预训练模型&#xff0c;这个系列目前包括文本预训练模型GPT-1[3]&#xff0c;GPT-2[4]&#xff0c;GPT-3[5]&#xff0c;InstructGPT[7]、ChatGPT…

项目范围控制:如何控制项目范围的变化?

一个成功的项目需要在进度、成本和质量之间取得平衡。控制项目交付范围是实现这个平衡的关键。然而&#xff0c;项目范围是会变化的&#xff0c;因此控制项目范围变化是必要的。 如何控制项目范围的变化&#xff1f; 1、了解项目的交付范围 项目经理、团队成员、利益相关者和…

手把手带你理解Spring日志原理

文章目录 1 楔子2 jcl原理分析2.1 依赖坐标2.2 API调用2.3 源码分析 3 slf4j原理分析3.1 依赖坐标3.2 API调用3.3 源码分析 4 spring是如何选择日志技术的&#xff1f;4.1 场景一&#xff1a;通过log4j2打印日志4.1.1 引入maven依赖4.1.2 编写配置文件4.1.3 执行测试方法4.1.4 …