计算机核心是CPU和存储器设备.
为了实现计算机获得数据实现数据输入输出等,需要输入输出设备.而输入输出设备是通过计算机的南桥连接到当前系统的,彼此之间有很多总线.各种不同的设备需要的物理总线是不同的.为了协调各种总线之间的工作,以及更好的发挥计算机性能,就有了内核.
内核是来负责硬件资源管理的,内核将计算机的运算能力通过系统调用(system call)来实现的.
系统调用是一种非常底层的实现,因此程序员根据系统调用编程会很麻烦,而且很多东西的功能都是相同的.举例:word和excel都需要打印功能,这两种软件都需要自己做一个打印功能,因此计算机就会出现很多重复的功能,会浪费大量的存储空间.因此操作系统不仅需要包含内核还需要将内核提供的一些系统调用输出出来.这种输出是一种较为高层调用接口来实现.这种接口可以称为库.库也是一种程序,而这种程序是没有执行入口的,只能通过其他程序调用来工作,库存在的环境就是被调用.library:API
Application program interface 应用编程接口,
对于不同的操作系统程序员在开发内部功能和一些细节是各不相同的.由于库的不同导致不同的程序需要不同的操作系统来运行.
如果库的内部实现细节不同,但是调用接口一样.是可以用的
在库的上层就是各种应用程序了,程序可能应用在内核上,也可能是通过库调用来完成的,使用库调用编程会更简单一些.但是如果使用内核调用,效率会更高,获得的权限也会更大.
一些高级黑客,可能会直接使用库调用来编程,甚至会通过硬件来编程.无论有多少应用程序,这些应用程序在操作系统启动时不一定都运行起来.
win系统的主要应用场景:个人桌面,比较低端的IDC机房的server.全球跑的最快的计算机90%以上都使用的是linux系统.
shell分为两种: 图形界面shell GUI
命令行shell(交互式shell) CLI
以上两种都是应用程序,不同的操作系统可能会有不同的替换版本.
如GUI,linux上有3种常见的GUI:gonme、KDE、Xfess
windows上只有一种图形界面shell
没有图形界面情况下,对于计算机的操作会更加简单方便,前提是要建立在懂命令行的基础.入门比较困难
在gui和cli这两个接口下所启动的应用程序,如果该接口关闭了,那么随它启动的应用程序也会关闭的。这些进程之间是有关联关系的
交互式接口启动的程序跟交互式接口有着紧密的关系
内核的功能:
进程管理,协调自己的进程
内存管理
文件系统
网络功能
硬件驱动
安全机制
可以发现没有哪个功能可以帮我们完成特定工作的,因此说这是一个通用软件.
批处理系统:是现代系统的前身
没有现代操作系统时,每个程序都是直接在硬件上运行的.表现为一个个作业
joba1$$$$$$$$$$joba2$$$$$$$$$$
GE(通用电器)、Bell(贝尔实验室)、HIT(麻省理工大学的人工智能实验室)联合研发了一个多任务多用户的系统
Unix
汇编语言
Multics,这个系统在福特公司使用到了2000年后,相对来说还是一个比较成功的系统,在70年还是71年贝尔实验室就推出了该项目,为了参加这个项目,贝尔当时招收了大量的计算机科学家参与这个项目.由于贝尔的退出导致很多工程师都空闲了.
有一个ken汤姆森在该系统上研发了一个游戏Space Travel,在当时是一个伟大的创举.由于贝尔的退出,ken就不能在使用这个系统所提供的计算能力.游戏也无法运行,让其感到很郁闷,所以回去后向领导申请需要一台机器可以让游戏运行起来.当时著名的计算机生产厂商有IBM还有DEC(数字设备公司)
PDP-11
VAX
PDP-7开始继续研究游戏,应用程序的运行必须要依赖内核.之前的Multics就是基于这种层次来完成的,因此ken不得已就基于自己对Multics的理解模仿一个可以运行游戏的内核,并且研发成功了.开始在实验室推广炫耀自己的游戏,同事们产生兴趣的不是游戏而是他所研发的系统.遗憾的是汇编语言的开发是和硬件设备紧密结合的.PDP-7上的系统是不能在新版的PDP-11上运行,在同事的要求下不得不将系统移植到其他设备上,并且效果不错.此后一年这个系统开始在贝尔实验室非常流行.
同事戏谑的将该系统称之为Unics
Unics-->Unix后来才改名的
ken的同事丹尼斯看到ken每次都在辛苦的移植系统,就有了用高级语言重新开发unix,只需要用不同的编译器在不同的平台进行编译就可以完成移植工作.
高级语言对于底层硬件的依赖程度非常低
对B语言(脚本语言),引入了静态变量,指针,以及其他额外机制
B-->C就出现了
在当时高级语言比汇编语言的运行效率至少要低30%
意味着改编后的Unix性能会比较差,但是出于对硬件设备发展前景的信心.就没有犹豫的将系统完成了重新编写.
1974年以丹尼斯为第一署名,ken第二署名.联合在美国计算机通讯杂志发表了一篇论文,讲述了该系统.
导致很多计算机专家都对论文中描述的系统很感兴趣,期望获得一份来学习和使用.
不过贝尔实验室属于ATMT(美国电报电话公司),现在已经拆分了.由于美国的反垄断法导致ATMT不能销售除电话电报外的任何商品,不仅不可以销售,还需在有人需要别的技术时,需要无偿提供.在不得已的情况下,丹尼斯和ken不得不向其他人和机构以及大学(美国加州大学的圣巴巴拉分校、卡耐金梅隆、加州大学的伯克利分校....)提供unix
BSD(Berkeley System Distribution)
大概到76年时,美国工程师有一项福利当作出巨大贡献时,可以带薪休假一年.ken在年休时去了伯克利分校任教,有一个研究生Bill joy,成立了一个叫BSRG(计算机系统研发小组)的团体,该团体专门负责unix的改进修复bug提供新功能等,而且研究工作进行的非常好.76年ken加入了伯克利,使伯克利成为了unix事实上的领头羊.此后不久,军方网络兴起,此时需要一种协议能够在这个系统上传输数据报文.该协议的研究不希望在封闭式的系统上研究
BSRG和Uinx刚好符合这个要求,这个任务就交给了Bill joy领导的这个研究组,经过研发小组的改善增新著名的BSD(Berkeley System Distribution)就产生了.
贝尔实验室的系统名称为:System V
80年代Uinx商业化后,很多公司就开始了PC的生产.当时的uinx只能在PDP系列的硬件设备工作,始终没有往PC兼容机上移植,当时的PDP用的是M68K的CPU,但是PC端使用的都是Intel的8086、8088、80286等CPU.INTEL的CPU由于界面的丑陋性能的低下.导致Unix程序员对于在PC端运行Unix是没有兴趣的.
此时一为教授开发了一个CP/M,当时一台PC的售价在两三万刀,而一个CP/M也是这个价位.由于价格的昂贵导致PC生产商需要一个廉价的解决方案.
81年西雅图出现了一家Microsoft成立了.这家公司成立之初以出售BASIC的编辑器,包装出售Xenix(Uinx)比尔盖茨的好友鲍勃爱伦有一个朋友在西雅图的另一家公司工作,那家公司也有PC,也需要操作系统.有一个程序员用了大概4周时间仿照CP/M写了一个操作系统,比尔盖茨此发现了商机,利用母亲(IBM的董事)的关系找到IBM的董事长沃森,跟其谈判.以出售许可证的方式来合作.此时比尔盖茨还没有可以使用的操作系统,让鲍勃爱伦去买断其朋友开发的系统(5W刀),卖给了IBM.
同时也和鲍勃爱伦对该系统进行了一些改变,由此DOS就产生了......
Jobs也想生产PC,而且根据自己的需要研发一个优于当时的操作系统.图灵41岁时出于自己是同性恋并且被囚禁的事件公诸于众,咬了一口涂有氰化钾的苹果就去逝了.Jobs对图灵的崇拜让其公司使用咬了一口的苹果来做logo。Jobs不是程序员,也不是计算机研究人员.因为有朋友在做这类技术,而且做的很不错.(后来被Jobs利用恶劣手段逼迫离开了公司)
由于apple1使用的是Unix在界面的美观以及,以及性能的强大.让其很成功的作出了销售额.
CPU使用的是PowerCPU
Jobs利用私人关系进入了Xerox公司的实验室PARK,PARK的研究人员在Unix上研究出了世界上第一个鼠标,还有基于图画操作的系统.Xerox公司的领导出于对复印机市场的考虑阻止了这种先进技术产品的面世希望.这个产品被Jobs在实验室发现后,以及其低廉的价格买了一份回去.回去后就开始了秘密研发.
后来就有了Apple2的图形化界面产品面世.这件事对比尔盖茨产生了很大影响.DOS的市场被图形化的Apple2占领了很多,比尔盖茨用了各种办法从Jobs那里得到了一份.开始研究发行了windows并且从Apple公司那里翘走了一家PC厂商.
windos是基于DOS系统二次研发的,理念是基于apple的桌面系统.
DOS本身就是单用户,资源管理器本身非常拙劣.这也是windows蓝屏的重要因素.IOS和硬件捆绑销售的,win系统出售软件和许可证(Licence),这样win2系统就名正言顺的出售给了各种硬件公司.win系统市场顺利扩展,Uinx在不断为版权纷争.
诺基亚在收购后,让BSD删除了所有属于自己的操作系统.
BSD的残存工作人员并没有放弃研发,世界上第一个运行在PC端的Uinx,FreeBSD(PC)就是这些人研发的.还有OpenBSD(安全)、NetBSD(服务)
Apple2以后很多系统核心都是Uinx,即便到现在Apple的内核还是FreeBSD的内核.
斯坦福大学为BSRG提供的性能强劲的CPU指令集,Bill joy联合朋友成立Sun MicroSystem
生产工作站Sun OS由于版权问题后来使用Unix改名Solaris(基于spark硬件的商业版本)
Sun公司对计算机发展作出的贡献:开发语言Java、硬件平台spark、操作系统Solaris等等
由于运营问题2010年被oracle收购了.Sun技术是有希望抗衡IBM的存在.
Bill joy为Unix引入的CShell,对于BSD的流行也作出了很大贡献.
Win95后,蓝屏一直是win系统的最大问题.这个问题可以理解成是遗传病.
DEC:
PDP-11,PDP-7
VAX--->>vms
一个技术的流行程度,对招聘技术人员的成本影响也很大.
DEC被收购后,研发团队被比尔盖茨引入微软.在vms基础上改进win.Windows NT Server到后来的2000、XP就都知道了
视频图片处理功能还是apple还是比较好的
90年代Unix商用后,一些科研机构,学校就不能使用了.荷兰一所高校的教授Andrew(安德鲁)一直使用的是Unix作为教学工具,没有使用权后,只能自己仿照开发一个新系统.Minix很多东西都是用汇编语言来开发的.包括驱动,而且是在自己的计算机上.学生研究人员要使用,需要手动开发驱动程序.比较麻烦,有一些学生(包括赫尔辛基大学的Linus)就自己开发了很多驱动程序.希望添加到系统中.由于教授的不同意。
Linus的外公相当于现在的工信部部长,在Linus20岁生日时,送给linus一个80386的pc机,刚开始使用的Unix不能用了,现在的Minix用着也不方便,只能自己写一个.并公告在电子公告牌上.并通告所有人都可以对系统进行更改,只要说明更改内容就可以了.Linux出现了
80年代麻省理工学院Stallman教授认为程序是全人类思想的结晶,不应该属于某一个流氓公司.Freedom
GNU:GNU is Not Unix
GPL:General Public License 通用公共许可证
任何人都可以使用,学习
Emace:文本编辑器
gcc:GNU C Complier,编译器的质量意味着程序运行效率
bash:
Linux:glibc,gcc
源代码:C程序--->编译成二进制代码(交叉编译)
ABI:Application Binary Interface二进制接口.
不一样的CPU二进制的格式也不一样,一般同品牌的CPU高级都可以向下兼容.
由于linux公开的是内核源码,在使用之前需要编译成二进制代码.对于初学者难度很大,就出现了一些负责编译内核和各种外围应用程序打包封装成可以便捷安装的第三方机构.
RedHat1993美国北卡莱罗纳州
SLS1991年
Debian1992年德国大学生研发的用他妻子的名字和自己名字的组合来命名的
Debian是目前唯一不受商业组织支持的系统,所有的维护者都是自发的互联网从业者.技术最先进,使用难度最高.高级用户
SUSE德国的3个大学生研发-->Novell(Netware)收购,SUSE,OpenSUSE
这些熟知的品牌公司被称为linux的发行商(release)
内核linus负责
软件GUN负责
区别只是加入了自己对操作系统的理解、某些参数的调整、自己公司的logo
kernel:早期很多软件包都是和内核封装在一起,随着软件包的增多,就出现了软件管理器
Debian,dpt
RedHat,rpm
GPL的协议,任何人组织当获得GPL组织的软件源码后无论怎么修改,都要将改的内容公布出来.让后来很多商业公司不敢使用GPL的源码.
LGPL:Lesser
这样的协议阻止了自由的进程,后来将更改成LGPL
GPLv2
GPLv3
在后期的工作中,一定要注意查看这些协议.
BSD
Apache 对于的协议相对来说就宽松些,可以使用更改商业化.只要不去注册版权就可以了
开源:开放源代码
自由:
自由获取,自由修改,自由学习
不论后来的软件遵循是哪个协议,但是linux的内核是遵循GPL协议
自由并不意味免费
Ubuntu:Mint漂亮些
Windows零售的是版权使用费用,RedHat出售的是服务费用以及后期的补丁以及封装费用.
CentOS:Community ENTerprise OS社区版,主要工作是免费封装RedHat补丁源码.
RedHat诞生之初,是个人版.01年9.0就出现了,此时RedHat的系统就已经很稳定了.开始发展企业板,比较著名的版本是从3.0开始.个人版在03年终止任何跟新和支持,并捐献给了FedoraFedora更新速度很快,半年更新一次
Fedora主要是为RedHat进行前期测试的
基于RedHat的二次发行版很多:
Mandriva桌面比较漂亮
包括现在的安卓核心也是linux,运行在linux上的Java虚拟机的一个程序.
内核版本和发行版版本是不一样的
原文:https://www.cnblogs.com/Eleanor-H/p/12839625.html