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 driver를 reload하고 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 driver를 instantiate하고 디바이스 드라이버와 커널 사이에 Call Interface로 taps을 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 driver는 recovery 기술에서 효과적이고 transparent하며 현존하는 드라이버의 코드를 바꾸지 않아도 된다는 것에 매력적인 장치 드라이버이다.
'Past Material' 카테고리의 다른 글
DASH-SHVC 스트리밍에서 스토리지 스케줄링에 의한 사용자 QoS 영향 분석 (0) | 2017.05.12 |
---|---|
The Design and Implementation of Microdrivers (0) | 2017.05.12 |
Improving the Reliability of Commodity Operating System. (0) | 2017.05.12 |
An I/O Architecture for Microkernel-Based Operating Systems (0) | 2017.05.12 |
Two-phase Authentication Protocol for Wireless Sensor Networks in Distributed IoT Applications (0) | 2017.05.12 |