操作系统

第一章 引论

操作系统的定义:

==操作系统是直接控制和管理计算机软硬件资源,合理地组织计算机工作流程,便于用户使用的程序的集合==


操作系统的功能:(操作系统的主要功能是管理系统中的资源)

  • ==处理器管理==
  • ==存储器管理==
  • ==I/O设备管理==
  • ==文件管理==
  • ==用户接口==

操作系统的特性

  • 并发性:操作系统最重要的特性
  • 共享性
  • 虚拟性
  • 异步性

操作系统的分类

  1. 批处理系统:具有批处理功能但不具有交互能力,设计时应优先考虑 周转时间和吞吐量

  2. 分时系统(重要指标-响应时间)

    特点:交互性、同时性、独立性、及时性

  3. 实时操作系统

    特点:实时性、高可靠性、安全性

  4. 微机操作系统

  5. 网络操作系统

    两种主要的工作模式:客户/服务器模式、对等模式

  6. 分布式操作系统

    特点:分布性、透明性、统一性、健壮性

  7. 嵌入式操作系统


操作系统的结构模型

  1. 整体式模型:容易使系统陷于死锁

  2. 层次式模型

  3. 微内核和客户/服务器模型

    微内核优点:可扩展性强、可靠性高、可移植性好

  4. 面向对象模型


第二章 用户与操作系统的接口

作业:

==用户一次请求计算机系统为其完成任务所进行的工作的总和==


程序级接口

  1. 用户态和核心态

  2. 特权指令和访管指令

    特权指令:只允许在核心态下使用的指令

    访管指令功能

    1. 实现从用户态到核心态的转变
    2. 在核心态下由操作系统代替用户完成其要求
    3. 工作完成后有核心态返回到用户态

第三章 进程的描述与控制

1. 程序顺序执行

  1. 顺序性
  2. 封闭性
  3. 可再现性

2. 进程描述

==定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,进程是系统进行资源分配和调度的的一个独立单位。==


3. 进程的特性

  1. 动态性:进程最基本的特征,与静态的程序不同
  2. 并发性:多个进程可以同时存在于内存中,在一段时间内并发运行,不是同时执行
  3. 独立性
  4. 异步性
  5. 结构性

4. 进程与程序的区别

  1. 进程的动态性
  2. 进程的暂时性
  3. 进程的结构性

5.进程控制块(PCB)


6. 进程状态

==基本状态:==

  1. ==就绪态==
  2. ==执行态==
  3. ==阻塞态==

==状态的转换:==

  1. ==就绪态 -> 执行态:进程调度==
  2. ==执行态 -> 就绪态:时间片到或被强占==
  3. ==执行态 -> 阻塞态:I/O请求或等待某个事件==
  4. ==阻塞态 -> 就绪态:I/O完成或事件发生==

7. 原语操作

  1. 原语:原子操作,原语中的所有动作要么全做要么全不做,具有不可分割性
  2. 进程控制原语:
    1. ==创建原语:进程可以创建子进程,进程只能由其父进程创建==
    2. ==撤销原语:进程完成任务后应将其撤销,撤销原语由其父进程发出,一个进程不会撤销自己==
    3. ==阻塞原语:进程阻塞是进程的自身行为==
    4. ==唤醒原语:由相关进程唤醒,从阻塞态转换为就绪态==
    5. ==挂起原语:只能挂起该进程的子孙进程==
    6. ==激活原语:只能激活自己的子孙进程==

8. 线程(调度和执行的基本的单位)

  1. 线程引入:==减少时空开销,提高并发性==
  2. 线程的定义:==线程是进程内一个相对独立、可调度的执行单位,是进程中一个单一的控制线索==
  3. 线程可以共享进程的所拥有的全部资源,同一个进程中的所有线程可以并发执行

第四章 进程通信

临界资源和临界区

  1. ==临界资源:一次仅允许一个进程使用的资源称为临界资源==
  2. ==临界区:每个进程中访问临界资源的那段程序代码称为临界区==

同步机构设计准则

  1. ==空闲让进==
  2. ==忙则等待==
  3. ==有限等待==
  4. ==让权等待==

信号量机制实现互斥和同步(低级方法,只能传递少量信息)


第五章

作业调度

目标:

  1. 面向系统:
    1. 吞吐量大:评价批处理系统的重要指标(吞吐量是指单位时间内完成的作业数)
    2. CPU利用率高
    3. 各类资源的平衡利用
  2. 面向用户准则:
    1. 周转时间短:周转时间=完成时间-创建时间
    2. ==平均周转时间:周转时间的平均值==
    3. 平均带权周转时间:带权周转时间=完成时间-创建时间)/运行时间
    4. 省略三点

进程调度

  1. 时机:
    1. ==执行完毕或异常终止==
    2. ==自己调用阻塞原语而进入等待状态==
    3. ==时间片用完==
    4. ==执行完系统调用后返回用户进程时==
    5. ==就绪队列某个进程的优先级高于当前的进程==

常用的调度算法

  1. ==先来先服务(FCFS)==
  2. ==短作业(进程)优先==
  3. ==时间片轮转调度算法:(时间片用完的进程和新进入的进程同时进入就绪队列时,新来的优先)==
  4. ==高优先权优先调度算法==
  5. ==最高响应比优先调度算法:响应比:(等待时间+需要执行的时间)/需要执行的时间==

第六章

死锁的定义

==死锁 是一种状态:在系统中,两个或两个以上的进程无限期地等待永远不可能发生的事件,则称这些进程处于死锁状态==

死锁的原因

  1. ==竞争资源==
  2. ==进程推进顺序不合理==

死锁的必要条件

  1. ==互斥条件:一个进程得到的资源其他进程不能使用==
  2. ==请求和保持条件:进程手上拿着资源不释放的前提下还请求其他资源==
  3. ==环路条件:发生死锁时,必然存在一个进程-资源的环形链==

处理死锁的策略

  1. 预防策略:==破坏死锁的四个必要条件中的一个或多个==从而预防死锁的发生
    1. 破坏互斥条件
    2. 破坏不剥夺条件
    3. 破坏请求与保持条件:==静态资源分配法->必须一次性申请在运行过程中需要的所有资源==
    4. 破坏环路条件:==有序资源使用法->将系统所有资源按类型进行线性排队,并赋予不同序号==
  2. 避免策略:资源动态分配时**==采用某些办法(银行家算法)防止系统进入不安全状态==**,从而避免死锁
    1. ==银行家算法:当系统的资源满足不了任何进程时,就是不安全状态==
  3. 死锁检测:==允许系统发生死锁,发生后及时检测出死锁然后解除死锁==
  4. 解除策略:==和死锁检测相配套,发生死锁时,将死锁解除==