Існує емуляція інтерфейсу програмування додатків (англ. Application Programming Interfacе – набір методів, функцій, який програмісти можуть використовувати для доступу до функціональних програмних компонентів ОС, – програми, модулі, бібліотеки).
Зазвичай додатки (програми користувача) функціонують в захищеному адресному просторі, викликаючи через API складові операційної системи. Якщо дві операційні системи сумісні за своїми API (наприклад, Windows 98 і Windows 2000), то програми, розроблені для однієї з них, можуть використовуватись і для роботи в іншій. Якщо дві операційні системи несумісні за своїми API (наприклад, Windows 2000 і Linux), то існує спосіб перехоплювати звернення додатків до API і емулювати роботу однієї операційної системи засобами іншої операційної системи.
При такому підході можна поставити одну операційну систему і працювати одночасно як з програмами, розробленими для роботи з нею, так і з програмами, розробленими для іншої операційної системи. Оскільки весь код додатка виконується без емуляції ОС, а лише виклики API емулюються, втрата в продуктивності незначна. Через те, що в багатьох програмах використовуються недокументовані функції API або звернення до операційної системи в обхід API, навіть при використанні дуже якісних емуляторів API виникають проблеми сумісності, що дозволяє використовувати не більше 70% від загального числа програм. Крім того, підтримувати емуляцію API операційної системи (наприклад такої, як Windows), що бурхливо розвивається, дуже нелегко і більшість емуляторів API так і залишається емуляторами якоїсь конкретної версії операційної системи. Так, в Windows NT/2000 до цих пір вбудований емулятор для програм, орієнтованих на використання OS/2 версії 1.x, а в останніх версіях OS/2 Warp 4 є можливість запуску програм, орієнтованих на Windows 3.11). Але найбільший недолік способу емуляції API – це його строга орієнтація на конкретну операційну систему. Для того, щоб запустити в ньому програми, орієнтовані на іншу операційну систему, необхідно все переписувати з самого початку.
Достарыңызбен бөлісу: |