Откуда такая неизбывная приверженность к константам?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 06.09.19 09:34
Оценка:
Сперва были и 640 кб доступной обычной памяти, и жестко заданные адреса областей внешних устройств, хотя все это можно было запихать в BIOS, и возвращать конкретные адреса по запросам. Затем в 32-разрядной винде было 2+2 Гб, которые героическими усилиями переделали в 3+1. В 64-разрядной винде снова 8+8 Тб. Сейчас читаю про макось — и там тоже сплошные явно определенные константы.

Это что-то вроде профессионального бега по граблям, или действительно есть серьезная необходимость изначально задавать эти адреса/размеры глобальными константами вместо того, чтобы определить их только внутри ядра, а всем внешним модулям (даже драйверам и системным службам) возвращать конкретные значения исключительно по запросам)?
адресное пространство address space константа
Re: Откуда такая неизбывная приверженность к константам?
От: aik Австралия  
Дата: 09.09.19 00:40
Оценка: +1
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Сперва были и 640 кб доступной обычной памяти, и жестко заданные адреса областей внешних устройств, хотя все это можно было запихать в BIOS, и возвращать конкретные адреса по запросам. Затем в 32-разрядной винде было 2+2 Гб, которые героическими усилиями переделали в 3+1. В 64-разрядной винде снова 8+8 Тб.


Это что ещё за 8+8 такое, просто любопытно? А причина может быть простая — одним битом удобно управлять трафиком на системной шине: нет бита == RAM, есть бит == MMIO, и это, например, прибито гвоздями в железе.
Re[2]: Откуда такая неизбывная приверженность к константам?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 10.09.19 07:12
Оценка:
Здравствуйте, aik, Вы писали:

aik>Это что ещё за 8+8 такое


Ошибся — 8 Гб там только на процессы, адреса ядра размазаны с 0xFFFF0800'00000000 по 0xFFFFFFFF'FFFFFFFF. Но все равно ж это явно определенные константы — какая необходимость жестко фиксировать их наперед?

aik>А причина может быть простая — одним битом удобно управлять трафиком на системной шине: нет бита == RAM, есть бит == MMIO, и это, например, прибито гвоздями в железе.


В каких-нибудь микроконтроллерах это может быть и удобным, но не в вычислительных же (в широком смысле) системах.
Re[3]: Откуда такая неизбывная приверженность к константам?
От: Pzz Россия https://github.com/alexpevzner
Дата: 10.09.19 13:39
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Ошибся — 8 Гб там только на процессы, адреса ядра размазаны с 0xFFFF0800'00000000 по 0xFFFFFFFF'FFFFFFFF. Но все равно ж это явно определенные константы — какая необходимость жестко фиксировать их наперед?


В 64-х битах такое разделение диктует железо.
Re[4]: Откуда такая неизбывная приверженность к константам?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 10.09.19 13:43
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>В 64-х битах такое разделение диктует железо.


Любое 64-разрядное железо диктует одну и ту же схему разделения адресов?
Re[5]: Откуда такая неизбывная приверженность к константам?
От: Pzz Россия https://github.com/alexpevzner
Дата: 10.09.19 13:47
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

Pzz>>В 64-х битах такое разделение диктует железо.


ЕМ>Любое 64-разрядное железо диктует одну и ту же схему разделения адресов?


x86, я имею ввиду. Не удивлюсь, если и ARM тоже, в порядке подражания.
Re[6]: Откуда такая неизбывная приверженность к константам?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 10.09.19 14:11
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>x86, я имею ввиду.


Угу, а при проектировании любой ОС всегда наперед известно все без исключения железо, на котором она будет работать?
Re[7]: Откуда такая неизбывная приверженность к константам?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 10.09.19 17:05
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

Pzz>>x86, я имею ввиду.


ЕМ>Угу, а при проектировании любой ОС всегда наперед известно все без исключения железо, на котором она будет работать?


А на другом железе, возможно, константы будут другими, не?
Маньяк Робокряк колесит по городу
Re[8]: Откуда такая неизбывная приверженность к константам?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 10.09.19 19:46
Оценка:
Здравствуйте, Marty, Вы писали:

M>А на другом железе, возможно, константы будут другими, не?


Ну да, могут. И при таком подходе разбираться с ними придется и всем модулям ОС, которых это касается, и каждому стороннему софту отдельно. Когда можно было забить эти константы в один соответствующий модуль ОС, который отдавал бы их по запросу.
Re[9]: Откуда такая неизбывная приверженность к константам?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 10.09.19 21:19
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

M>>А на другом железе, возможно, константы будут другими, не?


ЕМ>Ну да, могут. И при таком подходе разбираться с ними придется и всем модулям ОС, которых это касается, и каждому стороннему софту отдельно. Когда можно было забить эти константы в один соответствующий модуль ОС, который отдавал бы их по запросу.


И чем лучше разбираться в ран-тайме лучше, чем разбираться в компайл-тайме?
Маньяк Робокряк колесит по городу
Re[7]: Откуда такая неизбывная приверженность к константам?
От: Sharowarsheg  
Дата: 11.09.19 01:38
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

Pzz>>x86, я имею ввиду.


ЕМ>Угу, а при проектировании любой ОС всегда наперед известно все без исключения железо, на котором она будет работать?


При проектировании винды, да. Линукс, наверное не обязательно.
Re[8]: Откуда такая неизбывная приверженность к константам?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 11.09.19 02:09
Оценка:
Здравствуйте, Sharowarsheg, Вы писали:

ЕМ>>Угу, а при проектировании любой ОС всегда наперед известно все без исключения железо, на котором она будет работать?


S>При проектировании винды, да. Линукс, наверное не обязательно.


Линупс не нужен
Маньяк Робокряк колесит по городу
Re[10]: Откуда такая неизбывная приверженность к константам?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 11.09.19 08:10
Оценка:
Здравствуйте, Marty, Вы писали:

M>И чем лучше разбираться в ран-тайме лучше, чем разбираться в компайл-тайме?


А что именно требуется оптимизировать? Есть оценки, статистика? Небось, за все эти годы несколько миллисекунд экономии и набежало.
Re[8]: Откуда такая неизбывная приверженность к константам?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 11.09.19 08:11
Оценка:
Здравствуйте, Sharowarsheg, Вы писали:

ЕМ>>при проектировании любой ОС всегда наперед известно все без исключения железо, на котором она будет работать?


S>При проектировании винды, да.


И что, при проектировании NT в конце 80-х было известно, что она будет работать на MIPS, IA-64, Amd64, ARM?
Re[9]: Откуда такая неизбывная приверженность к константам?
От: Sharowarsheg  
Дата: 11.09.19 08:41
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>>>при проектировании любой ОС всегда наперед известно все без исключения железо, на котором она будет работать?


S>>При проектировании винды, да.


ЕМ>И что, при проектировании NT в конце 80-х было известно, что она будет работать на MIPS, IA-64, Amd64, ARM?


NT третья, которая 3.5 и 3.51? Нет, очевидно. x86 и альфа, а всё остальное — как повезло.
Когда понадобилось x64, поправили ядро на новые константы, да и всё.
Re[10]: Откуда такая неизбывная приверженность к константам?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 11.09.19 08:48
Оценка:
Здравствуйте, Sharowarsheg, Вы писали:

S>Когда понадобилось x64, поправили ядро на новые константы, да и всё.


А что именно выиграли-то за счет констант?
Re[11]: Откуда такая неизбывная приверженность к константам?
От: Sharowarsheg  
Дата: 11.09.19 08:52
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Здравствуйте, Sharowarsheg, Вы писали:


S>>Когда понадобилось x64, поправили ядро на новые константы, да и всё.


ЕМ>А что именно выиграли-то за счет констант?


Быстро, удобно, и практично. 3.51 NT, между прочим, запускалась на 8 MB оперативки. Наверное, и на 4 тоже, но я не пробовал.
Re[12]: Откуда такая неизбывная приверженность к константам?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 11.09.19 14:42
Оценка:
Здравствуйте, Sharowarsheg, Вы писали:

ЕМ>>А что именно выиграли-то за счет констант?

S>Быстро, удобно, и практично.

Первое верно — в данном случае, как я уже намекал, позволяло выиграть какую-нибудь десятитысячную долю процента от скорости/объема (сейчас это значение нужно уменьшить еще раз в тысячу). Достойный выигрыш, безусловно.

Второе верно исключительно в сиюминутном плане. Вспоминаем PC, в которой видеопамять была прибита гвоздями к A000, дисковое ПО — к C000, и т.п., и какие пляски требовались для использования свободных промежутков адресного пространства. А ведь даже тогда лишняя пара перемычек на плате совершенно терялась в стоимости любой платы, и все эти прибитые адреса могли бы определяться софтом через запросы к BIOS.

С виндой было то же самое — сперва казалось, что 2 Гб — это непредставимо большой объем ОЗУ, а потом пришлось извращаться с ужиманием пространства ядра до 1 Гб. Хотя не было никаких препятствий к тому, чтобы раскладывать ядро сверху вниз, и оно со всеми потрохами могло бы занимать 20-50-100 Мб, оставляя все остальное для пользовательских процессов. На хрена ему было в конце 80-х два гигабайта, когда даже сейчас 64-разрядная десятка и одного ядром не занимает?

Так что реально удобнее — экономия одного килобайта(это я еще сильно завысил) кода для изначальной поддержки динамического размещения, или весь тот геморрой, что потребовался для переделки и тестирования с 2+2 на 3+1?

Ну и практично это исключительно в одном плане — чтобы занять работой достаточное количество людей. Техническая практичность здесь отсутствует напрочь.

S>3.51 NT, между прочим, запускалась на 8 MB оперативки. Наверное, и на 4 тоже, но я не пробовал.


Верно. Так для чего ей были константно заложены те два гига только под одно ядро?
Re[13]: Откуда такая неизбывная приверженность к константам?
От: Sharowarsheg  
Дата: 11.09.19 15:08
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Ну и практично это исключительно в одном плане — чтобы занять работой достаточное количество людей. Техническая практичность здесь отсутствует напрочь.


S>>3.51 NT, между прочим, запускалась на 8 MB оперативки. Наверное, и на 4 тоже, но я не пробовал.


ЕМ>Верно. Так для чего ей были константно заложены те два гига только под одно ядро?


Чтобы я сейчас, через тридцать или сколько-там лет, мог запустить её с двумя гигами под ядро — примерно в 100 раз больше, чем исходно было задумано.
Re[14]: Откуда такая неизбывная приверженность к константам?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 11.09.19 17:16
Оценка:
Здравствуйте, Sharowarsheg, Вы писали:

ЕМ>>Так для чего ей были константно заложены те два гига только под одно ядро?


S>Чтобы я сейчас, через тридцать или сколько-там лет, мог запустить её с двумя гигами под ядро — примерно в 100 раз больше, чем исходно было задумано.


А сумеете внятно объяснить, как на эту возможность повлияла именно константность раскладки адресного пространства?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.