Re[31]: Нужна ли Оберон-ОС защита памяти?
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 25.01.05 07:47
Оценка:
WH>>Я сейчас пишу под .НЕТ который защищен не хуже Оберона и прекрасно понимаю о чем говорю.

AVC>Особенно если учесть, что C# и Java — вариации Оберона, с Си-подобным синтаксисом для маскировки очевидных заимствований.




http://www.inr.ac.ru/~info21/motiv.htm

Проект Оберон оказывает мощное влияние на мировую индустрию программирования: оно прослеживается в мега-проектах Java и .NET корпораций Sun и Microsoft (в Sun изучили коды Оберона еще в 1991 г., задолго до объявления Java, а по сущностным характеристикам языки Java и C# ближе к Оберону, чем к своим синтаксическим предшественникам). Это позволяет говорить о формировании под влиянием Оберона стандартной парадигмы программирования.


Разработка JIT-компилятора для языка Java по заказу компании Borland была выполнена компанией Oberon microsystems (помните BlackBox?)
http://www.oberon.ch/references.html

Borland Entwicklung eines Java Just-In-Time Compiler Back-Ends.

Re[5]: Как пишут драйверы на safe языках программирования.
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 25.01.05 08:24
Оценка:
Драйверы под оберон-системы пишутся на самих оберонах.

Для этого используют модуль SYSTEM


http://www.oberon.ethz.ch/SYSTEM.html

The Module SYSTEM

...

Constants (PC only)
For the use with SYSTEM.GETREG and SYSTEM.PUTREG, the following integer constants are defined:
EAX = 8; ECX = 9; EDX = 10; EBX = 11;
ESP = 12; EBP = 13; ESI = 14; EDI = 15;
AX = 16; CX = 17; DX = 18; BX = 19;
SP = 20; BP = 21; SI = 22; DI = 23;
AL = 24; CL = 25; DL = 26; BL = 27;
AH = 28; CH = 29; DH = 30; BH = 31;


..


Function procedures
(* Return the address of the specified variable, parameter or record field. *)
PROCEDURE ADR (VAR v: Any): LONGINT;

Remark: Be cautious when using a pointer type! The pointer value is not always the same as the data element's address, as shown in this example:

VAR p: POINTER TO ARRAY OF x;
SYSTEM.VAL(LONGINT, p) # SYSTEM.ADR(p[0])

(* Test bit "n" at the specified address. *)
PROCEDURE BIT (adr: Address; n: LONGINT): BOOLEAN;

(* Read an 8-bit value from the specified memory address. *)
PROCEDURE GET8 (adr: Address): SHORTINT;

(* Read a 16-bit value from the specified memory address. *)
PROCEDURE GET16 (adr: Address): INTEGER;

(* Read a 32-bit value from the specified memory address. *)
PROCEDURE GET32 (adr: Address): LONGINT;

(* Return value "x", shifted left "n" bits (may be negative, to shift right). *)
PROCEDURE LSH (x: IntValue; n: LONGINT): TypeOfX;

(* Return value "x", rotated left "n" bits (may be negative, to rotate right). *)
PROCEDURE ROT (x: IntValue; n: LONGINT): TypeOfX;

(* Type cast. Return the value of "x" interpreted as of type "T", with no conversion. *)
PROCEDURE VAL (T: AlmostAnyTypeName; x: Any): TypeT;

SYSTEM.VAL(LONGINT, {0}) is 1, and SYSTEM.VAL(SET, 1) is {0}. Other Oberon compilers (e.g. PowerPC) may behave differently.

Remark: A warning is issued if the compiler option \w is used.



...


Proper procedures
(* Read value "v" from the specified memory address. The size of "v" must be 8-, 16- or 32-bits. *)
PROCEDURE GET (adr: Address; VAR v: BuiltIn);

(* Copy "n" bytes from address "src" to address "dst".
Behaviour for overlapping source and destination is not defined. *)
PROCEDURE MOVE (src, dst: Address; n: LONGINT);

(* Allocate an untraced block of memory of "n" bytes. *)
PROCEDURE NEW (VAR v: PTR; n: LONGINT);

(* Write the value of "x" to the specified memory address. The size of "x" must be 8-, 16- or 32-bits. *)
PROCEDURE PUT (adr: Address; x: BuiltIn);

(* Write the lower 8 bits of "x" to the specified memory address. *)
PROCEDURE PUT8 (adr: Address; x: LONGINT);

(* Write the lower 16 bits of "x" to the specified memory address. *)
PROCEDURE PUT16 (adr: Address; x: LONGINT);

(* Write 32 bits of "x" to the specified memory address. *)
PROCEDURE PUT32 (adr: Address; x: LONGINT);

(* Assign the value of the specified register to "v". Note that in some cases
the dereferencing of "v" may cause other registers to be overwritten. *)
PROCEDURE GETREG (r: RegNum; VAR v: BuiltIn);

(* Assign the specified value to the specified register. Note that the evaluation
of "x" may also change other registers. *)
PROCEDURE PUTREG (r: RegNum; x: BuiltIn);


Proper procedures specific to ETH Oberon Native
(* Perform a port input instruction at the specified I/O address.
The size of "v" must be 8-, 16- or 32-bits. *)
PROCEDURE PORTIN (adr: LONGINT; VAR v: BuiltIn);

(* Perform a port output instruction at the specified I/O address.
The size of "x" must be 8-, 16- or 32-bits. *)
PROCEDURE PORTOUT (adr: LONGINT; x: BuiltIn);

(* Disable interrupts on the current processor. *)
PROCEDURE CLI ();

(* Enable interrupts on the current processor. *)
PROCEDURE STI ();

(* Halt execution with a TRAP. "n" is an arbitrary integer displayed in the trap viewer.
Trap numbers in the range -39..27 are pre-defined, and an appropriate message is displayed
by the trap handler in the System module. The value MAX(INTEGER) is interpreted specially,
for debugging. A trap viewer is displayed, but execution continues after the HALT. *)
PROCEDURE HALT (n: LONGINT);

...

и так далее.


Native Oberon Operating System
http://www.oberon.ethz.ch/native/
Re[6]: Нужна ли Оберон-ОС защита памяти?
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 25.01.05 08:31
Оценка:
Здравствуйте, Cyberax, Вы писали:

>> Какая связь между языками Си/Си++ и драйверами?

>> Драйверы под оберон-системы пишутся на самих оберонах.

C>А как суперзащищенный Оберон-драйвер будет работать с портами, IRQ и, не

C>побоюсь этого слова, указателями?

Значит если в самом языке нет средств для работы на низком уровне, то он не может на нем работать, так что ли? А вот, например, в языках Си/Си++ нет встроенной возможности для параллельной работы, и что из этого следует? А следует из этого то что используются внешние (по отношению к самому языку программирования) библиотеки.
Re[6]: Как пишут драйверы на safe языках программирования.
От: Privalov  
Дата: 25.01.05 08:34
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

То есть, все-таки, ассемблер.

If a module source text contains assembler code, the module SYSTEM must be imported to invoke the built-in assembler. It is not permitted to import SYSTEM when creating portable binaries in Oberon for Windows or MacOberon.

Get some inspiration from the nicely written and informative documentation on the assembler used to teach a course in low-level programming by Jacques Egloff


А как быть с этим?

Драйверы под оберон-системы пишутся на самих оберонах. (c) Сергей Губанов здесь

Re[6]: Как пишут драйверы на safe языках программирования.
От: Sergey Россия  
Дата: 25.01.05 08:35
Оценка: 1 (1) +1
Hello, Сергей!
You wrote on Tue, 25 Jan 2005 08:24:30 GMT:


СГ> Драйверы под оберон-системы пишутся на самих оберонах.


СГ> Для этого используют модуль SYSTEM


СГ> http://www.oberon.ethz.ch/SYSTEM.html


А есть средства, запрещающие использовать этот модуль простым смертным?
Потому что с его помощью систему в капусту нашинковать ничуть не сложнее,
чем с помощью С или ассемблера.

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[15]: Нужна ли Оберон-ОС защита памяти?
От: Cyberax Марс  
Дата: 25.01.05 08:39
Оценка:
AVC пишет:

> C>А скорость будет... Представляю себе копирование многомегабайтных

> C>массивов в видеопамять с помощью Poke'ов.
> Вот здесь Вы точно не правы!
> Дело в том, что так называемый модуль SYSTEM (к которому относится
> процедура GET) — это псевдомодуль, реализуемый компилятором.
> Практически все его функции — встраиваемые, многие из них реализуются
> одной-единственной машинной инструкцией.

Эффективное копирование он не сможет реализовать.

> Мало того, специально для пересылки "многомебайтных массивов"

> существует процедура MOVE.
> Так что в данном случае Вам как раз гарантирована максимальная
> эффективность.

Ага, а где секьюрити, и все такое?

> C>Для встраивания в Mono — там сейчас у них консервативный GC, а я

> пытаюсь
> C>написать точный.
> Хотелось бы впоследствии узнать, удалась ли Ваша затея, и какие
> "подводные камни" Вам пришлось преодолеть.
> Несмотря на расхождение во взглядах, мне всегда интересна точка зрения
> человека, делающего что-то самостоятельно.

Моя затея, ничего особого не представляет — просто очередной GC. Просто
интересен сам процесс ее реализации.

> Мой внезапный интерес к Оберону основан на практических мотивах: кроме

> компиляторов и отладчиков, которые я сейчас пишу для маленьких дешевых
> процессоров, возникла потребность в простой, эффективной, но
> достаточно надежной операционной системе. Оценив наши конкретные
> ограничения, я отбросил мысли о каких бы то ни было вариантах Linux и
> остановился на Обероне.

А нафига маленьким девайсам ОС? А если уж нужна — welcom to WindRiver
(ихняя ОС даже на Марсе работает). Но использовать Oberon...

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[40]: Нужна ли Оберон-ОС защита памяти?
От: Cyberax Марс  
Дата: 25.01.05 08:40
Оценка:
Сергей Губанов пишет:

> C>Прекрасно. Мы уже выяснили, что потоки называются в Обероне "активными

> C>объектами". Следующий вопрос: они образуют иерархию?
> Такого ограничения нет. Объекты могут ссылаться друг на друга как им
> вздумается, хоть циклически хоровод водить. Запутанные связи между
> ними распутываются автоматически сборщиком мусора.

Мне интересна иерархия исполнения. То есть чтобы система могла
определить какие объекты нужно прибить, если один из них начинает себя
плохо вести.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[7]: Нужна ли Оберон-ОС защита памяти?
От: Cyberax Марс  
Дата: 25.01.05 08:43
Оценка:
Сергей Губанов пишет:

> C>А как суперзащищенный Оберон-драйвер будет работать с портами, IRQ

> и, не
> C>побоюсь этого слова, указателями?
> Значит если в самом языке нет средств для работы на низком уровне, то
> он не может на нем работать, так что ли?

Обычно может, но с диким overhead'ом и полной непригодностью для
низкоуровнквых задач. Что-то драйверов на VB не видно, хотя теоретически
они возможны.

> А вот, например, в языках Си/Си++ нет встроенной возможности для

> параллельной работы, и что из этого следует? А следует из этого то что
> используются внешние (по отношению к самому языку программирования)
> библиотеки.

В С++ есть все средства для добавления параллельности, но вот в Обероне
нет средств для серьезного системного программирования: нет изоляции,
привилегий, и т.п.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[7]: Нужна ли Оберон-ОС защита памяти?
От: Sergey Россия  
Дата: 25.01.05 08:46
Оценка: +4
Hello, Сергей!
You wrote on Tue, 25 Jan 2005 08:31:34 GMT:

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


??>>> Какая связь между языками Си/Си++ и драйверами?
??>>> Драйверы под оберон-системы пишутся на самих оберонах.

C>> А как суперзащищенный Оберон-драйвер будет работать с портами, IRQ и,

C>> не побоюсь этого слова, указателями?

СГ> Значит если в самом языке нет средств для работы на низком уровне, то

СГ> он не может на нем работать, так что ли? А вот, например, в языках
СГ> Си/Си++ нет встроенной возможности для параллельной работы, и что из
СГ> этого следует? А следует из этого то что используются внешние (по
СГ> отношению к самому языку программирования) библиотеки.

после слова библиотеки следовало бы поставить не точку, а запятую, и
продолжить:
...которые позволяют похерить систему безопасности и делать то же самое, что
возможно делать на ассемблере или С — испортить любой загруженный модуль,
случайно потереть все данные на диске и т.д.
Не, на самом деле это правильный подход. На практике от криво написанных
дров/ядра не спасает никакое разделение адресных пространств или любые
другие способы защиты — хотя бы просто потому, что в системе обязательно
найдутся места, которые как раз за эту защиту и отвечают, и вот они-то и
окажутся уязвимы.
Только не стоит типично компромиссное решение выдавать за волшебную палочку,
разом превращающую обычную баржу в непотопляемый авианосец.

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[7]: Как пишут драйверы на safe языках программирования.
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 25.01.05 08:46
Оценка: :)
Здравствуйте, Sergey, Вы писали:

S>А есть средства, запрещающие использовать этот модуль простым смертным?

S>Потому что с его помощью систему в капусту нашинковать ничуть не сложнее,
S>чем с помощью С или ассемблера.

Дело не в том что что-то сделать можно или нельзя, а втом, что работая на Си это можно сделать НЕЧАЯННО, а работая на safe языке это можно сделать только НАМЕРЕННО (намеренно используя модуль SYSTEM).


Отсюда вывод — для того чтобы быть в полной безопасности:

А) В Оберонах: никогда не пользуйтесь чужими непроверенными программами импортирующими модуль SYSTEM.

Б) В Си/Си++/Assembler.... и т.д.: никогда не пользуйтесь вообще никакими чужими непроверенными программами.
Re[8]: Нужна ли Оберон-ОС защита памяти?
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 25.01.05 08:50
Оценка:
Здравствуйте, Sergey, Вы писали:

S>после слова библиотеки следовало бы поставить не точку, а запятую, и

S>продолжить:
S>...которые позволяют похерить систему безопасности и делать то же самое, что
S>возможно делать на ассемблере или С — испортить любой загруженный модуль,
S>случайно потереть все данные на диске и т.д.

Ответ:
http://www.rsdn.ru/Forum/Message.aspx?mid=1002532&only=1
Автор: Сергей Губанов
Дата: 25.01.05
Re[7]: Нужна ли Оберон-ОС защита памяти?
От: Дарней Россия  
Дата: 25.01.05 08:50
Оценка: +1
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Значит если в самом языке нет средств для работы на низком уровне, то он не может на нем работать, так что ли? А вот, например, в языках Си/Си++ нет встроенной возможности для параллельной работы, и что из этого следует? А следует из этого то что используются внешние (по отношению к самому языку программирования) библиотеки.


Объясни таки страждущим, в чем принципиальная разница между разрушением системы с помошью внешних библиотек, и разрушением системы с помощью встроенных средств языка.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[8]: Нужна ли Оберон-ОС защита памяти?
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 25.01.05 08:52
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Обычно может, но с диким overhead'ом и полной непригодностью для

C>низкоуровнквых задач.


Модуль SYSTEM является встроенным в компилятор. То есть это он только кажется модулем, но все его процедуры на самом деле "инлайняться". Короче, оверхеда нет.
Re[9]: Нужна ли Оберон-ОС защита памяти?
От: Sergey Россия  
Дата: 25.01.05 08:57
Оценка:
Hello, Сергей!
You wrote on Tue, 25 Jan 2005 08:50:06 GMT:

S>> после слова библиотеки следовало бы поставить не точку, а запятую, и

S>> продолжить:
S>> ...которые позволяют похерить систему безопасности и делать то же
S>> самое, что возможно делать на ассемблере или С — испортить любой
S>> загруженный модуль, случайно потереть все данные на диске и т.д.

СГ> Ответ:

СГ> http://www.rsdn.ru/Forum/Message.aspx?mid=1002532&only=1
Автор: Сергей Губанов
Дата: 25.01.05


Ага, а в третьей нетвари можно было пользоваться только сертифицированными
NLM'ами, и все тоже работало прекрасно, причем гораздо шустрей, чем любая
другая операционка. Притом что использовалось общее для всех пространств
адресное пространство и невытесняющая многозадачность.

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[8]: Как пишут драйверы на safe языках программирования.
От: Sergey Россия  
Дата: 25.01.05 09:00
Оценка:
Hello, Сергей!
You wrote on Tue, 25 Jan 2005 08:46:34 GMT:

S>> А есть средства, запрещающие использовать этот модуль простым смертным?

S>> Потому что с его помощью систему в капусту нашинковать ничуть не
S>> сложнее, чем с помощью С или ассемблера.

СГ> Дело не в том что что-то сделать можно или нельзя, а втом, что работая

СГ> на Си это можно сделать НЕЧАЯННО, а работая на safe языке это
СГ> можно сделать только НАМЕРЕННО (намеренно используя модуль
СГ> SYSTEM).

Не, не так. В обероне тоже можно НЕЧАЯННО ошибиться, намеренно
используя модуль SYSTEM.

СГ> Отсюда вывод — для того чтобы быть в полной безопасности:


СГ> А) В Оберонах: никогда не пользуйтесь чужими непроверенными

СГ> программами импортирующими модуль SYSTEM.

Я не удивлюсь, если вдруг окажется, что его можно проимпортировать так, чтоб
никто не догадался

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[29]: Нужна ли Оберон-ОС защита памяти?
От: Sergey J. A. Беларусь  
Дата: 25.01.05 09:04
Оценка:
Здравствуйте, AVC, Вы писали:

AVC>На мой взгляд, противники Оберон-систем игнорируют факт существования многозадачных Оберон-систем, который вряд ли оспорим.


"Оберон видиш ? А он есть !" (почти C)
Я- свихнувшееся сознание Джо
Re[30]: Нужна ли Оберон-ОС защита памяти?
От: AVC Россия  
Дата: 25.01.05 09:13
Оценка:
Здравствуйте, Дарней, Вы писали:

AVC>>На мой взгляд, противники Оберон-систем игнорируют факт существования многозадачных Оберон-систем, который вряд ли оспорим. Посему аргументы варьируются от "я не могу себе этого представить" до "черт побери, КАК это работает?!".

Д>Запорожец-лимузин тоже существует. Только это не доказывает, что он годится хоть для какого-то практического использования.
Д>И вопрос звучит не "КАК это работает", а "где гарантия, что это будет работать НЕ в лабораторных условиях"

Работает же.
Честно говоря, "рука уже устала" писать одно и то же: Оберон используется в космической (NASA и т.д.), авиационной (Boeing и т.д.), сферах, сфере атомной энергетики, где ответственность весьма высока.
Т.е. используется в тех сферах, где применение Си/Си++ зачастую просто запрещено.
В принципе, Си++ — язык для детской песочницы. Персоналки, "поставщик кода отвтетственности не несет" и т.п.

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[8]: Как пишут драйверы на safe языках программирования.
От: Privalov  
Дата: 25.01.05 09:15
Оценка: 1 (1)
Здравствуйте, Сергей Губанов, Вы писали:

СГ>А) В Оберонах: никогда не пользуйтесь чужими непроверенными программами импортирующими модуль SYSTEM.


СГ>Б) В Си/Си++/Assembler.... и т.д.: никогда не пользуйтесь вообще никакими чужими непроверенными программами.


Microsoft Office в Windows относится к проверенным программам? А модуль SYSTEM в Обероне? О какой безопасности вообще идет речь, если импорт модуля SYSTEM уже представляет определенную угрозу (по крайней мере, я так понял Вашу рекомендацию).
Re[8]: Как пишут драйверы на safe языках программирования.
От: Cyberax Марс  
Дата: 25.01.05 09:22
Оценка:
Сергей Губанов пишет:

> S>А есть средства, запрещающие использовать этот модуль простым смертным?

> S>Потому что с его помощью систему в капусту нашинковать ничуть не
> сложнее,
> S>чем с помощью С или ассемблера.
> Дело не в том что что-то сделать можно или нельзя, а втом, что работая
> на Си это можно сделать *НЕЧАЯННО*, а работая на safe языке это можно
> сделать только *НАМЕРЕННО* (намеренно используя модуль SYSTEM).

И работая на безопасном языке это вполне можно сделать нечаянно
(ухмыляясь и смотря как сосед использует мои JNI-обертки).

> Отсюда вывод — для того чтобы быть в полной безопасности:

> А) *В Оберонах*: никогда не пользуйтесь чужими непроверенными
> программами импортирующими модуль SYSTEM.

Так чего же — ничем не пользоваться?

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[33]: Нужна ли Оберон-ОС защита памяти?
От: WolfHound  
Дата: 25.01.05 09:22
Оценка:
Здравствуйте, AVC, Вы писали:

AVC>Интересно, могут ли фанаты смоллтока подтвердить это, в то время как можно продемонстрировать, что практически все конструкции Java (по крайней мере, первоначальной) имеют аналоги в значительно более раннем языке Оберон, о котором в Sun не могли не знать (т.к. имели лицензию на ETH Oberon)?

Это ты у них спрашивай
Re[16]: С# vs Java
Автор: WFrag
Дата: 30.12.04
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.