摘要: 关键在于如何寻找增广路径:初始时最大匹配为空for 二分图左半边的每个点i do 从点i出发寻找增广路径。如果找到,则把它取反(即增加了总了匹配数)如果二分图的左半边一共有n个点,那么最多找n条增广路径。如果图中共有m条边,那么每找一条增广路径(DFS或BFS)时最多把所有边遍历一遍,所花时间也就是m。所以总的时间大概就是O(n * m)。增广路径的性质:(1)有奇数条边。(2)起点在二分图的左半边,终点在右半边。(3)路径上的点一定是一个在左半边,一个在右半边,交替出现。(其实二分图的性质就决定了这一点,因为二分图同一边的点之间没有边相连,不要忘记哦。)(4)整条路径上没有重复的点。(5)起 阅读全文
posted @ 2011-10-07 11:25 Jack204 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 首先在将tty纳入文件系统后,它将处于核心位置。主要分为三个模块,tty.c(控制),keyboard.c(输入),console.c(输出)模块。将tty纳入文件系统后,dev_tty1, dev_tty2, dev_tty3三个文件。现在假设进程SHELL打开了dev_tty1, 把它当做文件一样读写.具体读入的过程是这样的:SHELL进程调用read,传文件(dev_tty1)的fd和buf到文件系统。文件系统发现此文件属性为tty设备,就向task_tty发消息准备让tty从外界读入信息。此时shell阻塞,文件系统继续运行,tty正在等待用户输入。task_tty是一个不断运行的进程 阅读全文
posted @ 2011-09-29 20:43 Jack204 阅读(848) 评论(0) 推荐(0) 编辑
摘要: < Virtual terminals >Ctrl + Alt + F1 Switch to the first virtual terminal. In Linux, you can have several virtual terminals at the same time. The default is 6.Ctrl + Alt + Fn Switch to the nth virtual terminal. Because the number of virtual terminals is 6 by default, n = 1...6.tty Typing the t 阅读全文
posted @ 2011-09-27 21:48 Jack204 阅读(479) 评论(0) 推荐(0) 编辑
摘要: 在代码写到后期的时候,加入操作系统之后,作者的代码组织风格突然一转。刚开始lib中的函数很多是供kernel自己调用的,利用lib中的这些函数,kernel中又添加了硬盘驱动task,tty驱动task,并且向外提供了printf函数接口。可供其他的User Task来调用。后来加上了FileSystem之后,又多出来了一个模块,可能因为FileSystem比较大。单独一个文件夹存放FileSystem的代码。并且FileSystem也向外UserTask提供了open close write read接口。在不断开发的过程中,不断又很多模块的对外接口,搀杂在各自的模块中,不是太好管理。于是将 阅读全文
posted @ 2011-09-27 21:21 Jack204 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 怎么说呢,最近遇到一大堆程序的时候真的有点手足无措,感觉很被动阿。迎难而上才能有所得。这次的经验是面对一大堆要写的代码该怎么办呢?答案:先搭框架!其实上面这四个字着实有点太忽悠人,写代码少的人很有能够真正理解框架是什么意思。其实这个词含义真是太丰富了,可是现阶段我自己的所谓的框架,就是要完成我的功能,需要添加的代码的结构。1 分解的过程,也就是理解和总结思路的过程,这种形式的分解粒度可能会比较粗,这种形式分解结果将其写在纸上。包括model,behavior等等。2 假如现在准备写某一小块的代码了,可是由于代码可能也不是那么直接,可以在更具体的级别再进行一次分解。这次的分解结果函数之间可以写出 阅读全文
posted @ 2011-09-25 19:54 Jack204 阅读(359) 评论(0) 推荐(0) 编辑
摘要: 1首先硬盘分区的优点和缺点有很多,这里Google一下Disk Partition Wiki。就能了解很多,至少我们都知道的是下面几条优点。不同的操作系统可以安装在不同的分区里面,而且可以互相不影响。并且可以在不同的分区内使用不同的文件系统。比如Linux里面可能需要一块swap分区,用于虚拟内存的硬盘交换。还有可能由于一些安全的原因,需要将一些数据单独放到一个分区里面。2 分区的实现(写给自己看的,不是科普知识)。首先硬盘0扇区是引导扇区,硬盘分区表就记录在0扇区的1BEh处的一个结构体数组(分区表)中。记录了Primary(主分区)和Extended(扩展分区)的起始扇区号和扇区数目。Pa 阅读全文
posted @ 2011-09-23 11:53 Jack204 阅读(1826) 评论(0) 推荐(0) 编辑
摘要: 串输入指令 指令格式1: [REP] INS 目的串 , DX 指令格式2: [REP] INSB 指令格式3: [REP] INSW 功能: INS指令可从DX指出的外设端口输入一个字节或字到由ES: DI指定的存储器中。 输入字节还是字,则由ES: DI目标操作数的属性决定,且根据方向标志位DF和目标操作数的属性来修改DI的值:若(DF)= 0,则DI加1(或加2);否则DI减1(或减2)。 与INS指令相似,INSB 和INSW指令也分别从DX指出的外设端口输入一个字节或字到由ES: DI指定的存储器中,且根据方向标志位DF和串操作的类型来修改DI的值... 阅读全文
posted @ 2011-09-22 18:58 Jack204 阅读(2823) 评论(0) 推荐(0) 编辑
摘要: 以前看这篇文章大内容,估计还是糊头把脑的看不懂。可是最近自己动手写简单的操作系统之后了,便跟明镜似的了,呵呵。对这些理论有比较清晰的认识了。当。。。下面为转:计算机用户在使用计算机的过程中,都会接触到BIOS,它在计算机系统中起着非常重要的作用。一块主板性 能优越与否,很大程度上取决于主板上的BIOS管理功能是否先进。 BIOS(Basic Input/Output System,基本输入输出系统)全称是ROM-BIOS,是只读存储器基本输入/输出系统的简写,它实际是一组被固化到电脑中,为电脑提供最低级最直接 的硬件控制的程序,它是连通软件程序和硬件设备之间的枢纽,通俗地说,BIOS是硬件与. 阅读全文
posted @ 2011-09-21 22:05 Jack204 阅读(780) 评论(0) 推荐(0) 编辑
摘要: 1 每天早上起床后,晚上睡觉前,按摩胃腹部(肚脐和上腹部各50次)。预防胃病复发应避免腹部和脚受凉按摩健胃减少胃病复发在寒冷的冬季,胃部容易受凉,慢性胃炎也易复发。若在空闲时自我按摩胃腹部,就能提高胃动力和免疫功能,减轻胃病症状,减少胃病的复发。 具体方法:两手相叠于上腹部,以胸骨柄剑突下为中心,作顺、逆时针方向按摩各30~50次;然后同法在神厥穴(即肚脐)周围按摩各30~50次。此外,还可按摩两腿足三里50~100次。每日早晚各1次,坚持进行按摩,胃肠部必有反应,或打嗝,或肠鸣,或肛门排气等,这些都是正常的生理反应。2 晚上睡觉前使用热水泡脚。前贤说的"春天洗脚,升阳固脱;夏天洗脚 阅读全文
posted @ 2011-09-20 16:11 Jack204 阅读(532) 评论(0) 推荐(0) 编辑
摘要: struct的声明和面向对象中的类还是有少许区别,现总结struct的声明的用法以备以后复习。1 正规写法,这样便声明了一个类型struct apple:struct apple{...};2 同时声明一个此类型的变量,这样不但有了struct apple这个变量类型,还同时声明了一个变量myApple:struct apple{...}myApple;3 不加变量类型名,只是声明一个变量:struct {...}myApple;4 使用typedef,将struct apple进行重新定义类型:typedef struct apple{...}apple;apple myApple;上面的s 阅读全文
posted @ 2011-09-20 10:04 Jack204 阅读(1405) 评论(0) 推荐(0) 编辑