day13 多道技术 操作系统发展史
今日内容概述
1.多道技术
2.操作系统发展史
今日内容详细
1.多道技术
- 为什么会产生多道技术
CPU在执行一个任务的过程中,如果要操作硬盘,就会发送操作硬盘的指令,指令发出后,硬盘上的机械手臂滑动读取数据到内存中,这段时间CPU会等待,时间可能很短,但对于CPU来说时间已经很长,如果我们让CPU在这段时间内切换去做其他的任务,这样就可以充分利用CPU了,这就是多道技术产生的技术背景.
- 什么是多道技术
多道技术(操作系统的技术):多道技术中的多道指的是多个程序,多道技术的出现是为了解决多个程序竞争或者说共享同一个资源(比如cpu),的有序调度问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用.
空间上的复用:将内存分为几部分,每个部分放入一个程序,这样同一时间内存就有了多道程序,程序运行前必须先加载到内存中.(进程与进程之间内存空间彼此隔离)
时间上的复用:一个程序使用I/O时,另一个程序可以使用cpu,不同程序或用户可以轮流使用,通俗的讲就是cpu在多个不同的程序之间来回切换.
多道技术的核心是切换,切换的时机:
1.当一个任务遇到IO时,一定会切换==>提升效率
2.一个任务没有遇到IO但是占用CPU时间过长,也要切换==>此时效率降低
ps:多个进程的内存空间是互相隔离的,而且是物理隔离.
- 补充:并发,串行和并行
串行:多个任务是一个运行完毕后再运行下一个
并发:多个任务看起来是同时进行的(并不是真正的同时进行的)
并行:并行是真正意义上的同时运行,只有多个cpu才能实现并行.
2.操作系统发展史
- 什么是操作系统
位于应用软件和硬件设备之间,本质是一个软件.
- 操作系统的核心作用:
1.为用户屏蔽了复杂繁琐的硬件接口;为应用程序提供了清晰易用的系统接口
2.将应用程序对硬件资源的竞争变得有序
- 操作系统与应用程序的区别:
1.操作系统是受保护的,无法被用户修改
2.大型:仅内核代码量达上百万行
3.长寿,一旦完成,不会重写,只会有所改进.
- 来聊聊操作系统的发展史:
第一代计算机(1940-1945):真空管和穿孔卡片
# 特点:
没有操作系统的概念
所有的程序设计都是直接操控硬件
# 工作过程:
程序员在墙上的机时表预约一段时间,然后程序员拿着他的插件版到机房里,将自己的插件板街道计算机里,这几个小时内他独享整个计算机资源,后面的一批人都得等着(两万多个真空管经常会有被烧坏的情况出现).
后来出现了穿孔卡片,可以将程序写在卡片上,然后读入机而不用插件板.
# 优点:
程序员在申请的时间段内独享整个资源,可以即时地调试自己的程序(有bug可以立刻处理).
# 缺点:
浪费计算机资源,一个时间段内只有一个人用.
第二代计算机(1955-1965):晶体管和批处理系统
# 第二代如何解决第一代的问题/缺点:
1.把一堆人的输入攒成一大波输入,
2.然后顺序计算(这是有问题的,但是第二代计算也没有解决)
3.把一堆人的输出攒成一大波输出
# 现代操作系统的前身:
# 优点:批处理,节省了机时
# 缺点:
1.整个流程需要人参与控制,将磁带搬来搬去.
2.计算的过程仍然是顺序计算-》串行
3.程序员原来独享一段时间的计算机,现在必须被统一规划到一批作业中,等待结果和重新调试的过程都需要等同批次的其他程序都运作完才可以(这极大的影响了程序的开发效率,无法及时调试程序)
第三代计算机(1965-1980):集成电路芯片和多道程序设计
第三代计算机的操作系统广泛应用了第二代计算机的操作系统没有的关键技术:多道技术
# 多道技术:多道技术(操作系统的技术):多道技术中的多道指的是多个程序,多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu),的有序调度问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用.
# 空间上的复用:将内存分为几部分,每个部分放入一个程序,这样同一时间内存就有了多道程序,程序运行前必须先加载到内存中.(进程与进程之间内存空间彼此隔离)
# 时间上的复用:一个程序使用I/O时,另一个程序可以使用cpu,不同程序或用户可以轮流使用,通俗的讲就是cpu在多个不同的程序之间来回切换.
# 多道技术的核心是切换,切换的时机:
1.当一个任务遇到IO时,一定会切换==>提升效率
2.一个任务没有遇到IO但是占用CPU时间过长,也要切换==>此时效率降低
ps:多个进程的内存空间是互相隔离的,而且是物理隔离.
# 弊端:
1.安全性差,比如你的qq程序可以访问操作系统的内存,这意味着你的qq可以拿到操作系统的所有权限.
2.稳定性差,某个程序崩溃时有可能把别的程序的内存也给回收了,比方说把操作系统的内存给回收了,则操作系统崩溃.
第四代计算机(1980-至今):个人计算机
第四代也就是我们常见的操作系统,大多是具备图形化界面的,例如:Windows,macOS ,CentOS等
由于采用了IC设计,计算机的体积下降,性能增长,并且成本以及可以被普通消费者接受,而第三代操作系统大都需要进行专业的学习才能使用,于是各个大佬公司开始开发那种不需要专业学习也可以快速上手的操作系统,即上述操作系统!
它们都是用了GUI 图形化用户接口,用户只需要通过鼠标点击拖拽界面上的元素即可完成大部分操作.