并发编程1

操作系统发展史

手工操作——穿孔卡片
1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式。此时还没有操作系统的概念。

 手工操作方式两个特点:
  (1)用户独占全机。不会出现因资源已被其他用户占用而等待的现象,但资源的利用率低。
  (2)CPU 等待手工操作。CPU的利用不充分。

image

image

批处理 —— 磁带存储
批处理系统:加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地、成批地处理一个或多个用户的作业(这作业包括程序、数据和命令)。

# 1.首先出现的是联机批处理系统,即作业的输入/输出由CPU来处理。 图1
# 2.为克服与缓解:高速主机与慢速外设的矛盾,提高CPU的利用率,又引入了脱机批处理系统,即输入/输出脱离主机控制。 脱机批处理系统图2
卫星机:一台不与主机直接相连而专门用于与输入/输出设备打交道的。

图1:
image
图2:
image

多道技术

所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行.当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。
单道技术
	所有的程序排队执行 总耗时是所有程序耗时之和
多道技术
	计算机利用空闲时间提前准备好一些数据 提高效率 总耗时较短
	
多道技术的就是切换+保存状态,
1.CPU在两种状态下切换(去执行其他程序)
		1.程序自身进入IO操作
		IO操作:输入输出操作
		获取用户输入
		time.sleep()
		读取文件
		保存文件
		2.程序长时间占用CPU
2.保存状态
		每次切换之前要记录下当前执行的状态 之后切回来基于当前状态继续执行

image

进程理论

进程即正在执行的一个过程。进程是对正在运行程序的一个抽象.
PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu
# 进程的调度算法:
1.先来先调度算法
针对耗时较短的程序不友好

2.短作业调度算法
针对耗时较长的程序不友好

3.时间片轮转法+多级反馈队列
将固定的时间均分成很多份,所以的程序都一样,分配多次以后如果还要程序没有结束,则会分到下一层,越往下程序总耗时会越长,每次分的时间片越多,优先级越低

进程的并发与并行

并行:多者同时进行前提是必须要有多个CPU。
并发:是指资源有限的情况下,多个进程看上去像是同时进行的时候就可以称之为并发,

两者的区别:
并行是从微观上,也就是在一个精确的时间片刻,有不同的程序在执行,这就要求必须有多个处理器。
并发是从宏观上,在一个时间段上可以看出是同时执行的,比如一个服务器同时处理多个程序。

进程的三状态

指一个程序在被CPU运行的时候会经历的三个状态
1.当我们双击一个程序的时候,它会在就绪态,就好像在告诉CPU它已经准备好要运行了
2.在进程调度的时候就是分了一个时间片,如果程序还没有结束的情况下,会进入到就绪态继续等待,如果此时的程序有IO操作(input、等)的话,那么他也有可能进入到阻塞态,当IO操作结束以后,又会回到就绪态继续等待运行
(如果程序想尽快完成的话,那么就尽量减少程序里的IO操作)

image

同步和异步

# 用于描述任务提交的状态
同步:指提交了任务以后,在原地等待任务的结果,期间什么事情也不干!
异步:指提交了任务以后就去干别的事情了,等结果出来会自动提醒!

阻塞与非阻塞

# 用于描述进程进度的状态
阻塞:就是程序在运行状态,此时程序里有IO操作的情况下,程序就需要等IO操作结束以后才可以继续进入就绪状态等待运行!
非阻塞:就是就绪态和运行中!

同步异步与阻塞非阻塞

1.同步阻塞:效率最低,原地等待任务的结果并且程序运行过程中还有IO操作,只能等待!!
     好比在在银行排队 并且在队伍中什么事情都不做
2.同步非阻塞:效率低,程序需要在两个不同的状态里来回切换.  
    在银行排队,虽然不能走,但是还是可以干点其他的事情
3.异步阻塞:异步等待程序IO操作结束!
   在银行取号,可以做自己的事情但是不能出去,等喊到你了过来,也是只能等着结果
4.异步非阻塞:这个效率最高!不需要等待直接可以得到结果
  在银行取号排队,期间可以出去做自己的事情,到号了就有人喊你回来

posted @   Hsummer  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示