powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Что такое native?
25 сообщений из 25, страница 1 из 1
Что такое native?
    #39753200
azsx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сразу, я в pure C и asm полный ноль. Листал, но не изучал, Столярова по asm, что-то по C, писал простейшие учебные программы. Хочу узнать, правильно ли я понял native. Пример программы компилирую в calculate linux:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
cat hello.c

#include <stdio.h>
main () {
  int i;
  i = 0;
  printf("%d\n",i);
return 0;
}

gcc hello.c -o hello

./hello


Получаю "0".

hexedit ./hello

Смотрю 16 ричный код приложения. Это native для моей сборки linux Gentoo 7.3 верно?
Вижу формат elf внутри файла. Там разные коды. Вопрос.
Вот этот код -- он же не имеет никакого отношения к машинным кодам?
то есть.
В компьютере память в банках, допустим 2 банки по 256 мб. Я не пишу в программе hello, что хочу работать именно с 1 банкой. Я прошу ОС выделить мне оперативную память под переменную i. Допустим я заведу переменную str размером 1 гига байт. ОС не моргнув глазом залезет в файл подкачки. Причина в том, что у меня нет через коды доступа к оперативной памяти на физическом уровне. Есть доступ к ОС, которая через драйвер выделяет мне память. Верно?
Вывод осуществляется видеокартой. Но я не посылаю команды видеокарте, я посылаю команды какому то api (драйвер) в ОС, чтобы она вывела переменную i, верно?
Причина в том, что этот native по сути запущен в ОС как в виртуальной машине. И это верно для всех ОС (windows).
или я совсем не прав?
зы
код обсуждать со мной бессмысленно, вопрос интересен только теоретически, я движки для игр не пишу, мне доступ к оборудованию напрямую не нужен.
...
Рейтинг: 0 / 0
Что такое native?
    #39753201
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВот этот код -- он же не имеет никакого отношения к машинным кодам?
частично имеет. внутри elf есть и машинные коды и информация, нужная для того чтобы ОС могла эти машинные коды правильно запустить.

Когда ты выделяешь память на куче, ты дергаешь системный вызов(обычно не напрямую).
Этот системный вызов приводит к работе ОС, которая знает про swap, про страницы памяти, про то, какие страницы памяти в какое адресное пространство твоего процесса отображены, и может сделать правильную работу для того, чтобы в адресном пространстве твоего процесса появились нужные страницы памяти.

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

авторПричина в том, что этот native по сути запущен в ОС как в виртуальной машине.

Конечно, такое полемическое упрощение можно использовать :)

Но машинные коды, которые исполняются в твоем процессе - исполняются напрямую процессором. И максимум вмешательства ОС в это - это прерывание исполнение твоего кода когда нужно дать процессорное время другому или когда твои машинные коды обратились к адресному пространству с неназначенной страницей памяти. Ну или еще по каким то причинам, по которым ОС решит прервать тебя :)
...
Рейтинг: 0 / 0
Что такое native?
    #39753204
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
azsxВижу формат elf внутри файла. Там разные коды. Вопрос.
Вот этот код -- он же не имеет никакого отношения к машинным кодам?

Значит тебе нужно почитать следующую книжку Столярова про низкоуровневое программирование в Linux.
Там все неясности быстро устраняются. ELF, такой же ОС-специфичный формат, как и PE под Windows.
ОС просто загружает в память программу по своим правилам и секция .text должна быть байт-в-байт одинаковой на
обеих платформах, если компилировалась, скажем, gcc под обеими платформами под одну архитектуру с
одинаковыми флагами и не вызывала ОС-специфичных сущностей.
Остальное содержимое файла уже зависит от целевой ОС, но суть, примерно одинаковая.
...
Рейтинг: 0 / 0
Что такое native?
    #39753206
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
azsx, native значит скомпилированный код под конкретный проц и под конкретную ОС. Т.е. код собранный в виндовсе не заработает в линуксе, а код для линукса на x86 проце не заработает на ARM проце и т.д. Хотя исходный код на С скомпилируется и заработает во всех перечисленных случаях, но native код будет свой для каждого случая.
...
Рейтинг: 0 / 0
Что такое native?
    #39753207
azsx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_k частично понятно. Например:
***
i = 0;
i = i + 1;
***
То есть как я понимаю, когда идёт операция присваивания i -- эти машинные коды перехватывает ОС и сама присваивает значения. А вот когда идёт суммирование одного значения к другому ОС ничего не перехватывает и те же машинные коды напрямую передаются на процессор. Именно эти перехваты называются защищённым режимом?
При этом любое обращение не к процессору (оперативная память, жесткий диск, usb порт и так далее) записывается в машинных кодах, но так или иначе всегда перехватывается ОС.
Верно?
...
Рейтинг: 0 / 0
Что такое native?
    #39753213
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
azsxalex_k частично понятно. Например:
***
i = 0;
i = i + 1;
***
То есть как я понимаю, когда идёт операция присваивания i -- эти машинные коды перехватывает ОС и сама присваивает значения. А вот когда идёт суммирование одного значения к другому ОС ничего не перехватывает и те же машинные коды напрямую передаются на процессор. Именно эти перехваты называются защищённым режимом?
При этом любое обращение не к процессору (оперативная память, жесткий диск, usb порт и так далее) записывается в машинных кодах, но так или иначе всегда перехватывается ОС.
Верно?
Неверно. Присвоение происходит без участия ОС. ОС ничего не перехватывает, код сам вызывает API ОС там где это надо.
Читай книги. По линуксу не подскажу, по виндовсу читай Рихтера
...
Рейтинг: 0 / 0
Что такое native?
    #39753224
azsx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторОС ничего не перехватывает, код сам вызывает API ОС там где это надо.
Вот теперь всё понятно.
---
Допустим человек знает C и asm. Он может управлять своей программой для nix или windows как в примере ниже?
Человек пишет, что "для задач высокочастотного трейдинга требуется очень высокая производительность; так как более холодная банка памяти работает быстрее, а памяти для его участка кода надо мало он сам решает на какой банке памяти будут храниться его переменные".
Даже не рассматривая быстроту работы можно ли поверить, что кто то идёт в обход ОС и записывает данные в память напрямую в микросхемы?
...
Рейтинг: 0 / 0
Что такое native?
    #39753228
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
azsxавторОС ничего не перехватывает, код сам вызывает API ОС там где это надо.
Вот теперь всё понятно.
---
Допустим человек знает C и asm. Он может управлять своей программой для nix или windows как в примере ниже?
Человек пишет, что "для задач высокочастотного трейдинга требуется очень высокая производительность; так как более холодная банка памяти работает быстрее, а памяти для его участка кода надо мало он сам решает на какой банке памяти будут храниться его переменные".
ИМХО бред какой-то написан. Программно не выбрать "банку памяти".
azsxДаже не рассматривая быстроту работы можно ли поверить, что кто то идёт в обход ОС и записывает данные в память напрямую в микросхемы?
Ты не поверишь: запись в память идет "в обход ОС", т.е. сразу в память. Контроль есть, но им занимается процессор, при необходимости сигналит ОС о проблемах.
Если интересно - читай про организацию виртуальной памяти , а лучше книги по устройству ОС, там это описано.
...
Рейтинг: 0 / 0
Что такое native?
    #39753237
azsx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Ответы на вопросы я получил.
...
Рейтинг: 0 / 0
Что такое native?
    #39753384
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЕсли интересно - читай про организацию виртуальной памяти
а лучше книги по устройству ОС, там это описано.

Судя по всему ему бы сначала надо книжки по устройству компьютера почитать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что такое native?
    #39753395
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tnative значит скомпилированный код под конкретный проц и под конкретную ОС.

Вот так правильнее будет. От ОСи зависит только формат контейнера для машинного кода и
предоставляемое API. Нынче Windows научилась исполнять код из ELF64 и даже предоставляет
ему POSIX API, но это не делает данный экзешник менее нативным.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что такое native?
    #39753416
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tazsx, native значит скомпилированный код под конкретный проц и под конкретную ОСNative - код, который может (напрямую) исполняться (конкретным) процессором.
Как этот код оказался в памяти и насколько корректные там инструкции - дело десятое.
...
Рейтинг: 0 / 0
Что такое native?
    #39753478
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПрограммно не выбрать "банку памяти".
Программно выбирают адреса, что как раз и даёт нам банку.
...
Рейтинг: 0 / 0
Что такое native?
    #39753481
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
azsxЛистал, но не изучал
Ну молодец. А как тогда понимать?

Короче, что там в elf-формате. Там на самом деле две штуки - одна, это структура данных, а вторая, это собственно код. Вот код, он в нативном формате, что означает - этот код поймёт только определённый процессор. Нативный, вообще, означает что-то вроде национальный, то есть по происхождению из такой-то нации. Ну и код тоже - по происхождению для x86 процов, или для ARM-ов, или ещё для чего.

А что бы понять, где структуры, где код, и каким местом его происхождение на что-то влияет - нужно книжки читать.
...
Рейтинг: 0 / 0
Что такое native?
    #39753484
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555Dima TПрограммно не выбрать "банку памяти".
Программно выбирают адреса, что как раз и даёт нам банку.
Ты тоже почитай про организацию виртуальной памяти
...
Рейтинг: 0 / 0
Что такое native?
    #39753488
azsx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторему бы сначала надо книжки
Я не понимал этого момента из-за книг. В книгах чаще всего разбираются самые простые моменты, типа работа с регистрами, под правильные (идеальные) процессоры и правильную ОС (dos). Также примеры там все сплошь учебные, числодробительные. Поэтому в книгах native -- это целиком машинный код.
А в реальной жизни люди говорят о реальных программах. Они написаны на нескольких языках, работают с памятью и диском как минимум, а по идее ещё и с внешними программами, например, БД. Именно они и пишут, что реальная программа на C -- это работа с api OS чуть менее, чем полностью. Из этого следуют холиварные выводы -- но это не флудилка.
зы
если всё понял не так -- поправьте, пожалуйста.
...
Рейтинг: 0 / 0
Что такое native?
    #39753497
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
azsxавторему бы сначала надо книжки
Я не понимал этого момента из-за книг. В книгах чаще всего разбираются самые простые моменты, типа работа с регистрами, под правильные (идеальные) процессоры и правильную ОС (dos). Также примеры там все сплошь учебные, числодробительные. Поэтому в книгах native -- это целиком машинный код.
А в реальной жизни люди говорят о реальных программах. Они написаны на нескольких языках, работают с памятью и диском как минимум, а по идее ещё и с внешними программами, например, БД. Именно они и пишут, что реальная программа на C -- это работа с api OS чуть менее, чем полностью. Из этого следуют холиварные выводы -- но это не флудилка.
зы
если всё понял не так -- поправьте, пожалуйста.
Все зависит от того что делает твоя программа: если там сплошной ввод-вывод, то в основном вызовы API ОС. Только не понимаю что в этом плохого? ОС для того и нужна чтобы ввод-вывод упростить.
...
Рейтинг: 0 / 0
Что такое native?
    #39753501
azsx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T я не обсуждаю хорошо это или плохо. Я пишу, что я это узнал (сообразил) только в этом топике :)
...
Рейтинг: 0 / 0
Что такое native?
    #39753504
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TТы тоже почитай про организацию виртуальной памяти
Читал, а ты читал про способы доступа к памяти? Похоже нет.
...
Рейтинг: 0 / 0
Что такое native?
    #39753544
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555,
Извини, но ты не совсем прав. Программно, изнутри современных "больших" ОС типа Линукс и Виндоус, выбрать банку памяти нельзя. Даже если ты программно укажешь "я хочу такой-то адрес в памяти", ОС может запросто дать тебе этот адрес, но в какой конкретно железной банке памяти оно будет - решит сама ОС. Даже если ты запросишь больше памяти чем есть физически на компьютере и начнешь обращаться к адресам в противоположных концах запрошенного сегмента. ОС будет пересортировывать страницы памяти так как это будет удобно ей, и может даже получиться так что два обращения подряд к разным адресам логической памяти будут на самом деле к одному и тому-же адресу физической. Просто ОС впихнет работу со свопом между этими обращениями.

Если ты хочешь самостоятельно управлять памятью на уровне железа - тебе придется нырнуть глубже и написать свой собственный менеджер памяти, что по существу требует написание собственной ОС. Можно конечно взять какую-нибудь другую ОС с более примитивным (или более управляемым) менеджером памяти, но соответственно и сложность написания прикладной программы подрастет.

azsx, Не знаю насчет Столярова, которого тебе уже советовали (я его не читал), но лучшей книгой которая ответит на все твои вопросы я назову "Операционные Системы" Таненбаума. Оригинал всегда есть на Амазоне, и переводы на Озоне.
...
Рейтинг: 0 / 0
Что такое native?
    #39753565
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
azsxесли всё понял не так -- поправьте, пожалуйста.

Вообще-то ты практически всё понял не так. Когда "они и пишут, что реальная программа на C
-- это работа с api OS чуть менее, чем полностью", то они (иногда) всё же в курсе, что
"работа с API OS" это всего лишь вызовы подпрограмм, входящих в состав библиотек,
поставляемых с ОС, и представляющих собой машинный код, лежащий по определённому адресу
памяти, а собственно "вызов" - это тоже определённая нативная машинная команда (обычно CALL).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что такое native?
    #39753646
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Что такое native?
    #39753650
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
azsx,

Кромольную вещь скажу...
Если Вас так тянет на низы - копните МК. Можно на сях, можно на азме - разница только в скорости выхлопа.
Есть МК где нет осей, от слова совсем. И на азме библиотек так-же нет. Вы и только Вы пишите, то что будет потом работать. По принципу - не работает = сам дурак. Рекомендую.

Начать можно с Atmel (условно - бывший фаворит). Если тема захватит - то гребите в сторону STMicroelectronics. Правда там уже азм диковинка (не нужен от слова почти совсем). Ось - если сами притащите будет ось (там в основном юзаются RTOSы). Память вся ваша, кристалл весь ваш, все выводы - ваши. А частоты уже наступают на пятки процам.

рекомендую...так сказать
(круглый)
...
Рейтинг: 0 / 0
Что такое native?
    #39754176
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlПрограммно, изнутри современных "больших" ОС типа Линукс и Виндоус, выбрать банку памяти нельзя.
Согласен.
White OwlЕсли ты хочешь самостоятельно управлять памятью на уровне железа - тебе придется нырнуть глубже
И с этим согласен.

А в целом же имеем возможность доступа куда хотим, но с приседаниями. При этом "нырять глубже" на самом деле очень просто - менее 512 байт на первичный загрузчик. И далее - твори что хочешь, выбирай банки, пиши вирусы в ядро винды и т.д.
...
Рейтинг: 0 / 0
Что такое native?
    #39754741
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

Человек пишет, что он полный нулл, а вы ему советуете написать ОС? :crazy:
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Что такое native?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]