文章列表
 
2008-12-23 22:58
可以将linux看作一个用来管理资源的程序,而其他应用程序跑在其上,linux管理应用程序的内存分配,回收,等等。为了管理,它首先需要给自己分配静态的内存空间:代码段空间,mem_map[]空间等等。然后它把剩余的其他RAM用buddy系统进行动态管理。

linux内核的pagetable swapper_pg_dir将虚拟地址0xC0000000~0xC0000000+896M映射到物理地址0x0~0x896M。除去内核代码占用的ram外,其余的物理ram都为空闲。当内核需要时,直接分配了就可以使用,而不需要再对swapper_pg_dir进行修改。而当用户空间需要的时候
 
2008-12-21 22:04

在linux中,有两个page buffer队列,将所有的正在使用的page(除了由slab使用的那部分page)缓冲起来:active_list和inactive_list(在mm/page_alloc.c中定义)。在系统中正在使用的page中,除了由slab管理的page外,剩下的页面都通过page->lru链接到这两个buffer队列中。(slab之所以不被包含在page buffer中,是因为它是以各种不同大小的对象为基础来缓冲的,不方便以page为大小进行回收)

使用这样的page buffer的好处如下:

1. 减少访问磁

 
2008-12-16 21:41

;; 显示光标位置:
;;(setq column-number-mode t)
;;(setq line-number-mode t)

;; 设置kill-ring-max为200
(setq kill-ring-max 200)

;; 设置tab为4个空格的宽度,而不是原来的2
(setq c-basic-offset 4)
(setq default-tab-width 4)
(setq-default indent-tabs-mode nil)

;; 设置让光标指到某个括号与它匹配的括号
(show-paren-mode t)
(setq show-paren-style 'parentheses)

;; 禁用终端响铃
(setq visible-bell t)

 
2008-12-15 23:36
Emacs常用命令速查
1)与文件操作有关的命令
C-x C-f    查找文件并且在新缓冲区中打开
C-x C-v    读入另一个文件替换掉用C-x C-f打开的文件
C-x i    把文件插入到光标的当前位置
C-x C-s    保存文件
C-x C-w    把缓冲区内容写入一个文件
C-x C-c    退出Emacs

2)与光标移动操作有关的命令
C-f     光标前移一个字符(右)
C-b 
 
2008-12-15 16:51


今天读了<<深入理解linux内核>>第14章磁盘高速缓存,对它的数据结构基本理解了。这使我对VFS这一块的阅读有了很大的信心。
现将理解表述如下(本来想画一张图,但觉得太费事)
1。高速缓存主要有3种:目录高速缓存,缓冲区高速缓存和页高速缓存。
其实我觉得书中称“缓冲区“及缓冲首部(buffer_head)这个词不好。我觉得应该换个名字更好:比如叫:块对象(block object)和块描述符(block descripter)。
2
 
2008-12-15 16:45
通过这些天读内核管理,我感觉无论是内存的分配还是缓冲的管理,用的数据结构不是链表就是数组。而且为了更加有效的管理一群对象,采用的方式无外乎是
:1。通过增加索引级数。如slab分配器:就通过3级来管理,最高一级是kmem_cache_s,接下来是kmem_slab_t,再下来是 kmem_bufctl_s,最后是对象本身.(试想它为什么会用3级,其实本来可以用一级的,即用hash或一条链串起来便可它最终就是要取个对象,中 间级对外是隐藏的)只要能想通了这个,以后一看到要讲数据结构,我就首先看看它是用几级索引。然后我就能推断
 
2008-12-14 14:57
1. 物理页申请(allocation)
linux内核刚启动时采用boot memory管理内存,之后由boot memory初始化buddy system,最终由buddy接管内存的动态分配。具体地,当函数paging_init(void)执行时,只有boot memory空间被初始化完毕,因此页表描述符只能使用boot memory中的空间。

linux对系统中每个zone中的大多数空闲页面采用buddy算法进行管理,同时为了加速页面分配,对少量单个页面进行了缓存(见zone中的pageset[NR_CPUS]字段)。

在一个操作系统中,还可以采用其他动态存储管理策略:顺序搜
 
2008-12-14 14:22
  1. 基于区的伙伴系统的设计
  2. 物理页面的管理

内存分配的两大问题是:分配效率、碎片问题。一个好的分配器应该能够快速的满足各种大小的分配要求,同时不能产生大量的碎片浪费空间。伙伴系统是一个常用的比较好的算法。(解释:TODO)

 
2008-12-14 14:22

本文主要针对2.4kernel

8 Linux 相关实现

这一部分的代码和体系结构紧密相关,因此大多位于

 
2008-12-10 16:26

glibc中的malloc实现:

The main properties of the algorithms are:
* For large (>= 512 bytes) requests, it is a pure best-fit allocator,
    with ties normally decided via FIFO (i.e. least recently used).
* For small (<= 64 bytes by default) requests, it is a caching
    allocator, that maintains pools of quickly recycled chunks.
* In between, and for combinations of large

 
   
 
 
文章分类
 
 
 
 
 
 
c/c++(24)
 
 
Gcc(10)
 
Read(8)
 
Edit(15)
 
 
 
Net(3)
 
   
 
文章存档
 
     
 
最新文章评论
  

刚才的评论忘点分享了
 

写的太好了,忍不住赞一个。作为初学者,很多东西不清楚,就需要这样的文章来整理一
 

其实我就是那个能运行就万事大吉的菜鸟,受教了~
 

需要,谢谢
 

原创?怎么看到相关文章都是这一篇呢~~
   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu