Re[9]: Нужна ли Оберон-ОС защита памяти?
От: RailRoadMan  
Дата: 10.02.05 17:44
Оценка: 6 (1) +1
Здравствуйте, Сергей Губанов, Вы писали:

1) Идем на сайт BlueBottle, далее Download Current, далее AosSysSrc.zip, далее AosKernel.mod, смотрим

PROCEDURE -AtomicAdd*(VAR x: LONGINT; y: LONGINT);
CODE {SYSTEM.i386}
POP EBX
POP EAX
LOCK
ADD DWORD [EAX], EBX
END AtomicAdd;

А вот из AosMemory.mod кусочек.

PROCEDURE LoadGDT(base, size: LONGINT);
CODE {SYSTEM.i386, SYSTEM.Privileged}
SHL size[EBP], 16
MOV EBX, 2
LGDT size[EBP][EBX]
END LoadGDT;

Возникает вопрос, по зачем тут втроенный ассемблер, если все что нужно можно написать на Oberon? Или это ран тайм языка? Очень похоже. Т.е. в основе все как и везде, машинный код и ассемблер, и без него никуда

2) Oberon язык компилируемый (если ошибся извините). Значит в скомпилированном модуле находятся машинные коды х86. Кто мешает мне вписать туда код
MOV BX,<левый адрес>
MOV [BX],<всякий мусор>
Проехались по чужой памяти, более того эта пара интсрукций не является привеллегированной и в общем случае нельзя сказать, она допустима или нет (т.е. на проверки кода перед исполнением особо рассчитывать не приходится). Просматривается широкий простор для создателей вирусов.

3) По поводу операционных систем. ОС — некое ПО предоставляющее сервисы, пользователю или другому ПО не важно, тогда чем простите вам ран-тайм языка отличается от простой ОС. Да ничем.

4) Вот теперь представьте, что ВЫ хотете написать программу, которая работает на голом железе (без всяких там ран-таймов), ничего не выйдет. Окажется что сначала рантайм спортировать надо — вот она ваша ОС, размер немного другой, суть та же. А на С (C++ немного сложнее) как делать нефиг, ПО для контроллеров так и пишут. Железку проинициализировал, стек настроил, вызвал код на С, далее ОС инициализим (если она вообще нужна), и поехали, тут вам и многопоточность, тут вам и мьютексы и состояние ожидания, и активные объекты если надо

5) А вы вообще про ОС реального времени слышали? Возмите код хоть одной из них, посмотрите.


P.S. Специально зарегистрировался чтобы ответить

СГ>Здравствуйте, Cyberax, Вы писали:


C>>RTFM про spinlock'и и мьютексы, а так же про их реализацию в современных

C>>ОС. Еще рекомендую почитать про O(1) планировщики.

СГ>spinlock'и и мьютексы — это объекты операционной системы, а Вы попробуйте обойтись без объектов ОСи — средствами только самого языка программирования. Представьте себе что хотите написать программу которая должна работать на голом железе (точнее — в рантайм системе языка программирования).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.