【操作系统】进程管理——进程的概念、组成和特征(个人笔记)

news2024/7/4 22:47:34

学习日期:2024.6.29

内容摘要:进程的基本概念和特征、状态和转换


进程的概念

程序与进程

程序:是静态的,是存放在磁盘里的可执行文件,就是一系列的指令集合

进程(Process):是动态的,是程序的一次执行过程。

比如说,电脑里的QQ应用,是一个程序,但我们可以同时打开三次QQ,此时打开任务管理器,会看到三个腾讯QQ“应用”,这就是进程,同一个程序多次执行会对应多个进程。

进程控制块PCB

操作系统是进程的管理者,那么要如何区分这些进程?

操作系统会给每个进程分配唯一的PID(Process Identifier,进程控制符),相当于各个进程的身份证,程序一运行,系统就会自动分配给进程。进程终止后,PID会被系统回收,也可能被继续分配给新运行的程序。

操作系统要记录PID、进程所属的UID(User Identifier,用户标识符),还要记录给进程分配了哪些资源(如分配了多少内存、正在使用哪些I/O设备、网络流量使用情况等),以及进程当前的状态(就绪态、运行态、阻塞态等等)

这些信息,以及其它所有操作系统对进程进行管理工作所需的信息,都被保存在一个数据结构PCB(Process Control Block)当中,即进程控制块。

PCB是进程存在的唯一标志,当进程被创建时,操作系统为其创建PCB,当进程结束时再回收。

进程的组成

进程实体由PCB,程序段,数据段组成。

为什么不说“进程”?——因为进程是一个动态的概念,进程实体可以理解为进程在运行过程中某一瞬间的照片,反映进程在该瞬间的状态,在进程运行的过程中,进程实体是在不断变化的。

PCB是给操作系统用的,程序段和数据段是给进程自己用的。

进程是进程实体的运行过程, 是系统进行资源分配和调度的一个独立单位

一个进程被“调度”,就是说操作系统决定让这个进程上CPU运行。

进程的特征

动态性:进程是程序的一次执行过程, 是动态的产生、编号、消亡的。(进程最基本的特征)

并发性:内存中有多个进程实体,各进程可以并发执行。

独立性:进程是能独立运行、独立获得资源、独立接受调度的基本单位。

异步性:各进程按各自独立的、不可预知的速度推进,可能导致运行结果的不确定性。

结构性:每个进程都会配置一个PCB。从结构上看,进程由程序段、数据段、PCB组成。

进程的状态和状态转换(重点)

创建态:进程正在被创建时的状态,此时操作系统会为进程分配资源,初始化PCB。

就绪态:进程创建完成后的状态,处于此状态的进程已经具备运行条件,但由于没有空闲CPU,暂时不能运行。

运行态:进程正在运行时的状态,CPU会执行该进程对应的程序。当CPU空闲时,操作系统就会选择一个就绪进程运行。

阻塞态:进程运行的过程中,可能会等待某个事件的发生(如等待某种系统资源的分配,或者其它进程的响应),此时操作系统会让这个进程下CPU,进程进入阻塞态。当CPU空闲时,又会选择另一个“就绪态”进程上CPU运行。

终止态:进程可以执行exit系统调用,请求操作系统终止该进程,此时进程会进入终止态。操作系统会让该进程下CPU,并回收内存空间、PCB等资源。

进程状态的转换——“丁字裤”

运行态到阻塞态是进程主动的,但是从阻塞态到就绪态不是,因为进程能决定它等待的资源什么时候才能获得。

就绪、运行、阻塞中间三个状态是基本状态,进程的整个生命周期中,大部分时间都处于这三种基本状态。单CPU状态下,同一时刻只会有一个进程处于运行态,多核CPU的情况下可能有多个进程处于运行态。在PCB中,会有一个变量state来标识当前状态。

进程的组织

链式方式

操作系统管理一系列的队列,每个队列都会管理相应状态的PCB,就绪队列的指针指向就绪队列的PCB(通常会把优先级高的放在队头),阻塞队列的指针指向处于阻塞状态的PCB,依此类推。

有的操作系统还会根据阻塞原因的不同,划分出多个阻塞队列。

索引方式

操作系统根据进程状态的不同,建立几张索引表,持有指向各个表的指针。


 内容总结自王道计算机考研《操作系统》 和 人民邮电出版社《操作系统导论》

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

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

相关文章

一文带你了解乐观锁和悲观锁的本质区别!

文章目录 悲观锁是什么?乐观锁是什么?如何实现乐观锁?什么是CAS应用局限性ABA问题是什么? 悲观锁是什么? 悲观锁它总是假设最坏的情况,它会认为共享资源在每次被访问的时候就会出现线程安全问题&#xff0…

primeflex overflow样式类相关的用法和案例

文档地址&#xff1a;https://primeflex.org/overflow 案例1 <script setup> import axios from "axios"; import {ref} from "vue";const message ref("frontend variable") axios.get(http://127.0.0.1:8001/).then(function (respon…

库存管理系统基于spingboot vue的前后端分离仓库库存管理系统java项目java课程设计java毕业设计

文章目录 库存管理系统一、项目演示二、项目介绍三、部分功能截图四、部分代码展示五、底部获取项目源码&#xff08;9.9&#xffe5;带走&#xff09; 库存管理系统 一、项目演示 库存管理系统 二、项目介绍 基于spingboot和vue前后端分离的库存管理系统 功能模块&#xff…

如何利用python画出AHP-SWOT的战略四边形(四象限图)

在企业或产业发展的相关论文分析中&#xff0c;常用到AHP-SWOT法进行定量分析&#xff0c;形成判断矩阵后&#xff0c;如何构造整洁的战略四边形是分析的最后一个环节&#xff0c;本文现将相关代码发布如下&#xff1a; import mpl_toolkits.axisartist as axisartist import …

chrome.storage.local.set 未生效

之前chrome.storage.local.set 和 get 一直不起作用 使用以下代码运行成功。 chrome.storage.local.set({ pageState: "main" }).then(() > {console.log("Value is set");});chrome.storage.local.get(["pageState"]).then((result) > …

java之命令执行审计思路

1 漏洞原理 因用户输入未过滤或净化不完全&#xff0c;导致Web应用程序接收用户输入&#xff0c;拼接到要执行的系统命令中执行。一旦攻击者可以在目标服务器中执行任意系统命令&#xff0c;就意味着服务器已被非法控制。 2 审计中常用函数 一旦攻击者可以在目标服务器中执行…

2024 Parallels Desktop for Mac 功能介绍

Parallels Desktop的简介 Parallels Desktop是一款由Parallels公司开发的桌面虚拟化软件&#xff0c;它允许用户在Mac上运行Windows和其他操作系统。通过强大的技术支持&#xff0c;用户无需重新启动电脑即可在Mac上运行Windows应用程序&#xff0c;实现了真正的无缝切换。 二…

基于LangChain+LLM的本地知识库问答:从企业单文档问答到批量文档问答

前言 过去半年&#xff0c;随着ChatGPT的火爆&#xff0c;直接带火了整个LLM这个方向&#xff0c;然LLM毕竟更多是基于过去的经验数据预训练而来&#xff0c;没法获取最新的知识&#xff0c;以及各企业私有的知识 为了获取最新的知识&#xff0c;ChatGPT plus版集成了bing搜索…

11_电子设计教程基础篇(磁性元件)

文章目录 前言一、电感1、原理2、种类1、制作工艺2、用途 3、参数1、测试条件2、电感量L3、品质因素Q4、直流电阻&#xff08;DCR&#xff09;5、额定电流6、谐振频率SRF&#xff08;Self Resonant Frequency&#xff09;7、磁芯损耗 4、应用与选型 二、共模电感1、原理2、参数…

第一周:李宏毅机器学习笔记

第一周学习周报 摘要一、机器学习基础理论1. 什么是机器学习&#xff1f;2. 机器学习“寻找”的函数有哪些类型&#xff1f;3. 机器学习中机器如何“寻找”函数&#xff1f;三步走3.1 第一步&#xff1a;设定函数的未知量&#xff08;Function with Unknown Parameters&#xf…

大多数博客首页都在使用的文字打字机出现效果

打字机效果展示 原理步骤 初步框架 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</…

vue使用axios获取信息的案例

List组件&#xff08;用来展示搜索的信息&#xff09; <template><div class"row"><!-- 列表数据 --><div class"card" v-for"user in info.users" :key"user.login" v-show"info.users.length">&l…

在 Windows 下使用 Linux 命令的多种方法

在 Windows 操作系统上使用 Linux 命令行工具&#xff0c;对于许多开发者和系统管理员来说是一个常见的需求。特别是对于那些习惯于 Linux 命令行的用户来说&#xff0c;Windows 自带的 CMD 和 PowerShell 可能并不满足他们的需求。虽然 Windows Subsystem for Linux (WSL) 是一…

【JavaEE】多线程代码案例(1)

&#x1f38f;&#x1f38f;&#x1f38f;个人主页&#x1f38f;&#x1f38f;&#x1f38f; &#x1f38f;&#x1f38f;&#x1f38f;JavaEE专栏&#x1f38f;&#x1f38f;&#x1f38f; &#x1f38f;&#x1f38f;&#x1f38f;上一篇文章&#xff1a;多线程&#xff08;2…

力扣 单词规律

所用数据结构 哈希表 核心方法 判断字符串pattern 和字符串s 是否存在一对一的映射关系&#xff0c;按照题意&#xff0c;双向连接的对应规律。 思路以及实现步骤 1.字符串s带有空格&#xff0c;因此需要转换成字符数组进行更方便的操作&#xff0c;将字符串s拆分成单词列表…

Linux --账号和权限管理

目录 1、 管理用户账号和组账概述 1.1 用户账号分类 1.2 组账号 1.3 UID 和 GID 2、用户账号文件 2.1 passwd 2.2 shadow 3、管理目录和文件属性 3.1 chage 命令 3.2 useradd 命令 3.3 passwd 命令 ​编辑3.4 usermod 命令 3.5 userdel 命令 4、用户账户的初始配置…

Spring企业开发核心框架-下

五、Spring AOP面向切面编程 1、场景设定和问题复现 ①准备AOP项目 项目名&#xff1a;Spring-aop-annotation ②声明接口 /*** - * / 运算的标准接口!*/ public interface Calculator { int add(int i, int j); int sub(int i, int j); int mul(int i, in…

使用Python绘制太阳系图

使用Python绘制太阳系图 太阳系图太阳系图的优点使用场景 效果代码 太阳系图 太阳系图&#xff08;Sunburst Chart&#xff09;是一种层次结构图表&#xff0c;用于表示数据的分层结构。它使用同心圆表示各个层级&#xff0c;中心圆代表最高层级&#xff0c;向外的圆环代表逐级…

类型转换与数据绑定【Spring源码学习】

simpleTypeConverter 类型转换 SimpleTypeConverter typeConverter new SimpleTypeConverter(); Integer number typeConverter.convertIfNecessary("13",int.class); System.out.println(number);BeanWrapper 通过反射原理为bean赋值&#xff0c;走的是set方法…