操作系统简介

一、为什么要有操作系统

  现代的计算机系统主要是由一个或者多个处理器,主存、磁盘、硬盘、键盘、鼠标、先回去、打印机、网络接口及其他的输入输出设备组成。

  一般而言,现代计算机系统是一个复杂的系统。如果每个应用程序员都必须掌握该系统的所有细节,那就不可能再编写代码类,会严重影响程序员的开发效率。

  并且管理这些部件并加以优化使用,是一件极富挑战性的工作,于是,计算机安装类一层软件(系统软件),称为操作系统。它的任务就是为用户程序提供一个更好、更简单、更清晰的计算机模型,并管理刚才提到的所有设备。

总结:程序员无法把所有的硬件操作细节都了解到,管理这些硬件并且加以优化使用是非常繁琐的工作,这个繁琐的工作就是操作系统来干的,有了他,程序员就从这些繁琐的工作中解脱类出来,之需要考虑自己的应用软件的编写就可以类,应用软件直接使用操作系统提供的功能来间接使用硬件。

二、什么是操作系统:

  简单的来说,操作系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序。

  操作系统位于计算机硬件与应用软件之间,本质也是一个软件。操作系统由操作系统的内核(运行于内核态,管理硬件资源)以及系统调用(运行于用户态,为应用程序员写的应用程序提供系统调用接口)两部分组成,所以,单纯的说操作系统是运行于内核态的,是不准确的。

  操作系统分为两部分功能:①、隐藏类丑陋的硬件调用接口,为应用程序员提供调用硬件资源的更好、更简单、更清晰的模型(系统调用接口)。应用程序员有了这些接口后,就不用再考虑操作系统硬件的细节,专心开发自己的应用程序即可。②、将应用程序对硬件资源的竟态请求变得有序化,例如:很多应用软件其实是共享一套计算机硬件,比方说有可能有三个应用程序同时需要申请打印机来输出内容,那么a程序竞争到了打印机资源就打印,然后可能是b竞争到打印机资源,也可能是c,这就导致类无序,打印机可能打印一段a的内容然后又去打印c...,操作系统的一个功能就是将这种无序变得有序。

三、操作系统的发展史:

  第一代计算机(1940~1955):真空管和穿孔卡片(没有操作系统的概念,所有的程序设计都是直接操控硬件。每一个人独享该计算机一段时间,及用户A输入输出得到结果然后才是用户B,用户C。

  第二代计算机(1955~1965):晶体管和批处理系统(实现类批处理技术,即用户A、B、C等挨个输入,然后计算机批量处理结果,用户A、B、C得到结果)

  第三代计算机(1965~1980):集成电路芯片和多道程序设计(多道技术解决类多路复用,多路复用分为时间上的复用和空间上的复用。空间上的复用:将内存分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序,每个程序间的数据互不影响。时间上的复用:当一个程序在等待I/O时,另一个程序可以使用cpu,如果内存中可以同时存放足够多的作业,则cpu的利用率可以接近100%,类似于我们小学数学所学的统筹方法。空间上的复用最大的问题是:程序之间的内存必须分割,这种分割需要在硬件层面实现,由操作系统控制。如果内存彼此不分割,则一个程序可以访问另外一个程序的内存,会对程序的安全性及稳定性产生影响。

  第四代计算机(1980~至今):个人计算机,实现了分时系统,一个系统,可以用多个终端同时登录。

总结:

操作系统的作用1、为应用程序提供如何使用硬件资源的抽象:例如:操作系统提供了文件这个抽象概念,对文件的操作就是对磁盘的操作,有了文件我们无需再去考虑关于磁盘的读写控制。注意:操作系统提供给应用程序的该抽象是简单、清晰、优雅的。为啥要提供抽象呢?硬件厂商需要为操作系统提供自己硬件的驱动程序(设备驱动,这也是为何我们要使用声卡,就必须安装声卡驱动。。。),厂商为了节省成本或者兼容旧的硬件,他们的驱动程序是复杂且丑陋的。操作系统就是为了隐藏这些丑陋的信息,从而为用户提供更好的接口。2、管理硬件资源:现代的操作系统运行同时多道程序,操作系统的任务是在相互竞争的程序之间有序的控制对处理器、存储器以及其他I/O接口设备的分配。

二、多路复用

  现代计算机或者网络都是多用户的,多个用户不仅共享硬件,而且共享文件,数据库等信息,共享意味着冲突和无序。

操作系统主要用来1、记录哪个程序使用什么资源。2、对资源请求进行分配3、为不同的程序和用户调节互相冲突的资源请求。

我们可以将上述操作系统的功能总结为:处理来自多个程序发起的多个(多个即多路)共享(共享即复用)资源的请求,简称多路复用

多路复用的两种实现方式

1、时间上的复用:当一个资源在时间上复用时,不同的程序或用户轮流使用它,第一个程序获取资源使用结束后,在轮到第二个。。。第三个

例如:只有一个cpu,多个程序需要在该cpu上运行,操作系统先把cpu分给第一个程序,在这个程序运行的足够长的时间(时间长短由操作系统的算法说了算)或者遇到类I/O阻塞,操作系统则把cpu分配给下一个程序,以此类推,直到第一个程序重新被分配到了cpu然后再次运行,由于cpu的切换速度很快,给用户的感觉就是这些程序是同时运行的,或者说是并发的,或者说是伪并行的。至于资源如何实现时间复用,或者说谁应该是下一个要运行的程序,以及一个任务需要运行多长时间,这些都是操作系统的工作。

2、空间上的复用

每个客户都获取类一个大的资源中的一小部分资源,从而减少类等待资源的时间。

例如:多个运行的程序同时进入内存,硬件层面提供保护机制来确保各自的内存是分割开的,且由操作系统控制,这比一个程序独占内存一个一个排队进入内存效率要高的多。

  

原文地址:https://www.cnblogs.com/wangkc/p/7081725.html