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

N>Где это у нас автоматический перенос программ?


В винде. 32-разрядная программ автоматически идет под 64-разрядной виндой в той же линейной модели, а 16-разрядная идет под 32-разрядной в искусственно создаваемой 16-разрядной модели.

N>A0000-BFFFF видеопамять всех видов

N>C0000-DFFFF область расширителей
N>E0000-FFFFF BIOS (да, занимал сильно больше 64KB, начиная ещё с AT)

Это все устаканивалось почти десяток лет, а изначально выбор границы в 640 кб был практически произвольным. В итоге, как известно, в одних машинах было множество неиспользуемых дыр в АП, а в других все служебное не влезало в 384 кб, и приходилось переключать.

N>Ну да, с запасом.


Да, выбранным практически наугад.

N>И не надо вспоминать про "хватит всем", этот миф давно развенчан.


Миф — то, что это было сказано Гейтсом. Реальность — то, что примерно в том же смысле цифра была озвучена на каком-нибудь совещании, в качестве наиболее приемлемой оценки. Хотя фиксации конкретной цифры вовсе не требовалось.

N>Вот я и пытаюсь понять, где у тебя граница между "ряд основных" и "подавляющее большинство остальных".


Логика предельно проста, она такая же, как и в программировании: если конкретная величина заранее неизвестна, то она оформляется в виде переменной. Если затраты на работу с переменной чрезмерно велики, то для оптимизации используются приемы вроде констант или макросов. Если константа самоочевидна (единица как минимальное натуральное число, двойка как основание двоичной системы и т.п.), то нет смысла вводить переменные или константы One/Two.

N>когда стало _легко_ делать вариабельные адреса, то это стали делать.


Когда было тяжело сделать один вариабельный адрес на всю систему?

N>Заметь, MCA, на которой это впервые появилось, это ~1987. PCI это 1991. Прогресс был стремительным за это время, и возможность перешла из дорогого сегмента в общий. Но и то — вначале PCI имел подпорки для AGP, для ATA и ещё для чего-то, отдельными требованиями в стандарте. А это такая же фиксация.


N>описания северного моста, то у него на корневой PCI шине дофига фиксированных устройств


Да и ради бога — это не добавляет сколько-нибудь заметных неудобств в процесс аппаратного проектирования/сопряжения в целом, где многое завязано на физические параметры. Ситуация, в которой северный мост вдруг изымается из одной системы и встраивается в другую, маловероятна. Ситуация, в которой это происходит с программой, почти неизбежна.

N>не из какого-то упрямства, а в порядке поиска границ. Ты сам допускаешь, что какие-то значения должны быть константными. Но чётких критериев разграничения не дал.


Это границы разумного.

N>Какие нафиг N и какие M?


M — объем адресного пространства, доступного пользователю, N — объем АП ядра.

N>Чему они могли бы быть равны?


Конкретным объемам, доступным в данной системе. Во времена, когда 2 Гб стало не хватать уже много кому, объем всего ядра не превышал нескольких десятков мегабайт. Соответственно, M было бы равно 3.9 Гб, а N — 0.1 Гб. 3.9 Гб для прикладных процессов, за совершенно ничтожную цену.

N>Вот потому и делали 2:2, 3:1 и для особых извращенцев — 3.5:0.5


А могли бы сразу добавить один конфигурационный параметр для границы, и избежать частных случаев навсегда.

N>расскажи, в чём именно непродуманность.


В упор не понимаю, что еще нужно рассказать. Но есть отчетливое впечатление, что Вы упорно косите под дурачка.

N>Им соответствует функциональность типа "возить до 4 человек весом до 100 кг с грузом в объёме до двух обычных чемоданов, со скоростью до 150 км/ч". А какого размера будет при этом машина — это уже как раз вопрос реализации.


И какова вероятность, что ширина машины будет превышать ее длину? А вероятность того, что в ряду будет сидеть нецелое количество пассажиров?

EM>>Неоправданной фиксацией было бы, например, искусственное, произвольное разделение багажника на секции


N>У меня что в старой, что в новой машине такое разделение есть. Под основным дном багажника место для запасного колеса.


У Вас не то разделение. Разделение, о котором я говорю — это стенка поперек багажника по всей его высоте, чтобы Ваш электронасос положить в одну из секций. Изначально она стоит посредине, но за конечную плату ее можно передвинуть на полметра в сторону. Места в малой секции все равно будет больше, чем нужно для насоса, но класть туда что-то еще будет запрещено ПДД.

N>я туда рядом с колесом закидываю всякие мелочи типа ключей, но не смог впихнуть электронасос для колёс.


А то колесо в каждой машине разного размера, да?

N>Для типового применения всё сделано правильно.


Если бы делали так же, как сделано в NT, то вместо багажника у Вас был бы прицеп, в котором одиноко болталось бы одно запасное колесо. В премиальных моделях этих колес было бы четыре, но размер прицепа всегда был бы одинаковым.

N>Большинство наших розеток ограничены 10A.


Но Вы же знаете, почему, да?

N>Я всё-таки не вижу, где эти ограничения были бы настолько неоправданны, что заставили бы страдать индустрию без причины на длительный срок.


Ну, раз никто не страдал по поводу нехватки сперва 640 кб, потом двух гигабайт, а затем трех, то надо признать, что XMS/EMS, PAE и тому подобное создавались, внедрялись и переделывались из чистого энтузиазма, без малейшей производственной надобности.

N>как только упирались в них, достаточно быстро находился вариант решить проблему переходом за следующий порог, который при этом был в разы дальше.


То есть, классика: сперва создаем проблему, затем героически ее решаем.

N>чтобы без порога вообще — такого не бывало, потому что мы в реальном мире.


Реальность мира диктует только размер переменной для хранения границы доступного АП: в 32-разрядных системах — четыре байта, в 64-разрядных — восемь.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.