Enables applications to run correctly when device drivers fail.

We introduce a new operating system mechanism called a shadow driver.

A shadow driver monitors device drivers and transparently recovers from drivers failures.

 

85% Windows XP crashes - driver related

Linux drivers 7X more bugs than the kernel

Why do drivers fail?

There are so many of them! (70% of Linux kernel, 35,000 in Windows XP)

Developed by many third party suppliers

Privileged access inside your kernel!

 

Solutions

Change kernel-driver interaction

Detect driver failure

Isolate fault, avoid kernel corruption

Conceal driver failure, service requests

Restart & initialize driver

 

Shadow Drivers

Kernel agents attached to each device driver

Allow transparent restart of failed drivers

Implements both kernel and driver class interfaces

 

Shadow Driver Needs

Coordination - management of shadow drivers - Shadow manager

Redirection mechanism - transparent monitoring and recovery - Taps

Isolation service - prevents driver errors from corrupting the kernel - NOOKS

Object tracking service - track kernel objects created by the driver - NOOKS

 

Passive mode: normal operation

monitor communication driver-kernel

Active mode: fault detected

restart, initialize, transfer state

respond to calls from kernel

 

Limitations

Drivers that cannot be reloaded dynamically

Permanent faults

Ad-hoc driver-kernel communication

Irreversible side effects

Fault isolation is hard

Failure detection imperfect

 

How would the system be simplified?

Clear bounds between kernel/driver space

Standard communication, clean interface

More stateless drivers, easier to restart

 

 

대부분의 시스템 failures 운영체제의 장치 드라이버에서 나타나며 예전 failure-isolation 커널를 포함한 시스템에서 커널 자체적 손실로부터 장치 failures 예방하고 설계하였다. 해서 논문에서는 kernel에서 safe initial state로부터 failed driverreload하고 restart 하게 설계하였다. Isolation 기술은 시스템의 crash frequency 줄일 있으며 이를 논문에서 제안하는 shadow drivers 적용하였다.

 

논문에서는 장치 드라이버가 실패 할 경우 지속적인 실행을 위해 응용프로그램을 활성화하기 위해 shadow drivers라는 새로운 운영 체제 메커니즘을 소개한다. Commodity OS에서 신뢰성을 개선하는 것은 가장 큰 도전 과제 중 하나이며 Shadow driver 관한 내용을 자세히 설명 하였다. Shadow driver 4가지 원칙을 반영하였는데 첫 번째로 디바이스 드라이버 failures는 드라이버의 client로부터 conceal 해야 하며, 번째로 복구 로직은 하나의 서브 시스템에 집중해야 한다. 번째로 드라이버 복구 로직은 generic 해야 하며 마지막으로 복구 서비스는 필요하지 않을 때는 작은 오버헤드가 있어야 한다. Shadow driver는 각 디바이스 드라이버에 장착 커널 에이전트이다. 또한 실패 드라이버의 transparent restart 있으며 kernel driver class interface 모두 구현한다. Shadow Driver 4가지 Needs 있는데 Coordination, Redirection mechanism, Isolation service, Object tacking service 이다. Coordination shadow driver 관리해주는 shadow manager 있으며 새로운 shadow driverinstantiate하고 디바이스 드라이버와 커널 사이에 Call Interfacetaps inject한다. Taps Redirection mechanism으로 shadow driver functioning driver kernel 통신 사이에서 모니터링하며 고장 및 복구하는 동안 component 다른 것으로 impersonate한다. Nooks OS 이용하여 isolation service Object tracking service 있으며 isolation 손상된 커널로부터 driver error 예방할수 있으며 object tracking service 통해 driver 의해 track kernel object 생성할 있다. 논문에서는 Passive mode Active mode 소개 하고 있는데 Passive mode driver kernel 통신을 모니터링하는 normal operation이며 Active mode restart, initialize, transfer state 등과 같은 fault detected operation이다. Active mode 커널로부터 call response하여 recovery 한다.

 

본 논문은 새로운 시스템의 application reliability 개선하기 위해 shadow drivers 기법을 제안하였고, shadow driverrecovery 기술에서 효과적이고 transparent하며 현존하는 드라이버의 코드를 바꾸지 않아도 된다는 것에 매력적인 장치 드라이버이다.

+ Recent posts