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

一、进程和线程

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
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RBJFV

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值