自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hustyangju的足迹

Stay Hungry,Stay Foolish

  • 博客(23)
  • 资源 (2)
  • 收藏
  • 关注

原创 Linux内核调试printk()总结

我们在使用printk()函数中使用日志级别为的是使编程人员在编程过程中自定义地进行信息的输出,更加容易地掌握系统当前的状况。对程序的调试起到了很重要的作用。(下文中的日志级别和控制台日志控制级别是一个意思)printk(日志级别 "消息文本");这里的日志级别通俗的说指的是对文本信息的一种输出范围上的指定。日志级别一共有8个级别,printk的日志级别定义如下(在linu

2014-10-30 11:27:11 2007

原创 Linux设备驱动:kobject原理与实例分析

1、Sysfs文件系统"sysfsis a ram-based filesystem initially based on ramfs. It provides ameans to export kernel data structures, their attributes, and thelinkages between them to userspace.”Linux2.6内

2014-10-30 10:47:51 2951

原创 windows和Linux内存的对齐方式

一.内存对齐的初步讲解内存对齐可以用一句话来概括:“数据项只能存储在地址是数据项大小的整数倍的内存位置上”例如int类型占用4个字节,地址只能在0,4,8等位置上。例1:#include struct xx{        char b;        int a;        int c;        char d;};int main()

2014-10-29 19:51:04 1944

原创 Linux X86下的TLB机制分析

TLB - translation lookaside buffer快表,直译为翻译后备缓冲器,也可以理解为页表缓冲,地址变换高速缓存。由于页表存放在主存中,因此程序每次访存至少需要两次:一次访存获取物理地址,第二次访存才获得数据。提高访存性能的关键在于依靠页表的访问局部性。当一个转换的虚拟页号被使用时,它可能在不久的将来再次被使用到,。TLB是一种高速缓存,内存管理硬件使

2014-10-29 16:17:30 2428

原创 Linux进程地址空间的理解

对于Linux的虚拟内存的理解,这个例子算是一个很好的引导了,原文链接:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=26683523&id=3201345《Linux内核设计与实现》15章节给出的例子更详细些。*********************************************************

2014-10-28 15:57:40 4469

原创 Linux页高速缓存与回写机制分析

参考《Linux内核设计与实现》*******************************************页高速缓存是linux内核实现的一种主要磁盘缓存,它主要用来减少对磁盘的IO操作,具体地讲,是通过把磁盘中的数据缓存到物理内存中,把对磁盘的访问变为对物理内存的访问。为什么要这么做呢?一,速度;二临时局部原理。有关这两个概念,相信熟悉操作系统的我们不会太陌生

2014-10-27 19:31:19 3047 1

原创 linux块设备的IO调度算法和回写机制

**************************************************************************************参考:《Linux内核设计与实现》 http://laokaddk.blog.51cto.com/368606/699028/http://www.cnblogs.com/zhenjing/archive/2

2014-10-27 15:08:35 6105

原创 Linux虚拟文件系统VFS解析

参考《Linux内核设计与实现》虚拟文件系统(VFS)是linux内核和具体I/O设备之间的封装的一层共通访问接口,通过这层接口,linux内核可以以同一的方式访问各种I/O设备。虚拟文件系统本身是linux内核的一部分,是纯软件的东西,并不需要任何硬件的支持。1. 虚拟文件系统的作用虚拟文件系统(VFS)是linux内核和存储设备之间的抽象层,主要有以下好处。

2014-10-27 10:00:27 2910

原创 X86下逻辑地址、线性地址、虚拟地址和物理地址的理解

参考:http://bbs.chinaunix.net/thread-2083672-1-1.html本贴涉及的硬件平台是X86,如果是其它平台,不保证能一一对号入座,但是举一反三,我想是完全可行的。一、概念物理地址(physical address)用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。——这个概念应该是这几个概念中最好理解的一个,但是值得一

2014-10-23 21:57:55 2973

转载 Linux内核时间管理和定时器

转自:http://blog.csdn.net/zhenwenxian/article/details/7643742

2014-10-23 15:29:00 2787

原创 Linux内核中的内存屏障解析

缓存一致性之前一直认为linux中很多东西是用来保证缓存一致性的,其实不是。缓存一致性绝大部分是靠硬件机制实现的,只有在带lock前缀的指令执行时才与cache有一点关系。(这话说得绝对,但我目前看来就是这样)我们更多的时候是为了保证顺序一致性。所谓缓存一致性,就是在多处理器系统中,每个cpu都有自己的L1 cache。很可能两个不同cpu的L1 cache中缓存的是同一片内存的内

2014-10-23 11:23:34 2244

原创 信号量semaphore解析

1 基础概念信号量在创建时需要设置一个初始值,表示同时可以有几个任务可以访问该信号量保护的共享资源,初始值为1就变成互斥锁(Mutex),即同时只能有一个任务可以访问信号量保护的共享资源。一个任务要想访问共享资源,首先必须得到信号量,获取信号量的操作将把信号量的值减1,若当前信号量的值为负数,表明无法获得信号量,该任务必须挂起在该信号量的等待队列等待该信号量可用;若当前信号量的值为

2014-10-23 10:46:00 2071 1

原创 自旋锁spinlock解析

1 基础概念 自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。  由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。  信号量和读写信号量适合于保持时间较长的情况,它们会导致调用者睡眠,因此只能在进程

2014-10-23 10:00:26 1884

原创 linux中断处理下文:软中断tasklet机制分析

参考:《Linux内核设计与实现》http://blog.csdn.net/fontlose/article/details/8279113http://blog.chinaunix.net/uid-27212029-id-3386692.htmltasklet是中断处理下半部分最常用的一种方法,驱动程序一般先申请中断,在中断处理函数内完成中断上半部分的工作后调用tas

2014-10-21 20:01:54 1848

原创 Linux系统调用过程分析

参考:《Linux内核设计与实现》0 摘要linux的系统调用过程:层次如下:用户程序------>C库(即API):INT 0x80 ----->system_call------->系统调用服务例程-------->内核程序先说明一下,我们常说的用户API其实就是系统提供的C库。系统调用是通过软中断指令 INT 0x80 实现的,而这条INT 0x80指令就被封装在

2014-10-21 10:23:33 6373 1

原创 Linux 2.6 完全公平调度算法CFS(Completely Fair Scheduler)分析

转自http://www.ibm.com/developerworks/cn/linux/l-completely-fair-scheduler/index.html?ca=drs-cn-0125Linux 调度器简史早期的 Linux 调度器使用了最低的设计,它显然不关注具有很多处理器的大型架构,更不用说是超线程了。1.2 Linux 调度器使用了环形队列用于可运行的任务管理,使用循环调

2014-10-21 08:52:45 4019

原创 Linux进程和线程的比较

进程与线程参考:http://www.cnblogs.com/blueclue/archive/2010/07/16/1778855.html首先比较Linux进程和线程的创建的区别,以此展开:创建进程:(1)调用fork(),为子进程新建内核栈、pthread_info和task_struct,复制父进程的大部分的参数,采用写时复制(copy-on-write)辅助父进程

2014-10-17 15:26:46 1624

原创 Linux内核中进程上下文和中断上下文的理解

参考:http://www.embedu.org/Column/Column240.htmhttp://www.cnblogs.com/Anker/p/3269106.html用户空间与内核空间      有了用户空间和内核空间,整个linux内部结构可以分为三部分,从最底层到最上层依次是:硬件-->内核空间-->用户空间。如下图所示:

2014-10-17 09:37:56 3770

原创 innodb next-key lock解析

参考http://blog.csdn.net/zbszhangbosen/article/details/7434637#reply这里补充一些:(1)InnoDB默认加锁方式是next-key locking(2)在聚集索引中,如果主键有唯一性约束(unique,auto increment),next-key locking 会自动降级为record locking。(3)由于

2014-10-16 09:40:32 1366

原创 脏读(dirty read)不可重复读(unrepeatable read)幻读(phantom problem)解析

1. 脏读 首先区分脏页和脏数据脏页是内存的缓冲池中已经修改的page,未及时flush到硬盘,但已经写到redo log中。读取和修改缓冲池的page很正常,可以提高效率,flush即可同步。脏数据是指事务对缓冲池中的行记录record进行了修改,但是还没提交!!!,如果这时读取缓冲池中未提交的行数据就叫脏读,违反了事务的隔离性。脏读就是指当一个事务正在访问数据,并且对数据进行了

2014-10-15 20:13:47 5976

原创 MySQL InnoDB存储引擎undo redo解析

本文是介绍MySQL数据库InnoDB存储引擎重做日志漫游00 – Undo LogUndo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC)。- 事务的原子性(Atomicity)  事务中的所有操作,要么全部完成,要么不做任何操作,不能只做部分操作。如果在执行的过程中发生 

2014-10-15 15:14:08 2687

转载 MySQL InnoDB 锁机制

InnoDB锁问题InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION);二是采用了行级锁。行级锁与表级锁本来就有许多不同之处,另外,事务的引入也带来了一些新问题。下面我们先介绍一点背景知识,然后详细讨论InnoDB的锁问题。背景知识1.事务(Transaction)及其ACID属性事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称

2014-10-15 11:28:09 858

转载 Spin lock 与mutex

POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用就是用Pthreads提供的锁机制(lock)来对多个线程之间共 享的临界区(Critical Section)进行保护(另一种常用的同步机制是barrier)。Pthreads提供了多种

2014-10-15 10:58:34 984

qt signal-slot测试代码

signal-slot机制是QT的核心,也是QT解决线程之间通信的一大亮点。深刻理解其两大特性: (1)loosely coupled sender 与 receiver 互不关心,一个signal可以被多个slot获取,signal可以触发另一个signal (2)type-safe connect连接时,遵守严格的参数约定,slot参数必须与signal参数保持一致,slot参数数量可以少于signal qt signal-slot测试代码

2013-12-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除