当前位置:首页 » 手机资讯 » 系统怎样编写
扩展阅读
新鲜泡椒怎样做好吃 2024-10-20 07:21:41

系统怎样编写

发布时间: 2022-01-17 17:30:54

❶ 怎样自己写一个简单的操作系统

只要你学过汇编和C,只满足于写个“简单的操作系统",一两天就能搞定。

随便把你写过的小程序,用直接写硬盘软件(或者自己编一个,调用winapi的WriteFile函数就可以),写进硬盘/U盘引导区。记住,起始地址是7c00。

这就好了。注意,引导区只有440个字节给你用,程序不能太大,所以这部分基本要用汇编写。440字节后面是硬盘/U盘分区信息,不可以乱动。乱动以后bios可能没法识别硬盘/U盘。
引导区最后两个字节必须是55AA,不过一般你不用管,硬盘/U盘格式化的时候都已经给你写好了。

这样你的程序就在开机的时候直接运行了。

想调用大程序也没问题,你需要写个不超过440字节的程序,负责把第二个扇区的内容载入内存并执行,由第二个扇区的代码负责把所有代码载入内存。后面的部分用C写或者别的高级语言写都没什么问题了。

❷ 怎样编写自己的操作系统

全世界才十几个操作系统,你要自己编写吗?

❸ 怎么编写电脑系统

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还原始!但毕竟是自己的操作系统。

❹ 怎么写操作系统

编写操作系统是一个很复杂的系统工程,需要对系统硬件有一定的了解,需涉及到很多的知识面,非一日一人之功;
但是,如只实现操作系统的简单功能,如任务调度、同步机制、中断管理等,还是比较简单的,尤其是一些针对嵌入式领域的操作系统还是比较短小精悍的,可以作为参考,如ucOS便是一个源码开放的操作系统,可参考之;另,《自己动手写操作系统》一书很不错,可作为参考。

❺ 如何编写操作系统

编写操作系统
.
有人可能担心自己既没有学过计算机原理,也没有学过操作系统原理,更不懂汇编语言,

对C语言也一知半解,能写操作系统吗?答案是没问题。我将带大家一步一步完成自己的操作系统。

当然如果学一学上述内容再好不过。

首先要明确处理器(也就是CPU)控制着计算机。对PC而言,启动的时候,CPU都处在实模式状态,

相当于只是一个Intel 8086处理器。也就是说,即使你现在拥有一个奔腾处理器,它的功能也只能

是8086级别。从这一点上来讲,可以使用一些软件把处理器转换到着名的保护模式。只有这样,

我们才可以充分利用处理器的强大功能。

编写操作系统开始是对BIOS控制,取出存储在ROM里的程序。BIOS是用来执行POST(Power On Self Test,

自检)的。自检是检查计算机的完整性(比如外设是否工作正常、键盘是否连接等)。这一切完成以后,

你就会听到PC喇叭发出一声清脆的响声。如果一切正常,BIOS就会选择一个启动设备,

并且读取该设备的第一扇区(即启动扇区),然后控制过程就会转移到指定位置。

启动设备可能是一个软盘、光盘、硬盘,或者其它所选择的设备。在此我们把软盘作为启动设备。

如果我们已经在软盘的启动扇区里写了一些代码,这时它就被执行。因此,我们的目的很明确,

就是往软盘的启动扇区写一些程序。

首先使用8086汇编来写一个小程序,然后将其拷贝至软盘的启动扇区。为了实现拷贝,要写一个C程序。

最后,使用软盘启动计算机。

需要的工具

● as86:这是一个汇编程序,它负责把写的代码转换成目标文件。

● ld86:这是一个连接器,as86产生的目标代码由它来转换成真正的机器语言。

机器语言是8086能够解读的形式。

● GCC:着名的C编程器。因为我们需要写一个C程序将自己的OS转移到软盘中。

● 一张空软盘:它用于存储编写的操作系统,也是启动设备。

● 一台装有Linux的计算机:这台机器可以很旧,386、486都可以。

在大部分标准Linux发行版中都会带有as86和ld86。在我使用的Red Hat 7.3中就包含有这两个工具,

并且在默认的情况下,它已经安装在机器里。如果使用的Linux没有这两个工具,可以从网上下载,这两个工具都包含在一个名为bin86的软件包中。
.
http://wenku..com/link?url=CYgjm-tYrgwxnXGsu--
.
参考链接: http://blog.csdn.net/magictong/article/details/6164008
.
http://www.cnblogs.com/wangshuo/archive/2011/11/26/2264540.html
.
http://download.csdn.net/detail/woshiyioqizuo/5883187

❻ 怎么写自己的系统

如果是你自己用,安装完软件之后做个GHOST就可以了!

❼ 操作系统是如何编写的用什么语言编写的

windows是一个大型的系统软件,分成很多个部分,由很多名程序员分别完成的。每个程序员可能都有自己擅长的一种编程语言,各自使用自己擅长的语言(可能是c、c++、vb…………)编写程序完成自己所负责的那部分程序功能,然后再编译,组合成最后的windows操作系统软件。整个过程类似工厂里面生产大型设备,各自完成不同部件之后再组装。
根据几年前微软在美国公布的内容,windows本身属于微内核系统,windows98总共大概不到10万行代码(具体是2万还是5万记不清了),而windows2000则已经有20余万行代码,其中80%是用c++编写,其余部分有c和汇编,底层接口用汇编编写。
微内核系统从概念上是指“只包括操作系统的基本功能,例如内存管理和进程管理等等”,就连对各个文件系统的支持也不算在内,不过具体windows是不是这样设计我就不清楚了。
所以一个微内核系统的操作系统能够有20万行代码已经很多了。
之所以微软选择了c++而不想linux一样选择c,其根本原因就是windows操作系统本身是微内核系统,所以扩展性及以后的维护要求非常重要,所以c++的类的概念就能在这里很好的利用,但是毕竟c++的效率不如标准c及汇编,所以在一些明显以效率为重的地方用的还是标准c及汇编。
编写完毕后,windows上的其他用户态程序(包括所有驱动程序、计算器、游戏等等所有你现在拿鼠标能够操作的东西)另行开发,例如:扫雷游戏就是用vb写的。

❽ 如何编写自己的操作系统

是修改oem信息吗?

1.打开C:\Windows\System32,然后找到OemLogo.bmp,把你想要替换的图片和这个文件替换就可以了。
2.如果你还想修改更多的ome信息,可以通过注册表来修改。
打开注册表,里面找[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation]
"Manufacturer"="电脑品牌 "
"Model"="电脑型号"
"SupportURL"="电脑品牌的官网 "
"Logo"="系统盘符:\Windows\system32\oobe\oemlogo.bmp"

❾ 怎样学会编写系统软件,需要哪些资料。

毫无疑问。想编写系统一个人是绝对不够的。你需要一个团队,即便是绝对简单的系统,你个人的力量也是有限的。
当然就写软件本身来说,就是一个积累的过程,所谓,积少成多嘛。现在的软件业很大程度上来说都是相互抄袭了,会写不如会粘,但是这样的软件行业是没有前途的缺乏创新与挑战。
就系统软件也分很多种的,比如,计算机系统,一般的手机MTK系统,还有什么智能机系统,单片机系统,等等。。。。都是对底层代码的编写。就是说这个是跟电脑本身的结构相关的。

最后说主题了。要想些系统软件,你必须掌握的大该有:硬件系统,CPU原理,储存原理,接口等以系列的系统组成相关知识外,必须要掌握的编程就是汇编了。
汇编很难。是面向机器的语言,很难懂。但是只要有爱都不是问题。不是说,坚持才是通向成功的唯一捷径吗?

补充一点:你需要英语基础。

❿ 电脑系统是如何制作的

开机放入光盘,按Del进BIOS,找到Advanced Bios Features(高级BIOS参数设置)按回车进Advanced Bios Features(高级BIOS参数设置)界面。找到First Boot Device ,用PgUp或PgDn键,将HDD-O(硬盘启动)改为CDROM(光驱启动),按ESC,按F10,按Y,回车,保存退出。 这时要注意观察,启动时计算机会先检测光驱,屏幕下面出现一行字符,意思就是让你按任意键进入光盘启动。按一下,听到光驱开始疯转,装系统的过程就正式开始了! 装系统中: 看屏幕中的提示,因为都是中文的所以几乎不需要介绍什么。首先需要用户选择是安装新的操作系统还是修复,选择安装新的操作系统,然后按F8同意那些协议,出现盘符选择界面。 用键盘上下键移动光标至你要安装的盘符上,按“D”键,系统会提示说删除该盘将会删除所有资料,不管它,接着按“L”键再确定删除。完成后屏幕返回到刚才的界面。然后选择“在当前盘安装WindowsXP”(大概意思,原文不记的了)后按回车,系统提示要格式化该盘。选择“快速NTFS方式”格式化,此时出现格式化界面,稍候等进度条到100%时计算机开始自动装入光驱中的安装文件,大概时间8分钟左右(视光驱速度而定),完成后系统自动重启。 注意,此时要将光驱里的安装盘取出,为的是避免重启后又自动读取。 重启后再次进入安装界面,此时将安装盘再放入后安装继续,几乎不需要你做任何设置,点“下一步”就可以。不过中间有一个输入序列号的过程得动动手。 这个过程大概40分钟左右,其间屏幕会显示一些关于windowsXP的相关功能信息,可以留意一下。完成后系统提示将安装盘取出。你拿出来后,重启,顺便进BIOS将开机启动顺序改回至硬盘启动,基本上就完成安装过程了! 装系统后: 一般在进入系统后常用硬件的驱动都已经安装好,但不是全部。这时就需要用户自己来安装。首先查看机器哪些驱动未安装!右键点击“我的电脑”,选“属性”,在“硬件”标签里点击“设备管理器”,凡是在设备前面有一个问号图标的均表示该设备有问题。双击,按上面的提示将驱动安装好。直到前面的“问号”全部消失为止。 需要装的驱动一般有显卡、声卡、网卡、猫,一些比较高级的机器还有红外、蓝牙等适配器的驱动。 下面就是对系统的一些优化设置,如果你的机器配置不高,建议按我说的做。 重启, 1> 右键单击屏幕,选择“属性”。点击“外观”标签,在“外观与按钮”的下拉菜单中选择“Windows经典样式”,然后在“设置”标签里,按个人喜好调整屏幕分辨率大写,一般为1024*768。如果你用的是普通CRT显示器,需要再点“监视器”标签,将“屏幕刷新频率”调整至“85赫兹”,点确定!屏幕看起来是不是舒服多了? 2> 右键单击任务栏,选择“属性”,在“任务栏”标签项中将“显示快速启动”前的复选框选中。然后再点击““开始”菜单”标签,将菜单类改成“经典“开始”菜单”,点“确定”,看看现在的样子是不是要舒服点呢?( 3> 右键单击我的电脑,选择“高级”标签。单击性能项里的“设置”按钮。在视觉效果项里先点击“调整为最佳性能”,然后在下面的复选项里选中“在文件夹中使用常见任务”。
赞同11|评论(2)