操作系统快速入门笔记--1

作者: 球球球球笨 | 来源:发表于2018-01-28 21:51 被阅读17次

    来一波操作系统的笔记,前面有一部分内容未写入。
    使用的教程是NJU的操作系统MOOC

    中断屏蔽

    当计算机检测到中断时,中断装置通过中断屏蔽位决定于是否响应已发生的中断。
    有选择的响应中断

    中断优先级

    有优先度的响应中断。在同时检测到多个中断时,中断装置响应中断的顺序。
    不同计算机操作系统有不同的优先级顺序。

    中断的嵌套处理

    响应中断过程中可以响应其他中断。
    先响应的有可能后处理。嵌套层次应该要有限制。

    多中断的响应与处理

    决定中断处理次序的因素:

    • 中断屏蔽
    • 中断优先级
    • 嵌套处理,嵌套处理改变了中断处理的次序

    进程

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

    进程包括五个实体部分
    1.(OS管理运行程序的)数据结构P

    1. (运行程序的)内存代码C
    2. (运行程序的)内存数据D
    3. (运行程序的)通用寄存器信息R
    4. (OS控制程序执行的)程序状态字信息PSW

    不同程序在不同数据集上运行,构成无关进程。
    不同程序在相同数据集上运行,构成共享数据的交往进程。
    相同代码在不同数
    据集上运行,构成两个共享代码的无关进程。共享的代码是可再入程序(纯代码)

    概念级的进程状态

    1. 运行态:指进程占有处理器运行
    2. 就绪态:进程具备运行条件等待处理器运行
    3. 等待态:进程由于等待资源,输入输出,信号等而不具备运行条件
    进程的三态模型 进程的三态模型.png

    进程的挂起

    进程挂起:由于操作系统无法预期进程的数目与资源需求,计算机在运行过程中会出现资源不足的情况(性能低,死锁)。这时需要剥夺某些进程的内存和其他资源,调入OS管理的对换取,不参加进程调度,待适当时候再调入内存,恢复资源,参与运行。

    挂起态于等待态有本质区别,等待态占有已申请到的资源,挂起态无任何资源


    进程挂起的选择与恢复.png

    进程控制块

    标识信息,现场信息,控制信息

    标识信息:用于存放唯一标识该进程的信息。(系统分配的标识号,系统分配的进程组标识号,用户定义的进程名,用户定义的进程组名)
    现场信息:用于存放该进程运行时的处理器现场信息。(用户可见寄存器内容:数据寄存器,地址寄存器;控制与状态寄存器内容:PC,IR,PSW;栈指针内容:核心栈和用户栈指针)
    控制信息:用于存放于管理、调度进程相关的信息(调度相关信息:状态、等待事件/原因,优先级;进程组成信息:代码/数据地址、外村映像地址;队列指引元:进程队列指针、父子兄弟进程指针;通信相关信息:消息队列,信号量,锁;进程特权信息:如内存访问权限,处理器特权;处理器使用信息:占用的处理器,时间片,处理器使用时间/已执行总时间、记账信息;资源清单信息:正占有的资源,已使用的资源)

    进程映像

    某一时刻进程的内容及其执行状态集合
    进程控制块:保存进程的标识信息,状态信息和控制信息
    进程程序块:进程执行的程序空间
    进程数据块:进程处理的数据空间,包括数据,处理函数的用户栈和可修改的程序
    核心栈:用户在内核模式下运行时使用的堆栈,中断或系统过程使用

    进程映像是内存级的物理实体,又称为进程的内存映像。


    进程的内存映像.png

    进程上下文

    进程的执行需要环境支持,包括CPU现场和Cache中的执行信息
    OS中的进程物理实体和支持进程运行的环境合称为进程上下文,包括

    1. 用户级上下文:用户程序块、用户数据区、用户栈、用户共享内存
    2. 寄存器上下文:PSW、栈指针、通用寄存器
    3. 系统级上下文:PCB、内存区表、核心栈

    进程上下文刻画了进程的执行状态

    概念级的OS进程管理软件

    系统调用/中断/异常处理程序
    队列管理模块
    进程控制程序
    进程调度程序
    进程通信程序
    终端登录与作业控制程序,性能监控程序,审计程序等外围程序

    进程的队列模型 进程实现的队列模型.png

    时间片到 也要让出处理器

    队列管理模块

    是操作系统实现进程管理的核心模块
    操作系统建立多个进程队列,包括就绪队列和等待队列
    按需组织为先进先出队列与优先队列
    队列中的进程可以通过PCB中的队列指引元采用单双指引元或索引连接
    进程管理和资源调度围绕队列展开。

    进程的控制和管理

    1. 进程创建:进程表加一项,申请PCB并初始化,生成标识,建立映像,分配资源,移入就绪队列
    2. 进程撤销:从队列中移除,归还资源,撤销标识,回收PCB,移除进程表项
    3. 进程阻塞:保存现场信息,修改PCB,移入等待队列,调度其他进程执行。
    4. 进程唤醒:等待队列中移除,修改PCB,移入就绪队列(该进程优先级高于运行进程触发抢占)
    5. 进程挂起:修改状态并出入相关队列,收回内存等资源送至对换区。
    6. 进程激活:分配内存,修改状态并出入相关队列

    原语与进程控制原语

    进程控制过程中涉及对OS核心数据结构(进程表、PCB池、队列、资源表)的修改。为了防止与时间有关的错误,应使用原语。原语是指若干条指令构成的完成某种特定功能的程序,执行上具有不可分割性。
    原语的执行可以通过关闭中断来实现。
    进程控制使用的原语成为进程控制原语。另一类常用原语是进程通信原语。

    进程切换

    从正在运行的进程中收回处理器,让待运行进程来占有处理器运行。

    进程切换实质上就是被中断运行进程与待运行进程间的上下文切换。处理过程如下:

    1. 保存被中断进程的上下文
    2. 转向进程调度
    3. 恢复待运行进程的上下文

    模式切换

    进程切换必须在操作系统内核模式下完成,故需要模式切换(处理器状态切换)
    用户模式到内核模式:由中断/异常/系统调用中断用户进程执行而触发
    内核模式到用户模式:OS执行中断返回指令将控制权交还用户进程而触发

    模式切换的基本工作任务

    中断装置完成正向模式切换:

    1. 处理器模式转换为内核模式
    2. 保存当前进程的PC/PSW值到核心栈
    3. 转向中断、异常、系统调用处理程序

    中断返回指令完成逆向模式转换:

    1. 从待运行进程核心栈中探出PC/PSW值
    2. 处理器模式转为用户模式

    进程切换的工作过程

    1. (中断/异常等触发)正向模式切换并压入PSW/PC
    2. 保存被中断进程的现场信息
    3. 处理具体中断/异常
    4. 把被中断进程的系统堆栈指针SP值保存到PCB
    5. 调整被中断进程的PCB信息,如进程状态
    6. 把被中断进程的PCB加入相关队列
    7. 选择下一个占用CPU运行的进程
    8. 修改被选中进程的PCB信息,如进程状态
    9. 设置被选中进程的地址空间,恢复存储管理信息
      10.恢复被选中进程的SP值到处理器寄存器SP
      11.恢复被选中进程的现场信息进入处理器
      12.(中断返回指令触发)逆向模式转换并弹出PSW/PC

    进程切换的发生时机

    进程切换一定发生在中断/异常/系统调用处理过程中,常见的情况是:

    1. 阻塞式系统调用、虚拟地址异常。导致被中断进程进入等待态
    2. 时间片中断、I/O中断后发现更高优先级进程
      导致被中断进程转入就绪态
    3. 终止用系统调用、不能继续执行的异常导致被中断进程进入终止态进程

    进程切换与模式切换

    有的时候进行了模式切换但不一定也进行了进程切换。比如时钟。
    处理流程是:

    1. (中断/异常触发)正向模式切换压入PSW/PC
      保存被中断进程的现场信息
    2. 处理中断/异常
    3. 恢复被中断进程的现场信息
    4. (中断返回指令触发)逆向模式转换弹出PSW/PC

    多线程

    单线程结构进程

    在并发程序上存在的问题:

    1. 进程切换开销大
    2. 进程通信开销大
    3. 限制了进程并发的粒度
    4. 降低了并行计算的效率

    多线程结构进程

    多线程结构进程.png

    多线程环境下进程的概念:进程是操作系统中进行保护和资源分配的独立单位。
    具有:

    1. 用来容纳进程映像的虚拟地址空间
    2. 对进程、文件和设备的存取保护机制

    线程是进程的一条执行路径,是调度的基本单位,同一个进程中的所有线程共享进程获得的主存空间和资源。
    线程具有:线程执行状态,受保护的线程上下文,独立的程序指令计数器,执行堆栈,容纳局部变量的静态存储器。

    线程状态有:运行,就绪和睡眠
    线程操作有:孵化,封锁,活化,剥夺,指派和结束

    OS感知线程情况下:处理器调度对象是线程,进程没有三状态。
    OS不感知线程情况下:处理器调度对象是进程。用户调度程序调度线程。

    并发多线程程序设计的优点

    1. 快速线程切换
    2. 减少(系统)管理开销
    3. 线程通信易于实现
    4. 并行程度提高
    5. 节省内存空间

    应用:前台和后台工作,C/S应用模式,加快执行速度,设计用户接口。

    相关文章

      网友评论

        本文标题:操作系统快速入门笔记--1

        本文链接:https://www.haomeiwen.com/subject/wxbzaxtx.html