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/