加入收藏 | 设为首页 | 会员中心 | 我要投稿 广元站长网 (https://www.0839zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 评论 > 正文

世界强有的生命力

发布时间:2021-02-21 16:10:07 所属栏目:评论 来源:互联网
导读:仲裁者使用了比较简单的优先级管理策略,高优先级的请求可以覆盖低优先级的请求,因为没有其他调度器的分时复用机制,并且调度基本都是协作式的,所以部分应用程序只要申请高优先级的资源就可以饿死其他进程,Arachne 中并没有解决这个问题,虽然它提出可以

仲裁者使用了比较简单的优先级管理策略,高优先级的请求可以覆盖低优先级的请求,因为没有其他调度器的分时复用机制,并且调度基本都是协作式的,所以部分应用程序只要申请高优先级的资源就可以饿死其他进程,Arachne 中并没有解决这个问题,虽然它提出可以通过鉴权防止恶意资源申请,但是这仍然无法解决饥饿问题。

资源申请

当应用程序想要向仲裁者申请 CPU 资源时,会经历如下所示的几个步骤:

  1. 应用程序在发出 setRequestedCores: 后会即创建与请求核数相同的内核线程(Kernel Thread);
  2. 调用 blockUntilCoreAvailable: 阻塞这些线程等待仲裁者分配资源;
  3. 当仲裁者决定为这些线程分配资源时,它会通过 cpuset 绑定线程和 CPU、通知并唤醒应用程序的内核线程,操作系统会负责将当前线程调度到绑定的 CPU 上;
  4. Arachne 运行时中的内核线程随后会在调度器中为其他的用户线程分配合适的资源;

每一个基于 Arachne 运行时的应用程序中都会启动对应数量的内核线程,运行时中的调度器会决定执行哪些用户态线程,该模型与 Go 语言的 G-M-P 模型也比较相似[^3],它们的初衷都是尽可能降低线程切换带来的额外开销,但是 Arachne 提供了对资源更细粒度的控制


 

Arachne 中包含了三个重要的组件,分别是仲裁者、运行时和策略,其中仲裁者是运行在 Linux 上的守护进程,所有使用 Arachne 的应用程序都会利用它提供的运行时库通过 Socket 与守护进程通信,我们将依次介绍这三个组件的作用和原理。

仲裁者

核心仲裁者(Core Arbiter)是 Arachne 的核心组件,它是应用程序和操作系统的中间层,主要负责控制系统中的 CPU 并将这些资源合理地分配给不同的应用程序,该系统包含三个特点:

  • 在用户态基于 Linux 的机制实现了 CPU 管理;
  • 可以与不使用 Arachne 的应用程序同时存在;
  • 使用协作式的方法管理内核,包括优先级管理和内核抢占;

仲裁者使用 Linux 的 cpuset 特性将内核分成管理的内核和未被管理的内核,未被管理的内核会分配给机器上的其他应用程序,而被管理的内存会分配给使用 Arachne 的进程。


 

弱视和色盲的Web可访问性标准

由于视力障碍的类型和组合太多,因此有时根本没有一种适合所有人的一刀切的解决方案。视力低下是可访问性的罕见领域之一,在其中修复一个障碍实际上可能会让其他用户造成障碍。

实用的Web包含和可访问性

视力低下或色盲的用户可能非常多样化。根据低视力用户的合作调查发现用户既以通过放大的尺寸观看屏幕,又使用屏幕阅读器进行强化。因此,屏幕与屏幕阅读器之间保持一致性的重要性。

尽管残障用户的经历各不相同,但以下Web访问标准对于视力低下或色盲的人特别有用。

使用相对大小而不是像素来显示字体大小

使用像像素这样的固定测量值可能会对使用放大率的测量有害。像素大小的文本将忽略用户首选项。如果14px字体大小太小,放大后仍然太小。

而是使用类似rem或em单位。这些测量单位不会影响用户的偏好,并会带来更灵活的阅读体验。



(编辑:广元站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读