草庐IT

Linux 0.11源码阅读笔记-高速缓冲

高速缓冲概念高速缓冲区是内存中的一块内存,在块设备与内核其它程序之间起着一个桥梁作用。内核程序如果需要访问块设备中的数据,都需要经过高速缓冲区来间接的操作。高速缓冲区结构高速缓冲区被划分为1k大小的缓冲块,与磁盘块大小一致。高速缓冲区主要包含两部分内容,缓冲块头结构(buffer_head,bh)及其对应的缓冲块。缓冲块用于缓存磁盘数据,并且具有一个缓冲块头结构;缓冲块头结构保存对应缓冲块的元数据。高速缓冲采用hash表和包含所有缓冲块的链表进行操作管理。缓冲块头结构用于建立内存缓冲块和磁盘被缓冲数据块之间的映射关系,并记录一些访问状态、管理属性。缓冲块头结构具有指向缓冲块的指针,并记录有被缓

Linux 0.11源码阅读笔记-文件管理

Linux0.11源码阅读笔记-文件管理文件系统生磁盘未安装文件系统的磁盘称之为生磁盘,生磁盘也可以作为文件读写,linux中一切皆文件。磁盘分区生磁盘可以被分区,分区中可以安装文件系统,常见的文件系统有fat32、ext2、ext4等。分区后的磁盘结构布局如下图,其中主引导扇区记录了分区信息,并且包含引导代码可用于引导操作系统。文件系统分区内可以安装指定文件系统,同一磁盘多个分区文件系统不要求相同。MINIX文件系统布局如下:引导块:若作为引导分区,将存放操作系统的引导程序代码,否则空置。超级块:用于存放磁盘设备上文件系统结构的信息,说明各部分的大小。i节点位图:标记i节点数据元素是否被使用

Linux 0.11源码阅读笔记-总览

Linux0.11源码阅读笔记-总览阅读源码的目的加深对Linux操作系统的了解,了解Linux操作系统基本架构,熟悉进程管理、内存管理等主要模块知识。通过阅读教复杂的代码,锻炼自己复杂项目代码的阅读能力。对于一般简短的程序,可以从main函数逐行阅读理解;对于复杂的项目,只能在了解源码主要结构的情况下,抓住某个具体的功能进行阅读。选择较早版本的理由Linux较新版本代码在百万行以上,而0.11版本内核不超过2万行代码。比较新版本的Linux内核源码太多且内容庞杂,自身能力不足,没有能力阅读。早期版本的代码虽然功能简陋,但基本功能都有,属于麻雀虽小五脏俱全,对于新手来说最适合不过。不足在于0.

Linux 0.11源码阅读笔记-高速缓冲

高速缓冲概念高速缓冲区是内存中的一块内存,在块设备与内核其它程序之间起着一个桥梁作用。内核程序如果需要访问块设备中的数据,都需要经过高速缓冲区来间接的操作。高速缓冲区结构高速缓冲区被划分为1k大小的缓冲块,与磁盘块大小一致。高速缓冲区主要包含两部分内容,缓冲块头结构(buffer_head,bh)及其对应的缓冲块。缓冲块用于缓存磁盘数据,并且具有一个缓冲块头结构;缓冲块头结构保存对应缓冲块的元数据。高速缓冲采用hash表和包含所有缓冲块的链表进行操作管理。缓冲块头结构用于建立内存缓冲块和磁盘被缓冲数据块之间的映射关系,并记录一些访问状态、管理属性。缓冲块头结构具有指向缓冲块的指针,并记录有被缓

Linux 0.11源码阅读笔记-文件管理

Linux0.11源码阅读笔记-文件管理文件系统生磁盘未安装文件系统的磁盘称之为生磁盘,生磁盘也可以作为文件读写,linux中一切皆文件。磁盘分区生磁盘可以被分区,分区中可以安装文件系统,常见的文件系统有fat32、ext2、ext4等。分区后的磁盘结构布局如下图,其中主引导扇区记录了分区信息,并且包含引导代码可用于引导操作系统。文件系统分区内可以安装指定文件系统,同一磁盘多个分区文件系统不要求相同。MINIX文件系统布局如下:引导块:若作为引导分区,将存放操作系统的引导程序代码,否则空置。超级块:用于存放磁盘设备上文件系统结构的信息,说明各部分的大小。i节点位图:标记i节点数据元素是否被使用

Linux 0.11源码阅读笔记-总览

Linux0.11源码阅读笔记-总览阅读源码的目的加深对Linux操作系统的了解,了解Linux操作系统基本架构,熟悉进程管理、内存管理等主要模块知识。通过阅读教复杂的代码,锻炼自己复杂项目代码的阅读能力。对于一般简短的程序,可以从main函数逐行阅读理解;对于复杂的项目,只能在了解源码主要结构的情况下,抓住某个具体的功能进行阅读。选择较早版本的理由Linux较新版本代码在百万行以上,而0.11版本内核不超过2万行代码。比较新版本的Linux内核源码太多且内容庞杂,自身能力不足,没有能力阅读。早期版本的代码虽然功能简陋,但基本功能都有,属于麻雀虽小五脏俱全,对于新手来说最适合不过。不足在于0.

Redis缓存穿透、缓存击穿、缓存雪崩

Redis缓存穿透、缓存击穿缓存雪崩redis常被用于作为后台数据库的缓存,缓存一些热点访问数据,根据局部性原理,缓存能够处理大部分请求。当请求数据未命中缓存时,才会引起对数据库的访问。使用redis作为缓存时,存在一些应用问题,包括缓存穿透、缓存击穿、缓存雪崩。缓存穿透当有大量查询请求未命中缓存时,引起对后台数据库的频繁访问,导致数据库负载压力增大,这种现象就叫做缓存穿透。引起的原因:黑客大量访问不存在的key,导致数据库处理大量请求解决方法:将无效的key存进Redis中,若果数据库查询某个key不存在时,同样将这个key缓存到Redis缓存中,并设置value为NULL,表示不存在。如果

Redis缓存穿透、缓存击穿、缓存雪崩

Redis缓存穿透、缓存击穿缓存雪崩redis常被用于作为后台数据库的缓存,缓存一些热点访问数据,根据局部性原理,缓存能够处理大部分请求。当请求数据未命中缓存时,才会引起对数据库的访问。使用redis作为缓存时,存在一些应用问题,包括缓存穿透、缓存击穿、缓存雪崩。缓存穿透当有大量查询请求未命中缓存时,引起对后台数据库的频繁访问,导致数据库负载压力增大,这种现象就叫做缓存穿透。引起的原因:黑客大量访问不存在的key,导致数据库处理大量请求解决方法:将无效的key存进Redis中,若果数据库查询某个key不存在时,同样将这个key缓存到Redis缓存中,并设置value为NULL,表示不存在。如果