多进程,多线程,并发,并行,并发程序设计 概念

把多个程序同时装入一个计算机系统的主存储器并行执行,称为并发程序设计

1.并发:
在一段时间内,多个程序保持就绪态,随时可以被CUP运行。单核处理器就可以做到。
在这里插入图片描述
多道环境下的程序设计叫做并发程序设计
2.并行:在同一时刻多个任务同时执行,或者说是在同一时刻可以执行多条程序指令,多核处理器才可以做到。
3.多进程:每个进程都拥有自己独立的资源,多个进程可在单核处理器上并发执行,在多核处理器上并行执行。
4.多线程:一个进程中拥有多个线程就叫多线程,一个进程只拥有一个线程叫单线程。多个线程可在单核处理器上并发执行,在多核处理器并行执行。

操作系统的设计,因此可以归结为三点:
(1)以多进程形式,允许多个任务同时运行;
(2)以多线程形式,允许单个任务分成不同的部分运行;
(3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资

并发程序设计概念

  1. 单道批处理系统:一次只能在主存中装入1个程序, 该程序独享所有资源(即使有些资源该程序不用),cpu处理完这个程序,下个程序才能进入内存。
    多道批处理系统:一次能在主存中装入多个程序。
  2. 并发执行:(看多道程序执行示意图)
    在一段时间内,有两个或两个以上的程序同时处于开始运行(已经在内存中了,就绪态)但尚未结束的状态。
  3. 我们把多道环境下的程序设计叫做并发程序设计。
    在这里插入图片描述

例子:
人脑和计算机有好多相通之处,人脑一心二用和计算机的单核多线程几乎是同样的道理:通过快速切换时间片来模拟并行处理。
所以不要费劲心思想着突破人类的生理极限去做到“高并发”。
稍微有点经验的程序员都知道,通过简单的开进程、线程去实现高并发是非常愚蠢的行为,因为Context Switch的耗时在随着并发度的提高会占比越来越大,CPU会花费大量时间进行每个线程Context恢复&保存,高并发的不二法门一直是“异步非阻塞”。
同理,我们面对千头万绪的事情的时候需要做的是,记下需要做的事情,然后按照优先级,一件一件来做,如果遇到外部因素造成的“阻塞”,那就暂停任务,记录进度,切换到下一个任务上去。
但由于我们的生理限制,我们的“内存”小得可怜,“硬盘”读写速度奇慢无比,还容易丢数据。

发布了54 篇原创文章 · 获赞 1 · 访问量 2746

猜你喜欢

转载自blog.csdn.net/weixin_44682507/article/details/103525288