⑴ linux架构是什么
linux最初在intel386机子上开发的,如果想了解透彻,需要看
《UNIX操作系统设计》
*《UNIX环境高级编程》
《操作系统:设计与实现》(MINIX)
《IBMPC汇编语言程序设计》
*《深入理解计算机系统》
《Linux权威指南》
《》
*《Intel80386Programmer';sReferenceManual》
*《TheCProgrammingLanguage》
等等书籍,对intel处理器机制要了解透彻,不是一个循环那么简单的。如果只是学驱动的话先看看ldd3,做点例子。
⑵ 什么是Linux系统架构
您好很高兴回答您的问题:
Linux系统架构分为两个部分一个是单台Linux系统架构 另外一个是网站集群架构.
单台Linux系统架构:
由硬件,内核,命令解释器,外围软件组成
网站集群架构
⑶ 请教关于linux软件包的架构问题
rpm主要是比较老牌,使用比较广泛
deb功能比较强大,而且依赖问题解决较好
各有各的优点
bin,run都是通用的
源码包也是通用的,只是闭源软件不提供源码
ps:deb资源也不少,rpm还分rh、fc、suse的,而deb包只要满足依赖,debian和ubuntu一般能通用,而其他debin系的linux
redhat前段时间发起一个项目,要逐步向deb过度,不过应该是好几年以后才能慢慢实现的
只是有些专业软件比如h-spice,只有rh安装包
⑷ Linux驱动的软件架构
Linux不是为了某单一电路板而设计的操作系统,它可以支持约30种体系结构下一定数量的硬件,因此,它的驱动架构很显然不能像RTOS下或者无操作系统下那么小儿科的做法。Linux设备驱动非常重视软件的可重用和跨平台能力。譬如,如果我们写下一个DM9000网卡的驱动,Linux的想法是这个驱动应该最好一行都不要改就可以在任何一个平台上跑起来。
#ifdef BOARD_Xxx
#define DM9000_BASE 0x100oo#define DM900o_IRQ 8
#elif defined(BOARD_YYY)#define DM9000_BASEox200oo#define DM90oo_IRo 7
#elif defined (BOARD_Z2Z)#define DM9000_BASEox3000o#define DM9o0o_IRQ9...
#endif
上述代码主要有如下问题:
1)此段代码看起来面目可憎,如果有100个板子,就要iflelse 100次,到了第101个板子,又得重新加ifelse。代码进行着简单的“复制—粘贴”,“复制—粘贴”式的简单重复通常意味着代码编写者的水平很差。
2)非常难做到一个驱动支持多个设备,如果某个电路板上有两个DM9000网卡,则DM9000_BASE这个宏就不够用了,此时势必要定义出来DM9000_BASE 1、DM9000_BASE 2、DM9000_IRQ 1、DM9000_IRQ 2类的宏;定义了DM9000_BASE 1、DM9000_BASE2后,如果又有第3个DM9000网卡加到板子上,前面的代码就又不适用了。
3)依赖于make menuconfig选择的项目来编译内核,因此,在不同的硬件平台下要依赖于所选择的BOARD_XXX、BOARD_YYY选项来决定代码逻辑。这不符合ARM Linux 3.x一个映像适用于多个硬件的目标。实际上,我们可能同时选择了BOARD_XXX、BOARD_YYY、BOARD_ZZZ。
我们按照上面的方法编写代码的时候,相信自己编着编着也会觉得奇怪,代码不好。这个时候,我们有没有办法把设备端的信息从驱动里面剥离出来,让驱动以某种标准方法拿到这些平台信息呢Linux总线、设备和驱动模型实际上可以做到这一点,驱动就可以放之四海而皆准了。