IT之道-艾锑知道

您当前位置: 主页 > 资讯动态 > IT知识库 >

IT系统运维:用户态和内核态的理解与区别


2020-03-29 20:44 作者:艾锑无限 浏览量:

企业上云为什么是数字化转型升级的第一步

 
 

 
3月17日我们分享了一篇文章,”无企业,不上云”,被各大平台转载分享,这让我们看到了互联网的热情,也看到了企业对上云的渴望,艾锑无限作为阿里云的战略合作伙伴,我们更乐意帮助企业上云,让更多的企业迈向数字化时代.
 
我们相信每一家企业都是IT企业,每一家企业都是互联网企业,每一家企业都是数字化企业,这一切的基础都是基于云,云将会成为企业最重要的基础设施,就像水、媒、电一样的重要.
 
 

 
那为什么云对于企业来说如此重要呢,主要有以下五个方面:

1、应变力
云端快速部署、自由扩展的优势,使网站、APP等应用上线、迭代更加灵活,提高了信息系统的运营效率。云以突出的应变能力,适应多变的企业信息化进程,降低试错成本,加快研发进度,增强企业创新的信心。

2、稳定性
云环境为企业业务创造了一个稳定、可靠的空间,使用户体验更好,客户满意度显著提升。互联网产品获得流量和用户粘性的核心是用户体验,在线用户流畅访问,便捷操作,才会有较高的市场占有率。

3、性价比
云计算优异的性价比,为企业信息化大幅降低了成本。使企业可以把更多的资金,投入到业务创新中。传统企业转型升级存在着大量的不确定性,低成本的云计算帮助企业消除了资金上的顾虑。

4、安全性

转型中的传统企业,因对网络环境不熟悉,担心网络攻击、数据泄露等安全问题。云计算服务商有专业的技术和高效的服务体系,帮助企业保护数据安全、规避安全风险和提供海量数据查询,企业可以专注于网站和应用程序,而不是基础设施。
 
5、扩展性
 
在企业信息化的成本结构中,购买硬件软件成本占比很高,而实际用于开发的支出就相应很低,并且耗费时间较长。如果完全基于云开架设IT系统,几个小时就可完成基本框架。如果业务增加,就是直接购买服务器,边际效益很低,采用云后,由于云计算的高扩展性,通过边际效益可实现成本下降。
 
 

 
综上所述,未来云就像我们用的水、电、媒一样成为企业的必须品,也会是最重要的基础设施一个部分,所以数字化转型的企业,首先要上云,再考虑如何整合和重构企业内部的数据,从而让计算起到主导作用,最终实现企业数字化转型终极目标.
 
 it系统运维用户态和内核态的理解与区别
 
 
1、linux进程有4GB地址空间,如图所示:

 

 
3G-4G大部分是共享的,是内核态的地址空间。这里存放整个内核的代码和所有的内核模块以及内核所维护的数据。
 
2、特权级的概念:

对于任何操作系统来说,创建一个进程是核心功能。创建进程要做很多工作,会消耗很多物理资源。比如分配物理内存,父子进程拷贝信息,拷贝设置页目录页表等等,这些工作得由特定的进程去做,所以就有了特权级别的概念。最关键的工作必须交给特权级最高的进程去执行,这样可以做到集中管理,减少有限资源的访问和使用冲突。inter x86架构的cpu一共有四个级别,0-3级,0级特权级最高,3级特权级最低。
 
3、用户态和内核态的概念:

当一个进程在执行用户自己的代码时处于用户运行态(用户态),此时特权级最低,为3级,是普通的用户进程运行的特权级,大部分用户直接面对的程序都是运行在用户态。Ring3状态不能访问Ring0的地址空间,包括代码和数据;当一个进程因为系统调用陷入内核代码中执行时处于内核运行态(内核态),此时特权级最高,为0级。执行的内核代码会使用当前进程的内核栈,每个进程都有自己的内核栈。用户运行一个程序,该程序创建的进程开始时运行自己的代码,处于用户态。如果要执行文件操作、网络数据发送等操作必须通过write、send等系统调用,这些系统调用会调用内核的代码。进程会切换到Ring0,然后进入3G-4G中的内核地址空间去执行内核代码来完成相应的操作。内核态的进程执行完后又会切换到Ring3,回到用户态。这样,用户态的程序就不能随意操作内核地址空间,具有一定的安全保护作用。这说的保护模式是指通过内存页表操作等机制,保证进程间的地址空间不会互相冲突,一个进程的操作不会修改另一个进程地址空间中的数据。
 
4、用户态和内核态的切换

当在系统中执行一个程序时,大部分时间是运行在用户态下的,在其需要操作系统帮助完成一些用户态自己没有特权和能力完成的操作时就会切换到内核态。
用户态切换到内核态的3种方式

(1)系统调用

这是用户态进程主动要求切换到内核态的一种方式。用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作。例如fork()就是执行了一个创建新进程的系统调用。系统调用的机制和新是使用了操作系统为用户特别开放的一个中断来实现,如Linux的int 80h中断。

(2)异常

当cpu在执行运行在用户态下的程序时,发生了一些没有预知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关进程中,也就是切换到了内核态,如缺页异常。

(3)外围设备的中断

当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令而转到与中断信号对应的处理程序去执行,如果前面执行的指令时用户态下的程序,那么转换的过程自然就会是 由用户态到内核态的切换。如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后边的操作等。

这三种方式是系统在运行时由用户态切换到内核态的最主要方式,其中系统调用可以认为是用户进程主动发起的,异常和外围设备中断则是被动的。从触发方式上看,切换方式都不一样,但从最终实际完成由用户态到内核态的切换操作来看,步骤有事一样的,都相当于执行了一个中断响应的过程。系统调用实际上最终是中断机制实现的,而异常和中断的处理机制基本一致。
 
5、用户态到内核态具体的切换步骤:

(1)从当前进程的描述符中提取其内核栈的ss0及esp0信息。

(2)使用ss0和esp0指向的内核栈将当前进程的cs,eip,eflags,ss,esp信息保存起来,这个过程也完成了由用户栈到内核栈的切换过程,同时保存了被暂停执行的程序的下一条指令。

(3)将先前由中断向量检索得到的中断处理程序的cs,eip信息装入相应的寄存器,开始执行中断处理程序,这时就转到了内核态的程序执行了。


 

相关文章

IT外包服务
二维码 关闭