并发编程-------操作系统的发展
手工操作 —— 穿孔卡片
1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式。此时还没有操作系统的概念。
程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机。
批处理 —— 磁带存储
批处理系统:加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地、成批地处理一个或多个用户的作业(这作业包括程序、数据和命令)。
联机批处理系统
主机与输入机之间增加一个存储设备——磁带,在运行于主机上的监督程序的自动控制下,计算机可自动完成:成批地把输入机上的用户作业读入磁带,依次把磁带上的用户作业读入主机内存并执行并把计算结果向输出机输出。完成了上一批作业后,监督程序又从输入机上输入另一批作业,保存在磁带上,并按上述步骤重复处理。
脱机批处理系统
卫星机:一台不与主机直接相连而专门用于与输入/输出设备打交道的。
多道程序系统
多道程序设计技术
在A程序计算时,I/O空闲, A程序I/O操作时,CPU空闲(B程序也是同样);必须A工作完成后,B才能进入内存中开始工作,两者是串行的,全部完成共需时间=T1+T2。
将A、B两道程序同时存放在内存中,它们在系统的控制下,可相互穿插、交替地在CPU上运行:当A程序因请求I/O操作而放弃CPU时,B程序就可占用CPU运行,这样 CPU不再空闲,而正进行A I/O操作的I/O设备也不空闲,显然,CPU和I/O设备都处于“忙”状态,大大提高了资源的利用率,从而也提高了系统的效率,A、B全部完成所需时间<<T1+T2。
多道批处理系统
分时系统
分时技术:把处理机的运行时间分成很短的时间片,按时间片轮流把处理机分配给各联机作业使用。
实时系统
通用操作系统
操作系统的进一步发展
个人计算机操作系统
网络操作系统
分布式操作系统
操作系统的作用
现代的计算机系统主要是由一个或者多个处理器,主存,硬盘,键盘,鼠标,显示器,打印机,网络接口及其他输入输出设备组成。
一般而言,现代计算机系统是一个复杂的系统。
其一:如果每位应用程序员都必须掌握该系统所有的细节,那就不可能再编写代码了(严重影响了程序员的开发效率:全部掌握这些细节可能需要一万年....)
其二:并且管理这些部件并加以优化使用,是一件极富挑战性的工作,于是,计算安装了一层软件(系统软件),称为操作系统。它的任务就是为用户程序提供一个更好、更简单、更清晰的计算机模型,并管理刚才提到的所有设备。
总结:
程序员无法把所有的硬件操作细节都了解到,管理这些硬件并且加以优化使用是非常繁琐的工作,这个繁琐的工作就是操作系统来干的,有了他,程序员就从这些繁琐的工作中解脱了出来,只需要考虑自己的应用软件的编写就可以了,应用软件直接使用操作系统提供的功能来间接使用硬件。
精简的说的话,操作系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序。操作系统所处的位置如图
细说的话,操作系统应该分成两部分功能:
#一:隐藏了丑陋的硬件调用接口,为应用程序员提供调用硬件资源的更好,更简单,更清晰的模型(系统调用接口)。应用程序员有了这些接口后,就不用再考虑操作硬件的细节,专心开发自己的应用程序即可。 例如:操作系统提供了文件这个抽象概念,对文件的操作就是对磁盘的操作,有了文件我们无需再去考虑关于磁盘的读写控制(比如控制磁盘转动,移动磁头读写数据等细节),#二:将应用程序对硬件资源的竞态请求变得有序化 例如:很多应用软件其实是共享一套计算机硬件,比方说有可能有三个应用程序同时需要申请打印机来输出内容,那么a程序竞争到了打印机资源就打印,然后可能是b竞争到打印机资源,也可能是c,这就导致了无序,打印机可能打印一段a的内容然后又去打印c...,操作系统的一个功能就是将这种无序变得有序。
转载于:https://www.cnblogs.com/zhaoyunlong/p/9014547.html
并发编程-------操作系统的发展相关推荐
- 并发编程中一种经典的分而治之的思想!!
写在前面 在JDK中,提供了这样一种功能:它能够将复杂的逻辑拆分成一个个简单的逻辑来并行执行,待每个并行执行的逻辑执行完成后,再将各个结果进行汇总,得出最终的结果数据.有点像Hadoop中的MapRe ...
- 4. Java并发编程-管程
并发编程已经发展很多年,自分时OS以来就已经存在,相关的理论和技术非常多. 这其中的管程是解决并发编程的关键技术. 什么是管程 指的是管理共享变量以及对共享变量的操作过程,让它们支持并发. 在Java ...
- java实现分而治之_并发编程中一种经典的分而治之的思想!!
写在前面 在JDK中,提供了这样一种功能:它能够将复杂的逻辑拆分成一个个简单的逻辑来并行执行,待每个并行执行的逻辑执行完成后,再将各个结果进行汇总,得出最终的结果数据.有点像Hadoop中的MapRe ...
- 并发编程知识总结,软件开发架构,socket套接字模板,粘包问题,struct解决粘包问题,上传大文件数据,socketserver,关于操作系统的发展史,进程,线程。...
并发编程知识总结 软件开发架构 C/S: client:客户端 server:服务端 优点:占用网络资源少,软件的使用稳定 缺点:服务端更新后,客户端也要更新,需要使用多个软件,需要下载多个客户端 B ...
- Java并发编程题库
文章目录 并发编程三要素? 实现可见性的方法有哪些? 创建线程的有哪些方式? 创建线程的三种方式的对比? Runnable 和 Callable 的区别 Java线程具有五中基本状态 什么是线程池?有 ...
- 2w字 + 40张图带你参透并发编程!
1 并发历史 在计算机最早期的时候,没有操作系统,执行程序只需要一种方式,那就是从头到尾依次执行.任何资源都会为这个程序服务,在计算机使用某些资源时,其他资源就会空闲,就会存在 浪费资源 的情况. ...
- 「BATJ面试系列」并发编程
作为一个合格的Java程序员,必须要对并发编程有一个深层次的了解,在很多互联网企业都会重点考察这一块.可能很多工作3年以上的Java程序员对于这一领域几乎没有太多研究.所以在接下来内容中,我会将并发编 ...
- Java并发编程,无锁CAS与Unsafe类及其并发包Atomic
为什么80%的码农都做不了架构师?>>> 我们曾经详谈过有锁并发的典型代表synchronized关键字,通过该关键字可以控制并发执行过程中有且只有一个线程可以访问共享资源,其 ...
- Java并发编程:进程和线程之由来
2019独角兽企业重金招聘Python工程师标准>>> Java多线程基础:进程和线程之由来 在前面,已经介绍了Java的基础知识,现在我们来讨论一点稍微难一点的问题:Java并发编 ...
- 高并发编程-重新认识Java内存模型(JMM)
文章目录 从CPU到内存模型 内存模型如何确保缓存一致性 并发变成需要解决的问题 (原子性.可见性.有序性) 内存模型需要解决的问题 Java内存模型 JMM的API实现 原子性 synchroniz ...
最新文章
- 成功之路该如何走--工作半年的思考
- 【干货】最早的打车App产品摇摇招车死亡背后的那些经验
- Activemq -- Spring 整合
- [Python人工智能] 二十八.Keras深度学习中文文本分类万字总结(CNN、TextCNN、LSTM、BiLSTM、BiLSTM+Attention)
- Solr学习笔记1(V7.2)
- C++:map和pair
- 1.[数据结构和算法分析笔记]数组
- 【离散数学2】代数系统趣题
- 麻雀算法改进的深度极限学习机DELM的分类 - 附代码
- c语言控制科学计数法指数位数,控制科学计数法的指数位数
- 如何利用SOLIDWORKS BOM生成材料明细表
- 【复盘】如何打造自己的研发能力
- 【壁上观】AMD ZEN将至能战8核i7 Intel慌不慌?
- 【数学建模学习④】飞行管理问题
- 还记得那些老国手吗? 07
- vggface2人脸识别数据集
- GitHub的Java面试项目
- AsyncTask使用
- 一、SpringCloud入门
- cij期刊_核心期刊评价与文献计量学研究CJournalJLX
热门文章
- 博文视点读书节第六日丨产品大咖书单阿里云专家直播预告,更有超值代金券手慢无
- 荐书丨被Dubbo虐过吗,反击开始!——《深入理解Apache Dubbo与实战》
- python语言核心理念是什么_Python 编程语言的核心是什么?
- python for mac下载_Python for Mac
- java4特征_java的四大基本特征
- batchupdate一次多少条合适_中药材半夏地下茎块膨大剂,中药材半夏一次冲施多少肥料合适?...
- 整个电脑键盘被锁住了_轻巧便携:罗技Pebble鹅卵石轻薄鼠标+K380蓝牙键盘上手体验...
- git 拉取远程的dev分支到本地的dev分支,再跟本地的my分支合并
- Android应用层 知识体系
- 判断数据类型的几种办法