现代的计算机系统主要是由一个或者多个处理器,主存,硬盘,键盘,鼠标,显示器,打印机,网络接口及其余输入输出设备组成。
程序员没法把全部的硬件操做细节都了解到,管理这些硬件而且加以优化使用是很是繁琐的工做,这个繁琐的工做就是操做系统来干的,有了他,程序员就从这些繁琐的工做中解脱了出来,只须要考虑本身的应用软件的编写就能够了,应用软件直接使用操做系统提供的功能来间接使用硬件。程序员
定义:操做系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序。算法
操做系统位于计算机硬件与应用软件之间,本质也是一个软件。操做系统由操做系统的内核(运行于内核态,管理硬件资源)以及系统调用(运行于用户态,为应用程序员写的应用程序提供系统调用接口)两部分组成。
安全
上图是操做系统所处的位置,操做系统应该分为两部分功能:网络
为应用程序员提供调用硬件资源的更好,更简单,更清>晰的模型(系统调用接口)。应用程序员有了这些接口后,就不用再考虑操做硬件的细节,专心开发本身的应用程序便可。并发
例如:操做系统提供了文件这个抽象概念,对文件的操做就是对磁盘的操做,有了文件咱们无需再去考虑关于磁盘的读写控制(好比控制磁盘转动,移动磁头读写数据等细节)。优化
例如:不少应用软件实际上是共享一套计算机硬件,比方说有可能有三个应用程序同时须要申请打印机来输出内容,那么a程序竞争到了打印机资源就打印,而后多是b竞争到打印机资源,也多是c,这就致使了无序,打印机可能打印一段a的内容而后又去打印c...,操做系>统的一个功能就是将这种无序变得有序。spa
这个时期的电脑没有操做系统,全部程序设计都是直接操控硬件。程序员拿着他的插件版到机房里,将本身的插件板街道计算机里,这几个小时内他独享整个计算机资源,后面的一批人都得等着
优势:在申请时间段内独享资源,即时调试程序。
缺点:浪费计算机资源,一个时间段只有一我的用。操作系统
程序员在穿孔卡片上写好程序,而后放在读卡机上,收集足够后,这些卡片读进磁带。机房管理人员把磁带装到磁带机上,操做人员装入一个特殊程序,它从磁带读取做业并运行输出到第二盘磁带,看成业全完成,取下输入和输出的磁带,把输出磁带拿到1401机器上进行脱机打印。
1401:I/O操做 7094:计算操做
特色:输入攒一大波、还是顺序计算、输出攒一大波
优势:批处理,节省时间
缺点:1.流程须要人参与控制;2.计算过程仍然是顺序计算--》串行计算
3.程序员等待结果和从新调试的过程都须要等同批次的其余程序都运做完才能够。(影响开发效率)插件
因为第二代计算机有两套机型:设计
7094大型科学计算机:主要用于科学计算和工程计算。(面向字)
1401商用计算机:主要用于银行和保险从事磁带归档和打印服务。(面向字符)
IBM经过system/360系列来同时知足上述要求,低档机与1401至关,高档机与7094至关。
将做业从卡片读入磁盘,因而任什么时候刻当一个做业结束时,操做系统就能将一个做业从磁带读出,装进空出来的内存区域运行,这种技术叫作同时的外部设备联机操做:SPOOLING,该技术同时用于输出。
cpu运行的速度远远快于读取硬盘数据的速度,所以引入了内存,CPU能够很是快速地读取内存的数据。
多道技术:多道指得是多个程序,解决多个程序竞争或共享同一个资源的有序调度问题,解决方式是多路复用,多路复用分时间复用和空间上的复用。
空间上的复用:复用内存空间,内存同时存多个程序
空间复用存在的问题:必须保证物理层面上多个程序的内存是互相隔离的。不然会丧失安全性和稳定性。正是因为内存物理隔离的问题,第三代计算机操做系统依然是批处理
时间上的复用:你们共享cpu的时间,当一个程序在等待I/O时,另外一个程序可使用cpu,若是内存中能够同时存放足够多的做业,则cpu的利用率能够接近100%,相似于小学数学所学的统筹方法。
切换情形:1)会在一个进程遇到io时进行;2)一个进程占用cpu时间过长也会切换,或者说被操做系统夺走cpu的执行权限。
分时操做系统:多个联机终端+多道技术,索引计算机可以为许多用户提供快速的交互式服务,全部的用户都觉得本身独享了计算机资源
UNIX:Ken Thompson开发了一个简易、单用户版本的MULTICS,为了使程序能在任何版本的unix上运行,IEEE提出了一个unix标准,即posix(可移植的操做系统接口Portable Operating System Interface)
minix:教学用系统
Linux:芬兰学生Linus Torvalds基于minix它编写
1.隐藏丑陋复杂的硬件接口,提供良好的抽象接口
2.管理、调度进程,并将多个进程对硬件的竞争变得有序。
1.产生的背景:针对单核,实现并发(看起来多个进程像在同时运行,注意和并行的区别) 如今的主机通常是多核(几个核最多能够几个并行),那么每一个核都会利用多道技术。 有4个cpu,运行于cpu1的某个程序遇到io阻塞,会等到io结束再从新调度,会被调度到4个cpu中的任意一个,具体由操做系统调度算法决定。 2.空间上的复用:内存中同时有多道程序 3.时间上的复用:复用一个cpu的时间片 注意:遇到io切,占用cpu时间过长也切,核心在于切以前将进程的状态保存下来,这样才能保证下次切换回来时,能基于上次切走的位置继续运行