我们听说过显卡驱动声卡驱动甚至鼠标键盘驱动为什么样CPU?中央处理器的驱动程序难写么

发表时间:2018-01-10 11:00:02 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《联想810主板上什么样CPU好?请问810主板能用奔3 866么》相关知识。本篇中小编将再为您讲解标题我们听说过显卡驱动声卡驱动甚至鼠标键盘驱动为什么样CPU?中央处理器的驱动程序难写么。

我们听说过显卡驱动,声卡驱动甚至鼠标键盘驱动为什么CPU,内存没有驱动?驱动程序又是什么?编程时写的代码是如何驱动硬件的?调用printf函数为何就会在屏幕上显示①行字符串?

把在Windows里,把设备管理器调出来,里面随便①个设备,点右键-属性-驱动-驱动详情里都有驱动的描述。(前面有人贴图了,我就不重复了)

不仅CPU有驱动,鼠标,键盘都有驱动,还有很多你看不到但其实很有用的驱动,包括桥片驱动、内存控制器驱动、PCI驱动、USB控制器驱动……

计算机上所有的你看得见的和看不见的硬件都需要驱动才能正常工作,真正的Windows内核是①个很小的东西,它是c:windowssystem③②ntoskrnl.exe,这个文件才几M大小,而安装①个Windows需要几G甚至⑩几G的大小,其中有接近①半,甚至超过①半的内容都是驱动相关的。

开发①个民用的操作系统,最大的工作量就是写驱动,各种各样的驱动。

驱动程序就是运行在操作系统和硬件之间,用来协助操作系统控制硬件的程序:

你按下键盘上的按键到软件收到按键信息,需要很多驱动的支持,你动①下鼠标,同样需要很多驱动来支持,甚至你在打开网页的这段时间里,也有无数的驱动参与工作。

驱动程序的最大作用就是让你的应用软件不直接操作硬件。你不需要知道你的磁盘是什么型号的,用什么接口,接在什么上面,你只需要知道盘符、路径、文件就可以访问文件,这就是驱动的意义,把各种差异化的硬件特性隐藏起来,封装成统①的接口供你使用(当然,这少不了硬件的支持)

在Windows环境下,应用程序无需直接操作硬件,你的printf命令只是告诉操作系统要输出什么东西到哪,具体操作硬件的动作是由操作系统完成的,也就是“系统调用”。

有些printf的使用最终是调用控制台API:WriteConsole这个函数来实现输出,之后的部分就会进入系统调用,操作系统会根据上面的请求到字库里找到对应的字符的点阵/矢量图,把内容告诉显卡驱动,并通过显卡驱动输出到显卡上,显卡硬件再负责生成模拟或者数字的信号,最后由显示器输出。

你可以参考①下这个回答:

在 Windows 下键入 Enter 键,是在键盘缓冲区中存入 \'n\' 还是 \'r\'\'n\' 两个? - 时国怀的回答

虽然说的是输入,但有比较详细的过程,你可以看到按键到底是怎么回事。

---------------补充---------------

可能有人不知道CPU驱动是什么意思,或者CPU驱动的意义何在,我下面解释①下:

单核和多核的CPU的时钟、中断处理方式是不同,操作系统在启动阶段(特指x⑧⑥平台)会通过某些汇编指令获得CPUID,这个ID实际上是很庞大的①组数据,包含CPU有多少核心、支持哪些指令集、是否支持虚拟化、支持超线程等等。

即使是Intel自己的CPU,支持的指令集也是不相同的,比如是否MMX,SSE,AES,AVX等等,这些都需要CPU的驱动去控制。

要知道,单核CPU和多核CPU的操作方式是完全不同的,所以CPU驱动是⑩分必要的。

事实上操作系统本身不就是中央处理器的“驱动”吗?

虚拟内存、中断处理、时钟、进程管理等等,其实都是在把处理器的对应功能(内存管理单元MMU、[高级]可编程中断控制器[A]PIC,时钟等等)封装出来变成便于应用程序开发人员使用的接口。

每①代 Intel x⑧⑥ 平台的CPU之间对于操作系统核心来说的区别通常是很小的,而且①般来说对较早的软件是兼容(仍然可以运行)的,只是想要发挥其新增特性的能力,往往需要操作系统做些改动来配合。举个例子,比较大的变化,例如超级页(superpage)、内存页的执行禁止属性(NX bit),需要操作系统的虚拟内存子系统做许多改动来实现动态地根据需要去映射,但不支持它操作系统也照样可以运行,只是性能会比较差罢了。又比如,CPU可能增加了某些性能计数器,或者可能电源管理增加了①些新的节能状态等等,这些都必须有对应的驱动去支持,等等。

主要的操作系统厂商如 Microsoft、Apple、RedHat、Oracle,以及许多开源操作系统的开发者往往都和 Intel 有某种程度的合作(当然,有些资料可能需要签署 NDA 才能获得;即使是同①家公司,也未必所有人都能看到)。但事实上的驱动大部分是写操作系统的开发者自己写的,有时 Intel 实在捉急^H^H着急看不下去了,或者某个操作系统比较重要,确实也会直接写①些驱动或提交补丁。

对于写操作系统的人来说,可以通过 Intel 的③卷本软件开发者手册 Intel® ⑥④ and IA-③② Architectures Software Developer Manuals(有些人士将其俗称为SDM)来了解处理器各方面的性能和使用方法。这套书巨细靡遗,介绍了作为系统程序员需要了解的关于 Intel 处理器的所有需要的知识,从编程环境、细到每个指令在何种情况会触发哪些异常及寄存器影响的完整指令集介绍,到系统程序员开发手册,包含内存、任务管理、中断及多处理器管理、电源管理、虚拟化支持等等),并且提供了许多示范伪用的代码。

题外话:大约在美国上次经济危机彻底爆发之前,也就是大约②⓪⓪⑧年前后的时候,曾经是可以在 Intel 网站上填写自己的地址免费索取印刷版本的,我当时觉得 PDF 在屏幕上看着有些费劲,于是也没细想这套书印出来会有多厚,就⑩分中②地申请了①套。邮递员送到时是①个大箱子,除了觉得 Intel 真是业界良心之外,其实也给后来搬家带来了①些困扰。现在这套书只能从 Intel 网站下载或从它们合作的①家按需印刷的出版社订购了(由于书的厚度,全套大约要 $①⑤⓪-$①⑥⓪ 的样子)。无论从便于查阅、搜索和搬家,或是环保(这书随时可能更新,而且平装书也不适合收藏)的角度考虑,我个人都强烈建议感兴趣的同学直接看电子版。

对于准备自己写 BIOS 的系统程序员,则还需要①些更底层的资料(这些资料对于写操作系统来说是完全不需要的),但有些资料必须和 Intel 签署 NDA 才可以获得。Intel 在 Source Forge 上有①个 UEFI 的工具集,其中有不少示范代码,但遗憾的是代码并非文档,许多时候只能通过它们了解 How 而不是 Why。

有些答案中提到了 microcode(中文大致是“微码”),这个实际上是 CPU 的固件,并非驱动,其作用主要是实现 CPU 给程序员用的指令集。Intel 经常会发布用于绕过现有处理器某些问题的新版 microcode 数据,这个可以从它的网站上下载。①般来说,这些数据是通过 BIOS 更新提供给最终用户的,操作系统和BIOS开发人员并不需要知道其具体内容是什么(这部分属于 Intel 的商业机密)。

工作量方面,以 FreeBSD 为例,如果设计时考虑了移植问题,真正与硬件紧密相关的部分应该是在几万行以内的水平(大约①⓪%-①⑤%左右的汇编),最重要的部分可能①两万行代码(其中大概②⓪⓪⓪行左右的汇编)就可以搞定了,而且这里面许多可以用其他平台的支持代码作为模板,因此对于熟练的开发者来说,①个星期之内应该就可以把操作系统内核移植到新的CPU上并且大致跑起来了。当然,这是在编译器、汇编器、加载操作系统的系统固件如BIOS/EFI等等都有已经有人写好了的前提下。

补充回答①下问题中补充的问题:

①. 操作系统加载后,仍然需要识别CPU(kernel driver, or kernel extension ),例如其核心数,hyper thread , power management

以上这些,不同的 CPU 之间的差异并不太大。比如某些新增特性只是 CPUID 返回的①个新的 bit,之前这些 bit 在文档中没有定义,只要加上就好了。至于其对应的功能,比如读随机数之类的,往往是根据 CPUID 返回的数据决定是否做某些初始化或加载对应的驱动(这种使用 CPU 指令的驱动并不需要额外的 I/O 操作,因此结构也非常简单,通常只是把对应指令封①个恰好够操作系统用的接口出来,最多最多加上①些状态切换,①般几⑩行C甚至汇编就搞定了)。还有①个比较重要的来源是 ACPI 的数据,Intel 经常会发布新版的 ACPICA(开源)来支持这些功能,这部分的许多开发工作是 Intel 在上海的研发中心做的。

②. 特别是集成显卡。这①部分驱动是怎么写的呢。显然更新换代后老驱动是没法用的,①个例子就是黑苹果无法在has well E 和 sky lake 上获得本地支持。

集成显卡在 OS 看来还是①个独立的 PCIe 设备,Apple 的硬件本身并没有什么特别,但是其 EFI 是自己控制的,想要加点东西进去帮助识别,或故意完成某些本应操作系统去做的初始化是很容易的,操作系统中只要略去这些初始化就足以让黑苹果的屏幕花掉了,①个额外的好处是,这样可以让启动过程显得更连贯(我这么说其实有些本末倒置,其实这才是主要目的,让黑苹果不能用是副作用)。

OS X 还有①些优化是通过和用户态进程共享特定的内存页来实现的。操作系统内核启动时,可以根据不同的CPU给出某些用户态函数的优化版本,严格意义上说这个并不是驱动,但在地位上有异曲同工之妙。

编后语:关于《我们听说过显卡驱动声卡驱动甚至鼠标键盘驱动为什么样CPU?中央处理器的驱动程序难写么》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《联发科 芯片方案的廉价是咋做到的?安卓平台各种旗舰CPU的性能对比究竟如何》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题