操作系统发展史

听课简要知识点记录如下:

1,  Cpu(一堆集成电路+指令集)可以从内存中读取的内存地址为:32CPU只能读取232次方的内存地址,总计4G。(32CPU32条电路线,传数据是哪根电路有电即为1,没电即为0

2,  程序的定义:程序==数据+指令(即对于CPU芯片(集成电路)的:cpu都有自己的cpu指令集,这些指令集称为计算机的汇编语言,或称为微码)的集合

3,  内存:一般是编址存储单元

4,  CPU内部的缓存:{1,2,3}级缓存的作用:由于CPU的频率比内存快得多,因此如果没有缓存,那么CPU的性能就会被白白浪费掉。

5,  OSOperating System)的作用:将计算机的计算能力抽象成一个个易于使用的功能,供用户使用,这样用户就不用了解底层细节。

6,  操作OS步骤:高级编程语言------》系统调用/库调用

7,  主板芯片组:南桥芯片(传输速度较慢);北桥芯片(传输速度较快)

8,  I/O设备(输入输出设备)工作原理:每个IO设备上都有一个寄存器(即独立的暂存空间:IO设备再发数据给cpu前的一个暂存空间,先发数据到暂存空间,再由此发给cpu),cpu为了识别每个io设备,对他们各自的寄存器进行编址(每次计算机一启动,各io设备就会向cpu申请这个编号;例:鼠标申请0102;硬盘申请0304;这称为IO PORTcpu根据这个标号来区别数据的来源)

9,  IO中断:cpu如何知道何时某io设备会发数据过去?io中断:(1io设备通知cpu要发数据过去(2DMA:直接内存访问;例如:对硬盘:内存中已准备10M空间,你可以发过来。

10,             IO数据流:io设备-----io寄存器----》内存----cpu

11,             分时OSmulticsOS):cpu分时间片运行,并且引用内存保护机制(MMUmemory management unit,一般由OS实现,MMUcpu中的一块芯片),cpu指派内存(内存虚拟):MMU划分内存为N个页面,一个页面包含多个内存单元;程序不能直接访问内存,它想使用的内存,需要向cpu申请,如果cpu发现程序申请的地址与程序无关,则拒绝访问。

########################################################

Unix发展史

开始由汇编写的操作系统---B语言---C语言创造了Unix----minix4000行代码,3200C800行汇编)

Unix两种不同的脚本以及系统管理风格:SystemVBSD

BSD操作系统家族:openBSDnetBSD

                                      FreeBSD:可运行在(intelamdx86平台上

                

Windows发展史

WindowsNT操作系统(NTnewtechnology

Linux 0.1   1990(linus)

Mit---Richard  Stallman----Gnu---GPL---LGPL

OSkernelOS,内核)定义:工作在硬件基础上,将硬件提供的功能抽象化成一个个统一规范的接口(即系统调用system  calllinux一共就数百个systemcall)给程序来调用。所有与硬件交互的工作由内核来完成,以避免任意程序来破环硬件、影响其他程序的运行,OS使各个进程互不影响。

内核功能:1.进程管理(跟踪、切换、终止、调度(cpu时间))

         2,内存管理:(内核空间,用户空间),内存虚拟化。

         3,驱动程序管理,驱动硬件

         4,文件系统管理,提供统一文件系统接口(VFS虚拟文件系统)

×目前的linux已经有1000W行代码,但是常用的代码没有多少行。

Process定义:进程是程序一部分代码的执行过程,是OS部分资源的分配,程序是程序员依赖于操作系统的系统调用开发出来的。

库(library)定义:将几个系统调用封装起来,做成更接近用户(程序员)的功能,供程序员调用,程序员可以利用库调用(library call)来开发程序,有时比用系统调用更方便。à但是基于汇编语言,系统调用开发出来的程序往往性能更好。Phppythonjava等语言开发应用程序速度较快,因为他们的开发语言库都非常个性化,丰富,但是运行速度较慢。

 

×Cpu指令集权限(0级别:所有指令,内核工作在这个级别;12级别是不用的;3级别:部分指令(不包括特权指令和敏感指令),应用程序工作在这个级别,因此如果应用程序要访问除cpu以外其他硬件必须通过内核来操作(访问内核的系统调用))

 

进程切换/上下文切换概念(Context Switch:

  • 执行应用程序----需用到cpu特权指令

  • 内核终止应用程序,保留进程现场

  • 内核执行系统调用,并将cpu执行结果返回给应用程序。

  • 应用程序----继续执行

 

完整的一套linux操作系统

Linux+GNU工具链+glibcc程序库)

 

API定义:由库/系统调用提供的编程接口

 

程序是否可以跨平台(操作系统平台)运行:

1)  程序运行过程:源代码-----编译为2进制程序----OS运行(用到内核辅助功能,不同OS之间不同,不同os的库不同)---因此在那个OS平台上编译的就只能在那个os平台上运行。

2)  OS平台运行的必要条件:库/系统调用在不同的操作系统上是否一致(API),如何保证这一点(需要遵循POSIX规范,只要是遵循POSIXOS,即api是一致的),如果一致,在其之上开发的程序就一致。

3)  在哪个OS平台上编译的就只能在那个OS平台上运行,因为编译时需要依赖于内核的特性(ABIapplication binary interface)进行编译。2个操作系统的API可能兼容,但ABI未必兼容,例:win库文件.dll(dynamiclink library),linux库文件.so(shared object);但两者的代码可以相同,即在linux上开发的可以在win上编译运行,反之亦然(因为API相同)。

4)  主要取决于API是否相同。

 

CPU架构介绍:

1)  X868086系列的32cpu;厂商主要是intelamd;指令集IA-32

2)  X86_64amd64

3)  Iantium:安腾,HP卖给intel的;指令集IA-64

4)  PowerIBM(小型机使用)

5)  Powerpc:(IBMapplemotolola联合开发的)

6)  M68000/M68K:motolola开发,早期Unix使用。

7)  Arm:移动终端使用,arm公司,设计cpu架构,有专利,不生产,收专利费。

8)  Sparcsun公司―openoffice(被Oracle闭源)―libreoffice(开源免费)

9)  UltraSparcsun,用于工作站。

10)             Mipssun,用于嵌入式平台。

 

程序是否可以跨平台(硬件平台cpu架构)运行:

1)  编译:依赖当前硬件架构进行优化,不同平台(例x86àarm)之上编译的程序(底层cpu指令集不同),不能在对方平台上运行,

2)  交叉编译(crosscompiling):在X86平台上用arm库编译,可以在arm平台上运行。

3)  兼容性:一般来说,高一级版本的cpu可以兼容低级版本cpu的指令集,反之不行,例如在i386平台上编译的程序可以运行在x86_64平台上(!!但只能运行i386的指令集,即虽然运行在高级cpu上,只能使用低级cpu的指令,即相当于只有低级cpu的功能),反之不行。

4)  主要取决于ABI是否相同。

 

Linux发行版:

linux发行商将在特定平台上(安装时需要在对应的平台上安装)编译好的二进制程序提供在一张安装光盘中(发行商为了更好的通用性,一定是在非常古老的cpu上测试通过的,所以别人编译好的程序,固然安装方便,但未必能发挥我们自己邮件的性能!!!!)。

 

Linux架构:应用程序--------内核----硬件

 

OS上的人机交互接口:

GUIgnome,kde,xfce(轻量级)

CLIBASHZSH等等

 

主要linux发行版

Debian:非营利组织

Ubuntu:易用灵活性好(在server上的稳定性很难和redhat系列相提并论)。----mint

Redhat:商业公司,靠服务收费----CentOS(兼容redhat(重新编译redhat源代码构建的发行版),公益性发行版,可以用yum免费升级软件)----国内较流行红帽系,可以获取的资源也最多。(www.redhat.com/www.centos.comrhel-6.4采用linux_2.6.32版本内核

SuseSLES,OPENSUSE

非营利组织:www.kernel.org

 

Linux著名版本:2.4―2.6---3.10

我们自己编译好以后并压缩的内核一般在2M左右,小一点的内核可以做到小于一兆。


你可能感兴趣的:(操作系统发展史)