摘要 |
A system, method, and computer readable medium for eliminating unnecessary ring transitions is described. Often, a requested system service or I/O operation can be performed entirely at a higher ring level, such as Ring 3, with no need to transition to a lower ring. In these cases, the software interrupt or I/O instruction which generates the ring transition is replaced by a call to a program executing at the higher ring level. Thus, the software interrupt instruction or I/O instruction is redirected to code that resides at the same protection level and emulates the effects of the instruction, resulting in improved execution speed. In the Intel 80x86 family of microprocessors, both the software interrupt instruction and the I/O instruction take two bytes to encode. It is thus possible to replace the instruction with the op-code for a segment:offset far call, letting the instruction stream dictate the offset for the call. By manipulating the base address of the segment, the target entry point can be controlled, and no ring transitions are needed to process the resulting call. After an instruction has been patched once, it remains patched for each subsequent execution. Thus, each software interrupt instruction and/or I/O instruction need only be patched once.
|