1. 云计算的介绍
云计算是通过互联网提供计算服务的方法。这些计算服务包括存储、服务器、数据库、软件、分析等。云计算是一种信息技术,它允许以最少的管理工作访问共享计算源。借助云计算,人们可以在互联网上在线利用计算资源,而无需投入资金建设和维护计算基础设施。
因此,云计算使组织能够专注于其核心业务,而不是努力构建高级计算机基础设施。云计算的另一大好处是,它提供“即用即付”或“按使用付费”模式意味着企业只需为其使用的资源付费。它可以降低企业的运营成本。
一. 历史
云计算这个词首次出现在1996年(在Compaq公司内部文件中提到)。后来,该术语于2006年推广,因为amazon.com发布了其弹性云计算平台“Amazon web services”。在1993年初,云计算这个术语被用来指代分布式计算的网络。
二. 优点
云计算的兴起为组织和个人提供了许多好处,其中包括能够访问任何设备上的任何软件或资源,而无需将其安装在本地设备上。以下是一些最重要的好处。
1.灵活性
其中一个主要好处是可扩展性。如果企业的业务需求增加,则可以轻松地从远程服务器扩展自己的云计算资源。因此,云计算非常适合对资源需求不断增长的企业。
2.成本
它降低了构建和维护计算基础设施的资本成本。企业可以通过云计算轻松访问任何资源,而无需运行现场数据中心并聘请TI专家来管理此大型基础设施。
3.生产力
现场传统计算基础设施需要大量硬件设置和耗时的基础设施管理。它通过消除这些耗时的任务来提高其工作效率,并使组织能够专注于他们的核心业务。
4.表现
大多数云计算服务提供商会定期将服务升级到最新一代,以提高性能并提供快速高效的计算服务。这提高了共享其资源的组织的生产力。
5.按使用付费
另一个很大的好处是,提供商为用户提供“按需付费”服务,意味着用户只需为您使用的服务付费。这降低了组织的管理成本。
6.安全
它为企业提供了更好的安全性,因为数据存储在云中,即使丢失了笔记本电脑,也可以从任何地方访问自己的数据和资源。此外,还可以轻松地从丢失的计算机中删除自己的个人数据,以便任何人都无法访问它。
7.随时随地工作
如果用户手中有互联网连接和笔记本电脑,则可以通过互联网访问云计算资源从任何位置工作。云计算服务还提供移动应用程序,以便还可以访问智能手机上的资源。
三. 服务类型
通常,它的服务分为三类,即IaaS(基础设施即服务)、PaaS(平台即服务)和SaaS(软件即服务)。这三种云计算服务有时称为云计算堆栈,因为它们构建堆栈,因为它们位于彼此之上。以下是这三种服务的概述。
- 基础设施即服务(IaaS)
基础设施即服务是主要的服务类别之一。它向云计算提供商的个人或组织提供虚拟化计算资源,如虚拟机、存储、网络和操作系统。 - 平台即服务(PaaS)
平台即服务是一种服务类别,为开发人员提供通过全球互联网构建应用程序和服务的平台。PaaS为开发、测试和管理软件应用程序提供按需开发环境。比如配置好的Apache、Mysql或者PHP环境等 - 软件即服务(SaaS)
软件即服务是其服务的一类,通过互联网提供按需软件应用程序。云计算提供商托管和管理软件应用程序,并允许其用户连接到应用程序并通过全球互联网访问应用程序。 比如购物网站、博客网站等
-
kvm介绍
1.KVM——基于内核的虚拟机,将Linux内核变成Hypervisor的一种虚拟化技术,属于硬件级虚拟化类型的全虚拟化的解决方案,是Linux的内核特征。1.KVM——基于内核的虚拟机,将Linux内核变成Hypervisor的一种虚拟化技术,属于硬件级虚拟化类型的全虚拟化的解决方案,是Linux的内核特征。
kvm需要2个条件:
(1)硬件支持全虚拟化
(2)操作系统是Linux2.kvm的架构如图
kvm作为Hypervisor运行在宿主机内核(Host OS Kerenl),支持CPU、内存、I/O的模拟,对虚拟机的监控,并为QEMU提供实体支持。qemu作为进程运行在宿主机的用户态,它基于KVM内核的特性,为Guest OS模拟出CPU、内存、I/O等硬件,支撑Guest OS在进程中运行。
虚拟化管理服务有多种,大部分都基于libvirt实现,libvirt库是一种实现Linux虚拟化功能的LinuxAPI,它支持各种虚拟机监控程序
3. 用户态和内核态
(1)用户态与内核态概览
当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。即此时处理器在特权级最低的(3级)用户代码中运行。当正在执行用户程序而突然被中断程序中断时,此时用户程序也可以象征性地称为处于进程的内核态。因为中断处理程序将使用当前进程的内核栈。这与处于内核态的进程的状态有些类似。
核态与用户态是操作系统的两种运行级别,跟intel cpu没有必然的联系, intel cpu提供Ring0-Ring3三种级别的运行模式,Ring0级别最高,Ring3最低。Linux使用了Ring3级别运行用户态,Ring0作为内核态,没有使用Ring1和Ring2。Ring3状态不能访问Ring0的地址空间,包括代码和数据。Linux进程的4GB地址空间,3G-4G部分大家是共享的,是内核态的地址空间,这里存放在整个内核的代码和所有的内核模块,以及内核所维护的数据。用户运行一个程序,该程序所创建的进程开始是运行在用户态的,如果要执行文件操作,网络数据发送等操作,必须通过write,send等系统调用,这些系统调用会调用内核中的代码来完成操作,这时,必须切换到Ring0,然后进入3GB-4GB中的内核地址空间去执行这些代码完成操作,完成后,切换回Ring3,回到用户态。这样,用户态的程序就不能随意操作内核地址空间,具有一定的安全保护作用。
(2)用户态和内核态之间切换
a. 系统调用
这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作,比如前例中fork()实际上就是执行了一个创建新进程的系统调用。而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现,例如Linux的int 80h中断。
b. 异常
当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。
c. 外围设备的中断
当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。
这3种方式是系统在运行时由用户态转到内核态的最主要方式,其中系统调用可以认为是用户进程主动发起的,异常和外围设备中断则是被动的。
()具体的切换操作
从触发方式上看,可以认为存在前述3种不同的类型,但是从最终实际完成由用户态到内核态的切换操作上来说,涉及的关键步骤是完全一致的,没有任何区别,都相当于执行了一个中断响应的过程,因为系统调用实际上最终是中断机制实现的,而异常和中断的处理机制基本上也是一致的,关于它们的具体区别这里不再赘述。关于中断处理机制的细节和步骤这里也不做过多分析,涉及到由用户态切换到内核态的步骤主要包括:
[1] 从当前进程的描述符中提取其内核栈的ss0及esp0信息。
[2] 使用ss0和esp0指向的内核栈将当前进程的cs,eip,eflags,ss,esp信息保存起来,这个
过程也完成了由用户栈到内核栈的切换过程,同时保存了被暂停执行的程序的下一
条指令。
[3] 将先前由中断向量检索得到的中断处理程序的cs,eip信息装入相应的寄存器,开始
执行中断处理程序,这时就转到了内核态的程序执行了。