计算机发展史(多道技术)
1、串行:
一个任务完完整整地运行完毕后,才能运行下一个任务
2、并发(伪并行)
看起来多个任务是同时运行的即可,单核也可以实现并发
3、并行:
真正意义上多个任务的同时运行,只有多核才实现并行
4、cpu的功能:
cpu是用来做计算,cpu是无法执行IO操作的,一旦遇到io操作,应该让cpu去执行别的任务
5、多道技术(针对单核而言)
1、多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题,
解决方式即多路复用,多路复用分为时间上的复用和空间上的复用。
1、空间上的复用=》多个进程共用一个内存条
2、时间上的复用-》多个进程复用同一个cpu的时间
cpu遇到IO切换:可以提升效率
一个进程占用cpu时间过长也会切走:为了实现并发效果不得已而为之,反而会降低程序的执行效率
6.进程:一个正在执行的过程/一个正在运行的程序。
7.操作系统:一个控制和管理计算机硬件及应用软件的控制程序。
8.操作系统的作用:
进程:起源于操作系统,操作系统负责调度进程
1 管理,调度进程,将应用程序对硬件的操控变得有序化 2 将硬件的复杂的接口封装成简单的接口,提供良好的抽象接口(用户态)
9、什么是进程
进程指的就是一个正在运行的程序,或者说是程序的运行过程,即进程是一个抽象的概念
进程是起源于操作系统的,是操作系统最核心的概念,操作系统所有其他的概念都是围绕进程展开的
10、为何要进程
实现并发
11.操作系统发展史
第一代计算机:程序出错了下一个程序进不来
特点:没有操作系统的概念,所有的程序设计都是直接操控硬件
优点:
程序员在申请的时间段内独享整个资源,可以即时地调试自己的程序(有bug可以立刻处理)
缺点:
浪费计算机资源,一个时间段内只有一个人用。
注意:同一时刻只有一个程序在内存中,被cpu调用执行,比方说10个程序的执行,是串行的
第二代计算机:程序出错了下一个程序还是会运行,批处理,但是对程序员不友好
第二代计算机是晶体管和批处理系统,计算机程序依然是串行。
第三代计算机:集成电路芯片和多道程序设计。
多道技术产生的背景:
cpu在执行一个任务的过程中,若需要操作硬盘,则发送操作硬盘的指令,指令一旦发出,
硬盘上的机械手臂滑动读取数据到内存中,这一段时间,cpu需要等待,时间可能很短,
但对于cpu来说已经很长很长,长到可以让cpu做很多其他的任务,如果我们让cpu在这段时间内切换到
去做其他的任务,这样cpu就可以充分利用了。这正是多道技术产生的技术背景
多道技术在16细讲
12.串行:程序运行完才能进入下一个程序
13. 并发:看起来多个任务同时执行即可。单核也可以实现并发
14.并行:真正意义上的同时运行,只有多核才能实现
15.cpu是用来做计算的,cpu无法执行i/o操作,在i/o操作时,cpu只能等待。
16.多道技术:
处理来自多个程序发起的多个(多个即多路)共享(共享即复用)资源的请求,简称多路复用
多路复用有两种实现方式:时间上的复用,空间上的复用
空间上的复用:多个进程共用一个内存条
每个客户都获取了一个大的资源中的一小部分资源,从而减少了排队等待资源的时间。
例如:多个运行的程序同时进入内存,硬件层面提供保护机制来确保各自的内存是分割开的,且由操作系统控制,这比一个程序独占内存一个一个排队进入内存效率要高的多。
有关空间复用的其他资源还有磁盘,在许多系统中,一个磁盘同时为许多用户保存文件。分配磁盘空间并且记录谁正在使用哪个磁盘块是操作系统资源管理的典型任务。
程序之间的内存必须分割,这种分割需要在硬件层面实现,由操作系统控制。如果内存彼此不分割,则一个程序可以访问另外一个程序的内存,
首先丧失的是安全性,比如你的qq程序可以访问操作系统的内存,这意味着你的qq可以拿到操作系统的所有权限。
其次丧失的是稳定性,某个程序崩溃时有可能把别的程序的内存也给回收了,比方说把操作系统的内存给回收了,则操作系统崩溃。
时间上的复用:多个进程复用同一个cpu的时间
当一个资源在时间上复用时,不同的程序或用户轮流使用它,第一个程序获取该资源使用结束后,在轮到第二个。。。第三个。。。
例如:只有一个cpu,多个程序需要在该cpu上运行,操作系统先把cpu分给第一个程序,在这个程序运行的足够长的时间(时间长短由操作系统的算法说了算)或者遇到了I/O阻塞,操作系统则把cpu分配给下一个程序,以此类推,直到第一个程序重新被分配到了cpu然后再次运行,由于cpu的切换速度很快,给用户的感觉就是这些程序是同时运行的,或者说是并发的,或者说是伪并行的。至于资源如何实现时间复用,或者说谁应该是下一个要运行的程序,以及一个任务需要运行多长时间,这些都是操作系统的工作
如何解决批处理问题:
分时操作系统:
多个联机终端+多道技术
分时操作系统:多个联机终端+多道技术 (第三代计算机广泛采用了必须的保护硬件(程序之间内存彼此隔离)之后,分时系统才开始流行)
cpu遇到i/o切换 可以提升效率
一个进程占用cpu时间过长也会切走 为了实现并发不得已而为之
减少和硬盘打交道 尽可能减少i/o 能从内存拿就从内存拿。
越是困难的事越要立即去做,这样收益才会最大!!!