处理器状态

核心态与用户态的转换

从用户态到内核态:中断和异常是用户态到内核态转换仅有的途径(系统调用、中断或者异常)。
从内核态到用户态:计算机提供一条特权指令:加载程序状态字。

程序状态字

计算机如何知道当前处于何种工作状态呢?
:OS引入PSW来区分不同处理器工作状态。
PSW用来控制指令执行顺序并且保留和指示与程序有关的系统。状态主要作用是实现程序状态的保护和恢复。
每个处理器只设置一个PSW寄存器,每个程序都有一个PSW,程序占有处理器执行,它的PSW将占有PSW寄存器。

程序状态字寄存器

PSW寄存器包括:程序基本状态 中断码 中断屏蔽位

  • 程序基本状态:程序计数器、条件码、处理器状态位。
  • 中断码:保存程序执行使当前发生的中断事件。
  • 中断屏蔽位:指明程序执行中发生中断事件时,是否响应出现的中断事件。

中断

  • 中断是指程序执行过程中,遇到急需处理的事件时,暂时中止CPU上正在执行的程序的运行,转去执行相应的事件处理程序,待处理完成后再返回原来程序被中断处或调度其他程序执行的过程。(与程序的调试设置的断点不同)
  • 需要打断处理器正常工作的原因可能为:请求系统服务,实现并行工作,处理突发事件,满足实时要求。

中断源分类

  • 外中断,与CPU指令无关的来自处理器之外中断信号,如时钟中断,I/O设备中断等。外中断分为可屏蔽中断(如打印机的请求)和不可屏蔽中断(如电源漏电)。
  • 内中断也叫异常,与CPU指令有关的来自处理器内部的中断信号,如故障(fault)、自陷(trap)、终止(abort)、编程异常(programmed exception)。

:外中断与CPU模式无关。
中断处理程序处理过程不能阻塞,异常处理程序处理过程可以阻塞。
可以有多重中断事件,异常只有一重。
中断和异常的响应及服务都需要:
发现中断源
保护现场
转向处理中断或异常事件的处理程序
恢复现场

中断优先级
以不发生中断丢失为前提,把中断按紧迫程度划分不同的级别,级别高的优先获得响应的权力,中断装置预定的这个响应顺序称为中断优先级。
中断屏蔽
可编程中断控制器,通过指令设置屏蔽码,禁止CPU响应中断(硬件产生中断请求后,CUP暂时不响应)或禁止中断产生(引起中断事件的发生时,硬件不允许提出中断请求)。
中断屏蔽的作用

  • 延迟或禁止某些中断的响应。(避免破坏共享数据。)
  • 协调中断响应和中断处理的关系。(与中断优先级的实现有关,高的打断低的,低的不能打断高的。)
  • 防止同级中断相互干扰。

多重中断事件的处理

多重中断(中断嵌套)相当于是中断的中断。中断正在处理时,CPU又响应新的中断事件(优先级高的),于是暂时停止正在运行的中断处理程序,转而去执行新的中断处理程序。
处理方法有:串行处理、嵌套处理和及时处理。

中断请求

在Linux系统,每个能发送中断信号的硬件设备控制器有一根输出线与中断控制器从输入引脚相连,向CPU发送中断信号时申请一条可用的“中断请求线”。中断请求IRQ。

中断处理程序的特定

  • 以异步的方式运行,可能会打断关键代码的执行,甚至打断其他中断处理程序的执行。
  • 在屏蔽中断状态下运行,最坏的情况会禁止所有的中断。
  • 要对硬件进行操作,有很高的时限要求;它在中断上下文中运行,故不能被阻塞。

进程及其实现

进程是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和保护的基本单位,是调度的基本单位。(引入线程后,线程是资源分配的基本单位,进程是调度的基本单位。)

为什么要引入进程

  • 刻画程序的并发性。程序的并发执行引起资源共享和竞争的问题,执行的程序不再处于封闭环境中。“程序”是计算任务的指令和数据的描述,是静态概念,无法刻画程序并发特性,系统需要寻找一个能描述程序动态执行过程的概念,这就是进程。
  • 解决资源的共享性。

进程的特性/属性

  • 动态性,动态概念。
  • 共享性,进程和程序不是一 一对应的。
  • 独立性,独立实体,有虚存空间、PC和内部状态。
  • 制约性,进程因资源共享或协同工作产生相互制约关系。
  • 并发性,进程的执行可以被打断。多个进程的执行在时间上可以重叠,在单处理系统中可以并发执行。

进程三态模型及其状态转换

进程的挂起
为什么进程有“挂起”状态?
:为了让某些进程暂时不参与低级调度,释放它占有的资源,以平滑系统负荷的目的而需引入挂起态。

挂起进程具有的特征

  • 不能立即执行。
  • 可能会等待事件,如等待I/O设备的结果。
  • 可以由进程自己、父进程或操作系统让进程挂起。
  • 只能由父进程或操作系统让进程结束挂起。

进程的描述和组成

进程映象
进程映象:进程控制块、进程程序块、进程核心栈、进程数据块。

进程控制块PCB

PCB是操作系统用于记录和刻划进程状态及有关信息的数据结构。也是操作系统掌握进程的唯一资料结构,包括进程执行的情况,进程让出处理器后所处的状态、断点等信息。
PCB包含:标识信息 现场信息 控制信息

进程队列及组织方式
处于同一状态的所有PCB链接在一起的数据结构成为进程队列。(排列原则:先来先排、优先级或其他原则。)
队列组织方式:线性方式、链接方式、索引方式。

进程切换

进程切换是:让处于运行态的进程中断运行,让出处理机,需要做一次进程上下文切换。(保存老进程的状态,装入新进程的状态。)

进程切换步骤

  • 保存被中断进程处理器现场信息。
  • 修改被中断进程的PCB信息。
  • 把被中断进程的PSW加入相关队列。
  • 选择下一个占有处理器运行的进程。
  • 修改被选中进程的PSW的有关信息。
  • 根据被选中进程设置操作系统用到的地址转换和存储保护信息。
  • 恢复被选中进程的处理器现场。

进程控制和管理

处理器管理的一个主要工作是对进程的控制,包括:创建进程、阻塞进程、唤醒进程、挂起进程、激活进程、终止进程和撤销进程等。
这些控制和管理功能由操作系统中的原语来实现。
什么是原语
:原语是在管态下执行、完成系统特定功能的过程。
原语与机器指令类似,其特点是执行过程中不允许被中断,是一个不可分割的基本单位,原语的执行是顺序的而不是并发的。(因为原语的执行过程不可以被中断。)

创建进程

  • 1.在进程列表中增加一项,从PCB池中申请一个空闲PCB,为进程分配唯一的进程标识符。
  • 2.为新进程的进程映象分配地址空间,以便容纳进程实体。
  • 3.分配除处理器外的其他所需资源。
  • 4.初始化PCB。
  • 5.把新进程状态置为就绪态,并移入就绪队列。
    进程撤销
  • 1.根据要撤销的进程的标识号,从相应队列中找到并移除它。
  • 2.释放该进程的资源。
  • 3.若该进程有子进程,先撤销所有的子进程,以防它们脱离控制。
  • 4.回收PCB,并归还到PCB池中。
    进程阻塞
  • 1.停止进程执行,保存现场信息到PCB。
  • 2.修改PCB有关信息,如进程状态由运行态改为等待态,并移入相应事件的等待队列中。
  • 3.转入进程调度程序去调度其他进程运行。
    进程唤醒
  • 1.从相应等待队列中移出进程。
  • 2.修改PCB有关信息,如进程状态改为就绪态,并移入就绪队列。
  • 3.若被唤醒的进程比当前运行进程优先级高,重新设置调度标志。

OS/处理器状态+中断+进程相关推荐

  1. 【操作系统/OS笔记08】进程的定义、组成、PCB、生命周期管理、状态变化模型、挂起模型

    本次笔记内容: 7.1 进程的定义 7.2 进程的组成 7.3 进程的特点 7.4 进程的控制结构 7.5 进程的生命期原理 7.6 进程状态变化模型 7.7 进程挂起 文章目录 进程的描述 进程(p ...

  2. linux中断--进程上下文和中断上下文

    一.前言 中断发生以后,CPU跳到内核设置好的中断处理代码中去,由这部分内核代码来处理中断.这个处理过程中的上下文就是中断上下文. 为什么可能导致睡眠的函数都不能在中断上下文中使用呢? 首先睡眠的含义 ...

  3. 如何杀掉D,Z状态的进程

    original url: https://blog.csdn.net/bytxl/article/details/41749063 https://blog.csdn.net/qq_34312386 ...

  4. 线程的状态、进程的状态

    一.线程的状态 新建状态.就绪状态.阻塞状态.死亡状态. 1.新建状态 新创建一个线程对象. 2.就绪状态 线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于"可运行 ...

  5. 08 | 案例篇:系统中出现大量不可中断进程和僵尸进程怎么办?(下)

    上一节,我给你讲了 Linux 进程状态的含义,以及不可中断进程和僵尸进程产生的原因,我们先来简单复习下. 使用 ps 或者 top 可以查看进程的状态,这些状态包括运行.空闲.不可中断睡眠.可中断睡 ...

  6. 07 | 案例篇:系统中出现大量不可中断进程和僵尸进程怎么办?(上)

    上一节,我用一个 Nginx+PHP 的案例,给你讲了服务器 CPU 使用率高的分析和应对方法.这里你一定要记得,当碰到无法解释的 CPU 使用率问题时,先要检查一下是不是短时应用在捣鬼. 短时应用的 ...

  7. linux 不可中断的进程,不可中断进程和僵尸进程

    什么是不可中断状态 当 iowait 升高时,进程很可能因为得不到硬件的响应,而长时间处于不可中断状态.从 ps 或者 top 命令的输出中,可以发现它们都处于 D 状态,也就是不可中断状态 (Uni ...

  8. linux进程状态d状态,linux – 进程永久停留在D状态

    我有一个问题,在Ubuntu 10.04.3 LTS上陷入D状态的某些进程. 自11月5日(今天是12月6日)以来,他们一直处于这种状态.我知道这些是不间断的睡眠状态,通常与等待来自硬盘等硬件的数据有 ...

  9. 龙芯处理器内核中断讲解

    龙芯处理器内核中断讲解 这里以龙芯处理器ls2k1000为例讲解 1.和中断相关的协处理器 ① 原因寄存器(Cause) IP7-0指出等待的中断.该位将保持不变直到中断撤除.IP0~IP1 是软中断 ...

最新文章

  1. GDAL Data Model(转)
  2. [中英对照]How PCI Works | PCI工作原理
  3. php集成环境wamp搭建后,如何配置服务器
  4. iOS一个灵活可扩展的开源Log库
  5. HDU1102 Constructing Roads 最小生成树
  6. 深入理解InnoDB(3)—索引的存储结构
  7. Leetcode:0002(两数之和)
  8. 嵌入式linux sd卡读写,嵌入式Linux之我行——S3C2440上MMC/SD卡驱动实例开发讲解(二)...
  9. 【Java数据结构与算法】第十九章 贪心算法、Prim算法和Kruskal算法
  10. pyqt5多进程 python_Python 多进程大全
  11. 量子计算云平台“中国版”启动 量子信息革命正在加速到来
  12. AP聚类算法(Affinity propagation Clustering Algorithm )
  13. Yandex安装插件实现百度网盘不需要会员就能倍速播放
  14. 在OS X中使用Homebrew
  15. java代码实现Excel irr计算
  16. IOI 1994 The_Triangle 题解
  17. 随机池化(Stochastic Pooling)
  18. 管理与维护linux系统(任务五 六 七 八)
  19. 一个华为人19年的工作体会:一颗电容会造成数亿损失[转]
  20. oracle使用PLSQL导出dmp文件一闪而过的解决办法

热门文章

  1. 战队口号霸气押韵8字_衡水中学历届学生最霸气的100条励志标语!条条经典!...
  2. easyui combogrid 本地模糊搜索过滤多列
  3. 旧金山大学 计算机,旧金山大学(University of San Francisco)
  4. HTTP状态码:204
  5. Python读取文件时出现错误
  6. 解决error: unknown type name ‘__u8’问题,认识__u8,__u16,__u32,__u64的大小及作用
  7. python爬取网页内容post_python爬虫之使用POST抓取网页内容
  8. C++ 基础概念(二)
  9. 怎么在Excel中查找指定文本并标记颜色
  10. 浅记项目管理交付标准