Operating System Conceptions第一章知识整理总结
1.2 Computer-System Organization
1)Computer-System Operation
什么是操作系统(OS)?
计算机系统由硬件和软件两部分组成。计算机操作系统是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。而其他的程序、系统软件、应用软件都依赖于操作系统的支持,获取它的服务。
操作系统的作用?
1.OS 作为用户与计算机硬件系统之间的接口
OS处于用户和计算机硬件系统之间,用户通过OS来使用计算机系统,或者说,用户在OS的帮助下,可以方便的操纵计算机硬件和运行自己的程序。
OS是一个系统软件,这种接口是一个软件接口
2.OS 作为计算机系统资源的管理者
- Process Management
- Memory Management
- Storage Management
- Protection and Security
在一个计算机系统中,通常都含有各种各样的硬件和软件资源。归纳起来可将资源分为四类:处理器、存储器、I/O 设备以及信息(数据和程序)。相应地,OS 的主要功能也正是针对这四类资源进行有效的管理,即:处理机管理,用于分配和控制处理机;存储器管理,主要负责内存的分配与回收; I/O 设备管理,负责 I/O 设备的分配与操纵;文件管理,负责文件的存取、共享和保护。可见,OS 的确是计算机系统资源的管理者。
3.OS 实现了对计算机资源的抽象
I/O 软件隐藏了 I/O 操作实现的细节
2)Storage Structure
CPU只能从存储器中加载指令,因此任何运行的程序都必须存储在存储器中。
在下图中,存储系统主要分为寄存器、cache、主存和辅存。
Cache:
CPU的速度远高于内存,当CPU直接从内存中存取数据时要等待一定时间周期,而Cache则可以保存CPU刚用过或循环使用的一部分数据,如果CPU需要再次使用该部分数据时可从Cache中直接调用,这样就避免了重复存取数据,减少了CPU的等待时间,因而提高了系统的效率。Cache一般由SRAM组成。
主存:
主存存放立即使用的程序和数据,需要存取速度快
RAM(随机存储器):是计算机硬件的一个重要部件,其作用是存放指令和数据,并能由中央处理器(CPU)直接随机存取。通用计算机的大部分程序都是从可重写的内存中运行的。
ROM(Read-Only memory):只能读而不能写,只有static program例如bootstrap program存储在这
EEPROM(电可擦除可编程只读存储器):可以用电擦除,存储大多数static program
DRAM和SRAM比较:
DRAM容量更大,价格更便宜,功率更小,但需要不断地刷新
SRAM速度比DRAM快,一般用作容量不大的高速存储器
------------------------------------------------------------------------------------------------------------------------------
辅存:
对于辅存来说,大多数的程序(系统程序、应用程序等)都存储在这,且也是许多程序执行所需程序、数据的来源和目的地。因此要求成本低,容量大,非易失性。
------------------------------------------------------------------------------------------------------------------------------
3)I/O Structure
I/O结构包括外部设备和设备控制器。
设备控制器负责它控制的外围设备和它本地缓冲区之间的数据传输。
设备驱动程序:操作系统为每个设备控制器设有一个设备驱动程序。这个设备驱动程序识别设备控制器并为操作系统与设备之间提供统一的接口。
考虑一个典型的计算机操作:一个执行输入输出的程序。
1、要启动一个I/O操作,设备驱动程序在设备控制器中加载适当的寄存器。
2、设备控制器检查这些寄存器回调的内容,以确定要采取什么行动。
3、控制器开始将数据从设备传输到本地缓冲区。一旦数据传输完成,设备控制器就会通知设备驱动程序它已经完成了它的操作。
4、然后,设备驱动程序将控制权交给操作系统的其他部分,如果操作是读取的话,可能会返回数据或指向数据的指针。对于其他操作,设备驱动程序返回状态信息,比如“成功完成写”或“设备繁忙”。
控制器如何通知设备驱动程序它已经完成了它的操作?
这是通过中断完成的。
控制器如何通知设备驱动程序它已经完成了它的操作呢?
是通过中断完成的。
当CPU被中断时,它会停止它正在做的事情,并立即将执行转移到一个固定的位置。固定位置通常包含中断的服务程序的起始地址。中断服务程序完成时,CPU恢复被中断的计算。
在计算机系统中,根据中断源的不同,通常将中断分为两大类: 1. 硬件中断2. 软件中断。其中硬件中断又称外部中断,主要分为两种:可屏蔽中断、非屏蔽中断。可屏蔽中断可以在CPU要处理其它紧急操作时,被软件屏蔽或忽略;非屏蔽中断无法通过软件进行屏蔽,CPU必须无条件响应。
1、中断请求:由中断源向CPU发出中断请求信号。
2、中断响应、处理和返回
3、转入中断程序处理
4、中断排队和中断判优:CPU不可能对所有中断请求一视同仁,它会根据各中断源工作性质的轻重缓急,预先安排一个优先级顺序。当多个中断源同时申请中断时,即按此优先级顺序进行排队,等候CPU处理。
那么多核CPU如何进行中断的处理呢?
多核CPU的中断处理和单核有很大不同。多核的各处理器核心之间需要通过中断方式进行通信,所以CPU芯片内部既有各处理器核心的本地中断控制器,又有负责仲裁各核之间中断分配的全局中断控制器。
现今的多核处理器在中断处理和中断控制方面主要使用的是APIC(Advanced Programmable Interrupt Controllers),即高级编程中断控制器。它是基于中断控制器两个基础功能单元——本地单元以及I/O单元的分布式体系结构。在多核系统中,多个本地和I/O APIC单元能够作为一个整体通过APIC总线互相操作。
扩:APIC的功能有:
1. 接受来自处理器中断引脚的内部或外部I/O APIC的中断,然后将这些中断发送给处理器核心进行处理
2. 在多核处理器系统中,接收和发送核内中断消息
对于外部设备发出的中断请求,由全局中断控制器接收请求并决定交给CPU的哪一个核心处理。也可针对APIC编程,让所有的中断都被一个固定的CPU处理。
1.3 Computer-System Architecture
1)Single-Processor Systems
如果一个计算机系统只包括一个运算处理器,则称之为单处理器系统single-processor System。
“All of these special-purpose processors run a limited instruction set and do not run user processes.”
——所有这些专用处理器都运行一个有限的指令集,并且不运行用户进程。
注:现在很多工作的思路就是让应用可以直接操作这些控制器,避免使用操作系统的系统调用,这样可以提升效率
---------------------------------------------------------------------------------------------------------------------------------
1、在单个处理器系统上, CPU用于执行通用指令集,包括来自用户进程的指令。
2、所有这些专用处理器都运行一个有限的指令集,不运行用户进程。
3、在某些系统或环境中,它作为专用处理器是内置在硬件中的低层组件。操作系统无法与这些处理器通信,它是自主工作的。
2)Multiprocessor Systems
如果一个计算机系统有多个运算处理器,则称之为多处理器系统Multiprocessor Systems。
多处理器系统有三个主要优点:
1、增加吞吐量。增加处理器的数量,可以在更短的时间内完成更多的工作。但是有N个处理器的加速比不是N,而是小于N。即额外开销和共享资源的争用,会降低处理器的预期收益。
2、经济的规模。多处理器系统的成本比同等的多处理器系统要低,因为它们可以共享外围设备、大规模存储和电源。如果几个程序在相同的数据集上运行,那么将这些数据存储在一个磁盘上,并让所有处理器共享它们,比拥有本地磁盘和许多数据副本的计算机更便宜。
3、增加可靠性。如果函数可以在几个处理器之间适当地分布,那么一个处理器出现故障时不会停止系统,只会减慢系统的速度。
------------------------------------------------------------------------------------------------------------------------------
为了增加计算机系统的可靠性,存在下面的概念:
优雅降级(Graceful degradation)是指电脑,机器,电子系统或者是网络在本身大部分已经毁坏或无效的情况下还能保持有限的功能这种能力。是增加计算机系统可靠性的一个重要因素。在优雅降级中,操作的效率和速度随着失效部件的增加逐渐下降。
容错性(fault tolerant)是指软件检测应用程序所运行的软件或硬件中发生的错误并从错误中恢复的能力,通常可以从系统的可靠性、可用性、可测性等几个方面来衡量。
------------------------------------------------------------------------------------------------------------------------------
目前主要使用的多处理器系统有两种类型:asymmetric multiprocessing和symmetric multiprocessing (SMP)
非对称多处理模式好比老板-工人关系,其中每个处理器被分配一个特定的任务。一个老板处理器控制系统,其他处理器要么向老板寻求指令,要么有预定义的任务。即老板处理器调度并将工作分配给工人处理器。
最常见的系统使用对称多处理(SMP),其中每个处理器在操作系统中执行所有任务。SMP意味着所有的处理器都是对等的,处理器之间不存在老板-员工关系。每个处理器都有自己的一组寄存器,以及一个私有的或本地的cache。然而,所有的处理器都共享物理内存。
在对称式多处理器系统中,操作系统内核可以运行在任意一个处理器上,每个处理器都可以自我调度运行的进程和线程,并且操作系统内核也被设计成多进程或多线程,内核的各个部分可以并行执行。对称多处理器是迄今开发出的最为成功的两种并行机之一。有一种SMP机最多可支持64个处理器,多个处理器之间采用共享主存储器。SMP机有对称性、单一地址空间、低通信延迟和一致的高速缓存等特点,具有高可靠性、可扩充性、易伸缩性。这一系统中的任何处理器都可以访问仟何存储单元及I/O设备,处理器之间的通信代价很低,而并行度较高。共享存储器中只保存一个操作系统和数据库副本,既有利于动态负载平衡,又有利于保证数据的完整性和一致性。几乎所有的大型计算机硬件制造商,如DEC、HP、IBM、SUN、SGI都生产SMP机,主要用于联机分析处理、数据库和数据仓库等。
3)Clustered Systems
集群系统是一组互连的完整计算机,在运行时共同构成统一的计算资源,给人以一台机器的感觉。
集群系统的配置一般分两种方法:1、各个节点计算机带磁盘;2、多个节点计算机共享RAID磁盘。
集群系统特点:
- 在集群系统中,每一台计算机都是一个完整的节点,离开集群后自己可以独立工作,所以一个节点的失败并不意味着服务的失败,从而使集群系统具备很好的容错性。
- 集群系统还具有很好的可伸缩性,用户开始可以在一个适度大小的系统上工作,随着需求的增加,集群系统可以被方便地扩展,直到具有数十或数百个节点。
- 集群系统的性能价格比也很好,使用计算机集群,能够用比较低的价格,获得与一台大型计算机相同或更大的计算能力。
运行在这样集群系统上程序涉及到并行化的技术,它将一个程序划分为单独的组件,在集群中的单个计算机上并行运行。通常,这些应用程序的设计思想是,集群中的每个计算节点都解决了问题的部分,所有节点的结果都被合并到最终的解决方案中,即分而治之。
1.4 Operating-System Structure
操作系统最重要的一个方面是执行多程序的能力。一般来说,由于单个程序不能让CPU或I/O设备在任何时候都处于“忙”状态且单个用户经常需要运行多个程序,因此,多道程序系统:
用户所提交的作业都先存放在外存上并排成一个队列,称为“后备队列”;然后,由作业调度程序按一定的算法从后备队列中选择若干个作业调入内存,使它们共享CPU和系统中的各种资源。在多程序系统中,操作系统简单地切换到另一个作业。当该作业需要等待时,CPU切换到另一个作业,以此类推。最终,第一份工作完成了等待,并恢复了CPU。只要至少有一项作业需要执行,CPU就永远不会空闲。
分时系统:
分时操作系统是使一台计算机采用时间片轮转的方式同时为几个、几十个甚至几百个用户服务的一种操作系统。把计算机与许多终端用户连接起来,分时操作系统将系统处理机时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用。由于时间间隔很短,每个用户的感觉就像他独占计算机一样。分时操作系统的特点是可有效增加资源的使用率。
分时系统还必须提供一个文件系统,文件系统驻留在磁盘的集合上,因此,必须提供磁盘管理。此外,分时系统还提供了一种资源保护机制。为了确保有序的执行,系统必须提供工作同步和通信的机制,并且它可以确保工作不会陷入永远等着对方的僵局中。
1.5 Operating-System Operation
“注:现代操作系统都是中断驱动的,这个很有意思。有没有可能做出一些改变?”
1)Dual-Mode and Multimode Operation
用户模式和内核模式操作切换:
1、当计算机系统代表用户应用程序执行时,系统处于用户模式。然而,当用户应用程序从操作系统请求服务时,系统必须从用户转换到内核模式以满足请求。
2、在系统启动时,硬件从内核模式开始。然后加载操作系统,并在用户模式下启动用户应用程序。
3、当出现一个陷阱或中断时,硬件从用户模式切换到内核模式(此时模式位的状态为0),因此,每当操作系统获得计算机的控制权时,它都处于内核模式。系统先切换到用户模式(此时模式位为1),然后将控制权传递给用户程序。
------------------------------------------------------------------------------------------------------------------------------
此外,支持虚拟化的CPU(此时CPU使用超过一位bit来设置和检测模式位)有一个单独的模式来区分虚拟机管理器(VMM)和虚拟化管理软件。在这种模式下,VMM拥有比用户进程更多的特权,但比内核更少。它需要这种级别的特权,这样它就可以创建和管理虚拟机,从而改变CPU状态。
----------------------------------------------------------------------------------------------------------------------------------
值得注意的是,CPU设计者可以使用各种其他方法来区分操作特权。例如,Intel 64系列的cpu支持4个特权级别,并且支持虚拟化,但是没有单独的虚拟化模式。
我们可以看到计算机系统中指令执行的生命周期:
1、初始控制驻留在操作系统中,指令在内核模式下执行。2、当控制权交给了一个用户应用程序时,模式被设置为用户模式。3、控制权通过中断、陷阱或系统调用交换回给操作系统。
当一个系统调用被执行时:
1、它通常被硬件作为软件中断处理,此时控制权通过中断向量到达操作系统中的服务程序,并且模式位被设置为内核模式(系统调用服务例程是操作系统的一部分)。
2、内核检查中断指令,以确定发生了什么样的系统调用;
3、参数表明用户程序请求的服务类型。请求所需的额外信息可以在寄存器、堆栈或内存中传递。
4、内核验证参数是否正确合法,然后执行请求,并在系统调用之后将控制权返回给指令。
一些CPU提供了两种以上的操作模式,那么这些多重模式有哪些用途?
尽管大多数系统只区分用户和内核模式,但有些CPU支持多种模式。可以使用多种模式来提供更细粒度的安全策略。例如,我们可以区分不同类型的用户模式,而不是区分用户和内核模式。也许属于同一组的用户可以执行彼此的代码。当其中一个用户正在运行代码时,机器将进入指定模式。当机器处于这种模式时,组中的成员可以运行属于该组中任何其他人的代码。另一种可能是在内核代码中提供不同的区别。例如,一个特定的模式可以允许USB设备驱动程序运行,这意味着USB设备可以在无需切换到内核模式的情况下进行服务。
2)Timer
为了不让用户程序陷入无限循环,或者不能调用系统服务,也不能将控制权交还给操作系统,可以使用计时器timer。
通过设置一个计时器可以产生中断,一个计时器通常由一个频率固定的时钟clock和一个计数器counter来实现。由操作系统设置计数器,每当时钟ticks时,计数器就会递减。当计数器达到0时,就会发生中断。
在将控制权移交给用户之前,操作系统确保timer被设置为中断。如果timer中断,控制将自动转移到操作系统,该操作系统可能将中断视为致命错误,或者可能给程序更多的时间。
可以使用计时器来防止用户程序运行太长时间:一个简单的技术是用程序允许运行的时间来初始化计数器。例如,一个有7分钟时间限制的程序,它的计数器将被初始化为420。每隔一秒(此时timer为1/60second 频率),计时器ticks,计数器就会递减1。只要计数器是正的,控制就会返回给用户程序。当计数器变为负值时,操作系统终止程序,以超过指定的时间限制。
如何使用计时器来防止用户程序运行太长时间?
一个简单的技术是用程序允许运行的时间来初始化计数器。例如,一个有7分钟时间限制的程序,它的计数器将被初始化为420。每隔一秒(此时clock为1/60second 频率),计时器ticks,计数器就会递减1。只要计数器是正的,控制就会返回给用户程序。当计数器变为负值时,操作系统终止程序,以超过指定的时间限制。
“基于时间片的进程调度是通过timer来实现的吗?”
是通过一个轮询timer来实现的。
1.6 Process Management
进程管理中,操作系统负责以下活动:
1、调度进程和线程
2、建和删除用户进程和系统进程
3、暂停和恢复流程
4、提供流程同步的机制
5、提供流程通信机制
我们强调,一个程序本身并不是一个进程。程序是一个被动的实体,就像存储在磁盘上的文件的内容,而进程是一个活动的实体。单线程进程有一个程序计数器,指定要执行的下一个指令,CPU执行一个接一个的进程的指令,直到进程完成。一个多线程进程有多个程序计数器,每个计数器指向下一个指令,以执行给定的线程。进程是系统中的工作单元。一个系统由一系列进程组成,其中一些是操作系统进程,其余的是用户进程,所有这些过程都可以并发地执行。
进程和线程的区别?
根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小
所处环境:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)
内存分配方面:系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。
包含关系:没有线程的进程可以看做是单线程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。
1.7 Process Management
在内存管理中,操作系统负责一下活动:
1、跟踪当前哪些部分的内存正在使用以及谁在使用。
2、决定哪些进程(或进程某些部分)和数据需要进入和退出内存。
3、根据需要分配和释放内存空间。
1.8 Storage Management
操作系统从存储设备的物理属性中抽象出来,以定义一个逻辑存储单元——文件。操作系统将文件映射到物理介质上,并通过存储设备访问这些文件。
文件系统管理:
在文件管理中,操作系统负责以下活动:
- 创建和删除文件
- 创建和删除目录来组织文件。
- 支持用于操作文件和目录的原语。
- 将文件映射到二级存储器上,以备份稳定(非易失性)存储介质上的文件
大容量存储管理:
在磁盘管理中,操作系统负责以下活动:1、空间管理2、存储分配3、磁盘调度
高速缓存:
缓存思想:
信息通常保存在一些存储系统中(比如主存)。当它被使用时,它被复制到一个更快的存储系统——cache上。当我们需要一个特定的信息时,我们首先检查它是否在缓存中。如果是的话,我们直接从缓存中使用这些信息。如果不是,我们使用来自源的信息,并放一个副本复制到缓存中。
大多数系统在内存层次结构中都有一个或多个高速数据缓存。
存在层次结构关系、性能、速度等方向上的差异时,都存在缓存。
缓存解决了什么样的问题?
当两个或多个组件需要交换数据时,缓存是有用的,组件以不同的速度执行传输。缓存通过在组件之间提供中间速度的缓冲来解决传输问题。如果快速设备在缓存中找到它需要的数据,它就不需要等待较慢的设备。大多数系统在内存层次结构中都有一个或多个高速数据缓存。存在层次结构关系、性能、速度等方向上的差异时,都存在缓存。
缓存造成了什么样的问题?
缓存中的数据必须与组件中的数据保持一致。如果一个组件有数据值的变化,并且数据也在缓存中,那么缓存必须也被更新。这在多处理器系统上尤其是个问题,其中多个进程可能正在访问一个数据。所以我们必须确保一个缓存中的值的更新立即反映在驻留的所有其他缓存中,这种情况称为缓存一致性。
如果缓存可以像它所缓存的设备那样大(例如,一个像磁盘一样大的缓存),为什么不把它弄得这么大来替换这个设备呢?
当缓存和组件具有相同的状态保存能力(比如如果组件在断电时保留数据,那么缓存必须同样的数据)以及此时情况下的缓存成本(因为更快的存储往往更贵)是可以承受的时候,我们可以通过一个等大的缓存来替换一个存储设备。
I/O系统:
I/O子系统由几个组件组成:1、内存管理组件,包括缓冲、缓存和假脱机。2、一个通用设备驱动程序接口。3、特定硬件设备的驱动程序
1.9 Protection and Security
Protection是一种控制进程或用户访问计算机系统资源的机制。这个机制必须提供方法来指定要施加的控制和执行控制。一个面向保护的系统提供了一种方法来区分授权和未经授权的对资源使用行为,在后文会提及。
Protection and Security要求系统能够区分所有用户。大多数操作系统维护一个用户名和相关的用户标识符(用户id)。用Windows的说法,这是一个安全ID(SID)。这些数字id是唯一的,每个用户一个。当用户登录到系统时,身份验证阶段为用户确定适当的用户ID。该用户ID与所有用户的进程和线程相关联。当一个ID需要被用户读取时。它通过用户名列表被转换回用户名。
在某些情况下,我们希望区分不同的用户,而不是单独的用户。例如,在UNIX系统上的文件的所有者可以在该文件上发出所有操作,而选定的一组用户只能被允许读取该文件。为了完成这个任务,我们需要定义一个组,名称和属于该组的用户组。组的功能可以作为全系统的组名和组标识符来实现。用户可以在一个或多个组中,这取决于操作系统的设计决策。用户的组id也包含在每一个相关的进程和线程中。
然而,用户有时需要升级特权,以获得活动的额外权限。例如,用户可能需要访问受限的设备,操作系统提供了各种允许的方法特权升级。例如,在UNIX上,程序上的setuid属性会导致该程序与文件所有者的用户ID一起运行。这个过程使用这个有效的UID运行,直到它关闭额外的特权或终止为止,而不是当前用户的ID。
内核模式和用户模式功能之间的区别是如何作为保护--安全系统的基本形式的?
内核模式和用户模式之间的区别以以下方式提供了一种基本的保护形式。特定指令只有当CPU处于内核模式时才能执行。类似地,只有当程序在内核模式下执行时,才可以访问硬件设备。只有当CPU处于内核模式时,才可能启用中断或禁用中断。因此,在用户模式执行时,CPU的功能非常有限,从而加强了对关键资源的保护。
1.10 Kernel Data Structures
操作系统中有以下几个基本的数据结构:
Array应用举例:用数组构造主存,当储存的数据项大于一个字节,那么可以将多个字节分配给一个item,这个item作为编号为x的item的大小处理。但当存储一个大小可能不同的项目或者必须保留其余项目的相对位置而删除一个项目时,可采用其他数据结构如List。
List应用举例:链接列表可以容纳不同大小的项目,并允许简单的插入和删除项目。使用list的一个潜在缺点是,在大小为n的列表中查找的时间复杂性度是O(n),在最坏的情况下遍历所有n个元素。数组中的每一项都可以直接访问,而列表中的项目必须以特定的顺序访问。
Stack应用举例:在调用函数调用时,操作系统通常使用堆栈。当调用一个函数时,参数、局部变量和返回地址被推到堆栈上,从函数调用中返回会弹出堆栈中的那些item。
Queue应用举例:队列是一种顺序有序的数据结构。队列在操作系统中,例如发送到打印机的作业通常按提交的顺序打印,等待在可用CPU上运行的任务通常是在队列中组织的。
Trees应用举例: Linux使用平衡搜索二叉树作为CPU调度算法的一部分。
Hash应用举例:哈希函数的一个用途是实现一个哈希映射。例如,假设一个用户名被映射到一个密码。然后,密码身份验证的执行如下:当用户输入他的用户名和密码,哈希函数被应用到用户名-密码,然后用它来检索密码,将检索到的密码与用户输入的密码进行比较。
Bitmaps应用举例:Bitmaps是一串n位二进制数字,可以用来表示n个资源可使用的状态,如0代表可用,1代表不可用。与使用8位布尔值相比,Bitmaps空间效率更高。因此,当需要表示大量资源的可用性时,通常使用bitmaps。如一个中等大小的磁盘驱动器可以被划分为数千个单独的单元,称为磁盘块。bitmaps可以用来表示每个磁盘块的可用状态。
1.11 Computer Environments
不同的计算机环境中操作系统:
分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统。透明性是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。在分布式数据库系统中,用户感觉不到数据是分布的,即用户无须知道关系是否分割、有无副本、数据存于哪个站点以及事务在哪个站点上执行等。
在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。系统拥有多种通用的物理和逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。系统中存在一个以全局的方式管理计算机资源的分布式操作系统。
客户-服务器方式(Client–Server Computing):
客户(client)和服务器(server)都是指通信中所涉及的两个应用程序。客户服务器方式描述的是进程之间服务和被服务的关系。这里所说的客户和服务器都指的是计算机进程(软件)。在C/S方式中,请求一方为客户,响应请求一方称为服务器,如果一个服务器在响应客户请求时不能单独完成任务,还可能向其他服务器发出请求,这时,发出请求的服务器就成为另一个服务器的客户。从双方建立联系的方式来看,主动启动通信的应用叫客户,被动等待通信的应用叫服务器。这里最主要的特征就是:客户是服务请求方,服务器是服务提方。
客户程序主动地向服务器发起请求服务,客户机必须知道服务器程序地址。服务器可同时处理多个远地或本地客户的请求,不用预先知道客户机地址。
对等方式(P2P方式peer-to-peer): 两台主机在通信时不区分哪一个是服务的请求方哪一个是服务的提供方,只要两台主机运行了对等连接软件(P2P软件),他们就可以进行平等、对等的连接通信。网络中的每一台计算机既能充当网络服务的请求者,又对其它计算机的请求做出响应,提供资源、服务和内容。通常这些资源和服务包括:信息的共享和交换、计算资源(如CPU计算能力共享)、存储共享(如缓存和磁盘空间的使用)、网络共享、打印机共享等。
虚拟化(Virtualization):是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式、地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。
在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件。
云计算(Cloud Computing):通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,让企业数据中心的运行将与互联网更相似。这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。
云计算又有以下几个类型:
Public cloud:公有云。通过互联网可以提供给任何愿意为服务付费的人。
Private cloud:私有云——由一家公司为该公司自己的使用而运行的云
Hybrid cloud:混合云——一种包含公共云和私有云组件的云
IaaS(Infrastructure-as-a- Service):基础设施即服务。消费者通过Internet可以从完善的计算机基础设施获得服务。例如:硬件服务器租用。
PaaS(Platform-as-a- Service):平台即服务。PaaS实际上是指将软件研发的平台作为一种服务,以SaaS的模式提交给用户。因此,PaaS也是SaaS模式的一种应用。但是,PaaS的出现可以加快SaaS的发展,尤其是加快SaaS应用的开发速度。例如:软件的个性化定制开发。
SaaS(Software-as-a- Service):软件即服务。它是一种通过Internet提供软件的模式,用户无需购买软件,而是向提供商租用基于Web的软件,来管理企业经营活动。