第一章、操作系统基础
01_03_操作系统基础
计算机体系结构包括以下几部分:
运算器
控制器
存储器,内存,编址
输出设备
输入设备
北桥 - 高速总线控制器
南桥 - 低速总线总线控制器
硬件架构:
ARM
x86
x64
安腾
alpha
UltraSparc
Power
M68000, M68K
PowerPC
OS:
Windows
Linux
Unix
HP-UX
Solaris
AIX
SCO UNIX
Unixware
OS/2
内核功能:
进程管理
内存管理
文件系统
网络功能
硬件驱动
安全机制
批处理系统
jobs1$$$$$$$jobs2$$$$$$$$
下面来讲一个关于操作系统的故事。
1965年时,贝尔实验室(Bell Labs)加入一项由通用电气(General Electric)和麻省理工学院(MIT)合作 的计划;该计划要建立一套多使用者、多任务、多层次(multi-user、multi-processor、multi-level)的MULTICS操作系统。直到1969年,因MULTICS计划的工作进度太慢,该计划被停了下来。当时,Ken Thompson(后被称为UNIX之父)已经有一个称为"星际旅行"的程序在GE-635的机器上跑,但是反应非常慢,正巧被他发现了一部被闲置的PDP-7(Digital的主机),Ken Thompson和Dernis Ritchie就将"星际旅行"的程序移植到PDP-7上。
MULTICS其实是"Multiplexed Information and Computing Service"的缩写,在1970年时,那部PDP-7却只能支持两个使用者,当时,Brian Kernighan就开玩笑地称他们的系统其实是:"UNiplexed Information and Computing Service",缩写为"UNICS",后来,大家取其谐音,就称其为"UNIX"了。1970年可称为"UNIX元年"。
1971年,Ken Thompson写了充分长篇的申请报告,申请到了一台PDP-11/24的机器。于是Unix第一版出来了。在一台PDP-11/24的机器上完成。这台电脑只有24KB的物理内存和500K磁盘空间。Unix占用了12KB的内存,剩下的一半内存可以支持两用户进行Space Travel的游戏。而著名的fork()系统调用也就是在这时出现的。
到了1973年的时候,Ken Thompson 与Dennis Ritchie感到用汇编语言做移植太过于头痛,他们想用高级语言来完成第三版,对于当时完全以汇编语言来开发程序的年代,他们的想法算是相当的疯狂。一开始他们想尝试用Fortran,可是失败了。后来他们用一个叫BCPL(Basic Combined Programming Language)的语言开发,他们整合了BCPL形成B语言,后来Dennis Ritchie觉得B语言还是不能满足要求,于是就改良了B语言,这就是今天的大名鼎鼎的C语言。于是,Ken Thompson 与Dennis Ritchie成功地用C语言重 写了Unix的第三版内核。至此,Unix这个操作系统修改、移植相当便利,为Unix日后的普及打下了坚实的基础。而Unix和C完美地结合成为一个统一体,C与Unix很快成为世界的主导。
Unix的第一篇文章 “The UNIX Time Sharing System”由Ken Thompson和Dennis Ritchie于1974年7月的 The Communications of the ACM发表。这是UNIX与外界的首次接触。结果引起了学术界的广泛兴趣并对其源码索取,所以,Unix第五版就以“仅用于教育目的”的协议,提供给各大学作为教学之用,成为当时操作系统课程中的范例教材。各大学公司开始通过Unix源码对Unix进行了各种各样的改进和扩展。于是,Unix开始广泛流行。
其中,Berkeley成立的由Bill Joy 领导的Unix研究小组取得的成就比较明显。
然而,20世纪70年代,AT&T公司开始注意到Unix所带来的商业价值。公司的律师开始寻找一些手段来保护Unix,并让其成为一种商业机密。从1979年Unix的版本V7开始,Unix的许可证开始禁止大学使用Unix的源码,包括在授课中学习。(之前由于AT&T公司被美国法院限制不可以销售除电话以外的其它产品,甚至别人向AT&T公司索取时,都不能拒绝,直到贝尔实验室独立了出来)
到了1980年,有两个最主要的Unix的版本线,一个是Berkeley的BSD UNIX,另一个是AT&T的Unix,在这个时候,很显然,竞争最终引发了Unix的战争。在这场战争中,好的是,软件开发人员还是能够得到Unix的源码并对其按照自己的需要和兴致进行裁剪。而不好的是,Unix开始一发不可收拾地开发不停地出现各种各样的变种。
1982年,Joy创建了Sun Microsystems公司并提供了工作站�CSun-1,运行SunOS(Solaris以之后的十年出现)。而AT&T则在随后的几年中发布了Unix System V的第一版,一个具有强大影响力的操作系统,最终造就了IBM的AIX和HP的HP-UX。
正值Unix战争之际,微软公司Bill Gates依靠母亲在IBM任职董事会副主席的关系,取得为其新PC机编写关键的操作系统软件的合作。由于时间紧迫,程序复杂,微软公司以5万美元的价格从西雅图的一位程序编制者Tim Paterson(帕特森)手中买下了一个操作系统QDOS的使用权,在进行部分改写后提供给IBM,并将其命名为Microsoft DOS(Disk Operating System,磁盘操作系统)。
另一家出名的电脑公司苹果,从施乐公司买进一个结合了鼠标的图形操作系统,该产品被认为会侵害施乐公司复印机业务。
微软利用与苹果合作的关系,抄袭了这款操作系统,发行了windows 1.0。但依然基于DOS,非常容易崩溃。微软从DEC雇佣了一批人员使用DEC的一个操作系统框架开发了新一代系统Window NT。
Unix收费后,Andrew开发的 Minix(一种基于微内核架构的类UNIX计算机操作系统)开始流行,Minix最有名的学生用户是Linus Torvalds,他在芬兰的赫尔辛基大学用Minix操作平台建立了一个新的操作系统的内核,他把它叫做Linux。
80年代,Stallman 发起了GNU计划,GNU是“GNU's Not Unix”的递归缩写。加入GUN的软件都是自由并开源的,接受GNU通用公共许可证(GNU General Public License,GPL)。但发布的软件都依赖于Unix,这和GUN is Not Unix的定义严重不符。Linux诞生时就是在GPL条款下发布。1992年Linux与其他GNU软件结合,完全自由的操作系统正式诞生。GPL规定使用了GPL的软件后,你自己的软件也必须开源,这限制了GPL的普及,后来LGPL的出现改变了这一状况(LGPL: Lesser General Public License),GNU的软件有:
Emacs: 文本编辑器
gcc: GNU C Complier
bash:
Linux:glibc, gcc,
GNU/Linux
自由软件中自由是指:
自由获取,自由修改,自由学习
Linux发行版
GNU/Linux都是以源的形式发布,需要自行编译,使用起来十分复杂,门槛太高。然后就有了Linux发行商。
RedHat
SLS
Debian
SUSE --> Novell (Netware), OpenSUSE
Ubuntu: Mint
CentOS: Community ENTerprise OS, 社区版红帽
Fedora: 个人版红帽,RedHat公司已经将个人版红帽交给了Fedora社区
两大软件包管理软件:
Debian, dpt
RedHat, rpm
RedHat开机配置
linux ip=172.16.X.1 netmask=255.255.0.0 gateway=172.16.0.1 dns=172.16.0.1 ks=http://172.16.0.1/class.cfg
Linux内核版本和RHEL版本号可不一样:
Linux: 0.1, 1.0, 2.0, 2.2, 2.4, 2.6, 3.0, 3.7
RHEL 3.0, 4.0, 5.0, 6.0