Policies are ways to choose which activities to perform. Mechanisms are the implementations that enforce policies.
개요
Mechansim and policy는 컴퓨터 과학에서, 이 둘은 분리된야 한다는 원칙중에 하나이다. 이는 Mechansim즉 구현은 Policy즉 정책과는 구별되는 영역이 있음을 시사한다. 이는 많은 운영 체제구현에서도 적용된다. 예를 들어서 CPU scheduling을 들어보자. Round Robin, MLFSQ, Xen credit scheduler와 같은 방식들은 Policy로 어떻게 스케쥴러가 작동할지를 결정한다. 그러나 그러한 스케쥴러가 구현되는 방식은 Global queue를 사용할 것인지 아니면 per cpu queue을 사용할 것인지, 어떤 큐를 사용할 것인지 내부 구현의 세밀한 부분은 어떻게 할 것인지 API는 어떻게 할 것인지와 같은 많은 구현사항을 남겨두고 있다. 즉 Mechansim과 Policy는 구별되는 개념인 것이다.
Policy와 Mechansim이 잘 분리되어 있지 않으면 다른 Polciy를 위해서 매번 모든 implementation을 일일이 수정해야 할 것이다.
kernel design
Microkernel이 Monolithic Kernel과 구분되는 지점이기도 하다. 마이크로 커널에서는 대다수의 OS 서비스들이 user level에서 작동하는 데몬 (즉 서버)를 통해서 구현되고 이는 OS와 IPC를 통해서 정보를 주고 받게 된다. 즉 마이크로 커널에서는 policy를 user level서버에 위치시키게 되는 것이다. 이를 통해서 마이크로 커널은 모놀리틱 커널과는 다른 flexibility를 가지게 된다.