
Linux
文章平均质量分 93
因上努力果上随缘
这个作者很懒,什么都没留下…
展开
-
侦测程序句柄泄露的统计方法
在 Linux 平台上运行的进程都会从系统资源申请一定数量的句柄,而且系统控制了进程能够申请的最大句柄数量。用户程序如果不及时释放无用的句柄,将会引起句柄泄露,从而可能造成申请资源失败。该文章从 linux 内核角度分析了句柄的产生和泄漏的原因,并采用一种应用统计侦测句柄的方法,为用户判断程序句柄是否泄漏提供了更直观的依据。通过对程序句柄数量进行采样统计,并且绘制出相应的统计图形,能够以比较直观的方式判断在程序中是否存在句柄泄露。该方法基于程序要运行大量的测试用例,增加测试用例的覆盖率,尽可能多的用测试用转载 2017-02-26 09:58:22 · 339 阅读 · 0 评论 -
Linux 上的基础网络设备详解
抽象网络设备的原理及使用。网络虚拟化是 Cloud 中的一个重要部分。作为基础知识,本文详细讲述 Linux 抽象出来的各种网络设备的原理、用法、数据流向。您通过此文,能够知道如何使用 Linux 的基础网络设备进行配置以达到特定的目的,分析出 Linux 可能的网络故障原因。转载 2017-02-20 00:30:49 · 222 阅读 · 0 评论 -
Linux 网络栈剖析
Linux® 操作系统的最大特性之一就是它的网络栈。它最初源于 BSD 的网络栈,具有一套非常干净的接口,组织得非常好。其接口范围从协议无关层(例如通用 socket 层接口或设备层)到各种网络协议的具体层。本文将从分层角度对 Linux 网络栈的接口进行探索,并介绍其中的一些主要结构。转载 2017-02-20 01:08:49 · 317 阅读 · 0 评论 -
Linux 下网络性能优化方法简析
性能问题永远是永恒的主题之一,而Linux在网络性能方面的优势则显而易见,这篇文章是对于Linux内核中提升网络性能的一些优化方法的简析,以让我们去后台看看魔术师表演用的盒子,同时也看看内核极客们是怎样灵活的,渐进的去解决这些实际的问题。转载 2017-02-20 01:18:09 · 268 阅读 · 0 评论 -
linux下调试监控类工具
linux下调试监控类工具总结原创 2017-02-19 23:21:46 · 301 阅读 · 0 评论 -
使用 shell 脚本对 Linux 系统和进程资源进行监控
本文主要介绍 Linux 平台下的 shell 脚本使用,主要包括如何对系统和进程资源进行有效的监控。转载 2017-02-20 01:56:35 · 321 阅读 · 0 评论 -
在 Linux 平台中调试 C/C++ 内存泄漏方法
由于 C 和 C++ 程序中完全由程序员自主申请和释放内存,稍不注意,就会在系统中导入内存错误。同时,内存错误往往非常严重,一般会带来诸如系统崩溃,内存耗尽这样严重的后果。本文将从静态分析和动态检测两个角度介绍在 Linux 环境进行内存泄漏检测的方法,并重点介绍静态分析工具 BEAM、动态监测工具 Valgrind 和 rational purify 的使用方法。相信通过本文的介绍,能给大家对处理其它产品或项目内存泄漏相关的问题时提供借鉴。转载 2017-02-20 01:49:58 · 332 阅读 · 0 评论 -
Linux 初始 RAM 磁盘(initrd)概述
学习 initrd 的剖析、创建以及在 Linux 引导过程中的用法。Linux® 初始 RAM 磁盘(initrd)是在系统引导过程中挂载的一个临时根文件系统,用来支持两阶段的引导过程。initrd 文件中包含了各种可执行程序和驱动程序,它们可以用来挂载实际的根文件系统,然后再将这个 initrd RAM 磁盘卸载,并释放内存。在很多嵌入式 Linux 系统中,initrd 就是最终的根文件系统。本文将探索 Linux 2.6 的初始 RAM 磁盘,包括如何创建以及如何在 Linux 内核中使用。转载 2017-02-20 01:37:40 · 237 阅读 · 0 评论 -
浅析 Linux 中的时间编程和实现原理,第 1 部分: Linux 应用层的时间编程
本文试图完整地描述 Linux 系统中 C 语言编程中的时间问题。主要内容包括应用程序中的时间编程方法;时钟硬件简介;Glibc 时间函数的实现以及 Linux 内核对时间的支持和实现原理。这是第 1 部分,探讨应用开发中的时间编程问题。转载 2017-02-20 01:32:43 · 313 阅读 · 0 评论 -
如何为嵌入式开发建立交叉编译环境
在进行嵌入式开发之前,首先要建立一个交叉编译环境,这是一套编译器、连接器和libc库等组成的开发环境。文章通过一个具体的例子说明了这些嵌入式交叉编译开发工具的制作过程。转载 2017-02-20 01:28:07 · 298 阅读 · 0 评论 -
read 系统调用剖析
本文介绍了从 read 系统调用发出到结束处理的全过程。该过程包括两个部分:用户空间的处理、核心空间的处理。用户空间处理部分是系统调用从用户态切到核心态的过程。核心空间处理部分则是 read 系统调用在 linux 内核中处理的整个过程。转载 2017-02-20 01:13:59 · 202 阅读 · 0 评论 -
提高 Linux 上 socket 性能
加速网络应用程序的 4 种方法。使用 Sockets API,我们可以开发客户机和服务器应用程序,它们可以在本地网络上进行通信,也可以通过 Internet 在全球范围内进行通信。与其他 API 一样,您可以通过一些方法使用 Sockets API,从而提高 Socket 的性能,或者限制 Socket 的性能。本文探索了 4 种使用 Sockets API 来获取应用程序的最大性能并对 GNU/Linux® 环境进行优化从而达到最好结果的方法。转载 2017-02-20 01:06:33 · 216 阅读 · 0 评论 -
使用 libevent 和 libev 提高网络应用性能
构建现代的服务器应用程序需要以某种方法同时接收数百、数千甚至数万个事件,无论它们是内部请求还是网络连接,都要有效地处理它们的操作。有许多解决方案,但是 libevent 库和 libev 库能够大大提高性能和事件处理能力。在本文中,我们要讨论在 UNIX® 应用程序中使用和部署这些解决方案所用的基本结构和方法。libev 和 libevent 都可以在高性能应用程序中使用,包括部署在 IBM Cloud 或 Amazon EC2 环境中的应用程序,这些应用程序需要支持大量并发客户端或操作。转载 2017-03-01 22:41:36 · 387 阅读 · 0 评论 -
掌握 Linux 调试技术
可以用各种方法来监控运行着的用户空间程序:可以为其运行调试器并单步调试该程序,添加打印语句,或者添加工具来分析程序。本文描述了几种可以用来调试在 Linux 上运行的程序的方法。我们将回顾四种调试问题的情况,这些问题包括段错误,内存溢出和泄漏,还有挂起。转载 2017-02-22 00:52:18 · 257 阅读 · 0 评论 -
定位 UNIX 上常见问题的经验总结
主要对 UNIX 平台常见的问题进行了分类,介绍一些常见问题分析时使用的方法和命令,对以下三种常见问题的分析方法做了简单介绍:UNIX 下 Crash 问题的分析方法、UNIX 下内存泄露问题的分析方法和 UNIX 下 performance 问题的分析方法。转载 2017-02-22 00:55:42 · 537 阅读 · 0 评论 -
Linux 内核中的 GCC 特性
Linux® 内核使用 GNU Compiler Collection (GCC) 套件的几个特殊功能。这些功能包括提供快捷方式和简化以及向编译器提供优化提示等等。了解这些特殊的 GCC 特性,学习如何在 Linux 内核中使用它们。转载 2017-02-26 09:43:21 · 447 阅读 · 0 评论 -
GCC 中的编译器堆栈保护技术
本文介绍了编译器所采用的以 Canaries 探测为主的堆栈保护技术,并且以 GCC 为例展示了 SSP 的实现方式和实际效果。最后又简单介绍了突破编译器保护的一些方法。尽管攻击者仍能通过一些技巧来突破编译器的保护,但编译器加入的堆栈保护机制确实给溢出攻击造成了很大的困难。本文仅从编译器的角度讨论了防御溢出攻击的方法。要真正防止堆栈溢出攻击,单从编译器入手还是不够的,完善的系统安全策略也相当重要,此外,良好的编程习惯,使用带有数组越界检查的 libc 也会对防止溢出攻击起到重要作用。转载 2017-02-26 01:13:32 · 384 阅读 · 0 评论 -
将 Linux on x86 应用程序移植到 Linux on Power 的指南
本文将介绍如何使用以下直观的分步流程将 Linux® C/C++ 应用程序从 x86 平台(Intel® 或 AMD)移植到 IBM® PowerLinux™。我们首先要了解需要为移植做的准备工作,然后我们将介绍一些让 32 位和 64 位代码在 PowerLinux 上运行的实现技巧。转载 2017-02-26 01:07:56 · 685 阅读 · 0 评论 -
永不消逝的进程
后台守护进程是 Linux/Unix 系统中非常重要的"地下工作者"。本文从 Linux/Unix 的进程组和会话的机制入手,详细的介绍了基于这些机制之上的两种截然不同的实现守护进程的手法。在深入解读这些奇淫巧技的同时,笔者也更希望读完本文的朋友们能够触类旁通,对 Linux/Unix 系统的进程间关系能有更深一层的认识。转载 2017-02-26 01:02:16 · 454 阅读 · 0 评论 -
libevent:一个在网络服务器中事件驱动开发库
Libevent 是一个基于事件触发的网络库。它提供一种机制,即当某个具体事件发生在一个文件描述符上或已经达到超时时,来执行某一个回调函数。此外,它也支持信号或定时器事件的回调。Libevent 是为了取代在事件驱动的网络服务中的事件循环。应用程序只需要调用event_dispatch() 函数,然后动态添加和移除事件而不需要更改事件循环。转载 2017-03-01 22:45:45 · 678 阅读 · 0 评论 -
libcstl:标准C语言通用数据结构和常用算法库
libcstl是使用标准C语言编写的通用数据结构和常用算法库。libcstl模仿STL的接口形式,包括序列容器、关联容器、容器适配器、迭代器、函数和算法。libcstl为C编程中的数据管理提供了方便简易的开发库。 libcstl除了包括容器,迭代器,函数和算法四部分外,还包括类型机制以及内存管理。 类型机制允许用户在容器中保存任何类型的数据,这其中包括C内建的类型, libcstl内建的类型以及用户自定义的类型。内存管理采用内存池的方式帮助用户减少内存分配带来的碎片。 libcstl可以很好的运行在类Un转载 2017-03-01 22:53:48 · 10114 阅读 · 0 评论 -
Linux 上的数据可视化工具
Linux® 上用来实现数据的图形可视化的应用程序有很多,从简单的 2-D 绘图到 3-D 制图,再到科学图形编程和图形模拟。幸运的是,这方面的工具有很多开放源码实现,包括 gnuplot、GNU Octave、Scilab、MayaVi、Maxima 等。每个工具都有自己的优缺点,并且都是针对不同的应用程序而设计的。对这些开放源码图形可视化工具进行一下探索,有助于我们更好地决定哪个工具最适合我们的应用程序。转载 2017-02-22 01:35:19 · 946 阅读 · 0 评论 -
在多线程应用程序中使用循环缓冲区高效地进行日志记录
要分析并找出运行错误问题的原因,程序员所广泛使用的一种方法就是日志记录。在本文中,您将了解如何使用循环缓冲区通过内存操作(而不是文件操作)高效地进行日志记录。为该缓冲区选择合适的大小,从而确保转储相关的消息,这将在调试时很有帮助。转载 2017-02-22 01:31:21 · 659 阅读 · 0 评论 -
学习 Linux,101: LPIC-1 学习路线图
这些教程可帮助您学习和复习基本的 Linux 任务。如果您想要通过 Linux 系统管理员专业认证,这些教程可帮助您了解 Linux Professional Institute 的 LPIC-1:Linux 服务器专业认证考试 101 和 102 的知识点。此路线图根据考试 101 和 102 中的 43 个目标而组织,通过 LPIC-1 认证需要掌握这些目标。转载 2017-02-22 01:14:22 · 1470 阅读 · 0 评论 -
Linux 套接字编程中的 5 个隐患
Socket API 是网络应用程序开发中实际应用的标准 API。尽管该 API 简单,但是开发新手可能会经历一些常见的问题。本文识别一些最常见的隐患并向您显示如何避免它们。转载 2017-02-22 01:11:00 · 277 阅读 · 0 评论 -
Linux系统调用列表
Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数。转载 2017-02-22 01:06:09 · 229 阅读 · 0 评论 -
浅析 Linux 中的时间编程和实现原理
本文试图完整地描述 Linux 系统中 C 语言编程中的时间问题。主要内容包括应用程序中的时间编程方法;时钟硬件简介;Glibc 时间函数的实现以及 Linux 内核对时间的支持和实现原理。这是第四部分,探讨最新 Linux 内核时间系统的变化。转载 2017-02-20 01:02:17 · 608 阅读 · 0 评论 -
浅谈 Linux 内核开发之网络设备驱动
本文介绍了网络设备的基本概念,并从 Linux 内核的角度出发,介绍了网络设备驱动的开发方法和开发中的注意事项。转载 2017-02-20 00:55:17 · 237 阅读 · 0 评论 -
Linux 引导过程内幕
从主引导记录到第一个用户空间应用程序的指导。引导 Linux® 系统的过程包括很多阶段。不管您是引导一个标准的 x86 桌面系统,还是引导一台嵌入式的 PowerPC® 机器,很多流程都惊人地相似。本文将探索 Linux 的引导过程,从最初的引导到启动第一个用户空间应用程序。在本文介绍的过程中,您将学习到各种与引导有关的主题,例如引导加载程序、内核解压、初始 RAM 磁盘以及 Linux 引导的其他一些元素。转载 2017-02-20 00:52:40 · 188 阅读 · 0 评论 -
Linux 自检和 SystemTap
用于动态内核分析的接口和语言。现代的操作系统内核提供自检 功能,即动态地检查内核以理解其行为的能力。这些行为可以反映内核问题和性能瓶颈。拥有这些信息时候,您就可以调优或修改内核以避免出现故障。本文探索一个名为 SystemTap 的开放源码基础设施,它为 Linux® 内核提供这种动态的自检。转载 2017-02-19 23:11:41 · 319 阅读 · 0 评论 -
内核调试神器SystemTap — 简介与使用(一)
SystemTap是我目前所知的最强大的内核调试工具,有些家伙甚至说它无所不能转载 2017-02-19 23:25:08 · 288 阅读 · 0 评论 -
linux perf - 性能测试和优化工具
Perf是Linux kernel自带的系统性能优化工具。虽然它的版本还只是0.0.2,Perf已经显现出它强大的实力,足以与目前Linux流行的OProfile相媲美了。Perf 的优势在于与Linux Kernel的紧密结合,它可以最先应用到加入Kernel的new feature。而像OProfile, GProf等通常会“慢一拍”。Perf的基本原理跟OProfile等类似,也是在CPU的PMU registers中Get/Set performance counters来获得诸如instruct转载 2017-02-19 22:52:35 · 1295 阅读 · 0 评论 -
系统级性能分析工具 — Perf
系统级性能分析工具 — Perf 。从2.6.31内核开始,linux内核自带了一个性能分析工具perf,能够进行函数级与指令级的热点查找。转载 2017-02-19 22:48:51 · 362 阅读 · 0 评论 -
Perf -- Linux下的系统性能调优工具,第 2 部分
perf event 是一款随 Linux 内核代码一同发布和维护的性能诊断工具,由内核社区维护和发展。perf 不仅可以用于应用程序的性能统计分析,也可以应用于内核代码的性能统计和分析。得益于其优秀的体系结构设计,越来越多的新功能被加入 perf,使其已经成为一个多功能的性能统计工具集 。第二部分将介绍 perf 在内核代码开发上的应用。转载 2017-02-19 22:08:39 · 436 阅读 · 0 评论 -
Perf -- Linux下的系统性能调优工具,第 1 部分
Perf Event 是一款随 Linux 内核代码一同发布和维护的性能诊断工具,由内核社区维护和发展。Perf 不仅可以用于应用程序的性能统计分析,也可以应用于内核代码的性能统计和分析。得益于其优秀的体系结构设计,越来越多的新功能被加入 Perf,使其已经成为一个多功能的性能统计工具集 。在第一部分,将介绍 Perf 在应用程序开发上的应用。转载 2017-02-19 22:05:50 · 299 阅读 · 0 评论 -
linux下内存的统计和内存泄露类问题的定位
在产品的开发中,通过对当前系统消耗内存总量的统计,可以对产品所需内存总量进行精确的评估,从而选择合适的内存芯片与大小,降低产品的成本。在遇到内存泄露类问题时,经常会对此束手无策,本文通过对proc下进程相关的文件进行分析,精确评估系统消耗内存的大小,还可以对内存泄露类问题的解决提供一种定位手段。Linux在内存使用上的原则是:如果内存充足,不用白不用,尽量使用内存来缓存一些文件,从而加快进程的运行速度,而当内存不足时,会通过相应的内存回收策略收回cache内存,供进程使用。转载 2017-02-19 03:25:46 · 204 阅读 · 0 评论 -
使用kprobes查看内核内部信息
使用printk打印变量等方法,是调试内核的有效方法之一,但是这种方法必须重新构建并用新内核启动,调试效率比较低。以内核模块的方式使用kprobes、jprobes,就可以在任意地址插入侦测器,执行包括printk在内的各种调试工作,而无须重新构建内核,也无须重启。转载 2017-02-19 03:12:08 · 249 阅读 · 0 评论 -
kprobe工作原理
Kprobes 提供了一个强行进入任何内核例程并从中断处理器无干扰地收集信息的接口。使用 Kprobes可以收集处理器寄存器和全局数据结构等调试信息。开发者甚至可以使用 Kprobes 来修改寄存器值和全局数据结构的值。基本工作机制是:用户指定一个探测点,并把一个用户定义的处理函数关联到该探测点,当内核执行到该探测点时,相应的关联函数被执行,然后继续执行正常的代码路径。kprobe实现了三种类型的探测点: kprobes, jprobes和kretprobes (也叫返回探测点)。 kprobes是可以被插转载 2017-02-19 02:24:40 · 1028 阅读 · 0 评论 -
Linux内核中Kprobes调试技术的实现
内核调试技术―Kprobes, Kprobes是一个轻量级的内核调试工具,利用Kprobes技术可以在运行的内核中动态的插入探测点,在探测点处执行用户预定义的操作。本文首先根据Kprobes在Linux内核中的源码实现,针对Linux CPU异常技术,single-step技术,Loadable Kernel Module技术以及RCU同步技术在Kprobes中的应用进行了研究。其次,针对Kprobes目前所支持的kprobe,jprobe,kretprobe等三种调试手段的实现进行了详细的分析研究。转载 2017-02-19 01:21:04 · 404 阅读 · 0 评论 -
使用 Kprobes 调试内核
将 printk 插入到运行中的 Linux 内核。使用了 Kprobes,不需要经常重新引导和重新编译内核就可以完成这一任务。Kprobes 与 2.6 内核结合起来提供了一个动态插入 printk's 的轻量级、无干扰而且强大的装置。记录调试信息(比如内核栈追踪、内核数据结构和寄存器)日志从来没有这么简单过!转载 2017-02-19 01:15:11 · 441 阅读 · 0 评论