개요

Isolation이란 여러개의 User space Applicatio이 동작하는 과정에서, 서로의 리소스에 대한 접근을 제한하는 것을 말한다.

Isolation?

Isolation은 메모리스토리지처럼 컴퓨터의 물리적인 디바이스에 대한 접근을 제한하고 서로에 대한 Access를 IPC와 같은 방식을 통해서 분리시켜서 OS의 중요 역활인 서로다른 프로세서들이 서로를 침범하지 못하도록 하는 조건을 달성하는 것이다.

종류

  1. Hardware based isolation: 하드웨어를 통해서 리소스 분류를 하는 것이다. 대표적으로 TLBIntel MPK혹은 VMFUNC와 같은 하드웨어 기능들이 있다. 속도가 빠르며 단순하여 TCB가 작지만, 다른 한편으로는 하드웨어에 종속되기 때문에 하드웨어가 소프트웨어 디자인을 강제하여 Flexibility가 떨어지는 문제가 있다.
  2. Software fault isolation: 소프트웨어 적으로 Isolation을 구현하는 것이다. SFI참고.
  3. Language based isolation: 언어 단에서 Isolation을 구현하는 것이다. 예를 들어서 Rust나, C#과 같이 언어 레벨에서 리소스 관리를 안전하게 할 수 있도록 지원하는 언어들이 있다. 이러한 언어로 운영체제나 프로그램을 작성하게 되면 자연하게 컴파일러와 런타임이 리소스의 분리를 보장해 준다. 그러나 TCB가 커지는 문제와, 개발자가 반드시 그러한 언어를 사용하도록 강제하는 문제가 있다.

이외에도 여러 Isolation모델을 같이 사용하는 Hybrid model과 같은 예시가 있다.