Ответы пользователя по тегу Системное программирование
  • Как выучить язык ассемблера?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    То, что Вы перечислили, это компиляторы макроассемблера. Сам ассемблер - набор кодов конкркетной архитектуры процессора.
    Такчто проще всего начать с процессоров архитееуры CISC. Это в основном 8, 16 и 32 разрядные архитекуры. Архитектура RISC более проста, но и более стожна, за счет большего количества действий, в программировании.
    Предлагаю взять что-то из семейства микроконтроллеров mips8, купить набор для разработчика за 1000 рублей и поморгать саетодиодами. Хотя до светодиодов дойти буднт труднл.
    Лучшая книга по ассемблеру - Дональд Кнут!
    Он придумал простой виртуальный процессор, на основе которого написаны его книги "искусство програмиирования". Есть куча эмуляторов для его архитектуры. Дерзайте!
    Ответ написан
    3 комментария
  • Объясните процесс написания драйвера под линукс?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Нет, систему перекомпилировать совсем не нужно!
    Для написания драйвера ядра нужды исходники ядра (точнее, только хереды) и компилятор.
    Что касается сетевого драйвера, рекомендую начать с изучения драйвера ne2000, как одного из самы простых.

    Начать же что-то писать под ядро - начните с кижки Померанца The Linux Kernel Module Programming Guide - https://www.tldp.org/LDP/lkmpg/2.6/lkmpg.pdf
    А вот тут и на русском - citforum.ru/operating_systems/linux/lkmpg
    Также в исходниках ядра есть темплейты (шаблоны) драйверов, правда сейчас не упомню где точно...
    Вот есть и такой ресурс - https://github.com/ngtkt0909/linux-kernel-module-t... (кросскомпиляторы ставить не обязательно, если не разрабатываете модуль под платформу отличную от x86)
    Вот, вообще отличная статья, типа делай раз-два-три - https://blog.sourcerer.io/writing-a-simple-linux-k...
    Ответ написан
    1 комментарий
  • Как получить список устройств подключенных к шине PCI?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Похоже вот здесь (но могу ошибаться, в основном под линукс пишу) - https://docs.microsoft.com/en-us/windows-hardware/...
    Ответ написан
    Комментировать
  • Насколько эффективна гипотетическая ОС в едином адресном пространстве?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Да, будут эффективными, но без сохранения контекста и восстановления никуда не деться. Код приложений будет реентерабельный, защита же все равно будет через MMU. А без защиты - любое приложение или ошибка, положит всю систему.
    Более того, такие ОС есть. Например OS-9 https://ru.m.wikipedia.org/wiki/OS-9
    Чего лишимся? Будет гораздо труднее делать swap, так как у нас не будет транслятора памяти, и нельзя будет сохранить дамп процесса и на это место подгрузить дамп другого процесса.
    Ответ написан
  • Какие различия программирования под UNIX и Linux?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Системному программированию? Да, базовые знания приобретете, собственно, изучите POSIX api, который в большинстве своем полностью идентичен для всех юниксов. Сможете писать утилиты и демоны, обмениваться данными через сокеты, каналы, сообщения и общую память, синхронизироваться через мьютексы и семафоры. Точно пойдет на пользу, так как будете знать, что за неонка у них внутри. Более того, эти примеры скорее всего будут работать и в линуксе. Например библиотека winsock полностью повторяет posix, и если из нее использовать только posix-вызовы, то ваша программа будет работать и под виндовс и под любую posix-совместимую систему.
    Однако, в каждой системе существуют еще с десяток, если не сотню, собственных механизмов на всякие случаи. Вот с ними придется разбираться отдельно для каждой системы, но это уже специализация.
    Стоит ли изучать? Точно стоит, и эти знания не пропадут даром. Все юниксы достаточно похожи, изучайте!
    Добавлю, вот ядра и внутренние механизмы у разных юниксов могут различаться, причем радикально, особенно то, что касается драйверов, расширений самого ядра и его окружения.
    Ну и само утверждение немного лукавое, и да, и нет. Дьявол в мелочах, увы.
    Ответ написан
    Комментировать
  • Системное программирование, с чего начать?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Начните с малого, купите платку с stm32 типа stm32f4-discovery, загрузите в нее freertos и поморгайте диодами.
    Ну или в линуксе сделайте простой драйвер по книжке Ори Померанца, она везде есть в открытом доступе, оригинал тут www.tldp.org/LDP/lkmpg/2.6/html/index.html
    Ответ написан
    6 комментариев