进程的奥德赛:并发世界中的核心概念与动态管理

  
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭~✨✨

🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。

我是Srlua,在这里我会分享我的知识和经验。🎥

希望在这里,我们能一起探索IT世界的奥妙,提升我们的技能。🔮

记得先点赞👍后阅读哦~ 👏👏

📘📚 所属专栏:操作系统

欢迎访问我的主页:Srlua 获取更多信息和资源。✨✨🌙🌙

目录

进程概念

多道程序设计

顺序程序活动的特点 

多道程序设计

程序并发执行的特征

​1.失去封闭性。

2.失去对应性:程序与计算不再一一对应。

3.并发程序在执行期间相互制约。

进程概念

1.引入:

2.进程概念

3.进程和程序的区别

(1)动态性

(2)并发性

(3)非对应性

(4)异步性

4.进程的基本特征

(1)动态性

(2)并发性

(3)调度性

(3)异步性

(5)结构性

进程的状态和组成

进程的状态及其转换

1.进程的基本状态

(1)运行状态(Running)

(2)就绪状态(Ready)

(3)阻塞状态(blocked)又称等待态

(4)新建状态(New)

(5)终止状态(Terminated)

2.UNIXS 5进程状态及其变迁图

3.进程状态的转换

进程描述

1.进程映像

2.进程控制块的组成

3.进程控制块的作用


现代操作系统的重要特性是程序的并发性和资源的共享性。这二者相互联系、相互依赖。

为了满足多用户并发计算的要求,现代操作系统是围绕进程这个概念设计和构造的。

进程概念

在操作系统中,进程是一个极其重要的概念

传统的操作系统中,进程是资源分配独立运行的基本单位。

操作系统所具有的三大特征也是基于进程而形成的,应从进程的角度来研究操作系统。

多道程序设计

在早期的单道程序或单用户系统中,计算机按顺序执行程序,各个用户程序也是顺序执行的。

顺序程序活动的特点 
  • 程序执行的顺序性
  • 程序运行环境的封闭性

独占资源,执行过程中不受外界影响

  • 程序执行结果的可再现性

程序运行结果与程序执行速度无关,只要初始状态相同,结果应相同

多道程序设计
  • 内存中同时存放多道程序程
  • 序并发执行
  • 提高资源利用率和系统吞吐量
程序并发执行的特征
1.失去封闭性。

由于程序的并发执行,系统中的资源不再为一个程序独占,因此资源的状态也不再由一个程序决定,而是由并发执行的多道程序决定。

2.失去对应性:程序与计算不再一一对应。
3.并发程序在执行期间相互制约。

程序并发执行时,由于资源共享,使得一些逻辑上相互独立的几道程序之间发生了相互制约关系。相互制约将导致并发程序具有“执行一暂停-执行”这种间断性的活动规律。

进程概念

1.引入:

程序这个静态概念已经不能如实反映程序并发执行过程中的这些特征。

2.进程概念

进程定义:一个具有独立功能的程序关于某个数据集合的一次运行活动。

简言之,进程是程序在并发环境中的执行过程。

进程最根本的属性是动态性和并发性

        “进程”是操作系统中最基本、最重要的概念之一,它对理解、描述和设计操作系统都有非常重要的意义。

3.进程和程序的区别
(1)动态性

进程是程序的一次执行过程,是一个动态和主动的概念;程序是完成某个特定功能的指令的有序序列,是一个静态和被动的概念。

程序可以作为一种软件资源长期保存;进程有一定生命期,动态生成和消亡。

(2)并发性

进程是可以并发执行的

系统中多个进程可按照自己独立的、不可预知的速度推进;程序通常不能作为一个独立运行的单位而并发执行

进程是资源申请和调度单位,进程切换要通过进程调度来实现;而程序的不同模块间通过相互调用实现控制转移。

(3)非对应性

程序和进程无一一对应关系:

一个程序可被多个进程共用;

一个进程在其活动中又可顺序地执行若干程序

(4)异步性

各进程在并发执行过程中相互制约,造成各自前进速度的不可预测性。

程序是静态的,不具备异步特征。

4.进程的基本特征
(1)动态性

进程是程序的一次执行过程,它是临时的、有生命期的。表现在它由创建而产生,完成任务后被撤消。

(2)并发性

进程是可以并发执行的。系统中的各个进程可以按照自己独立的、不可预知的速度推进。

(3)调度性

进程是系统进行资源分配和调度的一个独立单位.

(3)异步性

各进程向前推进的速度不可预知

(5)结构性

进程有一定的结构(程序+数据+PCB)

进程的状态和组成

进程的状态及其转换

1.进程的基本状态
(1)运行状态(Running)

进程占有CPU,并在CPU上执行

处于这种状态的进程的个数不能大于CPU的数目

(2)就绪状态(Ready)

一个进程已经具备运行条件,但由于无CPU暂时不能运行的状态(当调度给其CPU时,立即可以运行)

如果系统中共有N个进程,则就绪进程至多为N-1

(3)阻塞状态(blocked)又称等待态

指进程因等待某种事件的发生而暂时不能运行的状态。

(即使CPU空闲,该进程也不可运行)


上述三种状态是进程最基本的状态,在实际的操作系统实现中,进程远不止这三种状态。

(4)新建状态(New)

进程从无到有是由创建而产生,故它的起点应为新建状态(New)

(5)终止状态(Terminated)

当进程运行完成时要消亡,此时的状态为终止状态(Terminated)

终止状态(Terminated)


三种状态的相互转换如下图所示


进程的5种基本状态及其转换

2.UNIXS 5进程状态及其变迁图

3.进程状态的转换

在进程生存期间,由于进程自身进展情况及外界环境的变化,进程的状态可以依据一定的条件相互转换:

①新建→就绪

②就绪→运行

③运行→阻塞

④阻塞→就绪

➄运行→就绪

⑥运行一终止


就绪 -->运行

  • 调度程序选择一个就绪态的进程投入运行

运行 --> 就绪

  • 运行进程用完了时间片
  • 运行进程被中断,因为一高优先级进程处于就绪状态

运行 -->阻塞

当一进程必须等待时

  • OS尚未完成服务
  • 对一资源的访问尚不能进行
  • 初始化I/0 且必须等待结果
  • 等待某一进程提供输入

阻塞 --> 就绪

  • 当所等待的事件发生时

进程描述

1.进程映像

进程在系统中存在和活动的实体‘

进程映像通常由4部分组成:

1.程序        2.数据集合        3.栈       4.PCB

2.进程控制块的组成

进程控制块:(Process Control BlockPCB)也称为进程描述块,它是进程组成中最关键的部分,其中含有进程的描述信息和控制信息,是进程动态特性的集中反映,是系统对进程施行识别和控制的依据。

进程控制块一般包括以下内容
(1)进程标识信息

  • 进程标识号PID
  • 父进程标识号PPID
  • 用户标识号UID

(2)处理器状态信息

  • 用户可用寄存器
  • 控制和状态寄存器
  • 栈指针

(3)进程控制信息

  • 调度和状态信息
  • 链接信息
  • 进程间通信信息
  • 存储管理信息
  • 资源需求、占有和控制方面的信息
3.进程控制块的作用
  • 每个进程有唯一的进程控制块
  • 系统利用PCB来控制和管理进程
  • 进程的动态、并发等特征是利用PCB表现出来的
  • PCB是进程存在的唯一标志

希望对你有帮助!加油!

若您认为本文内容有益,请不吝赐予赞同并订阅,以便持续接收有价值的信息。衷心感谢您的关注和支持!

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

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

相关文章

图神经网络实战(2)——图论基础

图神经网络实战(2)——图论基础 0. 前言1. 图属性1.1 有向图和无向图1.2 加权图和非加权图1.3 连通图和非连通图1.4 其它图类型 2. 图概念2.1 基本对象2.2 图的度量指标2.2 邻接矩阵表示法 3. 图算法3.1 广度优先搜索3.2 深度优先搜索 小结系列链接 0. 前…

《Effective C++》条款44

将与参数无关的代码抽离templates 存在这样一种类&#xff1a; template<class T,int n> class A { public:...int func(){...cout << n * n << endl;} }; 和这样的两种实例化对象&#xff1a; A<int, 5> a1; a1.func(); A<int, 10> a2; a2.…

力扣hot10---大根堆+双端队列

题目&#xff1a; 大根堆思路&#xff1a; 维护最大值&#xff0c;应该首先想到大根堆。C中对应着priority_queue&#xff0c;这里用pair<int,int>来记录对应的值和在nums中的索引。所以有priority_queue<pair<int,int>> q。在大根堆中&#xff0c;用q.top()…

使用axios结合access_token和refresh_token进行无感刷新

这里利用到的主要是 axios 请求失败的config配置可以记住本次请求的参数&#xff0c;以及利用拦截器&#xff0c;等待刷新完后通过 axios(config) 再次发起请求。 小技巧&#xff1a;将每次请求失败的config和promise的resolve参数存放到数组中&#xff0c;等待刷新token完成再…

【框架学习 | 第一篇】一篇文章读懂MyBatis

文章目录 1.Mybatis介绍1.1Mybatis历史1.2Mybatis特点1.3与其他持久化框架对比1.4对象关系映射——ORM 2.搭建Mybatis2.1引入依赖2.2创建核心配置文件2.3创建表、实体类、mapper接口2.4创建映射文件2.4.1映射文件命名位置规则2.4.2编写映射文件2.4.3修改核心配置文件中映射文件…

vue中v-if和v-for优先级

在Vue中&#xff0c;v-for的优先级高于v-if。这意味着在同一个元素上使用v-if和v-for时&#xff0c;v-for将首先被解析&#xff0c;然后是v-if。 下面是一个代码示例&#xff1a; <template><div><div v-for"item in items" v-if"item.isDispl…

python七大爬虫程序

一&#xff0c;爬取豆瓣电影信息 import random import urllib.request from bs4 import BeautifulSoup import codecs from time import sleepdef main(url, headers):# 发送请求page urllib.request.Request(url, headersheaders)page urllib.request.urlopen(page)conten…

priority_queue 优先级队列

从大到小排序&#xff1b; #include<cstdio> #include<queue> using namespace std; priority_queue <int> q; int main() {q.push(10),q.push(8),q.push(12),q.push(14),q.push(6);while(!q.empty())printf("%d ",q.top()),q.pop(); }输出 14 1…

Linux基本命令

一、基本命令 修改mysql端口号 vim /etc/my.cnf云服务器ssh端口修改 vim /etc/ssh/sshd_config1.1 关机和重启 关机 shutdown -h now 立刻关机 shutdown -h 5 5分钟后关机 poweroff 立刻关机重启 shutdown -r now 立刻重启 shutdown -r 5 5分钟后重启 reboot 立刻重启1.2…

C++中erase、reverse的常用用法

reverse(start,end);该式子会将[start,end)范围内的字符串进行翻转。 注意&#xff1a;reverse函数仅适用于双向迭代器的容器&#xff0c;例如vector、list、deque等&#xff0c;reverse逆转后&#xff0c;原范围的迭代器仍然有效。 #include <iostream> #include <…

【python--读取文件夹下所有文件读取关键词】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;Python &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; python练习题 抽取关键词 抽取关键词 import os import json import pandas as pd# 指定文件夹路径和关键…

代码随想录Day21 | Leetcode216 组合总和III、Leetcode17 电话号码的字母组合

一、第一题 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺序返回。示例 1: 输入: k 3, n 7 输出: [[1,…

信息熵、KL散度、交叉熵、互信息、点互信息

信息熵 信息量 信息量是对信息的度量&#xff0c;衡量事件的不确定性&#xff0c;越小概率的事件发生了产生的信息量越大。我们应该用什么形式的函数表达信息量呢&#xff1f;除了随着概率增大而减少&#xff0c;这个函数还有具有以下性质&#xff1a; 如果有两个事件x和y彼…

如何定制聊天机器人,使用 Chatopera 云服务

在人工智能时代&#xff0c;Chatopera 相信&#xff0c;再小的个体&#xff0c;也有自己的聊天机器人。过去定制聊天机器人服务成本高、周期长&#xff0c;Chatopera 云服务重新定义聊天机器人。Chatopera 云服务于 2018 年 11 月 8 日上线&#xff0c;提供安全、稳定可靠的定制…

STM32标准库——(18)Unix时间戳、BKP备份寄存器、RTC实时时钟

1.Unix时间戳 1.1 简介 32位有符号数所能表示的最大数字是2^32/2-1这个数是21亿多&#xff0c;这其实是有溢出风险的&#xff0c;因为目前到2023年时间戳已经计到16亿了&#xff0c;32位有符号数的时间戳会在2038年的1月19号溢出&#xff0c;64位的时间戳能存储的时间范围非常…

C++对象模型剖析(六)一一Data语义学(三)

Data 语义学&#xff08;三&#xff09; “继承” 与 Data member 上期的这个继承的模块我们还剩下一个虚拟继承&#xff08;virtual inheritance&#xff09;没有讲&#xff0c;现在我们就来看看吧。 虚拟继承&#xff08;Virtual Inheritance&#xff09; 虚拟继承本质就是…

Linux笔记--make

使用上一节的 main.c、add.c、sub.c文件进行编译&#xff0c;编译的过程有很多步骤&#xff0c;如果要重新编译&#xff0c;还需要再重来一遍&#xff0c;能不能一步完成这些步骤?将这些步骤写到makefile文件中&#xff0c;通过make工具进行编译 一个工程中的源文件不计其数&a…

java 获取项目内的资源/配置文件

【getResourceAsStream】是java中用于获取项目内资源的常用方法&#xff0c;能够返回一个数据流&#xff0c;从而允许我们读取指定路径下的资源文件。这个方法可以用来读取各种类型的资源文件&#xff0c;包括但不限于文本文件、图像文件、配置文件等。 要使用getResourceAsStr…

高端相亲婚恋平台有哪些?分享五款高端靠谱相亲交友软件

如今市场上的相亲软件越来越多&#xff0c;但很少有人能找到自己心仪的相亲软件。在选择相亲软件时&#xff0c;大家最看重的就是安全性和真实性&#xff0c;因此我想向大家分享几款我用过且觉得可靠的高端相亲软件&#xff0c;希望能得到你们的认可。 1、丛丛 这是我用的最久的…

Nginx正反向代理

需求 为了降低成本并提高效率&#xff0c;考虑对华为云服务器的网络架构进行重构。 将原有的十一台云服务器公网IP整合为一台&#xff0c;部署 Nginx 作为公网服务器&#xff0c;并引入负载均衡器来分发流量。 Nginx正向代理 什么是正向代理&#xff1f; 正向代理&#xff…