watashiwa_daredeska писал(а): ↑31.07.2012 23:16
sash-kan писал(а): ↑31.07.2012 22:01
увы, произвольный бинарник не умеет делать системные вызовы·
Умеет.
sash-kan писал(а): ↑31.07.2012 22:01
для этого в пределах видимости должен присутствовать код libc·
либо в виде разделяемой библиотеки, либо прямо внутри бинарника (static linking):
Спорим, не должен?
вот исходный код на языке си для произвольного бинарника (скопировано из
http://lib.ru/CTOTOR/kernigan.txt):
скомпилируй его, пожалуйста, так, чтобы он напрямую обращался к linux-у и не использовал ни байта кода из какой угодно реализации libc, и я соглашусь с обоими твоими возражениями·
ввиду того, что я, как и многие тут присутствующие, не силён ни в си, ни в структуре elf-ов, очень неплохо было бы как-то продемонстрировать, что кода какой-либо реалиции libc в нём действительно не будет·
QUOTE писал(а):sash-kan писал(а): ↑31.07.2012 22:01
должен присутствовать код libc·
libc делает какую-то особую, уличную магию с бинарником, позволяя ему делать системные вызовы?
я не настолько хорошо знаю все эти потроха, чтобы чётко ответить на твой вопрос·
насколько я представляю себе ситуацию из чтения статьи
wikipedia://system call, передача управления на нужную точку входа в linux-е не переключит процесс в привилегированный режим (и, вероятно, произойдёт «облом»)·
так что в тех процессорных архитектурах, где используются
wikipedia://CPU modes, код libc, как минимум, выполняет это переключение·
QUOTE писал(а):Итак, насколько я понимаю, твой аргумент в пользу GNU/Linux — это то, что /sbin/init слинкован с GNU libc?
откуда взялся этот /sbin/init? а, это ты зачем-то его упомянул, сказав, что данная программа к gnu отношения не имеет, а я продемонстрировал, что в современных дистрибутивах — очень даже имеет (она использует во время работы код gnu libc)·
не знаю, что именно ты вкладываешь в слова «твой аргумент в пользу gnu/linux», поэтому в стопицотый раз повторю:
1. операцинная система — это посредник между программами/библиотеками и железом·
2. в unix-like системах таковым посредником является связка из (как минимум) ядра и какой-нибудь реализации libc·
3. в популярных современных дистрибутивах (в частности, в семействах debian, suse, redhat, mandriva, slackware, gentoo, ubuntu), в качестве libc используется реализация, выполненная в рамках проекта gnu·
4. разработчики из проекта gnu просят (не требуют, а просто просят) называть такую операционную систему, состоящую из (как минимум) linux и glibc, термином «gnu/linux»·
watashiwa_daredeska писал(а): ↑31.07.2012 23:16
sash-kan писал(а): ↑31.07.2012 22:01
факт есть факт: все современные _популярные_ дистрибутивы используют реализацию libc, созданную в рамках проекта gnu·
Давай пока не отклоняться от основного вопроса: «Что есть ОС?» Ведь если дистрибутив — не ОС, то использование или неиспользование чего-то за пределами ОС не может повлиять на её название, правда?
дистрибутив операционной системы — это не операционная система, так же как автомобиль, приводимый в движение двигателем — это не двигатель·