第一章错题及重点问题整理

1.概念

  • 高级程序设计语言的__编译器不是__操作系统关心的问题
    • 用户界面并非是必须的,但却包含在操作系统范畴内
  • OS基本功能是__控制管理系统内的各种资源__
    • 注意网络管理,用户界面,可视化编辑程序都不是最基本的功能
  • 用户可以通过__命令接口和系统调用__来使用计算机
  • 系统调用只能通过用户程序间接使用
  • 系统调用的目的是__请求系统服务__
    • 不是什么申请/释放资源,终止服务啥的
  • OS与用户通信接口通常不包括__缓存管理指令__
    • 系统中的缓存全部由OS管理,对用户是透明的
    • shell(命令解析器),命令解释器,广义指令(系统调用)都是通信接口
  • 库函数与系统调用的区别与联系
    • 库函数是语言或应用程序的一部分,可以运行在用户空间中
    • 系统调用是操作系统的一部分,是内核为用户提供的程序接口,运行在内核空间中
    • 许多库函数会使用系统调用来实现功能
    • 未使用系统调用的库函数执行效率通常要比系统调用的高
    • 因为使用系统调用需要上下文切换以及状态的转换(由用户态转移到核心态)
  • 各技术所解决的问题
    • 脱机技术用于解决独占设备问题。
    • 虚拟技术与交换技术以多道程序设计技术为前提。
    • 多道程序设计技术由于同时在主存中运行多个程序,在一个程序等待时,可以去执行其他程序,因此提高了系统咨源的利用率。
  • 引入多道程序后,程序的执行就失去了顺序性和封闭性,执行的程序是断续的
  • 操作系统的基本主要类型:
    • 批处理OS
    • 分时OS
    • 实时OS
  • 中断技术使得多道批处理系统和I/O设备可与CPU并行工作
  • 实时系统的进度调度通常采用__抢占式的优先级高者优先__算法
  • 实时OS的主要目标不包括__资源利用率__
  • 分时OS的主要目标是__比较快速响应用户__
  • 分时OS响应时间T≈QN,Q:时间片;N:用户数
  • 批处理OS,分时OS,实时OS的各自特点
    • 批处理操作系统的用户脱机使用计算机,作业是成批处理的,系统内多道程序并发执行,交互能力差。
    • 分时操作系统可让多个用户同时使用计算机,人机交互性较强,具有每个用户独立使用计算机的独占性,系统响应及时
    • 实时操作系统能对控制对象做出及时反应,可靠性高,响应及时,但资源利用率低。

2.中断等

  • 进程调度可以不需要硬件支持,而时钟管理,地址映射,中断系统都需要硬件的支持
  • 用户态到核心态的转换由__硬件__完成
  • 中断处理程序一般在核心态执行,因此无法完成"转换成核心态"这一任务
  • 命令解释程序是运行在用户态的
  • 注意区分在__用户态执行和发生的区别__
    • 例如系统调用发生在用户态,而被调用程序在核心态下执行
    • 外部中断是用户态到核心态的"门",发生在用户态,但是在核心态完成中断过程
    • 进程切换术语系统调用的执行过程中的事件,只能发生在核心态
    • 缺页产生后,在用户态发生缺页中断,然后进入核心态执行缺页程序中断服务程序
  • 只能在核心态下执行的指令(继续补充)
    • 置时钟指令
    • 广义指令
  • 不是只能在核心态下"执行"的指令(继续补充)
    • 读时钟指令
    • 取数指令
    • 寄存器清零
  • 陷入指令是唯一一个只能在用户态下执行而不能在核心态下执行的指令
  • 中断处理和子程序调用的区别(重要)
    • 子程序调用只需保存程序断点,即该指令的下一条指令的地址;
    • 中断调用子程序不仅要保存断点(PC的内容),还要保存程序状态字寄存器(PSW)的内容。在中断处理中,最重要的两个寄存器是PC和PSWR。
  • 关中断指令是权限非常大的指令,必须在核心态才能执行
    • trap指令,跳转指令,压栈指令均可在用户态下执行
  • 有关内部异常的叙述
    • 内部异常的产生与当前执行指令相关
    • 内部异常的检测由CPU内部逻辑实现
    • 内部异常的响应发生在指令执行过程中
      • 内中断是指来自CPU和内存内部产生的中断,包括程序运算引起的各种错误,如地址非法、校验错、页面失效、非法指令、用户程序执行特权指令自行中断(INT)和除数为零等,以上都是在指令的执行过程中产生的,因此A正确。这种检测异常的工作肯定是由CPU(包括控制器和运算器)实现的,因此B正确。内中断不能被屏蔽,一旦出现应立即处理,C正确。
    • (错误)内部异常处理后返回到发生异常的指令继续执行
      • 考虑到特殊情况,如除数为零和自行中断(INT)都会自动跳过中断指令,所以不会返回到发生异常的指令继续执行,因此错误。
  • 注意狭义中断和广义中断
    • 广义上,异常(内中断)和外部中断都叫
  • 外部中断处理过程,PC值由中断隐指令自动保存,而通用寄存器内容由操作系统保存。(重要)
  • MOV R0,addr:有可能出现缺页异常的可能
  • 执行系统调用的过程如下
    • 正在运行的进程先传递系统调用参数,然后由陷入(trap)指令负责将用户态转换为内核态,并将返回地址压入堆栈以备后用,接下来CPU执行相应的内核态服务程序,最后返回用户态。所以选项C正确。
  • 时钟中断的主要工作是处理和时间有关的信息及决定是否执行调度程序。和时间有关的所有信息包括系统时间、进程的时间片、延时、使用CPU的时间、各种定时器,因此I、Ⅱ、IⅢ均正确。
  • 不同的操作系统为应用程序提供的系统调用接口也不同
  • 设备管理属于操作系统的职能之一,包括对输入/输出设备的分配、初始化、维护等,用户程序需要通过系统调用使用操作系统的设备管理服务(重要)
  • 区分执行态的主要目的是保护系统程序
  • 用户态到核心态的转换发生在中断产生时,而核心态到用户态的转换则发生在中断返回用户程序时。
  • 为什么说直到出现中断和通道技术之后,多道程序概念才变得有用?
    • 多道程序并发执行是指有的程序正在CPU上执行,而另一些程序正在I/O设备上进行传输,即通过CPU操作与外设传输在时间上的重叠必须有中断和通道技术的支持,原因如下:
      1)通道是一种控制一台或多台外部设备的硬件机构,它一旦被启动就独立于CPU运行,因而做到了输入/输出操作与CPU并行工作。但早期CPU与通道的联络方法是由CPU向通道发出询问指令来了解通道工作是否完成的。若未完成,则主机就循环询问直到通道工作结束为止。因此,这种询问方式是无法真正做到CPU与I/O设备并行工作的。
      2)在硬件上引入了中断技术。所谓中断,就是在输入/输出结束时,或硬件发生某种故障时,由相应的硬件(即中断机构)向CPU发出信号,这时CPU立即停下工作而转向处理中断请求,待处理完中断后再继续原来的工作。
      因此,通道技术和中断技术结合起来就可实现CPU与I/O设备并行工作,即CPU启动通道传输数据后便去执行其他程序的计算工作,而通道则进行输入/输出操作;当通道工作结束时,再通过中断机构向CPU发出中断请求,CPU则暂停正在执行的操作,对出现的中断进行处理,处理完后再继续原来的工作。这样,就真正做到了CPU与IVO设备并行工作。此时,多道程序的概念才变为现实。

3.本章疑难点

  1. 并行性与并发性的区别和联系
    并行性和并发性是既相似又有区别的两个概念。并行性是指两个或多个事件在同一时刻发生,并发性是指两个或多个事件在同一时间间隔内发生。
    在多道程序环境下,并发性是指在一段时间内,宏观上有多个程序同时运行,但在单处理器系统中每个时刻却仅能有一道程序执行,因此微观上这些程序只能分时地交替执行。若在计算机系统中有多个处理器,则这些可以并发执行的程序便被分配到多个处理器上,实现并行执行,即利用每个处理器来处理一个可并发执行的程序。
  2. 特权指令与非特权指令
    所谓特权指令,是指有特殊权限的指令,由于这类指令的权限最大,使用不当将导致整个系统崩溃,如清内存、置时钟、分配系统资源、修改虚存的段表或页表、修改用户的访问权限等。若所有程序都能使用这些指令,则系统一天死机n次就不足为奇。为保证系统安全,这类指令只能用于操作系统或其他系统软件,不直接提供给用户使用。因此,特权指令必须在核心态执行。
    实际上,CPU在核心态下可以执行指令系统的全集。形象地说,特权指令是那些儿童不宜的东西,而非特权指令是老少皆宜的东西。
    为了防止用户程序中使用特权指令,用户态下只能使用非特权指令,核心态下可以使用全部指令。在用户态下使用特权指令时,将产生中断以阻止用户使用特权指令。所以把用户程序放在用户态下运行,而操作系统中必须使用特权指令的那部分程序在核心态下运行,保证了计算机系统的安全可靠。从用户态转换为核心态的唯一途径是中断或异常。
  3. 访管指令与访管中断
    访管指令是一条可以在用户态下执行的指令。在用户程序中,因要求操作系统提供服务而有意识地使用访管指令,从而产生一个中断事件(自愿中断),将操作系统转换为核心态,称为访管中断。访管中断由访管指令产生,程序员使用访管指令向操作系统请求服务。
    为什么要在程序中引入访管指令呢?这是因为用户程序只能在用户态下运行。若用户程序想要完成在用户态下无法完成的工作,该怎么办?解决这个问题要靠访管指令。访管指令本身不是特权指令,其基本功能是让程序拥有“自愿进管”的手段,从而引起访管中断。
    处于用户态的用户程序使用访管指令时,系统根据访管指令的操作数执行访管中断处理程序,访管中断处理程序将按系统调用的操作数和参数转到相应的例行子程序。完成服务功能后,退出中断,返回到用户程序断点继续执行。