principle of computer
data eudemon
嗯,改变世界。
展开
-
计算机底层知识拾遗(十)理解进程调度
这篇说说内核的进程调度机制,进程调度是内核的一个重要工作,由调度器完成。 进程状态 内核调度器调度的实体(KSE, kernal schedule entry)是进程和线程。内核必须知道所有进程和线程的状态,比如把时间片给一个阻塞的进程是没有意义的。从内核的角度来看,进程的状态有3种: 1. 运行,表示正在运行的进程 2. 等待,没有运行,但是等待时间片运行的进程 3. 睡眠翻译 2018-02-07 16:54:51 · 227 阅读 · 0 评论 -
计算机底层知识拾遗(四)理解文件系统
操作系统的很多核心组件都是相互关联的,比如虚拟内存管理,物理内存管理,文件系统,缓存系统,IO,设备管理等等,都要放在一起来看才能从整体上理解各个模块到底是如何交互和工作的。这个系列的目的也就是从整体上来理解计算机底层硬件和操作系统的一些重要的组件是如何工作的,从而来指导应用层的开发。这篇讲讲文件系统的重要概念,为后面的IO系统做铺垫。 文件系统主要有三类 1. 位于磁盘的文件系统,在翻译 2018-02-07 16:54:07 · 395 阅读 · 0 评论 -
计算机底层知识拾遗(三)理解磁盘的机制
磁盘是一种重要的存储器,位于主存结构的下方,是永久存储的介质。在计算机底层知识拾遗(一)理解虚拟内存机制 这篇中说了虚拟内存是面向磁盘的,理解磁盘的工作原理对理解计算机的很多概念有很大的帮助。尤其是在数据库和分布式存储领域,要经常和磁盘打交道。 磁盘这块主要有几个部分的概念: 1. 磁盘的基本结构和工作原理 2. 如何在虚拟内存机制下与内存高效地交换数据 3. 磁盘如何保证数据存储翻译 2018-02-07 16:53:21 · 329 阅读 · 0 评论 -
计算机底层知识拾遗(一)理解虚拟内存机制
这个系列会总结计算机,网络相关的一些重要的底层原理。很多底层原理大家上学的时候都学过,但是在学校的时候大部分的同学都是为了应付考试而学习,过几天全忘了。随着工作的时间越久,越体会到这些基础知识的重要性。做技术和练武功一样,当你到了一定的阶段,也会遇到一个瓶颈,突破了你的眼界就会大不同,突破不了,只能困在原地无法成长。我自己深有体会,这些基础知识,底层原理是助你打破瓶颈的灵丹妙药。当理解了一些底层原翻译 2018-02-07 16:52:37 · 255 阅读 · 0 评论 -
计算机底层知识拾遗(九)深入理解内存映射mmap
内存映射mmap是Linux内核的一个重要机制,它和虚拟内存管理以及文件IO都有直接的关系,这篇细说一下mmap的一些要点。 修改(2015-11-12):Linux的虚拟内存管理是基于mmap来实现的。vm_area_struct是在mmap的时候创建的,vm_area_strcut代表了一段连续的虚拟地址,这些虚拟地址相应地映射到一个后备文件或者一个匿名文件的虚拟页。一个vm_area_st翻译 2018-02-06 11:53:50 · 190 阅读 · 0 评论 -
计算机底层知识拾遗(八)理解物理内存管理
内存管理是Linux内核最复杂的组件。内存管理包括虚拟内存机制和物理内存管理。这篇说说物理内存管理的一些要点。 物理内存地址空间和虚拟内存地址空间 说到虚拟内存的时候我们知道虚拟内存地址空间分为两部分:内核地址空间和用户进程地址空间。这两个地址空间都使用虚拟地址,也就是说程序使用的都是虚拟地址。从虚拟地址映射到实际物理地址时有所区别: 1. 内核使用物理内存时可以直接通过虚拟地址翻译 2018-02-06 11:52:59 · 232 阅读 · 0 评论 -
计算机底层知识拾遗(七)页缓存数据同步和页回收机制
篇说说Linux的页缓存数据同步和页回收机制。数据同步和页回收是两个独立的概念,数据同步处理的是内存/缓存的数据和后备设备的数据一致问题,页回收处理的是在内存空间不足时如何回收已分配的物理内存页,来获得足够空间分配干净页,支持优先级更高的工作。数据同步在任意时刻都有可能触发,页回收则是在物理内存使用达到一定阀值的时候触发。 数据同步就是把物理内存和页缓存中的脏页写回到后备设备的文件中去。翻译 2018-02-06 11:52:19 · 208 阅读 · 0 评论 -
计算机底层知识拾遗(六)理解页缓存page cache和地址空间address_space
在这篇计算机底层知识拾遗(五)理解块IO层 中讲了块缓存buffer cache块缓存,这篇说说页缓存page cache以及相关的地址空间address_space的要点。 在Linux 2.4内核中块缓存buffer cache和页缓存page cache是并存的,表现的现象是同一份文件的数据,可能即出现在buffer cache中,又出现在页缓存中,这样就造成了物理内存的浪费。Linu翻译 2018-02-06 11:51:36 · 1082 阅读 · 0 评论 -
计算机底层知识拾遗(五)理解块IO层
上一篇讲了文件系统计算机底层知识拾遗(四)理解文件系统,说了文件按照inode-block的结构存储在磁盘上。这篇说说操作系统是如何来读取磁盘上的块的 Linux把设备分为三种 1. 块设备,用来永久存储文件信息的,支持顺序访问和随机访问(按块号访问),比如磁盘,光盘等 2. 字符设备,只能顺序访问,比如键盘 3. 网络设备,只能顺序访问,比如网卡,蓝牙设备 我们常说的一转载 2018-02-06 11:50:34 · 278 阅读 · 0 评论 -
计算机底层知识拾遗(二)深入理解进程和线程
关于进程和线程,大家总是说的一句话是“进程是操作系统分配资源的最小单元,线程是操作系统调度的最小单元”。这句话理论上没问题,我们来看看什么是所谓的“资源”呢。 什么是计算机资源 经典的冯诺依曼结构把计算机系统抽象成 CPU + 存储器 + IO,那么计算机资源无非就两种: 1. 计算资源 2. 存储资源 CPU是计算单元,单纯从CPU的角度来说它是一个黑盒,它只对翻译 2018-02-06 11:49:47 · 192 阅读 · 0 评论 -
数组、链表、堆栈和队列
数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合。听起来是不是很抽象,简单理解:数据结构就是描述对象间逻辑关系的学科。比如:队列就是一种先进先出的逻辑结构,栈是一种先进后出的逻辑结构,家谱是一种树形的逻辑结构!(初学数据结构的时候很不理解为什么有“栈”这个东西;队列很容易理解---无论购物就餐都需要排队;栈可以认为就是个栈道---只允许一个人通过的小道,而且只能从一端进入,然后再从这端...转载 2018-03-01 15:26:45 · 178 阅读 · 0 评论