摘要:
以下是相关的源码资料,需要的同学请自行下载,不需要的请忽视: https://github.com/zhangpeng-fei/os_30 阅读全文
摘要:
harib14a: 接着上一天的内容,我们来思考一个问题:当所有的LEVEL中都没有任务的时候怎么办?采用前面定时器链表中加入“哨兵”的思路,我们加入一个idle任务,去执行HLT。接下来我们只需要将这个闲置任务idle放在最下层的LEVEL就行了。之后修改一下HariMain测试一下结果。 har 阅读全文
摘要:
harib15a: 到这里为止,我们已经能实现窗口的切换了。我们发现所有的窗口都有光标闪烁,而我们只希望可以接受输入的窗口有光标闪烁。这里我们先来修改任务A中的光标闪烁,当按下TAB时,如果让A不现实光标,我们让cursor_c为负值。 harib15b: 1、实现CMD窗口的光标的控制,将光标开始 阅读全文
摘要:
EDFA={< B >|B是DFA,且L(A)=Ф} 证明:EDFA是可判定的语言。 实验方法:编写一个算法/程序,对于任意给定的输入(/确定性有限状态自动机DFA),可以判定EDFA。 有多个测试序列,测试结束于测试文件结束; 每个测试序列相对应一个DFA,其第一行为2个正整数n,m,表示有n个状 阅读全文
摘要:
你的任务,是要将一个给定的NFA转换为一个完全等价的DFA(有限状态自动机等价的意思是识别相同的语言)。这里我们约定自动机识别的字符集为{0,1},初始状态集合为Q0,状态集为{q0,q1,…,qn-1}。 输入第一行只有一个正整数t,表示有t个测试数据(意味着t个NFA)t≤10; 对于每组测试数 阅读全文
摘要:
harib13a: 今天我们要继续折腾多任务,任务的高效管理是操作系统的一个重要的任务。在今天,我们将为系统创建更加完善的任务管理系统,其中包括优先级,任务等级等。 1、任务管理结构体 2、初始化任务管理结构体 3、创建初始化一个任务结构的函数 4、任务运行函数task_run 5、最后,任务切换t 阅读全文
摘要:
harib16a: 这一部分,我们在系统中实现读取文件内容的命令type。在windows中,输入“type 文件名”,在Linux中,输入“cat 文件名”都可以显示文件的内容。我们先来看看如何读取文件本身的内容。这一节的前面部分,笔者花了大量篇幅去寻找文件内容在内存中的位置得到了以下规律: 1、 阅读全文
摘要:
harib12a: 这一部分我们来尝试两个任务的切换。下面我们一步一步的看: 1、定义TSS任务状态段(task statuc segment);定义的一种段,需要在GDT中定义使用 2、尝试两个任务的切换。A和B 3、TR(task register)寄存器:让CPU记住当前运行哪一个任务(GDT 阅读全文
摘要:
harib11a--harib11c: 继续测试性能:我们在harib10h中进行了定时链表结构的改进“消除了移位处理”。下面我们设定490个定时器(它们都被设定启动50天才超时)来测试一下改进的效果。我们首先编写函数set490()来初始化490个定时器,接着测定他们在真机上的运行结果。分别运行5 阅读全文
摘要:
harib10a: 简化字符串的显示:我们发现字符串显示三条语句总是重复出现,并且总是一起出现的。接下来我们把它归纳到一个函数中,这样便于使用。 x,y--位置的坐标 c--字符颜色 (color) b--背景颜色 (back color) s--字符串 (string) l--字符串长度(leng 阅读全文