1并发(concurrence)
并行性与并发性这两个概念是既相似又区别的两个概念。并行性是指两个或者多个事件在同一时刻发生,这是一个具有微观意义的概念,即在物理上这些事件是同时发生的;而并发性是指两个或者多个事件在同一时间的间隔内发生,它是一个较为宏观的概念。在多道程序环境下,并发性是指在一段时间内有多道程序在同时运行,但在单处理机的系统中,每一时刻仅能执行一道程序,故微观上这些程序是在交替执行的。 应当指出,通常的程序是静态实体,它们是不能并发执行的。为了使程序能并发执行,系统必须分别为每个程序建立进程。进程,又称任务,简单来说,是指在系统中能独立运行并作为资源分配的基本单位,它是一个活动的实体。多个进程之间可以并发执行和交换信息。一个进程在运行时需要运行时需要一定的资源,如 cpu,存储空间,及i/o设备等。在 *** 作系统中引入进程的目的是使程序能并发执行。
2共享 (sharing)
所谓共享是指,系统中的资源可供内存中多个并发执行的进程共同使用。由于资源的属性不同,故多个进程对资源的共享方式也不同,可以分为:互斥共享方式 和 同时访问方式
3虚拟 (virtual)
是指通过技术吧一个物理实体变成若干个逻辑上的对应物。在 *** 作系统中虚拟的实现主要是通过分时的使用方法。显然,如果n是某一个物理设备所对应的虚拟逻辑设备数,则虚拟设备的速度必然是物理设备速度的1/n。
4异步 (asynchronism)
在多道程序设计环境下,允许多个进程并发执行,由于资源等因素的限制,通常,进程的执行并非“一气呵成”,而是以“走走停停”的方式运行。内存中每个进程在何时执行,何时暂停,以怎样的方式向前推进,每道程序总共需要多少时间才能完成,都是不可预知的。或者说,进程是以一步的方式运行的。尽管如此,但只要运行环境相同,作业经过多次运行,都会获得完全相同的结果,因此,异步运行方式是运行的。
可见, *** 作系统为了使程序并发执行而产生了进程。
进程的定义:可并发执行的程序在一个数据集合上的运行过程。
进程的特征:
1动态性 进程既然是进程实体的执行过程,因此进程是有一定的生命期。而程序只是一组有序指令的集合,并放在某种介质上,本身无运行的含义,因此程序是个静态的实体。
2并发性
3独立性 这是指进程实体是一个能独立运行的基本单位,同时也是系统种独立获得资源和调度的基本单位。
4异步性
5结构特征 从结构上看,进程实体是由程序段、数据段及进程控制块三部分组成。
(进程控制块(PCB):进程控制块是进程实体的一部分,它记录了 *** 作系统所需要的、用于描述进程情况及控制进程运行所需的全部信息。os 是根据PCB来对并发执行的进程进行控制和管理的)
关于进程的总结:
定义:可并发执行的程序在一个数据集合上的运行过程,每个进程有一个自己的地址空间以及一个单一的控制流程。
要解决的问题:为了使程序能并发执行,(要并发执行就要隔离进程,使进程独立,即每个进程有属于自己的数据段、程序段、进程控制块)
线程的出现:
我们首先回顾进程的两个基本属性:(1)进程使一个可拥有资源的独立单位 (2)进程同时又是一个可以独立调度和分派的基本单位。正是由于这两个基本属性,才使进程成为一个能独立运行的基本单位,从而构成了进程并发执行的基础。
为了使程序能并发执行,系统必须进行以下 *** 作:
(1) 创建进程。创建一个进程时必须为之人、分配所必需的、除处理器以外的所有资源,如内存空间、I/O设备以及建立相应的PCB
(2) 撤消进程。系统在撤消进程时,需要先对这这些资源进行回收,然后再撤销PCB
(3) 进程切换。在对进程进行切换时,由于要保留当前进程的CPU环境和设置新选中的进程的CPU环境,为此须花费不少处理器时间。
简言之,由于进程是一个资源的拥有者,因而在进程的创建、撤销、和切换的过程中,系统必须为之付出较大的时空开销,也正因为如此,在系统中设置的进程的数目不宜过多,进程的切换的频率也不宜过高,但这也就限制了并发程度的进一步提高。为了解决这个问题,不少 *** 作系统的学者们想到:将进程的两个属性分开,由 *** 作系统分开处理。即对作为调度和分派的基本单位,不同时作为独立分配资源的单位,以使之轻装运行;而对拥有资源的基本单位,又不频繁地对之进行切换,在这种思想的指导下,产生了线程的概念。
线程引入的原因: 为了减少程序并发执行所付出的时空开销,使os具有更好的并发性。
在引入线程的os 中,线程是进程中的一个实体(进程中的一个或多个指令执行流),是被系统独立调度和分派的基本单位。线程基本上不再拥有系统资源,(只拥有一点在运行中必不可少的资源,如程序计数器、寄存器和栈),但它可与同属一个进程的其他线程功能共享进程所拥有的全部资源。线一个线程可以创建和撤销另一个线程;同一进程中的多个线程之间可以并发执行。
线程与进程的比较:
线程具有许多传统进程所具有的特征,故又称为轻型线程或进程元;而把传统的进程称为重型进程。在引入了线程的os中,通常一个进程拥有若干个线程。下面从四个方面来比较线程与进程。
1调度
在“原始”的OS中,拥有资源的基本单位和独立调度、分配的基本单位都是进程。而在引入线程的OS中,则把线程作为调度和分派的基本单位,而把进程作为资源拥有的基本单位,使传统进程的两个属性分开,线程便能轻装运行,从而可以显著的提高系统并发程度。在同一进程中,线程的切换不会引起进程切换,在由一个进程中的线程切换到另一进程中的线程时,将会引起进程切换。
2并发性
在引入线程的OS中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间亦可以并发执行,因而使OS具有更好的并发性,从而能更有效的使用系统资源和提高系统吞吐量。
3拥有资源
不论是“原始”的OS,还是设有线程的 *** 作系统,进程都是拥有资源的一个独立单位,它可以拥有自己的资源。线程自己基本不再拥有系统资源,但它可以访问其隶属进程的资源。
4系统开销
由于在创建或撤销进程时,系统都要为之分配或回收资源,如内存空间,I/O设备等。因为,OS所付出的开销将显著地大于在创建或撤销线程时的开销。类似的,在进行进程切换时,涉及到整个当前进程CPU环境的保存以及新被调度运行的进程的CPU 环境设置。而线程切换只须保存和设置少量寄存器的内容,并不涉及存储器管理方面的 *** 作。可见,进程切换的开销也远大于线程切换的开销。此外,由于同一进程中的多个线程具有相同的地址空间,使它们之间的同步和通信的实现变得比较容易。
这个机制在现代 *** 作系统的实现主要可分为两大类。即根据 *** 作系统内核是否对线程可感知,分为内核线程和用户线程。
1内核线程 无论是用户进程中的线程还是系统进程中的线程,它们的创建、撤销和切换都是由内核实现的。在内核中保留了一张线程控制块,内核根据该控制块而感知线程的存在并对线程进行控制。
2用户线程 它仅存在于用户级中,对于这种线程的创建、撤销和切换,都不利用系统调用实现,因而这种线程与内核无关。相应地,内核也并不知道用户级线程的存在。( 调度的实现方式是采用在用户空间增加运行库,这些运行库被称为“线程包”,每当用户进程获得CPU控制权,线程运行库决定该从哪里开始运行)
( 实际上,上面所说的线程是 *** 作系统调度的基本单位,实际上指的只是内核线程。 *** 作系统在调度时,参考各进程内的线程运行情况做出调度决定,如果一个进程中没有就绪态的线程,那么这个进程也不会被调度占用CPU
在Windows 2000中, *** 作系统进行调度时根本就不理采线程是属于哪个进程的,只是将所有的就绪线程统一排成若干个优先级队列,然后进行调度。在这个情况下,线程的确成了调度的最小单位)。
关于线程的总结:
出现的背景:由于进程是一个资源的拥有者,因而在进程的创建、撤销、和切换的过程中,系统必须为之付出较大的时空开销,限制了并发程度的进一步提高。
要解决的问题:解决进程的创建、撤销、和切换的过程中,系统必须为之付出较大的时空开销的问题
解决的方法:将进程的两个属性分开,由 *** 作系统分开处理。把“独立调度、分配的基本单位”这个属性分离出来作为线程;而把进程作为资源拥有的基本单位,线程作为进程中的一个实体而存在。
应用程序域的出现:
(来自msdn)
在net出现以前,一个进程下,只能运行一个应用程序,而在,net出现后,一个进程下,可以运行多个应用程序,这都是因为应用程序域的出现。
以前使用进程边界来隔离在同一台计算机上运行的应用程序。每一个应用程序被加载到单独的进程中,这样就将该应用程序与在同一台计算机上运行的其他应用程序相隔离。
隔离这些应用程序的原因在于内存地址是与进程相关的;在目标进程中,不能通过任何有意义的方式使用从一个进程传递到另一个进程的内存指针。此外,您不能在两个进程间进行直接调用。您必须代之以使用代理,它提供一定程度的间接性。
应用程序域提供安全而通用的处理单元,公共语言运行库可使用它来提供应用程序之间的隔离。您可以在具有同等隔离级别(存在于单独的进程中)的单个进程中运行几个应用程序域,而不会造成进程间调用或进程间切换等方面的额外开销。在一个进程内运行多个应用程序的能力显著增强了服务器的可伸缩性。
隔离应用程序对于应用程序安全也是十分重要的。例如,您可以在单个浏览器进程中运行几个 Web 应用程序中的控件,同时使这些控件不能访问彼此的数据和资源。
应用程序域所提供的隔离具有以下优点(引入原因):
在一个应用程序中出现的错误不会影响其他应用程序。因为类型安全的代码不会导致内存错误,所以使用应用程序域可以确保在一个域中运行的代码不会影响进程中的其他应用程序。
能够在不停止整个进程的情况下停止单个应用程序。使用应用程序域使您可以卸载在单个应用程序中运行的代码。
应用程序域形成了托管代码的隔离、卸载和安全边界。线程是公共语言运行库用来执行代码的 *** 作系统构造。在运行时,所有托管代码均加载到一个应用程序域中,由特定的 *** 作系统线程来运行。
应用程序域和线程之间不具有一对一的相关性。在任意给定时间,在单个应用程序域中可以执行几个线程,而且特定线程并不局限在单个应用程序域内。也就是说,线程可以自由跨越应用程序域边界;不为每个应用程序域创建新线程。
在任意给定时间,每一线程都在一个应用程序域中执行。运行库会跟踪在哪些应用程序域中有哪些线程正在运行。虚拟主机是一种在单一主机或主机群上,实现多网域服务的方法,可以运行多个网站或服务的技术,虚拟主机之间完全独立,并可由用户自行管理虚拟并非指不存在,而是指空间是由实体的服务器延伸而来,其硬件系统可以是基于服务器群,或者单个服务器。
其技术是互联网服务器采用的节省服务器硬件成本的技术,虚拟主机技术主要应用于>简单说,进程就是在系统中运行的某一程序,用ctrl+alt+del可以调出当前进程列表,通过进程列表可以看出当前运行了哪些程序,也可看出是否中了病毒。比如进程explorerexe,是Windows资源管理器,或是Windows图形界面外壳程序,它是一个重要的系统进程。但它的正常路径是C:\Windows,如果显示是其它路径,或带参数,就很有可能是中了某中病毒。下面是基本系统进程 Csrssexe:这是子系统服务器进程,负责控制Windows创建或删除线程以及16位的虚拟DOS环境。 System Idle Process:这个进程是作为单线程运行在每个处理器上,并在系统不处理其它线程的时候分派处理器的时间。 Smssexe:这是一个会话管理子系统,负责启动用户会话。 Servicesexe:系统服务的管理工具。 Lsassexe:本地的安全授权服务。 Explorerexe:资源管理器。 Spoolsvexe:管理缓冲区中的打印和传真作业。 Svchostexe:可能会有多个Svchostexe同时运行,表明有多组服务处于活动状态进程是程序在内存中的一次运行。在Windows系统运行的进程中,可能包括系统文件、应用程序文件和恶意程序。 这里有关于进程的所有知识库,希望对你有帮助: >
厂商主要三个:VMware,Citrix,MS,三个厂商对应的较成熟产品是VMware ESXi,Xenserver,Hyper-V,都是裸机虚拟化
个人家用使用:
VMware Workstation(Windows)/Fusion(Mac)、Oracle VM VirtualBox、QEMU(Linux)
企业商用使用:
VMware vSphere系列、Citrix Xen Server、Microsoft Hyper-V、KVM、华为Fusion Sphere;
(1)公有云平台:亚马逊AWS,阿里云,腾讯云,华为云,QingCloud;
(2) 混合云平台:ZStack,BeyondCMP,CAS虚拟化平台等;
(3) 私有云平台:VisionStack杭州云容,ESCloud易捷云,Ucloud,AWCloud,ZStack等。
虚拟化、云化、超融合等,都有不可绕过的问题,就是虚拟机或者服务器对USB设备的不支持,
针对这一问题,推荐是EastFax USB Server网络远程连接调用USB方案。
VMware
微软:Hyper-V
思杰:XEN(开源)
Rethat:KVM(开源)
国内厂商还有曙光,联想,华为,云宏,华三等。
虚拟化的应用
1、Openfiler NAS和SAN
2、Opsview监测工具
3、Cacti网络绘图工具
4、M0n0wall防火墙
5、AS Communication Gateway
6、WebGUI CMS
7、BitNami WordPress
8、FOG计算机克隆工具
9、云桌面技术
服务器虚拟化是指将一台计算机(称为物理机、物理服务器)通过hypervisor虚拟为多台逻辑计算机的技术,这些逻辑计算机又被称为虚拟机(VM,Virtual Machine),每台虚拟机都拥有独立的“硬件”。虽然你可以在虚拟机的 *** 作系统中看到这些“硬件”,不过它们并不是真实存在的,而是通过hypervisor将物理机的硬件虚拟而来。虚拟机运行时,虚拟机硬件的工作实际是由物理机的硬件完成的。
hypervisor又被称为虚拟机监视器(VMM,Virtual Machine Monitor),是实现物理机虚拟为虚拟机的 *** 作系统或者软件,它为虚拟机提供虚拟的硬件资源,负责管理和分配这些资源,并确保上层虚拟机之间的相互隔离。hypervisor有两种类型:一种是 *** 作系统,直接安装在物理机上;另一种是应用程序,需要先在物理机上安装 *** 作系统,再在 *** 作系统中安装hypervisor。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)