- 浏览: 101684 次
- 性别:
- 来自: 南京
最新评论
-
colorfire:
os.path.splitext(file)[1] 不就可以吗 ...
枚举文件夹所有后缀名,python脚本
文章列表
以前就一直听到人说ie对标准的支持不好,可以每次看到网页,ie显示的蛮好的,自己认为ie还不错。但是最近自己在做网页的开发,才发现原来ie对标准的支持还是很差的,不过最新发布的ie8对标准的支持跟firefox和chrome已经是不相上下了,这是所有网页开发者的一个好消息啊。
- 2009-04-07 12:40
- 浏览 455
- 评论(0)
有部电视剧叫《恰逢同学少年时》,讲的是在长沙师范读大学的事。今天在校内上又看到一篇写80年代的人生经历的文章,写的正好是我这个时代的,上面的事我都经历过,看着那篇文章,每个字无不在心中引起共鸣。接着又看 ...
- 2009-03-18 15:52
- 浏览 487
- 评论(0)
发现每当想起小学时的事,心中的感动都会让自己喘不过气来,回首起逝去的日子,最值得怀念的还是小学时的事情,那时一切都是最真的,不带一点的修饰。长大以后,要考虑的事情也多了。责任抗在肩膀上,有些事想不去想,是不可能的。我记得,在小学时,老师曾经跟我们说过,等到年纪大的时候,会发现小学时的时光是最值得珍惜的。那时我还不懂,也不会去想这句话的意思。
- 2009-03-12 18:46
- 浏览 466
- 评论(0)
今天终于将<understanding the linux kernel>看完了,这本书的确是很好,正好满足了我想了解linux是怎么实现的,而又需要去阅读源代码,这本书就像是linux内核的文档一样,不错,推荐!看了将近2个月,时间的力量是伟大的。期间在csdn写下了大约100篇博客,虽然都不长,但是都是用自己的话将学过的东西表述出来,也许很多地方理解还是错的,希望那天有高人看到了能给我个消息,同时我也好像找个一起研究linux内核的同伴。
- 2009-03-09 19:31
- 浏览 438
- 评论(0)
semaphore
每个semaphore用一个sem_array来代表,每个sem_array里包含一个或者多个sem结构,sem代表一个原子信号量,用户使用的semaphore跟内核使用的semaphore有个很大的区别在于,用户的semaphore可以包含多个信号值,每个信号值用sem来代表。如果进程使用semop()操作时带上了SEM_UNDO标志,那么进程对信号量的操作将会被一个sem_undo结构记录,这样当进程因为错误而终止时,系统可以使用sem_undo结构将信号量的值恢复到进程未使用的状态。
ipc_message & posix message queue
每个 ...
- 2009-03-09 19:12
- 浏览 662
- 评论(0)
linux进程间通讯的方式有以下几种:
1.pipe and fifo
2.semaphore
3.message
4.shared memory region
5.socket
pipe
内核中代表pipe的数据结构是pipe_inode_info,这个结构中有一个buff field用来指定pipe的缓冲区,在2.6.10之前,每个pipe只有一个buff(一个buff包含一个page frame),之后buff被增加到16个。每次创建一个pipe时,会在pipefs里创建一个pipe_inode_info,pipefs是linux的一个特殊的文件系统。当一个pipe被创建 ...
- 2009-03-09 13:46
- 浏览 713
- 评论(0)
这个swap cache的作用不是说要加快磁盘的I/O效率,主要是为了防止页面在swap in和swap out时,进程的同步问题,也就是在进行swap out操作时(将页面内容写入磁盘分区时)进程如果发起了对换出页面的访问,系统对其的处理。有了swap cache的存在,如果页面的数据还没有完全写入磁盘时,这个page frame是在swap cache(swap cache有个引用指向页面),等数据完全写入磁盘后,而且没有进程对page frame进行访问,那么swap cache才会释放page frame,将其交给buddy system.
- 2009-03-06 13:22
- 浏览 633
- 评论(0)
linux的一个swap area可以是一个分区,也可以是一个文件,因为可以是一个文件,所有每个swap area包含一个或多个swap extent,用swap_extent来进行表示。每个swap_extent代表一个连续的磁盘空间。如果swap area是一个分区,那么它只有一个swap extent,如果是一个文件那么,文件在磁盘上有多少个连续的分区就有多少个swap extent。
linux使用swap_info(一个数组)来描述所有的swap area,每个swap area使用swap_area_info来描述。每个swap area被分为多个page slot,对应一个pag ...
- 2009-03-06 13:13
- 浏览 538
- 评论(0)
linux使用两个list来保存所有的page,一个是active list;一个是inactive list。pfra在回收page frame的时候首先是从inactive里开始的。每个page都有两个位来标识page属于的list,以及是否被访问过。它们是PG_active和PG_referenced.由于这两个位值的不同,page可以分为4种状态:
1.PG_active=0 PG_referenced=0
2.PG_active=0 PG_referenced=1
3.PG_active=1 PG_referenced=0
4.PG_active=1 PG_referenced ...
- 2009-03-06 13:01
- 浏览 892
- 评论(0)
reverse mapping for anonymous pages
为了快速地根据page的指针找到对应的page table项,linux在每个page的mapping域里有一个anon_vma结构,是一个list,保存了所有引用它的vm_area_struct,而vm_area_struct的vm_mm项指向mm_struct,在mm_struct里的pgd则指向进 ...
- 2009-03-03 15:08
- 浏览 791
- 评论(0)
对于swap页面时,页面可以分为一下几类:
1.unredaimable:
free page,reserved pages,pages dynamically allocated by the kernel,pages in the kernel mode stacks of the processes,temporarilly locked pages,memory locked pages
2.swappable:
anonymous pages in the user mode address spaces
mapped pages of t ...
- 2009-03-03 13:15
- 浏览 701
- 评论(0)
linux为了提高I/O的性能,尽量减少I/O请求的发送,主要是为了提高进程顺序读取文件的效率,提供了read ahead的机制,如果linux判断一个进程在顺序读取文件,那么它会提前读取进程所需文件的数据,放在缓存中。
判断的标准是:
1.如果进程是第一次读取文件,那么检查进程是不是读取文件的第一个page
2.读取的文件page是不是上次读取page的下一个
满足上面两个条件的进程,linux会为其创建两个window,每个window包含几个page。一个被称为current window;另一个被称为ahead window。current window是进程正在读取的文件pag ...
- 2009-03-03 11:31
- 浏览 488
- 评论(0)
这个tree是一种很有趣的tree,我以前都没见过这种树。在linux中,它的非叶节点是一种radix_tree_node结构,叶节点是一个page结构。radix_tree_node包含一个64长度的数组,用来存放叶节点或者非叶节点。每个被插入的page,都有一个index,用来标识这个page应该被插入的位置。比如当这棵树只有一层的时候,根据index的值,将page插入64数组的index位置就可以了(这时index要小于64)。在某个时刻,这棵树可以接受的最大index为pow(2,6*height)。page 的index在树中是这样解释的,index的二进制表示的最高6个有效位 ...
- 2009-03-03 11:30
- 浏览 3590
- 评论(0)
page cache是指将磁盘的数据缓存在内存中。缓存的单位是以一个页面为基本单位的(page frame)。跟page cache有关的核心数据结构是address_space,它被inode引用。一个文件的所有page cache都被挂在address_space的radix tree。除了一个页面单位的缓存外,linux还提供了block buffer,它们被存放在一类很特别的page cache,被成为“buffer page”。每个buffer page包含一个或者多个block buffer,他们的大小必须是相同的。每个block buffer使用一个名为buffer_head ...
- 2009-03-03 11:29
- 浏览 667
- 评论(0)
最近在做一个j2ee项目,要用到hibernate, spring,以前我也做过这方面的东西,用的开发环境是myeclipse,里面有很多自动化的工具,特别是hibernate的反向工程。但是我却打算使用maven,一个我从来没使用过的东西,而且我只想用它的一个自动写在项目所依赖的包。但是代价是我要自己去下hibernate的各种eclipse插件,还要学会怎么使用。以及其它的像tomcat的自动部署等,都得自己去弄。真是为了一点点小利益,付出了巨大的代价。晚上睡觉的时候,我才意识到为什么自己这么傻。
- 2009-03-01 15:22
- 浏览 342
- 评论(0)