嵌入式Linux中文站

Linux存储系统可靠性分析

阅读(64)

1. Leveldb在写数据时,采用先写日志,后写实际的用户数据KV。写日志采用了fdatasync方式写。 writeoption.sync= true保证了数据每次写操作都采用同步的方式,必须写完再返回,这样速度很慢,却确保了系统的整体的可靠性。 虽然确保了系统的可靠性,但极大地损失了性能,无法满足线上的需求。 最后采用writeoption.sync=false的方式保证机器如果不重启,就不会丢配置。 Leveldb写日志方式为:1. 写日志 2. fflush将用户态的数据推入内核态。3. 写内存

Linux内存泄漏检测

阅读(154)

在实际的项目中,最难缠的问题就是内存泄漏,当然还有panic之类的,内存泄漏分为两部分用户空间的和内核空间的.我们就分别从这两个层面分析一下. 用户空间查看内存泄漏和解决都相对简单。定位问题的方法和工具也很多相对容易.我们来看看. 1. 查看内存信息 cat /proc/meminfo、free、cat /proc/slabinfo等 2. 查看进程的状态信息 top、ps、cat /proc /pid /maps/status/fd等 通常我们定位问题先在shell下ps查看当前运行进程的状态,嵌入式上

Linux kernel panic解决方法

阅读(142)

kernel panic错误表现 kernel panic主要有以下几个出错提示: Kernel panic-not syncing fatal exception in interrupt kernel panic - not syncing: Attempted to kill the idle task! kernel panic - not syncing: killing interrupt handler! Kernel Panic - not syncing:Attempted to kil

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

阅读(151)

//红色部分为问题部分 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)学习

阅读(210)

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

linux 内存管理基础

阅读(113)

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

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

阅读(87)

模块之间发生调用关系是常有的事情,下面以两个模块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 的硬链接与软链接

阅读(107)

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