• Изучаем структуры MBR и GPT

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

      Способов разбиения дисков на разделы на сегодняшний день существует два. Первый способ — использовать MBR. Этот способ применялся еще чуть ли не с появления жестких дисков и работает с любыми операционными системами. Второй способ — использовать новую систему разметки — GPT. Этот способ поддерживается только современными операционными системами, поскольку он еще относительно молод.
      Читать дальше →
    • Rust: «Назад к корням»

      • Перевод

      Мне приходит в голову множество разных целей для Rust в текущем 2018 году, к слову, 2017 год прошел для меня очень быстро, так что я задался следующим вопросом: если бы я мог выбрать одну-единственную цель для Rust в 2018 году, то что бы я выбрал?


      Я буду пристрастен, и вот мое мнение:

      Читать дальше →
    • Rust: «Небезопасные абстракции»

      • Перевод

      Ключевое слово unsafe является неотъемлемой частью дизайна языка Rust. Для тех кто не знаком с ним: unsafe — это ключевое слово, которое, говоря простым языком, является способом обойти проверку типов (type checking) Rust'а.


      Существование ключевого слова unsafe для многих поначалу является неожиданностью.
      В самом деле, разве то, что программы не "падают" от ошибок при работе с памятью,
      не является особенностью Rust? Если это так, то почему имеется легкий способ обойти
      систему типов? Это может показаться дефектом языка.


      Но не все так просто, детали — под катом.

      Читать дальше →
    • Выпуск Rust 1.23

      • Перевод

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


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


      $ rustup update stable

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


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


      Новый год, новый Rust! Нашим первым улучшением является избавление от избыточных копий в некоторых ситуациях. С этими изменениями потребление памяти rustc уменьшилось на 5-10%, но результаты для ваших приложений могут отличаться.


      Команда документации прошла долгий путь для того чтобы rustdoc использовал CommonMark. До этого rustdoc не гарантировал какой движок отрисовки markdown он использовал. В рамках этого выпуска мы все еще визуализируем документацию нашим прошлым движком — Hoedown — но параллельно визуализируем еще и совместимым с CommonMark движком, выдавая предупреждения при различных результатах. Нам еще не встречались ситуации, где нельзя было бы изменить синтаксис документа так, чтобы он удовлетворял обоим движкам сразу. Участник команды документации Guillaume Gomez написал заметку об этом в своем журнале, где показаны некоторые часто встречающиеся отличия движков и способы их обхода.

      Читать дальше →
    • Сравнение отклика клавиатур

      • Перевод
      Если вы посмотрите на «игровые» клавиатуры, то многие из них продаются по цене $100 или выше на заявлениях об их быстроте. В рекламных объявлениях можно встретить такие заявления:

      • Специально разработанные клавиши, которые сокращают время регистрации нажатия
      • В 8 РАЗ БЫСТРЕЕ — скорость опроса 1000 Гц: время отклика 0,1 миллисекунды
      • Получи абсолютное преимущество над своими противниками со сверхбыстрой работой клавишных переключателей 45g и срабатыванием на 40% быстрее, чем у стандартных переключателей Cherry MX Red
      • Самая высокая в мире частота опроса 1000 Гц
      • Самая быстрая в мире игровая клавиатура, частота опроса 1000 Гц, время отклика 0,001 секунды
      Несмотря на все эти заявления, я нашёл только одного человека, который публично протестировал время отклика клавиатуры — и он проверил только две клавиатуры. Вообще, по моему глубокому убеждению, если кто-то делает заявления о производительности без бенчмарков, то вероятно эти заявления не являются правдой, как непротестированный (или иным образом проверенный) программный код следует по умолчанию считать нерабочим.

      Ситуация с игровыми клавиатурами во многом напоминает разговор с продавцом машин:

      Продавец: Эта машина супербезопасна! У неё двенадцать подушек безопасности!
      Я: Это хорошо, но как она выглядит в краш-тестах?
      Продавец: Двенадцать подушек безопасности!


      Конечно, у игровых клавиатур частота опроса 1000 Гц, и что из этого?
      Читать дальше →
    • Время отклика компьютеров: 1977−2017

      • Перевод
      У меня гнетущее чувство, что современные компьютеры по ощущениям медленнее, чем те компьютеры, которые я использовал в детстве. Я не доверяю такого рода ощущениям, потому что человеческое восприятие доказало свою ненадёжность в эмпирических исследованиях, так что я взял высокоскоростную камеру и измерил время отклика устройств, которые попали ко мне за последние несколько месяцев. Вот результаты:

      Компьютер Отклик
      (мс)
      Год Тактовая
      частота
      Кол-во
      транзисторов
      Apple 2e 30 1983 1 МГц 3,5 тыс.
      TI 99/4A 40 1981 3 МГц 8 тыс.
      Haswell-E 165 Гц 50 2014 3,5 ГГц 2 млрд
      Commodore Pet 4016 60 1977 1 МГц 3,5 тыс.
      SGI Indy 60 1993 0,1 ГГц 1,2 млн
      Haswell-E 120 Гц 60 2014 3,5 ГГц 2 млрд
      ThinkPad 13 ChromeOS 70 2017 2,3 ГГц 1 млрд
      iMac G4 OS 9 70 2002 0,8 ГГц 11 млн
      Haswell-E 60 Гц 80 2014 3,5 ГГц 2 млрд
      Mac Color Classic 90 1993 16 МГц 273 тыс.
      PowerSpec G405 Linux 60 Гц 90 2017 4,2 ГГц 2 млрд
      MacBook Pro 2014 100 2014 2,6 ГГц 700 млн
      ThinkPad 13 Linux chroot 100 2017 2,3 ГГц 1 млрд
      Lenovo X1 Carbon 4G Linux 110 2016 2,6 ГГц 1 млрд
      iMac G4 OS X 120 2002 0,8 ГГц 11 млн
      Haswell-E 24 Гц 140 2014 3,5 ГГц 2 млрд
      Lenovo X1 Carbon 4G Win 150 2016 2,6 ГГц 1 млрд
      Next Cube 150 1988 25 МГц 1,2 млн
      PowerSpec G405 Linux 170 2017 4,2 ГГц 2 млрд
      Пакет вокруг света 190
      PowerSpec G405 Win 200 2017 4,2 ГГц 2 млрд
      Symbolics 3620 300 1986 5 МГц 390 тыс.
      Читать дальше →
    • AdBlock похитил этот баннер, но баннеры не зубы — отрастут

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

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


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


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

        Читать дальше →
      • Как выйти на путь разработки ОС

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

        • Перевод
        Со временем вендоры добавляли новые и новые инструкции в процессоры, управляющие нашими ноутбуками, серверами, телефонами и многими другими устройствами. Добавление машинных инструкций, решающих конкретные вычислительные подзадачи, является хорошим способом улучшить производительность системы в целом, не усложняя конвейер и не пытаясь нарастить частоту до запредельных величин. Одна новая инструкция, выполняющая ту же операцию, что и несколько старых, позволяет неоднократно увеличить производительность решения заданной задачи.
        Новые инструкций, такие как 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, чтобы узнать, в какой степени современное программное обеспечение способно использовать новые инструкции, оставаясь при этом совместимым со старым оборудованием.
        Читать дальше →
      • Выпуск 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
      Самое читаемое