2015年8月15日

ThreadLocal的实现机制

摘要: TLS(Thread Local Storage)通过分配更多内存来解决多线程对临界资源访问的互斥问题,即每个线程均自己的临界资源对象, 这样也就不会发生访问冲突,也不需要锁机制控制,比较典型的以空间换时间的策略。 阅读全文

posted @ 2015-08-15 22:48 熊猫观星 阅读(408) 评论(0) 推荐(0)

LruCache源码分析

摘要: LRU(Least Recently Used)是一种很常用的资源调度策略,与20/80原则契合,在资源达到上限时倾向保留最近经常访问的资源对象。 Android中基于LRU实现了缓存对象,即LruCache,有两处实现... 阅读全文

posted @ 2015-08-15 22:41 熊猫观星 阅读(724) 评论(3) 推荐(1)

2012年5月14日

科普硬解,软解,gpu,dsp等等的关系

摘要: 看了一篇不错的文章,对多媒体解码进行了科普,见下文:第一我认为解码视频有三个层次:硬解,部分硬件加速(暂时把前两者都视为硬解),软解。针对我说的,先举个例子(当然只 是示例说明下大概的量级,并不太准确,因为乘 累加已经是很多CPU的基本指令了,而且实际的 编解码算法操作也完全不同)比如某种视频解码算法,每次的运算是: OUT = ((A*B+C)*D+E)*F+G假设一个没有乘法指令的CPU要执行这个算法, 一般会 1.程序会写一个循环,不停的移位,然后做加法 ,实现A*B 2.结果加C 3.重复上面的完成后面的乘法和加法 没有乘法的CPU执行第一步,需要执行几十 条指令,优化乘法算法之后会好 阅读全文

posted @ 2012-05-14 23:22 熊猫观星 阅读(2854) 评论(0) 推荐(0)

2012年2月11日

赵炯<<Linux 0.11内核完全剖析>>P30 MBR程序调试

摘要: 赵炯博士的<<Linux 0.11内核完全剖析>>在第30页给出了一个简单的引导扇区程序(MBR)的示例,代码如下:BOOTSEG=0x07c0entry startstart: jmpi go, BOOTSEGgo: mov ax, cs mov ds, ax mov [msg1+17], ah mov cx, #20 mov dx, #0x1004 mov bx, #0x000c mov bp, #msg1 mov ax,#0x1301 int 0x10loop: jmp loop... 阅读全文

posted @ 2012-02-11 14:42 熊猫观星 阅读(489) 评论(0) 推荐(0)

2012年2月8日

OS与CPU架构间的关系

摘要: 回顾一下历史,年轻的Linus Torvalds为了将仅能运行在昂贵大型机上的UNIX移植到Intel 80386的PC平台上,因此才有了Linux的设计初衷。。。当前主流的OS有UNIX,Linux,VxWorks等,CPU架构则主要分为RISC和CISC,Intel的X86 CPU是CISC的代表,ARM设计的微处理器芯片则为CISC的代表。X86 CPU由于体积大、功耗高主要应用于PC市场,而ARM主要则广泛应用于嵌入式设备中。众所周知,OS是运行于硬件设备之上的系统管理软件,它和CPU架构之间有何关系呢?不同CPU架构的指令集、寄存器数量、CPU指令格式以及指令的解码执行原理差别较大。 阅读全文

posted @ 2012-02-08 22:01 熊猫观星 阅读(1512) 评论(0) 推荐(0)

2011年10月18日

MBR结构以及系统启动流程分析

摘要: 最近学习Linux,涉及到硬盘的MBR,便对MBR结构,系统加载流程,以及BIOS和CMOS的关系进行了梳理。百度百科中对MBR结构分析的比较好,此处不再赘述,参见链接http://zh.wikipedia.org/zh-cn/MBR。由于现在OS都较复杂,因此引导程序分为两个部分:MBR中的引导代码(OS-Independent)和位于某分区上的OS引导程序(OS-Dependent),其中MBR代码负责加载第二阶段引导程序。BIOS全称是Basic Input Output System,由此可见BIOS的本质是一个程序,固化于主板的一个ROM中,而CMOS则是一个RAM,由备用电池供电, 阅读全文

posted @ 2011-10-18 10:53 熊猫观星 阅读(248) 评论(0) 推荐(0)

导航