Linux学习
「已注销」
这个作者很懒,什么都没留下…
展开
-
linux下configure配置参数
1、源码安装一般包括几个步骤:配置(configure),编译(make),安装(make install)。2、其中configure是一个可执行脚本,在源码目录中执行可以完成自动的配置工作,即./configure。3、在实际的安装过程中,我们可以增加--prefix参数,这样可以将要安装的应用安装到指定的目录中,如,我们要安装git应用,在配置环节可以使用如下命令:# --pr...原创 2019-05-20 22:38:54 · 489 阅读 · 0 评论 -
GNU binutils工具集(1):addr2line
如果使用gcc 作为编译器,那么在开发过程中一定离不开使用与之配套的一个工具集(tool chain),即binutils。工具集中的部分工具除了被gcc在后台使用为我们创建程序文件?外,其他的则有助于方便开发和调试。在binutils工具集中,以下工具是我们在做嵌入式软件开发时需要掌握的。as:是汇编编译器,用于将汇编代码转换为目标文件。 addr2line:用来把程序地址转换为文件名...原创 2019-07-22 15:17:52 · 457 阅读 · 0 评论 -
虚拟地址、逻辑地址、线性地址、物理地址
虚拟地址 指由程序产生的由段选择符和段内偏移地址组成的地址。 逻辑地址 指由程序产生的段内偏移。有时候直接把逻辑地址当做虚拟地址。 线性地址 指虚拟地址到物理地址变换的中间层,是处理器可寻址的内存空间中的地址。程序代码会产生逻辑地址,也就是段中的偏移地址,加上相应的段基址就成了线性地址。如果开启了分页机制,那么线性地址需要再经过变换,转为为物理地址。如果无分页机制,那么线性地址就是物理地...原创 2019-07-10 13:27:47 · 742 阅读 · 0 评论 -
Linux系统调用全过程详解
系统调用(SYSTEM CALL) OS内核中都有一组实现系统功能的过程,系统调用就是对上述过程的调用。编程人员利用系统调用,向OS提出服务请求,由OS代为完成。一般情况下,进程是不能够存取系统内核的。它不能存取内核使用的内存段,也不能调用内核函数,CPU的硬件结构保证了这一点。只有系统调用是一个例外。统调用是用户态进入内核态的唯一入口:一夫当关,万夫莫开。常用系统调用:控制硬...原创 2019-07-14 16:29:20 · 2885 阅读 · 0 评论 -
同样学习Linux, 为何差别这么大? - 论打通Linux进程和内存管理任督二脉
我在多年的工程生涯中发现很多工程师碰到一个共性的问题:Linux工程师很多,甚至有很多有多年工作经验,但是对一些关键概念的理解非常模糊,比如不理解CPU、内存资源等的真正分布,具体的工作机制,这使得他们对很多问题的分析都摸不到方向。比如进程的调度延时是多少?Linux能否硬实时?多核下多线程如何执行?系统的内存究竟耗到哪里去了?我写的应用程序究竟耗了多少内存?什么是内存泄漏,如何判定内存是否真的泄...原创 2019-06-24 18:09:56 · 203 阅读 · 0 评论 -
如果你这样回答“什么是线程安全”,面试官都会对你刮目相看
不是线程的安全面试官问:“什么是线程安全”,如果你不能很好的回答,那就请往下看吧。论语中有句话叫“学而优则仕”,相信很多人都觉得是“学习好了可以做官”。然而,这样理解却是错的。切记望文生义。同理,“线程安全”也不是指线程的安全,而是指内存的安全。为什么如此说呢?这和操作系统有关。目前主流操作系统都是多任务的,即多个进程同时运行。为了保证安全,每个进程只能访问分配给自己的内存空间...原创 2019-06-26 20:26:43 · 160 阅读 · 0 评论 -
内存的分段和分页机制
内存分段一个 C 编译器可能会创建如下段:,代码 全局变量 堆(内存从堆上分配) 每个线程使用的栈 标准的C库段式存储管理地址变换机构逻辑地址 = 段的基地址 + 段内地址 程序中各个段对应的情况图 内存分页基...原创 2019-06-26 16:55:50 · 1810 阅读 · 1 评论 -
ifconfig 输出结果详解
eth0 Link encap:Ethernet HWaddr 52:54:00:FA:9E:91 inet addr:192.168.129.46 Bcast:192.168.129.255 Mask:255.255.255.0 inet6 addr: fe80::5054:ff:fefa:9e91/64 Scope:Lin...原创 2019-06-22 16:53:28 · 5309 阅读 · 1 评论 -
Vim常用命令
0 移动光标到本行最开头.H 移动光标到屏幕的首行.M 移动光标到屏幕的中间一行.L 移动光标到屏幕的尾行.gg 移动光标到文档首行.G 移动光标到文档尾行.:n 跳至第n行'' ...原创 2019-06-21 14:12:10 · 149 阅读 · 0 评论 -
Linux常用命令大全
1、文件管理cat把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里:cat -n textfile1 > textfile2清空 /etc/test.txt 文档内容:cat /dev/null > /etc/test.txtdev/null:在类 Unix 系统中,/dev/null 称空设备,是一个特殊的设备文件,它丢...原创 2019-06-20 16:57:25 · 183 阅读 · 0 评论 -
linux根目录下各文件夹的作用
大致有这些文件:bin:系统启动需要的命令和大部分普通用户平常所需的可执行命令(如:ls,mkdir)。需要注意的是这个文件夹中的文件都是二进制的,权限很高,绝大部分文件普通用户都只有执行权限,无读写权限。只有root账户有读写权限。boot:目录中存放Ubuntu内核文件及引导加载器bootstraploade相关的文件,如果这个目录中的文件被破坏,一般都会出现启动引导异常,...原创 2019-06-15 09:33:47 · 983 阅读 · 0 评论 -
信号阻塞与屏蔽
信号在内核中的表示信号递达(Delivery ):实际信号执行的处理过程(3种状态:忽略,执行默认动作,捕获) 信号未决(Pending):从产生到递达之间的状态 信号阻塞(Block):将信号保持在未决状态,直到进程解除对此信号的阻塞,才执行递达动作阻塞和忽略的区别:忽略时信号处理(递达)的一种,阻塞直到被解除之后才能执行递达动作pending表:用于描述一个进程是否收到信号 h...原创 2019-06-08 08:25:18 · 467 阅读 · 0 评论 -
I/O多路复用总结
select#incl_ude <sys/select. h>#include <sys/time.h>int select(int maxfd, fd_set * readset, fd_set * writeset, fd_set * exceptset, const struct timeval * time...原创 2019-06-05 10:27:51 · 227 阅读 · 0 评论 -
Linux的Netlink机制
1、Netlink socket的作用: Netlink socket 是一种Linux特有的socket,用于实现用户进程与内核进程之间通信的一种特殊的进程间通信方式(IPC) ,也是网络应用程序与内核通信的最常用的接口。 Netlink 是一种在内核和用户应用间进行双向数据传输的非常好的方式,用户态应用使用标准的 socket API 就能使用 Netlink 提供的强大功能,内核态需...原创 2019-05-18 09:16:00 · 597 阅读 · 0 评论 -
大碰撞!当Linux多线程遭遇Linux多进程
本文是描述多进程多线程编程中遇到过的一个坑,并从内核角度分析其原理。这里说的多进程多线程并不是单一的**多进程或多线程**,而是**多进程和多线程**,往往会在写一个大型应用时才会用到多进程多线程的模型。这是怎么样的一个坑呢?假设有下面的代码:童鞋们能分析出来,线程函数```sub_pthread```会被执行多少次么?线程函数打印出来的ID是父进程ID呢?还是子进程ID?还是父子进程都...转载 2019-08-25 23:02:05 · 362 阅读 · 0 评论