OSDev http://osdev.su/ |
|
Организация пользовательского пространства http://osdev.su/viewtopic.php?f=5&t=3887 |
Страница 2 из 2 |
Автор: | Sebt [ 08 окт 2019, 08:13 ] |
Заголовок сообщения: | Re: Организация пользовательского пространства |
SII, pavia, спасибо большое! |
Автор: | Yoda [ 08 окт 2019, 14:46 ] |
Заголовок сообщения: | Re: Организация пользовательского пространства |
Sebt писал(а): А как реализуется обмен сообщениями? Я уловил вашу аналогию с почтовым ящиком, идея очень интересно звучит, мне уже чисто из любопытства интересно стало как это) Получается создается некий дополнительный буфер для каждого нового процесса? И все равно не могу себе представить как именно обращаясь к драйверу мы сможем запросить чтото конкретное сделать. Поидее ведь нужно заранее знать что он может. Любое сообщение должно состоять из кода (или типа) сообщения и последующих за ним данных, специфичных для данного сообщения. Соответственно для каждого типа сообщений должен быть заранее предопределён формат данных и их общий размер. Возможности драйвера можно определять его дескриптором, который драйвер сообщает системе при своём запуске. В нём драйвер указывает тип устройства, класс, производителя, поддерживаемые функции, и т.д. Если устройство стандартное, то набор и формат поддерживаемых сообщений определён операционной системой. В таком случае система самостоятельно сможет работать с устройством. Примером таких устройств являются дисковые накопители, HID-устройства. Если устройство нестандартное, то система с ним сама работать не может (и не работает). Но приложение, которое должно работать с устройством, может узнать о его наличии в системе через системный механизм энумерации устройств. В этом случае формат сообщений закрыт для системы и поддерживается только на уровне соглашения между драйвером и прикладным ПО, работающим с этим драйвером. Примером таких устройств являются телевизионные тюнеры. |
Автор: | Yoda [ 08 окт 2019, 14:46 ] |
Заголовок сообщения: | Re: Организация пользовательского пространства |
pavia писал(а): SII писал(а): ну а нынешние компиляторы вовсю стремятся сделать любой ход хреновым; лично у меня стойкое ощущение, что Фортран и ПЛ/1 из ОС/360 конца 60-х/начала 70-х давали лучший код, чем современные компиляторы) И трава была зеленее. Взял несколько компиляторов, посмотрел, какой код они генерируют. Строка исходного текста: Код: x /= 2; где "x" — беззнаковое целое. Компилятор Clang родил следующее: – Завёл ячейку памяти, в которой хранится константа 2. – Загрузил переменную "x". – Загрузил из памяти константу 2. – Поделил (sic!) на неё "x". – Сохранил в памяти результат. К слову о последнем пункте: с переменной "x" проводились дальнейшие операции, изменяющие её. Вот так работают некоторые современные компиляторы. |
Автор: | pavia [ 08 окт 2019, 19:16 ] |
Заголовок сообщения: | Re: Организация пользовательского пространства |
Цитата: К слову о последнем пункте: с переменной "x" проводились дальнейшие операции, изменяющие её. Видимо вы что-то сделали не так. У меня такого безобразия не наблюдается даже с отключенной оптимизацией. https://godbolt.org/z/NTy8GI Вот как надо и ничего лишнего. И да почему вы компилировали без оптимизации? |
Автор: | Yoda [ 08 окт 2019, 22:26 ] |
Заголовок сообщения: | Re: Организация пользовательского пространства |
Возражения приняты. Во-первых, у меня старая версия (3.7.0), та, рабочий билд которой достаточно давно удалось получить под Windows. Во-вторых, действительно оказалась отключена оптимизация. Собс-но, Клангом я особо не пользовался, он был только для проверки корректности интерпретации им языка, не для скорости. Видимо, поэтому оптимизация пролетела мимо внимания. |
Страница 2 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |