Исполнение (исполняемых файлов)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Аватара пользователя
Женя Подсыпальников
Сообщения: 482

Исполнение

Сообщение Женя Подсыпальников »

Привет, пацаны и девчонки :)

Скажите пожалуйста,
является ли исполняемый файл -
простым машинным кодом,

какой бы имел и ЕХЕ для Windows ?

Да ? :)

А ресурсы с константами - там тоже ?

Кто из ядра некоторого Линукса погрузит такой файл
и вручит ему тред ? А треды - в Линуксе - есть тоже ?

Есть ли понятие входная функция кода
или есть только начало кода ?

Был бы очень рад,
еслив кто-то не торопясь смог погутарить про это,
а то у меня, как у всякого ленивого, наверное, страх перед толстыми книгами...

Спасибо :)
Пойдём на рыбалку !
Спасибо сказали:
Аватара пользователя
Alxn1
Сообщения: 402
Статус: Красноглазик со стажем
ОС: Mavericks

Re: Исполнение

Сообщение Alxn1 »

Женя Подсыпальников писал(а):
09.01.2007 11:55
Привет, пацаны и девчонки :)


Ну, и тебе здарова :)

Женя Подсыпальников писал(а):
09.01.2007 11:55
Скажите пожалуйста,
является ли исполняемый файл -
простым машинным кодом,


Ну, в принципе, за исключением всяких скриптов - да.

Женя Подсыпальников писал(а):
09.01.2007 11:55
какой бы имел и ЕХЕ для Windows ?


Там, в общем, кроме кода есть ещё такие интересные вещи, как формат исполняемого файла. В Windows используется PE-формат, в Linux бычно ELF, потому всё же они отличаются.

Женя Подсыпальников писал(а):
09.01.2007 11:55
А ресурсы с константами - там тоже ?


А вот таких ресурсов, как в PE, в ELF-файлах нет. К счастью или сожалению, уж не знаю.

Женя Подсыпальников писал(а):
09.01.2007 11:55
Кто из ядра некоторого Линукса погрузит такой файл
и вручит ему тред ? А треды - в Линуксе - есть тоже ?


Не понял, в чём вопрос. Думаю, на системные вызовы нужно поглядеть внимательно. И что значит "из ядра"? Вы драйвер пишите какой-то?

Женя Подсыпальников писал(а):
09.01.2007 11:55
Есть ли понятие входная функция кода
или есть только начало кода ?


А в PE файле так же просто в заголовке указывается адрес, с которого нужно начать выполнения файла (программы). Входная функция - это особенности языка программирования и его реализации. Если вы имеете в виду С/С++ - то да, есть. main, по стандарту :)

Женя Подсыпальников писал(а):
09.01.2007 11:55
Был бы очень рад,
еслив кто-то не торопясь смог погутарить про это,
а то у меня, как у всякого ленивого, наверное, страх перед толстыми книгами...

Спасибо :)


Пожалуйста. Но книжки бы вы лучше почитали.
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu

Re: Исполнение

Сообщение alv »

(Женя Подсыпальников @ Jan 9 2007, в 11:53) писал(а):а то у меня, как у всякого ленивого, наверное, страх перед толстыми книгами...

А Вы начните с не очень толстых, например:
Керниган и Пайк, Unix: программное окружение
Глядишь, страх и пройдет...
Спасибо сказали:
Аватара пользователя
Женя Подсыпальников
Сообщения: 482

Re: Исполнение

Сообщение Женя Подсыпальников »

...надо читать, гляжу :)

(неее - какой там драйвер, пока не знаю "откуда-чего")

А простенькие чертежи системы -
где-то можно посмотреть ?

Ведь настроение в терминале совсем не то,
коли не знаешь, где ноги стоят... :)

Буду рыскать, конечно,
но если у кого рисуночек есть,
можа, покажете ?
Пойдём на рыбалку !
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: Исполнение

Сообщение v04bvs »

Женя Подсыпальников писал(а):
09.01.2007 11:55
Скажите пожалуйста,
является ли исполняемый файл -
простым машинным кодом,

Нет, исполняемый файл это файл с установленным флагом x. Это может быть например двоичный файл формата ELF (в какой то степени аналог EXE в Windows), или сценарий на Perl, или даже PHP. Для пользователя нет никакой разницы.

какой бы имел и ЕХЕ для Windows ?

В Windows есть не только exe, но и com, bat, cmd, js, ..., что вы конкретно имели в виду?
Наиболее близким аналогом EXE в линуксе является формат ELF. Это и вправду простой машинный код. Естественно со своими специфичными заголовками, и тд.

А ресурсы с константами - там тоже ?

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

Кто из ядра некоторого Линукса погрузит такой файл
и вручит ему тред ?

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

А треды - в Линуксе - есть тоже ?

Конечно есть. Линукс - современная ОС, по многим возможностям опережающая коммерческие UNIX и UNIX-like системы. В нём есть практически всё, до чего додумалась современная инженерная мысль :)

Есть ли понятие входная функция кода
или есть только начало кода ?

Вот этого не понял. У всего есть начало :)

Был бы очень рад,
еслив кто-то не торопясь смог погутарить про это,

Да сколько угодно :)

а то у меня, как у всякого ленивого, наверное, страх перед толстыми книгами...

Угу, ну их, эти книги, практика, практика и ещё раз практика.
Спасибо сказали:
Аватара пользователя
Женя Подсыпальников
Сообщения: 482

Re: Исполнение

Сообщение Женя Подсыпальников »

alv писал(а):
09.01.2007 12:25
Керниган и Пайк, Unix: программное окружение


О, нашёл, спасибо.
Вроде, по отрывкам - нормально, коли ещё с рисунками...

Alxn1 - тожа спасибо, название формата понял :)
Пойдём на рыбалку !
Спасибо сказали:
Аватара пользователя
Женя Подсыпальников
Сообщения: 482

Re: Исполнение

Сообщение Женя Подсыпальников »

v04bvs писал(а):
09.01.2007 13:14
В Linux есть системный вызов exec, который загружает указанный файл вместо текущего контекста и передаёт ему управление. Как это происходит на уровне ядра - я вряд ли нормально объясню, но не думаю, что это действительно важно. Вкратце - загрузчик анализирует первые символы файла, если это скрипт - вызывается программа-обработчик, которой передаётся этот скрипт, если это бинарный файл - он мапится в память процесса, анализируются его заголовки, и управление передаётся в начало.


Значит, принципиально -
ничего страшного программисту в Линуксе не светит :)

А думает ли простой программист об улучшении своего ядра системы,
или функций последнего достаточно, а набор их (системных вызовов ?) -
почти тот жа и в улучшенных версиях ?

Зачем Линукс-программисты так часто заботятся о ядре (судя по чтению в интернете) ?

Пускает ли ядро в себя опосля его стройки или уже нет ?

---
А отлинкованные библиотеки функций к совместному поделу - бывают ?

Спасибо ! :)
Пойдём на рыбалку !
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: Исполнение

Сообщение v04bvs »

Женя Подсыпальников писал(а):
09.01.2007 13:43
v04bvs писал(а):
09.01.2007 13:14
В Linux есть системный вызов exec, который загружает указанный файл вместо текущего контекста и передаёт ему управление. Как это происходит на уровне ядра - я вряд ли нормально объясню, но не думаю, что это действительно важно. Вкратце - загрузчик анализирует первые символы файла, если это скрипт - вызывается программа-обработчик, которой передаётся этот скрипт, если это бинарный файл - он мапится в память процесса, анализируются его заголовки, и управление передаётся в начало.


Значит, принципиально -
ничего страшного программисту в Линуксе не светит :)

Линукс жутко прост для программиста. Не то что венда. Главное - это понять :)

А думает ли простой программист об улучшении своего ядра системы,
или функций последнего достаточно, а набор их (системных вызовов ?) -
почти тот жа и в улучшенных версиях ?

Ядро это вообще такая штука, о которой простому смертному знать не нужно. В том числе и программисту. Если конечно не программировать на ассемблере :)
Как правило, в программах используются функции стандартных библиотек, а вот библиотеки уже общаются с ядром. Но программисту об этом знать совсем не обязательно, он пишет
pid = fork();
и всё. Хотя при выполнении этого кода на самом деле происходит генерация прерывания, управление передаётся ядру, оно создаёт новую запись в таблице процессов, и тд, и тд, но для программиста всё выглядит просто - процесс взял и скопировался :)
Насчёт набора системных вызовов - он очень чётко и жёстко стандартизован и меняться скорее всего не будет никогда. Беспокоиться насчёт этого не стоит.

Зачем Линукс-программисты так часто заботятся о ядре (судя по чтению в интернете) ?

Эмм.. Не понял. Похоже на какой то миф. Есть конечно страшные бородатые хакеры во главе с товарищем Линусом, которые пишут ядро, и прочие чудеса, но вообще то в ядро просто так не лазят.

Пускает ли ядро в себя опосля его стройки или уже нет ?

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

А отлинкованные библиотеки функций к совместному поделу - бывают ?

Сорри, не понял. Библиотек огромное количество, и все используются совместно.
Спасибо сказали:
Аватара пользователя
Женя Подсыпальников
Сообщения: 482

Re: Исполнение

Сообщение Женя Подсыпальников »

Большое спасибо ! :)

v04bvs писал(а):
09.01.2007 14:02
Библиотек огромное количество, и все используются совместно.


Тут я имел в виду аналог двоичной DLL-библиотеки в Windows,
которую могут делить, подгружая, несколько разных процессов в их исполнении.

Т.е. библиотека готового двоичного кода,
а не библиотека для компиляции исходных текстов программы
с фиксированным включением её кода - в свои...

Там ещё - в Венде - говорят:
я линкую статично (включаю код в себя) или
я линкую динамично (лишь скажу, где такие функции, они потом загрузятся)...
Пойдём на рыбалку !
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: Исполнение

Сообщение Zeus »

Люди, вы - герои!
Отвечаете на такие вопросы, половину которых я даже не понял!
:D
Спасибо сказали:
Аватара пользователя
aLexx programmer
Сообщения: 985
Статус: Турук-Макто
ОС: Gentoo -> Ubuntu

Re: Исполнение

Сообщение aLexx programmer »

(Женя Подсыпальников @ Jan 9 2007, в 14:14) писал(а):Тут я имел в виду аналог двоичной DLL-библиотеки в Windows,
которую могут делить, подгружая, несколько разных процессов в их исполнении.


(v04bvs @ Jan 9 2007, в 13:59) писал(а):Библиотек огромное количество, и все используются совместно.
Спасибо сказали:
Аватара пользователя
Женя Подсыпальников
Сообщения: 482

Re: Исполнение

Сообщение Женя Подсыпальников »

aLexx programmer писал(а):
09.01.2007 14:39
...


Зашибись... :) Спасибо !

...и библиотеки можно писать-устанавливать,
не перестраивая ядра ?
Пойдём на рыбалку !
Спасибо сказали:
Аватара пользователя
aLexx programmer
Сообщения: 985
Статус: Турук-Макто
ОС: Gentoo -> Ubuntu

Re: Исполнение

Сообщение aLexx programmer »

(Женя Подсыпальников @ Jan 9 2007, в 14:56) писал(а):и библиотеки можно писать-устанавливать,
не перестраивая ядра ?

Естественно :)
Спасибо сказали:
Аватара пользователя
Женя Подсыпальников
Сообщения: 482

Re: Исполнение

Сообщение Женя Подсыпальников »

Алекс, а в какой "среде разработки" (студии ?)
хорошо зачать проект (С/С++) по-первой ?

У меня на SUSE есть какое-то "QT" - это там ? :)

Находятся ли исходники проекта
компактно в отдельной директории, по умолчанию ?
(есть паника неконтроля мусора в файловой системе Линукса)

Шобы подебажить-посмотреть, как оно всё... :)
Пойдём на рыбалку !
Спасибо сказали:
Аватара пользователя
aLexx programmer
Сообщения: 985
Статус: Турук-Макто
ОС: Gentoo -> Ubuntu

Re: Исполнение

Сообщение aLexx programmer »

(Женя Подсыпальников @ Jan 9 2007, в 15:11) писал(а):Алекс, а в какой "среде разработки" (студии)
хорошо зачать проект по-первой ?

Зависит от характера проекта. Иногда, удобнее обойтись без IDE :)

(Женя Подсыпальников @ Jan 9 2007, в 15:11) писал(а):Находятся ли исходники проекта
компактно в отдельной директории, по умолчанию ?

Да, обычно всё в одной директории или в поддиректориях одной директории.
Спасибо сказали:
Аватара пользователя
Hvzh
Сообщения: 711
Статус: Gone with Linux
ОС: Linux Mint 18.1

Re: Исполнение

Сообщение Hvzh »

Женя Подсыпальников писал(а):
09.01.2007 15:14
У меня на SUSE есть какое-то "QT" - это там ? :)

А у Вас в SuSE нет "какого-то" KDevelop? Лучше спариться и зачать проект именно с ним. Он довольно-таки похож на MSVC, так что у Вас с ним проблем по зачатию быть не должно
HP 255 G4 A6-6310 + Linux Mint 18.1 + Windoze7 under VmWare + OS X Mavericks under VmWare
Спасибо сказали:
Аватара пользователя
Женя Подсыпальников
Сообщения: 482

Re: Исполнение

Сообщение Женя Подсыпальников »

Hvzh писал(а):
09.01.2007 15:25
А у Вас в SuSE нет "какого-то" KDevelop? Лучше спариться и зачать проект именно с ним. Он довольно-таки похож на MSVC, так что у Вас с ним проблем по зачатию быть не должно


Есть KDE,
но как стартануть KDevelop - пока не нашёл
(нашёл лишь текстовый редакто, по типу MS Notepad, но с биколорными строчками)...

Можа, попробывать с терминала: exec kdevelop
или как-то ещё ? :)

Ну да ладно - найду...

Спасибо всем,
уровени спокойствия и интересу - подняты :)
Пойдём на рыбалку !
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Исполнение

Сообщение Liksys »

Альт+Ф2 - kdevelop
Спасибо сказали:
Аватара пользователя
Hvzh
Сообщения: 711
Статус: Gone with Linux
ОС: Linux Mint 18.1

Re: Исполнение

Сообщение Hvzh »

Товарищ Женя, а что у Вас вообще за SuSE стоит? Что за версия? В каком объеме ставили? Может, у Вас для разработки вообще ничего нет?
HP 255 G4 A6-6310 + Linux Mint 18.1 + Windoze7 under VmWare + OS X Mavericks under VmWare
Спасибо сказали:
Аватара пользователя
Женя Подсыпальников
Сообщения: 482

Re: Исполнение

Сообщение Женя Подсыпальников »

Hvzh писал(а):
09.01.2007 15:41
Товарищ Женя, а что у Вас вообще за SuSE стоит? Что за версия? В каком объеме ставили? Может, у Вас для разработки вообще ничего нет?


Выставил openSuSE 10.2 , забесплатно :) ,
при установке - сказал "KDE" и "Средства разработки"...
Оно мне потом RPM-ов ", необходимых к разработке" рассадило.

Еслив по Альт-Ф2 не пойдёт - буду перепроверять :)
Пойдём на рыбалку !
Спасибо сказали:
Аватара пользователя
Hvzh
Сообщения: 711
Статус: Gone with Linux
ОС: Linux Mint 18.1

Re: Исполнение

Сообщение Hvzh »

Женя Подсыпальников писал(а):
09.01.2007 15:49
Еслив по Альт-Ф2 не пойдёт - буду перепроверять :)

А что находится в меню K Menu->Development->Integrated Environment ?
HP 255 G4 A6-6310 + Linux Mint 18.1 + Windoze7 under VmWare + OS X Mavericks under VmWare
Спасибо сказали:
Аватара пользователя
Женя Подсыпальников
Сообщения: 482

Re: Исполнение

Сообщение Женя Подсыпальников »

Находится "QT",
Delphi чем-то напоминает... :)

Ещё дебагер, имени не помню,
на взгляд простенький...
Пойдём на рыбалку !
Спасибо сказали:
Аватара пользователя
sarutobi
Сообщения: 676
Статус: Добрость и скромнота
ОС: Debian 5, FreeBSD 6.2/8.0

Re: Исполнение

Сообщение sarutobi »

Yast-Software managment-Install software-Search-kdevelop-install
ТО что QT скорее всего дизайнер QT-форм.
Fire and water, earth and sky - mistery surrounds us, legends never die!
Спасибо сказали:
Аватара пользователя
Женя Подсыпальников
Сообщения: 482

Re: Исполнение

Сообщение Женя Подсыпальников »

sarutobi писал(а):
09.01.2007 16:39
ТО что QT скорее всего дизайнер QT-форм.


Да, там у меня двое Qt,
одно - файлы *.cpp/*.h даже предлагает зачать,
второе - по типу редактора ресурсов что-то, с великим множеством тул-окон...

sarutobi писал(а):
09.01.2007 16:39
Yast-Software managment-Install software-Search-kdevelop-install


ОК. Вишь, как оно у вас в Линуксе всё лаконично,
яко в армии... :)

Спасибо.
Пойдём на рыбалку !
Спасибо сказали:
Аватара пользователя
georgy_sh
Сообщения: 1172
Статус: thermonuclear...
ОС: GNU/Linux

Re: Исполнение

Сообщение georgy_sh »

Женя Подсыпальников писал(а):
09.01.2007 16:48
ОК. Вишь, как оно у вас в Линуксе всё лаконично,
яко в армии... :)

Ну а Вы-то думали... =)
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Исполнение

Сообщение elide »

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

/me унес эту феерию безумия в "Вопрос чайника".
слава роботам!
Спасибо сказали:
Аватара пользователя
Женя Подсыпальников
Сообщения: 482

Re: Исполнение

Сообщение Женя Подсыпальников »

v04bvs писал(а):
09.01.2007 14:02
Но программисту об этом знать совсем не обязательно, он пишет
pid = fork();
и всё. Хотя при выполнении этого кода на самом деле происходит генерация прерывания, управление передаётся ядру, оно создаёт новую запись в таблице процессов, и тд, и тд, но для программиста всё выглядит просто - процесс взял и скопировался :)


Попробывал вчерась, зашибись,
в "Венде" такого нету... :)

Правильно я понял,
что здесь копируется и процесс,
и актуальный указатель инструкций,

т.е. исполнение в порождённом -
начнётся со следующей за fork() строки ? :)
Пойдём на рыбалку !
Спасибо сказали: