Операционные системы могут работать на нескольких процессорах? - PullRequest
0 голосов
/ 02 декабря 2011

ASM отличаются от одного процессора к другому, поэтому код, который вы пишете для архитектуры процессора, не будет работать для другого. Но почему операционные системы могут это делать, и они содержат несколько KLOC-строк кода asm?

Ответы [ 2 ]

5 голосов
/ 02 декабря 2011

Современные (или, по крайней мере, не слишком старые) операционные системы, такие как Linux, в основном написаны на C и содержат всего несколько строк специфичного для платформы кода сборки.Чтобы портировать на другую архитектуру, такой ассемблерный код должен быть переписан - и это то, что сделано.Но код C можно просто перекомпилировать, его не нужно переписывать.Хотя платформы отличаются по диалекту ассемблера, они построены на одних и тех же понятиях (например, управление памятью на основе страниц через MMU ).Некоторые операции должны выполняться в сборке, потому что переносимый C не предлагает никакого способа их выполнения (например, переключение задач или начальные этапы обработки прерываний), но основная часть того, что делает ОС, - это чистая алгоритмика, это можно сделать в Cнапример, весь сетевой код находится на C; только для самой низкоуровневой части отправки пакета через интерфейс Ethernet требуется не более десятка строк сборки).

4 голосов
/ 02 декабря 2011

Поскольку операционные системы повторно реализуют части ASM для каждой поддерживаемой архитектуры, выбирая правильную во время сборки?

...