• 判断

  • 选择

  • 简答

    • chap02

      • 操作系统的概念

        • 操作系统是控制应用程序执行的程序,是计算机软硬件的接口,其本质上就是一个系统软件

        • OS与普通软件相比,具有更高的特权级别、更广泛的功能范围和更深入的系统资源管理能力。普通软件运行在操作系统之上,通过操作系统提供的接口和服务来实现其功能

      • 操作系统的目标、功能

        • 目标:方便、有效、可扩展

        • 功能:

          • 作为用户和计算机的接口,为用户提供服务;

          • 作为资源管理器,控制计算机资源适用;

          • 提供易扩展性

      • 操作系统的组成模块

        • 进程控制:创建调度和终止进程,管理进程间的通信和同步

        • 虚拟内存:允许程序以逻辑方式访问存储器,而不用考虑物理内存上的可用空间数量

        • 文件:文件是访问控制和保护的一个有用单元

        • IO管理:使操作系统能够与各种外部设备进行通信

      • 操作系统的发展脉络

        • 串行处理:无操作系统

        • 简单批处理系统:监控程序,CPU等待I/O处理

        • 多道批处理系统:当一个作业等待I/O时,可以执行其他作业,多个用户程序可切换(需要内存管理)

        • 分时系统:计算机采用时间片轮转方式同时为多个用户服务

      • 批处理系统和分时系统的异同(有无终端,答表)

        • 主要目标不同

          • 批处理:充分利用处理器

          • 分时:减小响应时间

        • 操作系统指令源

          • 批处理:作业控制语言命令、作业提供的命令

          • 分时:终端键入的命令

        • 同:它们都使用了多道程序设计

      • 结合作业,结合操作系统的一般构成,描述linux中的概念(如linux的发展、构成模块)

    • chap03

      • 进程的概念,跟一般应用程序的不同、关系

        • 概念:进程是由执行的程序代码和与代码相关的数据集组成的实体

        • 进程是动态的、暂时的;程序是静态的、永久的

        • 进程是正在执行程序,程序是进程的重要组成

      • 简单描述一下PCB基本的构成(说三四个字段,状态、优先级等,3.1图)

        • PCB,进程控制块,一个进程元素集合,用于存储进程执行所需的信息

        • 基本构成:标识符、状态、优先级、程序计数器、内存指针……

      • 进程的操作与控制函数(创建、销毁和切换)

        • 创建、销毁、切换、同步、互斥

        • fork、exit、exec

      • 进程的五状态(画图或给图描述)

        • 如图

          2.1
        • 新建态:刚刚创建的进程,操作系统还未把它加入可执行进程组

        • 就绪态:进程做好了准备,只要有机会就开始执行

        • 运行态:进程正在执行

        • 阻塞态:进程在发生某些事件发生前不能执行,如I/O操作完成

        • 退出态:操作系统从可执行程序组中释放出的进程,停止或被取消

      • 进程的几个切换

        • 空——>新建:创建执行一个程序的新进程

        • 就绪——>就绪:操作系统准备好再接纳一个进程

        • 就绪——>运行:需要选择一个新进程运行时,调度器选择

        • 运行——>退出:当前正在运行的进程表示自己已经完成或取消,它将被操作系统终止

        • 运行——>就绪:

          • 正在运行的进程达到了“最大运行时长”

          • 进程优先级导致的进程中断

          • 进程本身自愿释放对处理器的控制

        • 运行——>阻塞:进程请求它必须等待的某些事项

        • 阻塞——>就绪:等待事件发生

        • 就绪——>退出:父进程可在任何时刻终止一个子进程;父进程终止,子进程终止

        • 阻塞——>退出:原因同上

      • 上课研讨例子:操作系统从操作系统、应用程序、cpu的三个角度看流程的不同

        • CPU:CPU根据PC的值来获取并执行内存中的指令,遇到分支指令会在用户程序执行,当超时等中断产生时会到操作系统中取址执行

        • OS:通过将CPU的控制权分配给不同程序来实现多个程序之间的交替执行,负责管理程序的执行顺序及进程状态转化

        • 某一程序:程序本身不会意识到其他程序存在,以为自己一直占有CPU

      • 系统控制的创建流程:linux的fork,一次调用两次返回的本质(画图?)

        • 由于在复制时复制了父进程的堆栈段,所以两个进程都停留在fork函数中等待返回,因此fork函数会返回两次,一次是在父进程中返回,另一次是在子进程中返回,这两次的返回值是不一样的。

        • 三种不同的返回值

          • 父进程中,fork返回新创建子进程的进程ID

          • 在子进程中,fork返回0

          • 如果出现错误,fork返回一个负值

    • chap04

      • 线程的概念、产生背景,进程和线程的关系与异同

        • 线程是一种轻量级的进程,在单个进程内执行不同的路径

        • 产生背景:需要并发执行、支持并发操作、提供性能和资源利用率

        • 线程是进程中的实际运作单位;进程中的多个线程共享进程资源

        • 异同

          • 资源占用:进程拥有独立内存空间、多个线程共享进程资源

          • 调度和切换:进程是系统进行资源分配和调度的基本单位,进程之间的切换开销较大;线程是进程内调度的基本单位,线程的切换开销较小。

          • 通信和同步:进程之间通信需要使用一些机制,如管道、消息队列、共享内存等。线程之间通信可以直接读写共享变量,也可以使用线程间的同步机制,如互斥锁、条件变量

          • 容错性:一个进程的崩溃通常不会影响其他进程。而线程是共享进程的资源,一个线程的崩溃可能导致整个进程的崩溃。

      • 线程的实现方法(UTL、KLT、混合)

        • 内核级线程KLT:线程管理工作全部由内核完成,应用级只有一个到内核线程设施的APL

        • 用户级线程ULT:线程的管理等工作全部由应用程序完成,内核意识不到线程的存在

        • 混合方法

      • 各自的优缺点

        • KTL优点:保证每个轻量级进程都成为一个独立的调度单元,避免一个阻塞而影响整个进程工作

        • KTL缺点:系统调用代价高,需要在用户态和内核态来回切换;需要消耗一定的内核资源,支持轻量级进程数量有限

        • ULT优点:不需要切换内核态,效率高且低消耗;可以为应用程序量身定制调度算法;UTL可以在任何操作系统中运行;可以支持规模更大的线程数量

        • ULT缺点:无系统内核支援,处理阻塞问题困难;一个进程只有一个线程可执行

    • chap05(重点)

      • 并发的主要解决了哪四个问题:

        • 同步:多个并发执行的进程之间相互协调和合作,以保证它们按照一定的顺序和时间间隔执行

        • 互斥:在并发执行的过程中,确保同一时刻只有一个进程能够访问某个资源,其他进程需要等待

        • 死锁:两个或多个进程因为彼此持有的资源而相互等待,导致无法继续执行的状态

        • 饥饿:一个进程因为无法获得所需的资源而无法继续执行的情况

      • 条件竞争的含义,并举例子描述

        • 发生在多个进程或线程读写数据时,其最终结果取决于多个线程的指令执行顺序

        • eg两进程共享全局变量a,并竞争更新该变量

      • 进程间的关系有几种,举例子

        • 竞争:进程之间互相不知对方存在,两个无关应用程序都想访问一个磁盘

        • 通过共享合作:进程间间接知道对方存在,(如共享对象)

        • 通过通信合作:进程间直接知道对方存在(它们有可用的通信原语)

      • 为了解决同步和互斥,我们一共有几类方法

        • 软件类:让并发执行的进程来担负该责任,在两进程之间实现互斥
          迪克、皮特森算法

        • 硬件类:中断屏蔽、专用机器指令

        • 操作系统类:信号量、管程、消息队列

      • 关于信号量和管程的概念及其异同

        • 信号量是用于进程间传递信号的一个整数值;管程定义了一组局部数据和内部操作,访问管程的进程通过内部操作访问或修改内容数据。

        • 管程所有同步机制都被限定在了管程内部,易于验证同步的正确性并检测错误

        • 相对于信号量,若一个管程被正确编写,则所有进程对于受保护资源的访问都是正确的

    • chap06

      • 什么叫死锁?死锁的概念并简单举例描述(代码或伪代码?十字路问题也可以)

        • 死锁概念:两个及以上的进程由于相互占有着对方所需要的资源而不能继续执行的状态
      • 举例

        • 独木桥。A,B都要过独木桥,但是互不退让,僵死。
        • 十字路口。A,B,C,D四辆车各占据一个资源,且由于所需要的第二个资源被另一辆汽车占有,因此他们都不能通行。
      • 死锁的条件(注意审题:必要条件条件3个,充要条件4个)

        • 互斥:一次只有一个进程可以使用一个资源,其他进程不能访问已分配给其他进程的资源

        • 占有且等待:当一个进程等待其他进程时,继续占有已分配的资源

        • 不可抢占:不能强行抢占进程已占有的资源

        • 循环等待(充要附加):存在一个闭合的进程链,每个进程至少占有此链中下一个进程所需的一个资源

      • 关于死锁的解决方法(书上4大类)

        • 死锁预防:消除死锁的四个成因之一
          • 间接预防方法:
            • 互斥—->无法避免
            • 占有且等待—->开始前一次性申请,否则阻塞进程:低效 & 不现实
            • 非抢占—->让权等待/设置优先级进行抢占
          • 直接预防方法:
            • 循环等待—->设定资源类型申请优先级:低效
        • 死锁避免:进程启动拒绝、资源分配拒绝(银行家算法)
        • 死锁检测与恢复:操作系统周期性的执行算法检测“循环等待”条件,检测到死锁再以某种策略进行恢复
        • 综合方法
    • chap07

      • 七种方法的归纳总结,联系和区别,历史发展从全部下载到化整为零(教材表7.1)

        • 全部加载且连续

          • 固定分区:分区大小预先设定,产生内部碎片

          • 动态分区:分区大小在进程装入内存时按需分配,产生外部碎片

        • 全部加载不连续

          • 简单分页:内存分成固定大小页框,进程分成等大的页,运行前全部载入页框,会产生较小的内部碎片;可能使程序载入不连续……

          • 简单分段:程序分成多个大小不同的段载入内存,载入内存时可以不连续,会产生较小的外部碎片

        • 部分加载且不连续

          • 虚存分页:将虚拟内存和物理内存划分为固定大小的页,地址之间通过页表来映射;产生内部碎片

          • 虚存分段:段的大小不等且为动态的,通过段表实现地址转换;支持共享和保护;产生外部碎片

          • 虚拟段页式:用户的地址空间被程序员划分为许多段,每段划分为固定大小的页

      • 存储管理的需求

        • 重定位

        • 逻辑

        • 保护

        • 物理组织

        • 共享

      • 固定分区和分页的相同和不同;动态分区和分段的相同和不同

        • 固定分区与分页

          • 简单分页是将内存划分为页,而固定分区是将内存划分为分区。

          • 简单分页的页大小是固定的,而固定分区的分区大小可以不同。

          • 简单分页的地址转换是通过页表进行的,而固定分区的地址转换是通过分区表进行的。

        • 分段没有内部碎片但有外部碎片

        • 固定分区是全部加载,其他是化整为零

    • chap08

      • 访问序列(计算?)

      • 虚拟存储器的概念

      • 页故障的概念及其处理流程

      • 缺页率和页尺寸、页框的关系

  • 问答和计算

  • 非标:教材的点评