kernel相关
文章平均质量分 84
kyoko
这个作者很懒,什么都没留下…
展开
-
remap_pfn_range()函数及应用
remap_pfn_range()函数的原型:int remap_pfn_range(struct vm_area_struct *vma, unsigned long virt_addr, unsigned long pfn, unsigned long size, pgprot_t prot); 该函数的功能是创建页表。其中参数vma是内核根据用户的请求自己填写的,而参数addr表转载 2013-05-06 10:43:34 · 826 阅读 · 0 评论 -
kmalloc、vmalloc、malloc的区别
kmalloc、vmalloc、malloc的区别简单的说:kmalloc和vmalloc是分配的是内核的内存,malloc分配的是用户的内存kmalloc保证分配的内存在物理上是连续的,vmalloc保证的是在虚拟地址空间上的连续,malloc不保证任何东西(这点是自己猜测的,不一定正确)kmalloc能分配的大小有限,vmalloc和malloc能分配的大小相对较大内存只有转载 2013-01-07 11:52:21 · 512 阅读 · 0 评论 -
Linux系统优化部分内核参数调优中文注释
Linux系统优化部分内核参数调优中文注释应用服务器sysctl.conf部分参数## network configurationsnet.ipv4.ip_forward = 0 # IP packet forwardingnet.ipv4.tcp_tw_reuse=1net.ipv4.tcp_tw_recycle=1net.ipv4.tcp_fin_timeout转载 2012-11-21 12:57:13 · 605 阅读 · 0 评论 -
Linux 2.6内核的设备模型
Linux 2.6内核的一个重要特色是提供了统一的内核设备模型。随着技术的不断进步,系统的拓扑结构越来越复杂,对智能电源管理、热插拔以及plug and play的支持要求也越来越高,2.4内核已经难以满足这些需求。为适应这种形势的需要,2.6内核开发了全新的设备模型。1. Sysfs文件系统Sysfs文件系统是一个类似于proc文件系统的特殊文件系统,用于将系统中的设备组织成层次结构,并原创 2012-11-29 16:44:05 · 480 阅读 · 0 评论 -
linux中断处理浅析
最近在研究异步消息处理, 突然想起linux内核的中断处理, 里面由始至终都贯穿着"重要的事马上做, 不重要的事推后做"的异步处理思想. 于是整理一下~第一阶段--获取中断号每个CPU都有响应中断的能力, 每个CPU响应中断时都走相同的流程. 这个流程就是内核提供的中断服务程序.在进入中断服务程序时, CPU已经自动禁止了本CPU上的中断响应, 因为CPU不能假定中断服务程转载 2012-07-24 13:48:20 · 532 阅读 · 0 评论 -
linux网桥浅析
什么是桥接?简单来说,桥接就是把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。交换机就是这样一个设备,它有若干个网口,并且这些网口是桥接起来的。于是,与交换机相连的若干主机就能够通过交换机的报文转发而互相通信。如下图:主机A发送的报文被送到交换机S1的eth0口,由于eth转载 2012-07-05 16:03:14 · 856 阅读 · 0 评论 -
使用OProfile来debug程序的性能
使用OProfile来debug程序的性能OProfile的原理比较简单:现在的很多CPU都提供一个所谓性能计数器的东西(performance counter),大致的原理就是程序可以注册告诉CPU对什么event感兴趣(比如CPU_CYCLE,CPU经历了一次时钟周期),然后CPU在执行了相应的操作后,就会在性能计数器上加1,这样程序就可以取出。所以,使用OProfile来定位CP转载 2012-05-11 12:06:00 · 582 阅读 · 0 评论 -
使用oprofile分析性能瓶颈
使用oprofile分析性能瓶颈1. 概述 oprofile 是 Linux 平台上,类似 INTEL VTune 的一个功能强大的性能分析工具。 其支持两种采样(sampling)方式:基于事件的采样(event based)和基于时间的采样(time based)。 基于事件的采样是oprofile只记录特定事件(比如L2转载 2012-05-11 12:11:31 · 592 阅读 · 0 评论 -
Linux性能测试工具:Oprofile, KFT, Gprof
Linux性能测试工具:Oprofile, KFT, Gprof (2011-11-02 14:19:44)转载▼标签: 杂谈分类: 服务器设计性能测试工具一般分这么几种1)收集CPU的performance counter。CPU里面有很多performance counter,打开之后,会记录CPU某些事件转载 2012-05-10 14:39:12 · 1374 阅读 · 0 评论 -
用 OProfile 彻底了解性能
用 OProfile 彻底了解性能识别现实系统中的性能瓶颈PrPrasanna S. Panchamukhi, 开发工程师, Linux Technology Center, IBM India Software Labs简介: 由于在硬件和软件之间有一些意料之外的交互,分析 Linux 操作系统和应用程序的代码可能是很困难的,但评测转载 2012-05-10 14:41:56 · 638 阅读 · 0 评论 -
对Linux的进程内核栈的认识
在重游《LDD3》的时候,又发现了一个当年被我忽略的一句话:“内核具有非常小的栈,它可能只和一个4096字节大小的页那样小” 针对这句话,我简单地学习了一下进程的“内核栈”什么是进程的“内核栈”? 在每一个进程的生命周期中,必然会通过到系统调用陷入内核。在执行系统调用陷入内核之后,这些内核代码所使用的栈并不是原先用户空间中的栈,而是一个内核空间的栈,这个称作进程的“内原创 2013-01-07 18:12:39 · 723 阅读 · 0 评论 -
linux内核栈与用户栈
linux内核栈与用户栈最近linux内核的中断部分,总是被书里的栈弄晕,一会儿内核栈,一会儿用户栈的……很是崩溃,在网上google了一下 找了一篇不错的文章拿来分享。 5.8 Linux 系统中堆栈的使用方法本节内容概要描述了Linux内核从开机引导到系统正常运行过程中对堆栈的使用方式。这部分内容的说明与内核代码关系比较密切,可以先跳过。在开始阅读相应代码时再回来仔转载 2013-01-08 10:29:29 · 577 阅读 · 0 评论 -
linux内核获取进程的全路径3种方法
linux内核获取进程的全路径3种方法 本文档的CopyRight归jonathan所有,可自由转载,转载时请保持文档的完整性。/*---------------------------------------------------------------------------------------------------------转载 2012-08-30 10:25:29 · 2442 阅读 · 0 评论 -
Linux 下 TC 命令详解与事例
Linux 下 TC 命令详解与事例 (2010-11-24 17:13:20)转载▼标签: linux tc it分类: Linux服务器专集tc - 显示/维护流量控制设置摘要tc qdisc [ add | change | replace | link ] dev DEV [原创 2012-07-25 11:47:16 · 2511 阅读 · 0 评论 -
linux内核分析笔记----中断和中断处理程序
linux内核分析笔记----中断和中断处理程序中断还是中断,我讲了很多次的中断了,今天还是要讲中断,为啥呢?因为在操作系统中,中断是必须要讲的.. 那么什么叫中断呢, 中断还是打断,这样一说你就不明白了。唉,中断还真是有点像打断。我们知道linux管理所有的硬件设备,要做的第一件事先是通信。然后,我们天天在说一句话:处理器的速度跟外围硬件设备的速度往往不在一个数量转载 2011-11-09 12:57:57 · 965 阅读 · 0 评论 -
linux内核分析笔记----定时器和时间管理
linux内核分析笔记----定时器和时间管理在这一次里,主要讲讲和时间相关的东西,这个我们都比较熟悉,我就直接如主题。 首先要明白两个概念:系统定时器和动态定时器。周期性产生的事件都是有系统定时器驱动的,这里的系统定时器是一种可编程硬件芯片,它能以固定频率产生中断。该中断就是定时器中断,它所对应的中断处理程序负责更新系统时间,也负责执行需要周期行运行的任务。系统定时器和转载 2013-03-08 16:48:43 · 1080 阅读 · 0 评论 -
关于Linux系统性能瓶颈定位分析(一),Nginx状态页测试(待续)
关于Linux系统性能瓶颈定位分析(一),Nginx状态页测试(待续) 关于系统性能瓶颈的定位,今天搬来一实例。希望和广大网友沟通分享 使用场景: Nginx对外提供接口服务,本文以Nginx的状态页(stub_status)为例。 需要解决的问题: 定位性能瓶颈,并调优转载 2013-01-18 15:52:41 · 1746 阅读 · 0 评论 -
Linux SLUB 分配器详解
Linux SLUB 分配器详解简介: 多年以来,Linux 内核使用一种称为 SLAB 的内核对象缓冲区分配器。但是,随着系统规模的不断增大,SLAB 逐渐暴露出自身的诸多不足。SLUB 是 Linux 内核 2.6.22 版本中引入的一种新型分配器,它具有设计简单、代码精简、额外内存占用率小、扩展性高,性能优秀、方便调试等特点。本文先介绍 SLAB 分配器的基本原理,然转载 2013-01-17 09:34:07 · 657 阅读 · 0 评论 -
内核随记(三)--同步(2)
内核随记(三)--同步(2)2.2、睡眠与唤醒在操作系统中,睡眠和唤醒原语实际上是操作系统的基本原语,也是实现同步的一种方式,而且它还是实现信号量的基础。当进程请求的资源(如内存、文件等)不能得到满足时,就会主动放弃CPU,进入等待状态(可中断等待或者不可中断等待)。当资源满足时,就会由别的进程唤醒,从而投入运行。2.2.1、等待队列等待队列表示一组睡眠转载 2013-01-17 09:33:13 · 514 阅读 · 0 评论 -
Linux 3.0内核Makefile分析
Linux 3.0内核Makefile分析 [摘要] 由于Linux的独特优势,使越来越多的企业和科研机构把目光转向Linux的开发和研究上。目前Linux最新的稳定内核版本为2.6.17,但是当今绝大部分对于Linux Makefile的介绍文章都是基于2.4内核的,可以说关于2.6内核Makefile相关的文章凤毛麟角,笔者抽时间完成了这篇分析文章,让读者迅速熟悉Linux最转载 2013-01-08 10:39:33 · 663 阅读 · 0 评论 -
Oprofile使用指南
OProfile 是一個低管理費用的系統全局的性能監視工具。它使用處理器上的性能監視硬件來檢索關於內核以及系統上的可執行文件的信息,例如內存是何時被引用的;L2 緩存請求數量;收到的硬件中斷數量等。在紅帽企業 Linux 系統上,你必須安裝 oprofile RPM 軟件包才能使用該工具。 許多處理器都包含專用的性能監視硬件。該硬件能夠在某些事件發生時(如所請求的數據不在緩存內)檢測转载 2012-05-10 14:39:43 · 1358 阅读 · 0 评论 -
使用oprofile分析性能瓶頸(1)
使用oprofile分析性能瓶頸(1)1. 概述 oprofile 是 Linux 平台上,類似 INTEL VTune 的一個功能強大的性能分析工具。 其支持兩種採樣(sampling)方式:基於事件的採樣(event based)和基於時間的採樣(time based)。 基於事件的採樣是oprofile只記錄特定事件(比如L2 cache miss)的發生转载 2012-05-10 14:40:45 · 756 阅读 · 0 评论 -
Linux Device Drivers学习笔记-Chapter.5
<br />本章主要涉及并发管理,我觉得这部分的理解需要建立在大量实践的基础之上,光是像本科操作系统课上那样讲道理是很难体会的。我记录了一些关键的函数和数据结构。 1.Race Conditions(RC)主要是因为对共享数据的并发访问没有作出合适的访问策略造成的。例如两个进程同时访问了一个共享数据。所以制定好的访问策略,才能在Concurrency的时候避免RC。所以作者建议尽量减少对资源的并发访问,但是又说明这几乎是不太可能的。所以唯有开发者加入并发控制的代码到module中去。目前主转载 2011-04-01 11:11:00 · 672 阅读 · 0 评论 -
读写信号量(2.6.23内核,i386)
<br /><br />一、定义:<br />/linux/include/asm-i386/rwsem.h<br /><br />55struct rw_semaphore {<br />56 signed long count;<br />57#define RWSEM_UNLOCKED_VALUE 0x00000000<br />58#define RWSEM_ACTIVE_BIAS 0x00000001<br />59#define RWSEM_ACTIVE_MASK 0x0000ffff<br /转载 2011-03-22 17:05:00 · 482 阅读 · 0 评论 -
读写信号量(2.6.23内核,i386)
<br /><br />一、定义:<br />/linux/include/asm-i386/rwsem.h<br /><br />55struct rw_semaphore {<br />56 signed long count;<br />57#define RWSEM_UNLOCKED_VALUE 0x00000000<br />58#define RWSEM_ACTIVE_BIAS 0x00000001<br />59#define RWSEM_ACTIVE_MASK 0x0000ffff<br /转载 2011-03-22 16:37:00 · 516 阅读 · 0 评论 -
完成量同步机制学习(2.6.23)
<br /><br />一、定义:<br />linux/include/linux/completion.h13struct completion {14 unsigned int done;15wait_queue_head_twait;16};<br /> <br />二、作用:<br />虽然信号量可以用于实现同步,但往往可能会出现一些不好的结果。例如:当进程A分配了一个临时信号量变量,把它初始化为关闭的MUTEX,并把其地址传递给进程B,然后在A之上调用down(),进程A打算一旦被转载 2011-03-22 16:34:00 · 549 阅读 · 0 评论 -
Linux内核互斥锁(2.6.23)
<br /><br />一、定义:<br />/linux/include/linux/mutex.h47struct mutex {48 /* 1: unlocked, 0: locked, negative: locked, possible waiters */49atomic_tcount;50spinlock_twait_lock;51 struct list_headwait_list;52#ifdef CONFIG_DEBUG_MUTEXES53 st转载 2011-03-21 10:02:00 · 428 阅读 · 0 评论 -
linux内核信号量学习(2.6.23(i386))
一、定义:/linux/include/asm-i386/semaphore.h44struct semaphore {45atomic_tcount;46 int sleepers;47wait_queue_head_twait;48};二、作用:Linux中的信号量是一种睡眠锁。如果有一个任务试图获得一个已被持有的信号量时,信号量会将其推入等待队列,然后让其睡眠。这时处理器获得自由去执行其它代码。当持有信号量的进程将信号量释放后,在等待队列中的一个任务将被唤醒,从而便可以获得这个信号量。主转载 2011-03-21 09:53:00 · 686 阅读 · 0 评论 -
等待队列学习笔记
<br /><br />一、定义:<br />/include/linux/wait.h<br /><br />struct __wait_queue_head {<br />spinlock_t lock;<br />struct list_head task_list;<br />};<br />typedef struct __wait_queue_head wait_queue_head_t;<br />二、作用:<br />在内核里面,等待队列是有很多用处的,尤其是在中断处理、进程同步、定时等场合转载 2011-03-21 09:49:00 · 445 阅读 · 0 评论 -
linux系统中进程的状态
<br /><br />一、进程的状态表述:<br />#define TASK_RUNNING 0<br />#define TASK_INTERRUPTIBLE 1<br />#define TASK_UNINTERRUPTIBLE 2<br />#define TASK_STOPPED 4<br />#define TASK_TRACED 8<br />/* in tsk->exit_state */<br />#define EXIT_ZOMBIE 16<br />#define EXIT_DEAD原创 2011-03-21 09:52:00 · 727 阅读 · 0 评论 -
内核定时器(2.6.23)
<br /><br />一、定义:<br />/include/linux/timer.h<br /><br />struct timer_list {<br />struct list_head entry;<br />unsigned long expires;<br />void (*function)(unsigned long);<br />unsigned long data;<br />struct tvec_t_base_s *base;<br />#ifdef CONFIG_TIMER_S转载 2011-03-21 09:47:00 · 408 阅读 · 0 评论 -
Spin lock 与mutex 的区别--2011.01.06
<br /><br />POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用就是用Pthreads提供的锁机制(lock)来对多个线程之间共 享的临界区(Critical Section)进行保护(另一种常用的同步机制是barrier)。<br /><br />Pthreads提供了多种锁机制:<br />(1) Mutex(互斥量):pthread_mutex原创 2011-04-01 14:39:00 · 13915 阅读 · 0 评论 -
linux内核中的Oops
http://www.embeddedlinux.org.cn/html/yingjianqudong/201106/27-1365.html什么是Oops?从语言学的角度说,Oops应该是一个拟声词。当出了点小事故,或者做了比较尴尬的事之后,你可以说"Oops",翻译成中国话就原创 2011-07-18 12:07:47 · 457 阅读 · 0 评论 -
spinlock与linux内核调度的关系
spinlock与linux内核调度的关系作者:刘洪涛,华清远见嵌入式学院高级讲师,ARM公司授权ATC讲师。关于自旋锁用法介绍的文章,已经有很多,但有些细节的地方点的还不够透。我这里就把我个人认为大家容易有疑问的地方拿出来讨论一下。一、自旋锁(spinlock)简介自旋锁在同一时刻只能被最多一个内核任务持有,所以一个时刻只有一个线程允许存在于临界区中。这点可以应用在多处理机器、或转载 2012-04-26 09:19:06 · 761 阅读 · 0 评论 -
嵌入式操作系统内核原理和开发(cpu的那些事)
嵌入式操作系统内核原理和开发(cpu的那些事)【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 cpu是数字处理系统中的一个重要环节。在我看来,单片机、微处理器、dsp都可以称作是cpu,只是它们的侧重点有所不同罢了。具体来说,传统意义上的单片机更偏重于嵌入式的计算,比如说我们经常使用的51、av转载 2012-02-27 15:27:38 · 495 阅读 · 0 评论 -
Linux 2.6内核的设备模型
Linux 2.6内核的设备模型Linux 2.6内核的一个重要特色是提供了统一的内核设备模型。随着技术的不断进步,系统的拓扑结构越来越复杂,对智能电源管理、热插拔以及plug and play的支持要求也越来越高,2.4内核已经难以满足这些需求。为适应这种形势的需要,2.6内核开发了全新的设备模型。1. Sysfs文件系统Sysfs文件系统是一个类似于proc文件系统的特殊文转载 2012-02-17 09:51:48 · 477 阅读 · 0 评论 -
linux软中断的实现
linux软中断的实现 中断服务程序往往都是在CPU关中断的条件下执行的,以避免中断嵌套而使控制复杂化。但是CPU关中断的时间不能太长,否则容易丢失中断信号。为此, Linux将中断服务程序一分为二,各称作“Top Half”和“Bottom Half”。前者通常对时间要求较为严格,必须在中断请求发生后立即或至少在一定的时间限制内完成。因此为了保证这种处理能原子地完成,Top Ha转载 2012-02-24 19:09:21 · 761 阅读 · 0 评论 -
使用objdump看内核源码
1. 修改源代码的顶层 Makefile CC =$(CROSSCOM_PILE)gcc --> CC =$(CROSSCOM_PILE)gcc -g 使成生的vmlinux中含有debug信息2. 所有生成.o的rule中再加一条 /*其他参数除了-c外抄生成.o文件用的参数*/ CC -E -dD -C $ /pre转载 2012-01-17 14:48:44 · 1111 阅读 · 0 评论 -
4.1 PCIe总线的基础知识
4.1 PCIe总线的基础知识与PCI总线不同,PCIe总线使用端到端的连接方式,在一条PCIe链路的两端只能各连接一个设备,这两个设备互为是数据发送端和数据接收端。PCIe总线除了总线链路外,还具有多个层次,发送端发送数据时将通过这些层次,而接收端接收数据时也使用这些层次。PCIe总线使用的层次结构与网络协议栈较为类似。4.1.1 端到端的数据传递PCIe链路使用“端转载 2011-11-11 15:50:03 · 3889 阅读 · 0 评论 -
kernel2.6.x Makefile详解
linux2.6内核Makefile的许多特性和2.4内核差别很大,在内核目录的documention/kbuild/makefiles.txt中有详细的说明,以下为中文版的翻译。=== 目录 === 1 概述 === 2 用户与作用 === 3 Kbuild文件 --- 3.1 目标定义 --- 3.2 编译进内核 - obj转载 2011-11-09 14:45:32 · 442 阅读 · 0 评论