操作系统中的线程进程和同步异步和并发并行

news2024/9/23 13:23:04

目录

  • 一、进程和线程
    • 1.1 进程
    • 1.2 线程
    • 1.3 实现多任务的方法
      • 1.3.1 使用多进程实现多任务
      • 1.3.2 使用多线程(单个进程包含多个线程)实现多任务
      • 1.3.3 使用多进程+多进程实现多任务
    • 1.4 进程和线程的比较
    • 1.5 Java的多线程模型的应用
  • 二、同步和异步
    • 2.1 同步
    • 2.2 异步
  • 三、并发与并行
    • 3.1 并发
    • 3.2 并行
    • 3.3 单核CPU和多核CPU
      • 3.3.1 单核CPU的实现多任务
      • 3.3.2 多核CPU实现多任务
    • 3.4 并行和并发、同步和异步 & 线程和进程的关系
  • 四、参考文献

一、进程和线程

1.1 进程

操作系统进行资源分配的最小单元。是程序的一次执行。

1.2 线程

操作系统进行任务调度的最小单元,线程包含在进程中。处在同一个进程中的多个线程之间共享进程的代码段、公有数据。

1.3 实现多任务的方法

1.3.1 使用多进程实现多任务

一个进程只包含一个线程,符合现代操作系统进行任务调度的原则。

在这里插入图片描述

1.3.2 使用多线程(单个进程包含多个线程)实现多任务

这种模式不稳定,只要一个线程崩溃,整个进程就会崩溃。

在这里插入图片描述

1.3.3 使用多进程+多进程实现多任务

高效、安全,但是复杂度最高。同时这也是现代操作系统普遍采用的模式。

在这里插入图片描述

1.4 进程和线程的比较

进程的创建开销比较大,线程的创建开销比较小。

进程之间的通信慢与线程之间的通信,原因是处在同一个进程中的线程共享进程的一些资源。

1.5 Java的多线程模型的应用

  • 网络
  • 数据库
  • Web开发

二、同步和异步

区分同步和异步最有效的方法,就是看工作的完成过程中,是否出现一项任务等待另一项任务完成的情况。

不区分是描述“进程”还是“线程”、适用线程和进程,因此可以使用“任务”这个更高的层次来概括。本质来说这是对计算机世界或现实世界的某种行为的抽象描述。

2.1 同步

假设有一辆公交车记为A,并且只有一个门记为A.door-1,那么车上的乘客B和车站的乘客C上下车,只能是顺序执行的,即B先下C后上,或者是C先上B后下。

在这里插入图片描述

为了完成一项工作,需要完成若A、B、C任务,并且这些任务只能顺序执行,即A->B->C。

2.2 异步

假设有一辆公交车记为A,并且只有两个门记为A.door-1,、A-door-2,那么车上的乘客B和车站的乘客C上下车,B可以从A.door-2下车,而不用等C上车后再下车。同理对于C来说可以从A.door.1上车,而不用等B下车后再上车。

在这里插入图片描述

为了完成一项工作,需要完成A、A-1、B、C任务,并且这些任务可以各自运行,一个任务不用等另一个任务,如下所示:

在这里插入图片描述

三、并发与并行

不区分是描述“进程”还是“线程”、适用线程和进程,因此可以使用“任务”这个更高的层次来概括。本质来说这是对计算机世界或现实世界的某种行为的抽象描述。

3.1 并发

多个任务之间同时执行,需要在多核CPU中才能实现。

3.2 并行

各个任务之间交叉执行相同时间间隔,由于CPU的计算速度非常的快,所以让各个任务看起来好像是一起推进的,但是在微观上依旧是串行的。

3.3 单核CPU和多核CPU

3.3.1 单核CPU的实现多任务

只能采用并行模式来实现的。

3.3.2 多核CPU实现多任务

采用并发模式来实现。

3.4 并行和并发、同步和异步 & 线程和进程的关系

并发和并行同步和异步是对线程和进程的工作模式的描述。

四、参考文献

1、https://www.zhihu.com/question/33515481
2、https://www.cnblogs.com/wspblog/p/5948465.html
3、https://www.liaoxuefeng.com/wiki/1252599548343744/1304521607217185

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

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

相关文章

QTday2

点击登录&#xff0c;登陆成功&#xff0c;跳转到新的界面 主函数 #include "widget.h" #include "second.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();Second s;QObject::connect…

MySQL数据库介绍流程(最新mysql)

版本介绍 第一步&#xff1a;下载MySQL数据库 1、下载地址&#xff1a;http://dev,mysql.com/downloads/windows/installer/8.0html 2、就是直接搜索&#xff1a;mysql官方 msyql官方网站 这里就安装成功 第二步&#xff1a;这么启动和停止mysql 第三步&#xff1a;这么快捷停…

B - Get an Even String

Get an Even String - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意&#xff1a;题目要使字符串变成偶字符串&#xff0c;对于每一个奇数i都和后面i1的位置字符相同。求给定字符串最少去掉几个字符能得到偶字符串。 解题思路&#xff1a;贪心&#xff0c;找每次第一对出现…

黑客(网安)自学

建议一&#xff1a;黑客七个等级 黑客&#xff0c;对很多人来说充满诱惑力。很多人可以发现这门领域如同任何一门领域&#xff0c;越深入越敬畏&#xff0c;知识如海洋&#xff0c;黑客也存在一些等级&#xff0c;参考知道创宇 CEO ic&#xff08;世界顶级黑客团队 0x557 成员…

5、Task_stat() always report used == size他两总是相等

1、今天想查看一下任务的堆栈使用情况&#xff0c;按官方手册加入下面调试下面代码 Task_Stat statbuf; /* declear buffer */ Task_stat(Task_self(),&statbuf); /*call func to get status */ If(statbuf.used > (statbuf.stackSize * 9 / 10)) { System_printf(“…

Python——— 函数大全

&#xff08;一&#xff09;初识函数 函数是可重用的程序代码块。 函数的作用&#xff0c;不仅可以实现代码的复用&#xff0c;更能实现代码的一致性。一致性指的是&#xff0c;只要修改函数的 代码&#xff0c;则所有调用该函数的地方都能得到体现。 在编写函数时&#xff0…

LabVIEW开发空气动力学实验室的采集和控制系统

LabVIEW开发空气动力学实验室的采集和控制系统 在航空航天模拟设施中&#xff0c;通常的做法是准备一种针对当前正在进行的实验的数据采集和控制软件。该软件通常是根据当前要求编辑的更通用程序的修订版&#xff0c;或者可能是专门为该测试编写的自定义程序&#xff0c;具体取…

iview-admin前后台分离管理系统

加油&#xff0c;新时代打工人&#xff01; layui已淘汰&#xff0c;下面介绍vue管理后台系统&#xff0c;当然市场上不止下面一种框架。 layuimini后台管理系统的简单使用 iview-admin是iview生态圈的成员之一。是一套基于 Vue.js&#xff0c;搭配ivew UI(https://www.iviewu…

【LeetCode周赛】2022上半年题目精选集——二分

文章目录 2141. 同时运行 N 台电脑的最长时间解法1——二分答案补充&#xff1a;求一个int数组的和&#xff0c;但数组和会超int 解法2——贪心解法 2251. 花期内花的数目解法1——二分答案代码1——朴素二分写法代码2——精简二分⭐ 解法2——差分⭐⭐⭐ 2258. 逃离火灾解法1—…

在VSCode中导出安装的所有插件并在其他计算机进行导入

插件导出&#xff1a; 1、切换要导出的文件路径 cd D:\桌面文件\DownLoads2、导出到extensions文本 code --list-extensions > extensions.txt如图所示&#xff1a; 插件导入&#xff1a; 当您在另一台计算机上导出了 Visual Studio Code 编辑器已安装的扩展程序列表…

MySQL为什么选择B+树创建索引

不同方式查找数据 1. 全表遍历2. 哈希结构2.1 使用哈希结构创建索引的缺点2.2 哈希索引的适用性 3. 二叉搜索树4. AVL树5. B树6. B树6.1 B 树和 B 树的差异6.2 采用B树创建索引的优势6.3 一些需要注意的问题 1. 全表遍历 将磁盘中存储的所有数据记录依次加载&#xff0c;与给定…

linux下的mosquitto服务安装及使用(避坑指南)

Mosquitto是一个开源的MQTT消息代理服务器。MQTT是一个轻量级的、基于发布/订阅模式的消息传输协议。 mosquitto的安装使用比较简单&#xff0c;可以方便的来进行一些测试。 mosquitto介绍 Mosquitto的特点&#xff1a; 1. 轻量级&#xff1a;Mosquitto是一个轻量级的MQTT代理…

Git学习(mac)

Git基础 1.安装与配置 下载与安装&#xff1a;git官网 使用入口&#xff1a; win&#xff1a;右键菜单 git bash Mac: 终端 查看git版本&#xff1a; git --version使用Git工作之前&#xff0c;我们需要做个一次性的配置。方便后续Git能跟踪到谁做了修改&#xff0c;我们需…

第四章——复合类型

数组 数组&#xff08;array&#xff09;是一种数据格式&#xff0c;能够存储多个同类型的值。例如30个int类型的值&#xff0c;12个float类型的值。每个值都存储在一个独立的数组元素中&#xff0c;计算机在内存中依次存储数组的各个元素。 创建数组时应指出以下三点&#x…

10.1UEC++/UObject

1. 1.new出的对象&#xff0c;不用自己管理内存释放&#xff1b; 2.比如两个类对象指针a,b同时指向一个苹果&#xff0c;若苹果消亡&#xff0c;会将a,b同时指向空。 3.保存时&#xff0c;将工程中的actor&#xff0c;属性等能够保存在本地就是uob在发挥作用。 4.不管在ue&…

自然语言处理实战项目12-基于注意力机制的CNN-BiGRU模型的情感分析任务的实践

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下自然语言处理实战项目12-基于注意力机制的CNN-BiGRU模型的情感分析任务的实践&#xff0c;本文将介绍一种基于注意力机制的CNN-BiGRU模型&#xff0c;并将其应用于实际项目中。我们将使用多条CSV数据样例&#xff0…

虚拟机ubuntu系统IP地址变成127.0.0.1了

使用sudo dhclient -v指令动态获取IP地址 注意要把电脑网线拔掉&#xff0c;如果WIFI和有线同时连着设备就会出现如下情况 拔掉网线后正常

网络应用基础交换机(NETBASE第五课)

网络应用基础交换机&#xff08;NETBASE第五课&#xff09; 交换机的定义 交换是按照通信两端传输信息的需要&#xff0c;用人工或设备自动完成的方法&#xff0c;把要传输的信息送到符合要求的相应路由上的技术的统称。交换机根据工作位置的不同&#xff0c;可以分为广域网交…

Tubi 时间序列 KPI 的异常值检测

欢迎来到 Tubi—— 在这里&#xff0c;广告型视频点播永不停歇&#xff01; 作为全球最大的流媒体服务之一&#xff0c;Tubi 保持稳定增长&#xff0c;并始终关注对业务发展至关重要的前沿趋势。基于此&#xff0c;Tubi 数据科学团队创建了一套全新警报系统&#xff0c;对 Key…

【Kubernetes运维篇】RBAC认证授权详解(一)

文章目录 一、RBAC授权认证理论知识1、什么是RBAC授权&#xff1f;2、认证基本流程3、K8S客户端访问apiserver的认证几方式1、第一种&#xff1a;客户端认证2、第二种&#xff1a;Bearertoken方式3、第三种&#xff1a;Serviceaccount方式 4、RBAC授权常见角色绑定方式1、第一种…