Linux
文章平均质量分 76
Adam040606
这个作者很懒,什么都没留下…
展开
-
Linux中mprotect()函数的用法
转自:http://www.linuxdiyf.com/linux/14382.html在Linux中,mprotect()函数可以用来修改一段指定内存区域的保护属性。函数原型如下:#include #include int mprotect(const void *start, size_t len, int prot); mp转载 2017-03-27 21:57:46 · 922 阅读 · 0 评论 -
Linux 2.6内核中新的锁机制--RCU
转自:http://www.ibm.com/developerworks/cn/linux/l-rcu/一、 引言众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁(rwlock),它们使用起来非常简单,而且是一种很有效的同步机制,在UNIX系统和Linux系统中得到了广泛的使用。但是随着计算机硬件的快速发展,获得这种锁的开销相对于CPU的速转载 2016-10-28 13:36:54 · 387 阅读 · 0 评论 -
【内核】进程切换 switch_to 与 __switch_to
转自:http://www.cnblogs.com/visayafan/archive/2011/12/10/2283660.html#define switch_to(prev, next, last) \do { \/* \ * Context-switching clobbers(彻底击败) all registers, so we clo转载 2016-11-06 22:36:27 · 1083 阅读 · 0 评论 -
Linux性能及调优指南(翻译)之Linux内存架构
本文为IBM RedBook的Linux Performanceand Tuning Guidelines的1.2节的翻译原文地址:http://www.redbooks.ibm.com/redpapers/pdfs/redp4285.pdf原文作者:Eduardo Ciliendo, Takechika Kunimasa, Byron Braswell译文如下:转载 2016-10-23 22:39:47 · 354 阅读 · 0 评论 -
Linux下fork()、vfork()、clone()和exec()的区别
转自:http://lib.csdn.net/base/linux前三个和最后一个是两个类型。前三个主要是Linux用来创建新的进程(线程)而设计的,exec()系列函数则是用来用指定的程序替换当前进程的所有内容。所以exec()系列函数经常在前三个函数使用之后调用,来创建一个全新的程序运行环境。Linux用init进程启动其他进程的过程一般都是这样的。 下面说for转载 2016-10-23 22:39:03 · 464 阅读 · 0 评论 -
Linux下HugePage内存功能配置
转自:http://blog.itpub.net/17203031/viewspace-774843/在Linux环境性能优化实践中,HugePage是一个经常提到的方法。简单的说,HugePage就是Linux内核上一种是用内存块的方法。作为传统4K Page的替代,HugePage在大部分场景下可以提升Oracle实例的运行性能效率。 本篇介绍如何进行HugePage配置和Or转载 2016-10-11 11:17:15 · 1055 阅读 · 0 评论 -
Linux HugePage 特性
转自:http://blog.csdn.net/leshami/article/details/8777639HugePage,就是指的大页内存管理方式。与传统的4kb的普通页管理方式相比,HugePage为管理大内存(8GB以上)更为高效。本文描述了什么是HugePage,以及HugePage的一些特性。 1、Hugepage的引入 操作系统对于数据的存取直转载 2016-10-11 11:09:52 · 369 阅读 · 0 评论 -
Linux中的随机数文件 /dev/random /dev/urandom
转自:http://www.linuxidc.com/Linux/2012-05/60476.htmLinux中的随机数可以从两个特殊的文件中产生,一个是/dev/urandom.另外一个是/dev/random。他们产生随机数的原理是利用当前系统的熵池来计算出固定一定数量的随机比特,然后将这些比特作为字节流返回。熵池就是当前系统的环境噪音,熵指的是一个系统的混乱程度,系统噪音可以通过很多参数来评转载 2016-08-31 10:13:09 · 1099 阅读 · 0 评论 -
协程实现的基础
转自:http://blog.csdn.net/kobejayandy/article/details/41790943协程可以认为是一种用户态的线程,与系统提供的线程不同点是,它需要主动让出CPU时间,而不是由系统进行调度,即控制权在程序员手上。既然看成是用户态线程,那必然要求程序员自己进行各个协程的调度,这样就必须提供一种机制供编写协程的人将当前协程挂起,即保存协程运行场景转载 2016-05-29 22:35:07 · 532 阅读 · 0 评论 -
构建C协程之ucontext篇
转自:http://blog.csdn.net/kobejayandy/article/details/41779837原理简介所谓 “ucontext” 机制是 GNU C 库提供的一组用于创建、保存、切换用户态执行“上下文”(context)的API,可以看作是 “setjmp/long_jmp” 的“升级版”,主要包括以下四个函数:void m转载 2016-05-29 22:24:34 · 686 阅读 · 0 评论 -
gcc选项-g与-rdynamic的异同
转自:http://www.lenky.info/archives/2013/01/2190gcc的-g,应该没有人不知道它是一个调试选项,因此在一般需要进行程序调试的场景下,我们都会加上该选项,并且根据调试工具的不同,还能直接选择更有针对性的说明,比如-ggdb。-g是一个编译选项,即在源代码编译的过程中起作用,让gcc把更多调试信息(也就包括符号信息)收集起来并将存放到最终的可执行转载 2016-11-09 11:15:34 · 2096 阅读 · 0 评论 -
Linux内核中的fastcall和asmlinkage宏
转自:http://www.linuxidc.com/Linux/2012-12/77127.htm在linux内核中我们都会经常见到FASTCALL和armlinkage,它们各有什么不同呢?下面我们来具体分析一下。在标准C系中函数的形参在实际传入参数的时候会涉及到参数存放的问题,那么这些参数存放在哪里呢?对x86比较了解的话,应该知道这些函数参数和函数内部局部变量一起被分配转载 2016-10-29 23:09:57 · 455 阅读 · 0 评论 -
Let’s Hook a Library Function
转载:http://opensourceforu.com/2011/08/lets-hook-a-library-function/If you are a developer, and want to change the way a library function works, this article will give you a basic idea of how to g转载 2016-11-25 08:46:46 · 535 阅读 · 0 评论 -
Linux 2.6 Completely Fair Scheduler 内幕
转自:http://www.ibm.com/developerworks/cn/linux/l-completely-fair-scheduler/index.html?ca=drs-cn-0125自 2.6.23 起提供对 CPU 的出色访问任务调度器是任何操作系统的关键部分,Linux 在此领域中不断发展和创新。在内核 2.6.23 中,推出了 Co转载 2016-11-13 23:11:14 · 575 阅读 · 0 评论 -
Linux进程调度策略的发展和演变--Linux进程的管理与调度(十六)
转自:http://blog.csdn.net/gatieme/article/details/51701149日期内核版本架构作者GitHubCSDN2016-06-14Linux-4.6X86 & armgatiemeLinuxDeviceDriversLinux进程转载 2016-11-13 23:09:56 · 956 阅读 · 0 评论 -
Per-CPU variables
转自:https://0xax.gitbooks.io/linux-insides/content/Concepts/per-cpu.htmlPer-CPU variables are one of the kernel features. You can understand the meaning of this feature by reading its name. We can翻译 2016-10-30 17:23:28 · 763 阅读 · 0 评论 -
CPU私有变量(per-CPU变量)
转自:http://blog.chinaunix.net/uid-24148050-id-300576.html一、简介2.6内核上一个新的特性就是per-CPU变量。顾名思义,就是每个处理器上有此变量的一个副本。per-CPU的最大优点就是,对它的访问几乎不需要锁,因为每个CPU都在自己的副本上工作。tasklet、timer_list等机制都使用了per-CPU技术。转载 2016-10-30 17:24:30 · 449 阅读 · 0 评论 -
Linux cpumask分析
转自:http://blog.csdn.net/nirenxiaoxiao/article/details/21462053首先我们来分析一下定义在cpumask.h中 结构体cpumask_t[cpp] view plain copy typedef struct cpumask { DECLARE_BITMAP(bits, N转载 2016-10-30 15:54:37 · 1416 阅读 · 0 评论 -
Linux进程调度(1):CFS调度器的设计框架
转自:http://blog.csdn.net/zhoudaxia/article/details/7375668 1. 概述 对于分时操作系统而言,表面上看起来是多个进程同时在执行,而在系统内部则进行着从一个进程到另一个进程的切换动作。这样的进程并发执行涉及到进程切换(process switch)和进程调度(process scheduling)两大问题。其中进程调度是操作系统转载 2016-10-30 15:44:01 · 631 阅读 · 0 评论 -
Linux 2.6内核中新的锁机制--RCU
转自:http://www.ibm.com/developerworks/cn/linux/l-rcu/一、 引言众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁(rwlock),它们使用起来非常简单,而且是一种很有效的同步机制,在UNIX系统和Linux系统中得到了广泛的使用。但是随着计算机硬件的快速发展,获得这种锁的开销相对于CPU的速转载 2016-10-29 23:15:05 · 386 阅读 · 0 评论 -
文件描述符fd和文件指针fp之间的相互转换
转自:http://blog.csdn.net/embedded_sky/article/details/45064123 Linux/Unix下使用open函数(系统调用)打开文件会得到文件描述符fd(int型变量),而使用C库中的fopen函数打开文件则会得到文件描述符fp(FILE*型变量),二者之间是可以相互转换的,下面是两个example。1.fd转换为转载 2016-10-29 23:10:43 · 696 阅读 · 0 评论 -
内存屏障相关--barrier(),mb(),smp_mb(),乱序,内存一致性
转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=14528823&id=4337007 内核中定义的内存屏障原语有: #define barrier() __asm__ __volatile__("": : :"mem转载 2016-03-15 17:08:10 · 9261 阅读 · 0 评论 -
LINUX内核之内存屏障
@CopyLeft by ICANTH,I Can do ANy THing that I CAN THink!~Author: WenHui, WuHan University,2012-6-4 源地址: http://www.cnblogs.com/icanth/archive/2012/06/10/2544300.html内存屏障(Memory Barriers)转载 2016-03-15 15:36:08 · 537 阅读 · 0 评论 -
如何高效的访问内存
转自:http://www.lenky.info/archives/2011/11/310影响内存访问速度的因素主要有:1.内存带宽:每秒读写内存的数据量,由硬件配置决定。2.CACHE高速缓冲:CPU与内存之间的缓冲器,当命中率比较高时能大大提供内存平均访问速度。3.TLB转换旁视缓冲:系统虚拟地址向物理地址转换的高速查表机制,转换速度比普通转换机制要快。我们能够转载 2016-02-21 21:17:18 · 660 阅读 · 0 评论 -
TCMalloc小记
转自:http://blog.csdn.net/chosen0ne/article/details/9338591周末抽空看了一下tcmalloc,了解了个大概。下面记录一下。一. 原理tcmalloc就是一个内存分配器,管理堆内存,主要影响malloc和free,用于降低频繁分配、释放内存造成的性能损耗,并且有效地控制内存碎片。glibc中的内存分配器是ptmalloc2,t转载 2015-11-13 09:19:39 · 526 阅读 · 0 评论 -
系统负载
转自:http://blog.csdn.net/playerl/article/details/7560508系统负载过大而导致系统性能下降的原因绝大多数都是CPU或I/O中的某个出了问题.在寻找瓶颈时,先查看平均负载等综合型数字(top), 再看CPU使用率、I/O等待率等更具体的数字, 再进一步由顶至下逐步调查各个进程.[python] view pla转载 2015-10-23 11:14:03 · 489 阅读 · 0 评论 -
Linux Futex的设计与实现
转自:http://blog.csdn.net/jianchaolv/article/details/7544316引子在编译2.6内核的时候,你会在编译选项中看到[*] Enable futex support这一项,上网查,有的资料会告诉你"不选这个内核不一定能正确的运行使用glibc的程序",那futex是什么?和glibc又有什么关系呢?1. 什么是FutexF转载 2015-07-06 12:54:12 · 433 阅读 · 0 评论 -
定位多线程内存越界问题实践总结
转自:http://blog.csdn.net/killmice/article/details/38443343最近定位了在一个多线程服务器程序(OceanBase MergeServer)中,一个线程非法篡改另一个线程的内存而导致程序core掉的问题。定位这个问题花了整整一周的时间,期间历经曲折,尝试了各种内存调试的办法。往往感觉就要柳暗花明了,却发现又进入了另一个死胡同。最后,使转载 2015-07-26 23:00:33 · 859 阅读 · 1 评论 -
关于SIGPIPE信号
转自:http://blog.sina.com.cn/s/blog_502d765f0100kopn.html我写了一个服务器程序,在Linux下测试,然后用C++写了客户端用千万级别数量的短链接进行压力测试. 但是服务器总是莫名退出,没有core文件.最后问题确定为, 对一个对端已经关闭的socket调用两次write, 第二次将会生成SIGPIPE信号, 该信号默认结转载 2015-07-26 22:29:24 · 385 阅读 · 0 评论 -
Linux最大打开文件描述符数
转自:http://blog.csdn.net/superchanon/article/details/133037051. 系统最大打开文件描述符数:/proc/sys/fs/file-max1) 查看$ cat /proc/sys/fs/file-max1864052) 设置a. 临时性# echo 1000000 > /proc/sys/fs/fi转载 2015-07-10 22:53:22 · 511 阅读 · 0 评论 -
深入探索Linux coredump调试技巧
转自:http://blog.csdn.net/forever_feng/article/details/46764201. coredump 产生的原理和局限1.1. 如何产生 core 文件要素一,必须有信号产生:从上面的信号定义和说明可以看出,进程中止前肯定会产生信号,然后内核根据信号的类型来决定是否要产生 core 文件。要素二,编译器支持:要产生 core 文转载 2015-07-26 20:28:23 · 1342 阅读 · 0 评论 -
关于Linux线程的线程栈以及TLS
转自:http://blog.csdn.net/dog250/article/details/7704898说明:a.本文描述Linux NPTL的线程栈简要实现以及线程本地存储的原理,实验环境中Linux内核版本为2.6.32,glibc版本是2.12.1,Linux发行版为ubuntu,硬件平台为x86的32位系统。b.对于Linux NPTL线程,有很多话题。转载 2015-05-19 15:16:39 · 662 阅读 · 0 评论 -
Linux用户空间线程管理介绍之一
转自:http://www.longene.org/forum/viewtopic.php?f=17&t=414线程不管是在Windows还是在Linux中都是一个很重要的概念。在Windows应用中,多线程程序是相当的普遍,要让这些应用在Linux下能顺利的运行,必须在兼容内核中增加对Windows线程的支持,而这个,一定是离不开Linux线程的支持。Linux线程由Linux内转载 2015-05-19 15:55:25 · 817 阅读 · 0 评论 -
记一次tcmalloc分配内存引起的coredump
转自:http://www.cppblog.com/kevinlynx/archive/2015/04/06/210257.html现象线上的服务出现coredump,堆栈为:#0 0x000000000045d145 in GetStackTrace(void**, int, int) ()#1 0x000000000045ec22 in tcmalloc::P转载 2015-11-13 10:23:17 · 2400 阅读 · 0 评论 -
TCMalloc:线程缓冲的Malloc
转自:http://blog.csdn.net/chen19870707/article/details/40039401TCMalloc:线程缓冲的MallocAuthor:Echo Chen(陈斌)Email:chenb19870707@gmail.comBlog:Blog.csdn.net/chen19870707Date:Oc转载 2015-11-13 10:01:42 · 972 阅读 · 1 评论 -
从几个版本的memcpy的测速过程学习一点底层的东西
转自:http://blog.csdn.net/dog250/article/details/6300354以下有三个版本的memcpy,对于版本3,很多人都很熟悉,它很经典,很多人面试都写这个,可是我不得不说一句,对于类似的问题,最好的回答有两个:一是调用c库,二是使用汇编。用这一类的问题来考察应聘者的c语言能力,真的很菜!如果真的要考察c语言能力,还不如给几个if,switch-case,转载 2016-02-21 21:00:01 · 822 阅读 · 0 评论 -
spinlock剖析与改进
转自:http://www.searchtb.com/2011/06/spinlock%E5%89%96%E6%9E%90%E4%B8%8E%E6%94%B9%E8%BF%9B.html1, spinlock介绍spinlock又称自旋锁,线程通过busy-wait-loop的方式来获取锁,任何时刻时刻只有一个线程能够获得锁,其他线程忙等待直到获得锁。spinlock在多处理器转载 2016-03-16 10:54:39 · 493 阅读 · 0 评论 -
《LINUX3.0内核源代码分析》第三章:内核同步(1)
转自:http://blog.chinaunix.net/uid-25845340-id-3011577.html摘要:本文主要讲述linux如何处理ARM cortex A9多核处理器的内核同步部分。主要包括其中的内存屏障、原子变量、每CPU变量。自旋锁、信号量、complete、读写自旋锁、读写信号量、顺序锁、RCU放在后文介绍。法律声明:《LINUX3.0内核源代码分析》系列转载 2016-03-15 18:41:08 · 734 阅读 · 0 评论 -
Linux防火墙之具有命令行的FirewallD的基本操作
转自:http://my.oschina.net/fhd/blog/413945启动FirewallD服务:?12systemctl enable firewalld.service #设置开机启动systemctl start firewalld.service #开启服务转载 2016-02-01 17:26:36 · 651 阅读 · 0 评论 -
CentOS7下yum安装SAMBA全命令过程
转自:http://www.centoscn.com/image-text/install/2014/1126/4189.html1、安装软件包$sudo yum install samba samba-client2、关防火墙(否则,这个服务是不允许连接的,不象SSH默认是允许连接,SAMBA因为不安全的原因,端口是被封掉的。) $sudo syste转载 2015-12-27 21:22:11 · 1511 阅读 · 0 评论