键盘输入a,到屏幕显示,操作系统做了什么
首先,假定操作系统有中断系统。
- 等待的键盘写入的时候,txt进程被read函数阻塞。
- 输入a之后,首先控制器,把扫描到的a放入到了控制器的寄存器中。
- 触发硬中断通知cpu—> 中断IO控制方式,由硬件触发的。键盘读入中断
- cpu触发软中断,调用键盘驱动程序,将a读入到读队列中。
- 然后txt进程从阻塞态,变成就绪态。
- txt进程调用receivefrom函数,将a读入到用户态内存中。
- 之后,调用write函数,发生内核态到用户态的转换,将a写入到写队列中。
- 写队列中有内容,触发硬中断通知cpu----> 缓冲满中断
- cpu触发软中断,调用屏幕的驱动程序。
- 写完之后,触发硬中断,通知cpu已经写完了,cpu读取到了硬件状态寄存器的状态,发现没有问题,就通知显示屏幕显示。----> 屏幕写完中断
总结一下参与者
- txt进程
- 键盘
- 显示器
注意这里没有explore进程和所谓的定时读的进程。因为控制方式是中断方式,所以一旦队列中有内容之后,会触发中断,而不是定时轮询。另外由于键盘和显示屏幕都是字符设备。所以采用中断方式,而不是DMA方式进行IO,那么就是以字节为单位进行的输入输出。一旦有了一个字节到缓冲队列,就会直接触发中断。
最后
键盘输入到内存这一块没啥问题,但是对于屏幕显示,我看有的文章中说,是由某一进程,定时刷新做的。这里还是假定是txt进程进行了系统调用,将内容写到屏幕上。就像ctrl+s,将内容写入到磁盘上一样。
键盘输入a,到屏幕显示,操作系统做了什么相关推荐
- C语言练习题,编写程序实现以下功能。从键盘输入一个整数,若输入数字0,则屏幕显示:“Sunday“;若输入数字1,则屏幕显示:“Monday“;若输入数字2,则屏幕显示:“Tuesday“;若输入数字
编写程序实现以下功能.从键盘输入一个整数,若输入数字0,则屏幕显示:"Sunday":若输入数字1,则屏幕显示:"Monday":若输入数字2,则屏幕显示:&q ...
- (java)从键盘输入一行英文字符串,只统计字符串中出现的每个英文字母的个数。大小写字母算相同的字符,不做区分,例如a和A,算相同字符。
问题描述] 从键盘输入一行英文字符串,只统计字符串中出现的每个英文字母的个数.大小写字母算相同的字符,不做区分,例如a和A,算相同字符. [输入形式] 输入一行英文字符串. [输出形式] 以合适的形式 ...
- java如何从屏幕输入数字_关于java的从键盘输入,从显示屏上输出?怎么做?为什么?...
看了一本java的入门书,但是其中居然没有讲到java的泛型编程,其实现在我学习java陷入的困境,很迷惑.java中有无数的类,尤其是关于流的那块,类数之不尽,但是关于从键盘输入和从显... 看了一 ...
- 使用BIOS进行键盘输入和磁盘读写---汇编学习笔记
汇编笔记 使用BIOS进行键盘输入和磁盘读写 17.1 int 9中断例程对键盘输入的处理 17.2 使用int 16h中断例程读取键盘缓冲区 17.3 字符串的输入 17.4 应用int 13h中断 ...
- Cocos2Dx之处理键盘输入
键盘输入在Cocos2Dx分为两个部分.第一部分是一些功能键的处理:后退键和菜单键.第二部分是处理字符输入.功能键相关的代码位于cocos2dx\keypad_dispatcher.字符输入的代码位于 ...
- 【问题描述】3.1.5 用整数1~7依次表示星期一至星期日。由键盘输入一个整数,输出对应的英文表示,如果输入的整数在1~7之外,输出“Error”信息。【样例输入1】1【样例输出1】Monda
[问题描述]3.1.5 用整数1~7依次表示星期一至星期日.由键盘输入一个整数,输出对应的英文表示,如果输入的整数在1~7之外,输出"Error"信息. [样例输入1]1 [样例输 ...
- C语言:从键盘输入两个字符串,输出第一个字符串在第二个字符串中的位置
从键盘输入两个字符串,输出第一个字符串的首字母在第二个字符串中的位置. 如"abc"在"bbbacccabcddaw3"的位置为7. 悬赏分:50 | 解决时间 ...
- Cocos2Dx之处理键盘输入-欧阳左至
键盘输入在Cocos2Dx分为两个部分.第一部分是一些功能键的处理:后退键和菜单键.第二部分是处理字符输入.功能键相关的代码位于cocos2dx\keypad_dispatcher.字符输入的代码位于 ...
- 【ubuntu】ubuntu端向日葵键盘输入卡顿
文章目录 1.问题现象 2.解决思路 3.操作过程 附录:ubuntu输入法框架 1.问题现象 最近,利用向日葵远程操控ubuntu电脑时,出现键盘输入延迟的情况.具体表现为:鼠标操作正常.网页打开正 ...
最新文章
- android ViewPager 不带滑动效果切换item
- 文本打开方式和二进制打开方式的区别是什么?
- SpringMVC+Mybatis学习
- Data URI scheme 在 html 中嵌入小图片
- 聚类方法(Clustering)
- mvn 使用中的错误
- python基础for循环和while循环(十)
- 北京语言大学计算机科学与技术研究生好考吗,北京语言大学计算机科学与技术专业研究生培养方案...
- 解决Eclipse中文乱码的问题
- 猫眼电影的android源代码!,微信小程序入门demo之猫眼电影
- 洛必达法则-求导的方法求解出极限
- java排座位程序_java随机排座位
- 个人实用软件清单(佛系更新中……)
- react指定ref的三种方式
- 40、卤代烷灭火系统模拟喷气试验
- Vue+EleMentUI实现el-table-colum表格select下拉框可编辑
- git删除未监视的文件(untracked files)命令用法
- CSUSTOJ 我爱吃烧烤 (状压dp)
- JSP cookie详解
- SlickEdit 之windows 版本安装