У меня небольшой вопрос - если в API используется запрещенные инструкции для usermode (например, in/out), как мне сделать чтобы программа работала с API но не нарушала "закон"??? Я так понимаю, что API исполняется под контексте программы что вызвала API, но если чтобы сделать нужную для программы операцию нужно использовать запрещенные инструкции? .... как это сделано в Windows или Linux.
в Linux сделано через CAP_* т. е каждый процесс обладает неким набором возможностей (СAPABILITY) при попытке выполнить некоторое привилегированное действие проверяются возможность его выполнения
А где ты нашел юзермодные апи которые юзают привилегированные инструкции? В Windows просто нет таких апи в юзермоде.
rei3er Great Я имею виду, что если например мне надо узнать время - надо с cmos считать время и например API - GetTime - то как мне сделать так чтобы программа получила время, если чтобы получить время нужно использовать привелегированые функции - in/out ???
AntiB Оформить это в виде системных вызовов. Управление передается привилегированному коду, который выполняет требуемое действие и возвращает результат. Управление передавать можно, например, через int gate. P.s. А. Таненбаум, "Современные операционные системы" в помощь.