处理器管理
处理器状态
处理器管理是操作系统中重要组成部分,负责管理、调度和分配计算机系统的重要资源——处理器,并控制程序执行
由于处理器管理是操作系统最核心的部分,无论是应用程序还是系统程序,最终都要在处理器上执行以实现其功能,因此处理器管理的优劣性直接影响系统性能
程序以进程的形式来占用处理器和系统资源,处理器管理中最重要的是处理器调度,即进程调度,也就是控制、协调进程对处理器的竞争
进程可以被调度在一个处理器上交替地执行,或者在多个处理器上并行执行。不同类型的操作系统可能采取不同的调度策略
交替执行和并行执行都是并发的类型
计算机系统中运行的程序可以分为两大类:系统程序和应用程序,前者实现系统任务,后者实现应用任务
中断和异常是用户态到内核态转换的仅有途径
中断技术
中断概念
中断指在程序执行的过程中遇到紧急处理的事件时,暂时中止现行程序在 CPU 上的运行,转而执行相应的紧急事件处理的程序,待处理完成后再返回断点或者或者调度其他程序执行的过程
中断源分类
由硬件发出或者产生的中断称为硬中断,按硬中断事件的来源和实现手段可将中断分为外中断和内中断
外中断又叫中断或者异步中断,是指来自处理器之外的中断信号,包括时钟中断、键盘中断、它机中断和外部设备中断等。外中断又分为可屏蔽中断和不可屏蔽中断,各个中断具有不同中断优先级,表示事件的紧急状态,在处理高一级中断时,往往会部分或者全部屏蔽低级中断
内中断又称异常中断或者同步中断,是指来自处理器内部的中断信号,通常是由于在程序执行过程中,发现与当前指令关联的、不正常的或者错误的事件
内中断又可细分为:
访管中断,由执行系统调用而引起的
硬件故障中断(处理器内部的硬件),如电源失效、奇偶校验错误、总线超时等
程序性异常,如非法操作、地址越界、页面故障、调试指令、除数为0和浮点数溢出
所有这些事件均由异常处理程序处理,并且通常依赖于执行程序的当前现场
中断和异常的响应以及服务
无论是处理器外部产生的中断还是内部出现的异常,或是程序执行系统调用自愿访管;无论中断源是被动的还是主动的,cpu的响应过程基本上是一致的,即在执行完当前指令后,根据中断源所提供的得“中断向量”,在内核中找到相应中断服务例程并调度执行
中断向量:中断服务程序的入口地址
中断响应:由硬件对中断和异常事件做出反应的过程称为中断响应
中断:外部设备、时钟部件、或者其他计算机发出的,发现中断源并产生中断的硬件称为中断控制器,这些硬件包括中断逻辑线路和中断寄存器,当前指令执行结束后,CPU会检查中断寄存器是否有中断事件发生,若无中断信号或中断信号被屏蔽,继续执行程序的后序指令,否则将暂停执行当前程序,转向内核的中断处理程序运行
异常:在执行指令的时候,由指令本身的原因发生的,指令的控制逻辑和实现线路一旦发现异常情况便转向内核的异常处理程序
中断/异常的响应需要顺序做四件事:
发现中断源
在中断没有被屏蔽的情况下,硬件(中断控制器)发现中断/异常事件,并由 CPU 响应中断/异常请求。当发现多个中断源的时候,将根据预设的中断优先级先后响应中断请求
保护现场
暂停当前程序的运行,硬件将中断点的现场信息(PSW)保存至核心栈,使得中断/异常处理程序在运行的时候不会破坏中断程序中的有用信息,以便在处理结束后返回原程序继续运行
转向中断/异常事件处理程序执行
此时处理器已经从用户态转换至内核态,中断/异常程序开始工作
恢复现场
当中断处理结束后,恢复原运行程序的 PSW ,重新返回中断点以便执行后续指令
4. 中断事件处理原则
硬件故障中断
硬件故障导致,如电源故障、内存故障、设备故障等,需要人工干预。同时中断处理程序需要保护现场,停止设备工作,停止处理机运行,向操作员报告故障信息并对故障造成的破坏进行估计和恢复
程序性中断
语法错误:编译程序发现并报错
逻辑错误:测试程序发现并报错
程序运行的额过程中产生的异常,如定点溢出、阶下溢、除数为 0 等
I/O中断
访管中断
时钟中断
时钟是操作系统进行调度的重要工具,如维护系统绝对日期和时间、让分时进程按照时间片轮转等
进程及其实现
进程定义和属性
进程是操作系统中资源分配的基本单位,它是由一组机器指令,数据和堆栈等组成的,是一个能独立运行的活动实体,多个进程可以并发执行和交换信息
进程的提出是为了刻画程序的并发性、解决资源的共享性
进程的属性:动态性、共享性、独立性、制约性、并发性
进程状态和转换
等待态:又称阻塞态或者睡眠态,指进程不具备运行条件,正在等待某个事件完成的状态
就绪态:进程具备运行条件,等待系统分配处理器以便运行的状态
运行态:进程占有处理器正在运行的状态

进程的描述和组成
进程的四个组成要素:控制块、程序块、数据块、核心栈
进程控制块:每一个进程捆绑一个,用来存储存储进程的标志信息、现场信息和控制信息。进程创建时建立进程控制块,进程撤销时回收进程控制块,它与进程一一对应
进程程序块:进程执行的程序,规定进程一次运行所应完成的功能
进程核心栈:每一个进程绑定一个,进程在内核态工作时使用,用来保存中断/异常现,保存函数调用的参数、局部变量和函数返回地址等
进程数据块:是进程的私有地址空间,存放各种私有数据,用户栈也在数据块中开辟,用在函数调用时存放栈帧、局部变量和返回地址等
进程控制块
相关文章:
处理器管理
处理器状态处理器管理是操作系统中重要组成部分,负责管理、调度和分配计算机系统的重要资源——处理器,并控制程序执行由于处理器管理是操作系统最核心的部分,无论是应用程序还是系统程序,最终都要在处理器上执行以实现其功能&…...
跟着我从零开始入门FPGA(一周入门系列)第五
5、同步和异步设计 前面已有铺垫,同步就是与时钟同步。 同步就是走正步,一二一,该迈哪个脚就迈那个脚,跑的快的要等着跑的慢的。 异步就是搞赛跑,各显神通,尽最大力量去跑,谁跑得快,…...
【第42天】Arrays.sort 与 Collections.sort 应用 | 整形数组与集合的排序
本文已收录于专栏🌸《Java入门一百练》🌸学习指引序、专栏前言一.sort函数二、【例题1】1、题目描述2、解题思路3、模板代码4、代码解析二、【例题1】1、题目描述2、解题思路3、模板代码4、代码解析三、推荐专栏序、专栏前言 本专栏开启,目的…...
LeetCode第334场周赛
2023.2.26LeetCode第334场周赛 A. 左右元素和的差值 思路 前缀和后缀和 代码 class Solution { public:vector<int> leftRigthDifference(vector<int>& nums) {int n nums.size();vector<int> l(n), r(n), ans(n);for (int i 1; i < n; i )l[…...
基于深度学习的三维重建网络PatchMatchNet(三):PatchMatchNet配置及代码主要运行流程
目录 1.PatchMatchNet环境配置 2. PatchMatchNet的大致执行流程(eval.py) 2.1 深度图的保存...
【一天一门编程语言】设计一门编程语言,给出基础语法代码示例,SDK设计。
文章目录设计一门编程语言,给出基础语法代码示例,SDK设计。一、编程语言设计1.1 语言名称1.2 数据类型1.3 基本运算符1.4 控制语句二、SDK设计2.1 基础库2.2 第三方库三、例子用 Mango 这门语言实现斐波那契数列。基础语法代码示例SDK 设计使用 Mango 语…...
ubuntu 下 python 安装 venv
ubuntu 下 python 安装 venv1.首先,确保您的系统已安装 Python3 和 pip3,如果没有安装,可以使用以下命令安装:2. 接着,安装 virtualenv 包,使用以下命令:3.创建 Python 虚拟环境,使用…...
HTML#1快速入门
一. 简介HTML是一门语言, 所有的网页都是用HTML编写的HTML(Hyper Text Markup Language): 超文本(超越了文本限制,除了文字信息还可以定义图片,音频,视频等)标记语言(有标签构成的语言)W3C标准: 网页主要由三部分组成(1) 结构: HTML(2) 表现: CSS(3) 行为: JavaScript二. 快速入…...
【MySQL】事务隔离级别是怎么实现的?
事务隔离级别是怎么实现的? 四种隔离级别具体的实现方式 对于「读未提交」:直接读取最新的数据就好。对于「串行化」:通过加读写锁的方式来避免并行访问。对于「读提交」和「可重复读」:通过 Read View 来实现,主要区…...
JSP网上书店系统用myeclipse定制开发mysql数据库B/S模式java编程计算机网页
一、源码特点 JSP 网上书店系统 是一套完善的系统源码,对理解JSP java 编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。研究的基本内容是基于网上书店系 统,使用JSP作为页面开发工具。Web服务的运…...
配置 Haproxy 负载均衡群集
配置 haproxy 负载均衡群集 🏆荣誉认证:51CTO博客专家博主、TOP红人、明日之星;阿里云开发者社区专家博主、技术博主、星级博主。 💻微信公众号:微笑的段嘉许 📌本文由微笑的段嘉许原创! &#…...
计算机网络笔记 | 第一章:计算机网络概述(1.1-1.4小节知识点整理)
从专栏将讲述有关于计算机网络相关知识点,如果有想学习Java的小伙伴可以点击下方连接查看专栏,还有JavaEE部分 本专栏地址(持续更新中):🔥计算机网络 MyBatis:✍️MyBatis Java入门篇࿱…...
Flutter3引用原生播放器-Android篇
接上篇:Flutter3引用原生播放器-IOS(Swift)篇 安卓端原生播放器的接入思路与ios基本一致,所以本篇就不废话了,直接上代码: 创建插件VideoViewPlugin实现FlutterPlugin: package io.flutter.plugins.videoplayer;imp…...
SerenityOS 操作系统类 Unix 操作系统
创建于2018年的SerenityOS是一个类似Unix的操作系统,但是带有图形化界面,适合X86台式计算机,,其界面类似90 年代的Win98/NT。几乎由一个人完成额操作系统。这几天其Web浏览器通过了 Acid3 浏览器。 Kernel features 具有抢占式多…...
Bean作用域和生命周期
目录 Bean作用域的例子 作用域定义 Bean的六种作用域 设置作用域 Spring的执行过程和Bean的生命周期 Spring的主要执行流程 Bean的生命周期 在上篇博客中我们使用Spring存储和获取Bean,因此Bean是Spring中最重要的资源,今天这篇博客就深入了解Bean对象 Bean作用域的例子 …...
STM32笔记
目录 1.1. 预备阶段 1.2. 单片机介绍 2. 初识STM32 2.1. STM32 1.1. 预备阶段 1.2. 单片机介绍 1.2.1. 单片机是什么 单片微型计算机(Single Chip Microcomputer)简称为单片机(Microcontrollers),也称为微控制单元(Microcontroller Uni…...
【论文阅读】基于LevelDB的分布式数据库研究
基于LevelDB的分布式数据库研究 基于LevelDB的分布式数据库的研究与实现 - 中国知网 (cnki.net) 实现了什么? 基于键值型NoSQL数据库LevelDB,并与数据一致性算法Raft、 数据分片和负载均衡相结合,设计并实现基于LevelDB的分布式数据库。 主要…...
JavaScript高级 Iterator Generator
1. Iterator 1. JavaScript迭代器协议 在JavaScript中,迭代器也是一个具体的对象,这个对象需要符合迭代器协议(iterator protocol): ◼ 迭代器协议定义了产生一系列值(无论是有限还是无限个)…...
数字IC手撕代码--乐鑫科技(次小值与次小值出现的次数)
前言:本专栏旨在记录高频笔面试手撕代码题,以备数字前端秋招,本专栏所有文章提供原理分析、代码及波形,所有代码均经过本人验证。目录如下:1.数字IC手撕代码-分频器(任意偶数分频)2.数字IC手撕代…...
JavaScript DOM和BOM
目录 查找html元素 1.通过id 2.通过标签名 3.通过类名 DOM 1.创建动态的HTML内容 2.修改元素内容 3.改变HTML属性 4.改变css样式 DOM事件 DOM节点 1.添加HTML元素 2.删除HTML元素 浏览器对象 1.Window对象 2.Screen对象 3.History对象 4.Location对象 5.Navi…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...
