【操做系统】 什么是操做系统

简介

说到操做系统,相信大部分人都不陌生,Windows,Linux,都是操做系统。程序员

在信息化时代,软件被称为计算机系统的灵魂,试想一下你的计算机没有软件,那么这个计算机只是一个空壳,没有任何意义。
操做系统就是软件的核心部分。
在这里插入图片描述
计算机系统能够从上而下粗分四个部分:
硬件,操做系统,应用程序,用户
操做系统管理各类计算机硬件,为应用程序提供基础,并充当计算机硬件与用户之间的中介。起到了承上启下的做用。web

在这里插入图片描述
经过操做系统
咱们能够将CPU转换成进程,磁盘转换为文件,内存转换为地址空间进行处理。
在这里插入图片描述算法

操做系统定义

操做系统的定义为:
控制和管理整个计算机系统的硬件与软件资源,
合理地组织,调度计算的工做与资源的分配
进而为用户和其余软件提供方便接口与环境的程序集合
shell

  • 操做系统是一个控制程序
    o 一个系统软件
    o 控制程序执行以防止错误和计算机的不当使用
    o 执行用户程序和给用户程序提供各类服务
    o 使计算机系统方便使用
  • 操做系统是一个资源分配器
    o 应用程序与硬件之间的中间层
    o 管理各类计算机资源(包括硬件外设等)
    o 有效解决冲突请求并确保资源的公平使用
    o 提供高效的手段使用计算机硬件

Shell&Kernel概念

GUI图形化标识:是属于Shell外壳部分。
字符命令也是shell部分,这两个接口部分是操做系统对外提供的一种可见的服务。
Linux, Window, Android 的界面属于Shell,而不是内核(Kernel),OS更注重内部kernel部分,咱们研究操做系统通常是站在内核的角度看待问题。编程

特征

并发

并发是指计算机系统中同时存在多个运行的程序。 
并发在宏观上是同时运行,微观上是交替运行

并发:一段时间内有多个程序能够运行
并行:一个时刻内有多个程序能够运行安全

共享

资源共享便是共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
共享可分为两种
- 互斥共享方式
	系统中某些资源如打印机,磁带机,虽然可提供给多个进程使用,可是为了使打印或记录结果不致形成混淆,规定在一段时间内只容许一个进程访问资源。
	在一段时间内只容许一个进程访问的资源称为临界资源或独占资源。
	计算机系统中的大多数物理设备,以及某些软件中所用的栈,变量,表格,都属于临界资源,它们都要求被互斥地共享
	
- 同时访问方式
	系统中还有另外一类资源,容许在一段时间内由多个进程 “同时”(并发)对它们进行访问。

并发和共享是操做系统中最基本的特征,这二者之间又是互为存在条件的:数据结构

  1. 资源共享以程序的并发为条件,若系统不容许程序并发执行,也就不存在资源共享
  2. 若系统不能对资源共享实施有效的管理,也必将影响到程序的并发执行,甚至根本没法并发执行。

虚拟

虚拟是指把一个物理上的实体变为若干个逻辑上的对应物
物理实体是实的,而逻辑上的对应物是虚的,只是用户感受上的事物。
用于实现虚拟的技术,称为虚拟技术
操做系统中利用了多种虚拟技术,分别用来实现 虚拟处理器,虚拟内存,虚拟外部设备等。

虚拟处理器技术中,是经过多道程序设计技术,让多道程序并发执行的方法,来分时使用一个处理器

在这里插入图片描述
如上图,操做系统将CPU虚拟为进程,磁盘虚拟为文件,内存虚拟为地址空间。
经过虚拟技术,可让每个终端用户都感受有一台电脑来为他单独服务。并发

异步

多道程序环境下,容许多个程序并发执行,但因为**资源有限**,进程的执行并非一路到底。
而是走走停停,以不可预知的速度向前推动,这就是进程的异步性。
即进程是以人们不可预知的速度向前推动,这就是进程的异步性。
可是只要在OS中配置有完善的进程同步机制,且运行环境相同,则做业即使通过屡次运行,也都会得到彻底相同的结果。

操做系统主要功能

有一个很形象的比喻,用户是雇主,操做系统是工人,计算机是机器
工人操做机器,就是操做系统对计算机资源的管理
同时工人会收到雇主的命令,这就是接口
在这里插入图片描述异步

管理计算机系统资源

在这里插入图片描述

处理机管理功能

传统的多道程序系统中,处理机的分配和运行都是以进程为基本单位的,
于是对处理机的管理能够归结为对进程的管理,处理机管理的主要功能有:
①建立和撤销进程
②对进程的运行进行协调
③实现进程之间的信息转换
④按照必定算法把处理机分配给进程
  • 进程控制
  • 进程同步
  • 进程通讯
  • 调度
    • 做业调度
    • 进程调度

存储器管理功能

存储器管理的主要任务,是为多道程序的运行提供提供良好的环境,提升存储器的利用率,方便用户使用,并能从逻辑上扩充内存。
为此存储器管理应具备svg

  • 内存分配
    内存分配的主要任务有
    (1) 为每道程序分配内存空间
    (2) 提升存储器的利用率,尽可能减小不可用的内存空间(碎片)
    (3)容许正在运行的程序申请附加的内存空间,以适应程序和数据动态增长的须要

    OS在实现内存分配时,可采起静态和动态两种方式
    静态分配方式
            每一个做业的内存空间在做业装入时肯定,做业装入后不容许再申请新的内存空间,也不容许做业再内存中"移动"
    动态分配方式
            每一个做业的所要求的基本内存空间在在做业装入时肯定,但容许做业在运行时继续申请新的附加内存空间,也容许做业在内存中"移动"

  • 内存保护
    内存保护的任务是:
    (1) 确保每道用户程序都仅在本身的内存空间内运行,彼此不干扰
    (2) 毫不容许用户程序访问操做系统的程序和数据,也不容许用户程序转移到非共享的其它用户程序中去执行。

  • 地址映射
    可以将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址。该功能须要在硬件的支持下完成。

  • 内存扩充
    内存扩充并不是从物理上去扩大内存的容量,而是借助虚拟存储技术,从逻辑上扩充内存容量,使用户感受到的内存容量比世纪内存容量大的多,这样既知足用户需求,又改善了系统的性能。
    为了能在逻辑上扩充内存,系统必须设置内存扩充机制,用于实现下列功能:
    (1) 请求调入功能,程序运行过程当中,若仍须要内存,可向OS发出请求调入内存。
    系统容许在仅装入部分用户程序和数据的状况下,便能启动该程序运行,在程序运行过程当中,若发现要继续运行时所须要的程序和数据还没有装入内存,可向OS发出请求,OS从磁盘中将所需部分调入内存,以便继续运行
    (2)置换功能,程序须要内存可是内存不足时,系统将内存中暂时用不到的程序和数据调至硬盘上,腾出内存空间将所需调入的部分装入内存。

设备管理功能

设备管理的主要任务以下:
        (1) 完成用户进程提出的I/O请求,为用户进程分配所需的I/O设备,并完成指定的I/O 操做
        (2) 提升CPU和I/O 设备的利用率,提升I/O 速度,方便用户使用I/O设备。

为完成上述任务,设备管理应具备以下功能

  1. 缓冲管理
  2. 设备分配
  3. 设备处理

文件管理功能

文件管理的主要任务:
      对用户和系统文件进行管理以方便用户使用,并保证文件的安全性。
所以,文件管理应具备以下功能:

  1. 文件存储空间的管理
  2. 目录管理
  3. 文件的读/写管理与保护

接口

为方便用户使用计算机,操做系统提供了用户接口,操做系统提供的接口主要分为两类

  • 命令接口 用户利用这些操做命令来组织和控制做业的执行
  • 程序接口 编程人员可使用它们来请求操做系统服务

用户能够经过命令接口系统调用来使用计算机

操做系统用做扩充机器

没有任何软件支持的计算机称为裸机,裸机仅构成计算机系统的物质基础,而实际呈如今用户面前的计算机系统是通过若干层软件改造的计算机。
裸机在最里层,它的外面是操做系统,由操做系统提供的资源管理功能和方便用户的各类服务功能,将裸机改形成功能更强,使用更方便的机器,一般把覆盖了软件的机器称为扩充机器,又称为虚拟机

操做系统的发展与历史

手工操做阶段

手工操做阶段尚未出现操做系统,计算机上算题的全部工做都须要人工干预,人力有时尽,只依靠人工确定不行。
手工操做阶段有两个突出缺点:
① 用户独占全机
②CPU等待手工操做。

惟一的解决办法就是用告诉的机器代替相对较慢的手工操做来对做业进行控制。

批处理阶段

为解决人机矛盾及CPU和I/O设置之间速度不匹配的矛盾,出现了批处理系统。

单道批处理系统

系统对做业的处理是成批进行的,但内存中使用保持一道做业。
该系统是在解决人机矛盾及CPU和I/O设置之间速度不匹配的矛盾中造成的。
主要特征:

  1. 自动行
    顺利的状况下,磁带上的一批做业能自动地逐个依次运行,而无需人工干预。
  2. 顺序性
    磁带上的各道做业顺序地进入内存,先调入内存的做业先完成
  3. 单道行
    内存中仅有一道程序运行,当该程序完成或发生异常时,才换入其后继程序进入内存。

可是由于每次主机内存中仅放入以到做业,当这个做业在运行期间发出输入/输出请求时,高速的CPU就处于等待低速的I/O完成状态。

为进一步提升资源的利用率和系统的吞吐量,引入了多道程序技术

多道批处理系统

多道程序设计技术容许多个程序同时进入内存并运行。
即把多个程序放入内存,并容许它们在CPU中交替运行,它们共享系统中的各类硬/软件资源。
当一道程序因I/O请求而暂停运行时,CPU就转去运行另外一道程序。

多道程序设计的特色有:
    (1)多道:计算机内存中同时放入多道相互独立的程序
    (2) 宏观上并行:同时进入系统的多道程序都处于运行过程当中,即它们前后开始了各自的运行,但都未运行完毕
    (3)微观上串行:内存中的多道程序轮流占有CPU,交替执行

多道程序设计技术的实现须要解决下列问题:
    (1):如何分配处理器?
    (2):多道程序的内存分配问题
    (3):I/O设备如何分配
    (4):如何组织和存放大量的程序和数据,以便于用户使用和保证其安全性与一致性。

在批处理系统中采用多道程序设计技术,就造成了多道批处理操做系统
多道批处理系统把用户提交的做业成批送入计算机内存,而后由做业调度程序自动地选择做业运行

优势
    ① 资源利用率高
    ② 系统吞吐量大

缺点
    ①不提供人机交互能力,用户既不能了解本身程序的运行状况,也不能控制计算机
    ② 平均周转时间长,因为做业要排队依次进行处理,于是做业的周转时间较长。

分时操做系统

在操做系统中采用分时技术就造成了分时系统

分时技术就是把处理器的运行时间分红很短的时间片,按时间片轮流把处理器分配给个联机做业使用,若某个做业在分配给它的时间片内不能完成其计算,则该做业暂时中止运行,把处理器让给其余做业使用,等待下一轮再继续运行。因为计算机速度很快,做业运行轮转得很快,给每一个用户得感受好像是本身独占一台计算机。

分时操做系统是多个用户经过终端同时共享一台主机,这些终端链接在主机上,用户能够同时与主机进行交互操做而互不干扰
因此实现分时系统最关键的问题是如何使用户能与本身的做业进行交互,即当用户在本身的终端上键入命令时 ,系统可以及时接收并及时处理该命令,在将结果返回给用户。

分时系统也是支持多道程序设计的系统,但不一样于多道批处理系统。

  • 多道批处理系统是实现做业自动控制而无需人工干预。
  • 分时系统是实现人机交互的系统。

分时系统的主要特征
    (1) 同时性
          也称多路性,指容许多个终端用户同时使用一台计算机,
          即一台计算机与多个终端用户相连,终端上的这些用户能够同时或基本同时使用计算机
    (2) 交互性
          用户可以经过终端采用人机对话的方式直接控制程序运行,与同程序进行交互
    (3) 独立性
          系统中多个用户能够彼此独立地进行操做,互不干扰
          单个用户感受不到别人也在使用这台计算机,好像只有本身在单独使用这台计算机
    (4) 及时性
          用户请求能在很短地时间内得到相应
          分时系统采用时间片轮转方式使一台计算机同时为多个终端进行服务。

可是分时操做系统不能优先处理紧急任务

实时操做系统

实时系统是指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制全部实时任务协调一致地运行

实时系统最主要的特征:将时间做为关键参数,它必须对接受到的某些信号作出“及时”或“实时”地反应。

根据时间限制能够发呢为两种状况:

  • 硬实时系统
    若是某个动做必须绝对地在规定时间范围内发生,称为硬实时系统。
  • 软实时系统
    若是能接受偶尔违反时间规定,且不会引发人恶化永久性地损害,称为软实时系统。

实时系统的主要特色

  • 及时性
  • 可靠性

操做系统的运行环境

计算机系统中,一般CPU执行两种不一样性质的程序

  • 操做系统内核程序
  • 用户自编程序或系统外层的应用程序

为何会这样呢?
操做系统内核程序就至关于VIP,对于VIP用户怎么会没有特权呢?
对于操做系统而言,操做系统内核程序用户自编程序或系统外层的应用程序,前者管理后者,天然要拥有一些特权,执行一些特权指令
特权指令:计算机中不容许用户直接使用的指令,如
    ①I/O指令
    ②置中断指令
    ③存取用于内存保护的寄存器
    ④ 送程序状态字到程序状态字寄存器
    ⑤······

操做系统中,划分了用户态(目态)核心态(管态),以严格区分两类程序,

内核

现代操做系统的各项功能通常分别被设置在不一样的层次上,
一些与硬件关联比较紧密的模块,诸如时钟管理,中断处理,设备驱动等处于最底层。
其次是运行频率较高的程序,如进程管理,存储器管理,设备管理等。
这两部分构成了操做系统的内核,这部份内容的指令操做工做在核心态

内核是计算机上配置的底层软件,是计算机功能的延伸,不一样系统对内核的定义稍有区别,大多数操做系统内核包括四个方面内容

时钟管理

在计算机的各类部件中,时钟是最关键的设备。
时钟的功能:

  • 计时
  • 经过时钟中断的管理,能够实现进程的切换。
    好比在分时系统中,采用时间片轮转调度的实现
    实时系统中,按截止时间控制运行的实现
    批处理系统中,经过时钟管理来衡量一个做业的运行程度。

中断机制

中断机制中,只有一小部分功能属于内核,负责保护和恢复中断现场的信息,转移控制权到相关的处理程序。
这样能够减小中断的处理时间,提升系统的并行处理能力。

原语

一般把具备这些特色的程序称为原语
     处于操做系统的最底层,是最接近硬件的部分
     程序运行具备原子性,操做只能一鼓作气(要么执行完,要么不执行)
     这些程序运行时间短,调用频繁

定义原语的直接方法是关闭中断,让它的全部动做不可分割地进行完再打开中断。
系统中的设备驱动,CPU切换,进程通讯等功能中的部分操做均可以定义为原语,使他们成为内核的组成部分。

系统控制的数据结构及处理

系统中用来登记状态信息的数据结构有不少,
好比做业控制块,
进程控制块,
设备控制块,
各种链表,
消息队列,
缓冲区,
空闲区登记表,
内存分配表等。

为了实现有效的管理,系统须要一些基本操做,常见操做有如下三种:
    1) 进程管理:进程状态管理,进程调度和分派,建立与撤销进程控制块等。
    2) 存储器管理:存储器的空间分配和回收,内存信息保护程序,代码对换程序等。
    3) 设备管理:缓冲区管理,设备分配和回收等

从上述内容能够知道:核心态指令实际上包括系统调用类指令和一些针对始终,中断和原语的操做指令

中断和异常

中断,也称外中断,指来自CPU执行指令之外的事件的发生,
如设备发出的I/O结束中断,表示设备输入/输出处理已经完成,但愿处理机可以向设备发下一个输入/输出请求,同时让完成输入/输出后的程序继续运行。
时钟中断,表示一个固定的时间片已到,让处理机处理计时,启动定时运行的任务等。
这一类中断一般是与当前程序无关的事件,即他们与当前处理机运行的程序无关。

异常,也称内中断,例外,或陷入,指来自CPU执行指令内部的事件。
如程序的非法操做码,地址越界,算数溢出,虚存系统的缺页以及专门的陷入指令等引发的事件。
对异常的处理通常要依赖于当前程序的运行现场,并且异常不能被屏蔽,一旦出现应当即处理

系统调用

系统调用就是用户在程序中调用操做系统所提供的一些子功能,系统调用能够被看作特殊的公共子程序。
系统中的各类共享资源都由操做系通通一掌管,所以在用户程序中,凡是与资源有关的操做(如I/O传输,存储分配,管理文件等),都必须经过系统调用方式向操做系统提出服务请求,并由操做系统代为完成。
系统调用按功能大体能够分为以下几类:

  • 设备管理。
  • 文件管理
  • 进程控制
  • 进程通讯
  • 内存管理

系统调用运行在系统的核心态。

容易混淆的概念

并行性与并发性区别与联系

并发性和并行性是既类似又有区别的两个概念。

  • 并行性是指两个或多个事件在同一时刻发生
  • 并发性是指两个或多个事件在同一时间间隔内发生.

多道程序环境下,并发性是指一段时间内,宏观上有多个程序在同时运行。但在单处理器系统中,每时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替运行。
若计算机中有多个处理器,这些并发执行的程序便被分配到多个处理器中,实现并行执行,即利用每一个处理器来处理一个可并发执行的程序。

特权指令与非特权指令

特权指令是指有特殊权限的指令,如:
①清内存
②置时钟
③分配系统资源
④ 修改虚存的段表或者页表
⑤修改用户的访问权限
⑥······

特权指令必须在核心态执行,从用户态转换为核心态的惟一途径是中断或者异常

访管指令与访管中断

访管指令是在用户态下执行的指令,在用户程序中,因要求操做系统提供服务而有意思地实用访管指令,从而产生一个中断事件(自愿中断),将操做系统转换为核心态,称为访管中断。
访管中断由访管指令产生,程序员实用访管指令向操做系统请求服务。