DRS是什么?

DRS是什么?,第1张

DRS
VMware Infrastructure 3 DRS (Distributed Resource Scheduler)
Vmware 分布式资源调度程序(DRS)跨聚合到逻辑资源池中的硬件资源集合来动态地分配和平衡计算容量。Vmware DRS跨资源池不间断地监控利用率,并根据反映了业务需要和不断变化的优先事务的预定义的规则,在多个虚拟机之间智能地分配可用资源。当虚拟机遇到负载增大时,Vmware DRS将通过在资源池中的物理服务器之间重新分布虚拟机来自动为其分配更多资源。
Vmware DRS使IT部门能够:
☆ 使资源优先于最重要的应用程序,以便让资源与业务目标相协调。
☆ 自动、不间断地优化硬件利用率,以响应不断变化的情况。
☆ 为业务部门提供专用的(虚拟)基础结构,同时让IT部门能够集中、全面地控制硬件。
☆ 执行零停机服务器维护。
Vmware DRS跨聚合到逻辑资源池中的硬件资源集合动态地分配和平衡计算容量。Vmware DRS跨资源池不间断地监控利用率,并在多个虚拟机之间智能地分配可用资源。Vmware DRS允许用户确定以下方面的规则和策略:决定虚拟机共享资源的方式与在多个虚拟机之间排定这些资源的优先级的方式。当虚拟机遇到负载增大时,Vmware DRS将首先根据既定的资源分配规则和策略评估其优先级,如果合理,则分配更多资源。资源是通过以下两种方式分配给虚拟机的:将虚拟机迁移到具有更多可用资源的另一台服务器上;或者通过将其他虚拟机迁移到别的服务器上而在此服务器上为该虚拟机营造更大的“空间”。通过Vmware VMtion将虚拟机实时迁移到不同的物理服务器是以对最终用户完全透明的方式完成的。
Vmware DRS可以配置为以自动或手动模式 *** 作。在自动模式下,DRS将确定以尽可能最好的方式在不同的物理服务器之间分配虚拟机,并自动将虚拟机迁移到最合适的物理服务器上。在手动模式下,Vmware DRS将提供一个把虚拟机放到最佳位置的建议,将它提供给系统管理员,由其决定是否进行更改。资源池灵活的分层结构使管理员能够将可用的IT资源与业务部门的需求相协调起来。各业务部门可以收到专用的IT资源,同时仍然能够受益于资源池的高效性。通过强健的访问特权管理,能够将一个业务部门资源池的例行基础结构任务委派给一名业务部门系统管理员。
☆ 使IT资源与业务优先事务相匹配。
确定规则和策略以决定应如何在虚拟机之间排定资源的优先级 Vmware DRS动态、智能地将IT资源分配给优先级最高的虚拟机,以确保业务与IT之间最好的协调性。
☆ 保证IT自主性和向业务部门提供的服务级别。
为业务部门提供专用的IT基础结构,同时仍能够通过资源池受益于更高的硬件利用率。
☆ 大大提高了系统管理员的生产效率。
使单个系统管理员能够监控并有效地管理大型基础结构资源池。
☆ 自动化硬件维护。
当将一个物理服务器置于维护模式下时,Vmware DRS将自动把所有虚拟机迁移到其他物理服务器上,从而实现零停机的服务器维护。
☆ 方便地添加和部署新容量。
当向资源池中添加新的物理服务器时,Vmware DRS将在服务器之间重新分配虚拟机后自动利用添加的容量。
☆ 使用Vmware DRS的资源池。将全异的硬件聚合到统一的逻辑资源池中使用Vmware DRS,资源池实现里自动、智能的优化,从而确保IT资源分配与业务优先事务相匹配,同时最大限度地提高了硬件利用率。
☆ 将资源从硬件中提取出来。无须使用提供资源的物理服务器管理资源。
☆ 灵活的分层结构。分层组织资源池,以使可用的IT资源与业务部门的需求对应起来。Vmware DRS确保实现最高的资源利用率,同时保持业务部门对其基础结构的控制权和自主权。可以根据业务需要或部门变动灵活地添加、删除或重组资源池。
☆ 在资源池之间进行隔离。在资源池中进行分配更改,而不影响其他不相关的资源池。例如,在专用于某一特定的业务部门的资源池中所做的任何分配更改将不会影响其他资源池。
☆ 访问控制和委派。在公司中不同的级别上加强资源分配管理,同时消除了瓶颈。可以将针对某个业务部门的虚拟机创建和维护任务委派给一名业务部门系统管理员,从而消除了每一项例行 *** 作都依赖中心IT部门的现象。
☆ 管理运行分布式应用程序的虚拟机组。对于运行分布式应用程序的整组虚拟机,控制了其聚合式资源分配后,便可优先分布式应用程序的服务级别。
手动和自动模式。Vmware DRS从服务器和虚拟机中收集资源利用率信息,然后生成优化虚拟机分配的建议。可以自动或手动执行这些建议。
☆ 初始放置。当一个虚拟机刚启动时,Vmware DRS会自动把该虚拟机放置到最合适的物理服务器上,或提出建议。
☆ 不间断地优化。Vmware DRS根据设定的资源分配规则以及资源利用率情况不间断地优化资源分配。可以通过使用VMtion执行虚拟机的实时迁移,以自动执行资源分配更改。另外,以手动模式 *** 作,Vmware DRS将为系统管理员提供执行建议。 服务器维护模式。在物理服务器上执行维护,而无需中断虚拟机和最终用户。当一台物理服务器置于维护模式时,Vmware DRS将确定虚拟机可以在其上运行的其他备选服务器。根据自动模式设置,虚拟机可以自动过渡到使用备选服务器,也可以由系统管理员以Vmware DRS建议为指导原则手动执行此过渡。
☆ 亲合性规则。创建用于管理为物理服务器分配虚拟机的规则。例如,出于性能原因,某些虚拟机可以始终运行在同一台服务器上。另外,指定的虚拟机可以一直运行在不同的服务器上以实现更高的可用性。
☆ Vmware DRS包括Vmware Infrastructure3 Enterprise中。
☆ DRS 还可以作为单独授予使用许可的产品随Vmware Infrastructure3 Standard和Vmware Infrastructure3 starter一起购买。
Vmware DRS需要ESX Server、virtuaiCenter Mangerment Server和VMtion。有关产品规格和系统要求的详细信息,请参考位于>正解:a
静态分配方式是给一个进程独占分配一个设备所有资源直至结束,利用率低,不会死锁(就一个用),一般用于独占性设备。
动态分配方式是可以给多个进程分配一个共享设备,共享设备的资源,可能死锁(多个进程相互竞争资源)一般用于共享设备。

1、选择服务器 *** 作系统:建议选择windows2003企业版

根据你网站采用的程序语言决定。如果是asp/aspnet的肯定要选windows。其他的如php等可以选择windows也可以选择linux

linux的版本有几十几百种类,非linux专业人事不要选择linux, *** 作很复杂。

2、安装网站运行环境

常用的运行环境就是iis,apache。iis是微软自带的组件。在添加删除程序中选择“安装删除组件”就能安装上。这类的教程网上容易搜索到。搜“iis架设”。

3、安全策略。

服务器重要的是做好安全工作,安全是门很重要的学问。通过健全的安全策略可以有效的保护好服务器。

常规做的安全策略有防火墙封端口,本地安全策略,文件夹权限,禁用不需要用的组件。关闭不需要用的服务!打好系统补丁。

安全策略是最重要的一部,网上找不到最全面的安全策略。因为每个人需要用的服务不一样,所以关闭不必要组件和服务不一样,而这些组件和服务是服务器遭到破坏的最大隐患。

其他安全思路:装虚拟机,虚拟机里再安装windows2003,然后把用到的网站端口映射在真实服务器上就可以了,这样真实服务器做安全,虚拟服务器再做安全加了一道墙,就相对安全很多了。

4、服务器分配:安全杀毒的,负载均衡的,数据库的,的,网站架构的

首先这5台服务器做不同用途,所以不需要考虑负载均衡。

顺便说一下,负载均衡是相对于大流量的网站而做的,这个“大”要大到什么程度才有必要这么做。我是做IDC的,其中一个业务就是服务

器托管,象你这种情况,如果是选择最常规最普通的带宽,那就是100M共享。这种带宽几十台服务器合用一个100M的带宽,你能用多少,假如你能用10M带宽,你用5台服务器做负载均衡,也就总共负载了50M流量,你想想100M共享,5台机器实际上不可能达到50M流量,这样别人流量就少了,交换机会做一些策略分配资源。

而我们服务器的网卡都是100M/1000M的,就流量问题一台服务器就足够应付了。购买大点的带宽,才能解决问题。

真正要用到负载均衡的是你流量大于100M的情况。你网站比方流量需要200M,这个时候网卡(服务器网卡或是接服务器的那个交换机的网口)是100M的,因为100M网卡跑不了200M流量啊!所以才需要负载均衡。

还有一种情况需要负载均衡:防止一台服务器损坏。这样一台服务器坏了还有一台均衡的服务器来解决这个问题。但是这个代价高,我们一般客户也就是准备一个备用服务器,型号一样的,到时候出了问题,把硬盘换上去就直接可以用。硬盘如果坏了,硬盘可以做RAID1。就是用2个硬盘同步数据,不可能2个硬盘同时坏。

5、服务器之间通信:对外的用外网,对内的用内网其实就可以了。省一个外网省点费用!把需要用外网的带宽买个大点的,够用的!

一、修改windows默认的远程端口
也许有高手认为自己做的挺安全的,就算是默认端口也不用被入侵以及被破密。其实修改默认的远程端口一方面是防止入侵,另外一方面也是防止被扫描影响系统的稳定。
有了解过扫描3389软件的人都知道,一般的攻击者都是扫描3389端口的,所以改成其它的端口可以防止被扫描到您的主机。为什么说另外一方面也是防止被扫描3389端口影响到系统的稳定呢?如果您的服务器默认是使用3389端口,扫描软件就会强力尝试密码字典里的密码,与您的主机建议很多的连接,占用系统里的资源导致服务器出现卡的现象。所以修改默认的远程端口是有几个好处的,希望大家重视。
二、修改windows默认的用户名
我们做安全也是针对攻击的行为而制作相对的策略,攻击的人尝试密码破解的时候,都是使用默认的用户名administrator,当你修改了用户名之后,它猜不出您的用户名,即使密码尝试上千万次都不会成功的,如果要使用用户名字典再加下密码字典,我估计攻击者就没有那个心思了,而且也不会一时间破密到您的用户名。所以修改用户名就会减低被入侵的可能。
那么修改成什么样的用户名才是比较安全呢?个人建议使用中文再加上数字再上字母这样的用户名就非常强大了。例如: 非诚勿扰ADsp0973
三、使用复杂的密码
从扫描以及破解的软件看,都是使用简单的常用的密码进行破解的,例如1q2w3e4r5t或者123456或者12345qwert等简单的组合密码,所以使用这些密码是非常不安全的。我个人就建议避免使用简单的密码防止被破解。
建议使用的密码里包含 大字字母+小字字母+数字+特殊字符。 长度至少要12以上这样会好一些。

资源管理策略就是帮助学生有效地管理和利用资源,以提高学习效率和质量的策略。
1时间管理策略
(1)统筹安排学习时间
(2)高效利用时间
(3)灵活利用零碎时间
2环境管理策略
学习环境可影响学生学习时的心境,从而影响到学习的效率,因此,为学习创设适宜的环境很重要。首先,要注意调节自然条件,如流通的空气、适宜的温度、明亮的光线以及和谐的色彩等;其次,要设计好学习的空间,如空间范围、室内布置、用具摆放等因素。
3努力管理策略
为了使学生维持自己的意志努力,需要的鼓励学生进行自我激励。这包括激发内在动机;树立为了掌握而学习的信念;选择有挑战性的任务;调节成败的标准;正确认识成败的原因;自我奖励。
4资源利用策略
资源利用策略主要包括两方面,一是学习工具的利用,指善于利用参考资料、工具书、图书馆、广播电视以及电脑与网络等。二是社会性人力资源的利用,指善于利用老师的帮助以及通过同学间的合作与讨论来加深对内容的理解。

一、服务器选购策略
选择一款合适的服务器来满足用户的需要,需要对服务器使用有一个正确的理解。在进行服务器选配时,应根据以下3个方面来考虑。
1网络环境及应用软件

指整个系统主要做什么应用。具体来说就是服务器支持的用户数量、用户类型、处理的数据量等方面内容。不同的应用软件工作机理不同,对服务器选配的要求区别很大,常见的应用可以分为文件服务、Web服务、一般应用和数据库等。
2可用性
服务器是整个网络的核心,不但在性能上能够满足网络应用需求,而且还要具有不间断地向网络客户提供服务的能力。实际上,服务器的可靠运行是整个系统稳定发挥功能的基础。
3服务器选配
服务器类型,如低端、中端和高端的分类,只是确定了服务器所能支持的最大用户数。但要用好服务器,还需要优化配置,用最小的代价获得最佳的性能。
二、常见应用分析
在中小企业环境中,常见应用可以概括为以下几种,它们对服务器的要求各有所侧重。下面为了描述方便,把服务器划分为4个功能模块,即CPU、内存、磁盘子系统和网络子系统。
1文件服务
这是最基本的应用服务,服务器相当于一个信息系统的大仓库,保证用户和服务器磁盘子系统之间快速传递数据。在服务器的各个子系统中,对系统性能影响最大的首先是网络子系统,其次是磁盘子系统,再次是内存容量,而对CPU的要求一般不高。
2数据库服务
对系统各方面(除网络子系统外)性能要求最高的应用,如财务、库存和人事管理应用等。需要高性能CPU和快速的磁盘子系统来满足大量的随机I/O请求及数据传送。服务器瓶颈依次为:内存、磁盘子系统和CPU。
3邮件服务
扮演电子邮件路由器和仓库的角色。服务器瓶颈依次为:网络子系统、内存、磁盘子系统和CPU。
4Web服务
服务器的性能是由网站内容来决定的。如果Web站点是静态的,系统瓶颈依次是:网络子系统和内存。如果Web服务器主要进行密集计算(例如动态产生Web页),系统瓶颈依次是:内存、CPU、磁盘子系统和网络子系统。
5多媒体服务
负责媒体控制及媒体流在网络上传输的功能,I/O吞吐量对服务器性能起着关键的影响。视频服务器的瓶颈依次是: 网络子系统、磁盘子系统和内存。音频服务对服务器硬件配置要求很低,现在的服务器子系统一般不会成为瓶颈。
6终端服务
执行各种应用程序并把结果传送给用户,所有负载均加在服务器上。系统的瓶颈通常依次为: 内存、CPU、网络子系统。
7主域控制器
主域控制器是网络、用户和计算机的管理中心,负责提供安全的网络工作环境。主域控制器不但响应用户的登录需求,而且在服务器间同步和备份用户帐号、WINS和DHCP数据库等,另外,主域控制器还做DNS服务。系统瓶颈是网络子系统、内存。
三、可用性的影响
一台经常死机的服务器是不可忍受的,由此所造成的损失不仅仅是时间的浪费,还可能使多日的工作量付之流水。现在越来越多的人已经意识到系统可用性的重要性。

用性通常用系统的理论正常运行时间和实际使用时间百分比来衡量。例如,我们说一系统提供24×7环境下99%的可用性,也就意味着一年可能要停机88小时,这对大部分用户来说是都是不能接受的。99999%的可用性可以保证系统一年停机的时间在 525分钟之内,但是这种系统的价格非常昂贵。
服务器的可用性主要取决于2个方面:一个是服务器本身的质量,具体体现在服务器厂商专业的设计、严格的质量控制以及市场的长期验证三点上; 另一个是对易损部件采取的保护措施,比如: 采用网卡冗余技术、磁盘阵列技术、电源冗余技术、双机或集群方案等来保证网络、磁盘、电源甚至整个主机的在线冗余。
在低档服务器中,通常采用以下措施来提高单机的可用性。
1IDE RAID
通过廉价的磁盘阵列提供数据冗余功能。磁盘故障是服务器硬件故障的主体,故障率高达52%。数据丢失的危害也是惊人的,造成大量时间、人力的浪费。目前IDE RAID能够实现RAID-0、RAID-1、RAID-0+1共三种方式,其中RAID-0不具备数据冗余功能,但能显著提高磁盘子系统的性能。
2ECC技术
可以检查出两位内存错、并能够纠正一位错,来保证内存、缓存中数据的高可靠性。
3服务器专用电源
可以保证系统有一个洁净的用电环境,减少各种隐性故障的发生,而劣质电源容易引起各种古怪故障,如电路中的高频串扰会造成系统经常性的崩溃、低频震荡则会烧毁电子元器件于无形,这类故障也增加了维修难度。
4附加措施
如防尘网的设计、多个风扇的散热(有的服务器还具有自动调节风扇转速功能),可以帮助服务器在普通环境中也能稳定运行。
四、服务器选择的多样性
目前中小企业在选购服务器时,通常在高档商用PC、伪服务器以及低档服务器三种产品之间选择。下面分别对这三种服务器作一简单分析。
1高档商用PC
PC工作在单用户和单线程环境中,与服务器的多用户环境有显著的不同。PC在设计时采用不同部件选型、配置的策略,如增强的显示性能、相对较差的网络子系统等。高档PC的目标是进军低档工作站市场。
2伪服务器
最差劲的是用PC的处理器芯片、服务器的名来充当服务器,稍微好一些的服务器采用部分服务器技术,如专业电源等。
3低档服务器
通常兼顾性能、可扩展性、可用性和可管理性等多个性能指标,兼容多种 *** 作系统以支持多种网络环境。此种产品的缺点(也是辨别方法)是:体积大(通常外形不够美观)、噪音大(散热风扇多)、功率大。
五、 *** 作系统配置
一个性能优良的信息系统除了取决于网络硬件设备的性能和网络结构设计外,很大程度地受到局域网中服务器的 *** 作系统性能的影响。作为工作组级服务器的 *** 作系统,在选择上应考虑
系统的可靠性,即是否能负担大量用户的服务请求,以较快的速度处理数据,合理地排列服务等问题;系统是否方便使用和管理,在单机和联机环境中,易用性都是最大化雇员工作效率和满意度的关键因素,与此同时,降低成本也是绝大多数企业优先考虑的问题。
目前,考虑连接局域网与广域网方面的性能,连入Internet几乎是目前所有企业用户的选择,在选择服务器 *** 作系统时一定要注意系统在兼容局域网与广域网连接方面的能力,这样才能使企业真正地融入世界。在局域网中,用户一般要实现文件共享、打印机共享、网络服务共享等功能,因而服务器的 *** 作系统必须能较好地完成上述 *** 作。目前Microsoft公司推出的Windows 2000就是这样一款针对局域网客户机的 *** 作系统软件,Windows 2000的综合特性使其很快成为所有企业中工作组级服务器上的主流 *** 作系统。其标准的安全性、可管理性和可靠性等强大功能,是目前小企业用户首选的 *** 作系统。
另外,对于某些高级用户,尤其是政府等对安全比较关注的用户来说,他们本身具备较强的技术实力,可以考虑采用Linux *** 作系统。
目前,服务器厂商还推出完全方案化的产品——功能服务器,即把 *** 作系统和应用系统直接安装在服务器中,以实现某些特定功能,如长城集团推出的E 通教育功能服务器,它主要是采用Linux系统,具有非常好的稳定性和易用性,而且不需要用户对Linux有深入了解就可以使用。
六、服务器选配方法
国内市场上,服务器厂商多达十几个,低档服务器更有几十款之多。下面结合至翔899来谈谈服务器配置问题。
1磁盘子系统
上面已经提过磁盘的故障概率及危害,不如直接配置双硬盘做RAID-1,因为现在硬盘的价格已降到了冰点,既提高了磁盘读取数据的性能,又保护了数据,可使用户高枕无忧。令Linux用户放心的是,至翔899的IDE RAID支持Linux。
2内存
在小型用户环境中,内存通常得不到重视,用户往往花费更多的时间关注CPU的性能。由于Windows 2000就要消耗100MB以上的内存,再加上应用,所以系统最少应配置256MB内存,配置到1GB也不为过。请牢牢记住,提高内存容量通常是提高服务器性能的最有效的方法。
3CPU
通常不会成为系统瓶颈。但对于需要CPU进行密集型的运算,如数据库类应用,CPU的作用就很巨大。记住:如果再增加一颗CPU,内存容量要同时加倍,才能有效发挥CPU的性能。
4网卡
低端应用环境中,100Mbps网卡足够了。至翔899的网卡还支持网络冗余(ALB)功能。有兴趣的用户可以另买一款同型号的Intel 82559网卡进行网卡绑
定,既提高网络子系统的吞吐量,又保证了线路冗余。
让我们再看看文章开头的例子,可以发现那台部门级服务器用于6人工作组中,CPU过于强大,而文件服务对CPU的依赖又不大,显然是个浪费,而如果该部门级服务器内存配置过低的话,这台服务器的性能就会大打折扣。
最后,需要指出的是,小企业非常关心服务器的可扩充性。可扩充性主要体现在计算性能的提升和存储容量的增长,而金长城至翔新899,在价格完全满足小型网络用户需求的情况下,仍然在这两方面有充分考虑。至翔新899采用双处理器的系统设计,目前,设计主频已达到14GHz,用户可以在初期购买单CPU配置,待到企业增长或数据量增大时,可以升级为双CPU,其运算能力将大大提高,也保护了先前的投资。至翔新899服务器在存储方面,采用先进的 IDE RAID技术,最大支持160GB×4的硬盘容量,为用户的业务扩展预留了足够的空间。
用途用户数量CPU数量内存大小(MB)硬盘文件/域控制服务器60左右12562硬盘RAID-1数据库应用服务器10左右15122硬盘 RAID-1综合应用服务器30左右15122硬盘RAID-1无盘站服务器60左右15122硬盘RAID-1视频服务器50(并发)12564硬盘 RAID-0
厂商型号CPU最高CPU主频(GHz)CPU个数(最大)最大内存(GB)二级缓存(KB)内置硬盘架数量(最大)磁盘控制器I/O扩展槽系统总线(MHz)长城至翔1800Pentium 417135124个IDE控制器,可选的IDE RAID功能,可以实现RAID0/1/0+15个32位/33MHz PCI扩展槽400至翔2800Intel PentiumⅢ Tualatin14245124个集成2个Ultra ATA/100通道的Promise IDE RAID控制芯片,支持RAID 0/1/0+1或JBOD5个32位/33MHz PCI扩展槽133联想万全T 100Pentium 42125124个ATA100 IDE控制器,Ultra160 SCSI控制器5个PCI 22标准扩展槽400万全T 200PentiumXeon22165124个ATA100 IDE控制器,集成双通道Ultra160 SCSI控制器2个64位/133MHz PCI扩展槽,1个64位/100MHz PCI扩展槽,2个64位/66MHz PCI扩展槽400浪潮
NP60Pentium 4
2212256/5125个IDE硬盘或4个SCSI硬盘集成双通道ATA100 IDE控制器;可选IDE RAID控制器能实现RAID 0/1;可选Ultra160 SCSI4个32位/33MHz PCI,1个ISA扩展槽,1个AGP扩展槽,1个CNR扩展槽400NP220TPentium Ⅲ1262155125块IDE硬盘或4块SCSI硬盘集成双通道ATA100 IDE 控制器5个32位/33MHz PCI扩展槽,1个16位的ISA扩展槽133方正园明1050DPentium 4212256/5125个IDE5个32位/33MHz PCI扩展槽400园明1250DPentium Ⅲ1422256/5125个集成ATA 100 IDE RAID控制器5个32位/33MHz PCI扩展槽,1个16位的ISA扩展槽133
总之,企业选购服务器,一定要根据自己的实际应用情况,合理选择型号和配置,做到既满足需求,又经济实惠。

您好!
可以使用WINDOWS自带的ALP策略功能,建立一个用户组以分配权限,然后将需要的用户加入进组。
将多了用户加入组也比对用户一个一个分类配置要简单的多。
以上。

我们知道,进程运行需要各种各样的系统资源,如内存、文件、打印机和最

宝贵的 CPU 等,所以说,调度的实质就是资源的分配。系统通过不同的调度算法(Scheduling Algorithm)来实现这种资源的分配。通常来说,选择什么样的调度算法取决于资源分配的策略(Scheduling Policy)。

有关调度相关的结构保存在 task_struct 中,如下:

active_mm 是为内核线程而引入的,因为内核线程没有自己的地址空间,为了让内核线程与普通进程具有统一的上下文切换方式,当内核线程进行上下文切换时,让切换进来的线程的 active_mm 指向刚被调度出去的进程的 active_mm(如果进程的mm 域不为空,则其 active_mm 域与 mm 域相同)。

在 linux 26 中 sched_class 表示该进程所属的调度器类有3种:

进程的调度策略有5种,用户可以调用调度器里不同的调度策略:

在每个 CPU 中都有一个自身的运行队列 rq,每个活动进程只出现在一个运行队列中,在多个 CPU 上同时运行一个进程是不可能的。

运行队列是使用如下结构实现的:

tast 作为调度实体加入到 CPU 中的调度队列中。

系统中所有的运行队列都在 runqueues 数组中,该数组的每个元素分别对应于系统中的一个 CPU。在单处理器系统中,由于只需要一个就绪队列,因此数组只有一个元素。

内核也定义了一下便利的宏,其含义很明显。

Linux、c/c++服务器开发篇-------我们来聊聊进程的那些事

Linux内核 进程间通信组件的实现

学习地址:C/C++Linux服务器开发/后台架构师零声教育-学习视频教程-腾讯课堂

需要C/C++ Linux服务器架构师学习资料加qun812855908获取(资料包括 C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg 等),免费分享

在分析调度流程之前,我们先来看在什么情况下要执行调度程序,我们把这种情况叫做调度时机。

Linux 调度时机主要有。

时机1,进程要调用 sleep() 或 exit() 等函数进行状态转换,这些函数会主动调用调度程序进行进程调度。

时机2,由于进程的时间片是由时钟中断来更新的,因此,这种情况和时机4 是一样的。

时机3,当设备驱动程序执行长而重复的任务时,直接调用调度程序。在每次反复循环中,驱动程序都检查 need_resched 的值,如果必要,则调用调度程序 schedule() 主动放弃 CPU。

时机4 , 如前所述, 不管是从中断、异常还是系统调用返回, 最终都调用 ret_from_sys_call(),由这个函数进行调度标志的检测,如果必要,则调用调用调度程序。那么,为什么从系统调用返回时要调用调度程序呢?这当然是从效率考虑。从系统调用返回意味着要离开内核态而返回到用户态,而状态的转换要花费一定的时间,因此,在返回到用户态前,系统把在内核态该处理的事全部做完。

Linux 的调度程序是一个叫 Schedule() 的函数,这个函数来决定是否要进行进程的切换,如果要切换的话,切换到哪个进程等。

从代码分析来看,Schedule 主要完成了2个功能:

进程上下文切换包括进程的地址空间的切换和执行环境的切换。

对于 switch_mm 处理,关键的一步就是它将新进程页面目录的起始物理地址装入到寄存器 CR3 中。CR3 寄存器总是指向当前进程的页面目录。

switch_to 把寄存器中的值比如esp等存放到进程thread结构中,保存现场一边后续恢复,同时调用 __switch_to 完成了堆栈的切换。

在进程的 task_struct 结构中有个重要的成分 thread,它本身是一个数据结构 thread_struct, 里面记录着进程在切换时的(系统空间)堆栈指针,取指令地址(也就是“返回地址”)等关键性的信息。

关于__switch_to 的工作就是处理 TSS (任务状态段)。

TSS 全称task state segment,是指在 *** 作系统进程管理的过程中,任务(进程)切换时的任务现场信息。

linux 为每一个 CPU 提供一个 TSS 段,并且在 TR 寄存器中保存该段。

linux 中之所以为每一个 CPU 提供一个 TSS 段,而不是为每个进程提供一个TSS 段,主要原因是 TR 寄存器永远指向它,在任务切换的适合不必切换 TR 寄存器,从而减小开销。

在从用户态切换到内核态时,可以通过获取 TSS 段中的 esp0 来获取当前进程的内核栈 栈顶指针,从而可以保存用户态的 cs,esp,eip 等上下文。

TSS 在任务切换过程中起着重要作用,通过它实现任务的挂起和恢复。所谓任务切换是指,挂起当前正在执行的任务,恢复或启动另一任务的执行。

在任务切换过程中,首先,处理器中各寄存器的当前值被自动保存到 TR(任务寄存器)所指定的任务的 TSS 中;然后,下一任务的 TSS 被装入 TR;最后,从 TR 所指定的 TSS 中取出各寄存器的值送到处理器的各寄存器中。由此可见,通过在 TSS 中保存任务现场各寄存器状态的完整映象,实现任务的切换。

因此,__switch_to 核心内容就是将 TSS 中的内核空间(0级)堆栈指针换成 next->esp0。这是因为 CPU 在穿越中断门或者陷阱门时要根据新的运行级别从TSS中取得进程在系统空间的堆栈指针。

thread_structesp0 指向进程的系统空间堆栈的顶端。当一个进程被调度运行时,内核会将这个变量写入 TSS 的 esp0 字段,表示这个进程进入0级运行时其堆栈的位置。换句话说,进程的 thread_struct 结构中的 esp0 保存着其系统空间堆栈指针。当进程穿过中断门、陷阱门或者调用门进入系统空间时,处理器会从这里恢复期系统空间栈。

由于栈中变量的访问依赖的是段、页、和 esp、ebp 等这些寄存器,所以当段、页、寄存器切换完以后,栈中的变量就可以被访问了。

因此 switch_to 完成了进程堆栈的切换,由于被切进的进程各个寄存器的信息已完成切换,因此 next 进程得以执行指令运行。

由于 A 进程在调用 switch_to 完成了与 B 进程堆栈的切换,也即是寄存器中的值都是 B 的,所以 A 进程在 switch_to 执行完后,A停止运行,B开始运行,当过一段时间又把 A 进程切进去后,A 开始从switch_to 后面的代码开始执行。

schedule 的调用流程如下:






欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13177373.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-16
下一篇 2023-06-16

发表评论

登录后才能评论

评论列表(0条)

保存