OS Windows на службе отечественного ВМФ. Плюсы и минусы…

Перенос из темы «Новости ВМФ РФ [3]»
Теги:флот
 
1 2 3 4 5 6 7 8
RU rpk #05.12.2008 03:28  @Серокой#04.12.2008 03:27
+
-
edit
 

rpk

втянувшийся

Harsky>> не понял, что это?
Серокой> Программы часто пишутся с учётом особенностей работы конвейера той или иной архитектуры. Например, прерывание надо снять спустя искусственно вставленный nop после возвращения из обработчика или ещё что. Для программиста высокого уровня это прозрачно, этим занят компилятор. Ассемблер - иное дело.
Ох уж мне эти конвееры... На шарках тех же - как отлаживать начинаешь, лучше сразу повеситься. У них компилятор такого наворотит, что указатель по коду скачет как попало на ± пару страниц :)))
А на пентиумах первых Уууууууууууууууууу..... Тоже помню работали "как попало". Точнее, совсе мне так как было описано. Как сейчас помню приписки в коде "На пентиумах это не будет работаь из-за конвеера" :)
 

Harsky

опытный

rpk>>> Отечественная ОС для встраиваемых систем реального времени существует уже как бы не более десятка лет. При том полностью обеспечивается отечественной же аппаратной платформой.
Kernel3>> Опа. А подробнее можно (поиском пользовался - не помогает :( )?
rpk> ос2000 — Википедия
rpk> Сейчас уже есть продолжение: ОС3000, или 3.0. Из основного отличая - поддержка ARINC. Хорошая операционка. Для тех задач что нужна разумеется. :)

Операционная система полностью соответствует стандарту POSIX 1996 г. в части, относящейся к реальному времени. Те части стандарта, которые не относятся к системам реального времени (традиционный UNIX) реализованы не полностью.
 

подобные вещи настараживают ;)
 2.0.0.182.0.0.18
Это сообщение редактировалось 05.12.2008 в 03:48

Harsky

опытный

rpk> Как сейчас помню приписки в коде "На пентиумах это не будет работаь из-за конвеера" :)
т.е. можно было написать такую программу, которая работала бы на 386, но не работала бы на пне? или как?
 2.0.0.182.0.0.18

rpk

втянувшийся

rpk>>>> Отечественная ОС для встраиваемых систем реального времени существует уже как бы не более десятка лет. При том полностью обеспечивается отечественной же аппаратной платформой.
Harsky> Kernel3>> Опа. А подробнее можно (поиском пользовался - не помогает :( )?
rpk>> ос2000 — Википедия
rpk>> Сейчас уже есть продолжение: ОС3000, или 3.0. Из основного отличая - поддержка ARINC. Хорошая операционка. Для тех задач что нужна разумеется. :)
Harsky> подобные вещи настараживают ;)

хы. А к чему, например, шелл по посиксу на ОС реального времени? :)) Ну за исключением "Чтобы було" :)
 

Harsky

опытный

Harsky>> подобные вещи настараживают ;)
rpk> хы. А к чему, например, шелл по посиксу на ОС реального времени? :)) Ну за исключением "Чтобы було" :)

ну хорошо если только шел, а то может там кроме загрузчика и ядра нет ничего больше. по описанию примерно так и выходит ;)
 2.0.0.182.0.0.18

rpk

втянувшийся

rpk>> Как сейчас помню приписки в коде "На пентиумах это не будет работаь из-за конвеера" :)
Harsky> т.е. можно было написать такую программу, которая работала бы на 386, но не работала бы на пне? или как?
На асме - запросто. Конвеер почему-то не всегда работал так как ожидалост. Да и на shark`х кстаи - вполне современных, та же самая история. Работать то вроде работает, но.... Как дело доходит до чего-то специфического - начинаются проблемы.
 

Harsky

опытный

Harsky>> т.е. можно было написать такую программу, которая работала бы на 386, но не работала бы на пне? или как?
rpk> На асме - запросто. Конвеер почему-то не всегда работал так как ожидалост.

о как интересно. меня тут целый день опанент убеждал что бинарная совместимость - "наше всё", а тут выясняется что с ней тоже не все в шоколаде... а как же это не вылезло нигде на dos/win?
 2.0.0.182.0.0.18
+
-
edit
 

Balancer

администратор
★★★★☆
Harsky> т.е. можно было написать такую программу, которая работала бы на 386, но не работала бы на пне? или как?

Да, можно. Например, если программа модифицирует свой код с небольшим забеганием вперёд. Типа:

code 6502acme
  1.         CALL NEXT
  2. NEXT:
  3.         POP EAX ; так получим в EAX адрес текущей инструкции
  4.         ADD EAX, DATA - NEXT + 1 ; теперь в EAX адрес адреса перехода
  5.         LEA EBX, EDX*2+SOME_BASE
  6.         MOV [EAX], EBX
  7. DATA    0xC3 0 0 0 0 ; ЕМНИП, такой код у JMP


Я, правда, с x86 ассемблером последний раз лет 15 назад сталкивался, в синтаксисе наверняка что-нить напутал. Но подобные конструкции иногда встречались. По 486-й работали. На Пне - нет. Ибо команда перехода на момент записи в неё адреса уже в конвейре и модификация памяти на нём не скажется :)
 

rpk

втянувшийся

Harsky>>> подобные вещи настараживают ;)
rpk>> хы. А к чему, например, шелл по посиксу на ОС реального времени? :)) Ну за исключением "Чтобы було" :)
Harsky> ну хорошо если только шел, а то может там кроме загрузчика и ядра нет ничего больше. по описанию примерно так и выходит ;)
там описание староватое. На самом деле, во второй версии по моему отсутствуют процессы как таковые. Только потоки, а процесс всего один и создается при загрузке системы. В принципе я считаю это вполне "оправданная жертва". В третьей версии ОСРВ, которая по аринку, это разумеется сделано "как положено".
posix 1003.1 (b, c) там вроде весь выполнен как положено. В (a) смысла особого имхо и нет - там впомниться больше прикладные вещи, они не особо требуются в системах реального времени.
 

Balancer

администратор
★★★★☆
rpk> На асме - запросто. Конвеер почему-то не всегда работал так как ожидалост.

Да нет, при совершенно штатной работе конвейера вышеупомянутый трюк уже не сработает.

Впрочем, такой изврат реально редко применялся. Для перехода по вычисленным адресам обычно юзали:
code 6502acme
  1. push eax
  2. ret

:)
 

rpk

втянувшийся

Harsky>>> а как же это не вылезло нигде на dos/win?
Ну почему-же. Вылезало. На асме к тому времени меньше народа стали писать, это немного наверное и внесло свой вклад. На языках высокого уровня компилятор просто не сделает нчиего такого что может вылететь из-за наличия/отсутствия конвеера имхо. Хотя, вижу и такое - но не критично, больше по производительности косячит.
 
+
-
edit
 

Harsky

опытный

Harsky>> т.е. можно было написать такую программу, которая работала бы на 386, но не работала бы на пне? или как?
Balancer> Да, можно. Например, если программа модифицирует свой код с небольшим забеганием вперёд. Типа:
Balancer> Я, правда, с x86 ассемблером последний раз лет 15 назад сталкивался, в синтаксисе наверняка что-нить напутал. Но подобные конструкции иногда встречались. По 486-й работали. На Пне - нет. Ибо команда перехода на момент записи в неё адреса уже в конвейре и модификация памяти на нём не скажется :)

ага, принцип понятен... правда это не самый типовой патерн для какой-нибудь расчетной программы, хотя я чем-то подобный развлекался на асме УКНЦ.
 2.0.0.182.0.0.18

rpk

втянувшийся

rpk>> На асме - запросто. Конвеер почему-то не всегда работал так как ожидалост.
Balancer> Да нет, при совершенно штатной работе конвейера вышеупомянутый трюк уже не сработает.
Balancer> Впрочем, такой изврат реально редко применялся. Для перехода по вычисленным адресам обычно юзали:
Balancer> :)
Ну мне вот буквально не так давно пришлось в очереднйо раз впихивать пару nop`пов в кусок кода на сях (даже такой вот изврат :) ) - как раз из-за конвеера. Можно конечно написать код и по другому, но тогда работает медленне, а скорость у меня критична. А если пишешь чтоб работало побыстрее (+ врубаешь оптимизацию разумееся), из-за конвеера как раз и не прет. Особенности блин. И это 21 век :)
 

Harsky

опытный

Harsky>> ну хорошо если только шел, а то может там кроме загрузчика и ядра нет ничего больше. по описанию примерно так и выходит ;)
rpk> На самом деле, во второй версии по моему отсутствуют процессы как таковые. Только потоки, а процесс всего один и создается при загрузке системы. В принципе я считаю это вполне "оправданная жертва".

если подумать и отбросить предрассудки, оставленные системами общего назначения, но можно согласиться. там даже ФС не очень-то нужна получается
 2.0.0.182.0.0.18
+
-
edit
 

Balancer

администратор
★★★★☆
Harsky> хотя я чем-то подобный развлекался на асме УКНЦ.

Там код не нужно модифицировать, т.к. указатель инструкций (R7) совершенно обычный регистр общего назначания.

MOV R0, R7 ; и поехали...

Собственно, ЕМНИП, там даже команды JMP не было. Точее, BR. Это была просто мнемноника для MOV (R7)+, R7 - т.е. записать в IP содержимое ячейки памяти, на которую он указывает.
 

rpk

втянувшийся

Harsky>>> ну хорошо если только шел, а то может там кроме загрузчика и ядра нет ничего больше. по описанию примерно так и выходит ;)
rpk>> На самом деле, во второй версии по моему отсутствуют процессы как таковые. Только потоки, а процесс всего один и создается при загрузке системы. В принципе я считаю это вполне "оправданная жертва".
Harsky> если подумать и отбросить предрассудки, оставленные системами общего назначения, но можно согласиться. там даже ФС не очень-то нужна получается
Да, по сути так и есть. Там fat и tar имеется, но они как и большинство всего остального подключаются либо отключаются на этапе конфигурирования ядра. Теоретически может фар когда-нибудь и понадобится... Флешку там если вставить, чтоб инфу какую загрузить например. Полетное задание какое-нибудь пилоту перед вылетом, или карту местного района, показания метеостанций или что-то подобное....
 

tarasv

опытный

Harsky> только большинство ресурсоемких задач непременно хочет плавающую точку, да и скорость работы с памятью побольше. ЕМНИС интел никогда не баловал встроенными контроллерами памяти, вот и получается, что по целочисленным тестам вроде бы всех рвал как тузик грелку, а в реальных задачах был довольно умеренным. а сейчас-то уже и сравнивать толком не с кем, только АМД еще трепыхается

Если посмотреть результаты синтетических тестов с учетом стоимости систем то к 2000 достаточно хорошо видно что остались x86 и Power, остальные архитектуры не могли с ними конкурировать и быстрая плавающая арифметика их в конукренции с x86 не спасала, во всяком случае для бизнес задач да и не самый быстрый доступ к памяти на фоне работы с дисками не сильно Интелам мешал. Тогдаже и пошли большие кластера для компонентов которых высокое отношение производительности одного узла к его цене куда важнее его максимальной производительности. Кстати сиcтемы максимальной производительности (не кластера) как делали так и продолжают делать на Power. Когда дороже $10M x86 системы им в производительности серьезно уступают.
 7.07.0
Это сообщение редактировалось 05.12.2008 в 06:46
+
-
edit
 

Kernel3

аксакал

Kernel3>> Даа? И о чём же, по-вашему, идёт речь? :F
Harsky> вы о шине данных (какое счастье, можно было и 8086 сделать 64-разрядным малой кровью). а я об арифметике (мне в quake 1 было комфортнее играть на ppc 604 90MHz, чем на celeron 233MHz)

Не, я о том что "внутренняя разрядность ЦПУ" - понятие расплывчатое с некоторых пор. Ставшее ещё чуть более расплывчатым с появлением суперскалярности ;) Поэтому определение оной нужно давать аккуратно, с оговорками. Собственно, от того и возникла точка зрения "разрядность ЦПУ = разрядности внешней шины данных". Её не я придумал, ежели что :)
Broken Windows® cures my ills and makes me feel alright... ©  
+
-
edit
 

Kernel3

аксакал

adv1971> P.S. Про крутость Intel и платформы x86 так сказать :
adv1971> Могу напомнить, что некая Yamaha MSX (1,2) на I8080 по графике и звуку крыла PC/XT/286 как бог черепаху. И крыла, по большому счету, пока на писюках VGA и SB не появились.
adv1971> То есть даже используя старый Intel, можно было получать лучшие результаты в нужной области( я в курсе что видео и звук там были свои, но сам факт - просто введение видео и аудио процов позволило машине на I8080 конкурировать с машинами на I8086 и 286).

Гы. Ну, можно и аппаратную поддержку спрайтов и многоканального звука в понятие платформы ввести. Только надо ли? ;)
Broken Windows® cures my ills and makes me feel alright... ©  
+
-
edit
 

Harsky

опытный

Harsky>> хотя я чем-то подобный развлекался на асме УКНЦ.
Balancer> Там код не нужно модифицировать, т.к. указатель инструкций (R7) совершенно обычный регистр общего назначания.
Balancer> MOV R0, R7 ; и поехали...
Balancer> Собственно, ЕМНИП, там даже команды JMP не было. Точее, BR. Это была просто мнемноника для MOV (R7)+, R7 - т.е. записать в IP содержимое ячейки памяти, на которую он указывает.

там были свои особенности, связанные с тем, что работа с графикой/звуком шла исключительно через сопроцессор, если ты помнишь/знаешь
через общие окна памяти управлять было неудобно, если хотелось чего-то нестандартного, вот и исхитрялись, как могли. записывали куски кода в память второго проца, передавали управление, по необходимости меняли часть, в т.ч. и таблицы переходов
 2.0.0.182.0.0.18

Mishka

модератор
★★☆
Harsky> жила убогая (на фоне всяких vms и unix). к тому времени, как процессор перестал быть убогим, владельцы


UNIX на момент появления 8086 был достаточно убогим сильно. :) http://www.levenez.com/unix/unix_a4.pdf — Приличным он стал в середине 80-х, когда System V или BSD 4.2 появились, ИМХО.
 3.0.43.0.4

Mishka

модератор
★★☆
tarasv> Просто выше по ветке был тезис о том что все игрушки придумали до Интел, а он только массовым ширпотребом брал, но как на деле сравнить то кроме плавающей арифметики у RISC процессоров (да и то не всех) проимуществ то и небыло.

Дык, сами-то RISC не делали плавающую точку. :) Противоречит архитектуре. Допжелезо работало. Я видел варианты в лабах, когда это допжелезо присоединяли к Интелу и тоже летало. :) Была такая разработка в одном универе — типа крутой считалки для учёных.
 3.0.43.0.4
+
-
edit
 

Kernel3

аксакал

Ну, можно ещё серийные сопроцессоры Weitek вспомнить :) Которые прилагались и к i486DX тоже :F
Broken Windows® cures my ills and makes me feel alright... ©  

Harsky

опытный

Harsky>> жила убогая (на фоне всяких vms и unix). к тому времени, как процессор перестал быть убогим, владельцы
Mishka> UNIX на момент появления 8086 был достаточно убогим сильно. :) http://www.levenez.com/unix/unix_a4.pdf — Приличным он стал в середине 80-х, когда System V или BSD 4.2 появились, ИМХО.

убогость убогости рознь. к моменту появления BSD 4.2 MS-DOS только-только научилась работать с жестким диском и директориями.
по топику: Real-Time Systems with Windows NT
в теории получить RT-систему можно, а на практике кто-нибудь из присутствующих сталкивался с чем-то подобным на NT?
 2.0.0.182.0.0.18

Mishka

модератор
★★☆
Harsky> т.е. можно было написать такую программу, которая работала бы на 386, но не работала бы на пне? или как?
Элементарно, Ватсон. :)
 3.0.43.0.4
1 2 3 4 5 6 7 8

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru