加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_宿迁站长网 (https://www.0527zz.com/)- AI行业应用、大数据、建站、语音技术、研发安全!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

unix内核 嵌入式、Linux和UNIX的认识

发布时间:2023-05-24 01:05:58 所属栏目:Unix 来源:互联网
导读: 嵌入式、Linux和UNIX的认识
嵌入式系统的嵌入性的本质是将一个计算机嵌入到一个对象体系中去,实现对象体系的智能化控制。
嵌入式技术趋势分析:更高主频、更低功耗、超大集成度、超小体积

嵌入式、Linux和UNIX的认识

嵌入式系统的嵌入性的本质是将一个计算机嵌入到一个对象体系中去,实现对象体系的智能化控制。

嵌入式技术趋势分析:更高主频、更低功耗、超大集成度、超小体积

两大阵营:

l 通用计算机系统的技术要求是高速、海量的数值计算;技术发展方向是总线速度的无限提升,存储容量的无限扩大。

l 嵌入式计算机系统的技术要求则是对象的智能化控制能力;技术发展方向是与对象系统密切相关的嵌入性能,控制能力与控制的可靠性。

Linux是一套免费使用和自由传播的类Unix操作系统。

Linux应用:1)服务器 2)嵌入式系统(linux可裁剪,免费)

嵌入式为什么要用linux系统?

1)开源。不会涉及到专利和产权纠纷

2)功能齐全。对于很多硬件设备都有丰富的驱动程序,只需要简单移植一下,不需要改动太多。

3)稳定。Windows越来越慢,会产生很多垃圾。

4)大多数芯片都有裁剪配置文件。在linux内核源代码中,arch/arm/configs中有许多芯片的配置文件。Eg:at91芯片,里面有个文件at91sam9260ek_defconfig,如果不想裁剪的话,就只要在内核源代码下执行 make at91sam9260ek_defconfig,就可以,然后编译出来的内核就可以直接用了。

5)Linux分而治之的思想,使得驱动和应用程序并行开发,加快开发速度。

UNIX其实很简单

1)UNIX最重要的一个特点:高内聚,低耦合

也就是说UNIX下的各种应用程序都和别人不相干,这就是贯穿整个UNIX的思维——模块和程序的高度独立性,这样的做法和设计会让你的系统比较稳定,也会让你的系统特别容易管理和维护。“高内聚,低耦合”给UNIX造成的结果是:其系统基本上都是功能单一的小程序,这些小程序像积木一样,当我们需要定义一个自定义的建筑师,大多数情况下,我们只需要做一个“搭积木”的简单游戏。(COM组件采用类似的方法,C/C++通过COM组件调用MATLAB程序)。而windows设计的富丽堂皇,可惜别人的“积木”你几乎不可能拿到自己的建筑来,总是要你模仿或重写。

2)Unix另一个重要的特点——所有的设备都可以像文件一样操作,所有设备、文件、打印机、显示器、终端、软盘、磁带、USB、CDROM等待I/O操作,都以文件描述符的方式进行操作。两个UNIX下最重要的系统调用read 、write就可以胜任所有设备的I/O了,UNIX早在/dev目录下为你建好了这些文件。

Linux用以提高内核可移植性(支持多种硬件的操作系统)的三种方法:

分层结构、面向对象思想、可加载模块

1.分层结构

第三层:硬件无关的操作系统内核

第二层:硬件抽象层HAL

第一层:硬件系统

硬件系统部分,主要是一些基于通用处理器,如ARM,MIPS,i386等硬件系统

硬件抽象层:通过硬件抽象层屏蔽底层的硬件细节,提供了一个逻辑的硬件环境,故这一层既是和硬件相关又是和操作系统相关。从形式上看,这一层主要由一些硬件相关的数据结构、方法和宏构成,linux通过它们来屏蔽硬件相关的代码,所以这一层对于上层操作系统的可移植性非常重要。Linux的移植工作也主要在这一层上做工作,从功能上分,这个层次包括两个部分:系统初始化部分和硬件相关的设备驱动。

硬件无关的操作系统内核层,这主要由进程管理、内存管理、设备管理中独立于硬件的部分、文件系统、进程间通信和网络部分。

2.面向对象思想

虽然linux内核使用C语言编写,但linux内核中大量借鉴和使用了面向对象的思想。Linux中通过使用结构体和函数指针实现了对面向对象机制的部分模拟。主要方法如下:对于内核中对应多种实现方式的部分,例如文件系统,就有EXT2,EXT3,FAT等多种文件格式,抽象出这个功能所必须的元素和接口,定义一个结构体。每种具体实现就是对该结构体的一个实现。例如,在linux的文件系统中,各种实际的文件系统都要对VFS维护的数据结构进行实现。在上层调用的时候,只需要使用通用的接口就可以通过函数指针调用到相应的具体实现。这样一个结构体的定义相当于一个类的定义,结构体中使用函数指针就是对类中方法的模拟。通过对结构体的不同实现,在内核中部分实现了面向对象的多态特性,使内核结构更为清晰,并且提高了内核的可移植性。这种方式在硬件相关操作和硬件驱动程序方面得到了广泛的应用,这就使linux内核上层功能和下层具体实现分离开来,降低了内核移植的难度。

3.可加载模块机制

Linux是单体内核。单体内核在一大块代码中央实际包含了所有的操作系统功能,并作为单一进行运行,具有唯一的地址空间。对传统的单体内核操作系统来说,内核的任何部分进行了修改,在变化生效前,所有的模块都必须重新连接,系统必须重新启动。

Linux的解决方案是内核可加载模块。内核可加载模块是在内核空间中运行的程序,实际是一种可以在系统启动后任何时候动态连入核心的代码块unix内核,它没有链接,不能独立运行,但是可以装载到系统中作为内核的一部分运行,从而可以动态扩充内核的功能。当我们不再需要它时,又可以将它从核心中卸载并删除。Linux内核使用可加载模块机制很好地解决了扩展性的问题,大大方便了linux平台下驱动程序的开发,增强了内核的伸缩性。可加载模块最主要的用处就是用在实现设备驱动程序。

采用内核可加载模块机制,可以减少内核的大小。将模块从内核中独立出来,大大增加了linux内核的灵活性。采用内核可加载模块的主要优点有:

l 将来修改内核时,不必重新编译整个内核,可以节省很多时间

l 系统中如果需要使用新的模块,不必重新编译内核,只需要插入相应的模块即可

l 减少了内核对系统资源的占用,内核可以集中精力做最基本的事情,把一些扩展功能对交由可加载模块实现。

(编辑:云计算网_宿迁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章