当前位置: 首页 > news >正文

建设网站用户名河南专业网络推广公司

建设网站用户名,河南专业网络推广公司,有哪些可以做头像的网站,武安市网站建设费用文章目录 从中断控制器的角度来理解整个中断处理的过程复习 处理器的中断处理机制**中断驱动I/O方式** printf——从系统调用到I/O控制方式的具体实现1轮询方式下输出一个字符串(程序查询)中断驱动方式下输出一个字符串中断服务程序中断服务程序与设备驱动程序之间的关系 DMA方… 文章目录 从中断控制器的角度来理解整个中断处理的过程复习 处理器的中断处理机制**中断驱动I/O方式** printf——从系统调用到I/O控制方式的具体实现1轮询方式下输出一个字符串(程序查询)中断驱动方式下输出一个字符串中断服务程序中断服务程序与设备驱动程序之间的关系 DMA方式下输出一个字符串 scanf——中断方式下输入要给字符串的具体过程 从中断控制器的角度来理解整个中断处理的过程 深入理解中断机制——从中断控制器出发 当外设准备好时便从CPU发出中断请求CPU响应后中止现行程序的执行转入一个中断服务程序进行输入/出操作实现主机和外设接口之间的数据传送并启动外设工作。“中断服务程序”执行完后返回原被中止的程序断点出继续执行。此时外设和CPU并行工作。 复习 处理器的中断处理机制 关中断将中断允许标志清零。在psw中一个标志位中断允许标志位 中断发生时处理器必须做以下基本处理: ① 保护断点和程序状态: 将返回原程序的断电和程序状态保存到堆栈中或特殊寄存器中。 PC堆栈 或 特殊寄存器 PSWR堆栈 或 特殊寄存器 (PSW)程序状态字 PSWRPSW寄存器用于存放程序状态的寄存器。如x86的FLAGS ② 识别中断事件 有两种不同的方式软件识别和硬件识别向量中断方式 (1) 软件识别(MIPS采用)设置一个异常状态寄存器MIPS中为Cause寄存器用于记录异常原因。操作系统使用一个统一的异常处理程序MIPS的入口为0x8000 0180该程序按优先级顺序查询异常状态寄存器识别出异常事件。 (2) 硬件识别向量中断80x86采用用专门的硬件查询电路按优先级顺序识别中断得到一个“中断类型号”根据此号到中断向量表中读取对应的中断服务程序的入口地址。 PIC:可编程的硬件控制器识别了中断事件之后就会切换到某一个具体的中断服务程序执行。 ③ 切换到具体的中断处理程序执行 中断控制器的基本结构 问题一 形成中断号向量地址送到什么线上 送到数据线上。 数据线不仅能传送指令还能传送向量地址第二个问题 何时采样 当前指令周期结束后每条指令执行的最后一个操作控制信号就要求CPU去检测这个INTR是否有中断请求信号那么CPU采样到这个INTR信号有效就立即进入中断响应周期。中断查询信号什么时候发出 在 CPU 进入中断响应周期后CPU 会暂停当前正在执行的指令并保存当前的执行状态如程序计数器、寄存器等以便在中断处理完成后能够恢复执行。*经过了一个固定的延迟时间*然后CPU 会发出中断查询信号以查询哪些中断请求是有效的且未被屏蔽的。*发出中断查询信号这个信号的作用是触发系统中所有中断源的响应。*这个中断查询信号会发送给系统中的所有中断源每个中断源都会根据自身的状态是否有中断请求且未被屏蔽来响应这个信号。如果某个中断源有有效的中断请求且未被屏蔽它就会向判优电路发出信号。以便判优电路能够选择一个优先级最高的中断请求进行响应。 判优电路可以被看作是一个编码器它将【多个中断请求信号】转换为一个【单一的中断向量号】该向量号指向中断处理程序的入口地址。 CPU能不能检测到信号由中断处理优先级决定 响应顺序ABC 处理顺序CBA 它的完成的顺序就是先完成c再完成b 那么最后才完成a它的响应的顺序是在执行a的过程当中它先响应的b然后后响应的c 中断响应优先级判优电路决定的中断处理优先级中断屏蔽字寄存器来决定的它。它是中断服务程序来设置的。能不能检测到中断请求信号有效。只有检测到中断请求信号又笑了才能进入到下一步。 在中断处理过程中当系统内有ABC三个中断源且它们的中断响应优先级为abc中断处理优先级为cba时 当前状态CPU正在执行中断源a的中断服务程序。 中断请求同时中断源b和c发出中断请求。 中断检测 CPU在执行完一条指令后检查中断请求信号寄存器intr。 由于中断处理优先级cba当前执行的中断服务程序a无法屏蔽b和c的中断请求。 因此b和c的中断请求使intr寄存器有效。 中断响应 CPU检测到有效的中断请求信号。 CPU发出中断查询信号以确定要响应哪个中断源。 由中断响应优先级bc决定判优电路选择中断源b并形成中断源b的向量地址送到CPU。 CPU响应并处理中断源b的中断。 中断服务程序执行 CPU执行中断源b的中断服务程序。 在中断服务程序中b设置新的屏蔽字并保存现场。 如果系统支持多重中断b的中断服务程序会开启中断。 多重中断处理如果系统支持 在b的中断服务程序执行期间CPU检测到中断源c的中断请求有效因为c的处理优先级高于b且此时未被屏蔽。 CPU响应并处理中断源c的中断。 执行c的中断服务程序。 恢复与返回 c的中断服务程序执行完毕后返回到b的中断服务程序继续执行。 b的中断服务程序执行完毕后最终返回到原来的中断源a的中断服务程序或主程序。 完成顺序 响应顺序在执行a的过程中先响应b后响应c由中断响应优先级决定。 完成顺序先完成c再完成b最后完成a由中断处理优先级和多重中断处理机制决定。 中断驱动I/O方式 中断过程 中断响应(硬件实现)中断处理(软件实现) 中断响应 中断响应是指主机发现外部中断请求中止现行程序的执行到调出中断服务程序这一过程。 (1)中断响应的条件 CPU处于开中断状态在一条指令执行完至少要有一个未被屏蔽的中断请求 问题中断响应的时间点和异常处理的时间点是否相同为什么 中断一定是在一条指令执行结束后开始宣询有无中断请求有的话立即响应所以一定是在指令执行完时响应中断而“异常”发生在指令执行过程中所以不能等到指令执行完才进行异常处理缺页异常、非法操作码 中断响应过程 当CPU决定响应中断时会执行一系列操作包括关中断以防止新的中断干扰当前中断处理、保存断点即保存下一条将要执行的指令的地址和程序状态如寄存器内容然后识别中断源并跳转到相应的中断服务程序。 典型的中断处理(三阶段) 先行段(准备阶段) 保护现场及旧屏蔽字通用寄存器当中的内容中断返回需要恢复旧的屏蔽字查明原因软件识别中断时设置新屏蔽字开中断多重中断需要 本体段具体的中断处理程序结束段(恢复阶段) 关中断恢复现场及旧屏蔽字清“中断请求”开中断中断返回 异常处理过程 不同的中断源会调用不同的中断服务程序进行处理。 不同的异常类型也会触发不同的异常处理程序进行响应。 多重本断和中断处理优先权的动态分配 多重中断的概念 在一个中断处理(即执行中断服务程序)过程中若又有新的中断请求发生而新中断优先级高于正在执行的中断则应立即中止正在执行的中断服务程序转取处理新的中断。这种情况为多重中断也称中断嵌套。 中断优先级的概念: 中断响应优先级----由查询程序或硬联排队线路决定的优先权反映多个中断同时请求时选择哪个响应。 中断处理优先级----由各自的中断屏蔽字来动态设定反映本中断与其它中断间的关系。 当我们正在执行用户程序时假设中断源2和4同时发出中断请求。由于此时系统没有执行其他中断服务程序因此这两个中断源都没有被屏蔽它们会同时被送往硬件排队器进行排队。 在决定先响应哪个中断请求时我们需要依据中断响应优先级。由于中断源2的优先级高于中断源4因此CPU会首先响应中断源2的中断请求。在执行中断源2的中断服务程序过程中我们需要先保存现场、旧的屏蔽字并设置新的屏蔽字。 在具体的中断处理前我们需要先开启中断。但需要注意的是一旦开启中断CPU会立即检测到当前系统中的其他中断请求即中断源4的请求。由于中断源4的优先级仍然高于当前正在处理的中断源2但低于已经决定先响应的2这里指的是在开启中断后的即时检测且此时没有其他更高优先级的中断请求因此CPU会立即转到中断源4的中断服务程序去执行。等待中断源4执行完毕后CPU会返回到中断源2的中断服务程序环境中继续执行其剩余部分。 接下来当中断源2的执行过程中中断源1、3和5同时发出中断请求。根据中断处理优先级1523中断源2能够屏蔽掉中断源3的请求但无法屏蔽中断源1和5的请求。因此这两个请求会被送往硬件排队器进行排队。 由中断响应优先级决定CPU会先执行中断源1的中断服务程序。由于中断源1的优先级最高因此它不会被中断源5打断。等待中断源1执行完毕后CPU会返回到中断源2的中断服务程序环境中。一旦返回到此环境由于中断源5的优先级高于中断源2但此时是在中断源2恢复执行后的检测CPU会立即响应中断源5的中断请求并执行其中断服务程序。 等待中断源5执行完毕后CPU再次返回到中断源2的中断服务程序环境中。此时所有中断源1、4、5的中断服务程序都已执行完毕。系统中只剩下中断源3发出的中断请求。**由于中断源2的优先级高于中断源3因此中断源3的请求被中断源2屏蔽。**等待中断源2执行完毕后CPU会先返回到用户程序环境中。 在用户程序环境下CPU才能够检测到中断源3发出的中断请求并立即响应它执行中断源3的中断服务程序。等待中断源3执行完毕后CPU最终返回到用户程序继续执行。 在开启中断后CPU会立即检测到当前系统中的其他中断请求。中断屏蔽是指CPU在处理某个中断时能够屏蔽掉其他低优先级的中断请求。在处理完所有中断请求后CPU需要返回到用户程序继续执行。需要理解这一步骤的必要性和作用。 printf——从系统调用到I/O控制方式的具体实现1 printf(“Hello World”); 用户层I/O软件 库函数系统调用命令假脱机Spooling系统 第一阶段的工作由库函数完成 // printf在函数库中展开后的代码 char buf[20]; //申请一个字符数组 将字符串“Hello World”填入buf中; write(1buf8);//实际的系统调用命令 执行系统调用的操作 传递系统调用参数执行陷入指令执行相应的服务程序返回用户态 中断隐指令完成保存断点和程序状态字、将CPU模式改为内核态 操作系统完成保存通用寄存器的内容和执行系统调用服务例程 字符串输出最终是由内核中的sys_write系统调用例程实现 sys_write可用三种I/O方式实现:程序查询、中断和DMA 轮询方式下输出一个字符串(程序查询) I/O设备(包括设备控制器)将自己的状态放到状态寄存器中 显示器忙、未就绪等都是状态 OS阶段性地查询状态寄存器中的特定状态以决定下一步动作 如:未“就绪”时则一直“等待” 例如:sys write进行字符串打印的程序段大致过程如下 copy_string_to kernel(strbuf,kernelbuf,n);/ 将字符串复制到内核缓冲区系统调用write位于内核态需要把用户缓冲区的内容复制到内核空间。 内存共享 for (i0; i n; i){ // 对于每个打印字符循环执行 while ( printer status ! READY);//等待直到显示器状态为“就绪”*printer_data portkernelbuf[i];//向数据端口输出一个字符 *printer_control_portSTART;// 发送“启动输出”命令 return_to_user();//返回用户态如何判断就绪?如何等待? 读取状态寄存器判断特定位1-就绪;0-未就绪)是否为1 等待:读状态、判断是否为1不是则继续读状态、判断…… I/O接口I/O控制器的结构 通过I/O控制寄存器发送命令字来向设备发送命令 通过从状态寄存器读取状态字来获取外设或I/O控制器的状态信息 通过I/O控制器发送或读取数据来和外设进行数据交换 将I/O控制器中CPU能够访问的各类寄存器称为I/O端口 对外设的访问通过向I/O端口发命令、读状态、读/写数据来进行。 就绪的含义 显示器控制器的数据缓冲中内容已经被取走现为“空可接受新的打印字符。由显示器控制器自动设置。 特点: 简单易控制、外围接口控制逻辑少CPU与外设串行工作效率低、速度慢适合于慢速设备.查询开销极大(CPU完全在等待“外设完成”)工作方式:完全串行或部分串行CPU用100%的时间为I/O服务! 中断驱动方式下输出一个字符串 绿色部分是CPU和外设并行工作的时间 程序切换响应中断是由硬件完成的 就是执行中断隐指令。执行中断隐指令的时间又是绿色部分的这段时间。就是CPU和外设。程序切换响应中断是由硬件完成的 就是执行中断隐指令。 Q1:以上过程中设备驱动程序在哪些过程中体现的?是以单独的进程的形式存在的吗? Q2:以上过程中设备驱动程序和中断处理程序全部在同一个进程中运行吗? 设备驱动程序一定有一部分是在发起系统调用的进程A当中执行的。而中断处理程序则不一定是在进程A中执行取决于CPU响应中断时正在执行哪个进程。 Q3:以上过程中如果不采用内核缓冲区直接使用用户缓冲区会发生什么问题? 系统调用write位于内核态需要把用户缓冲区中的内容复制到内核空间。 中断服务程序在运行的时候是在进程B的资源平台上进程B的页表与进程A的页表是不同的而用户缓冲区buf进程A中的地址它不能用进程B的页表来进行地址映射。而内核缓冲区中的数据无论是进程A还是进程B它们的内核地址空间中的内容都是相同的因此能顺利的访问。 为什么有开中断?是在哪里进行关中断的? 在系统调用入内核态的时候进行了关中断所以此时有对应的关中断。 此程序段和轮巡方式下的sys write程序段最本质的区别在哪里 中断方式下仅仅是把第一个字符放数据寄存器中然后就不管了至于这个字符何时打印出来以及剩余的字符如何打印出来就不是系统调用函数的任务了。 剩余的那些字符在哪里处理呢? 当然是在中断服务程序当中 什么时候调出中断服务程序呢? 当第一个字符输出完成之后然后外设会向CPU发出一个中断请求然后调出相应的中断服务程序。当显示器完成了第一个字符的输出之后这个时候调出中断服务程序。 中断服务程序 sys_write 是如何调出来的? 系统调用 中断服务程序是如何调出来的? 外设完成任务!然后向CPU发出中断请求 总结完成字符串输出需要两个函数 system_write中断服务程序 过程 用户进程A执行write触发系统调用进入内核态 把第一个字符“H”送到显示器的设备控制器。控制器命令显示器输出这个字符与此同时进程A被阻塞调度另一个进程B执行 当“H”输出之后控制器发出一个中断给CPU并跳转到相应的中断处理程序在中断处理程序中进行后续的字符输出。 当“H”输出之后控制器发出一个中断给CPU并跳转到相应的中断处理程序在中断处理程序进行后续的字符输出。 注意此时并没有发生进程的切换仍然是进程B在运行但执行的指令(中断服务程序)实际上是在做进程A的工作是在帮助进程A完成此次I/O! 中断服务程序与设备驱动程序之间的关系 如果题目当中同时出现了中断服务程序和设备驱动程序那么这里的中断服务程序垂解为中断总控程序! 如果题目当中只有中断服务程序那么一般情况下此时中断服务程序应该理解123456整个过程。 数据传输过程 计组里面强调是中断处理程序 而在操作系统里面它强调的是设备驱动程序 DMA方式下输出一个字符串 DMA优先权高 dma控制器当中的数据如果不被及时的取出那么就容易被后续的数据给它冲刷掉但是CPU里面的数据因为它是有通用寄存器的数据可以暂存在CPU里面的通用寄存器。 DMA控制器接受到“启动”命令后控制总线进行DMA传送。通常用周期挪用法“:设备每准备好一个数据挪用一次”存储周期“使用一次总线事务进行数据传送计数器减1。计数器为0时发送DMA结束中断请求。 驱动程序 scanf——中断方式下输入要给字符串的具体过程 中断驱动方式下输入一个字符串 基本思想: 首先是用户进程A执行它执行了scanf函数然后进入系统调用然后到标准接口read函数然后再到驱动程序foo read函数这些都是普通的函数调用都是在进程A的资源平台上运行的。接下来在foo read函数中在使用outb指令启动了这次I/O操作后进程A就会被阻塞起来。然后进行进程切换调度另一个进程B去运行。当B在运行时如果I/O操作完成就会发生一次中断把进程B打断并跳转到中断处理程序foo interruptible去执行然后在这里再去唤醒进程A。 通过sys_read字符输入核心程序段和中断处理程序foo_interruptible执行 这里的程序使用到了程序的PV同步互斥问题 关于I/O系统你还记得哪些? 计组里面着重讲三种I/O控制方式操作系统里面着重讲I/0软件的处理过程软硬件究竟是怎么协同工作的呢??? 不同的I/O控制方式对应不同的设备驱动程序工作流程上到底有什么样的区别呢? 设备驱动程序和中断处理程序到底是什么呢?有什么区别呢?是什么关系呢?傻分不清楚? 什么是设备控制器?用户缓冲区?内核缓冲区?数据究竟是怎么一步一步一步的输入输出的呢?每一个过程是由什么程序来控制的呢? 系统调用在I/O里面起了什么作用呢?中断软件机制和中断硬件是怎么协同工作的呢? 关于I/O系统你是不是一团浆糊? ②① ③ 键盘中断处理程序执行的时候还是处于阻塞态。CPU处于内核态。中断响应的过程中由硬件进行转换来完成。
http://www.hkea.cn/news/14579937/

相关文章:

  • 管家婆免费资料网站163企业邮箱申请
  • 天梭手表官方网站湛江制作公司网站
  • 国外建筑网站app网站空间登录
  • 嘉兴网站制作维护建个平台需要多少资金
  • 建设银行瓶窑支行网站wordpress小说主题模板下载地址
  • 网站内容的特点网站内链 工具
  • 做网站上找王思奇delphi xe10网站开发
  • 做网站需不需要营业执照阿里云个人备案可以做企业网站吗
  • 无锡网站程序烟台seo外包
  • 广州哪些做网站的公司做网页的软件叫什么dw
  • 排版设计网站江门网站推广多少钱
  • 淘宝客网站根目录闽侯县网站建设
  • 惠来建设局网站德清淘宝网站建设
  • 做个网站多少钱一年苏州seo公司排名
  • 做网站换服务器怎么整普宁市建设局网站
  • 宁波网站建设制作方法各种浏览器的网址
  • 江苏华建建设股份有限公司网站自己的网站做弹出广告
  • 网站怎么做是满屏中信建设有限责任公司总经理
  • 如何设计网站站点淘客个人网站怎么建设
  • 网站开发环境实验报告最优的手机网站建设
  • 惠民县建设局网站重庆全网推广
  • 快速做网站流量数据统计分析千万不要报电子商务
  • 自学免费网站建设做网站技术路线
  • wordpress手机站模板衡水提供网站制作公司哪家好
  • 襄阳营销网站建设德州有做网站的
  • 图门市建设局网站做一下网站需要什么时候开始
  • 济源市建设网站镇江网站建设
  • 网站模板 使用左侧 导航 网站
  • 苏州做网站优化的公司基于大数据的精准营销
  • 湖南网站备案html网站建设心得体会