自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 minix3 开发环境搭建

准备工作:需要的下载的软件:Vmware workstation 10Minix3镜像(http://www.minix3.org/)PuttyWinSCP 1.  安装虚拟机:                   a.首先安装虚拟机软件vmware workstation  10                     b.新建一个虚拟机配置,推荐配置 - 内存5

2014-03-04 19:57:40 4532 4

原创 初识coroutine

什么是coroutine?coroutine是一种古老的计算模式,中文翻译叫做“协程”,是一种多线程编程思路,早在1969年被提出。coroutine本质上是一种轻量级的thread,它的开销会比使用thread少很多。多个coroutine可以按照次序在一个thread里面执行,一个coroutine如果处于block状态,可以交出执行权,让其他的coroutine继续执行。coro

2014-03-03 16:45:09 922

原创 ext2读取并产生间接块和数据块

读取并产生数据块和间接块 在学习页缓存的时候,我们看到这样一张图: do_generic_file_read()函数是通用的读文件函数,先从pagecache中读取,当缓存不命中的时候进行进行文件预读。预读算法则从硬盘上读取数据填充这个pagecache。从硬盘上读取数据的函数read_pages,要隔离各种文件系统读取文件内容的方式,就是通过给定文件关联的inode,利用

2013-05-18 10:38:16 2049 2

原创 ext2在内存中的数据结构

内存中的数据结构 linux将文件系统的一部分磁盘数据结构保存在内存中,提高访问速度。实现中设计两个数据结构:ext2_sb_info和ext2_inode_info。当ext2文件系统被安装时,用类型为ext2_sb_info的结构装入VFS超级块的s_fs_info字段,以便内核能找到与这个文件系统相关的内容。 Struct super_block{……Vo

2013-05-18 10:29:01 1607

原创 页面回收---LRU链表

一、页面回收概述 Linux中页面回收主要是通过两种方式触发的,一种是由“内存严重不足”事件触发的;一种是由后台进程 kswapd触发的,该进程周期性地运行,一旦检测到内存不足,就会触发页面回收操作。对于第一种情况,系统会调用函数 try_to_free_pages()去检查当前内存区域中的页面,回收那些最不常用的页面。对于第二种情况,函数 balance_pgdat()是入口函数。以下是

2013-04-19 16:32:35 2976 2

原创 块缓存

从2.4.10的稳定版本开始,缓冲区高速缓存其实就不存在了。事实上,由于效率的原因,不再单独分配块缓冲区;相反,把它们存放在叫做“缓冲区页”的专门页中,而缓冲区页保存在页高速缓存中。每个块缓冲区都有buffer_head类型的缓冲区头描述符。该描述符包含内核必须了解的、有关如何处理块的所有信息。因此,在对所有块操作之前,内核检查缓冲区首部。缓冲区首部的字段位于/include/linux/Bu

2013-03-29 19:32:05 956

原创 页缓存预读

Linux的预读架构如图所示,Linux内核会将它最近访问过的文件页面缓存在内存中一段时间,这个文件缓存被称为pagecache。如图1所示。一般的read()操作发生在应用程序提供的缓冲区与pagecache之间。而预读算法则负责填充这个pagecache。应用程序的读缓存一般都比较小,比如文件拷贝命令cp的读写粒度就是4KB;内核的预读算法则会以它认为更合适的大小进行预读 I/O,比如16

2013-03-29 19:29:44 2598 1

原创 物理内存的管理

在内核初始化完成后,内存管理的责任由伙伴系统承担。伙伴系统为内核分配连续内存页,它是一种古老而历经检验的技术。系统中的空闲内存块总是两两分组,每组中的两个内存块大小一样,都是2n个页,称作伙伴(buddy,我一直觉得叫做couple更适合)。伙伴的分配时彼此独立的。但如果两个伙伴都是空闲的,内核就会将其合并为一个更大的内存块。伙伴系统的数据结构系统中每个内存域都对应一个struct z

2013-03-12 20:29:10 820

原创 进程虚拟内存空间---线性区的数据结构

进程所拥有的所有线性区是使用两种结构进行管理的:(1)      在一个单链表上(开始于mm_struct->map,按起始地址以递增顺序进行排列)(2)      在一棵红黑树上,根节点位于mm_struct->rb。内核频繁执行的一个操作就是查找包含指定线性地址的线性区。设一个进程有n个线性区,那么该操作在单链表上的执行时间复杂度是O(n),而在红黑树上是O(logn)

2013-03-11 10:18:34 1593 1

原创 服务体模型的概念

这是一个完全抛开进程/线程、以服务体模型为基础设计的操作系统。服务体、执行流是服务体模型的基本抽象,如图1-1所示。图1-1 执行流/服务体模型示意图服务体模型没有内核的概念,所有的组成部件都是彼此平等的服务体,其中核心服务体提供了服务体间通讯机制并维护了与通讯相关的抽象。1.1   执行流执行流代表了CPU对机器码的执行。系统中每个CPU提供一个执行流,如果采用超线程

2013-03-11 10:07:35 767

原创 为什么我要写博客

我研一。用老板的话是说我天天晃荡晃荡的,到时候没人帮得了我。我不明白他指的是帮我做什么?想想毕业到现在,半年多没编码,还居然手痒了,还居然怀念起以前一到项目deadline就加班的小日子。怎么说呢,四年的软件工程学下来,我太工程了,现在天天看论文搞研究,有的还涉及体系结构汇编神马的!神马啊?~~~以前觉得本科毕业工作养得活自己就行了,莫名其妙的还读研了,我晕!胸无大志的我顿感压力很大。。。

2013-03-11 10:03:35 472

空空如也

空空如也

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

TA关注的人

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