常见的CPU系列(硬件架构):
1、ARM(移动硬件平台):只生产知识产权不生产设备,只负责设计芯片,真正生产的都是由三星 高通这些生产的。手持智能设备在硬件架构上都属于ARM。
2、x86:指的是intel或者AMD的x86系列,32位的平台
——32位和64位操作系统指的是CPU一次处理数据的能力是32位还是64位
——也就是大马路并行32条车道与并行64条车道的区别,因此,64位的可以实现的流量要比32位来 的大得多。
3、x64:
4、安腾:intel intel当年没有64位CPU而AMD已经出现的前提下,从惠普那儿收购的。
5、alpha:惠普(安腾卖给intel了)
6、UltraSparc(性能比较高的cpu):sun(已经被oracle收购)斯坦福大学设计的后来转让给sun公 司,并由富士通代为生产。
7、Power(世界上第一个双核心八核心64核心等cpu,而且是第一个主频超过4GHz的cpu):IBM
8、M68000(M68K):摩托罗拉
9、PowerPC(比Power差一点但是性能仍然很不错的cpu):苹果/IBM/摩托罗拉
……
(linux遍布在任何一种角落里,因为linux几乎支持这所有的cpu类型)
操作系统(os):
Windows
Linux
Unix
HP-UX:惠普
Solaris:sun
AIX:IBM
SCO UNIX:SCO
Unixware……
OS/2
批处理:
job:在计算机上运行的一次完整的计算过程我们把它称作一个作业,早期的作业在磁带上,每一个磁 带上可能放一个作业,一个作业完成了就把磁带拿下来换上另一个磁带。后来为了为了提高速 度,在一个磁带上放多个作业,多个作业之间是由一些分隔符分开的。
jobs: job1&&&&&&&&job2
多任务系统:作业在执行过程当中,执行一个指令,执行过程中由于计算机的cpu速度过快,大多数 时间为了跟IO交互都是空闲的,由于计算能力是非常昂贵的,因此,人们就希望能够尽 可能的让cpu繁忙起来,希望多个程序能同时运行,意味着要将一个资源分成多个资源, 需要对计算机运行过程中的两个重要组件(CPU,Memory)进行切割。
进程:运行着的程序称为进程(进程是有生命周期的——从启动到结束)
进程的工作流程:
1、对CPU进行切割:
slice(cpu的时间片)
5ms(假设第一个程序的运行时间)
5ms(假设第二个程序的运行时间)
2、对内存(Memory)进行切割:
分段机制:例如将内存分为两段1、2,第一个程序从第一段的001开始,第二个程序从第二段的 001开始——相对地址
每个程序运行的时候都有自己的虚拟地址空间(程序员开发程序时不管物理内存,例如在32位系统 上,就假设有4G内存可用——2^32)。
在这一过程需要有软件监视着程序的运行(给你5ms你就只能运行5ms……)—— 完成这个机制的 就是操作系统。
操作系统(通用软件,不负责具体的工作,它只是负责协调其它具体的程序的工作): 运行在硬件上 的软件,负责管理硬件资源,而且将硬件资源提供的运算能力切割成多个片,分给多个 多个不同 的程序,内存分成多个段,分给多个不同的程序,并且在他们之间完成协调,操作系统还负责完 成一个程序的启动,终止和回收等工作,还要负责程序的切换等工作。因此这样的软件也可以有 多个,这就是为什么有windows,linux等操作系统同时存在的原因
操作系统本身是一个通用软件,这个软件装上去后,就将整个硬件本身所提供的计算能力使用软件 的形式模拟出来了,作为二次模拟,所以任何程序看到的就不是硬件本身而是操作系统所提供的接 口,操作系统的这种功能接口为了能够尽可能的简化,做的非常底层,操作系统的接口称作system call(系统调用),有了操作系统以后,任何程序都不能和硬件直接打交道,要想使用硬件功能必须 要通过操作系统,通过操作系统来进行协调。
在windows下可以运行的程序,在linux下不一定能运行。
例如编写一个C程序,在windows下调用windows提供的c库来进行编程在linux下调用linux提供 的c库来进行编程,如果两个库不同,那么程序在linux下就运行不了,就算两库相同,也不一定能 够运行。
库APL:作用是弥合底层硬件的不同,是一堆的程序,库没有执行入口(例如c中的main),可以被 其它程序调用执行,提供一个统一的调用接口call。
程序员开发程序(比如使用C来写),是通过call来写,是一个调用别人所提供的功能然后去开发程 序的过程。
底层的理解:例如要做个馒头,给你一堆麦子,你得把麦子拿回去磨成面粉再发酵做成馒头,或是直 接给你馒头。麦子和馒头中,麦子就是底层,给你麦子你既可以做成馒头你也可以做成 包子……,而馒头无法还原成面粉。所以操作系统的底层将会由上层的程序员决定它的应 用机制,越底层意味着它的机制变化就越少,操作系统为了简化它的功能,简化它的调 用接口,功能接口都做的非常底层。
库APM:为了方便程序员的调用,就有人专门负责将系统调用再一次封装起来,使它功能更强大 一点,就如同有人用麦子将馒头包子都做好了,你想要什么你买什么就行。这些将一个或 多个底层系统调用的功能封装起来,做成更高级的接口就是库APL。