|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.01.2019, 22:17 | #1 |
Новичок
Джуниор
Регистрация: 10.01.2019
Сообщений: 5
|
Архитектура MPU и ОС
Программирую давно, но на прикладном уровне. Решил копнуть глубже. Не судите строго. Немного сумбурные вопросы:
1. Разные процессоры используют разные команды нативного кода, соответственно и разные asm команды. Мы пишем программу, компилируем, и, правильно ли я понимаю, при запуске этой программы сама ОС адаптирует код под имеющуюся архитектуру и доступные комманды? 2. Интерпретатор или же виртуальная машина так же адаптирует байт-код под архитектуру или же это делается как-то иначе? 3. Опять же по ОС. При работе программы - ОС распределяет время ЦПУ на каждый поток, т.е., если я правильно понял, она вставляет в оперативку и передает управление только часть кода активной программы? И тут же дополнительный вопрос: проверяет ли она код на наличие недопустимых команд перед передачей управления? Если вопросы примитивны и содержаться в литературе - готов читать, только подскажите, пожалуйста, конкретных авторов. Но и за прямые ответы буду очень благодарен. |
10.01.2019, 22:32 | #2 | |||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
Цитата:
Цитата:
Цитата:
А это зависит от многих вещей... от размера памяти, от загруженности ее, от размеров программы, от использованных механизмов работы с памятью и т.д. |
|||
10.01.2019, 22:44 | #3 | |
Новичок
Джуниор
Регистрация: 10.01.2019
Сообщений: 5
|
Цитата:
Про процессоры я не имел ввиду, что все команды разные. Я к тому, что не все команды одинаковые. Так было бы правильнее. Если адаптирует под архитектуру компилятор, то, получается, идет "скрытая" от разработчика проверка на наличие доступности той или иной asm команды(ведь компилируется на одном, исполняется на другом) и сама программа принимает решение как именно работать на том или ином железе? Интерпретатор ведь в своей сущности просто переводит скрипт в нативный код и так же вставляет его в ОЗУ. Однако, я так понимаю, сам интерпретатор принимает решение что именно и как "вставить" в ОЗУ. В целом верное суждение? Еще раз спасибо за ответ. Может быть порекомендуете какую-нибудь литературу для более досканального изучения? Спасибо! |
|
10.01.2019, 22:49 | #4 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Компиляторы преобразовывает текст программы в родной(нативный) код процессора.
С таким кодом ОС ничего не делает, в плане адаптации. ОС проверяет заголовок у исполняемого файла и если архитектура не совпадает, то выдает сообщение о ошибки. Есть компиляторы которые преобразовывают текст программы П-код. Тогда он либо интерпетируется, либо преобразовывается в родной код машины. Последнее называется JIT- трансляцией. Делает это ОС? Обычно - это прерогатива таких программ как Java-машина. ОС - это совокупность программ, поэтому входит Java-машина или Net-машина в ОС это решает разработчик дистрибутива. Интерпретатор ничего не адаптирует он выполняет текст программы строчка за строчкой, либо байт за байтом из П-кода. Более правильно из своего внутреннего представления, а вот уж какое оно там дело десятое: текст, AST, П-код, IL и тп. А вот виртуальная машина может работать как транслятор либо как интерпретатор. Передать управление можно куму, либо чему. ОС отдаёт управление программе. Наличие недопустимых команд не проверяется. Смысла нет так как код можно модифицировать. За проверку отвечает процессор он в случае недопустимой команды прерывает свою работу и начинает выполнять обработку исключительной ситуации. Обычно просто прыгает на заранее указанный адрес кода для обработки исключительной ситуации. А тот уже разгуливает как надо действовать и куда должна идти программа дальше. Ещё антивирус при загрузки программы может проверить правильность команд.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 10.01.2019 в 23:02. Причина: байт код заменил на П-код |
10.01.2019, 22:55 | #5 | |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Цитата:
Ещё можно в тексте программы можно проверить поддерживает процессор группы команд к XMM, SSE, и тд и прописать if что-бы процессор не исполнял недопустимые команды. Этим обычно разработчики библиотек занимаются.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
|
10.01.2019, 23:01 | #6 | |
Новичок
Джуниор
Регистрация: 10.01.2019
Сообщений: 5
|
Цитата:
Чувствую, что для повышения качества кода совсем не помешает эти знания, пускай и для фронтенда По крайней мере становиться легче играться с соотношением поддерживаемость кода/производительность! |
|
10.01.2019, 23:01 | #7 | |||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
Цитата:
Есть определенные названия архитектур, симейств процессоров и конкретных технологии. При компляции можно тем или иным способом сказать компилятору, что вы хотите. Естественно, комбинация этих свойств определяет доступные для компилятора и программиста команды. Цитата:
Цитата:
Код:
|
|||
10.01.2019, 23:04 | #8 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
|
10.01.2019, 23:09 | #9 | |
Новичок
Джуниор
Регистрация: 10.01.2019
Сообщений: 5
|
Цитата:
То, что вы говорите в целом мне ясно. Просто я пытаюсь смотреть в самый корень процессов. Не просто идеи, а как бы представлять реальные физические процессы. По факту - интерпретатор ведь тоже программа, а значит процессор исполняет ее в виде 1010101, стало быть хочу понять, интерпретатор считывая строку скрипта, переводит как это сделал бы компилятор в 101011 и встраивает в процесс исполнения(извиняюсь, если терминология страдает, техобразования не имею), или же есть разные участки программы, которые уже загружены в ОЗУ и они исполняются просто с параметрами из скрипта. Надеюсь внятно объясняю. |
|
10.01.2019, 23:13 | #10 | ||
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Цитата:
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
||
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
mpu 6050 | ksprog | Микроконтроллеры, робототехника, схемотехника, 3D принтеры | 4 | 23.07.2018 13:25 |
акселерометр MPU-6050 и atmega16(a) | 25-й кадр | Помощь студентам | 2 | 26.05.2014 14:42 |
Архитектура ПК | Veselyn | Помощь студентам | 2 | 24.07.2012 14:39 |
архитектура... | Аня Кольничук | Помощь студентам | 7 | 16.05.2012 07:45 |
Архитектура ВТ. | boris_nikolaenko | Помощь студентам | 2 | 23.01.2012 10:36 |