白水煮鸡蛋

路漫漫其修远兮~~~~~~~~~~

linux slab内存管理小析

最近把slab机制看了一下,网上分析内容丰富全面,不再过多赘述,只是自己做了个简单的小结   1. 几大重要数据结构 (1)Kmem_cache数据结构: struct kmem_cache {          struct array_cache *array[NR_CPUS];  ...

2013-01-22 20:26:10

阅读数:1217

评论数:0

Linux环境进程间通信-信号量

信号量是一个计数器,常用于处理进程和线程的同步问题,特别是对临界资源访问的同步。 获取一次信号量的操作就是对信号量减一,而释放一次信号量的操作就是对信号量加一。 Linux内核为每个信号集提供了一个semid_ds数据结构.该结构定义如下(linux/sem.h): ...

2013-01-16 18:25:40

阅读数:776

评论数:0

Linux环境进程间通信-共享内存

共享内存区域是被多个进程共享的一部分物理内存。如果多个进程都把该内存区域映射到自己的虚拟地址空间,则这些进程就都可以直接访问该共享内存区域,从而可以通过该区域进行通信。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。这...

2013-01-15 18:06:38

阅读数:618

评论数:0

Linux/MIPS启动分析

Linux启动入口主要代码在 arch/mips/kernel/head.S文件中 kernel_entry函数以汇编形式出现 主要干了以下几件事: 1.  BSS段清0 2.  从boot传过来的参数赋值到全局变量 3. clear context register 4. 根据init...

2013-01-12 21:02:33

阅读数:1669

评论数:0

Using Watchpoints register to monitor momery access on MIPS

1. 一般MIPS CPU 都有一对 WatchPoints register: 可以设置 WatchLo 指定一个监测的内存地址,一旦有对该地址的操作,即触发一个 watch 异常 下面的设置监测 0x8000000004190000 的内存写操作:     unsig...

2013-01-11 11:44:29

阅读数:950

评论数:0

64位多核 MIPS 异常和中断内核代码分析 (4)

64位多核 MIPS 异常和中断内核代码分析 (4)   1.3 其它例外入口初始化 其它例外的入口初始化位于: [arch/mips/kernel/traps.c] void __init trap_init() { ......     /*      * Copy th...

2013-01-11 11:25:54

阅读数:1187

评论数:0

64位多核 MIPS 异常和中断内核代码分析 (3)

64位多核 MIPS 异常和中断内核代码分析 (3)   RMI XLR732TLB 相关处理函数分析 0. 背景   MIPS64 下虚拟地址空间的划分:   其中内核空间是 xkphys 和 xkseg;其中 xkphys 是固定映射,不经 TLB (unma...

2013-01-11 11:05:50

阅读数:851

评论数:0

64位多核 MIPS 异常和中断内核代码分析 (2)

64位多核 MIPS 异常和中断内核代码分析 (2) 本节主要分析 Cavium Octeon 上 TLB 异常相关的处理函数   1.2 TLB Refill 例外入口   非启动模式 (BEV=0) 下,MIPS64 R1上,64 位地址空间的 TLB Refill 入口在物理...

2013-01-11 11:03:59

阅读数:1215

评论数:0

64位多核 MIPS 异常和中断内核代码分析 (1)

64位多核 MIPS 异常和中断内核代码分析 (1) 1. 高优先级例外入口初始化 本文不涉及 Bootloader,因此 Reset 例外入口处的 Bootloader 我们就不讨论了。 多核环境下,所有核默认指向的例外入口基地址都是一样的,尽管可以修改各自核内部的 EBase 寄存器来改...

2013-01-11 11:02:03

阅读数:1170

评论数:0

64位多核 MIPS 异常和中断结构

64位多核 MIPS 异常和中断结构 1. 概述 MIPS 统称异常(同步事件)和中断(异步事件)为例外 (Exception) 引入异常则是为了解决处理器运行过程中的一些意外情形,比如执行流中有非法指令(无法被处理器辨识的指令),访问了没有映射的虚拟地址等等。 中断的引入则是提供...

2013-01-10 20:51:47

阅读数:1433

评论数:0

精确异常与非精确异常

这里的异常是指同步的 (Synchronous),非异步的中断。 非精确异常 (Imprecise Exception) 在多发射乱序执行的流水线 CPU 上,从指令进入流水线到异常事件的发生,期间要经过若干流水级,此时 PC 的值已指向其后的某条指令,在实现非精确异常的 CPU 上就...

2013-01-10 20:06:24

阅读数:2745

评论数:0

分支延迟槽

分支延迟槽 1. 概述 分支延迟槽 (Branch delay slot),简单地说就是位于分支指令后面的一条指令,不管分支发生与否其总是被执行,而且位于分支延迟槽中的指令先于分支指令提交 (commit)。 看这个代码片段 (MIPS Linux kernel 2.6.17): ...

2013-01-10 20:02:31

阅读数:2772

评论数:0

TCP长连接与短连接的区别

TCP长连接与短连接的区别 1. TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连...

2013-01-08 15:41:12

阅读数:489

评论数:0

Linux环境进程间通信-消息队列

消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点。作为早期unix通信机制之一的信号能够传送的信息量有限,后来虽然POSIX 1003.1b在信号的实时性方面作了拓广,使得信号在传递信息量方面有了相当程度的改进,但是信号这种通信方式更像"即时"的通信方式,它要求...

2013-01-05 21:49:37

阅读数:766

评论数:0

Linux IPC发展的宏观介绍

inux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“syst...

2013-01-05 08:20:20

阅读数:526

评论数:0

无锁队列的实现

关于无锁队列的实现,网上有很多文章,虽然本文可能和那些文章有所重复,但是我还是想以我自己的方式把这些文章中的重要的知识点串起来和大家讲一讲这个技术。下面开始正文。 关于CAS等原子操作 在开始说无锁队列之前,我们需要知道一个很重要的技术就是CAS操作——Compare & ...

2013-01-03 14:35:43

阅读数:941

评论数:0

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