Камрад
|
multivak
Под какую структуру процессорной команды компилируется аппаратно-независимая часть ос? видимо от процессора зависит. А какие бывают процессоры? разные. чтд.
Не-а, не чтд - ты сам сказал, что аппаратно-независимая часть ос компилируется - стало быть, перенос аппаратно-независимой части ОС на платформу является задачей компилятора, разработанного для данной платформы.
Anafay
Во-первых, POSIX есть нечто более широкое, нежели просто "механизм системных выховов". Например, в POSIX в base входит реализация сокетов, mandatory, между прочим.
Я же написал "например"...
Связь POSIX и ОС понятна - ОС может подлерживать стандарт на том или ином уровне или не поддерживать. Но процессор-то при чем?
Связь процессора (как части аппаратуры) и ОС понятна? Думаю, да. Так вот тебе и связь процессора и POSIX (через ОС). Другими словами, возвращаясь к твоему вопросу - разработанная для эльбруса ОС предоставляет приложениям системные сервисы в стандарте POSIX.
Во-вторых, у тебя какое-то иделизированное представление о софте Не обижайся, но это действительно так: ты рассказываешь, как оно должно быть в идеале, а не как есть в действительности
Так никто эльбрус-то не видел, посему беседа носит отвлеченный характер Действительность гораздо скучнее, поскольку в действительности правильный Линукс требовательнее к ресурсам, чем неправильный Виндоуз, например. Я прекрасно понимаю, что в любой реальной ОС существуют отступления от стандарта в пользу производительности.
Эта аппаратно-зависимая часть (в общем случае не ядра! Ядро работает с ней) называется HAL - Hardware Abstraction Layer.
Я правильно понимаю, что ядром ты называешь аппаратно-независимую часть ОС? Тогда все правильно.
Правда, его цель не в связи с процессором, а, в основном, в облегчении работы тем, кто должен обращаться к "устройствам", для работы с которыми HAL представляет, так сказать, стандартизированный API.
Кто обращается к интерфейсу HAL? Только ядро, или приложения тоже? Тогда HAL должен определять права доступа, а это функция ядра.
Таким образом получается, что если HAL доступен приложениям, то он должен брать на себя часть функций ядра, т.е., по сути, являться его частью, либо, если HAL доступен только из ядра, а ядро работает с устройствами через интерфейс HAL, они неразделимы - опять можно считать HAL частью ядра.
Прерывания живут в нем же. Драйвера в HAL не входят - они HAL используют.
Всегда думал, что HAL - набор драйверов устройств, объединенных неким интерфейсом. Ошибался...
А вот тут тезис о переносимости неверен.
Ну почему же... Корректно написанная ОС должна быть переносима по определению. То, что ни одна реальная ОС не написана до конца корректно, говорит только о криворукости разработчиков. Пример из тех же драйверов: в Linux драйвер платформо-независим, но в коде некоторых драйверов есть "ifdef"ы, определяющие текущую платформу, что противоречит переносимости. Почему нельзя было определить соответствующие платформо-зависимые процедуры в хедерах в каталоге arch? Лень. Про 32-хбитность и указатели уже молчу, такие вещи даже компилятор ловит.
Но в еще большей степени - от архитектуры ОС. Пример - Next и что из этого вышло.
Мы говорим о переносимости конкретной ОС на разные платформы, разных ОС на некоторую платформу, или обо всем сразу? В последнем случае представляются очень широкие возможности поговорить "о капусте и королях"...
Посему мне попросту непонятно, что из Эльбруса хотят сделать.
применений масса, можно, например, совать в боеголовки
И каким образом они "начали портировать Линукс", если неизвестно, что, окромя процессора, будет в готовой системе?
Ну, им-то известно, наверное...
|