Linux系统编程
主要讲解Linux下应用程序涉及的主要内容:虚拟地址空间与物理地址空间详解、网络编程、Makefile,Kconfig、预处理-编译-汇编-链接过程分析、与Kernel交互接口等,
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
良非凉
Linux 内核专家,博客达人。
不能把程序讲解到人人都能听懂的程度,那就是自己理解的不够透彻。
展开
-
内存管理分析之二:MMU机制在进程中使用时的一些问题
内存管理分析之一:Linux进程空间与虚拟地址的好处内存管理分析之二:MMU机制在进程中使用时的一些问题内存管理分析之三:了解这些概念就了解了整个MMU机制32位linux系统中每个进程拥有4GB的虚拟地址空间(上文介绍:Linux进程空间与虚拟地址的好处),那么虚拟地址空间如何与实际物理内存进行对应呢—MMU(Memory Management Unit)。关于MMU的实现细节即分页处理的原理,...原创 2017-06-26 11:47:13 · 1660 阅读 · 0 评论 -
网络协议实例讲解(配抓包图)
网络七层协议模型在实际使用中并没有完全实现,事实证明有了如下部分,网络就可以完美运行了:应用层http ftp 传输层 tcp udp网络层 ip icmp igmp链路层 arp rarp物理层 wifi 以太网上面的一层一层的协议在最终传输的网络包上表现为,每经过网络的一层就会在原始数据包上添加一个网络的协议头Ethernet头IP头 TCP/UDP头原创 2017-11-20 14:01:15 · 2393 阅读 · 1 评论 -
Linux程序编译执行原理之二:gcc编译出的elf文件分析
使用gcc编译出的可执行程序是啥样的呢?使用编辑器打开只会看到一堆乱码^-^ 它又为何能够执行,如何执行的呢?今天我们以上一篇文章中编译出来的elf文件为例,来一起了解一下这其中的缘由。 Elf格式与bin格式的区别首先来对比一下另一种二进制文件格式bin1, bin文件是raw binary文件,其中只有机器码2, elf文件除了含有机器码之外还有其它信息,如:段加载地址原创 2017-06-23 16:21:41 · 2987 阅读 · 0 评论 -
linux启动第一个应用程序init && init启动android过程解析 && init.rc与inittab的关系 && android property和linux 环境变量
linux启动第一个应用程序initlinux的运行顺序为uboot传递参数到内核,内核的第一个c编写的函数为start_kernel(),start_kernel来启动内核,最后到到rest_init()函数处完成内核启动过程。rest_init()中启动第一个应用程序init,init程序的进程号为1,Linux使用了init进程来对组成Linux的服务和应用程序进行初始化。ini原创 2017-10-24 16:36:34 · 3483 阅读 · 0 评论 -
Android环境下关于kconfig,.config的解读及meneconfig 相关符号说明[M],{*},< >,-*-
kconfig的作用Kconfig 文件是用来管理哪个文件或哪一行(需要用宏包含起来的)需要编译,是linux可裁剪特性的主要实现方式。(ps:makefile的作用是用来管理文件之间的依赖关系的) kconfig是如何实现上面的神奇功能的linux源码根目录下的script文件夹中是实现makemenuconfig等配置工具的源码。其次在linux源码的各个目录中都有一个kcon原创 2017-07-03 20:17:42 · 3749 阅读 · 0 评论 -
linux驱动层到应用层的重要接口sys文件系统---/sys目录详解
Linux2.6内核中引入了sysfs文件系统。sysfs文件系统整理的设备驱动的相关文件节点,被视为dev文件系统的替代者。同时也拥有类似proc文件系统一样查看系统相关信息的功能。最主要的作用是sysfs把连接在系统上的设备和总线组织成分级的文件,使其从用户空间可以访问或配置。 Sysfs被加载在 /sys/目录下,它的子目录包括:(本文以高通sdm630平台为例)1) Bl原创 2017-07-13 11:30:40 · 4217 阅读 · 0 评论 -
栈内存是如何被编译器维护的
栈内存是如何被编译器维护的我们一直听说“栈内存由编译器维护”,那是如何维护的呢?是在程序运行期间由编译器来管理栈内存吗?怎么可能!以函数调用时的出入栈为例:原来编译器在编译函数调用代码时,不仅编译成call指令,还会在call指令之前添加若干入栈指令:push,在函数返回时会添加对应的出栈指令:pop。这部分是程序员无法控制的,因此叫作栈内存由编译器维护,并非运行期间维护的,而原创 2017-06-27 15:43:22 · 2049 阅读 · 1 评论 -
Linux程序编译执行原理之一:预处理-编译-汇编-链接过程分析
每次编译一个linux下的应用程序,好像只需要执行一下gcc,然后看到没有error就大功告成了(有时warning都不管的-_-),就可以高高兴兴的去执行啦。但是其中的原理是什么呢?看到这篇文章的同学肯定都有这样的疑惑,让我们一起来了解一下。 编译过程细节: test.c(文本格式c程序) -> (预处理器cpp)-> test.i(文本格式c程序) -> (编译器 ccl) -原创 2017-06-22 16:26:46 · 1217 阅读 · 0 评论 -
内存管理分析之一:Linux进程空间与虚拟地址的好处
内存管理分析之一:Linux进程空间与虚拟地址的好处内存管理分析之二:MMU机制在进程中使用时的一些问题内存管理分析之三:了解这些概念就了解了整个MMU机制使用虚拟地址的好处现代操作系统使用了虚拟地址的方式管理各个进程对内存的使用,这使得应用层编程方便、安全,主要体现在如下方面:1, 让每个进程拥有了相同的、独立内存空间,相互之间不会干扰2, 读写内存更安全。由于系统和MMU的限制,使得进程无...原创 2017-06-23 19:45:11 · 3815 阅读 · 0 评论