ReactOS,硬件抽象层,HAL概述

分析环境reactos0.3.4 ,i386体系]

 

ReactOS的硬件抽象层 HAL(Hardware Abstraction Layer)位于OS与硬件的中间,和windows的hal原理基本一致,硬件抽象层隐藏特定平台的硬件接口细节,为上层的系统提供标准的稳定的虚拟硬件平台,使商城系统具有与硬件无关的特性,从而达到可在多种平台上进行移植的目的。

 

既然硬件抽象层的功能是隐藏特定的硬件平台特性,那么这个硬件平台又是指什么呢?经过对HAL代码的阅读(主要是"hal"halx86"generic目录里的文件),以及在网上搜索了很多相关资料后,才了解到这个硬件平台是指:某种类型的计算机体系结构,比如说IBM PC机体系结构,也就是一般所指的x86 pc系统,或者PowerPC等。

 

而这些计算机虽然在构架上和技术上会有不同,但是也有相同的(我想应该这样)因为任何一台计算机都应该包含CPU系统总线、(地址总线、数据总线、PCI总线、很多其他总线吧,)还有就是一些可编成的控制器芯片,中断控制,设备驱动等等。这些相互搭配就够正了某种体系结构的计算机。

 

上面说的就是硬件平台,而Reactos对这些硬件制定了通用的抽象的硬件标准,这些标准组合在一起就构成了硬件抽象层。

 

微型计算机的硬件构成:

       微型计算机的硬件简单的说就是包含主机和外部设备这两部分,作为操作系统最关心的应该还是主机的内部硬件,其他的外设通过主板接口连接,搭配适当的驱动程序通过控制主板上的这些接口也就可以控制这些外部设备。

 

       那现在重点是主机内部的这些硬件设备,这些设备已在《微型计算机技术》中有相关的定义。

简单的说就是包括CPU、内存、总线、输入输出接口这几个部分,其实就我个人认为其实就是一块主板的体系结构。如下图的PC机主板体系结构。

 

 

 

通过上面这个图可以看出作为一台PC机的主板应该具备哪些硬件特性。而Reactos给计算机定义了一个比较基本的硬件标准,对于上层来说这就是计算机标准,那么作为ReactOS应该对上层提供那些基本的硬件标准呢:(一下是我对HAL的部分代码分析后得出的,这些其实就是计算机的硬件接口,而HAL主要就是通过这些接口来控制硬件)

1.         基本的电源管理

2.         主板BIOS/COMS数据管理

3.         计算机引导控制

4.         中央处理器控制

5.         总线控制(主要是PCI总线控制)

6.         存储器缓存控制器等

7.         系统时钟及时钟中断管理,时钟管理

8.         硬件及软件统一的中断管理(IRQL)

9.         直接内存存取(DMA)控制

10.     外部设备的I/O控制

11.     磁盘I/O存取控制

12.     共享数据同步访问IRQL,自旋锁(多处理器)

13.     杂项控制

软件和硬件IRQ 管理(MS定义的IRQL,以及在HAL级实现的DPC/APC软件中断,将硬件,软件引发的中断和在一起按照IRQL标准执行中断的嵌套调用)

[如需转载请注明出处:(雄)blog.csdn.net/mickey139]

转载于:https://www.cnblogs.com/binsys/articles/1303928.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423687.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[给ASP.NET 初学者的话]不要练功练了三年,才发现自己必须「砍掉重练」!....学习ASP.NET之前,请先把自己杯中的水倒掉...

这是我的文章备份,原文请看: [给ASP.NET 初学者的话]不要练功练了三年,才发现自己必须「砍掉重练」!....学习ASP.NET之前,请先把自己杯中的水倒掉 http://www.dotblogs.com.tw/mis2000lab/archive/2012/03/15/game_ove…

Java面试题19 牛客下面有关java的引用类型,说法正确的有?

Java面试题19下面有关java的引用类型,说法正确的有? A:对于一个对象来说,只要有强引用的存在,它就会一直存在于内存中 B:如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可…

MapReduce运行机制

相关链接 MapReduce中Shuffle机制详解——Map端Shuffle链接 MapReduce中Shuffle机制详解——Reduce端Shuffle链接MapReduce将作业job的整个运行过程分为两个阶段:Map阶段和Reduce阶段。按照时间顺序包括:输入分片(input split)、m…

WebService Software Factory 设计草图

以下是根据WSSF设计理念,按现公司的业务需求设计的接口项目拟稿,实现细分。仅供参考。(WSSF---ASMX版) 建议用1680*1050分辩浏览 转载于:https://www.cnblogs.com/RuiLei/archive/2008/10/05/1304160.html

Java面试题 20在面向对象编程里,经常使用is-a来说明对象之间的继承关系

Java面试题 20在面向对象编程里,经常使用is-a来说明对象之间的继承关系,下列对象中不具备继承关系的是?() A:手机与小米手机 B:企业家与雷军 C:编程语言与Java D:中国与北京 类之间存在以下…

MapReduce计数器

原文链接:http://itfish.net/article/61067.html 1、MapReduce计数器是什么?计数器是用来记录job的执行进度和状态的。它的作用可以理解为日志。我们可以在程序的某个位置插入计数器,记录数据或者进度的变化情况。 2、MapReduce计数器能做什么…

编写“线围棋”程序-2-可开局

棋盘有了,怎么支持在上面落子呢? 只要解决下面3个问题就可以了: 1.响应鼠标点击事件,获得“下棋子”的动作源。 2.修改和记录棋局状态。 3.在棋盘上显示棋局的状态。 为此,直接增加一个“棋局类“,也就是对…

Java面试题 21 下列说法正确的有()

下列说法正确的有() A 能被java.exe成功运行的java class文件必须有main()方法 B J2SDK就是Java API C:Appletviewer.exe可利用jar选项运行.jar文件 D能被Appletviewer成功运行的java class文件必须有main()方法 蒙蔽树上蒙蔽果,蒙蔽树下…

[翻译]SQL Server 未公开的两个存储过程sp_MSforeachtable 和 sp_MSforeachdb

SQL Server 未公开的两个存储过程sp_MSforeachtable 和 sp_MSforeachdb 您是否曾经写过代码来处理数据库中的所有表?处理一个 SQL Server实例中的所有数据库的代码又该如何写?然则,您是否知道有多种方法可以解决这问题?您可以创建…

Java面试题 22 牛客 Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持

Java面试题 22 牛客 Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持,下面关于Java反射的描述,哪些是错误的:( ) A Java反射主要涉及的类如Class, Method, Filed,等,他们都在java.lang.reflet包下 B 通…

java面试题24 关于Java中的数组,

java面试题24 关于Java中的数组,下面的一些描述,哪些描述是准确的:( ) A 数组是一个对象,不同类型的数组具有不同的类 B 数组长度是可以动态调整的 C 数组是一个连续的存储结构 D:一个固定长度的…

[开发技巧3]不显示报表直接打印

水晶报表9.2VB6 使用Application可以进行打印 在将数据赋给报表模板后,调用PrintOut方法 赋给报表数据objCRReport.Database.SetDataSource rst 此句打印,会出现打印提示框objCRReport.PrintOut 不提示,直接打印到默认打印机CallobjCRReport.…

SQL开发中容易忽视的一些小地方( 三)

目的:这篇文章我想说说我在工作中关于in和union all 的用法. 索引定义 : 微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集…

java面试题26 java语言的下面几种数组复制方法中,哪个效率最高?

java面试题26 java语言的下面几种数组复制方法中,哪个效率最高? A for 循环逐一复制 B System.arraycopy C Array.copyOf D 使用clone方法 效率:System.arraycopy > clone > Arrays.copyOf > for循环 1、System.arraycopy的用法…

pycharm使用笔记2-远程连接(转)

原文地址:https://blog.csdn.net/jinxiaonian11/article/details/70208920 随着科技的发展,远程办公已经是一种趋势,远程开发能力对于每一个程序员来说都是必不可少的。有时候就算在公司,在进行开发的时候有许多的数据都是储存在服务器上的&a…

java面试题27 java中下面哪些是Object类的方法()

java面试题27 java中下面哪些是Object类的方法() A notify() B notifyAll() C sleep() D wait() 蒙蔽树上蒙蔽果,蒙蔽树下你和我。遇到这种题,我默默的打开了编译工具 Object类中方法: protected Object clone()…

shiro学习(1):shiro简介

Apache Shiro是Java的一个安全框架。对比另一个安全框架Spring Sercurity,它更简单和灵活。 Shiro可以帮助我们完成:认证、授权、加密、会话管理、Web集成、缓存等。 Apache Shiro特性 Authentication:身份认证/登录,验证用户是…

微软启动了自爆程序,让我们一起帮它倒计时

……“公元2008年10月20日,注定成为人类信息技术史上不平凡的一天,因为在这一天,曾经创造了无数辉煌的计算机软件帝国微软公司,启动了自爆程序,剩下的,就是倒计时了……” ——《地球人类信息技术编年史》 …

python字典遍历的几种方法(转)

源地址:https://www.cnblogs.com/stuqx/p/7291948.html(1)遍历key值>>> a {a: 1, b: 2, c: 3} >>> for key in a:print(key:a[key])a:1 b:2 c:3 >>> for key in a.keys():print(key:a[key])a:1 b:2 c:3在使用上&a…

shiro学习(2):第一个shiro程序

工具idea 首先创建maven项目 配置文件 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http…