• Микроядро vs. монолит и «торжество» MINIX

      Недавно Эндрю Татенбаум, профессор Амстердамского свободного университета, автор учебной и миниатюрной Unix системы Minix, вновь оказался в центре событий благодаря эпистолярному жанру. В своем письме Интел он поблагодарил компанию за использование Minix, посетовал на то, что та не трубила об этом на каждом шагу и заявил, что из-за этого мало кто знает о том, что Minix — на сегодняшний день самая популярная ОС на свете.


      Безудержная радость


      Надо отдать должное профессору, он умеет выбирать адресата, время и место для того, чтобы вызвать громкий и продолжительный эффект с помощью простого сообщения, отправленного по электронной почте. Его предыдущим корреспондентом был Линус Торвальдс, а их переписка о монолитном и микро ядре вошла в анналы истории ИТ. Без этого трудно понять, почему Эндрю Таненбаум так экзальтирован из-за мнимого успеха Миникс, которая всего лишь в течении десятка лет обеспечивала работу интеловского бэкдора IME.

      Читать дальше →
    • Отображение переменных окружения в Redis


        Redis — это такое хранилище вида ключ-значение. Переменные окружения (environment variables) — напоминают то же самое. А что если это как-то объединить?


        Для любителей пятничных постов, несложного хакинга и странных желаний — прошу под кат

        Читать дальше →
      • Рекомендации по установке СУБД InterSystems Caché в продуктовом режиме

        • Tutorial
        Эта статья была написана, как попытка поделиться опытом по установке СУБД InterSystems Caché в продуктовом режиме. Все знают, что конфигурация СУБД для разработки сильно отличается от боевых условий. Если разработка, как правило, ведется в тепличных условиях с минимальными настройками безопасности, то когда мы выкладываем свой проект в живой Интернет, то должны максимально озаботиться его надежным и бесперебойным существованием в агрессивной среде.
        Читать дальше
      • Бесплатно, но…



          Сразу же должен сказать, что никого тут не собираюсь критиковать — просто возникли некоторые сомнения. Да и как можно испытывать что-либо кроме благодарности за полезный и к тому же бесплатный инструмент? Впрочем, и рекламировать никого не собираюсь, приведенные ниже примеры – не более чем примеры, демонстрирующие некоторые проблемы распространения через Интернет инструментов, которые могут возникнуть у части пользователей. Выбор примеров случайный. В заключение опрос, который, возможно, поможет понять, насколько эти проблемы представляются серьезными и стоит ли на них вообще обращать внимание при распространении freeware и shareware. Однако речь пойдет не только про «условно-бесплатное» shareware, но придется коснуться и чисто коммерческих программ, так как они во многом определяют общую погоду и с них, возможно, многие берут пример…

          (Источники: часы, доллар США, MacOS Sierra 10.12 Help)
          Читать дальше →
        • Пишем простой модуль ядра Linux

          • Перевод

          Захват Золотого Кольца-0


          Linux предоставляет мощный и обширный API для приложений, но иногда его недостаточно. Для взаимодействия с оборудованием или осуществления операций с доступом к привилегированной информации в системе нужен драйвер ядра.

          Модуль ядра Linux — это скомпилированный двоичный код, который вставляется непосредственно в ядро Linux, работая в кольце 0, внутреннем и наименее защищённом кольце выполнения команд в процессоре x86–64. Здесь код исполняется совершенно без всяких проверок, но зато на невероятной скорости и с доступом к любым ресурсам системы.

          Не для простых смертных


          Написание модуля ядра Linux — занятие не для слабонервных. Изменяя ядро, вы рискуете потерять данные. В коде ядра нет стандартной защиты, как в обычных приложениях Linux. Если сделать ошибку, то повесите всю систему.
          Читать дальше →
          • +24
          • 9,9k
          • 7
        • Как выйти на путь разработки ОС

          Данная статья служит одной простой цели: помочь человеку, который вдруг решил разработать свою операционную систему (в частности, ядро) для архитектуры x86, выйти на тот этап, где он сможет просто добавлять свой функционал, не беспокоясь о сборке, запуске и прочих слабо относящихся к самой разработке деталей. В интернете и на хабре в частности уже есть материалы по данной теме, но довольно трудно написать хотя бы “Hello world”-ядро, не открывая десятков вкладок, что я и попытаюсь исправить. Примеры кода будут по большей части на языке C, но многие другие языки тоже можно адаптировать для OSDev. Давно желавшим и только что осознавшим желание разработать свою операционную систему с нуля — добро пожаловать под кат.
          Читать дальше →
        • AdBlock похитил этот баннер, но баннеры не зубы — отрастут

          Подробнее
          Реклама
        • Вопрос: действительно ли программное обеспечение использует новые наборы инструкций?

          • Перевод
          Со временем вендоры добавляли новые и новые инструкции в процессоры, управляющие нашими ноутбуками, серверами, телефонами и многими другими устройствами. Добавление машинных инструкций, решающих конкретные вычислительные подзадачи, является хорошим способом улучшить производительность системы в целом, не усложняя конвейер и не пытаясь нарастить частоту до запредельных величин. Одна новая инструкция, выполняющая ту же операцию, что и несколько старых, позволяет неоднократно увеличить производительность решения заданной задачи.
          Новые инструкций, такие как Intel Software Guard Extensions (Intel SGX) и Intel Control-flow Enforcement Technology (Intel CET), также способны предоставить абсолютно новую функциональность.



          Хороший вопрос заключается в том, как скоро новые инструкции, добавленные в архитектуру, достигают конечного пользователя. Могут ли операционные системы и другие приложения воспользоваться новыми инструкциями, принимая во внимание, что они, как правило, обеспечивают обратную совместимость и способность исполняться независимо от модели установленного процессора? Много лет назад использование новых инструкций достигалось с помощью пересборки программы под новую архитектуру и добавления проверок, предотвращающих запуск на старой аппаратуре и печатающих что-то вроде “sorry, this program is not supported on this hardware”.

          Я воспользовался полноплатформенным симулятором Wind River Simics, чтобы узнать, в какой степени современное программное обеспечение способно использовать новые инструкции, оставаясь при этом совместимым со старым оборудованием.
          Читать дальше →
        • Рождение Software Tools: как и зачем появились GREP и AWK

            image
            Этим летом мне на глаза попалось эссе Брайана Кернигана «Иногда старые способы — лучшие», опубликованное в честь 25-летнего юбилея журнала IEEE Software в 2008 году. В нем профессор Керниган рассказывал о том, какие инструменты он использует в работе.

            В тот момент он был занят двумя сложными проектами — один из них подразумевал экспертный анализ проекта на 100 000 строк кода, написанный на C и Assembler в 1990 году, под Windows XP; другой — перенос кода с экзотического языка L1 на не менее экзотический язык L2 при помощи программы, написанной на неназванном скриптовом языке под Linux. Удивительно, но для столь разных задач профессор Керниган вместо IDE использовал один и тот же набор инструментов — grep, diff, sort, awk, wc и прочих «старых знакомых» из эпохи раннего Unix. Более того, многие инструменты и IDE конца прошлого десятилетия он подверг критике за неудобность и несовершенство.

            Действительно, к некоторым вещам в своей жизни мы привыкли настолько сильно, что уже воспринимаем их за данность и критиковать их нам даже не приходит в голову — нам кажется, будто они существовали всегда. Подобный образ мышления помогает адаптироваться к потоку новой информации и неизбежен в современном мире, но давайте не будем сегодня отказывать себе в удовольствии «спуститься на уровень ниже», чтобы увидеть, как появилась сама идея программных инструментов (они же далее по тексту — «software tools», утилиты, команды Unix).
            Читать дальше →
            • +16
            • 6,7k
            • 2
          • Выпуск Rust 1.22 (и 1.22.1)

            • Перевод

            Команда Rust рада сообщить о двух новых версиях Rust: 1.22.0 и 1.22.1. Rust — это системный язык программирования, нацеленный на безопасность, скорость и параллельное выполнение кода.


            Подождите, две версии? В последний момент мы обнаружили проблему с новой macOS High Sierra в версии 1.22.0 и по разным причинам выпустили версию 1.22.0 как обычно, но так же выпустили 1.22.1 с исправлением. Ошибка была найдена в менеджере пакетов Cargo, а не в rustc, и затронула только пользователей macOS High Sierra.

            Если у вас установлена предыдущая версия Rust, для обновления достаточно выполнить:


            $ rustup update stable

            Если же у вас еще не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта. С подробными примечаниями к выпуску Rust 1.22.0 и 1.22.1 можно ознакомиться на GitHub.


            Что вошло в стабильную версии 1.22.0 и 1.22.1


            Самое главное изменение в этой версии, которого многие долго ждали: теперь вы можете использовать ? с Option<T>! Около года назад, в Rust 1.13, мы ввели оператор ? для работы с Result<T, E>. С тех пор ведутся дискуссии о том, как далеко оператор ? должен зайти: Должен ли он остаться только для Result? Разрешать ли пользователям расширять его? Должен ли он использоваться с Option<T>?


            В Rust 1.22, основное использование оператора ? с Option<T> стабилизировано. Теперь такой код соберется:

            Читать дальше →
            • +31
            • 5,6k
            • 5
          • Программирование под ARM TrustZone. Часть 1: Secure Monitor

              Продолжаем наш цикл статей, посвященный столетию Великой Октябрьской… ARM TrustZone.

              Сегодня мы разберемся, что такое Secure World, Normal World, как на программном уровне взаимодействуют две ОС – доверенная (TEE) и гостевая. Узнаем, для чего нужен и как работает Secure Monitor, как обрабатываются прерывания от устройств.

              Если готовы – добро пожаловать под кат.
              Читать дальше →
              • +20
              • 2,9k
              • 9
            Самое читаемое