![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux基础
mozun1
这个作者很懒,什么都没留下…
展开
-
采用busybox的制作嵌入式Linux根文件系统
busybox简介Busybox是构建嵌入式Linux根文件系统的软件,用它制作根文件系统简单、方便,而且设置灵活。busybox常被很形象地称为嵌入式Linux系统中的“瑞士军刀”,因为它将许多常用的UNIX命令和工具结合到了一个单独的可执行程序中。虽然与相应的GNU工具比较,busybox所提供的功能和参数略少,但在比较小的系统或者嵌入式系统中已经足够。busybox在设计上充分考虑硬原创 2014-02-18 10:02:49 · 1818 阅读 · 0 评论 -
shell脚本学习一
在win下创建的XX.sh文件,在linux上执行,经常执行失败。对比能执行的文件,没有发现什么不同。 执行shell出现的错误是bad interpreter:No such file or directory解决方法: 因为操作系统是windows,在windows下编辑的脚本,所以有可能有不可见字符。从的脚本及报告的错误看来,原创 2017-02-25 15:43:37 · 337 阅读 · 0 评论 -
linux下得时间函数time 与gettimeofday
两个都是glibc获取时间的函数, gettimeofday支持返回微妙的精度, time返回秒的精度, 在性能上有差别吗? 基本上没有性能差别, 因为time其实就是把gettimeofday包装了一层. 但是测试过程中发现 time比gettimeofday性能好了一点点, 可能是time函数的接口形式简单吧, 堆栈处理的快.Epoch是指定为1970年1月1日原创 2017-03-28 18:52:36 · 2228 阅读 · 0 评论 -
linux内存管理的实质---通俗易懂
转载 http://bbs.chinaunix.net/thread-2055231-1-1.html1. 内核初始化: * 内核建立好内核页目录页表数据库,假设物理内存大小为len,则建立了[3G--3G+len]::[0--len]这样的虚地址vaddr和物理地址paddr的线性对应关系; * 内核建立一个page数组,page数组和物理页面系列完全转载 2017-03-28 19:19:57 · 513 阅读 · 0 评论 -
linux内核链表
#define container_of(ptr, type, member) ({ / const typeof( ((type *)0)->member ) *__mptr = (ptr); / (type *)( (char *)__mptr - offsetof(type,member) );}) con原创 2017-04-07 23:10:18 · 503 阅读 · 0 评论 -
linux进程详解
什么是进程直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己的地址空间,有自己的堆,上级挂靠单位是操作系统。操作系统会以进程为单位,分配系统资源,所以我们也说,进程是资源分配的最小单位。Linux的进程相互之间有一定的关系。比如说,在Linux进程基础中,我们看到,每个进程都有父进程,而所有的进程以init进程为根,形成一个树状结构。我们原创 2017-04-11 11:40:20 · 1091 阅读 · 0 评论 -
linux内存管理
一提到内存管理,我们头脑中闪出的两个概念,就是虚拟内存,与物理内存。这两个概念主要来自于linux内核的支持。1. 虚拟地址、物理地址、逻辑地址、线性地址 虚拟地址又叫线性地址。linux没有采用分段机制,所以逻辑地址和虚拟地址(线性地址)(在用户态,内核态逻辑地址专指下文说的线性偏移前的地址)是一个概念。物理地址自不必提。内核的虚拟地址和物理地址,大部分只差一个线性偏移量。用原创 2017-03-27 10:40:10 · 306 阅读 · 0 评论 -
linux部分信号使用
The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.signal的sigkill信号,也就是kill -9 pid是无法在程序内部捕获的,那怎么办?你反抗不了,一般关于sigkill的日志会在/var/log/messages里,如果非deamon程序在终端也是有日志体现的。对于内核暴力完杀,你只能找到原因原创 2017-04-13 11:09:28 · 463 阅读 · 0 评论 -
linux信号处理机制2
本文简单介绍下Linux信号处理机制,为介绍二进制翻译下信号处理机制做一个铺垫。本文主要参考书目《Linux内核源代码情景分析》《独辟蹊径品内核:Linux内核源代码导读》 信号概述 ● 信号是在软件层次上对中断机制的一种模拟。在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。 ● 信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上转载 2017-04-14 17:24:27 · 596 阅读 · 0 评论 -
linux的内核时间
jiffies在内核中是一个全局变量,它用来统计系统启动以来系统中产生的总节拍数,这个变量定义在include/Linux/jiffies.h中,定义形式如下。unsigned long volatile jiffies;想要理解jiffies的含义,我们需要首先理解时钟 节拍率 节拍的概念。内核一般通过jiffies值来获取当前时间。尽管该数值表示的是自上次系统启动到当前的时间间原创 2017-05-03 19:25:04 · 690 阅读 · 0 评论 -
记录一些makefile 的规则、变量函数使用
http://blog.sina.com.cn/s/blog_b3dc8bf301017e8g.htmlmakefile是一个make的规则描述脚本文件,包括四种类型行:目标行、命令行、宏定义行和make伪指令行(如“include”)。makefile文件中注释以“#”开头。当一行写不下时,可以用续行符“\”转入下一行。Makefile中的预定义变量:CC,原创 2017-04-21 16:17:55 · 919 阅读 · 0 评论 -
linux常用命令sed
linux之sed用法 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法sed:Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器。能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容原创 2017-03-03 16:36:11 · 645 阅读 · 0 评论 -
PowerPC的工具链制作过程及内核编译
作者:冲天飞豹(youbest)原文链接:http://www.linuxsir.org/bbs/showthread.php?t=267672http://youbest.cublog.cn/更新日志2006年9月28日:修改错字一处。2006年8月30日:修改错误命令一处。2006年8月22日:修改文字中的笔误两处。2006年8月18日:修改图片中的笔误转载 2017-03-02 20:20:34 · 1703 阅读 · 0 评论 -
linux的configure、glibc
./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。configure是源代码安装的第一步,主要的作用是对即将安装的软件进行配置,检查当前的环境是否满足要安装软件的依赖关系。使用命令./configure –help输出详细的选项列表--cache-file=FILE 'configure原创 2017-02-28 14:03:10 · 1941 阅读 · 0 评论 -
ubuntu 系统清理常用命令
虽然linux下不会有windows下的那么多垃圾和磁盘碎片!但还是会留下一些用不着的临时文件或是多次升级后的N个旧的内核!1,非常有用的清理命令:sudo apt-get autocleansudo apt-get cleansudo apt-get autoremove这三个命令主要清理升级缓存以及无用包的。2,清理opera firefox的缓存文件:转载 2014-08-10 20:42:35 · 709 阅读 · 0 评论 -
Out of memory, OOM killer输出信息分析
From http://blog.csdn.net/kickxxx/article/details/50337647当out of memory发生时,out_of_memory函数会选择一个内核认为犯有分配过多内存 “罪行”的进程,并杀死该进程。这就有很大的几率腾出较多的空闲页,然后再跳转回重试内存分配的操作。 这里我们不讨论out_of_memory 函数流转载 2016-10-10 13:49:06 · 1390 阅读 · 0 评论 -
进程死锁的危害、导致原因、解决方法
进程死锁如果多个进程同时占有对方需要的资源而同时请求对方的资源,而它们在得到请求之前不会释放所占有的资源,那么就会导致死锁的发生,也就是进程不能实现同步。在多个程序同时执行的情况下,多个进程可能出现竞争一定数量的资源。若某个进程申请资源,且此时资源不可用,那么该进行将进入等待状态。如果所申请的资源被其他等待进程占有,那么该等待进程有可能永远处于等待状态而无法改变该状态。——转载 2016-10-16 17:10:53 · 584 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(十二)- 内存管理
http://www.cnblogs.com/wang_yb/archive/2013/05/23/3095907.html内核的内存使用不像用户空间那样随意,内核的内存出现错误时也只有靠自己来解决(用户空间的内存错误可以抛给内核来解决)。所有内核的内存管理必须要简洁而且高效。主要内容:内存的管理单元获取内存的方法获取高端内存内核内存的分配方式总结转载 2016-10-17 10:42:55 · 226 阅读 · 0 评论 -
linux进程的堆栈
linux 栈空间查看和修改默认是8182大小。1、通过命令 ulimit -s 查看linux的默认栈空间大小,默认情况下 为10240 即10M2、通过命令 ulimit -s 设置大小值 临时改变栈空间大小:ulimit -s 102400, 即修改为100M3、可以在/etc/rc.local 内 加入 ulimit -s 102400 则可以开机就设置栈空转载 2016-12-01 20:33:42 · 1183 阅读 · 0 评论 -
Linux kernel多线程的几种实现
原文来源:http://blog.csdn.net/mrwangwang/article/details/27701653,感谢原著驱动开发中常常会启动几个内核线程,在整个驱动生命周期期间执行某些操作,比如USB驱动的控制线程,一直等待SCSI命令,没有命令的话睡眠,有命令的话就唤醒线程,解析执行相关的命令。还有USB驱动中的扫描线程,如果有新的设备连接到USB总线,则会启转载 2016-12-02 20:43:13 · 297 阅读 · 0 评论 -
Oops中的error code解释
当内核发生异常(比如非法地址访问)时,产生Oops,常见的打印如下:...BUG:unable to handle kernel paging request at f80c6131*pdpt=0000000000d08001 *pde=00000000372a0067 *pte=00000000000000000ops:0010 [#1] SMPModules lin原创 2016-11-23 16:20:13 · 8363 阅读 · 0 评论 -
gcc编译选项
1.gcc编译时指定宏定义编译时:gcc -DMAX=32 -o a a.c 相当于在文件a.c中定义:#define MAX 322.链接静态库的顺序问题 链接静态库时,如果多个静态库之间存在依赖关系,则有依赖关系的静态库之间存在顺序问题,这个在使用静态库时,需要注意,否则会报符号找不到问题,举例: libb.a依赖于是liba原创 2017-02-27 14:03:51 · 1968 阅读 · 0 评论 -
linux的条件变量和时间编程
条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。 1. 创建和注销 条件变量和互斥锁一样,都有静态动态两种创建方式,静态方式使用PTHREAD_COND_INITIALIZER常量,原创 2017-02-18 21:38:42 · 817 阅读 · 0 评论 -
linux死机问题
请教,我用的MT7621双核CPU,经常出现stall on CPU的情况,INFO: rcu_sched_state detected stall on CPU 0 (t=2500 jiffies)INFO: rcu_bh_state detected stalls on CPUs/tasks: { 0} (detected by 2, t=2503 jiffies)...整个系原创 2017-02-21 19:19:48 · 3318 阅读 · 0 评论 -
llinux系统头文件、C标准库头文件简介
头文件概述:在进行有关系统软件的安装的时候(编译一个新的驱动,或者安装一个系统级别的测试工具,例如systemtap),经常需要重新编译内核,相应的问题往往与内核头文件有关。那么,什么是内核头文件,为什么需要更新内核头文件?内核头文件作用是什么,如何更新?本文主要为你解答这些疑问。在 Linux 2.2/2.4 的纯真年代,内核头文件一直保持着 Unix 世界的"KISS"传统,只需将内核原创 2017-03-02 19:53:08 · 2026 阅读 · 0 评论 -
linux下的头文件和哭的搜索
C/C++程序在linux下被编译和连接时,GCC/G++会查找系统默认的include和link的路径,以及自己在编译命令中指定的路径。自己指定的路径就不说了,这里说明一下系统自动搜索的路径。【1】include头文件路径除了默认的/usr/include, /usr/local/include等include路径外,还可以通过设置环境变量来添加系统include的路径:# C原创 2017-08-14 14:14:51 · 401 阅读 · 0 评论