操作系统
文章平均质量分 91
iter_zc
关注互联网架构方向
展开
-
计算机底层知识拾遗(四)理解文件系统
操作系统的很多核心组件都是相互关联的,比如虚拟内存管理,物理内存管理,文件系统,缓存系统,IO,设备管理等等,都要放在一起来看才能从整体上理解各个模块到底是如何交互和工作的。这个系列的目的也就是从整体上来理解计算机底层硬件和操作系统的一些重要的组件是如何工作的,从而来指导应用层的开发。这篇讲讲文件系统的重要概念,为后面的IO系统做铺垫。文件系统主要有三类1. 位于磁盘的文件系统,在原创 2015-01-29 13:25:38 · 8241 阅读 · 0 评论 -
计算机底层知识拾遗(五)理解块IO层
上一篇讲了文件系统计算机底层知识拾遗(四)理解文件系统,说了文件按照inode-block的结构存储在磁盘上。这篇说说操作系统是如何来读取磁盘上的块的Linux把设备分为三种1. 块设备,用来永久存储文件信息的,支持顺序访问和随机访问(按块号访问),比如磁盘,光盘等2. 字符设备,只能顺序访问,比如键盘3. 网络设备,只能顺序访问,比如网卡,蓝牙设备我们常说的一原创 2015-01-29 14:15:15 · 9525 阅读 · 0 评论 -
计算机底层知识拾遗(十)理解进程调度
这篇说说内核的进程调度机制,进程调度是内核的一个重要工作,由调度器完成。调度器主要解决两个问题1. 决定为每个进程分配多少运行时间,何时切换到下一个进程,下一个进程是什么2. 从进程A切换到进程B时,要保证进程B的执行环境和上次被撤销执行时完全一致,比如寄存器的内容,虚拟地址空间的各个数据结构。内核调度器调度的实体(KSE, kernal schedule entry)是进程和原创 2015-03-18 15:00:53 · 5124 阅读 · 1 评论 -
计算机底层知识拾遗(八)理解物理内存管理
内存管理是Linux内核最复杂的组件。内存管理包括虚拟内存机制和物理内存管理。这篇说说物理内存管理的一些要点。说到虚拟内存的时候我们知道虚拟内存地址空间分为两部分:内核地址空间和用户进程地址空间。这两个地址空间都使用虚拟地址,也就是说程序使用的都是虚拟地址。从虚拟地址映射到实际物理地址时有所区别:1. 内核使用物理内存时可以直接通过虚拟地址和内核地址空间的起始值的偏移量来计算得到实际物理内原创 2015-03-12 15:18:56 · 4927 阅读 · 0 评论 -
计算机底层知识拾遗(六)理解页缓存page cache和地址空间address_space
在这篇计算机底层知识拾遗(五)理解块IO层 中讲了块缓存buffer cache块缓存,这篇说说页缓存page cache以及相关的地址空间address_space的要点。在Linux 2.4内核中块缓存buffer cache和页缓存page cache是并存的,表现的现象是同一份文件的数据,可能即出现在buffer cache中,又出现在页缓存中,这样就造成了物理内存的浪费。Linux原创 2015-03-11 10:48:54 · 18951 阅读 · 5 评论 -
计算机底层知识拾遗(七)页缓存数据同步和页回收机制
这篇说说Linux的页缓存数据同步和页回收机制。数据同步和页回收是两个独立的概念,数据同步处理的是内存/缓存的数据和后备设备的数据一致问题,页回收处理的是在内存空间不足时如何回收已分配的物理内存页,来获得足够空间分配干净页,支持优先级更高的工作。数据同步在任意时刻都有可能触发,页回收则是在物理内存使用达到一定阀值的时候触发。数据同步就是把物理内存和页缓存中的脏页写回到后备设备的文件中去原创 2015-03-12 13:27:41 · 3934 阅读 · 0 评论 -
计算机底层知识拾遗(九)深入理解内存映射mmap
内存映射mmap是Linux内核的一个重要机制,它和虚拟内存管理以及文件IO都有直接的关系,这篇细说一下mmap的一些要点。mmap和虚拟内存管理先来看看Linux内核的用户进程虚拟内存管理。内核定义了mm_struct结构来表示一个用户进程的虚拟内存地址空间。1. start_code, end_code指定了进程的代码段的边界,start_data, end_dat原创 2015-03-16 17:08:18 · 8492 阅读 · 0 评论