All streams
Search
Write a publication
Pull to refresh
71
0.8

Техножрец

Send message
На самом деле, никто не мешает написать myprintf напрямую через write. Это будет прекрасно работать. Можно даже обойтись без glibc совсем. Но glibc предлагает решение среднее по больнице, которое подходит в 98% случаев. И да, оно зачастую избыточно, но работает как часы…
Это решение родилось в процессе эволюции системы. Тут как по Энштейну. Настолько просто, насколько возможно, но ничуть не проще.
Тут есть два момента. Во первых puts работает с буфферизацией, то есть прежде чем выдать что-то во внешний мир, он сбрасывает данные в буффер, копит их там, а потом уже выдаёт все разом. Это делается для минимизации количества системных вызовов в частности и операций в пространстве ядра — драйверах вообще.

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

Вот и получается, что мы сначала делаем jump в динамическую либу, потом кидаем данные в буффер… И, только если левая пятка сподобится, вызываем write…

Насколько такая цепочка оправдана… Вопрос открытый.
Это прекрасно. Мне бы эту статью лет десять надад.
Сопряжения уже практически добавлены.
Их надо только облагородить, выбрать окончательный вариант апи и внести в документацию…

См. пример robot.py
Счастлив сообщить, что тестовая виндовая сборка доступна.
github.com/mirmik/zencad/releases/tag/wintest

Это пока не релиз, но пощупать можно.
Работает standalone (ничего дополнительно ставить не надо). Протестировано (Ну, типо падает не сразу) на десятке.

Качать zip, запускать ZenCad.exe

(Пока x64 только)
На самом деле нет. Например, при доступе к ресурсам. Два кооперативных потока могут неподелить доступ к шине i2c, например.
Просто проблема останова в общем случае неразрешима. Полагаю (бездоказательно), её можно свести к теореме Гёделя. Вот и всё.
Ну, это не пойти дальше. Это скорее пойти в другом направлении.
Ну, спинлок реализовать — здесь много ума не надо. Достаточно просто SVC вызывать в цикле.

С семафорами сложнее, но концептуально для них тоже всё готово.
Is it regret for the failure of expert systems? The brain does not work with human knowledge. Human knowledge is the result of the work of the brain.

Here the chicken and the egg are switched.

Sorry for english. Hasn`t russian locale on that machine.
Есть довольно стойкое всеобщее заблуждение про высшее образование.

Для получения практических навыков есть среднее специальное. А высшее образование — это про теорию, кругозор, охват, но ни разу не про практические навыки… Ну нет у ВУЗа времени нагружать студентов практикой.

А без практики программиста быть не может… Так что проблема не с ВУЗом. ВУЗ и не должен был учить программированию дальше хеллоуворлда.

Дальше уже самостоятельная работа.
Я не очень понял. Что такое пакет?
Тут была статья про фотографию черной дыры. Там винчестеры с данными тоже фургонами возили.
За 4 гигабайта бы тоже хорошо пояснить. Компилятор весит от силы мегабайт… Весь набор утилит — мегов 10.

Ну библиотеки… Ну хорошо, 100 мегабайт исходных кодов и бинарников…
Это я вскользь прокоментировал эту фразу:
Итак, вот первое интересное свойство рациональной арифметики — деление и умножение имеют одинаковые затраты, поэтому в отличие от обычного рендеринга с плавающей запятой, в котором деления обычно избегают, откладывают или скрывают под задержками медленных запросов получения текстур, в рациональной арифметике этих операций бояться не нужно.
Сокращение на НОД без целочисленного деления все равно не обходится :(.

Information

Rating
1,816-th
Registered
Activity