11

我在浏览我的操作系统教科书时遇到了“分离机制和策略”的概念。我不确定这意味着什么,所以我查看了我必须承认的维基百科,也没有太大帮助。

机制与策略的分离[1]是计算机科学的设计原则。它指出机制(控制操作授权和资源分配的系统实现的那些部分)不应规定(或过度限制)策略,根据哪些决策来决定授权哪些操作以及分配哪些资源.

有人可以淡化这一点,并在可能的情况下通过一些例子来解释separation of mechanism and policy在操作系统的上下文中意味着什么?

4

4 回答 4

15

这就是这对 X-Windows 系统的意义。

X-Windows,在最底层,提供了一种操作屏幕区域的方法,称为“窗口”。它还提供了一种接收窗口内发生的事件的方法。

但是 X-Windows 没有提到标题栏、菜单、滚动条或任何类似的东西。它也没有说明特定应用程序可以使其窗口占据整个屏幕或何时必须将窗口移出屏幕的规则。它确实为一个应用程序提供了一种方法来强制其他应用程序在使用顶级窗口执行操作之前询问它的权限,但不提供任何此类应用程序作为基本服务器的一部分。

X-Windows 是关于机制的,而不是策略。

该策略由小部件工具包、窗口管理器以及稍后添加到系统的其他内容提供。例如,许多小部件工具包为滚动条使用一组重叠的子窗口,并为这些子窗口请求鼠标事件,以便它们可以检测单击和拖动操作并使子窗口做出适当的响应。

这就是为什么 GNOME 和 KDE 可以在同一个显示器上相处,以及为什么对面板或桌面一无所知的旧 X-Windows 程序仍然可以在现代系统上正常工作的原因。

于 2011-01-24T16:46:13.113 回答
4

对于*nix操作系统,大体思路是安全系统由内核实现,授权系统由用户空间实现。

如此多的人嘲笑(无论是公正的还是其他的)全能的 root 和 suid 二进制文件是有效分离所必需的。可以完全替换身份验证机制,同时保持安全性不变(ssh 会这样做,这就是它在 Windows 上使用未记录 API 的原因)。

于 2011-01-24T16:49:22.170 回答
0

尽管这是一个非常古老的问题,但我仍然想分享我的观点。

这段话之所以让人迷惑,是因为“机制”和“政策”两个字。在软件工程的背景下,我认为将“机制”替换为“接口”,将“策略”替换为“实现”总是可以的。

至于接口和实现的分离,如果你是用Java编程的,那么你对这两个概念一定很熟悉。通过这样做,我们可以将“做什么”与“怎么做”隔离开来,这有助于我们实现系统解耦。

为什么要脱钩?解耦提高了代码的可扩展性和可维护性,这意味着我们可以在需求发生变化时编写更少的代码:)

从“GoF 设计模式”中了解更多关于解耦的技术。

于 2020-10-28T08:46:03.230 回答
0

机制和政策的区别 机制决定怎么做,政策决定做什么。

策略与机制的分离是非常重要的原则,如果以后要更改策略决策,它可以提供最大的灵活性。

于 2020-12-12T00:39:12.460 回答