多线程复习——进程线程(上)

news2024/9/23 15:28:22

目录

一、进程是啥?跑起来的程序

二、进程是怎么管理的?描述+组织

三、进程的PCB里有啥?

四、进程的调度是咋进行?时间管理大师

五、进程的独立性是咋回事?

六、进程之间如何通信?


一、进程是啥?跑起来的程序

进程(process) 也叫做 任务(task).对于操作系统来说 一个任务就是一个进程

一个进程要想跑起来,我们就得给其分配内存和各种资源


二、进程是怎么管理的?描述+组织

管理 = (描述)PCB + 组织

  • 描述:进程控制块(PCB)
  • 组织:使用特定的数据结构,双向链表
  • 查看进程:本质上就是遍历操作系统中的链表,展示其中的属性
  • 创建进程:本质上就是创建一个PCB对象,加入到内核的链表中
  • 销毁进程:本质上是删除内核中的指定PCB对象


三、进程的PCB里有啥?

进程控制块(PCB process control block),我们可以把进程看作一个类,一个PCB对象就是一个进程

PCB其中的属性?

  • pid:进程的id,是一个身份标识,同一时刻不能存在两个pid相同的进程
  • 内存指针:描述了这个进程使用的内存空间是哪个范围(虚拟内存空间)
  • 文件描述符表:描述这个进程都打开了那些文件
  • 进程调度信息:(进程的状态、优先级、上下文、记账信息等)


四、进程的调度是咋进行?时间管理大师

说到进程的调度就不得不提到进程的优先级,优先级就是我们优先CPU优先选择那个进程执行,它的算法不再多说。

例如 现有12块时间.
最喜欢 B ,就给 B 分配了 7块时间
其次最喜欢 C , 就给 C 分配了 4块时间
最不喜欢 A ,就给 A 分配了 1块时间

这样就优先给 B 其次是 C 最后是 A

同一个时刻我们是只能执行一个进程的(单核CPU),因此我们看起来同时执行,其实微观上是交换进行的。


五、进程的独立性是咋回事?

每个进程拥有自己的虚拟地址空间,不会对其他进程造成影响。

什么是虚拟地址空间?

引用@wzzzzzzzzzzzzz博主一张好图:

在这里插入图片描述

 为啥要搞一个"虚拟地址空间"
为啥不让进程直接访问真实的物理地址?

为了一定程度减少内存访问越界带来的后果.
例如进程1 的内存范围是 0x100~0x400 ,此时如果尝试修改0x401的地址数据,这个操作就是越界访问.

在真实的物理地址的情况下,如果修改了 0x401 ,这个地址可能是进程2的,此时进程2就可能出bug了.

在虚拟地址的情况下,如果修改了 0x401 ,此时进行 0x401 的页表查询,由于0x401是非法地址,就查找不到, 于是就让 这个进程崩溃,防止影响其他的进程.

这样就让进程和进程之间相互影响的可能性变小了,隔离性增加了,进程也更稳定了.缺点就是两个进程需要相互配合的时候,沟通起来就麻烦了.


六、进程之间如何通信?

通过“公共空间”进行交互。(进程A 先将数据放入公共空间,进程B随后再去取,这样就完成了进程之间的交互)
不管是那种 进程间通信的机制,其本质都是一样的。


 

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

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

相关文章

牛客网刷题(BC72、BC18、BC83、BC84、BC41、BC31、BC17、BC6)

目录 一、BC72 平均身高 二、BC18 计算带余除法​编辑 三、BC83 被5整除问题​编辑 四、BC84计算y的值 五、BC41 你是天才吗? 六、BC31 发布信息 七、BC17 计算表达式的值 八、BC6 小飞机 **太简单的题就没有文字叙述了~ 一、BC72 平均身高 #define _CRT_S…

[附源码]Python计算机毕业设计Django人体健康管理app

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

力扣(LeetCode)134. 加油站(C++)

贪心 考虑暴力,枚举所有点作为起点,每个点先加油,再尝试前往下一个点,剩余油量大于等于 000 ,就可以走下去。枚举所有点的所有路径,时间复杂度 O(n2)O(n^2)O(n2) ,对于本题规模 TLETLETLE 。 …

Redis常见错误

目录 一、(error) NOAUTH Authentication required. 二、(error) ERR unknown command keys* 三、(error) ERR invalid password 一、(error) NOAUTH Authentication required. 错误原因:没有使用密码登录认证 使用命令: auth 你自己的密码 如果密码…

【人工智能】确定型推理

确定性推理(Deterministic Reasoning)目录一、推理基本概念二、推理逻辑基础1. 命题逻辑(Propositional Logic)2. 谓词逻辑(Predicate Logic)3. 推理的控制策略(i) 推理方向(a) 正向推理:已知事…

[附源码]Python计算机毕业设计SSM教务一点通管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

制作一个简单HTML个人网页网页——人物介绍梵高(HTML+CSS)

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

c++中的cin和getline()函数

cin cin 输入接触到第一个非空格字符时开始阅读&#xff0c; 当遇到下一个空格字符&#xff08;空格、制表符、换行符&#xff09;时就会停止读取&#xff0c; #include<iostream> using namespace std;int main() {string s;printf("输入:\n");cin >>…

[论文阅读] 颜色迁移-颜色空间的选择

[论文阅读] 颜色迁移-颜色空间的选择 论文: [Colour Spaces for Colour Transfer] 本文将颜色迁移方法分为了2大类: 一是直接3D颜色迁移方法二是转换为3个1D颜色迁移方法 对于第二种方法, 颜色空间的选择对颜色迁移结果有很大的影响, 如下所示为 RGB 和 Lab 颜色空间的结果…

使用Express框架操作MongoDB数据库

前言 1、NoSQL数据库&#xff1a;非关系型数据库。数据的组织形式不是二维表格。即Not Only SQL&#xff0c;不能使用SQL语句操作数据。适合存储超大 规模、数据长度不确定的数据&#xff0c;数据没有规定的格式&#xff0c;不需要进行任何的设置就可以自由的横向扩展 2、什…

[附源码]计算机毕业设计校园服装租赁系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

G1D30-NLP(Tokenizer)DP(交叠子问题)

一、NLP &#xff08;一&#xff09;bert中一些标记 1、[SEP] 用于断句&#xff0c;其真实效果&#xff0c;有待考究&#xff0c;因为有segment embedding 2、[CLS] 生成一个向量&#xff0c;用来进行文本分类 &#xff08;二&#xff09;AutoTokenizer 关于tokenizer更…

JMeter入门教程(16)——非GUI运行

文章目录1.任务背景2.任务目标3.任务实操1.任务背景 JMeter的场景运行方式分为两种&#xff0c;一种是GUI&#xff08;视窗运行&#xff0c;即我们可以看到的运行界面&#xff09;方式&#xff0c;另一种是非GUI&#xff08;命令窗口&#xff09;方式运行&#xff0c;在Window…

HTML网页大作业代码【免费代码已上传】

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

[附源码]计算机毕业设计校园便携系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

基于springboot的智慧养老平台

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;springboot 前端&#xff1a;html、Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#…

SpringBoot+Vue项目便捷洗衣服务平台

文末获取源码 开发语言&#xff1a;Java 使用框架&#xff1a;spring boot 前端技术&#xff1a;JavaScript、Vue.js 、css3 开发工具&#xff1a;IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库&#xff1a;MySQL 5.7/8.0 数据库管理工具&#xff1a;phpstudy/Navicat JD…

线程间实现通信的几种方式

目录线程通信相关概述提出问题方式一&#xff1a;使用Object类的wait() 和 notify() 方法方式二&#xff1a;Lock 接口中的 newContition() 方法返回 Condition 对象&#xff0c;Condition 类也可以实现等待/通知模式方法三&#xff1a;使用 volatile 关键字方法四&#xff1a;…

微服务系列之微服务架构

引言 他发现了人类行为的一大法则&#xff0c;那就是&#xff0c;为了要使一个大人或小孩极想干某样事情&#xff0c;只需要设法把那件事情弄得不易到手就行了----《汤姆索亚历险记》 参考书籍&#xff1a; “凤凰架构”“微服务架构设计模式” 在了解微服务架构之前&#…

WorkTool企微机器人APP分享自定义链接

移动端应用怎么分享自定义网页链接到企业微信 前言 我们知道分享自定义网页可以采用转发形式发到企业微信的客户或群里&#xff0c;但是如果我们业务需要配置每次链接入口不同&#xff0c;如链接附带一些业务参数&#xff0c;这时单纯使用转发常常不能满足需求。找到一种替代…