Коллега, не будь так категоричен. Тут дело в том, какую степень близости к "железу" закладывают авторы ОС. Поэтому и COKPOWEHEU тоже несколько категоричен в своём утверждении. ИМХО, в данном случае истина ровно посередине между вашими мнениями. Хотя, следуя логики классических учебников по ОС, утверждение COKPOWEHEU справедливо, а вот реалии таковы, что не все ОС берут на себя управление "железом", тут твоя правда, НовыйДень.НовыйДень писал(а):Занавес! А что же тогда делают драйвера периферии? Мдяяя....
Не могу понять код опроса кнопки STM32
- Сообщения: 1326
- Зарегистрирован: Вт ноя 19, 2019 06:10:18
- Реклама
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Попробуйте из своей винды попосылать ATA-команды жесткому диску, получится это сделать без админских прав?Занавес! А что же тогда делают драйвера периферии? Мдяяя....
Нет, не получится, потому что работа с железом и распределение памяти и процессорного времени это задача ядра. То, что вы слышали только про примитивные ОС без разделения прав доступа (в вашей RTOS хотя бы разделение юзерского и машинного кода есть?), ограничения доступа к памяти и периферии, динамического приоритета, на значит, что это везде так. Это сделано только ради экономии памяти и скорости, и допустимо только для монолитной системы, когда все процессы известны заранее.
И именно поэтому об устройстве ОС рассказываю я, а не вы.с ОСРВ я работаю уж лет 10
И да, напрасно вы все пытаетесь свести именно к RTOS. Мы обсуждаем операционные системы и многозадачность вообще, вплоть до конечных автоматов, с которых разговор и начался.
если мне не изменяет память, Windows вплоть до Win95 была кооперативной ОС, и только с появлением NT стала содержать элементы "принуждения" для потоков...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 362
- Зарегистрирован: Вс апр 03, 2022 07:01:29
А кто-нить тут понимает разницу между ОС компьютера и ОСРВ микроконтроллера?
Не ожидал от контингента Радиокота такого низкого уровня.
Потому как даже в балшом кампутере ОС с железом работает через драйверы. Драйвер видеокарты, драйвер HDD, драйвер звука, драйвер сетевой карты. Просто они написаны через API, принятое в ОС. Но они не являются составом ядра ОС. То, что стандартные драйвера устройств поставляются вместе с ОС, не говорит о том, что ядро ОС работает непосредственно с видеокартой, например. Это просто заблуждение. ОС работает с видеокартой через API драйвера видеокарты, который, в свою очередь написан так, что может работать в этой конкретной ОС. Тут всё просто.
Та же ситуация и в ОСРВ микроконтроллера. ОСРВ не имеет привязки к физическим входам-выходам, интерфейсам SPI, I2C, UART, RTC, LTDC, ADC и тому подобным. Операционка (универсальная) имеет небольшой файл портирования, обеспечивающий привязку к ядру МК, но не ко всей периферии.
Доводилось видеть единичных изобредателей, пытающихся написать подобие операционки, впихнув в нее работу с периферией МК. Но такие операционки были обречены на провал из-за их ограниченности. COKPOWEHEU, как видно, ратует именно за такую операционку. Но этот вариант не получил распространения именно из-за его ограниченности, фактически из-за дублирования.
В частности, COKPOWEHEU предлагал внедрить в стандартную библиотечную ф-цию strlen пользовательский код, выполняющий проверку системного таймера с целью узнать, истекло ли время или нет. Причем, в этом случае он не пояснил, как часто нужно выполнять эти проверки, сколько раз нужно дублировать этот код в ф-ции strlen. Это конечно, "изобредательство", достойное звания "индусский код".
Чего конкретно обсуждает COKPOWEHEU, понимает только он сам, поскольку его мотает из стороны в сторону, и он уже даже сам запутался, что он говорил и не признает свои же слова. Единственное, в чем он преуспел, так это в полемике - способности переврать слова и обвинить других в собсвенных бедах. Псаки гордилась бы им.
КА - это не синоним многозадачности. КА - это просто блок с набором состояний.
И напрасно COKPOWEHEU пытается что-то противопоставить моему 20-летнему опыту и знаниям, его обвинения так же смешны, как утверждения Псаки о морских берегах Белоруссии
COKPOWEHEU просто начинает слишком хорошо изворачиваться и уходить в сторону, закидывая какашками в ответ, чтобы не признать свое поражение. Вот и всё, соппсна...
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4220813#p4220813"]разделение юзерского и машинного кода[/uquote]
Машинный код? Хм. Это который
200001ce: b480
200001d0: af00
200001d2: bf00
?
Или быть может имеете ввиду привилегированные режимы доступа, защищенные области памяти и тому подобное? Так это не "машинный код"! Вы бы терминологию подтянули, чтоль
А то ваш "мышинный код" вызывает снисходительную улыбку.
Потому как даже в балшом кампутере ОС с железом работает через драйверы. Драйвер видеокарты, драйвер HDD, драйвер звука, драйвер сетевой карты. Просто они написаны через API, принятое в ОС. Но они не являются составом ядра ОС. То, что стандартные драйвера устройств поставляются вместе с ОС, не говорит о том, что ядро ОС работает непосредственно с видеокартой, например. Это просто заблуждение. ОС работает с видеокартой через API драйвера видеокарты, который, в свою очередь написан так, что может работать в этой конкретной ОС. Тут всё просто.
Та же ситуация и в ОСРВ микроконтроллера. ОСРВ не имеет привязки к физическим входам-выходам, интерфейсам SPI, I2C, UART, RTC, LTDC, ADC и тому подобным. Операционка (универсальная) имеет небольшой файл портирования, обеспечивающий привязку к ядру МК, но не ко всей периферии.
Доводилось видеть единичных изобредателей, пытающихся написать подобие операционки, впихнув в нее работу с периферией МК. Но такие операционки были обречены на провал из-за их ограниченности. COKPOWEHEU, как видно, ратует именно за такую операционку. Но этот вариант не получил распространения именно из-за его ограниченности, фактически из-за дублирования.
В частности, COKPOWEHEU предлагал внедрить в стандартную библиотечную ф-цию strlen пользовательский код, выполняющий проверку системного таймера с целью узнать, истекло ли время или нет. Причем, в этом случае он не пояснил, как часто нужно выполнять эти проверки, сколько раз нужно дублировать этот код в ф-ции strlen. Это конечно, "изобредательство", достойное звания "индусский код".
Чего конкретно обсуждает COKPOWEHEU, понимает только он сам, поскольку его мотает из стороны в сторону, и он уже даже сам запутался, что он говорил и не признает свои же слова. Единственное, в чем он преуспел, так это в полемике - способности переврать слова и обвинить других в собсвенных бедах. Псаки гордилась бы им.
КА - это не синоним многозадачности. КА - это просто блок с набором состояний.
И напрасно COKPOWEHEU пытается что-то противопоставить моему 20-летнему опыту и знаниям, его обвинения так же смешны, как утверждения Псаки о морских берегах Белоруссии
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4220813#p4220813"]разделение юзерского и машинного кода[/uquote]
Машинный код? Хм. Это который
200001ce: b480
200001d0: af00
200001d2: bf00
?
Или быть может имеете ввиду привилегированные режимы доступа, защищенные области памяти и тому подобное? Так это не "машинный код"! Вы бы терминологию подтянули, чтоль
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Да все понимают кроме вас.А кто-нить тут понимает разницу между ОС компьютера и ОСРВ микроконтроллера?
Они в юзерспейсе работают по-вашему?Потому как даже в балшом кампутере ОС с железом работает через драйверы. Драйвер видеокарты, драйвер HDD, драйвер звука, драйвер сетевой карты.
Учитывая, что я уже штук пять разных описал, с разными подходами, какую именно "такую" вы пытаетесь мне приписать?COKPOWEHEU, как видно, ратует именно за такую операционку.
Не предлагал, а описывал существующее (точнее, существовавшее).В частности, COKPOWEHEU предлагал внедрить в стандартную библиотечную ф-цию
КА это простейший способ организации многозадачности.КА - это не синоним многозадачности. КА - это просто блок с набором состояний.
А чего тут противопоставлять. У меня знания есть, я мим делюсь. У вас нет, вы только бред несете, причем без малейшей конкретики.И напрасно COKPOWEHEU пытается что-то противопоставить моему 20-летнему опыту и знаниям
Это здесь каким боком?! Зачем вы в какую-то политику или еще хз куда сползаете? Думаете, так ваш бред будет солиднее выглядеть?утверждения Псаки о морских берегах Белоруссии
Если бы я написал Machine mode, Hypervisor mode, System mode, User mode, вам бы это ничего не сказало ввиду отсутствия базовых знаний, поэтому и упрощаю чтобы даже вы поняли. Не знаю как бы вам еще проще объяснить. На аналогиях с зайчиками что ли?!Машинный код? Хм. Это который
- Реклама
- Сообщения: 362
- Зарегистрирован: Вс апр 03, 2022 07:01:29
Так между словами Code и Mode есть разница? Для вас, вижу, нет, даже визуальной. Впрочем, довольно этого цирка. Вы показали наглядно, что слишком хорошо изворачиваетесь, не желая признать даже долю своей неправоты. Это поведение псаководов.
На этом ставлю жыыырную точку. Дальше можете хоть обосраться от счастья, все равно ваш уровень слишком слабый, зато вы хорошо преуспели в полемике стипя псаки.
На этом ставлю жыыырную точку. Дальше можете хоть обосраться от счастья, все равно ваш уровень слишком слабый, зато вы хорошо преуспели в полемике стипя псаки.
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Для вас, очевидно, нет.Так между словами Code и Mode есть разница?
Только потому что какой-то политически озабоченный неуч об этом орет? Я вас огорчу, чтобы я признал неправоту, нужны факты, а не крики.не желая признать даже долю своей неправоты
То есть наконец-то прекратите нести свой бред? Ну наконец-то!На этом ставлю жыыырную точку.
кстати, функция yeild (если я правильно написал) была и в кооперативках, есть и в других, в т.ч. rtos, да и sleep никто не отменял - все эти функции принудительно переключают задачи.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 1326
- Зарегистрирован: Вт ноя 19, 2019 06:10:18
Нифига. Пример- QNX. Кстати, и MINIX построена по такому же принципу.COKPOWEHEU писал(а):работа с железом и распределение памяти и процессорного времени это задача ядра
Не в ядре! У х86 так-то 4 уровня привилегий. 0- это ядро, 3- юзверь. А между ними ещё 2, вот в них и работают.COKPOWEHEU писал(а):Они в юзерспейсе работают по-вашему?
Нет никакой разницы. Опять же, ядро QNX занимает всего 8К, ИМХО, немногим более FreeRTOS.НовыйДень писал(а):А кто-нить тут понимает разницу между ОС компьютера и ОСРВ микроконтроллера?
Совершенно верно. Подсистема ввода-вывода может работать не в пространстве ядра, тогда у одного ядра могут быть разные API для работы с периферией. И работой с периферией происходит через менеджер периферии, который для ядра ОС является обычной задачей.НовыйДень писал(а):Просто они написаны через API, принятое в ОС
Судя по вашим постам, вы кроме Выньды и Линукса из ОС ничего не пользовали. Почитайте, например, про QNX. Только не трогайте ядро NT. Это химера, полученная путём скрещивания ёжика с ужиком, то бишь микроядерной ОС, основанной на передаче сообщений, и монолитной а-ля MS-DOS.
это я к тому, что никто не мешает писать функции, заставляя в нужных местах ОС переключать задачи.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 1326
- Зарегистрирован: Вт ноя 19, 2019 06:10:18
[uquote="ARV",url="/forum/viewtopic.php?p=4221084#p4221084"]это я к тому, что никто не мешает писать функции, заставляя в нужных местах ОС переключать задачи.[/uquote]
А причём тут ОС? Она для реализации простейшей корпоративной многозадачности не нужна. Весь переключатель пара-тройка десятков команд на ассемблере.
А причём тут ОС? Она для реализации простейшей корпоративной многозадачности не нужна. Весь переключатель пара-тройка десятков команд на ассемблере.
да тут писькомерщики спорили, как кооперативка работает... вот я и написал, что в любой многозадачной ОС есть возможность внутри любой функции переключить контекст принудительно.
как бы реплика со стороны, только и всего...
как бы реплика со стороны, только и всего...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Вы, наверное, имели в виду добровольно. Вызывая функцию ожидания поток говорит ядру "мне процессорное время пока не нужно, отдай кому-нибудь другому".кстати, функция yeild (если я правильно написал) была и в кооперативках, есть и в других, в т.ч. rtos, да и sleep никто не отменял - все эти функции принудительно переключают задачи.
Это уже развитие в другую сторону: вместо работы с устройствами напрямую ядро делегирует эту задачу (и соответствующие права) выделенным процессам.Нифига. Пример- QNX. Кстати, и MINIX построена по такому же принципу.
Это с какой стороны посмотреть. Про х86 сказать не могу, но в RISC-V тоже 4 уровня: машина, гипервизор, система и юзер. А учитывая сказанное вами ранее, работа с устройствами может быть проброшена на любой уровень.Не в ядре! У х86 так-то 4 уровня привилегий. 0- это ядро, 3- юзверь. А между ними ещё 2, вот в них и работают.
Тут, правда, возникает вопрос что считать ядром - гипервизор или гостевую ОС. Скорее всего, все же гостевую, ведь ей либо пробрасывают реальные устройства, либо эмулируют виртуальные. А гипервизор работает скорее в упомянутой вами философии микроядра: раздал кому надо права, а в тонкости не лезет.
А кто-нить тут понимает разницу между ОС компьютера и ОСРВ микроконтроллера?[/quote]
Разница, конечно, есть, хотя и не строгая.Нет никакой разницы.
Контроллеры заточены под быструю и предсказуемую реакцию на внешние события при малой вычислительной нагрузке, поэтому для них обычно пишут на регистрах, конечных автоматах и ОСРВ.
А компьютеры наоборот, под тяжелые расчеты и большие объемы данных, но без требований к времени отклика, поэтому и специфика ОС чуть другая.
Еще может быть разница на чем делается акцент - на безопасности, переносимости, гибкости.
- Сообщения: 1326
- Зарегистрирован: Вт ноя 19, 2019 06:10:18
Это просто другая архитектура построения ОС. Я же не зря выше заметил, что кроме Выньды и Линукса спорщики ничем не пользовались и не узучали.COKPOWEHEU писал(а):Это уже развитие в другую сторону: вместо работы с устройствами напрямую ядро делегирует эту задачу (и соответствующие права) выделенным процессам.
Вооот, я же говорю, что курс по ОС вам в институте не читали, и сами вы не изучали и не пользовались. Например, QNX- это ОСРВ, для которой детерминировано время реакции на внешние события.COKPOWEHEU писал(а):Контроллеры заточены под быструю и предсказуемую реакцию на внешние события при малой вычислительной нагрузке, поэтому для них обычно пишут на регистрах, конечных автоматах и ОСРВ.COKPOWEHEU,
Какай, нафиг, гипервизор, какая гостевая ОС? Блин, вы чё? Это ядро так устроено! И сделано это было аж в начала 1980-х, когда на х86 появился защищённый режим. Почитайте устройство OS/2, которая на всю катушку, в отличие от Выньды, использовала возможности х86. А ещё лучше, изучите устройство QNX, тогда ужаснётесь, как много вы не знаете об ОС.COKPOWEHEU писал(а): Скорее всего, все же гостевую, ведь ей либо пробрасывают реальные устройства, либо эмулируют виртуальные. А гипервизор работает скорее в упомянутой вами философии микроядра: раздал кому надо права, а в тонкости не лезет.
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Дело не в винде и линуксе, дело в соображениях безопасности. Нельзя просто так давать всем юзерским приложениям доступ ко всей памяти, периферии и прочему. Соответственно, ядро должно хотя бы раздать права доверенным приложениям.Это просто другая архитектура построения ОС. Я же не зря выше заметил, что кроме Выньды и Линукса спорщики ничем не пользовались и не узучали.
Продолжайте свою мысль. Пока никакого противоречия с моими высказываниями не вижу.Например, QNX- это ОСРВ, для которой детерминировано время реакции на внешние события.
Я говорю об уровнях привилегий процессора и коде, который на них работает. Открываем документацию на процессор и видим Machine mode, Hypervisor mode, System mode, User mode и наборы регистров, которые на них доступны. Для машины у них будет префикс m, для гипервизора h, для системы s, для юзера u. Например, регистр адреса возврата из прерывания mepc, hepc, sepc, uepc (хотя не уверен, возможно, юзерские прерывания уже выкинули из спецификации).Какай, нафиг, гипервизор, какая гостевая ОС?
Добавлено after 2 minutes 59 seconds:
Я не спорю, что многого не знаю, но о чем не знаю, я и не говорю. Например, я не знаю как называются уровни привилегий в x86, так я сразу сказал, что говорю про risc-v. Я не знаю какова точно конвенция сохранения регистров в arm, так я и говорю про risc-v и avr. Общая-то суть остается одинаковой.тогда ужаснётесь, как много вы не знаете об ОС.
Впрочем, если у меня есть фактические ошибки - укажите на них.
самое главное, что все это непосредственно касается опроса кнопок на конкретной архитектуре...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
Здесь же священный спор: сидеть в суперлупе с конечными автоматами или же не вылезать из прерываний; не допускать блокирующих операций или абдуринничать; разбивать все тяжелые операции на элементарные или абдуринничать; писать нормальный код без сторонних говнолиб или же абдуринничать…
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
ну, поскольку тут пошел уже сплошной оффтоп, скажу и я.Eddy_Em писал(а):писать нормальный код
я за свою жизнь имел счастье/несчастье видеть много чужого кода. и ни один вариант я не могу назвать "нормальный" - при виде любого чужого кода у меня на языке вертится "какой дебил так пишет?!"
скачивал Windows DDK с кучей примеров в исходниках. казалось бы, ведущая фирма-разработчик ПО, уж у них-то код должен быть на уровне, там же рефакторинг, контроль, тестирование и т.п. куда там! если считать, что чем сильнее раздроблен код на функции, тем качественнее он, то да, майкрософтовский код идеален, полно функций типа
Код: Выделить всё
int user_data_invalid_set_value_driver_usart_vitality_exception_loop(LPTRN_vector *data_user_invalid){
return data_user_invalid->invalid_def_data ? 0 : data_user_invalid->invalid_def_data->error_definition->text;
}про исходники на Delphi, с которой у меня самые теплые отношения, я вообще молчу - даже в книгах (в книгах, Карл!!!) приводятся примеры, за которые положено убивать путем запихивания клавиатуры в задницу с проворотом.
и каждый, кто написал хоть три строки кода, считает себя вправе рассказывать, как ПРАВИЛЬНО писать код...
кто-то подвинут на MISRA, хотя на 99% пишет несовместимый с ним код, кто-то на Буче, кто-то на Страуструпе... и тем не менее то, что они делают, так же ужасно, как то, что они критикуют.
может быть уже пора прекратить разговоры о качестве кода? качество кода определяется теми и только теми, кто с этим кодом работает! не теми, кто изредка смотрит на него со стороны, а теми, кто его пишет и правит. поэтому критика чужих подходов изначально бессмысленна и беспощадна.
лучшее правило - по народной поговорке: то полезно, что в рот полезло. или, по-программистски: что удовлетворяет требованиям - то и правильно, то и хорошо
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 202
- Зарегистрирован: Сб янв 09, 2016 15:51:17
Хороший, качественный, прозрачный, быстрый, защищённый...ARV писал(а):и каждый, кто написал хоть три строки кода, считает себя вправе рассказывать, как ПРАВИЛЬНО писать код...
Всё это умещается в одно слово - красиво.
А красиво бывает только в одном случае, когда не мешают в одну кучу содержимое блоков и слоёв.
Пределы видимости игнорируют 99,99% программистов. Почти любой исполнительный файл для вин приложения - содержит шапку из 10-30 подключаемых хидеров. Там священная война за абстракции дала сбой - оружие раздали, а врага не показали. В результате простые вещи абстрактно обзываются по сотни раз, собираются в мега_длинные структуры, и весь этот кал тащится через несколько слоёв, для простых математических операций.
Вот если в коде есть переменные или функции с именем на полную строку - значит перед вами очередная какашка с миллиардом глобальных переменных.
а красота - понятие субъективное.AVI-crak писал(а):Всё это умещается в одно слово - красиво.
и это не мешает существованию 99,99% успешно работающих, прекрасных и полезных приложенийAVI-crak писал(а):Пределы видимости игнорируют 99,99% программистов.
и что же из этого следует?
вспомнилось: каждая программа содержит хотя бы одну ошибку. самая простая программа состоит из 1 строки. следовательно, безошибочная программа не содержит ни одной строки.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!


