1.操作系统概述?为什么引入。概念。功能作用。特征。目标与推动力。
2.操作系统发展与分类
3.运行机制与体系结构
4.中断和异常
5.系统调用

操作系统的概述

1.为什么需要操作系统?
早期无OS时代,对计算机操作是直接操作计算机的硬件系统,程序员将需求制作成纸带输入到计算机中,启动程序,由计算机计算出结果再返回给程序员。这样人工直接操作计算机硬件系统有以下缺点,(1)需要程序员使用计算机可以识别的机器代码与计算机交互。(2)在使用计算机的过程中,由用户独占全机资源,直到使用完后才由下个用户使用。(3)用户在进行装带,卸带等人工操作时,CPU及内存资源是空闲的,降低了计算机资源的利用率。及所谓的人机矛盾。这样使用计算机相当不方便,没有效率。
计算机系统是一个复杂的系统,在未引入OS之前,需要用户掌握系统的所有细节来编码使用这些资源。为此我们在计算机安装了一层软件,称为操作系统,来管理所有这些部件并加以优化使用,任务是为用户程序提供一个更好、更简单、更清晰的计算机模型,并管理这些设备,及计算机硬件系统。如常见的windows、Linux、FreeBSD或Mac OS X等。用户与之交互的程序,基于文本是shell,而基于图标的则称为图标的则称为图形用户界面GUI,实际上并不是os的一部分,尽管这些程序使用os来完成工作。

计算机系统的底层硬件,硬件的顶部是软件。多数计算机有两种运行模式:内核态和用户态。软件中最基础的部分是操作系统,它运行在内核态(管态、核心态)。在这个模式中,os具有对所有硬件的完全访问权,可以执行机器能够运行的任何指令。软件的其余部分运行在用户态下。在用户态下,只使用了机器指令中的一个子集。特别地,那么会影响机器的控制或可进行I/O操作的指令,在用户态中程序里禁止的。

用户接口程序,shell或者GUI,处于用户态程序中最低层次,允许用户运行其他程序,诸如web浏览器、电子邮件阅读器或音乐播放器等。这些程序也大量使用os。

os运行在裸机之上,为所有其他软件提供基础的运行环境。

os和普通软件(用户态)之间的主要区别是,如果用户不喜欢某个特定的电子邮件阅读器,可以自由选择另一个,或者选择自己写一个,但是他不能自行写一个属于os一部分的时钟中断处理程序。这个程序硬件保护,防止用户试图对其进行修改。

有时在嵌入式系统(该系统没有内核态)或解释系统(如基于java的操作系统,采用解释方式而非硬件方式区分组件)中,用户态和内核态的区别是模糊的。

在许多系统中,一些在用户态下运行的程序协助操作系统完成特权功能。如,经常有一个程序供用户修改其口令之用。

几个概念
计算机系统的资源:硬件资源和软件资源。
硬件资源:中央处理器、内存储器,外存储器以及各种输入/输出设备。软件资源是指各种程序以及有关数据和文档。
软件:系统软件和应用软件。系统软件如操作系统。语言处理系统,数据库管理程序,诊断程序与系统工具。应用软件包括通用应用软件和定制应用软件.(注:如何区分系统软件与应用软件)系统软件卸载了无法使用计算机资源。
OS
计算机系统的最重要的一种系统软件,统一管理计算机系统的资源,并控制程序的执行,是方便用户、合理组织工作流程的程序集合。

2.什么是操作系统?
OS是指控制和管理计算机系统的硬件和软件资源,并合理地组织调度计算机地工作和资源分配(中间往两边),以提供给用户和其他软件方便的接口和环境(对上),是计算机系统中最基本的系统软件(对下
os模糊定义为一种运行在内核态的软件。os执行两个基本独立的任务,为应用程序员(应用程序)提供一个资源集的清晰抽象,并管理这些硬件资源,而不仅仅是一堆硬件。

作为扩展机器的os(从下往上)
在机器语言一级上,多数计算机的体系结构是很原始的,而且编程是很困难的,尤其在输入/输出操作上。对硬件的指令操作太过复杂。os实现对硬件资源的抽象,其任务是创建好的抽象,并实现和管理它所创建的抽象对象。即os的一个主要任务是隐藏硬件,呈现给程序(以及程序员)良好、清晰、优雅、一致的抽象。硬件是丑陋的,os将丑陋变为美丽。
一般,os的实际客户是通过程序员的应用程序,它们直接与os及其抽象打交道。相反,最终用户与用户接口提供的抽象打交道,或者是命令行shell或者是图形接口。如window的图形接口与命令行接口,为不同用户接口提供的抽象。

作为资源管理者的os(从上往下)
把os看作是向应用程序提供基本抽象的概念,是一种自顶向下的观点。另一种按照自底向上的观点,os则用来管理一个复杂系统封的各个部分。对硬件系统的各个设备,os的任务是在相互竞争的程序之间有序地控制对处理器、存储器以及其他I/O接口设备的分配
在os中运行的多道程序。程序的顺序执行,使得多道程序无法运行,os使得多道程序能够正确有效的并发执行。
多个用户请求一个计算机资源。用户间可能会存在干扰,os记录哪个程序在使用什么资源,对资源请求进行分配,评估使用代价,为不同的程序和用户调解互相冲突的资源请求。资源管理包括多路复用资源,空间复用与时间复用。

3.操作系统的作用功能?
a.os作为用户与计算机硬件系统之间的接口(面向用户)
os处于用户与计算机硬件系统之间,用户通过os来使用计算机系统。用户在os帮助下,能够方便、快捷、安全、可靠地操纵计算机硬件和运行自己的程序。os是一个系统软件,因而这种接口是软件接口。用户可以通过三种方式使用计算机:
命令接口:允许用户直接使用。命令方式,os提供一组联机命令接口,允许用户通过键盘输入有关命令来取得os的服务,并控制相关程序的运行。(黑窗输入命令)。
       联机命令接口(黑窗接口):用户说一句,系统做一句,是交互式命令接口。
       脱机命令接口(.bat文件):用户说一堆,操作系统做一堆,是批处理命令接口,类似于脚本文件
程序接口:允许通过用户程序间接使用。(程序接口=》系统调用)。系统调用方式,os提供一组系统调用,用户可在自己的应 用程序中通过相应的系统调用,来实现os的通信,并取得它的服务。(代码调用命令)
GUI:图形用户接口,图形、窗口方式,允许用户通过屏幕上的窗口和图标来实现与os的通信,并取得它的服务。(windows桌面使用)。
目标:方便用户使用

b.os作为计算机系统资源的管理者(中间向两边)
计算机系统中有各种硬件和软件资源。可分为四类:处理器、存储器、I/O设备及信息(数据和程序)。os的主要功能是对这些资源进行有效的管理。处理机管理,存储器管理,I/O设备管理,文件管理。(os的功能概述)
注:计算机系统的各种资源直接面向用户,无法得到有效的使用。os通过有效的管理计算机的各种资源,能够实现计算机系统与用户的交互,方便,有效。
目标:安全、高效

c.os实现了对计算机资源的抽象(面向硬件)
对于一个完全无软件的计算机系统(裸机),它向用户提供的是实际硬件接口(物理接口),用户必须对物理接口实现细节有充分的了解,并利用机器指令进行编程,非常难以使用。为了方便用户使用,如I/O设备,在裸机上覆盖一层I/O设备管理软件,由它来实现对I/O设备操作的细节,并向上提供一组I/O操作命令,如read和write命令,用户利用它来进行数据输入或输出无需关心I/O是如何实现的。在裸机上铺设的I/O软件隐藏了对I/O设备操作的具体细节,向上提供了一组抽象的I/O设备。
我们把这种覆盖了这种软件的机器称为扩充机器或虚机器。它向用户(进程)提供了一个对硬件操作的抽象模型,用户可利用抽象模型提供的接口使用计算机,无需了解物理接口实现的细节,从而使用户更容易地使用计算机硬件资源。由该层软件实现对计算机硬件操作的第一个层次的抽象。
为了方便用户使用文件系统,人们又在第一层软件上再覆盖上一层用户文件的管理软件,同样由它来实现对文件操作的细节,并向上提供一组对文件进行存取操作的命令。该层软件实现了对硬件资源的第二个层次抽象。再覆盖一层面向用户的窗口软件后,用户便可在窗口环境下方便地使用计算机。
由此,os是铺设在计算机硬件系统上的多层系统软件。隐藏对硬件操作的细节,实现对计算机硬件操作的多个层次的抽象

4.操作系统的目标
a.有效性
:(1)提高系统资源利用率。未配置os的计算机系统,各种资源如cpu、I/O设备等,会经常处于空闲状态而得不到充分利用;内存及外存中所存放的数据太少或者无序而浪费大量的存储空间。配置os后,cpu和I/O设备由于能保持忙碌状态而得到有效的利用,也可使内存和外存存放的数据因有序而节省内存空间。
(2)提高系统的吞吐量。os通过合理的组织计算机的工作流程,进一步改善资源利用率,加速程序运行,缩短程序的运行周期,从而提高系统的吞吐量。
注:效率,效果,效用。未配置os的计算机系统,由于资源得不到有效的管理,合理的调度,使得资源利用率低下。达不到效果。布置了os的计算机系统,能够让计算机合理的处理任务,从而可以提高工作效率,使得计算机系统能够处理更多的任务,即提高系统的吞吐量。

b.方便性:配置os后可使计算机系统更方便使用。计算机只能识别0和1这样的机器代码,未配置os的计算机系统,用户要在计算机硬件上运行自己所编的程序,就必须使用机器语言书写程序;想要输入数据或打印数据,也都必须用机器语言。配置os后,用户可以用过os所提供的各种命令来使用计算机系统。如编译命令可以方便把用户用高级语言书写的程序翻译成机器代码。
注:未配置os的计算机系统,用户只能通过机器代码与计算机系统进行交互。配置os后,用户可以用os提供的各种命令来与计算机系统进行交互。

c.可扩充性:计算机技术的发展,计算机硬件和体系结构的发展,互联网的发展,对os提出更高的要求,要求os具有很好的扩充性能适应这些发展。现代os采用新的os结构,如微内核结构和客户服务器模式,以便于方便地增加新的功能和模块,并能修改老的功能和模块。

d.开放性:由于计算机网络的发展,为使来自不同厂家的计算机和设备能通过网络加以集成化,能正确、有效的协同工作,实现应用的可移植性和互操作性,要求os必须提供统一的开放环境。
即系统能遵循世界标准规范。遵循国际标准所开发的硬件和软件,均能彼此兼容,方便地实现互连。

推动os发展的主要动力:a.不断提高计算机资源的利用率;b.方便用户;c.器件的不断更新换代;d.计算机体系结构的不断发展

为此,需要设计一套能够管理计算机硬件资源的系统,能够使我们方便有效的与计算机进行交互。那么在os的设计过程中,os应满足以下目标:
(1)与计算机交互需要使用机器语言,有了os,可以利用os提供的各种命令使用计算机系统。我们通过命令告诉os要干什么,由os去执行,非常方便。及os的方便性
(2)无os的计算机系统,只能一次处理一项任务,且在用户使用一项资源时其他资源处理空闲状态。部署了os的计算机系统,可以处理多个任务,os通过合理调度,使得各个资源能够合理有效的处理忙碌状态而得到充分利用。既提高了系统资源的利用率,又能处理多个任务提高系统的吞吐量。及os的有效性
(3)同时,OS应能随着计算机技术的发展而适应。及os的可扩充性
(4)网络的发展,要求计算机与计算机能够更加开放,应用的移植与互相操作。及os的开放性
os的目标是推动os发展的主要动力。

5.操作系统的基本特性
并发、共享(最基本的特征,二者互为存在条件)、虚拟、异步
a.并发性
并发:
两个或多个事件在同一时间间隔内发生,宏观上同时发生微观上是交替发生的。并行:两个或多个事件在同一时刻同时发生
操作系统的并发性指的是计算机系统中同时存在着多个运行着的程序
一个单核处理机(cpu)同一时刻只能执行一个程序,因此操作系统会负责协调多个程序交替执行(这些程序微观上是交替执行的,但是宏观上看起来就像在同时执行)。多核处理器并行执行程序

b.共享性
即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。

互斥共享方式:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源,使用完后才允                           许其他进程使用.(临界资源)
                       
 qq和微信在一个时间段内只允许一个进程使用
同时访问方式:系统中的某些资源,允许一个时间段内多个进程“同时”(交替使用)对它们进行访问。
                         同时用qq和微信给朋友发送某部电影,宏观上同时读取发送文件。实际上两个进程并发允许,轮流访问硬盘资                               源。

并发与共享的关系
计算机系统中同时存在着多个运行着的程序。系统中的资源可供内存中多个并发执行的进程共同使用。
如果失去并发性,系统中只有一个程序正在运行,则共享性失去存在的意义。
如果失去共享性,进程不能同时访问资源,无法实现并发。

c.虚拟技术
虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体是实际存在的,对用户感受是逻辑上多个对应物。
一个程序需要放入内存并分配给它CPU才能执行。对于一个4GB的内存电脑,运行多个程序大于4GB,引入虚拟存储技术,实际只有4GB,但是用户看来远大于4GB。单核cpu可以运行多个进程。
时分复用技术:虚拟处理机技术,虚拟设备技术。空分复用技术:虚拟磁盘技术, 虚拟存储器技术
没有并发性就无法实现虚拟性

d.异步性
在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进。(后面引入进程同步与互斥)
只有并发性才可能导致异步性

操作系统的发展与分类

1.手工操作阶段
第一代(45~55):真空管和穿孔卡片。早期的计算机没有os,所有的程序设计是用纯粹的机器语言编写的。早期是使用插件板输入,后面使用穿孔卡片。
无os的计算机系统
人工操作方式:初期的计算机并无os,对计算机的操作用户采用人工操作方式直接使用计算机硬件系统,程序员事先将已穿孔的纸袋装入纸袋输入机,启动他们将程序输入计算机,然后启动计算机运行,当程序运行完毕并取走计算结果之后,才让下个用户上机。
缺点:用户独占全机cpu等待人工操作。(降低计算机资源的利用率)

2.批处理阶段
a.单道批处理系统 (过渡)
第二代(55~95):晶体管和批处理系统

计算机的发展,出现了人员分工,设计人员,生产人员,操作人员,程序人员,维护人员。大型机由专业的人员运行。
要运行一个作业,程序员将程序写在纸上,然后穿孔成卡片带到输入室交给操作人员,等待。计算机运行当前任务,将计算结果从打印机上输出,操作员将结果送到输出室交给程序员。然后操作员开始处理下一个作业。
操作员在处理输入/输出数据时,计算机处于空闲状态,时间被浪费掉。由此诞生出批处理系统。其思想是:在输入室收集全部作业,然后用一台专门的计算机将它们读到磁带上。作业都被读到磁带上,操作员装入一个特殊的程序(现代os的前身),它从磁带上读入第一个作业并运行,其输出写到第二盘磁带上,但不打印。特殊程序用于识别并管理不同的作业。每个作业结束后,os自动地从磁带上读入下一个作业并运行。当一批作业完成后,os取出输入输出磁带,将输入磁带换成下一批作业,并把输出磁带拿到专门处理输出的计算机上进行脱机打印。

脱机输入/输出方式(外围机):人机矛盾及CPU和I/O设备之间速度不匹配的矛盾。事先将装有程序和数据的纸带装入纸带输入机,在一台外围机的控制下,把纸带上的数据输入到磁带上。当cpu需要这些程序和数据时,再从磁带上将其高速地调入内存。同样,当cpu需要输出时,可由CPU直接高速地把数据内存送到磁带上,在另一台外围机的控制下,将磁带上的结果通过相应的输出设备输出。
装带,卸带以及将数据从低速I/O设备送到高速磁盘上都是在脱机情况下不占用主机时间,有效的减少了cpu的空闲时间。
当CPU在运行时需要的数据,是直接从高速地磁带或磁盘上将数据调入内存中,不再是从低速的I/O设备上输入,极大地提高了I/O速度,缓和了CPU和I/O设备速度不匹配的矛盾。

把一批作业以脱机方式输入到磁带上,并在系统中配上监督程序,在它的控制下使这批作业能一个接一个地连续处理
其自动处理过程是:首先,由监督程序将磁带上的第一个作业装入内存并把运行控制权交给作业。当该作业处理完成时,又把控制权交还给监督程序,再由监督程度把磁带上的第二个作业调入内存。计算机系统就这样自动地一个作业一个作业地进行处理,直到磁带上所有作业全部完成,这样便形成了早期的批处理系统。由于系统对作业地处理都是成批地进行,且在内存中始终保持一道作业,即单道批处理系统。

自动性。顺利情况下,磁带上的一批作业能自动逐个依次运行,无需人工干涉。
顺序性:磁带上的各道作业是顺序进入内存的,各道作业地完成顺序与它们进入内存的顺序,在正常情况下应完全相同,亦即先调入内存的作业先完成。(批处理)
单道性:内存仅有一道程序运行,监督程序每次从磁带上只调入一道程序进入内存运行,当该程序完成或发生异常情况时,才换入其后继程序进入内存运行。(单道批处理)

优点:缓解了一定程度热人机速度矛盾,资源利用率有所提升。
缺点:内存中仅能有一道程序运行。只有在该程序运行结束后才能调入下一道程序。同时,cpu有大量的时间是在空闲等待I/O完成,资源利用率依然低。

输入与运行不匹配

b.多道批处理系统
第三代(65~80):集成电路芯片和多道程序设计

20世纪60年代,计算机的生产一是面向字的、大型的科学用计算机,主要用于科学和工程计算。另一条面向字符的、商用计算机,主要用于从事磁带归档和打印服务。开发维护两种不同的产品,对厂商来说是昂贵的。同时业务需求往往一开始需要小型机,后面又需要大型机。由此诞生出既可以用于科学计算,又能用于商业计算的计算机。不过os要兼容所有的运行机器,os过于繁杂,像一群史前动物陷入泥潭不能自拔。
当前作业因等待磁带或其他I/O操作而暂停时,cpu只能等待I/O操作完成。对于cpu操作密集的科学计算问题,I/O操作较少,可以接受。但是对于商业数据处理。I/O操作等待的时间为80~90%,所以必须减少某种措施减少昂贵的cpu空闲时间的浪费。解决方案是:将内存分为几个部分,每一部分存放不同的作业。当一个作业等待I/O操作完成时,另一个作业可以使用cpu。在内存中注入多个作业需要特殊的硬件来对其进行保护,防止作业地信息被窃取或受到攻击。第三代计算机都配有此类硬件。
由此操作系统正式诞生,并引入了中断技术,由操作系统负责管理多道程度的并发运行。

第三代计算机的另一个特性是,卡片被拿到机房后能够很快地将作业从卡片读入磁盘。任何时刻当一个作业运行结束时,os就能将一个新作业从磁盘读出,装进空出来的内存区域运行。这种技术叫做同时的外部设备联机操作(SPOOLing),该技术也用于输出,就不用将磁带搬来搬去了。

主要优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,cpu和其他资源保持“忙碌”状态,系统吞吐量大
缺点:用户响应时间长,没有人机交互功能。用户提交自己的作业之后,就只能等待计算机处理完成,中间不能控制自己的作业执行。
资源利用率高。系统吞吐量大。
平均周转时间长。无交互能力。

为什么多道批处理系统能使资源利用率大幅提升?
有作业1作业2作业3,输入1s,计算1s,输出1s。在单道批处理系统中,作用1,2,3串行执行,共需9s。采用多道批处理系统后,作业1在执行计算的过程中,可以输入作业2,执行作业2的时候,输入作业3,共需要5s。那么在同一时间9s内,多道批处理系统可以处理更多的作业,系统吞吐量增大

在该系统中,用户所提交的作业都先放在外存上并排成一个队列,称为“后备队列”;然后由作业调度程序按一定得算法从后备队列中国选择若干个作业调入内存,使他们共享cpu和系统中的各种资源。这样:可以提高cpu的利用率。同时在内存中装有若干道程序并使他们交替运行,当正在运行的程序因I/O而暂停执行时,系统可调度另一道程序运行,从而保持了cpu处于忙碌状态。可提高内存和I/O设备利用率。增加系统吞吐量。

多道批处理系统需要解决的问题
处理机管理问题,内存管理问题,I/O设备问题,文件管理问题,作业管理问题

批处理系统适用于运行几乎不需要交互性的大型作业

人机无法交互

3.分时系统
分时系统的诞生。对于第一代计算机的使用,用户能够独占全部的计算机资源。第三代计算机一道作业地往返通常需要几小时,一个编译错误,还得从头再来,没有及时响应。
计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。

用户需求:人机交互。共享主机。便于用户上机。
实现的关键问题:及时接收。及时处理。
特征:多路性(同时性):宏观上,是多个用户同时工作,共享系统资源;微观上,是每个用户作业轮流运行一个时间片。
           独立性:每个用户各占一个终端,彼此独立操作,互补干扰。
           及时性:用户的请求能在很短的时间内获得响应。 
           交互性:用户可以通过终端与系统进行广泛的人机对话。

优点:用户的请求可以被即使响应解决了人机交互的问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到其他人的存在。
缺点:不能优先处理一些紧急任务。操作系统多各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。

4.实时操作系统
为了能够优先响应一些紧急任务,某些任务不需时间片排队。
在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完成事件。主要特点是及时性和可靠性。

硬实时系统:必须在绝对严格规定的时间内完成。导弹控制系统,自动驾驶系统。
软实时系统:能接受偶尔违反时间规定

5.第四代(80至今):个人计算机系统,网络操作系统,分布式操作系统
微机操作系统的发展:单用户单任务操作系统,单用户多任务操作系统,多用户多任务操作系统

操作系统的运行机制和体系结构

1.运行机制-两种指令、两种处理器状态、两种程序
a.什么是指令?特权指令和非特权指令

指令是cpu能识别、执行的最基本命令。比如,加法指令就是让cpu进行加法运算。我们写的程序代码通过翻译程序翻译成机器语言指令,一条高级语言的代码翻译可能会对应多条指令。

有的指令人畜无害,比如加减乘除普通的运算指令。有的指令有很高的权限,比如内存清零指令。如果用户程序可以使用这个指令,就意味着一个用户可以将其他用户的内存数据随意清零,这样做显然是很危险的。
指令分为特权指令,如内存清零指令,是不允许用户程序使用非特权指令,如普通的运算指令。

b.处理器状态-用户态(目态)、核心态(管态)
cpu如何判断当前是否可以执行特权指令?
如果cpu处于用户态,此时cpu执行非特权指令。如果cpu处于核心态,特权指令和非特权指令都可执行。
用程序状态字寄存器(psw)中的某些标志位来识别当前处理器处于什么状态。0为用户态,1为核心态。

c.内核程序和应用程序
内核程序:操作系统的内核程序是系统的管理者,既可以执行特权指令,也可以执行非特权指令,运行在核心态。
应用程序:为了保证系统能安全运行,普通应用程序只能执行非特权指令,运行在用户态。

操作系统中的哪些功能应该由内核程序实现?

2.操作系统的内核
对安装的win10系统,会提供很多功能,如记事本,任务管理器,这些功能并不是必不可少的。没有这些也可使用计算机。
对于操作系统,可分为非内核功能和内核功能
内核时计算机配置在底层的软件,时操作系统最基本、最核心的部分。实现操作系统内核功能的那些程序就是内核程序
时钟管理:实现计时功能。
中断处理:负责实现中断机制。
原语:是一种特殊的程序。处理操作系统最底层,是最接近硬件的部分。这种程序运行具有原子性,其运行能一气呵成,不可中断。
对系统资源进行管理功能:进程管理,存储器管里,设备管理。有的操作系统不把这部分功能归为内核功能,对不同的操作系统内核划分的功能可能不一样。

3.操作系统的体系结构-大内核和微内核
大内核:
将os的主要功能模块都作为系统内核,运行在核心态。优点:高性能。缺点:内核代码庞大,结构混乱,难以维护。
微内核:只把最基本的功能保留在内核。优点:内核功能少,结构清晰,方便维护。缺点:需要频繁地在核心态和用户态之间切换,性能低。
操作系统-概述
 

中断和异常

1.中断机制的诞生
早期的计算机,各程序只能串行执行,系统资源率低。为此发明操作系统(计算机的管理者),引入中断机制,实现了多道程序并发执行。
其本质是:发送中断就意味着需要操作系统介入,开展管理工作。
把多道程序放入内存并发执行。进程1在用户态下运行一段时间,cpu收到计时部件发出的中断信号切换为核心态对中断进行处理。操作系统的内核负责对中断信号进行处理,操作系统发现进程1的时间片已用完,换进程2运行。完成后,操作系统把cpu的使用权还给用户进程,进程2开始执行。进程2执行一段时间后,发出系统调用(内中断信号),请求输出。cpu切换为核心态,对中断进行处理。操作系统的内核负责对中断信号进行处理,进程2暂停运行等待I/O完成,换进程3运行。完成后,操作系统把cpu的使用权还给用户进程,进程3开始执行。I/O完成,设备向cpu发出中断信号,cpu收到I/O设备发出的中断信号,切换为核心态对中断进行处理。操作系统的内核负责对中断信号进行处理,进程2的I/O完成,让进程2恢复运行,以完成后续工作。
操作系统-概述

2.中断的概念和作用
当中断发生时,cpu立即进入核心态。当前运行的程序暂停运行,并由操作系统内核对中断进行处理。对于不同的中断信号,会进行不同的处理。

发生了中断,就意味着需要操作系统的介入,开展管理工作。由于操作系统的管理工作(比如进程切换、分配I/O设备等)需要使用特权指令,因此CPU要从用户态切换为核心态。中断可以使cpu从用户态切换为核心态,使操作系统获得计算机的控制权。有了中断,才能实现多道程序并发执行。

用户态、核心态之间的切换如何实现?
用户态->核心态:通过中断实现的。并且中断是唯一途径。
核心态->用户态:通过执行一个特权指令,将程序状态字(PSW)的标志位设置为“用户态”。

3.中断的分类-给出一个事件,判断是什么中断?
a.内中断(异常、例外、陷入):信号的来源是cpu的内部,与cpu当前执行的指令有关。
自愿中断:指令中断,系统调用时使用的访管指令,又叫陷入指令、trap指令。
强迫中断:硬件故障,缺页。软件中断,整数除0,抛出异常。

或分为:陷入、陷阱;故障;终止

b.外中断(中断):信号的来源是cpu的外部,与cpu当前执行的指令无关。
外设请求:I/O操作完成发出的中断信号。人工干预:用户强行终止一个进程。

4.外中断的处理过程
一用户程序在用户态下执行指令1,2,3,4....。

a.执行完每个指令之后,cpu都要检查当前是否有外部中断信号,没有执行下一条指令。|
b.执行到某条指令时,检查之后发现一个外部中断信号(比如用户通过键盘输入了一个字符),用户程序需要暂停运行,那么需要保护被中断进程的cpu环境(如程序状态字PSW、程序计数器PC、各种通用寄存器),以便之后可以恢复接着往下执行。类似于存档
c.根据中断信号类型转入相应的中断处理程序(操作系统的核心态程序)。
d.中断处理程序执行完后,恢复原进程的cpu环境并退出中断,返回原进程继续往下执行。

系统调用

1.什么是系统调用,有何作用?
os作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务。主要包括命令接口和程序接口。其中,程序接口由一组系统调用组成。
“系统调用”是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。

操作系统为什么要提供“系统调用”功能?
操作系统提供“系统调用”功能,用户进程想要使用打印机这种共享资源,只能通过系统调用向操作系统发出请求。操作系统会对各个请求进行协调管理。避免出现进程A在未使用完共享资源时,其他进程使用。

应用程序通过系统调用请求操作系统服务。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成。这样可以保证系统的稳定性和安全性,防止用户非法操作

2.系统调用的分类
系统调用的相关处理涉及到对系统资源的管理、对进程的控制,这些功能需要执行一些特权指令才能完成,因此系统调用的相关处理需要在核心态下进行
a.设备管理:完成设备的请求、释放、启动等功能
b.文件管理:完成文件的读写创建删除等功能
c.进程控制:完成进程的创建、撤销、阻塞、唤醒等功能
d.进程通信:完成进程之间的消息传递、信号传递等功能
e.内存管理:完成内存的分配、回收等功能

3.系统调用与库函数的区别
操作系统
向上提供系统调用。编程语言向上提供库函数,有时会将系统调用封装为库函数,以隐藏系统调用的一些细节,使上层进行系统调用更加方便。普通应用程序可直接进行系统调用,也可使用库函数。有的库函数涉及系统调用,有的不涉及。

4.系统调用背后的过程
在程序代码中调用库函数 write("abc"),该库函数内部封装了系统调用的复杂细节。
在进行编译时,会对系统调用的具体细节。执行陷入访管指令,操作系统切换到核心态处理系统调用相关代码,处理完后返回用户程序继续向下执行。
操作系统-概述

 

 

相关文章: