slub分配器
作者:itrocker 发布于:2015-12-21 18:51 分类:内存管理
Linux的物理内存管理采用了以页为单位的buddy system(伙伴系统),但是很多情况下,内核仅仅需要一个较小的对象空间,而且这些小块的空间对于不同对象又是变化的、不可预测的,所以需要一种类似用户空间堆内存的管理机制(malloc/free)。然而内核对对象的管理又有一定的特殊性,有些对象的访问非常频繁,需要采用缓冲机制;对象的组织需要考虑硬件cache的影响;需要考虑多处理器以及NUMA架构的影响。90年代初期,在Solaris 2.4操作系统中,采用了一种称为“slab”(原意是大块的混凝土)的缓冲区分配和管理方法,在相当程度上满足了内核的特殊需求。
多年以来,SLAB成为linux kernel对象缓冲区管理的主流算法,甚至长时间没有人愿意去修改,因为它实在是非常复杂,而且在大多数情况下,它的工作完成的相当不错。但是,随着大规模多处理器系统和 NUMA系统的广泛应用,SLAB 分配器逐渐暴露出自身的严重不足:
Linux graphic subsytem(1)_概述
作者:wowo 发布于:2015-12-17 22:21 分类:图形子系统
图形子系统是linux系统中比较复杂的子系统之一:对下,它要管理形态各异的、性能各异的显示相关的器件;对上,它要向应用程序提供易用的、友好的、功能强大的图形用户界面(GUI)。因此,它是linux系统中少有的、和用户空间程序(甚至是用户)息息相关的一个子系统。
本文是图形子系统分析文章的第一篇,也是提纲挈领的一篇,将会从整体上,对linux图形子系统做一个简单的概述,进而罗列出显示子系统的软件构成,后续的文章将会围绕这些软件一一展开分析。
注1:本文所有的描述将以原生linux系统为例(如Ubuntu、Debian等),对其它基于linux的系统(如Android),部分内容会不适用。
注2:本文很多图片都是从网上搜集而来的(很多是从维基百科)。虽然蜗窝的宗旨是用自己的语言表述,尽量自己画图,但是linux图形子系统太复杂了,蜗蜗的理解有限,而老外的图画的实在太好,蜗蜗觉得,再怎么努力,也画不出更好的了,因此本着为读者负责的态度,就直接copy了。
标签: Linux display subsystem GUI Wayland SurfaceFlinger DRI
Why Memory Barriers?中文翻译(上)
作者:linuxer 发布于:2015-12-10 19:11 分类:内核同步机制
本文是对perfbook的附录C Why Memory Barrier的翻译,希望通过对大师原文的翻译可以弥补之前译者发布的关于memory barrier的一篇很拙劣的文章的遗憾。
本文的翻译不是一一对应的翻译,主要是领会精神,用自己的语言表述,最优先保证的是中文表述的流畅而不是和原文保持一致(希望可以做到)。由于水平有限,欢迎指正。
Linux内核同步机制之(七):RCU基础
作者:linuxer 发布于:2015-12-3 12:57 分类:内核同步机制
关于RCU的文档包括两份,一份讲基本的原理(也就是本文了),一份讲linux kernel中的实现。第二章描述了为何有RCU这种同步机制,特别是在cpu core数目不断递增的今天,一个性能更好的同步机制是如何解决问题的,当然,再好的工具都有其适用场景,本章也给出了RCU的一些应用限制。第三章的第 一小节描述了RCU的设计概念,其实RCU的设计概念比较简单,比较容易理解,比较困难的是产品级别的RCU实现,我们会在下一篇文档中描述。第三章的第 二小节描述了RCU的相关操作,其实就是对应到了RCU的外部接口API上来。最后一章是参考文献,perfbook是一本神奇的数,喜欢并行编程的同学 绝对不能错过的一本书,强烈推荐。和perfbook比起来,本文显得非常的丑陋(主要是有些RCU的知识还是理解不深刻,可能需要再仔细看看linux kernel中的实现才能了解其真正含义),除了是中文表述之外,没有任何的优点,英语比较好的同学可以直接参考该书。标签: RCU
显示技术介绍(2)_电子显示的前世今生
作者:wowo 发布于:2015-11-30 22:19 分类:显示
从1907年证实CRT(Cathode Ray Tube)技术可用于电视显示至今,电子显示技术经历了近100年的发展。100年的时间,说长不长,说短也不短;显示技术的发展,说快不快,说慢也不慢。
CRT技术是最原始的显示技术,但它的生命周期一直持续到2000年后,随着LCD(Liquid Crystal Display)的普及才逐渐退出历史舞台,跨度近90年,这是“不快”的由来。
而最近10年,各种新显示技术,又有层出不穷、快速发展之势,如OLED(Organic light-emitting diode display)、电子墨水(E Ink)、激光电视(Laser TV)、IMOD(Interferometric modulator display)等2D显示技术,如激光显示(Laser display)、光场显示(Light field display)等3D显示技术,这是“不慢”的由来。
蜗蜗本来只打算focus在Linux显示子系统的分析上,不想涉及太多的“题外话”,但专业技术的诱惑力,实在不比linux kernel小。另外,网上真正关注“技术”本身的资料又太少(大多是为了卖电视而写的软文)。因此就在兴趣的驱动下,对显示技术的发展做了一些较深入的了解,顺便在此记录一下。这就是本文以及后续相关文章的由来。
当然,只有兴趣还远远不够,因为任何商业化的技术背后,都有很多基础学科的支撑,数学、物理学、化学、材料学、等等。而离开学校越久远,对这些基础知识越生疏,也只能浅尝辄止了。不过还好,有强大的WJ百科,可以事半功倍,本文大多参考并翻译自下面链接,有兴趣的读者可以自行阅读:
https://en.wikipedia.org/wiki/History_of_display_technology
https://en.wikipedia.org/wiki/Display_device
ARM64的启动过程之(六):异常向量表的设定
作者:linuxer 发布于:2015-11-24 18:22 分类:ARMv8A Arch
本文主要描述了4.1.10内核初始化过程中如何初始化异常向量表。当然,首先需要准备一些异常的基础知识,这主要在第二章,如果你非常熟悉 ARM64的异常,那么可以忽略这个章节。 第三章描述了ARM64上各种形形色色的异常,第四章描述了ARM64上硬件提供的协助,最后一章描述了代码过程。
为了简化,本文对所描述的异常进行了限制:
1、所有的exception level的运行状态都是AArch64,不考虑异常发生在AArch32 excution state的时候
2、不考虑支持security extension,也就是说EL3状态的异常处理也不在本文描述
3、不考虑virtualization的支持,也就是说EL2的异常处理不会在本文描述
一句话总结,本文主要描述EL0和EL1这两个exception level下的异常向量表的设定。
Linux进程冻结技术
作者:itrocker 发布于:2015-11-24 15:01 分类:电源管理子系统
1 什么是进程冻结
进程冻结技术(freezing of tasks)是指在系统hibernate或者suspend的时候,将用户进程和部分内核线程置于“可控”的暂停状态。
2 为什么需要冻结技术
假设没有冻结技术,进程可以在任意可调度的点暂停,而且直到cpu_down才会暂停并迁移。这会给系统带来很多问题:
显示技术介绍(1)_概述
作者:wowo 发布于:2015-11-22 21:44 分类:显示
本文是显示子系统的第一篇文章,介绍嵌入式系统显示有关的硬件组成,进而拆分为相对独立的模块,以便在后续的文章中一一介绍。进化论、人工智能和外星人
作者:wowo 发布于:2015-11-15 22:16 分类:技术漫谈
标题有点混乱,主要是最近看书有些杂,从而使一些由来已久的疑惑渐有开朗之势,故而在这儿胡言乱语一番。linux kernel内存回收机制
作者:itrocker 发布于:2015-11-12 20:37 分类:内存管理
无论计算机上有多少内存都是不够的,因而linux kernel需要回收一些很少使用的内存页面来保证系统持续有内存使用。页面回收的方式有页回写、页交换和页丢弃三种方式:如果一个很少使用的页的后备存储器是一个块设备(例如文件映射),则可以将内存直接同步到块设备,腾出的页面可以被重用;如果页面没有后备存储器,则可以交换到特定swap分区,再次被访问时再交换回内存;如果页面的后备存储器是一个文件,但文件内容在内存不能被修改(例如可执行文件),那么在当前不需要的情况下可直接丢弃。功能
最新评论
- wangjing
写得太好了 - wangjing
写得太好了! - DRAM
圖面都沒辦法顯示出來好像掛點了。 - Simbr
bus至少是不是还有个subsystem? - troy
@testtest:只要ldrex-modify-strex... - gh
Linux 内核在 sparse 内存模型基础上实现了vme...
文章分类
随机文章
文章存档
- 2025年4月(5)
- 2024年2月(1)
- 2023年5月(1)
- 2022年10月(1)
- 2022年8月(1)
- 2022年6月(1)
- 2022年5月(1)
- 2022年4月(2)
- 2022年2月(2)
- 2021年12月(1)
- 2021年11月(5)
- 2021年7月(1)
- 2021年6月(1)
- 2021年5月(3)
- 2020年3月(3)
- 2020年2月(2)
- 2020年1月(3)
- 2019年12月(3)
- 2019年5月(4)
- 2019年3月(1)
- 2019年1月(3)
- 2018年12月(2)
- 2018年11月(1)
- 2018年10月(2)
- 2018年8月(1)
- 2018年6月(1)
- 2018年5月(1)
- 2018年4月(7)
- 2018年2月(4)
- 2018年1月(5)
- 2017年12月(2)
- 2017年11月(2)
- 2017年10月(1)
- 2017年9月(5)
- 2017年8月(4)
- 2017年7月(4)
- 2017年6月(3)
- 2017年5月(3)
- 2017年4月(1)
- 2017年3月(8)
- 2017年2月(6)
- 2017年1月(5)
- 2016年12月(6)
- 2016年11月(11)
- 2016年10月(9)
- 2016年9月(6)
- 2016年8月(9)
- 2016年7月(5)
- 2016年6月(8)
- 2016年5月(8)
- 2016年4月(7)
- 2016年3月(5)
- 2016年2月(5)
- 2016年1月(6)
- 2015年12月(6)
- 2015年11月(9)
- 2015年10月(9)
- 2015年9月(4)
- 2015年8月(3)
- 2015年7月(7)
- 2015年6月(3)
- 2015年5月(6)
- 2015年4月(9)
- 2015年3月(9)
- 2015年2月(6)
- 2015年1月(6)
- 2014年12月(17)
- 2014年11月(8)
- 2014年10月(9)
- 2014年9月(7)
- 2014年8月(12)
- 2014年7月(6)
- 2014年6月(6)
- 2014年5月(9)
- 2014年4月(9)
- 2014年3月(7)
- 2014年2月(3)
- 2014年1月(4)