首页 > 编程语言 >并发编程理论

并发编程理论

时间:2022-11-17 19:36:00浏览次数:37  
标签:多个 并行 理论 编程 程序 并发 进程 CPU

操作系统发展史

1. 穿孔卡片阶段

计算机很庞大,使用很麻烦,一次只能给一个人使用,期间很多时候计算机都不工作

好处:程序员独占计算机,为所欲为
坏处:计算机利用率太低,浪费资源

2.联机批处理系统

提前使用磁带一次性录入多个程序员编写的程序,然后交给计算机执行

 

 

 CPU工作效率有所提升,不用反复等待程序录入

3. 脱机批处理系统

极大地提升了CPU的利用率
总结:CPU提升利用率的过程

多道技术

在学习并发编程的过程中,不做刻意提醒的情况下,默认一台计算机就一个CPU(只有一个干活的人)

单道技术

所有的程序排队执行,过程中不能重合

 

 

 

多道技术

利用空闲时间提前准备其他数据,最大化提升CPU利用率

 

 

 

多道技术详细
1.切换
计算机的CPU在两种情况下会切换(不让你用,给别人用)

  • 程序有IO操作

    输入\输出操作
    input、time.sleep、read、write

  • 程序长时间占用CPU

    我们得雨露均沾,让多个程序都能被CPU运行一下

2.保存状态
CPU每次切换走之前都需要保存当前操作的状态,下次切换回来基于上次的进度继续执行

隐喻:(重要)

开了一家饭店,只有一个服务员,但是同时来了五桌客人
请问:如何让五桌客人都感觉到服务员在服务他们?
让服务员化身为闪电侠,只要客人有停顿,就立刻切换到其他桌,如此往复

 

进程理论

进程与程序的区别

  • 程序:一堆死代码(还没有被运行起来)
  • 进程:正在运行的程序(被运行起来了)

进程的调度算法(重要)

1.FCFS(先来先服务)

  对短作业不友好

2.短作业优先调度(SJ/PF)

  对长作业不友好

3.时间片轮转法+多级反馈队列(目前还在用)
  将时间均分,然后根据进程时间长短再分多个等级
  等级越靠下表示耗时越长,每次分到的时间越多,但是优先级越低

进程的并行与并发

  • 并行

    多个进程同时执行,必须要有多个CPU参与,单个CPU无法实现并行

  • 并发

    多个进程看上去像同时执行,单个CPU可以实现,多个CPU肯定也可以

区别:

并行是从微观上,也就是在一个精确的时间片刻,有不同的程序在执行,这就要求必须有多个处理器。

并发是从宏观上,在一个时间段上可以看出是同时执行的,比如一个服务器同时处理多个session。

 

判断下列两句话孰对孰错:
A:我写的程序很牛逼,运行起来之后可以实现14个亿的并行量
    说法不对,并行量必须要有对等的CPU才可以实现,没有那么多数量的CPU

B:我写的程序很牛逼,运行起来之后可以实现14个亿的并发量
    合情合理,完全可以实现,以后我们的项目一般都会追求高并发

ps:目前国内可以说是最牛逼的>>>:12306

进程的三状态 

就绪态
  所有的进程在被CPU执行之前都必须先进入就绪态等待
运行态
  CPU正在执行
阻塞态
  进程运行过程中出现了IO操作,阻塞态无法直接进入运行态,需要先进入就绪态

标签:多个,并行,理论,编程,程序,并发,进程,CPU
From: https://www.cnblogs.com/chen-ao666/p/16900526.html

相关文章

  • 并发编程理论之多道技术、进程
    并发编程理论之多道技术、进程操作系统的发展穿孔卡片1946年第一台计算机诞生--20世纪50年代中期,还未出现操作系统,计算机工作采用手工操作方式。程序员将对应用程序......
  • C++PrimerPlus中文第六版第7章编程练习答案
    1、#include<iostream>usingnamespacestd;doublecomputeHarmonicMean(doublex,doubley);intmain(){doublex,y;cout<<"Entertwonumbers(x!=0......
  • 并发与进程
    并发编程理论研究网络编程其实就是在研究计算机的底层原理及发展史操作系统发展史 1.穿孔卡片阶段 计算机很庞大使用很麻烦一次只能给一个人使用期间很多时候计算......
  • 网络并发3
    今日内容详细粘包现象1.服务端连续执行三次recv2.客户端连续执行三次send问题:服务端一次性接收到了客户端三次的消息该现象称为'粘包现象'粘包现象产生的原因 1.......
  • 黏包 struct模块 进程理论进程的并行与并发
    今日内容黏包现象1.服务端连续三次执行recv2.客户端连续三次执行send问题:服务端一次性接收到了客户端三次消息该现象称为"黏包现象"黏包现象产生的原因 1.不知道......
  • 并发编程
    目录黏包现象struct模块struct.pack()struct.unpack()文件过大无法打包黏包问题解决黏包实战UDP协议(了解)操作系统发展史穿孔卡片阶段联机批处理系统脱机批处理系统并发......
  • 并发控制
    并发控制并发造型带来的数据不一致性丢失修改(lostupdate)两个事务T1和T2T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改丢失不可重复读(n......
  • 网络编程与并发编程
    今日内容概要黏包现象解决黏包逻辑思路代码实操UDP基本代码使用并发编程理论之操作系统发展史多道技术进程理论及调度算法今日内容详细黏包现象1.服务端连......
  • 黏包现象 并发编程
    目录黏包现象struct模块struct.pack()struct.unpack()文件过大无法打包黏包问题解决黏包实战UDP协议(了解)操作系统发展史穿孔卡片阶段联机批处理系统脱机批处理系统并发......
  • 网络编程3
    今日内容概要黏包现象struct模块黏包代码实战UDP协议并发编程理论多道技术进程理论进程的并行与并发进程的三状态今日内容详细黏包现象1.服务端连续执行三次......