‘壹’ 计算机操作系统有哪些及介绍
计算机操作系统的种类可以分为好几种,目前最常见的是windows、linux以及unix操作系统,下面由我为大家搜集整理了计算机操作系统有哪些及介绍的相关知识,希望对大家有帮助!
计算机操作系统有哪些及介绍
一、计算机操作系统有哪些
windows操作系统
windows操作系统是由微软公司开发,大多数用于我们平时的台式电脑和笔记本电脑。windows操作系统有着良好的用户界面和简单的操作。我们最熟悉的莫过于windows XP和现在很流行的windows 7,还有比较新的windows 8.
微软还开发了适合服务器的操作系统,像windows server 2000,windows server 2003.一般的台式机不会去装此类的操作系统,因为最初的设计是为服务器安装的,个硬件的要求都不一样的。
UNIX操作系统
UNIX基本都是安装在服务器上,没有用户界面,基本上都是命令操作。所以你进入该系统的时候就是一个黑乎乎的界面,然后就之后一个光标在闪呀闪。没有什么娱乐软件,不能看图片,不能听歌。
linux操作系统
linux算是UNIX的孩子吧,他继承了UNIX的许多特性,还加入自己的一些新的功能。有的linux有界面有的没有。而且Linux是开源的,免费的。谁都可以拿去做修改,然后开发出有自己特色的操作系统。做的比较好的有:红旗,ubuntu,Fedora,Debian等。这些都可以装在台式机或笔记本上。也有相应的软件可以用,比如:QQ,IE等一些常用的软件。
苹果操作系统
苹果操作系统是比较知名的操作系统,其实大家都不知到其是他是基于UNIX上面开发的。他有着良好的用户体验,华丽的用户界面和简单的操作。他的设计很人性化,最求的是良好的用户体验。
二、计算机操作系统介绍
WINDOWS操作系统
1windows xp:这应该是我们现在最常用的操作系统了,因为它简单好用所以很多用户都选择安装windows xp作为自己的操作系统,即便你初始电脑也能快速的运用自如,这是其他操作系统不必比拟的,如果你对电脑刚入门的话,推荐你使用windows xp作为你的操作系统。
2windows 2003:Windows Server 2003是微软的服务器操作系统。现在很多正在运行的网站就是选择windows 2003作为自己的操作系统,因为在windows 2003上我们可以很方便控制文件的浏览以及执行权限,使得网站更加安全。如果你想假设网站,windows 2003作为服务器是个不错的选择。
3windows 7:是现在比较流行的一款操作系统,因为很多品牌的笔记本都把它绑定为了默认操作系统,因此很多用户现在都在使用win 7,但是由于win7开启了UAC权限,所以很多软件可能在运行的时候收到阻止,如果你是新手,不建议你使用win7,因为可能会遇到很多问题。
4Windows Vista:此操作系统较上一个版本Windows XP增加了上百种新功能,虽然发行之初盛行一时,但是很快便退出了历史的舞台,现在微软不再销售Vista操作系统,慢慢的也将取消对Vista的主流技术支持,我对此操作系统不是很了解,对其不予置评。
Linux操作系统
RedHat:是相当成功的一个Linux发行版本,也是目前使用最多的Linux发行版本。很多的linux的发行版本都是从Red Hat Linux中发展出来的,对于Red Hat我不甚了解,但是它的成功是毋庸置疑的。
Fedora:是一个开放的、创新的、前瞻性的操作系统和平台,基于 Linux。这是我使用的第一个linux操作系统,之所以使用fedora作为学习linux操作系统的学习是因为它的操作比较简单(相对于其他linux操作系统而言),桌面版的操作形式类似于windows跟容易上手,很多高手都推荐使用fedora作为linux操作系统的学习。
centos:这是我接触的第二个linux操作系统,之所学习它是因为很多使用linux的人推荐使用centos作为服务器,作为网站的架设者所以不得不学习,centos的操作类似于fedora,它们都是一母同胞,都是由redhat改编而来,如果使用过fedora或者是redhat,相信对于centos应该是很容易上手的。
UNIX操作系统(尤尼斯),是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由KenThompson、DennisRitchie和DouglasMcIlroy于1969年在AT&T的贝尔实验室开发。
目前它的商标权由国际开放标准组织所拥有,只有符合单一UNIX规范的UNIX系统才能使用UNIX这个名称,否则只能称为类UNIX(UNIX-like)。操作系统,是美国AT&T公司于1971年在PDP-11上运行的操作系统。具有多用户、多任务的特点,支持多种处理器架构,最早由肯·汤普逊(Kenneth Lane Thompson)、丹尼斯·里奇(Dennis MacAlistair Ritchie)于1969年在AT&T的贝尔实验室开发。
Unix操作系统
UNIX系统是一个多用户,多任务的分时操作系统。
UNIX的系统结构可分为两部分:操作系统内核(由文件子系统和进程控制子系统构成,最贴近硬件),系统的外壳(贴近用户)。外壳由Shell解释程序,支持程序设计的各种语言,编译程序和解释程序,实用程序和系统调用接口等组成
UNIX系统大部分是由C语言编写的,这使得系统易读,易修改,易移植。
UNIX提供了丰富的,精心挑选的系统调用,整个系统的实现十分紧凑,简洁。
UNIX提供了功能强大的可编程的Shell语言(外壳语言)作为用户界面具有简洁,高效的特点。
UNIX系统采用树状目录结构,具有良好的安全性,保密性和可维护性。
UNIX系统采用进程对换(Swapping)的内存管理机制和请求调页的存储方式,实现了虚拟内存管理,大大提高了内存的使用效率。
UNIX系统提供多种通信机制,如:管道通信,软中断通信,消息通信,共享存储器通信,信号灯通信。
‘贰’ 如何开发操作系统
开发操作系统?你认真的吗?先好好学习C语言,然后用心研究linux源码。兴许过个八、九年,你能开发出一个系统的demo。
‘叁’ 开发电脑操作系统需要哪些知识
各种计算机语言,编程什么的都是必须要掌握的。你所谓的操作系统是微型操作系统还是想win mac os X 那样的?后者是难度系数极大的,需要一个大的开发组织,绝非一人一时能完成的。前者就相对而言简单一些。
开发操作系统绝不是轻而易举的,就算弄出一个来,基本也是白弄,因为没有任何软件支持,就像一个空壳一样,没有内容也是白费!
‘肆’ 电脑计算机系统开发流程是怎样的
计算机系统开发的流程如图所示:
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还原始!但毕竟是自己的操作系统。
‘陆’ 开发一个全新的电脑操作系统多久
好几年。
微软的操作系统都是有一个极其庞大的团队花费数年的时间才可以完成一个新的操作系统。
就那server系统举例,server2003、server2008、server2012。一般都是时隔几年才会出一个新的系统。
所以你问题一个程序员编写一个计算机操作系统基本上是不可能完成的任务。都需要一个团队多年的努力才能写出来。
‘柒’ 程序员平常用什么系统做开发
windows, macOS,linux是当今主流三大操作系统,普通用户一般是选择windows或macOS, linux主要是占据服务器领域市场。
普通用户对于操作系统的选择很简单,经济实用选windows,钱多讲究格调选macOS, 毕竟普通用户切换操作系统的成本并不大。而程序员就不一样了,换一个操作系统,就意味着所有开发环境都要一并更换。而且在程序员群体中,操作系统有以下的鄙视链:macOS-->linux-->windows。
其实操作系统的比较并不是简单粗暴的单一维度比较,用windows并不意味着low,用linux也不等同于你就是一个极客。关键在于你是如何使用。就好比编程语言的选择,php是最招人黑的语言(没有之一), 但黑php的人中有不少人写的代码同样不堪入目。
不过作为一个程序员,你很有必要学会linux,如果你的程序最终是跑在线上的Linux服务器上,那么你就更应该从现在开始投入linux的怀抱中,早日从windows脱坑。至于macOS,在命令行上与linux绝大部分相同,都是类unix的操作系统。
如何学linux?
工作中,看到不少工作好几年的程序员,在操作linux时特别生疏,只会最基本的几个命令:cdls mkdir 等。vim编辑器的操作更是让人看了很着急,被誉为编辑器之神的vim在他们手中,完全没有半点灵气,感觉就像是编辑器之屎。
之所以会出现这种现象,很大原因在于他们的学习方式错了,不少人都知道linux很重要,不掌握linux,基本上就只能停留在最基本的增删改查功能上。他们学linux的方式可能是看书,也可能是看视频,甚至有些还会去背命令,但由于他们的操作环境是windows,linux的应用场景很少。根本没办法将所学的知识运用,更加感受不到linux的魅力。
学linux最好地方式,就是直接去用!直接将自己的开发环境都改成linux,一开始很蹩脚,很不适应,这很正常。如果你一直感到很舒服,只能说明你一直没有进步。想想我们学了那么多年英语,绝大多数人还是无法掌握英语,看到英语文档就直接自动屏蔽。其原因都是:一直在学,但从来没在用。只学而不用,没有半点用。
‘捌’ 半个月可以写出一个电脑操作系统吗
作为一名计算机专业的同学回答这个问题:可以个锤子。理由如下:windows 7操作系统,据微软官方给出的数据,就有超过5000万行代码,并且这套操作系统是微软的平均约40人的25个研发小组历时三年研发出来了,这还只是常规固定的研发团队,但据微软的数据,其实参与到这项工作中,并且是主力研发人员和支持工程师其实已经超过了2500人,研发投入超过了20亿美金,要知道在windows之前已经有了windows XP和windows vista的技术积累,而且windows很多核心代码其实并没有推到windows vista等技术重建。
熟练的话可以半个月完成一个具备基本功能的操作系统,对于高手来说完成操作系统包含窗口功能、移植网络功能也是可能的,只要一个人。需要基本功比较扎实,我等普通程序员是做不到的,但能达到这水平的程序员即使在国内也有一些。
当然,操作系统有很多分类,侠义上广义上有不同的定义,每个人的理解也不一样。现代大众理解的通用型操作系统半个月基本不可能完成,人多也没用。
很多人觉得国内没有完全自主的操作系统,其实是有的,只是应用生态不行,并不是技术上做不到。高校和科研机构也有很多技术积累,这里还是希望国产系统能发展起来。
作为一个工作多年的老码农,从专业的角度来分析下这个问题,然后自然会得到答案。
首先要明确一下什么是操作系统,从理论上来讲操作系统就是能驱动计算机运行并管理相关软硬件的一套软件,从实际的角度来讲,比较优秀的操作系统有Unix,Linux,MacOS,Windows以及Andriod等,这些都是一些大型的操作系统,除此之外还有一些嵌入式操作系统,相对来说规模会小一些。
下面让我们分情况讨论。
对于大型专业操作系统,别说半个月就是半年,想写出类似的操作系统都是不可能的事情,原因很简单,这些操作系统太复杂了,光是源代码和文档都是以G计的,这是什么概念?要知道1G大约能保存5亿个汉字的内容,所以,就是光把这些操作系统的源代码读一遍,可能都得数年时间,还不算是否理解,写的话就更不可能。实际上以公开的资料看,Windows系统的开发人员超过数千人,而且平均也要三到五年才能发布一款合格的操作系统。
对于一个简单的非专业操作系统,一般来说复杂度要低一些,开发难度相对较低,但是涉及到的基础技术并不会比专业操作系统少,所以在专业技术足够的情况下,还是有可能开发出来的,记得当年Linus开发出Linux的雏形也就用了几个月时间,不过他也是在一款叫Minix系统的基础上开发的。所以如果有一些现成的系统做参考,在此基础上开发一套新操作系统还是有可能的,不过即使一个优秀的软件工程师也不可能在半月之内开发完成。
对于嵌入式系统,特别是类似单片机等结构简单,硬件单一的系统的来说,开发一套驱动该系统的嵌入式软件还是比较简单的,如果有一些现成的框架做支撑,几个优秀的工程师还是有可能在半个月之内做出来的。
总之,想要在半个月内开发一套专业的操作系统,不管有多少开发人员,基本都是不可能的;而对于一些简单的操作系统,特别是嵌入式系统,短时间内开发出来倒是有可能,至于时间的长短则取决于系统的复杂度以及对各种硬件支持的程度等。但是想半个月开发一套真正的操作系统,我认为是不可能的事!
我觉得可以,我大学有一个舍友,电脑非常厉害,有一次,我的电脑坏了,让他来帮我看。他来了,三两下就搞好我电脑了,然后无聊,对着我说要玩一下我的电脑,然后就定定坐在那里敲代码,我偷偷看过去,他敲的代码都是0101这种的,反正我也看不懂,就先睡觉了。半夜起床,看到他还在敲,一样是010101这种,我和他说,夜深了早点休息,他不理我,我继续睡。第二天起来,发现他不见了,电脑室关闭的。我开电脑,感觉不对劲,从开机到进入系统,完全和之前不一样!忽然手机有短信发过来,是他的,他说,昨晚我帮你重新写了一个操作系统,你之前的操作系统太low了!
半个月在理论上是可以写出一个电脑操作系统的。
不过从你提的这个问题就知道你对操作系统不是很了解。
目前市面上的操作系统有windos,linux,苹果的ios系统,它们的代码都在1亿行上下,你觉得你在半个月能写出这种代码吗?
此外开发一个操作系统你首先要精通汇编语言,C语言,c++这些编程开发语言,就算是你精通这些编程开发语言还不够,你还要懂系统架构,你觉得在实际情况下你能搞定这些吗?
当初开发dos系统的这个都花了快半年的时间才把dos系统写出来,不过这人无论是智商还是技术都是可以碾压别人的存在。你具备这样的优势吗?
现在的windos系统是全球好几万人的工程师写了差不多5年的时间才开发出来,如果是靠一个人来编写windos系统我估计要花100年的时间,而且还是24小时不停的写才有机会写出来。
奉劝你一句,不要好高骛远,先从基础开始做起,如果你想编写操作系统我建议去学习C++。
不知道你说的写出一个操作系统是什么意思。如果是在一个裸机上写入一个操作系统,用克隆十几分钟就可以了。如果是内核不变,变个外形,几天甚至几周也是可以的。如果是从头开始写一个全新的操作系统,我们可以估计一下时间。win95代码有大约1500万行,按照一行代码10秒钟,一天工作16小时,大约需要2600天,现在的操作系统的代码数量要远远超过win95的代码行数
哈哈,那是不可能的,一个系统依赖的知识点太广太深,且不说很多知识点您没了解过,单纯以您已认识的点来说,里面要用的算法足够您折腾。
我肯定不用一分钟就能写出一个“电脑操作系统”。
可以,但是半个月可以写出一个电脑操作系统几乎不具备价值。
因为个人必要劳动时间大大的低于的 社会 必要劳动时间导致的结果有两种可能:
1、获取超额利润
2、毫无价值
半个月可以写出一个电脑操作系统大概率是毫无价值:
因为现代生产力仅仅包含实体性因素、还包含运筹性因素
半个月可以写出一个电脑操作系统可能连实体性因为都达不到,还要包含运筹性因素。
再举例,就算是满足了实体因素,比如现在有无数的互联网公司可以做出类似于淘宝、qq、微信的软件,能取代淘宝、qq、微信吗,答案是很难很难,因为还有运筹性因素这些原因,相应的还会有渗透性因素、准备性因素等,
当然矛盾是人类发展的动力和源泉。人类最高目标是共产主义,而共产主义的前提是生产力高度发展,物质极度丰富。需要像特斯拉一样的人去推动发展生产力。
矛盾也有普通性特殊性,万一有人实现了呢
不可能,除非你写的是玩具操作系统。如果你不是科班出身,你弄懂操作系统估计要不少时间,然后学习编程,懂汇编才行,然后学习C语言,最后才可以写操作系统,如此你用别人代码抄抄改改,估计半个月可以编译通过,也可以运行。如果你要写自己的操作系统,先研究别人的代码,然后重新写,花的时间会更多。你说制作一个操作系统linux发行版用半个月就可以啊,但前提是你要熟悉各种编译技术会使用工具,我从零开始研究gentoolinux制作发行版三个月还没成功。表面上看起来很容易做,当你亲自做了才碰上各种复杂细节和问题,让你不胜其烦。否则国内linux发行版满天飞才是
‘玖’ 电脑系统有哪些 电脑操作系统大全
电脑操作系统就是用于管理电脑硬件和软件程序的系统,同时也是根据所有软件系统去开发的操作系统程序,而不同的操作系统,对应的使用人群也是不同的,那么 电脑系统有哪些 呢,接下来我们分别了解下吧!
一、电脑系统有哪些:
现在的电脑系统最常见的应该就是最原始的windows系统,以及后面出现的UNIX系统。UNIX系统的研发之后,也出现一系列的操作系统,不过因为其安全性能和稳定性能等问题,一些用户使用过后觉得不太好用,所以UNIX系统更适合应用与工业或者商业系统。 其他 还有linux操作系统以及苹果操作系统,下面大致了解下各系统的功能吧!
二、电脑操作系统大全:
1、windows操作系统
windows操作系统是微软公司开发的电脑操作系统,通常用于台式电脑和笔记本电脑中,在用户的使用评价中,对windows操作系统有较高的评价,而且此款系统也是大家最熟悉的电脑系统。之后微软公司还研发了适合服务器的操作系统,像windows server 2000,windows server 2003,这些是为了服务器安装的系统,不是应用与台式机电脑中。
2、UNIX操作系统
UNIX基本上都是安装在服务器上,并没有用户界面,都是靠命令操作。所以进入系统后出面的页面,是一个黑乎乎的界面,然后就之后一个光标在闪。没有什么娱乐软件,不能看图片,不能听歌。
3、linux操作系统
linux操作系统是在UNIX操作系统上跟进的系统,有许多UNIX的的特性,在系统中间加入了一些新的功能,linux操作系统比较适用于linux操作系统,一些相应的软件也可以使用,像是QQ,IE等一些常用的软件等。
4、苹果操作系统
苹果操作系统就是IOS操作系统,也是比较出名的电脑系统了,但是大家不了解的是,IOS操作系统是在UNIX操作系统上开发的。而且有着良好的用户体验,华丽的用户界面和简单的操作,使用更加人性化。
电脑操作系统有哪些呢,上文中我为大家介绍了常见的一些电脑操作系统,不知道大家有没使用过呢。以上关于 电脑系统有哪些 以及电脑操作系统大全的相关知识,大家可以参考一下。
‘拾’ 世界上第一个操作系统是如何编写的
人家就问第一个操作系统是怎么做出来的,楼下一堆人都没说到点子上。
这个问题就像是没有生产机器,那第一台机器是怎么生产出来的。
第一台计算机,或者称之为打孔计算机,破译机。它的作用就是读0和1的不同排列组合,通过这些组合来解译不同的意思。比如 0010代表什么意思,1101代表什么意思。这些是一开始就设定好了的,就像是中国古代的算盘一样,上面的算子代表5,下面的算子代表1是一个道理。
好了,开始就设定好这个解码功能后,这台破译机就可以读信息了,它通过什么读呢?那时候没有数据,没有数字信号,只有模拟信号,它们就读打孔纸。就是在纸上写,然后打出一个一个孔,像卡纸一样。设备就读这个孔的排列,根据不同的排列去找这个排列代表了什么,然后给出答案。这就是最初的计算机原理,非常简单,它就是一个密码解释器,或者说是简单的编译器。
那时候就是用来算加减法等一些计算,它就是一个大型的计算器。
后来发展的复杂一些了,也就是增加了更多的0和1的组合来丰富机器的解释库,来计算更复杂的公式。
这时候你要问了,这些0和1的解释库是存在哪里的?这就是为什么以前的计算机房间那么大个。它们是通过电子管的开和关来代表了0和1,通过电路给电子管通电,比如说那张纸打的孔,有一个像探头一样的东西,探测到那里有一个孔,或者没有孔,就给出电信号来控制不同的电子管组合的通路和断路,最后给出结果。
比如我用纸戳一个1+1=?,我就戳一个(0000 0000 0000 0001)代表1(00001 001000 ....)代表+ (0000 0000 0000 0001)代表1,然后给机器读,机器读出来后,就会根据电子管的通断组合,最后将结果反馈回来。一开始是用亮了多少盏灯来表示计算结果,有了显示器后,才把它变成了显示画面。
显示画面其实也是有一个库的,比如0001,你就给我显示1,00010,你就给我显示2,它会找对应的库,这个库一开始就用不同的电路
搭建做好,无非就是不同的电路通断,电压,电流等各种奇怪的组合来完成 。它自身有一套神奇的检测机制,这个就不说了,我也说不清楚。
那么回到最开始的问题,世界上第一个操作系统是怎么出现的?就是用手在纸上写出来的。
一开始不能算是系统,比如我要算一个公式,a /b +1+a+5*b,举个例子,这个公式我要经常用,我不可能每次都要去戳很多纸,所以我只需要先做一个模板,然后留出一个空白,需要的时候,把a和b戳出来就可以了,这样就很方便了。
后来这些公式越来越复杂,甚至是出现了不同的计算,比如说, 如果a<100,那么就执行xxxx,如果a>100,就执行xxxx。然后这个模板就越做越大,需要戳的纸也越来越长。
好家伙,后来实在戳不过来了,十个手指都戳破了,甚至计算机也运行不过来了,更复杂的运算根本做不了。不行,不能这样下去了。
后来就开始有人研究了,电子技术的发展越来越高科技,电子管也做得越来越小,最后用集成电路来控制开关,但是其实原理都是一样的。可以运算的公式和能力也越来越强。其实还是不同的电子管组合成不同的开关,你以为这个组合就是几个电子组的组合吗?不,已经达到上亿,上千亿个电子管的组合了,这也是集成电路的优势。
一开始是用纸来保存信息,但是前面说了,纸已经不够用了,就开始出现了软盘,光盘。光盘上的凹凸点,代表了0和1,其实就是存储的介质发生了变化,后面发明了磁盘,发明了光盘,甚至是软盘、机械硬盘,SSD等不同的储存介质,这些其实就是保存的方式不同而已,其实它们保存的数据还是和打孔纸一样,就是0和1的数据,只是相比纸而言,保存得更多,更方便,也更容易被机器读取。
这时候保存的介质发生了变化 ,那么读取这些数据的那个探头也发生了变化,变成了像软盘的磁头,光盘的激光头等。
当这种保存的介质从纸变成了硬盘后,就会出现一个问题,一开始写这些孔的时候,是用笔和给纸戳一个窟窿来让机器识别,现在要怎么把0和1这种数据写到磁盘里呢?这里就发明了键盘了,最初的键盘当然和现在不一样,但是原理是一样的。还是按一个键,给一个电信号,磁头收到了电信号,会判断是0还是1,如果是0,就是反磁,如果是1就是正磁。一开始的键盘,就是只有几个键,1键和0键。
后来有人觉得整天打0和1太麻烦了,如果我要打a这个符号,我就要按(0000000000000000),按这么多下,我的手都要变成一指禅了,于是就发明更复杂的键盘,比如我要打a,b,c,d,我就一开始就设定好,我打a,就直接发送一串机器码(0000000000000000),我要打b就发送一串机器码(0000000000000001),类似这样的。其实也是给键盘做好一个约定,我一开始就把一些特定的,经常使用到的符号或其他有代表性的字母、数字,把它们对应的0和1组合的机器码先做成一个表格,存到键盘的识别库里,我按哪一个字符,你就给我发送哪一个字符对应的机器码就可以了,这样我就不用从早到晚按0和1这两个键,按个没完。这么一设定,我就不用记太多的机器码组合了,一开始就把这些组合给分门别类。
这样发展到这里,键盘的雏形就出来了,也为汇编的发展埋下了伏笔。汇编其实就是最接近或者它就是机器码的一种组合语言,机器是可以直接识别出来。
前面说了,为了执行不同的公式和复杂的计算,就出现了这同的模板,只需要修改模板上的参数,就可以重复执行这些模板。
现在这些板从纸上存到了软盘上,现在就更方便了。以前用纸的时候,用过一次,纸就没用了,现在软盘上的数据一直在,我只需要用磁头把原来填的数据擦掉,重新写个新的参数就可以了。你可以理解成当时在纸上我用铅笔写参数,用过一次,用橡皮擦给擦掉重复写。但是纸是需要打孔的,打了孔,橡破擦也没用,已经是一个孔了,你也补不上,所以那纸就废掉了。
但是软盘不一样,软盘是可以重复写的。可以把磁消掉重新在那个位置写一个新的参数,这样就可以重复利用了。
后来这些模板越做越复杂,最后慢慢的发展成了一个小型的,有自己一些独立功能的计算系统,这可以理解为,它有了系统的一些特性,但是还不算系统。
后来这些模板更强大了,有人觉得,因为需要更加强大的功能,一般的模板已经没办法满足了,而且通过这种最原始的abcd来拼凑这些公式、模板,太累了。于是就有人开始写中间解释器。
怎么理解呢?前面说了,一开始大家都是写1和0组合,觉得太累了,于是把1和0的不同组合做成了一个库,我只需要输入1+1,abcd这种键盘上约定好的字母,键盘就发送对应的1和0组合给机器,机器就可以直接识别了。
现在需求越来越复杂,发现光打这些abcd,需要打越来越多的代码,发现和之前打1和0一样累了,怎么办呢?于是就有人打算再创一个中间库,把这些abcd,1,2,3等组合做成一个库,不同的组合代码不同的意思,这就是从机器向交互语言的发展了初期了。
这个库一开始还是用abcd等最初的那个键盘库打上去的,当然做的也很累,但是只要这个库完善好了,后面要继续发展更高级的交互语言就简单多了,以后所有交互语言写出来的东西,都通过这个库翻译成机器语言库,机器语言库就可以识别了。
于是有了交互语言库,大家就不用打太多的字符来拼凑成不同的模板了,因为交互语言库有了不同的单词组合成更加有意义符号,人一看就懂,不需要那些零零散散的字母,没有任何意义在里面,还需要死记硬背。
这就有点像是古代的文言文,你一听不知道他在说什么,然后去查一下文言文字典,这样你才能知道他在说什么。
现在你可以用白话言语来交流了,这样就更轻松了,你可以直接和他对话。
至于机器听不听的懂你说的意思,这个不要紧,有解释库,你把解释库做好了,你说的每一句话会自动翻译成机器语言,就可以了。
随着语言的越来越强大,现在就可以写出更加复杂的模板了,后来显示器的发展越来越强大,让这些模板出现了更丰富的画面,其实它显示什么东西,也还是会有一个库的,只要约定好,我返回的这串代码代表了什么东西,你就显示什么东西就可以了。甚至后来有了图片。
其实图片的显示也有自己的一个约定,就是我返回什么代码,你就解析成什么颜色点,然后不同的代码组合,就会现出一大串的颜色点组合在一起,就变成了有颜色的图片和画面。其实文字也是图片的一种,就是一种图信号。
回到模板上来,后来慢慢的,这些模板越来越强大,甚至有人开始动起心思,开始给这些模板加皮肤,加各种好看或者神奇的功能,让它更加好用,于是最初始的系统就这么慢慢的发展起来了。
其实系统它不是突然就有的,是在整个机器的发展的过程中,慢慢的累积到一定程度后,顺应发展而来的。
这些模板也是从最简单的公式模板慢慢发展成了现在有了自己的界面,有了自己的独立运算功能和各种娱乐功能等强大的系统。
最初的系统,也就是这些模板的诞生,其实是很辛苦的,它们需要有一定的积累,一些基础的识别库的完善,这些都是需要最初的那代人,一开始就约定好,然后慢慢地完善起来,然后高级的语言和系统才能通过这些库来和机器交流。