Linux 应用编程
文章平均质量分 84
终南樵夫
记录学习经历,分享学习乐趣
展开
-
Linux 应用程序的地址空间分布
Linux 应用程序在被内核调入内存中运行后就成为一个进程,因此分析应用程序的地址空间实际上就是分析进程的地址空间分布。 应用程序的地址空间实际上由以下几个部分组成:代码段、初始化数据段、未初始化数据段(bss段)、堆、栈。其在内存中的分布如下: #include #include int global_init_a = 1; //全局、初始化 int global原创 2015-10-26 17:25:25 · 1974 阅读 · 0 评论 -
Linux 多进程编程
一、知识背景 学习Linux 进程控制理论无非就是学习进程的几个方面:创建、退出、等待其他进程结束、执行新的程序。但是在学习这些理论知识以及具体实现方法之前,有必要了解一下进程其他的基本知识点 1、Linux 系统以进程为基本单位分配资源,以线程为基本单位进行调度; 2、进程拥有自己的地址空间,进程相关所有的信息都存放在进程的地址空间里,换句话说,进程所能访问到的地址空间的集合就是进程的地址原创 2016-03-11 14:23:50 · 981 阅读 · 0 评论 -
Linux 信号量互斥编程
所谓信号量,其实就是一个数字。内核给这个数字赋予一定的含义,让它等于不同的值时所表示的意义不同。这样就可以用它来标示某种资源是否正被使用。信号的分类其实挺多的,主要还是二值和计数器。这里讨论二值 现在有个文件,有两个进程要同时访问它。进程A 要往里面写入 "Math class is cancel",进程B 要往里面写入“English test”。正常情况下这两个信息会被完整的写入文件中。但是原创 2016-03-11 09:30:00 · 313 阅读 · 0 评论 -
Linux 内核模块编写与安装
Linux 系统一直在不断地发展,而相应地她的代码量也在不断的增大,直接导致的结果就是她的可执行镜像就变得越来越庞大。那么问题来了,如果将所有的镜像文件一次性地复制到内存中,那么所需的空间就非常大。但是有些服务是暂时或者很长时间内是不会被使用到的,那么就造成了空间的极大浪费。内核模块化就是为了解决这一个问题而被提出的一种解决方案。它通过一种机制,允许程序员将内核的一部分服务通过模块的方式...原创 2016-03-11 09:29:43 · 492 阅读 · 0 评论 -
Linux 文件编程
Linux 系统的文件系统是Linux 内核非常核心的组成部件,它不仅将硬盘抽象成文件系统,还将所有的设备都抽象成文件,让用户在操作设备时仿佛就是在操作一个文件。但是这里讨论的仍然是传统的文件系统操作。当然我们所做都是在应用层的工作,因此基本上都是和系统调用或者函数库打交道。函数库编程放在下一篇文章,这里讨论系统调用的方法进行文件编程。所谓文件编程无非就是写程序创建文件、打开文件、关闭文件、写入文原创 2015-10-27 09:40:11 · 447 阅读 · 0 评论