1.计算机体系结构
计算机主要有五个部分组成:运算器、控制器、存储器、输入设备、输出设备。
运算器和控制器组合在一起,统称为中央处理器(CPU,Central Processing Unit)。
储存器,就是我们常说的内存,通过编制。
2.计算机启动【自举(bootstrapping)】
2.1硬件自检(POST)
接通计算机的电源,系统将执行一个自我检查的例行程序,通常称为上电自检(POST,Power Self Test)。
完整的POST自检包块对CPU、系统主板、基本的640KB内存、1MB以上的扩展内存、系统ROM BIOS的测试;CMOS中系统配置的校验;初始化视频控制器,测试视频内存、检验视频信号和同步信号,对CRT接口进行测试;对键盘、软驱、硬盘及CD-ROM子系统作检查;对并行口(打印机)和串行口(RS232)进行检查。
自检中如发现有错误,将按两种情况处理:对于严重故障(致命性故障)则停机,此时由于各种初始化操作还没完成,不能给出任何提示或信号;对于非严重故障则给出提示或声音报警信号,等待用户处理。
当自检完成后,系统转入BIOS的下一步骤,将ROM中的程序映射到RAM内存中,并执行寻找操作系统进行启动,然后将控制权交给操作系统。
2.2启动顺序(Boot Sequence)
BIOS有一个外部存储设备的排序,叫做启动顺序(Boot Sequence)。BIOS根据启动顺序确定下一阶段的启动程序。
硬件自检完成后,BIOS把控制权转交给下一阶段的启动程序。
2.3主引导记录(MBR,Master boot record)
BIOS按照“启动顺序”键控着权转交给排在第一位的存储粗设备。这是计算机读取该设备的第一个扇区,也就是对前面的512B,这512B就是所谓的主引导记录(MBR)。
如果这512B的最后两个自己是0x55、0xAA,表明这个设备可以用于启动。否则这个设备不能启动,则将控制权转交给“启动顺序”中的下一个设备。
MBR主要作用是告诉计算机到硬盘的那一个位置去找操作系统。
001-446:调用操作系统的机器码
447-510:分区表(Partition table)
511-512:MBR签名(0x55、0xAA)
2.4分区表(Partition table)
分区表只有64B,分为4项,每项16B。注:一个硬盘最多只能分4个一级分区。
01:若为0x80,则该分区为激活分区,控制权交给这个分区。四个分区只能有一个激活
02-04:主分区第一个扇区的物理位置( 柱面,磁头,扇区号)
05:主分区类型
06-08:主分区最后一个扇区的物理位置
09-12:该主分区的第一个逻辑地址
13-16:主分区的扇区总数,一个分区的扇区总数不可以超过2的32次方。
2.5硬盘启动
这是计算机的控制权转交给硬盘的某个分区,有三种情况
2.5.1卷引导记录(VBR,Volume boot record)
计算机读取激活分区的第一个扇区,也就是卷引导记录,VBR告诉计算机操作系统在这个分区的位置,然后计算机就会加载操作系统。
2.5.2扩展分区和逻辑分区
由于硬盘容量的增加四个主分区已经不够了,因此规定有且仅有一个分区可以被定义成扩展分区(Extended partition)。在扩展分区下分成多个分区,叫逻辑分区(Logical partition)。
计算机先读取扩展分区的第一个扇区,叫“扩展引导记录”(EBR,Extended boot record)。EBR里包含一张64B的分区表,包含最多两项(两个逻辑分区)。计算机接着读取第二个逻辑分区的第一个扇区,在从分区表里找到第三逻辑分区,以此类推。直到某个逻辑分区只有一个分区项为止。
2.5.3启动管理器
计算机读取MBR前446B之后,不再把控制权交个某一个分区,而是运行事先安装的“启动管理器”(boot loader),由用户选择启动哪一个操作系统。
2.6操作系统
控制权转交给操作系统之后,操作系统的内核首先被载入内存。
以linux为例,先载入/boot目录下的kernal,内核加载成功后,第一个运行的程序是/sbin/init。他根据配置文件(/etc/initab)产生init进程。init进程加载系统的各个模块,比如窗口程序和网络程序,直至执行/bin/login程序,跳出登录界面,等待用户输入用户名和密码。
操作系统启动成功。
3.硬件架构
3.1ARM
ARM处理器是Acorn计算机有限公司(ARM公司)面向低预算市场设计的第一款RISC微处理器。更早称作Acorn RISC Machine。ARM处理器本身是32位设计,但也配备16位指令集,一般来讲比等价32位代码节省达35%,却能保留32位系统的所有优势。
3.2x86
X86是由Intel推出的一种复杂指令集,用于控制芯片的运行的程序,现在X86已经广泛运用到了家用PC领域。
3.3x64/x86_64
“x86-64”,有时会简称为“x64”,是64位微处理器架构及其相应指令集的一种,也是Intel x86架构的延伸产品。“x86-64”1999由AMD设计,AMD首次公开64位集以扩充给IA-32,称为x86-64(后来改名为AMD64)。其后也为英特尔所采用,现时英特尔称之为“Intel 64”,在之前曾使用过Clackamas Technology (CT)、IA-32e及EM64T。外界多使用"x86-64"或"x64"去称呼此64位架构,从而保持中立,不偏袒任何厂商。
3.4安腾
安腾处理器Intel安腾( Itanium)处理器应该说是大多数人不是很了解的处理器之一。基于它专为要求苛刻的企业和技术应用而设计,是瞄准高端企业市场的,并且相对Intel其他系列的处理器,价格昂贵,即使最便宜的型号价值仍然超过1000美元,对它不了解也就不出奇了。
3.5alpha
DEC Alpha, 也称为Alpha AXP,是64位的 RISC 微处理器,最初由DEC公司制造,并被用于DEC自己的工作站和服务器中。作为VAX的后续被开发,支援VMS操作系统,如 Digital UNIX。不久之后开放源代码的操作系统也可以在其上运行,如Linux 和 BSD 。Microsoft 支持这款处理器,直到Windows NT 4.0 SP6 ,但是从Windows 2000 beta3 开始放弃了对Alpha的支持。
3.6UltraSparc
在64位UltraSPARC III处理器方面,SUN公司主要有3个系列。首先是可扩展式s系列,主要用于高性能、易扩展的多处理器系统。目前UltraSPARC IIIs的频率已经达到750MHz。还有UltraSPARC Ⅳs和UltraSPARC Ⅴs等型号。其中UltraSPARC Ⅳs的频率为1GHz, UltraSPARC Ⅴs则为1.5GHz。其次是集成式 i系列,它将多种系统功能集成在一个处理器上,为单处理器系统提供了更高的效益。已经推出的UltraSPARC III i的频率达到700MHz,未来的UltraSPARC Ⅳi的频率将达到1GHz。
3.7Power
POWER是Performance Optimization With Enhanced RISC的缩写,是最通用的几种CPU体系结构之一,主要指:
1. 一种由IBM公司设计开发的一种基于RISC架构的指令集体系构架(ISA),被称为POWER ISA。
2. 是实现了POWER ISA的处理器系列的名称。POWER系列处理器在不少IBM服务器、超级计算机、小型计算机及工作站中。
3.8M68K
m68k是摩托罗拉的68000型cpu。
3.9PowerPC
PowerPC(PPC,Performance Optimization With Enhanced RISC –Performance Computing )是一种精简指令集(RISC)架构的中央处理器(CPU),其基本的设计源自IBM(国际商用机器公司)的POWER(Performance Optimized With Enhanced RISC;《IBM Connect电子报》2007年8月号译为“增强RISC性能优化”)架构。POWER是1991年,Apple(苹果电脑)、IBM、Motorola(摩托罗拉)组成的AIM联盟所发展出的微处理器架构。PowerPC是整个AIM联盟平台的一部分,并且是到目前为止唯一的一部分。但苹果电脑自2005年起,将旗下电脑产品转用Intel CPU。
4.操作系统(os,Operating System)
4.1UNIX
4.2Linux
4.9OS/2 OS/2是由微软和IBM公司共同创造,后来由IBM单独开发的一套操作系统。OS/2是"Operating System/2"的缩写,是因为该系统作为IBM第二代个人电脑PS/2系统产品线的理想操作系统引入的。在DOS于PC上的巨大成功后,以及GUI图形化界面的潮流影响下,IBM和Microsoft共同研制和推出了OS/2这一当时先进的个人电脑上的新一代操作系统。最初它主要是由Microsoft开发的,由于在很多方面的差别,微软最终放弃了OS/2而转向开发Windows“视窗”系统。最大规模的发行版本是于1996年发行的OS/2 Warp 4.0,取名自星舰迷航记电影中的曲速引擎(Warp drive)。
5.操作系统发展史
随着计算机硬件技术的发展,主要是中、小规模集成电路,计算机对于操作系统的需求越来越高。
1964年,由美国通用电气公司(GE)、贝尔实验室(Bell)麻省理工学院(MIT)用汇编语言共同研究开发的Multics(MULTiplexedInformation and Computing System),一套安装在大型主机(MainFrame)上多人多任务的操作系统。
1969年,因MULTICS计划的工作进度过于缓慢,最后终究遭裁撤的命运,贝尔实验室退出此计划。当时,Ken Thompson撰写一个称为“星际旅行”(Space Travel)的游戏程序。贝尔实验室后来撤出Multics计划。Thompson只好找到一台老式PDP-7机器,重写了他的“star travel”游戏。在开发Multics的期间,Thompson创造出了名为Bon的程式语言(B语言)。Thompson花了一个月的时间开发了全新的操作系统,UNiplexed Information and Computing System(UNICS),可执行于PDP-7机器之上,后来改称为UNIX。第一版的Unix就是基于B语言来开发的。
1971年,Bon语言在进行系统编程时不够强大,所以Thompson和Dennis Ritchie对其进行了改造,共同发明了C语言。
1973年Thompson和Ritchie用C语言重写了UNIX。安装于PDP-11的机器之上。
注:装了UNIX的PDP-11最早被安装在Bell Lab里供大家日常使用。很快大家就发现Ken爷爷总能进入他们的帐户,获得最高权限。Bell Lab里的科学家都心比天高,当然被搞得郁闷无比。于是有高手怒了,跳出来分析了UNIX代码,找到后门,修改代码,然后重新编译了整个UNIX。就在大家都以为“这个世界清净了”的时候,他们发现Ken爷爷还是轻而易举地拿到他们的帐户权限,百思不解后,只好继续郁闷。谁知道这一郁闷,就郁闷了14年,直到Ken爷爷获得图灵奖之后,发表自己获奖感言时道出个其中缘由。原来,代码里的确有后门,但后门不在Unix代码里,而在编译Unix代码的C编译器里。
1975年,Thompson 受邀回母校Berkeley当客座教授。一位密执安州大学的毕业生来到了Berkeley,他的名字就是Bill Joy。Joy 和同学 Chuck Haley (tar 就是他写的)喜欢一起泡在计算机房里面,Thompson也时常插上一脚。他们成功地改善了 Pascal 的解译与侦错的能力,同时还提升了解译与执行的速度。
1976 年夏天,Thompson 结束了他的休假回到 Bell Labs。此时的 Joy 和 Haley 已经开始着手探索UNIX kernal,甚至还做了一些修改。1977 年初,Joy 制作了一卷磁带,上头写着"Berkeley Software Distribution.",这就是 BSD。其中包含新的 Pascal compiler 与 ex 编辑器。
1981年,Microsoft公司与SCO公司联合开发的基于INTEL80x86系列芯片系统的微机UNIX版本——XENIX 是。由于开始没有得到AT&T的授权,所以另外起名叫XENIX,采用的标准是AT&T的UNIX SVR3 (System V Release 3)。
1980-1981年,西雅图电脑产品公司程序员蒂姆·帕特森(Tim Paterson)花费了四个月时间编写出了86-DOS操作系统。
1981年7月,微软以五万美元的代价向西雅图公司购得本产品的全部版权,并将它更名为MS-DOS。随后,IBM发布了第一台个人计算机,当时采用的操作系统是西雅图公司的86-DOS 1.14,但微软很快改进了MS-DOS,并使它成功地成为IBM PC采用的操作系统。
1981年7月成为IBM PC上 第一个作业系统。
1981年8月12日,正式发布MS-DOS 1.0和PC-DOS 1.0。
1976年4月1日,乔布斯、沃兹及乔布斯的朋友龙·韦恩签署了一份合同,决定成立一家电脑公司。
1976年7月,一个偶然的机遇给“苹果“公司带来了转机。零售商保罗·特雷尔(Paul Jay Terrell)来到了乔布斯的车库,当看完乔布斯演示完电脑后,决定订购50台整机,这是做成的第一笔生意。
1977年4月,乔布斯在美国第一次计算机展览会展示了苹果Ⅱ号样机。
1973年4月,第一个可操作的Alto电脑在XeroxPARC(PaloAltoResearchCenter)完成。Alto是第一个把计算机所有元素结合到一起的图形界面操作系统。它使用3键鼠标、位运算显示器、图形窗口、以太网络连接。
1981年,施乐推出了他们的“施乐之星(Xerox Star)”,这台电脑运行着用户图形界面,鼠标,位图显示,窗口以及桌面概念,但它运行缓慢。
1979年12月,乔布斯和同事们参观了施乐PARC的研究成果,看到这些研究时,苹果的那群人都惊呆了,而乔布斯更是兴奋的跳来跳去,手舞足蹈,特斯拉回忆说,他不知道他有没有看清楚整个演示,但乔布斯问了很多问题,而且每展示一部分,乔布斯都会发出惊叹!这是乔布斯开始图形操作系统
1984年1月24日,苹果在迪安扎社区学院的弗林特礼堂举行发布会,大会上发布了具有图形用户界面的Macintosh。
AT&T 的 USL 在 1991 年正式转变了一家公司。
1993年,微软收购了DEC公司基于VAX的VAX-vms操作系统,将其融合到自身的dos系统中,开发出了windows NT((New Technology)。
BSD分支为FreeBSD(PC) OpenBSD(安全) NetBSD(服务)。
Bill Joy成立Sun MicroSystem公司。Sun的操作系统最初叫做SunOS,后来SunOs改名为Solaris;
GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。为保证GNU软件可以自由地“使用、复制、修改和发布”,所有GNU软件都有一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,GNU通用公共许可证(GNU General Public License,GPL)。即“反版权”(或称Copyleft)概念。
1985年Richard Stallman又创立了自由软件基金会(Free Software Foundation)来为GNU计划提供技术、法律以及财政支持。
1990年,GNU计划已经开发出的软件包括了一个功能强大的文字编辑器Emacs 。GCC(GNU Compiler Collection,GNU编译器集合),是一套由 GNU 开发的编程语言编译器。以及大部分UNIX系统的程序库和工具。唯一依然没有完成的重要组件就是操作系统的内核(称为HURD)。
1991年Linus Torvalds编写出了与UNIX兼容的Linux操作系统内核并在GPL条款下发布。
1992年Linux与其他GNU软件结合,完全自由的操作系统正式诞生。该操作系统往往被称为“GNU/Linux”或简称Linux。
GNU 包含3个协议条款,
GPL:GNU通用公共许可证(GNU General Public License)
LGPL:GNU较宽松公共许可证 (GNU Lesser General Public License), ) ,旧称 GNU Library General Public License (GNU 库通用公共许可证);
GFDL : GNU自由文档许可证(GNU Free Documentation License )的缩写形式。
Linux的基本原则(www.kernel.org)
1.目的单一的小程序组成;组合小程序完成复杂任务
2.一切皆文件:设备访问入口
3.尽量避免捕获用户接口
4.配置文件保存为纯文本格式
Linux的一些重要发行商(release):
RedHat (rpm)
SLS
Debian (dpt)
SUSE Novell(Netware)
OpneSUSE 基于SUSE
Ubuntu 基于Debian
Mint 基于Ubuntu
CentOS:Community ENTerprise OS(社区版的redhat)
Fedora:
Mandriva
6.操作系统组成
6.1硬件(运算器、控制器、存储器、输出设备、输入设备)
运算器与控制器统称曾为CPU,储存器通常称为内存。
由于CPU的频率远大于内存的工作频率,所以通常我们将CPU通过前端总线前端总线FSB连接到北桥芯片(North Bridge Chipset)上,再由北桥与内存相连。
南桥: 低速总线控制器 I/O-北桥
北桥: 高速总线控制器 内存-CPU(南桥-CPU)
有时为了提高计算机的运行速度,可以在北桥上连接固态硬盘,实现硬盘告诉读取。
计算机采用中断系统(interrupt)对突发状况(例如:键盘输入)进行处理。由中断控制器根据中断向量对不同的中断进行控制。
由于CPU,内存频率不同,在中间加入缓存(cache)实现计算机提速
CPU =》 寄存器 =》 一级缓存 =》 二级缓存 =》 内存
缓存前提,程序的局部性原理:时间局部性(访问过的数据可能还会被访问),空间局部性(周围的数据可能被访问)。
6.2Kernel:内核(提供系统调用)
内核,是一个操作系统的核心。是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
内核功能:
进程管理
内存管理
文件系统
网络功能
硬件驱动
安全机制
....
6.3library:API
由操作系统实现提供的所有系统调用所构成的集合即程序接口或应用编程接口(Application Programming Interface,API)。是应用程序同系统之间的接口。
操作系统的主要功能是为管理硬件资源和为应用程序开发人员提供良好的环境来使应用程序具有更好的兼容性,为了达到这个目的,内核提供一系列具备预定功能的多内核函数,通过一组称为系统调用(system call)的接口呈现给用户。系统调用把应用程序的请求传给内核,调用相应的的内核函数完成所需的处理,将处理结果返回给应用程序。
6.4集成开发环境(IDE,Integrated Development Environment,)
Dll:Dynamic Link Library 动态链接库(windows)
DSO:Dynamic shared object 动态共享对象(linux)
6.5shell
Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。
6.5.1图形界面shell(Graphical User Interface shell 即 GUI shell)
windows
x-windows
Gnome
KDE
Xface
6.5.2命令行式shell(Command Line Interface shell ,即CLI shell)
Bourne Shell
首个重要的标准Unix Shell是1970年底在V7 Unix(AT&T第7版)中引入的,并且以它的创始科技部基础条件平台“国家气象网络计算应用节点建设”(2004DKA50730)资助者Stephen Bourne的名字命名。Bourne shell 是一个交换式的命令解释器和命令编程语言。Bourne shell 可以运行为login shell或者login shell的子shell(subshell)。只有login命令可以调用Bourne shell作为一个login shell。此时,shell先读取/etc/profile文件和$HOME/.profile文件。/etc/profile文件为所有的用户定制环境,$HOME/.profile文件为本用户定制环境。最后,shell会等待读取你的输入。
C Shell
Bill Joy于20世纪80年代早期,在伯克利的加利福尼亚大学开发了C shell。它主要是为了让用户更容易的使用交互式功能,并把ALGOL风格的语法结构变成了C语言风格。它新增了命令历史、别名、文件名替换、作业控制等功能。
Korn Shell
有很长一段时间,只有两类shell供人们选择,Bourne shell用来编程,C shell用来交互。为了改变这种状况,AT&T的bell实验室David Korn开发了Korn shell。ksh结合了所有的C shell的交互式特性,并融入了Bourne shell的语法。因此,Korn shell广受用户的欢迎。它还新增了数学计算,进程协作(coprocess)、行内编辑(inline editing)等功能。Korn Shell 是一个交互式的命令解释器和命令编程语言.它符合POSIX——一个操作系统的国际标准.POSIX不是一个操作系统,而是一个目标在于应用程序的移植性的标准——在源程序一级跨越多种平台。
Bourne Again Shell (bash)
bash是GNU计划的一部分,用来替代Bourne shell。它用于基于GNU的系统如Linux.大多数的Linux(Red Hat,Slackware,Caldera)都以bash作为缺省的shell,并且运行sh时,其实调用的是bash。
POSIX Shell
POSIX shell 是Korn shell的一个变种. 当前提供POSIX shell的最大卖主是Hewlett-Packard。在HP-UX 11.0,POSIX shell 就是/bin/sh,而bsh是/usr/old/bin/sh.
Windows PowerShell
Windows PowerShell是一种新的交互式的命令行和基于任务脚本编写技术,它使信息技术(IT) 管理员能够全面地自动操作和控制系统管理任务,从而提高了管理员的生产力。Windows PowerShell 包括多个系统管理实用工具、一致的语法和命名惯例、及对普通管理数据更好地导航,如登记、证书存储 或 Windows Management Instrumentation (WMI)。Windows PowerShell 还专门针对 IT 管理,提供直观的脚本编写语言。
浙公网安备 33010602011771号