自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 收藏
  • 关注

原创 C++ 类型转换

编译器只对class做dynamic_cast转换,如果不是class而是其他类型,会在编译阶段拦截,如果此class不是多态的(至少包含一个虚函数),也会在编译阶段拦截,不允许互相之间无关联的不同的class之间的转换,如果以上条件都满足,dynamic_cast也会静态分析这两个class之间的关联并做静态地址变换,同时通过运行时检查保证转换的安全性,如果是不安全的转换(比如指向父类对象的父类指针,dynamic_cast成指向子类的指针),那么dynamic_cast返回null。

2023-08-31 12:47:31 191

转载 (转) Exploring How Cache Coherency Accelerates Heterogeneous Compute

Long Time No See!转载自:https://community.arm.com/developer/ip-products/processors/b/processors-ip-blog/posts/exploring-how-cache-coherency-accelerates-heterogeneous-compute非常好的一篇文章。:)侵删。Cache Co...

2019-11-09 09:52:58 511

转载 (转)Windows Vista桌面窗口管理器

原文链接:https://blog.csdn.net/benny5609/article/details/1891126桌面窗口管理器是什么呢?它是Vista中的一个新组件:Desktop Window Manager(DWM)。它建立在WPF核心图形层组件基础之上。还记得我在第一个Post中所提到的Composition引擎吗?DWM的桌面合成就是建立在这个Composition引擎基础之上...

2018-07-28 01:14:06 590

转载 理解CPU芯片漏洞:Meltdown与Spectre

http://www.linuxidc.com/Linux/2018-01/150307.htm来源: FreeBuf.COM  作者:微博@Diting0x0X00 历史之日2018年1月3日,Google Project Zero(GPZ)团队安全研究员Jann Horn在其团队博客[1]中爆出CPU芯片的两组漏洞,分别是Meltdown与Spectre。

2018-01-23 13:13:44 3686 1

原创 cache coherency & atomic & cpu-reorder

最近看了一些cache一致性以及cpu乱序执行的文章,结合之前看的原子操作写下个人总结。首先这几个概念都是software编程时比较难理解的,其中cache一致性和cpu的乱序执行按理说应该做到对software透明,换句话说sw programer应该不用care这些硬件相关的知识才对。可实际上如果完全不懂这两个概念:software可能会遇到一些非常 “诡异”的bug。cache一致性

2018-01-19 19:00:36 464

转载 Why Memory Barriers?中文翻译(上)

原文链接: http://www.wowotech.net/kernel_synchronization/Why-Memory-Barriers.html本文是对perfbook的附录C Why Memory Barrier的翻译,希望通过对大师原文的翻译可以弥补之前译者发布的关于memory barrier的一篇很拙劣的文章的遗憾。本文的翻译不是一一对应的翻译,主要是领会精神

2018-01-18 10:50:38 1466

转载 (笔记) Linux环境下的图形系统简介(X window)

显卡最早只有基本的显示功能,可以称为显示控制器(Display Controller)或者帧缓冲设备,对于这样的显示控制器,当前的Linux内核对其的支持表现为framebuffer驱动,Xorg部分对其的支持是一个名为fbdev的驱动。其后显卡上逐渐加上了2D加速部件,这种情况下面的驱动如下图所示。这个情况下的架构还是比较简单的。

2017-12-07 18:15:40 2246 3

原创 Linux per-CPU变量分配与管理源码分析(未完)

什么是per-CPU变量?per-CPU变量主要用在多处理器系统中,用来为系统中的每个CPU生成一个变量副本,per-CPU变量对于每个处理器都有一个互相独立的副本。per-CPU变量分为静态分配与动态分配两种,静态分配是指在编译内核期间分配好的per-CPU变量,动态分配是指运行期间调用per-CPU memory allocator 分配的per-CPU变量。Linux使用Ch

2017-07-18 11:20:20 1775

原创 Linux Ida and Ird 源码分析

我有一个毛病就是不爱读源代码, 总是喜欢从宏观上看逻辑架构, 对于一些比较通用的代码,网上的分析很多,这个方法学起来的确比较快,毕竟源码,尤其是代码量比较多的源码,读起来是很费力的.但是现在越来越多的遇到一些code,网上查也查不太到,我就不得不自己去读源码了.也好,读源码的能力还是要锻炼的.Read the Fucking Source Code!简介: IDR机制在Linu

2017-06-25 18:35:49 2603

转载 (笔记)色彩原理

什么是色彩空间?什么是色彩模型?所谓色彩模型,就是用一定规则来描述(排列)颜色的方法.比如 RGB 色彩模型:RGB 模型用规定红、绿、蓝 3 个分量描述颜色,然而并没有确定红色、绿色、蓝色到底是什么。比如你知道 (255,0,0) (8 位)的是红色,是最红的红色,但是仅此而已,并不知道这个红用光照射出来有多少波长、多少亮度,更不知道从 0-10 或 从 245-

2017-06-05 16:15:49 621

转载 (转)(笔记)screen tearing

喜欢玩游戏或者看电影的读者可能遇到过这样的情形: 某些游戏场面好像是几个场景“拼凑”而成的 电影画面不连贯,好像被“割裂”了如下图:什么是screen tearing? 答:Screen tearing is a visual artifact (视觉假象) in video display where a display device

2017-06-04 16:23:28 1437

转载 (转)GitHub上优秀的开源项目

原文链接: http://blog.csdn.net/googdev/article/details/52060211free-programming-books这个项目目前 star 数排名 GitHub 第三,总 star 数超过6w,这个项目整理了所有跟编程相关的免费书籍,而且全球多国语言版的都有,中文版的在这里:free-programming-books-zh,有了这个项

2017-03-08 11:12:20 1497

转载 (笔记)spin lock

Linux spin_lock的实现 Spin_lock是Linux内核的一种同步机制。内核代码可以通过获得spin_lock宣称对某一资源的占有,直到其释放该spin_lock;如果内核代码试图获得一个已经锁定的spin_lock,则这部分代码会一直忙等待,直到获得该spin_lock。 Spin_lock的kernel中的实现对单核(UP),多核(SMP)有不同的处理方式。对单

2016-11-16 14:41:49 716

转载 GUI系统之SurfaceFlinger

GUI系统之SurfaceFlinger(5)BufferQueue内部原理文章都是通过阅读源码分析出来的,还在不断完善与改进中,其中难免有些地方理解得不对,欢迎大家批评指正。转载请注明:From LXS. http://blog.csdn.net/uiop78uiop78/1.1 BufferQueue详解上一小节我们已经看到了BufferQueue,它是Su

2016-11-03 16:13:46 437

转载 GUI显示系统之SurfaceFlinger(1)~(4)

原文链接:  http://blog.csdn.net/xuesen_lin/article/details/8954508文章都是通过阅读源码分析出来的,还在不断完善与改进中,其中难免有些地方理解得不对,欢迎大家批评指正转载请注明:From LXS. http://blog.csdn.net/uiop78uiop78/第一章: GUI系统之

2016-11-01 19:29:15 669

转载 (转)CPU地址空间小结

一、地址空间映射这里要说的是Intel构架下的CPU地址空间布局,注意这里没有说是内存地址空间布局。       我们说的内存通常是指DRAM,DRAM相对于CPU也可以算是外部设备,CPU地址空间是CPU访问外部设备过程中的一个概念,CPU除了访问DRAM外还会访问许多其他的设备。可以粗略的认为CPU地址空间包含DRAM地址空间,但两者却是不同的概念。而且DRAM地址空间是由

2016-11-01 15:42:39 1762

转载 (转)ELF文件的加载和动态链接过程

http://jzhihui.iteye.com/blog/1447570近段时间在研究Erlang核心特性的实现,也许过段时间会有个系列的总结,期待... 今天看到有人写一个深入Hello World的文章,想起来读研的时候做的一个关于程序加载和链接的课程设计,也是以Hello World为例说明的,随发出来共享。文后有下载链接。 ======

2016-08-12 10:53:49 954

转载 颜色空间笔记

YCbCrYCbCr其中Y是指亮度分量,Cb指蓝色色度分量,而Cr指红色色度分量。人的肉眼对视频的Y分量更敏感,因此在通过对色度分量进行子采样来减少色度分量后,肉眼将察觉不到的图像质量的变化。主要的子采样格式有 YCbCr 4:2:0、YCbCr 4:2:2 和 YCbCr 4:4:4。4:2:0表示每4个像素有4个亮度分量,2个色度分量 (YYYYCbCr),仅采样奇数扫描线

2016-07-15 15:46:54 1493

转载 (转)linux虚拟内存管理简要总结

以下讨论仅限i386平台,一般考虑典型情况linux内核对整个系统的物理内存是通过类型为struct page的数组mem_map来管理的。系统中的伙伴系统分配算法最终是通过操作这个数组来记录物理内存的分配、回收等操作。在这里不要被系统的高端内存、低端内存等概念搞混淆了,高、低端内存的分类主要在于区分物理内存地址是否可以直接映射到内核线性地址空间中。我们知道,linux的内

2016-06-24 12:35:58 554

转载 电影,电视

这是我综合看了几篇文章之后的摘录,随笔,并非原创。这是一篇关于电影技术方面的科普文章。以电影从胶片到数码的发展为线索,给DV创作爱好者和电影发烧友介绍一些小知识,不求科学严谨,只求有趣好玩。水平所限,欢迎批评。 电影胶片    电影在开始放映之前,大家看到的肯定是一块白色的银幕(如果没看见那是有幕布挡着)。电影开映后,一束强光打在银幕上,画面出现在银幕上,于是电影就开始了。

2016-05-16 13:09:04 12963

转载 (转)PCI设备的地址空间

PCI配置空间(PCI Configuration Space)PCI设备(PCI device)都有一个配置空间,大小为256字节,实际上是一组连续的寄存器,位于设备上。其中头部64字节是PCI标准规定的,格式如下:

2016-02-25 11:27:14 1212

转载 (转)UEFI 启动:实际工作原理

本文是我翻译自国外技术博客的一篇文章,其中讲述了 UEFI 的一些基本概念和细节。本文的原始链接位于: https://www.happyassassin.net/2014/01/25/uefi-boot-how-does-that-actually-work-then/本人的翻译水平有限,难免多有疏漏。废话不多说,请看正文:又到 AdamW 的讲课时间了,如果你不想听我的长篇

2016-01-29 20:37:21 1915

转载 (转)UEFI概述

EFI可扩展固件接口(英文名Extensible Firmware Interface 或EFI)是由英特尔,一个主导个人电脑技术研发的公司推出的一种在未来的类PC的电脑系统中替代BIOS的升级方案。BIOS技术的兴起源于IBM PC/AT机器的流行以及第一台由康柏公司研制生产的“克隆”PC。在PC启动的过程中,BIOS担负着初始化硬件,检测硬件功能,以及引导操作系统的责任,在早期,BIO

2016-01-29 14:16:06 1033

转载 (转)UEFI系统的启动过程

UEFI系统的启动过程(1)UEFI系统的启动遵循UEFI平台初始化(PlatformInitialization)标准。UEFI系统从加电到关机可分为7个阶段:SEC(安全验证)→PEI(EFI前期初始化)→DXE(驱动执行环境)→BDS(启动设备选择)→TSL(操作系统加载前期)→RT(Run Time)→AL(系统灾难恢复期)图1-2展示了UEFI系统从加电到关机的7

2016-01-27 13:58:40 23340

转载 (转)UEFI小结-Handle的来龙去脉

本文说明:本人刚学习UEFI不久,写该文一是为了将学到的东西做一个规范化的总结,二是为了给初学UEFI的兄弟起到借鉴作用。同样地,错误的地方肯定很多,还望能得到各位弟兄指正。要理解本文,您至少应该是读过UEFI Spec,不然请先阅读UEFI Spec。一、一些概念的理解UEFI中会有很多抽象概念,像service、protocol、handle等等,如果将这些抽象的概念放到实际的代码

2016-01-26 16:02:55 1196

转载 (转)解读分区表的秘密

【IT168 服务器频道】前几天写了一篇介绍恢复误Ghost硬盘的博文,反响出乎意料,很多博友对数据恢复表现出了浓厚的兴趣,希望能对数据恢复作进一步了解。其中大家反映较多的就是希望能看懂分区表的格式,乍一看,由16进制数组成的分区表让人望而生畏,如同天书一般。其实,只要理解了分区表参数的含义,天书也就不难读懂了。今天我们就来介绍一下分区表参数,帮助大家掌握分区表。  介绍分区表之前,大家要

2016-01-05 15:01:39 2369 1

转载 (转)调试器工作原理(3):调试信息

本文是调试器工作原理探究系列的第三篇,在阅读前请先确保已经读过本系列的第一和第二篇。本篇主要内容在本文中我将向大家解释关于调试器是如何在机器码中寻找C函数以及变量的,以及调试器使用了何种数据能够在C源代码的行号和机器码中来回映射。调试信息现代的编译器在转换高级语言程序代码上做得十分出色,能够将源代码中漂亮的缩进、嵌套的控制结构以及任意类型的变量全都转化为一长串的比特流——这就是机器

2015-03-18 19:39:36 596

转载 (转)调试器工作原理(2):实现断点

本文是关于调试器工作原理探究系列的第二篇。在开始阅读本文前,请先确保你已经读过本系列的第一篇(基础篇)。本文的主要内容这里我将说明调试器中的断点机制是如何实现的。断点机制是调试器的两大主要支柱之一 ——另一个是在被调试进程的内存空间中查看变量的值。我们已经在第一篇文章中稍微涉及到了一些监视被调试进程的知识,但断点机制仍然还是个迷。阅读完本文之后,这将不再是什么秘密了。软

2015-03-18 17:21:36 554

转载 (转)调试器工作原理(1):基础篇

本文是一系列探究调试器工作原理的文章的第一篇。我还不确定这个系列需要包括多少篇文章以及它们所涵盖的主题,但我打算从基础知识开始说起。关于本文我打算在这篇文章中介绍关于Linux下的调试器实现的主要组成部分——ptrace系统调用。本文中出现的代码都在32位的Ubuntu系统上开发。请注意,这里出现的代码是同平台紧密相关的,但移植到别的平台上应该不会太难。动机要想理解我们究竟要做什么

2015-03-18 10:38:53 403

原创 设备节点创建过程源代码分析

阅读本文需要linux文件系统基础知识。以下分析基于下面的假设:根设备使用SD卡设备(块设备),根文件系统使用ext4文件系统。linux kernel在初始化的最后阶段,会加载“根文件系统”,按照前面的假设,也就是加载一个ext4文件系统作为根文件系统,这个文件系统位于SD卡上。在加载这个根文件系统前,kernel会先加载一个虚拟的根文件系统,名叫rootfs

2014-11-25 16:20:46 2371

转载 (转)CPU乱序执行原理

处理器基本上会按照程序中书写的机器指令的顺序执行。按照书写顺序执行称为按序执行(In-Order )。按照书写顺序执行时,如果从内存读取数据的加载指令、除法运算指令等延迟(等待结果的时间)较长的指令后面紧跟着使用该指令结果的指令,就会陷入长时间的等待。尽管这种情况无可奈何,但有时,再下一条指令并不依赖于前面那条延迟较长的指令,只要有了操作数就能执行。

2014-09-24 11:02:10 20031 2

转载 (转)linux 系统调用原理

ARM Linux系统调用的原理操作系统为在用户态运行的进程与硬件设备进行交互提供了一组接口。在应用程序和硬件之间设置一个额外层具有很多优点。首先,这使得编程更加容易,把用户从学习硬件设备的低级编程特性中解放出来。其次,这极大地提高了系统的安全性,因为内核在试图满足某个请求之前在接口级就可以检查这种请求的正确性。最后,更重要的是这些接口使得程序具有可移植性,因为只要内核所提供的一组接口相同,那

2014-09-22 11:09:06 916

原创 linux内核模块动态加载过程

linux内核模块分两种,一是静态编译进内核的模块

2014-09-14 13:32:36 8870

转载 (转)Linux进程切换以及内核线程的返回值

linux中的进程是个最基本的概念,进程从运行队列到开始运行有两个开始的地方,一个就是switch_to宏中的标号1:"1:/t",另 一个就是ret_form_fork,只要不是新创建的进程,几乎都是从上面的那个标号1开始的,而switch_to宏则是除了内核本身,所有的进程要 想运行都要经过的地方,这样看来,虽然linux的进程体系以及进程调度非常复杂,但是总体看来就是一个沙漏状,而switc

2014-09-05 15:20:01 1138

原创 x86保护模式笔记

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2014-08-25 16:47:00 979

转载 (转)保护模式下Intel 80x86 CPU 硬件中断过程

基础知识很重要。原文链接:http://blog.sina.com.cn/s/blog_5ffeae360100ftwt.html

2014-08-20 20:02:21 976

转载 (收集/整理)linux 内核启动 解压缩

1.   zImage 生成流程:

2014-08-15 15:42:50 820

转载 ARM Architecture C 语言寻址解析—— 从U-Boot relocation所展开的探索(三)

ARM Architecture C 语言寻址解析——从U-Boot relocation所展开的探索(三)by蔡于清ARMArchitecture C语言PIC寻址方式解析(续)继续讨论上一篇文章的问题,GOT所记录的是C的对象地址,但一个工程中往往还存在汇编代码定义的变量(事实上汇编语言中并不存在“变量”这一说法,这些所谓的“变量”更准确的讲是一个"Lable",C语言

2014-03-27 20:09:05 1476

转载 ARM Architecture C 语言寻址解析—— 从U-Boot relocation所展开的探索(二)

ARM  Architecture C语言寻址解析——从U-Boot relocation所展开的探索(二)by蔡于清ARMArchitecture C语言PIC寻址方式解析承前文所述,可不可以产生一种可以运行在任意地址段的代码呢?可以,这种代码被称之为Position-IndependentCode,简称PIC(windows DLL,Linux ShareObject,

2014-03-27 20:08:17 1619

转载 ARM Architecture C 语言寻址解析—— 从U-Boot relocation所展开的探索(一)

ARM  Architecture C 语言寻址解析——从U-Boot relocation所展开的探索(一)by蔡于清文章的名字有点长也有点拗口,但它却很好的表达了本文的主题和来历。这个主题将讨论和分析ARM架构上C语言对变量和函数的寻址方式,为什么要讨论这个主题?或者说为什么会想到去讨论这个主题?答案就在文章的副标题,没错,因为U-Boot。这段时间本人在移植U-B

2014-03-27 20:07:08 1868

空空如也

空空如也

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

TA关注的人

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