OSDev

для всех
Текущее время: 14 окт 2024, 21:19

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 15 ]  На страницу Пред.  1, 2
Автор Сообщение
СообщениеДобавлено: 08 окт 2019, 08:13 

Зарегистрирован: 26 янв 2019, 14:00
Сообщения: 34
SII, pavia, спасибо большое!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 окт 2019, 14:46 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 972
Откуда: Дагоба
Sebt писал(а):
А как реализуется обмен сообщениями? Я уловил вашу аналогию с почтовым ящиком, идея очень интересно звучит, мне уже чисто из любопытства интересно стало как это) Получается создается некий дополнительный буфер для каждого нового процесса? И все равно не могу себе представить как именно обращаясь к драйверу мы сможем запросить чтото конкретное сделать. Поидее ведь нужно заранее знать что он может.

Любое сообщение должно состоять из кода (или типа) сообщения и последующих за ним данных, специфичных для данного сообщения. Соответственно для каждого типа сообщений должен быть заранее предопределён формат данных и их общий размер.
Возможности драйвера можно определять его дескриптором, который драйвер сообщает системе при своём запуске. В нём драйвер указывает тип устройства, класс, производителя, поддерживаемые функции, и т.д.
Если устройство стандартное, то набор и формат поддерживаемых сообщений определён операционной системой. В таком случае система самостоятельно сможет работать с устройством. Примером таких устройств являются дисковые накопители, HID-устройства.
Если устройство нестандартное, то система с ним сама работать не может (и не работает). Но приложение, которое должно работать с устройством, может узнать о его наличии в системе через системный механизм энумерации устройств. В этом случае формат сообщений закрыт для системы и поддерживается только на уровне соглашения между драйвером и прикладным ПО, работающим с этим драйвером. Примером таких устройств являются телевизионные тюнеры.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 окт 2019, 14:46 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 972
Откуда: Дагоба
pavia писал(а):
SII писал(а):
ну а нынешние компиляторы вовсю стремятся сделать любой ход хреновым; лично у меня стойкое ощущение, что Фортран и ПЛ/1 из ОС/360 конца 60-х/начала 70-х давали лучший код, чем современные компиляторы)

И трава была зеленее.

Взял несколько компиляторов, посмотрел, какой код они генерируют. Строка исходного текста:
Код:
x /= 2;

где "x" — беззнаковое целое. Компилятор Clang родил следующее:
– Завёл ячейку памяти, в которой хранится константа 2.
– Загрузил переменную "x".
– Загрузил из памяти константу 2.
– Поделил (sic!) на неё "x".
– Сохранил в памяти результат.
К слову о последнем пункте: с переменной "x" проводились дальнейшие операции, изменяющие её.
Вот так работают некоторые современные компиляторы.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 окт 2019, 19:16 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Цитата:
К слову о последнем пункте: с переменной "x" проводились дальнейшие операции, изменяющие её.

Видимо вы что-то сделали не так. У меня такого безобразия не наблюдается даже с отключенной оптимизацией.
https://godbolt.org/z/NTy8GI

Вот как надо и ничего лишнего. И да почему вы компилировали без оптимизации?
Изображение


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 окт 2019, 22:26 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 972
Откуда: Дагоба
Возражения приняты.
Во-первых, у меня старая версия (3.7.0), та, рабочий билд которой достаточно давно удалось получить под Windows.
Во-вторых, действительно оказалась отключена оптимизация. Собс-но, Клангом я особо не пользовался, он был только для проверки корректности интерпретации им языка, не для скорости. Видимо, поэтому оптимизация пролетела мимо внимания.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB