1. 简单阐述如何写一个好的操作系统内核
写一个好的操作系统内核应从操作系统的五大功能出发,就是处理器管理、存储管理、设备管理、作业管理、文件管理,处理器管理方面涉及处理器资源的分配、进程的选择算法等,存储管理是采用分页存储、分段存储或是段页式存储,还有其它三方面的功能都要考虑,而这五大功能又形成一个整体,相互关联。
当然,要写操作系统的内核,必须对现有操作系统如Linux、Unix、Windows内核还有编程语言如C语言、汇编语言有比较深刻的了解,进行深入的学习。而且写操作系统内核是一个庞大的工程,靠一个人的力量几乎不可能完成,就算是当初写Linux操作系统的主要功臣,那个芬兰的研究生,也是有人一起协助,而且还是在Unix的基础上改写而来。
望采纳~。
2. 如何写系统分析书
想和大家一起来谈谈在软件工程中我们所做的第一步:系统分析。希望我们中国的代码人能吸取更多更好的理论和实际的经验,有符合我们实际情况的系统分析、开发方法、步骤以及文档。系统分析,我个人认为它应该是能体现系统的灵魂性的文档。该文档应有什么内容,表达什么意思是我想在这里与大家探讨的问题。我觉得在系统分析书中应该有以下内容(视项目而定):
2、系统资源说明 对系统所需要的软件、硬件资源进行说明。描述系统所需要的所有的TCO成本。包括人员、时间、设备、系统、一次性投入资金、持续性投入资金这样的所有资源。
3、系统可行性分析 对系统的实施中的资源进行分析,说明投入的合理性和必然性,对其中的所有不可预见性的投入进行合理的量化说明,来说明系统的实施的可行性。
作为开发前期的工作,还应该包括:总体设计和详细设计。
首先,应该考虑几种可能的解决方案。例如,目标系统的一些主要功能是用计算机自动完成还是用人工完成;如果使用计算机,那么是使用批处理方式还是人机交互方式;信息存储使用传统的文件系统还是数据库……
通常至少应该考虑下述几类可能的方案:
低成本的解决方案
系统只能完成最必要的工作,不能多做一点额外的工作。
中等成本的解决方案
这样的系统不仅能够很好地完成预定的任务,使用起来很方便,而且可能还具有用户没有具体指定的某些功能和特点。虽然用户没有提出这些具体要求,但是系统分析员根据自己的知识和经验断定,这些附加的能力在实践中将证明是很有价值的。
高成本的"十全十美"的系统
这样的系统具有用户可能希望有的所有功能和特点。系统分析员应该使用系统流程图或其他工具描述每种可能的系统,估计每种方案的成本和效益,还应该在充分权衡各种方案的利弊的基础上,推荐一个较好的系统(最佳方案),并且制定实现所推荐的系统的详细计划。
3. 电脑如何写系统呢
你说的应该是再DOS下,从安装系统吧?
那要下个系统镜像,用虚拟光驱把镜像解压到硬盘的一个非C盘目录
然后拿98盘或者矮人DOS工具箱进入纯DOS,
执行format C: 执行不了需要下载个for DOS的pqmagic,百度下看看
到你系统所在文件夹,执行smartdrv,这个很重要,没有了你自己要去找,要不然你装系统要花4,5个小时,然后进入i386那个文件夹,执行winnt就可以了,后面的操作跟你使用安装盘操作一样。
希望对你有帮助,不够详细你可以再搜一下别人写的更详细的操作步骤。
4. 怎么写操作系统,或者是根据自己需要更改操作系统
用UltraISO软件可解决你的问题,UltraISO的版本应在9.0以上。
具体方法:1、下载一个系统镜像ISO文件(建议去系统之家下载 )2、启动UltraISO,点菜单击文件"\"打开",选中刚才下载的系统镜像iso文件,点"打开"。将系统镜像iso文件内容载入。
3、插上你的U盘,记下盘符如:H 4、点菜单"启动光盘"\"写入硬盘映像。" 5、"硬盘驱动器"选h盘,“写入方式”选“USBZIP+” 6、点"写入",几分钟后,你的系统光盘内容完整地写入到了你的优盘上。
7、使用,将你的bios设为usbzip启动即可引导你的电脑,系统盘制作成功。祝你好运!注意:做系统盘前别忘了先备份你U盘中的东西。
希望我的回答对你有所帮助。
5. 怎么编写电脑系统
1. 建立开发环境 这一步非常的简单。
将masm613和vc15的压缩包分别解压到e:masm615和e:msvc15目录下。你也可以放到其他目录下,根据自己的情况而定,但是下面用到的编译命令需要作相应的修改。
也不需要添加或修改任何的环境变量。2. IBM PC的启动及当时的内存使用情况 这一部分内容已经是老生常谈了,但又不能不说。
我们只说从硬盘引导的情况。当BIOS经过POST(Power On Test Self)后,将硬盘MBR读到内存0x0000:0x7C00的位置,然后从这里开始执行。
一般的情况,MBR将选择活动分区进行操作系统的启动。在MBR开始执行时,内存使用的情况如下图所示,地址数据用16进制表示:这已经是老掉牙的内容了,但是,在20年前却十分流行。
如果想更详细的了解这方面的内容,找本讲解DOS的书看看吧。我们自己的操作系统将被加载到0x1000:0x0100。
这不是必需或者必然的,是人为选择的,你也可以将其放在0x4321:1234等其他地方。但是,上图中注明有其他用途的内存区域,应该保留,否则,你会后悔的。
3. 开发操作系统 我们自己的操作系统运行在实模式环境下(如果您不知道什么是实模式,也请看看20年前出版的当时非常流行的书,或者直接请教当时的前辈高手)。即使你的电脑是P4的CPU,刚启动时,也只相当于主频较高的8086而已。
但是,没有关系。首先,使用汇编语言写一个框架,文件名是entry.asm:;; entry.asm; Copyright (C) 2004, Tian XiangYuan;.MODEL TINY,C.386p option expr32 option casemap:none cmain PROTO NEAR C.CODE ORG 0100h ;偏移地址 _start:jmp begin nop DB 'TianXiangYuan',0 ;the magic of my os begin:cli mov ax,cs mov ds,ax mov es,ax mov ss,ax mov sp,0FFFFh sti call cmain ;调用C语言写的主函数 mov ax,4c00h ;调用DOS的功能(为了调试),与我们自己的操作系统无关 int 21h 这段代码非常简单,应该没有什么问题。
已经说了,操作系统将从0x1000:0x0100加载,说是无心,实则有意。我们知道,TINY模式的程序,在DOS下运行时,其起始地址就是0x0100,前面的256Byte是参数部分。
如果直接将操作系统在系统启动时加载到0x1000:0x0100,调试时非常麻烦。我们将其起始地址设为0x0100,使其可以在DOS下运行(这也是在程序的最后包含int 21h指令的原因),确认正确无误后,再进行下一步的开发。
下面再看C语言的代码,文件名是main.c:…… static void InitShell() { } void cmain() { InitShell(); TermShell(); } 顾名思义,其中实现了一个简单的shell。因为该程序本身是操作系统的一部分,所以,平时经常使用的一些C库函数,在这里就不能使用了。
总之,一切都要自己动手实现。幸好,在实模式下,几乎所有的设备的驱动都包含在BIOS中了,我们可以直接使用。
否则,连从键盘读一个键值这样的事都需要自己写键盘的驱动程序,实在太难了。也是这个原因,我们自己的操作系统没有将CPU转到保护模式下,有心之人可以试试。
下面的事情几乎都可以使用C语言实现了。第一,初始化显示模式。
系统启动时,显卡已经被初始化成3模式了,就是80X25的彩色模式(除非你的显示器是单色显示器),我们不需要再做什么了。当然,你也可以将显卡设成VGA甚至SVGA模式,只要你的BIOS和显卡支持。
第二,实现一个具有简单交互功能的shell。代码不全,请自己补齐,或参看附件。
/**从键盘读一个字符,如果没有输入,则等待;返回值的低字节为asii码,高字节为键盘扫描码*/ static int getch() { int chr=0; __asm { mov ah,00h int 16h mov chr,ax } return chr; }/**使用TTY模式向屏幕输出一个字符*/ static void putch(unsigned char key) { __asm { mov bh,0 mov al,key mov ah,0Eh int 10h } }#define KEY_BACKSPACE 0x08#define KEY_ENTER 0x0D#define KEY_NEWLINE 0x0A#define KEY_ESCAPE 0x1B static int printk(const char* str,。) { …… //给大家一点空间,自己实现吧 } static void endline() { putch(KEY_NEWLINE); //Line Feed (LF) putch(KEY_ENTER); //Enter (CR) } static char msg_prompt[]="CMD:"; static void deal_cmd(char* cmd_line,int cmd_len) { …… //也请大家自己实现吧,例如,可以实现help,dir,cls,halt等命令 …… //其实,就是字符串比较的过程 } static void TermShell() { char cmd_line[80]={0,}; int cmd_len=0; endline(); printk(msg_prompt,sizeof(msg_prompt)); for (;;) { cmd_line[cmd_len]=getch(); switch(cmd_line[cmd_len]) { case KEY_ENTER:if (cmd_len>1) deal_cmd(cmd_line,cmd_len);//break; case KEY_ESCAPE:cmd_len=0; endline(); printk(msg_prompt,sizeof(msg_prompt)); break; case KEY_BACKSPACE:if (cmd_len>0) { putch(0x08); putch(' '); putch(0x08); cmd_len--; } break; default:putch(cmd_line[cmd_len]); cmd_len++; } } } 更复杂、功能更强大的方法请参考BIOS的相关文档。
也请大家发挥想象力,不断的扩展功能。说心里话,这个“操作系统”比dos还原始!但毕竟是自己的操作系统。
6. 如何写系统引导
1、重启,按Del进入BIOS设置(有的主板按F2进入BIOS),找到Advanced Bios Features(高级BIOS参数设置),按回车进Advanced Bios Features(高级BIOS参数设置)界面。
First Boot Device 开机启动顺序1 。
Second Boot Device 开机启动顺序2。
Third Boot Device 开机启动顺序3。
正常设置是:
First Boot Device 设为HDD-O(硬盘启动)
Second Boot Device 设为CDROM(光驱启动)
Third Boot Device 设为FIOPPY(软驱)
2、当重装系统需从光驱启动时,按DEL进入BIOS设置,找到First Boot Device ,将其设为CDROM(光驱启动),方法是用键盘方向键盘选定First Boot Device ,用PgUp或PgDn翻页将HDD-O改为CDROM,按ESC,按F10,再按Y,回车,保存退出。
7. 系统分析报告该怎么写啊
软件测试分析报告包括内容及大体格式:
1.1编写目的
说明这份测试分析报告的具体编写目的,指出预期的阅读范围。
1.2背景
说明:
a.被测试软件系统的名称;
b.该软件的任务提出者、开发者、用户及安装此软件的计算中心,指出测试环境与实际运行环境 之间可能存在的差异以及这些差异对测试结果的影响。
1.3定义
列出本文件中用到的专问术语的定义和外文首字母组词的原词组。
1.4参考资料
列出要用到的参考资料,如:
a.本项目的经核准的计划任务书或合同、上级机关的批文;
b.属于本项目的其他已发表的文件;
c.本文件中各处引用的文件、资料,包括所要用到的软件开发标准。列出这些文件的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的来源。
2测试概要
用表格的形式列出每一项测试的标识符及其测试内容,并指明实际进行的测试工作内容与测试计划中预先设计的内容之间的差别,说明作出这种改变的原因。
3测试结果及发现
3.1测试1(标识符)
把本项测试中实际得到的动态输出(包括内部生成数据输出)结果同对于动态输出的要求进行比较,陈述其中的各项发现。
3.2测试2(标识符)
用类似本报告3.1条的方式给出第 2项及其后各项测试内容的测试结果和发现。
4对软件功能的结论
4.1功能1(标识符)
4.1.1能力
简述该项功能,说明为满足此项功能而设计的软件能力以及经过一项或多项测试已证实的能力。
4.1.2限制
说明测试数据值的范围(包括动态数据和静态数据),列出就这项功能而言,测试期间在该软件中查出的缺陷、局限性。
4.2功能2(标识符)
用类似本报告4.l的方式给出第2项及其后各项功能的测试结论。
5分析摘要
5.1能力
陈述经测试证实了的本软件的能力。如果所进行的测试是为了验证一项或几项特定性能要求的实现,应提供这方面的测试结果与要求之间的比较,并确定测试环境与实际运行环境之间可能存在的差异 对能力的测试所带来的影响。
5.2缺陷和限制
陈述经测试证实的软件缺陷和限制,说明每项缺陷和限制对软件性能的影响,并说明全部测得的性能缺陷的累积影响和总影响。
5.3建议
对每项缺陷提出改进建议,如:
a. 各项修改可采用的修改方法;
b. 各项修改的紧迫程度;
c. 各项修改预计的工作量;
d. 各项修改的负责人。
5.4评价
说明该项软件的开发是否已达到预定目标,能否交付使用。
6测试资源消耗
总结测试工作的资源消耗数据,如工作人员的水平级别数量、机时消耗等。