一、linux历史
20世纪60年代,MIT开发分时操作系统(Compatible TIme-Sharing System),支持30台终端访问主机;
1965年,Bell实验室、MIT、GE(通用电气公司)准备开发Multics系统,为了同时支持300个终端访问主机,但是1969年失败了;
~刚开始并没有鼠标、键盘,输入设备只有卡片机,因此如果要测试某个程序,则需要将读卡纸插入卡片机,如果有错误,还需要重新来过;
~Multics:Multiplexed Information and Computing Service
1969年,Ken Thompson(C语言之父)利用汇编语言开发了FIle Server System(Unics,即Unix的原型)
因为汇编语言对于硬件的依赖性,因此只能针对特定硬件;
只是为了移植一款“太空旅游”的游戏;
1973年,Dennis Ritchie和Ken Thompson发明了C语言,而后写出了Unix的内核
将B语言改成C语言,由此产生了C语言之父;
90%的代码是C语言写的,10%的代码用汇编写的,因此移植时只要修改那10%的代码即可;
1977年,Berkeley大学的Bill Joy针对他的机器修改Unix源码,称为BSD(Berkeley Software Distribution)
Bill Joy是Sun公司的创始人;
1979年,Unix发布System V,用于个人计算机;
1984年,因为Unix规定:“不能对学生提供源码”,Tanenbaum老师自己编写兼容于Unix的Minix,用于教学;
1984年,Stallman开始GNU(GNU's Not Unix)项目,创办FSF(Free Software Foundation)基金会;
产品:GCC、Emacs、Bash Shell、GLIBC;
倡导“*软件”;
GNU的软件缺乏一个开放的平台运行,只能在Unix上运行;
*软件指用户可以对软件做任何修改,甚至再发行,但是始终要挂着GPL的版权;
*软件是可以卖的,但是不能只卖软件,而是卖服务、手册等;
1985年,为了避免GNU开发的*软件被其他人用作专利软件,因此创建GPL(General Public License)版权声明;
1988年,MIT为了开发GUI,成立了XFree86的组织;
1991年,芬兰赫尔辛基大学的研究生Linus Torvalds基于gcc、bash开发了针对386机器的Lniux内核;
1994年,Torvalds发布Linux-v1.0;
1996年,Torvalds发布Linux-v2.0,确定了Linux的吉祥物:企鹅;
二、linux的优缺点
-
linux的优点
开放的学习环境 漏洞快速修补 因为内核只有几百k,因此适合嵌入式系统。
-
linux的缺点:
有些专业软件没有Linux版本,导致有时工作进展不顺利。
三、关于内核
-
git
git实际上是一种开源的分布式版本控制工具,可以使用git对内核进行下载或管理。
使用make配置内核
-
linux没有内存保护机制
内核中发生内存错误,会导致opps。风险会比外面要大一些。
-
不要轻易在内核中使用浮点数
内核并不能完美地执行浮点操作,因此最好不要使用浮点操作。
-
容积小而固定的栈
内核栈的准确大小随体系结构而变。