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

wordpress 企业整站海外社交网站开发

wordpress 企业整站,海外社交网站开发,商标如何自己注册,哪些公司经常做网站操作系统设备驱动学习之旅——以显示器驱动为例 从这一节开始,我要学习操作系统的第四个部分,就是i o设备的驱动。今天要讲的是第26讲,内容围绕i o设备中的显示器展开,探究显示器是如何被驱动的,也就是操作系统怎样让…

操作系统设备驱动学习之旅——以显示器驱动为例

从这一节开始,我要学习操作系统的第四个部分,就是i o设备的驱动。今天要讲的是第26讲,内容围绕i o设备中的显示器展开,探究显示器是如何被驱动的,也就是操作系统怎样让用户使用显示器,最终会落脚到print f这个函数是如何将内容显示在屏幕上的。

设备驱动基础原理

操作系统是管理计算机硬件的一层软件。在这里插入图片描述
之前,我已经学习了操作系统如何管理cpu,弄清楚了fork以及进程管理的含义,明白了cpu是如何被抽象为进程的;也学习了内存管理相关知识,了解了内存如何分段、分页,以及虚拟内存的引出,直到数据最终写入物理内存。现在,我要开始学习计算机硬件中的另一重要部分——i o设备,这一讲和下一讲主要聚焦键盘和显示器,之后还会涉及磁盘及基于磁盘抽象出的文件系统,但本质上都是i o设备的驱动。
在这里插入图片描述

在学习具体设备驱动前,得先明确计算机让外设工作的原理。这是计算机的基本常识,使用外设时,每个外设都有对应的控制器,比如显示器的显卡。cpu只需向外设控制器中的寄存器或存储区域发送一条指令,控制器就会依据指令内容操控硬件。以显示器为例,cpu给显卡寄存器发指令,显卡就能让显示器显示内容。通常,cpu发出指令后会去执行别的进程,等外设完成任务,会向cpu发送中断信号,cpu再处理中断,可能涉及数据传输等操作。
在这里插入图片描述

总结起来,操作系统让外设工作的核心就两点:一是向控制器发指令,最终表现为类似out的指令;二是处理外设工作完成后的中断。虽然实际操作外设的代码很多,但核心指令就那么几条。之所以有大量代码,是为了让外设使用更简单,这就需要提供统一的视图。因为不同设备的控制器不同,直接操作寄存器很麻烦,不同公司硬件设计也有差异,所以操作系统要形成统一接口,也就是文件视图,这样既能隐藏细节方便用户,内部还能进行高效处理。

简而言之,外设驱动主要做三件事:

  1. 发出out指令,操控设备控制器寄存器;
  2. 进行设备中断处理;
  3. 提供统一文件视图,方便用户使用。

print f显示原理探究在这里插入图片描述

在这里插入图片描述

接下来,我通过print f这个实际例子来深入理解设备驱动。print f本质上是一段操作外设的程序,和其他设备操作一样,遵循统一规则。在linux系统中,操作设备通常表现为openreadwriteprint f也不例外,它打开的是显示器对应的文件,然后进行写入操作。操作系统为用户提供统一的文件接口,通过不同的设备文件名区分操作的设备,print f对应的设备文件名决定了它操作的是显示器。
在这里插入图片描述

具体来看,print f最终会变成系统调用write,写成write(1,buffer,...),这里的1决定了数据输出到显示器,buffer是格式化后的字符串缓冲区。系统调用通过int 0x80进入内核,执行sys_write。这里关键的1是文件描述符,它来自当前进程pcb数组的第一项,这个文件描述符对应一个文件,文件的inode中存放着设备相关信息。
在这里插入图片描述
在这里插入图片描述

那么1对应的文件是怎么来的呢?进程的pcbfork创建时拷贝父进程的,所有进程打开文件的指针都源于父进程。系统初始化时,0号进程创建相关进程,打开了一个文件并拷贝两份,1对应的文件就是dev/tty0tty代表终端设备。open系统调用会根据文件名读入文件的inode信息,操作系统依据这些信息决定后续操作路径。
在这里插入图片描述
在这里插入图片描述

根据inode信息判断设备类型,如果是字符设备,就执行rw_char,并根据设备号继续分支。dev/tty0是字符设备,设备号为4,通过设备号在函数指针数组中找到对应的处理函数rw_ttyx。因为是write操作,所以会调用tty_write函数,这个函数会将数据先写入缓冲区right_q。这涉及到缓冲技术,由于cpu和内存操作速度快,显示器显示速度慢,通过缓冲区可以平衡速度差异,缓冲区就像生产者 - 消费者模型中的共享缓冲区,写满时生产者(数据写入操作)会睡眠等待,不满时则写入数据。
在这里插入图片描述

数据写入缓冲区后,会调用函数从缓冲区取出数据输出到显示器。tty_write函数会继续调用console_writeconsole就是终端设备,即显示器。console_write函数会从缓冲区取出字符c,通过out指令将字符输出到显示器。具体的汇编指令会将字符属性赋给ah,字符赋给alaxahal组成),然后将ax写入显存地址pose。这里涉及内存和i o设备的编址方式,如果是统一编址用mov指令,如果是独立编址用out指令,通常显存较大,采用独立编址,但本质上movout都是对i o设备控制器中的存储区域进行写操作。

总结与实验展望

至此,我梳理清楚了print f的整个过程。从系统调用write开始,通过统一文件接口,依据设备信息逐步找到驱动显示器的函数,利用缓冲技术和相关指令,最终将数据输出到显存显示在屏幕上。设备驱动的核心就是cpu向外设控制寄存器发指令进行读写,并形成统一文件视图方便使用,同时处理中断。相比cpu和内存管理,设备驱动相对简单。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关于mov ax,pose中的pose,它每次写完会加2,因为显存存储字符和属性各占一个字节。初始的pose值在系统启动时,通过setup程序根据bios中断取出硬件参数(包括光标位置),将光标所在显存位置存入90000处,初始化时再将其赋值给pose

http://www.dtcms.com/wzjs/824704.html

相关文章:

  • 营销型网站建设公司哪家好哪个好永久免费asp空间
  • 绵阳网站建设费用网站特效代码上那找好
  • 已有网站备案wordpress 标签模板下载
  • 北京高端网站定制公司教育类网站首页设计模板
  • 网站建设外包公司做哪个网站卖一手房比较好
  • 如何查看网站服务器系统标书制作员这工作好吗
  • 网站建设如何账务处理2022年7到8月份的十大新闻
  • 新手搭建网站优秀网站psd
  • 在线网站生成器工程管理毕业设计代做网站
  • win2003建网站wordpress安装404
  • 吴谨含厂家不愿做网站中国万网联系方式
  • dede模板 展柜网站源码骨干校建设专题网站
  • 网站seo诊断评分45机械设备公司网站制作
  • 行政单位门户网站建设方案wordpress常规无备案号
  • 免费网站主机空间百度怎么做网站排名
  • 网站建设教学方法探究徐州微网站开发公司
  • 代刷网站只做软件下载京东网站建设策略
  • 百度抓取不到网站seo排名影响因素主要有
  • 百度竞价网站备案wordpress 清理媒体库
  • 烟台网站建设方案建筑工程网站搭建
  • 成都市温江建设局网站宾馆网站制作
  • 西安做网站公司哪家好 应该怎么选择网站开发+.net+开源
  • 对网站开发课程的建议音乐介绍网站怎么做的
  • 网站建设资讯站如何做电影网站资源
  • 网站开发公司 深圳主机屋wordpress安装
  • 行业公司网站建设制作网页链接的方法
  • 网站如何建设推广上海文化传媒公司排名
  • 《电子商务网站建设》精品课铜川网站建设电话
  • 苏州哪个公司做网站好做游戏网站的目地
  • 免费 成品模板网站重庆广告制作加工厂