嵌入式Linux中文站

bss,data,text,rodata,堆,栈,常量段

阅读(146)

//红色部分为问题部分 section 结构 SECTIONS { ... secname start BLOCK(align) (NOLOAD) : AT ( ldadr ) { contents } region :phdr =fill ... } secname:段名 contents:决定哪些内容存放在此段 start:本段的连接地址(实际运行地址) AT(ldadr):存储地址(加载的地址) //例子U-Boot.lds代码(根据上面的section的介绍,虽能大体看懂,但是还是有些许疑惑) S

Linux系统调用及用户编程接口(API)学习

阅读(203)

Linux系统调用 系统调用 指操作系统提供给用户程序调用的一组特殊接口,用户程序可以通过这组特殊接口来获得操作系统内核提供的服务。 为什么用户程序不能直接访问系统内核提供的服务呢?这是由于在Linux中,为了更好地保护内核空间,将程序的运行空间分为用户空间和内核空间(也就是常称的用户态和内核态),它们分别运行在不同的级别上,逻辑上是相互分离的。因此,用户进程通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用用户空间的函数。 但是,在有些情况下,用户空间的进程需要获得一

linux 内存管理基础

阅读(111)

一、基本概念 ( 1 )物理内存和虚拟内存 物理内存:系统硬件提供的真实物理内存 虚拟内存:利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为 swap , swap 类似于 windows 的虚拟内存。 1、linux 的内存管理采取的分页存取机制,会将内存中不经常使用的数据块交换到虚拟内存中。 linux 会不时地进行页面交换操作,以保持尽可能多的空闲物理内存,即使并没有什么事需要内存, linux 也会交换出暂时不用的内存页面。 (2)buddy 内存分配 linux 内核中引入的伙伴系

Linux内核模块间函数调用正确方法

阅读(83)

模块之间发生调用关系是常有的事情,下面以两个模块A、B,B使用A模块提供的函数为例,讲解正确使用的方法。 模块A中使用EXPORT_SYMBOL或EXPORT_SYMBOL_GPL将要提供给B模块的函数导出; 模块B中用extern 声明需要用到的A模块提供的函数。 代码如下: 模块A的代码 A_func.c #include linux/module.h #include linux/kernel.h #include linux/init.h #include linux/jiffies.h // P

理解 Linux 的硬链接与软链接

阅读(105)

从 inode 了解 Linux 文件系统 硬链接与软链接是 Linux 文件系统中的一个重要概念,其涉及文件系统中的索引节点 (index node 又称 inode),而索引节点对象是 Linux 虚拟文件系统 (VFS) 的四个基本概念之一。通过剖析硬链接与软链接的联系与区别,我们可更好的了解 Linux 中 VFS 这一通用文件模型。并让 Linux 普通用户和系统管理员正确使用硬链接与软链接,帮助文件系统开发者获取 inode 的相关知识。 Linux 的文件与目录 现代操作系统为解决信息能独立

Linux中断机制

阅读(162)

中断向量 中断(interrupt)被定义为一个事件,该事件改变处理器执行的指令顺序,这样的事件与CPU芯片内外部硬件电路产生的电信号相对应。中断通常分为同步(synchronous)中断和异步(asynchronous)中断。 同步中断指的是当指令执行时由CPU控制单元产生的, 之所以称为同步,是因为只有在一条指令终止执行后CPU才会发出中断 。 异步中断是由其他硬件设备依照CPU时钟信号随机产生的。 在Intel处理器中,同步中断被称为异常,异步中断被称为中断。 异常(同步中断) 当CPU执行指令时探

linux虚拟内存

阅读(136)

Linux 的虚拟内存管理有几个关键概念: 每个进程有独立的虚拟地址空间,进程访问的虚拟地址并不是真正的物理地址 虚拟地址可通过每个进程上页表与物理地址进行映射,获得真正物理地址 如果虚拟地址对应物理地址不在物理内存中,则产生缺页中断,真正分配物理地址,同时更新进程的页表;如果此时物理内存已耗尽,则根据内存替换算法淘汰部分页面至物理磁盘中。 基于以上认识,这篇文章通过本人以前对虚拟内存管理的疑惑由浅入深整理了以下十个问题,并通过例子和系统命令尝试进行解答。 Linux 虚拟地址空间如何分布? 32 位和

漫谈传统的Linux初始化系统的运行级别

阅读(139)

了解运行级别是如何配置的,如何改变系统运行级别以及修改对应状态下运行的服务。 在 Linux 系统中,运行级别run level是指运维的级别,用于描述一种表明什么服务是可用的系统运行状态。 运行级别 1 是严格限制的,仅仅用于系统维护;该级别下,网络连接将不可操作,但是管理员可以通过控制台连接登录系统。 其他运行级别的系统允许任何人登录和使用,但是不同级别中可使用的服务不同。本文将探索如何配置运行级别,如何交互式改变系统运行级别以及修改该状态下可用的服务。 Linux 系统的默认运行状态是一个在系统开机