嵌入式linux组件,嵌入式Linux系统的几大组件!

原标题:嵌入式Linux系统的几大组件!

c03f9eab9fc8f132f2333f6b66b605ff.png

本文概述了Linux系统的几大组件,描述了这些组件之间的关系。文章解释了术语,并描述看似很基础的细节。

每个Linux系统都有许多主要组件。其中一个组件(引导加载程序)从技术上讲是Linux之外的,常常不被谈论。其余组件都是共同打造整个Linux系统的所有软件元素。这些组件是:

引导加载程序

内核

根文件系统

服务

应用程序/程序

引导加载程序

计算机通电、执行一些初始设置后,它会加载引导加载程序到内存中并运行该代码。引导加载程序的主要工作是找到操作系统的二进制程序,将该二进制程序加载到内存中,然后运行操作系统。本文指Linux内核。

引导加载程序此时已完成,内存中的所有代码和数据通常都被操作系统覆盖。引导加载程序不会再次运行,直到计算机再次重置或重启。

嵌入式系统中的引导加载程序不同于典型的笔记本电脑、台式机或服务器计算机。典型的PC通常先加载进入到所谓的BIOS,然后运行Grub这个引导加载程序。嵌入式Linux系统使用Das-UBoot或U-Boot来进行引导。

内核

一旦引导加载程序将Linux内核加载到内存中并运行,内核将开始运行其启动代码。该启动代码将初始化硬件、初始化系统关键数据结构、初始化调度程序、初始化所有硬件驱动程序、初始化文件系统驱动程序、挂载第一个文件系统,并启动第一个程序等。

Linux内核的主要工作是启动应用程序,并为这些应用程序(或Linux中通常所称的程序)之间提供协调。Linux内核不知道应该运行的所有程序。因此,Linux内核仅启动一个程序,并让该程序启动所需的所有其他程序。这第一个程序名为init程序,有时简称“ init”。注意,这第一个程序不需要放在名为“ init”的文件中,但常常放在该文件中。

如果内核找不到init程序,内核的用途不复存在,因而崩溃。

用于嵌入式系统的Linux内核的主要区别在于,它是为了在不同的CPU架构上运行而构建的。否则,内核的运行方式与典型的PC相一致,这是其优点之一。

文件系统

在Linux中,内核将程序分别加载到内存中,内核要求这些程序存储在组织成文件和目录的某种介质上。文件和目录的这种组织称为文件系统。与许多操作系统一样,Linux拥有介质上的文件系统(数据实际存储在存储介质上)和文件系统驱动程序——代码知道如何在解释和更新介质上的文件系统数据。

在Linux中,该介质常常是硬盘。然而,嵌入式系统常常没有硬盘,因此介质可能是其他硬件设备,比如SD卡、闪存甚至内存。

与Windows不同,Linux文件系统与目录而不是与驱动器号相关联。文件系统可以与任何目录相关联,甚至可以与路径中下几层的目录相关联。将文件系统与目录相关联的这个过程名为“挂载”。Linux先从一个名为/(斜杠)的空目录开始。在Linux启动期间,最顶层的文件系统与该目录相关联(即挂载到该目录),该文件系统的所有内容都显示在/下。这个最顶层的文件系统名为根文件系统。

Linux系统要求以某种方式部署根文件系统。因此,该文件系统很特殊,不能只是某种随机组合的目录和文件。bin和sbin等更多目录来自这个地方。

此处的要点是Linux寻找驻留在文件系统中的这第一个程序(即init程序)。需要事先创建根文件系统,然后将其挂载到“/”,之后内核才能启动init程序。

由于嵌入式系统有不同的硬件限制,因此Linux嵌入式系统常常使用特殊的文件系统格式,而不是台式机或便携式计算机上使用的典型的EXT3、EXT4、btrfs或xfs。

服务

内核寻找、加载并运行init程序时,该程序随后负责启动系统的其余部分。这时,内核不再处于活动状态,而是继续协调这项任务:在所有运行中的程序之间共享硬件。

有许多不同的init程序可用。无论选择哪个init程序,该程序都会启动系统发挥用途的所有必需的服务和应用程序。这套服务包括设置网络、挂载额外文件系统和创建图形环境等。

在Linux下,服务只是在后台运行的程序。传统上,Linux人士将这些服务称为守护程序,不过如今我很少看到这个术语。

应用程序/程序

init程序还负责启动常规程序。这些程序确实与用户交互。嵌入式系统常常只有几个用户程序,有时就只有一个。在嵌入式系统中,这组程序使设备能够执行应该做的事情,例如显示地图和航点、收听麦克风或显示录制电视节目的列表,用途无限。

摘要

因此总之,嵌入式计算机启动时,Linux系统将执行以下步骤:

跳入到引导加载程序

跳入到内核

挂载根文件系统

加载并运行init

加载并运行后台服务(或守护程序)

加载并运行应用程序

这每一个步骤都调用系统中所需的组件。返回搜狐,查看更多

责任编辑:

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

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

相关文章

linux iptables找不到,centos /etc/sysconfig/下找不到iptables文件解决方法

本想做些防火墙策略。防火墙策略都是写在/etc/sysconfig/iptables文件里面的。可我发现我也没有这个文件。[rootxiaohuai /]# cd /etc/sysconfig/[rootxiaohuai sysconfig]# lsatd firstboot irqbalance network-scripts rhn sysstatauditd grub kdump ntpd rngd sysstat.iocon…

Java番外篇4——BigInteger与BigDecimal

Java番外篇4——BigInteger与BigDecimal 为了解决大数运算的问题 操作整型:BigInteger操作小数:BigDecimal 1、BigInteger 方法声明功能介绍public BigInteger abs()返回大整数的绝对值public BigInteger add(BigInteger val)返回两个大整数的和publ…

linux cd 命令案例,15个关于Linux的‘cd’命令的练习例子

命令名称:cd代表:切换目录使用平台:所有Linux发行版本执行方式:命令行权限:访问自己的目录或者其余指定目录级别:基础/初学者1.从当前目录切换到/usr/local avitecmint:~$ cd /usr/local avitecmint:/usr/l…

c语言字符串strchr,Strchr()C语言字符串处理功能

strchr()函数不如strcpy(),strcat(),strcmp(),strupr(),strlwr(),strlen()直观c strchr函数,因此需要代码理解:代码来自C语言开发入门和项目实战书:#include#includeint main(){字符字符串[50];char * str&…

Java数据库篇1——数据库配置

Java数据库篇1——数据库配置 1、数据库 数据库(DataBase) 就是存储和管理数据的仓库本质是一个文件系统, 还是以文件的方式,将数据保存在电脑上 2、数据库的优点 存储方式优点缺点内存速度快不能够永久保存,数据是临时状态的文件数据是可以永久保存的使用IO流操作文件, 不…

C语言中输入123求位权,数反转 - it610.com

32位系统c语言中:char取值范围:-128~127unsigned char取值范围:0~255int取值范围:-2147483648~2147483647unsigned int取值范围:0~429496729564位系统下C语言中int还是占4字节,32位,与32位系统中没有区别64位系统下,采用64位编译器…

Java数据库篇2——数据库基本操作

Java数据库篇2——数据库基本操作 1、启动、停止、服务 net start mysqlnet stop mysql2、登入登出 本地 Mysql -u用户名 -p密码Mysql -u用户名 -p回车 密码远程 Mysql -hIP地址 -u用户名 -p密码Mysql -hIP地址 -u用户名 -p回车 密码退出 Quit Exit

c语言加密shell脚本,shell脚本加密

如何保护自己编写的shell程序要保护自己编写的shell脚本程序,方法有很多,最简单的方法有两种:1、加密 2、设定过期时间,下面以shc工具为例说明:一、下载安装shc工具shc是一个加密shell脚本的工具.它的作用是把shell脚本…

Java数据库篇3——SQL

Java数据库篇3——SQL 结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库 查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统 1、SQL分类 分类说明数据定义语言简称DDL(Data De…

c语言分配飞机10个座位,leetcode1227(飞机座位分配)--C语言实现

对于第一个乘客来说 他有三种选择坐在正确的(自己的位置), 那么后面的乘客都不会乱,所以第n个乘客可以坐到自己的位置, 1/n * 1.坐在第n个乘客的位置,那么第n个乘客肯定无法坐到自己的位置, 1/n * 0.坐在[1,n-1]之间的某个位置K.对于第K个乘客而言&#…

Java数据库篇4——表的约束

Java数据库篇4——表的约束 1、非空约束 字段不允许为空 #创建表的时候添加 Create table 表名(列1 数据类型 not null,列2 数据类型,列3 数据类型 ); #创建表以后添加 Alter table 表名 modify 列名 数据类型 not null; #删除 Alter tabl…

c语言数组转置原理,为什么这个数组转置不对?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼原数组是1,2,34,5,67,8,9转置后的数组是1,4,72,5,83,6,9但结果出来的是乱七八糟的数字&#xff0c;而且最后提示出错#includevoid TransposedArray(int Arr[3][3]){shortint i,j;shortint Med;for(i0;i<2;i){for(j0;j<2;j){i…

Java数据库篇5——事务

Java数据库篇5——事务 1、什么是事务 事务是一个整体,由一条或者多条SQL 语句组成,这些SQL语句要么都执行成功,要么都执行失败, 只要有 一条SQL出现异常,整个操作就会回滚,整个业务执行失败 2、事物的特征 原子性&#xff1a;事务是不可再分的最小的操作单位一致性&#x…

c语言里寄存器.1说明意思,C语言复习+寄存器地址名称映射

C语言复习寄存器地址名称映射一.参考资料探索者STM32F4开发板&#xff1a;**《STM32F4开发指南-库函数版本》4.1小节C语言基础知识复习4.6小节 MDK中寄存器地址名称映射**STM32F4xx官方资料&#xff1a;《STM32F4xx中文参考手册》-第7章通用IO二.C语言复习位操作GPIOA->ODR|…

Java数据库篇6——多表查询

Java数据库篇6——多表查询 1、笛卡尔积 交叉连接查询 设集合A{a, b}&#xff0c;集合B{0, 1, 2}&#xff0c;则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)} 2、 内连接查询 2.1、隐式内连接 SELECT 字段名 FROM 左表, 右表 WHERE 连接条件;多…

c语言编程经典实例利润,C语言经典编程实例100题解答

C语言经典编程实例100题 答案答案 C语言经典编程实例100题C语言程序实例100个(一) 【程序1】 题目:有1、2、3、4个数字&#xff0c;能组成多少个互不相同且无重复数字的三位数,都是多少, 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足…

Java数据库篇7——数据库设计

Java数据库篇7——数据库设计 1、第一范式 列不可再分 每一列属性都是不可再分的属性值&#xff0c;确保每一列的原子性两列的属性相近或相似或一样&#xff0c;尽量合并属性一样的列&#xff0c;确保不产生冗余数据 2、第二范式 属性完全依赖于主键或者说一个表只描述一件…

android 播放声音资源,android播放音效例子 (翻页音效、警报音效通用 只需传入声音源)...

音效播放&#xff1a;资源文件&#xff1a; res/raw/filename声音池类&#xff1a;SoundPool sp newSoundPool(同时最大播放个数&#xff0c;AudioManager.STREAM_MUSIC,0);将加载里音频文件的SoundPool添加到一个HashMap中&#xff0c;提供给以后的调用HashMap spMap newHas…

Java数据库篇8——索引、视图、存储过程、触发器

Java数据库篇8——索引、视图、存储过程、触发器 1、索引 1.1、索引是什么 在数据库表中&#xff0c;对字段建立索引可以大大提高查询速度。通过善用这些索引&#xff0c;可以令MySQL的查询和 运行更加高效 如果合理的设计且使用索引的MySQL是一辆兰博基尼的话&#xff0c;…

android--多线程,android多线程

线程的基本用法&#xff1a;android多线程编程其实并不比java多线程特殊&#xff0c;基本都是使用相同的语法&#xff0c;比如说&#xff0c;定义一个线程只需要新建一个类继承自Thread&#xff0c;然后重写父类的run()方法&#xff0c;并在里面编写耗时的逻辑即可&#xff0c;…