gnu/linux again

Любые разговоры которые хоть как-то связаны с тематикой форума

Модератор: Модераторы разделов

Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: gnu/linux again

Сообщение sash-kan »

alv писал(а):
09.05.2012 11:47
стал стабильно слетать FF
ubuntu?

alv писал(а):
09.05.2012 11:47
Потому что невозможно бороться с марксизмом
ну что же, удачи тебе в борьбе с ветряными мельницами^w^w марксизмом!
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: gnu/linux again

Сообщение sash-kan »

alv писал(а):
08.05.2012 23:00
Я с тобой спорю, чтобы новопришедшие линуксоиды знали, что существует и другая точка зрения на
и как выражается эта точка зрения?
«ты, саша, логично излагаешь, но ты всё равно не прав, потому что твои логические выводы созвучны с тем, что говорит Столмен, а я на него имею зуб»
так получается?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21256
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: gnu/linux again

Сообщение Bizdelnick »

sash-kan писал(а):
09.05.2012 04:08
если «нечто» предоставляет интерфейс, схожий с posix, то про это «нечто» можно сказать, что это unix-like операционная система

Ещё раз. Если из этого нечта мы выкинем элементы описанного в POSIX интерфейса, оно перестанет быть UNIX-like системой, OK. Но из этого не следует, что оно перестаёт быть операционной системой вообще.
Наоборот, то, что обеспечивает POSIX-интерфейс, может являться UNIX-like операционной системой, а может - лишь её частью, если напрямую не взаимодействует с железом.
Это я разжевал тезис о необходимости и достаточности как для детсадовца. Продолжай выкручиваться.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu

Re: gnu/linux again

Сообщение alv »

sash-kan писал(а):
09.05.2012 12:14
ubuntu?

openSUSE
sash-kan писал(а):
09.05.2012 12:14
в борьбе с ветряными мельницами

Саша, это не ветряные мельницы. Это явление того же порядка, что и декларации типа "Весь Линукс написал Red Hat и примкнувшая к ним Fedora".
Разница в одном слове символа веры и в имени пророка.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: gnu/linux again

Сообщение sash-kan »

Bizdelnick писал(а):
09.05.2012 12:40
Продолжай выкручиваться.
спасибо!

QUOTE писал(а):Если из этого нечта мы выкинем элементы описанного в POSIX интерфейса, оно перестанет быть UNIX-like системой, OK. Но из этого не следует, что оно перестаёт быть операционной системой вообще.
не следует, согласен·
какой же интерфейс для прикладных программ останется у нашего «нечта»?

QUOTE писал(а):то, что обеспечивает POSIX-интерфейс, может являться UNIX-like операционной системой, а может - лишь её частью, если напрямую не взаимодействует с железом.
совершенно верно!
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: gnu/linux again

Сообщение sash-kan »

alv писал(а):
09.05.2012 12:46
Это явление того же порядка
я что-то пропустил? что за «явление»?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: gnu/linux again

Сообщение sash-kan »

sash-kan писал(а):
09.05.2012 13:06
какой же интерфейс для прикладных программ останется у нашего «нечта»?
вот скомпилирую я классический hello world:

Код: Выделить всё

/* Hello World program */

#include<stdio.h>

main()
{
    printf("Hello World");


}
не знаю уж, как у меня это получится, пользуясь тем обрубком, который «не обязательно перестаёт быть операционной системой вообще», но, допустим, как-то получилось (gcc каким-то чудесным образом запустился и даже выполнил компиляцию)·
и пытаюсь его запустить (тоже не знаю, как у меня это получится — шелла нет, загрузчика нет, ну да ладно, может, как-нибудь и запустится)·
что я получу в результате? какая сущность предоставит мне интерфейс функции printf, не-описанный в stdio.h (ибо его нет в нашей воображаемой «не обязательно переставшей быть операционной системе вообще»)?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21256
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: gnu/linux again

Сообщение Bizdelnick »

sash-kan писал(а):
09.05.2012 13:06
какой же интерфейс для прикладных программ останется у нашего «нечта»?

Какая разница? WinAPI, Dalvik, да мало ли... POSIX он соответствовать не обязан.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: gnu/linux again

Сообщение sash-kan »

Bizdelnick писал(а):
09.05.2012 13:38
sash-kan писал(а):
09.05.2012 13:06
какой же интерфейс для прикладных программ останется у нашего «нечта»?

Какая разница? WinAPI, Dalvik, да мало ли...
ага! т.е., интерфейс к функции printf всё-таки будет!
ну давай теперь вернёмся с философских высот к нашим баранам^w linux-ам и ты мне внятно и популярно (ты ещё не забыл, что я детсадовец?) расскажешь, какая же часть linux-а моей прикладной программе этот интерфейс предоставит!
я затаил дыхание и весь превратился во внимание!
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21256
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: gnu/linux again

Сообщение Bizdelnick »

sash-kan писал(а):
09.05.2012 13:44
какая же часть linux-а моей прикладной программе этот интерфейс предоставит!

Не часть linux'а, конечно, а любая реализация стандартной библиотеки. Примеры приводились выше. В случае GNU/Linux это glibc.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: gnu/linux again

Сообщение sash-kan »

Bizdelnick писал(а):
09.05.2012 14:02
Не часть linux'а, конечно, а любая реализация стандартной библиотеки. Примеры приводились выше. В случае GNU/Linux это glibc.
э, нееет! так мы каши не сварим!
напоминаю, что мы выкинули:
Bizdelnick писал(а):
09.05.2012 12:40
из этого нечта мы выкинем элементы описанного в POSIX интерфейса

всё, нету никаких реализаций libc в нашей воображаемой «не обязательно переставшей быть операционной системе вообще»
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: gnu/linux again

Сообщение diesel »

sash-kan писал(а):
09.05.2012 13:28
не знаю уж, как у меня это получится, пользуясь тем обрубком, который «не обязательно перестаёт быть операционной системой вообще», но, допустим, как-то получилось (gcc каким-то чудесным образом запустился и даже выполнил компиляцию)·
и пытаюсь его запустить (тоже не знаю, как у меня это получится — шелла нет, загрузчика нет, ну да ладно, может, как-нибудь и запустится)·
что я получу в результате? какая сущность предоставит мне интерфейс функции printf, не-описанный в stdio.h (ибо его нет в нашей воображаемой «не обязательно переставшей быть операционной системе вообще»)?

Hint: операционная система не должна предоставлять тебе stdio.h. Операционная система должна позволить тебе условно говоря "вывести строку на устройство", через (внимание) интерфейс системных вызовов. Операционная система не является и не включает в себя компилятор(ы) языков программирования, и тем более заголовочные файлы языков программирования(в том числе и языка С), командные оболочки, и даже скомпилированные библиотеки языка С. Операционная система управляет железом, и предоставляет внешнему миру абстракции этого железа, посредством системных вызовов: у тебя есть абстракции устройств, файловая система, процессы, пользователи, и возможность общаться с этими абстракциями с помощью системных вызовов.

Вот она операционная система с твоим hello world'ом, вот так она его видит:

Код: Выделить всё

[diesel@localhost ~]$ strace ./a.out
execve("./a.out", ["./a.out"], [/* 81 vars */]) = 0
brk(0)                                  = 0x10d8000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe0a7cf2000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=112748, ...}) = 0
mmap(NULL, 112748, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fe0a7cd6000
close(3)                                = 0
open("/lib64/libc.so.6", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\22\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1837659, ...}) = 0
mmap(NULL, 3717944, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe0a774b000
mprotect(0x7fe0a78cd000, 2097152, PROT_NONE) = 0
mmap(0x7fe0a7acd000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x182000) = 0x7fe0a7acd000
mmap(0x7fe0a7ad2000, 19256, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fe0a7ad2000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe0a7cd5000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe0a7cd4000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe0a7cd3000
arch_prctl(ARCH_SET_FS, 0x7fe0a7cd4700) = 0
mprotect(0x7fe0a7acd000, 16384, PROT_READ) = 0
mprotect(0x7fe0a7cf3000, 4096, PROT_READ) = 0
munmap(0x7fe0a7cd6000, 112748)          = 0
fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 1), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe0a7cf1000
write(1, "Hello World", 11Hello World)             = 11
exit_group(11)                          = ?


"транслировать" С-код в набор системных вызовов, и того что просто надо выполнить, - это задача компилятора, ему в этом помогает стандартная и не очень стандартные библиотеки. Это важная часть всего. Это разработческие интерфейсы. Добавляем шелл и еще немного программ, и получаем "окружение". Задача "окружения" - это прокладка(интерфейс) между пользователем и операционной системой. Но "прокладка", которую POSIX и стандартизирует, операционной системой увы не является.
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu

Re: gnu/linux again

Сообщение alv »

sash-kan писал(а):
09.05.2012 13:18
alv писал(а):
09.05.2012 12:46
Это явление того же порядка
я что-то пропустил? что за «явление»?

Хочешь сказать, что ты пропустил суммарно две трети постов в этой и всех родственных темах?
Попробую поверить и повторю:
Явление, именуемое GNU/Linux.

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

UPD поэтому разговоры о хидерах и системных вызовах имеют к ней не больше отношения, чем наука баллистика - к политическим амбициям некоего Бонапартия, который, как известно, был по образованию артиллеристом.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: gnu/linux again

Сообщение sash-kan »

diesel писал(а):
09.05.2012 14:39
Hint: операционная система не должна предоставлять тебе stdio.h
спасибо, кэп!
операционная система должна предоставить интерфейс к функциям, описанным в stdio.h, в частности, printf
содержимое stdio.h, хоть и упоминается в posix, на самом деле восходит к дремучему стандарту языка c·

diesel писал(а):
09.05.2012 14:39
open("/lib64/libc.so.6", O_RDONLY) = 3
на этом месте мы получаем ошибку — libc нет в нашей иллюзорной «не обязательно переставшей быть операционной системе вообще» linux·
наши дальнейшие действия?

alv писал(а):
09.05.2012 14:47
Хочешь сказать, что ты пропустил
я лишь хотел сказать, что не понял, что именно ты подразумевал под
alv писал(а):
09.05.2012 12:46
явление того же порядка, что и декларации типа "Весь Линукс написал Red Hat и примкнувшая к ним Fedora".
теперь ясно:
alv писал(а):
09.05.2012 14:47
Явление, именуемое GNU/Linux
пчёлы против мёда·
спасибо за разъяснение·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: gnu/linux again

Сообщение diesel »

sash-kan писал(а):
09.05.2012 14:53
diesel писал(а):
09.05.2012 14:39
Hint: операционная система не должна предоставлять тебе stdio.h
спасибо, кэп!
операционная система должна предоставить интерфейс к функциям, описанным в stdio.h, в частности, printf

не должна. даже в POSIX не описано кто/как/где должен реализовывать те или иные функции

sash-kan писал(а):
09.05.2012 14:53
diesel писал(а):
09.05.2012 14:39
open("/lib64/libc.so.6", O_RDONLY) = 3
на этом месте мы получаем ошибку — libc у нас в операционной системе нет·
наши дальнейшие действия?

1. в операционной системе - нет. в окружении - есть. вот это сюрприз
2. нема базара, как говорится:

Код: Выделить всё

[diesel@localhost ~]$ cat helloworld.pas
program HelloWorld;

begin
        writeln('Hello World');
end.


Код: Выделить всё

[diesel@localhost ~]$ strace ./helloworld
execve("./helloworld", ["./helloworld"], [/* 81 vars */]) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
rt_sigaction(SIGFPE, {0x41e1a8, [], SA_RESTORER|SA_SIGINFO, 0x4008c0}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGSEGV, {0x41e1a8, [], SA_RESTORER|SA_SIGINFO, 0x4008c0}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGBUS, {0x41e1a8, [], SA_RESTORER|SA_SIGINFO, 0x4008c0}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGILL, {0x41e1a8, [], SA_RESTORER|SA_SIGINFO, 0x4008c0}, {SIG_DFL, [], 0}, 8) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(2, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(2, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
readlink("/proc/self/exe", "/home/diesel/helloworld", 255) = 23
write(1, "Hello World\n", 12Hello World
)           = 12
exit_group(0)


ОС все еще предоставляет интерфейс.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: gnu/linux again

Сообщение sash-kan »

diesel писал(а):
09.05.2012 14:58
не должна. даже в POSIX не описано кто/как/где должен реализовывать те или иные функции
даже в lsb написано, что это должна выполнять базовая библиотека libc·
поспорим по второму кругу, теперь уже про lsb, описывает ли он интерфейс операционной системы и что значит слово «базовая»?

diesel писал(а):
09.05.2012 14:58
в операционной системе - нет. в окружении - есть
т.е., наша иллюзорная «не обязательно переставшая быть операционной системой вообще» linux перестала быть «посредником между приложениями, утилитами и пользователями, с одной стороны, и аппаратным обеспечением — с другой» © Столлингс
чтд

diesel писал(а):
09.05.2012 14:58
нема базара, как говорится
ты в здравом уме и твёрдой памяти считаешь, что printf в нашей иллюзорной «не обязательно переставшей быть операционной системе вообще» linux придётся заменить на writeln?
боюсь, никто не оценит такого порыва…
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: gnu/linux again

Сообщение sash-kan »

diesel писал(а):
09.05.2012 14:58
execve("./helloworld", ["./helloworld"], [/* 81 vars */]) = 0
эту функцию мы тоже выкинули: http://pubs.opengroup.org/onlinepubs/96999...tions/exec.html

diesel писал(а):
09.05.2012 14:58
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
эту функцию мы тоже выкинули: http://pubs.opengroup.org/onlinepubs/96999.../getrlimit.html

diesel писал(а):
09.05.2012 14:58
ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(2, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(2, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
эту функцию мы тоже выкинули: http://pubs.opengroup.org/onlinepubs/96999...ions/ioctl.html

diesel писал(а):
09.05.2012 14:58
readlink("/proc/self/exe", "/home/diesel/helloworld", 255) = 23
эту функцию мы тоже выкинули: http://pubs.opengroup.org/onlinepubs/96999...s/readlink.html

diesel писал(а):
09.05.2012 14:58
write(1, "Hello World\n", 12Hello World
эту функцию мы тоже выкинули: http://pubs.opengroup.org/onlinepubs/96999...ties/write.html

diesel писал(а):
09.05.2012 14:58
[diesel@localhost ~]$
и даже эту функцию мы выкинули: http://pubs.opengroup.org/onlinepubs/96999...ilities/sh.html

вспомнил детский фильм википедия://Про Красную Шапочку, эпизод о пугании ребёнка отсутствием нянек на необитаемом острове…
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu

Re: gnu/linux again

Сообщение alv »

sash-kan писал(а):
09.05.2012 14:53
спасибо за разъяснение·

И тебе спасибо. Благодаря этой дискуссии я придумал аналогию с Бонапартом - неплохая тема для нового памфлета :)
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: gnu/linux again

Сообщение sash-kan »

diesel писал(а):
09.05.2012 14:58
ОС все еще предоставляет интерфейс
совершенно верно, операционная система в лице какой-то из реализаций libc·
попробуй удалить все реализации libc и засечь время, в течение которого твоя, теперь уже «не обязательно переставшая быть операционной системой вообще», заглохнет·

alv писал(а):
09.05.2012 15:40
неплохая тема для нового памфлета
такую энергию, да в мирных бы целях! (улыбка)
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: gnu/linux again

Сообщение diesel »

sash-kan писал(а):
09.05.2012 15:18
diesel писал(а):
09.05.2012 14:58
не должна. даже в POSIX не описано кто/как/где должен реализовывать те или иные функции
даже в lsb написано, что это должна выполнять базовая библиотека libc·
поспорим по второму кругу, теперь уже про lsb, описывает ли он интерфейс операционной системы и что значит слово «базовая»?

А еще lsb включает такие странные вещи как qt и rpm. вы действительно хотите об этом поговорить?


sash-kan писал(а):
09.05.2012 15:18
diesel писал(а):
09.05.2012 14:58
в операционной системе - нет. в окружении - есть
т.е., наша иллюзорная «не обязательно переставшая быть операционной системой вообще» linux перестала быть «посредником между приложениями, утилитами и пользователями, с одной стороны, и аппаратным обеспечением — с другой» © Столлингс
чтд

единственая странность построения Столлингса, не в процитированном(не знаю откуда) куске, а в той части где он пытается определить понятие ОС, которая занимает не две и даже не три строчки, и даже не три страницы... это то что он включает в ОС средства разработки: компиляторы(неявно), текстовые редакторы(явно). Что общему тону книги, кстати, не соответствует более чем полностью, потому что разбора этой части функционала я там не помню. В остальном:

"Операционная система - это программа, контролирующая работу прикладных программ и системных приложений и исполняющая роль интерфейса между приложениями и аппаратным обеспечением компьютера"(с) Операционные системы, 4-е издание, стр 82, глава 2.1 "Предназначение и функции операционных систем".

Еще, от туда же(2.6 "Традиционные системы UNIX", стр. 128):
"Операционную систему часто называют системным ядром или просто ядром, чтобы подчеркнуть ее изолированность от пользователя и приложений. Именно эта часть системы UNIX будет предоставлять для нас интерес в данной книге. Однако UNIX снабжается различными пользовательскими сервисами, которые рассматривают как часть этой системы. Их можно сгруппировать в оболочку, интерфейс и компоненты компилятора С(компилятор, ассемблер, загрузщик)."

Ну и наконец, в книге неоднократно встречается любимое тобой "ядро Linux". :) Поэтому даже не знаю, мне кажется "тут читаем, а тут рыбу заворачиваем" - это не совсем правильно :)

sash-kan писал(а):
09.05.2012 15:18
diesel писал(а):
09.05.2012 14:58
нема базара, как говорится
ты в здравом уме и твёрдой памяти считаешь, что printf в нашей иллюзорной «не обязательно переставшей быть операционной системе вообще» linux придётся заменить на writeln?
боюсь, никто не оценит такого порыва…

Нет, считаю я ровным счетом одно, операционная система Linux предоставляет системный вызов write(2), который с успехом использует как программка изначально написанная на паскале с ее writeln'ом, так и программка на С, с ее printf'ом, правда printf - функция на самом деле достаточно сложная, и требует не только вывода as is, но и участия libc(преобразование данных и все такое). Тем более что в нашем случае разница всего лишь в статической/динамической сборке. printf - не является интерфейсом ОС, увы :) это - "интерфейс интерфейса".

sash-kan писал(а):
09.05.2012 15:32
diesel писал(а):
09.05.2012 14:58
execve("./helloworld", ["./helloworld"], [/* 81 vars */]) = 0
эту функцию мы тоже выкинули: http://pubs.opengroup.org/onlinepubs/96999...tions/exec.html
...skipped...

выкинули откуда и куда? ты не забыл что strace показывает?

sash-kan писал(а):
09.05.2012 15:42
diesel писал(а):
09.05.2012 14:58
ОС все еще предоставляет интерфейс
совершенно верно, операционная система в лице какой-то из реализаций libc·
попробуй удалить все реализации libc и засечь время, в течение которого твоя, теперь уже «не обязательно переставшая быть операционной системой вообще», заглохнет·

ты реально думаешь что для того чтобы хм, скажем так, для того чтобы все работало, нужна только операционная система? я вот как-то смирился с мыслью что операционная система, как "программа которая" - это ... всего лишь вершина айсберга. А чтобы ничего "не заглохло" надо оччень много чего :)
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: gnu/linux again

Сообщение sash-kan »

diesel писал(а):
09.05.2012 15:58
А еще lsb включает такие странные вещи как qt и rpm. вы действительно хотите об этом поговорить?
конечно·
rpm file format в core
и qt library desktop (не core)
попытка стандартизовать всё по максимуму, и базовую систему, и даже чисто прикладные библиотеки…
да, я хочу об этом поговорить, ибо вы на пару с Димой своими философствованиями уже превратили ядро в операционную систему, причём (только не говорите это Линусу, а то его удар хватит) _не_ unix-like, _не_ posix-совместимую и даже (только не говорите это Землину) _не_ lsb-совместимую·
почему бы о таком извращении и не поговорить благородным донам?

diesel писал(а):
09.05.2012 15:58
Столлингса, не в процитированном(не знаю откуда) куске
выходные данные я указал, правда, увы, без страниц·
спишем разницу на трудности перевода?

diesel писал(а):
09.05.2012 15:58
"Операционную систему часто называют системным ядром или просто ядром, чтобы подчеркнуть ее изолированность от пользователя и приложений. Именно эта часть системы UNIX будет предоставлять для нас интерес в данной книге. Однако UNIX снабжается различными пользовательскими сервисами, которые рассматривают как часть этой системы. Их можно сгруппировать в оболочку, интерфейс и компоненты компилятора С(компилятор, ассемблер, загрузщик)."
«часто назыают», «рассматривают как» — сравни это с чёткой формулировкой предыдущей цитаты·
«загрузщик» — точно трудности перевода·

diesel писал(а):
09.05.2012 15:58
Поэтому даже не знаю, мне кажется "тут читаем, а тут рыбу заворачиваем"
я скопировал чёткое определение, размышления автора о том, что кто-то там чего-то якобы, — копировать постеснялся·

diesel писал(а):
09.05.2012 15:58
операционная система Linux предоставляет системный вызов write(2)
извини, не нашёл сходу интерфейс к функции write в коде linux-а·
имя header-а не подскажешь?

diesel писал(а):
09.05.2012 15:58
выкинули откуда и куда?
из операционной системы gnu/linux в, например, /dev/null

diesel писал(а):
09.05.2012 15:58
ты не забыл что strace показывает?
он много чего показывает·
если б ещё знать, на что ты намекаешь…
может быть, на это: It intercepts and records the system calls which are called by a process and the signals which are received by a process.
где подвох?

diesel писал(а):
09.05.2012 15:58
ты реально думаешь что для того чтобы хм, скажем так, для того чтобы все работало, нужна только операционная система?
я реально думаю, что для запуска скомпилированной программы helloworld (текст приведён мною выше) наличия операционной системы gnu/linux _более_ чем достаточно·
если же на минуту допустить, что linux — это операционная система, а не ядро операционной системы, то в такой «операционной системе», действительно, не хватит _очень_ многого·
даже для такой примитивной операции, как запуск скомпилированного бинарника helloworld·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: gnu/linux again

Сообщение sash-kan »

diesel писал(а):
09.05.2012 15:58
Тем более что в нашем случае разница всего лишь в статической/динамической сборке
о, слона-то я и не заметил·
посыпаю голову пеплом!
мало того, что в нашей иллюзорной «не обязательно переставшей быть операционной системе вообще» linux придётся отказаться от printf (и ещё огромного количества стандартных c-шных функций), так ещё и компилировать будем статически, получая, например, из helloworld-а с одной функцией бинарник весом пятьсот килобайт!

diesel
давай уже закончим этот цирк с «не обязательно переставшей быть операционной системой вообще» linux, а?
становится уже совсем не смешно…

p.s. если ты считаешь, что всё-таки смешно, объясни мне, просто ради смеха, как ты собираешься запускать этот пятисоткилобайтный helloworld, не имея даже shell-а (по условию задачи, поставленной Димой, shell мы тоже выкинули в /dev/null)
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: gnu/linux again

Сообщение diesel »

sash-kan,
с твоего позволения пропущу бОльшую часть твоих ответов на мои ответы. Просто краткое резюме, потому как повторять одно и тоже немного надоело.

Так исторически сложилось, что мое представление о том что такое "операционная система", и с чем их едят, в основном сложилось после прочтения монументального труда Танненбаума. Прочитал не от корки до корки, но практически весь. Представление это достаточно простое и понятное. Операционная система - это программа, у которой, с одной стороны - железяка, с другой - пользователь. Программа эта, должна заставить работать железяку, с другой стороны дать пользователю абстракции этой железяки: файловую систему, процессы, и прочая и прочая. При этом, под пользователем здесь понимается нифига не человек, а программы, много программ, которые общаются с этой самой операционной системой с помощью системных вызовов.

Операционная система as is для пользователя-человека достаточно бесполезна, "прямая связь" с богом тут возможна, но чаще всего слишком трудна в реализации. Поэтому, обычно, то что мы видим на наших любимых десктопо-серверных компьютерах - это операционная система, плюс очень-много-чего-еще. Например, в случае с Linux, по-минимуму желательно иметь ядро(операционную систему) и shell. Так чтобы не совсем по минимуму, но более-менее работоспособно: ядро, shell, системные библиотеки, во главе с libc, компилятор(ы), core utils. Поскольку это окружение имеет достаточно большую историю, гораздо более большую чем история собственно Linux, за это время так или иначе сложилось достаточно четко представление о том как это окружение должно выглядеть. А поскольку и Linux'у уже лет 20, и дистрибутивам лет 15, то сложилось представление и о том как это окружение в дистрибутивах Linux'а обычно выглядит.

В итоге получаем, что есть операционная система, которая может работать сама по себе, но особой пользы приносить при этом не будет, и есть сформировавшееся окружение, которое как раз где-то ближе к "принесению" пользы. При этом есть еще стандарт POSIX, который регламентирует реакции этого дружного симбиоза. И есть терминологическая путаница.

Терминологическая путаница лежит скорее не в технической области, там все понятно - там системные вызовы, а в плоскости маркетинговой(или в плоскости бытовой, это как нравится). Суть в том что 90% рынка настольных систем занимает одна операционная система - MS Windows, одного производителя, и там не настолько важно что операционной системой называть. Можно ломать копья по поводу того является ли notepad частью операционной системы MS Windows или не является, все равно Microsoft не обидится. Поскольку так или иначе "all rights reserved". Поэтому, вполне допустимы чисто маркетинговые построения, типа того что в новой операционной системе от Apple теперича док в 9999 раз красивее чем раньше. А раз док может быть частью операционной системы, и никого из потребителей это в шок не приводит, словосочетание то уже раскручено, то почему бы не воспользоваться этим, и не назвать POSIX-совместимый софт от GNU операционной системой? - Это гораздо легче воспринимается потребителями, в том числе и технически продвинутыми, но не особо вдумывающимися в смысл слов(клауд компьютинг, софтвер эз а сервис, веб 2.0 тому явные примеры). Вот и получаем мы "GNU operating system", хорошая, запоминающаяся, даже не очень далекая от истины, маркетоидно правильная фраза. Можно продавать.

И еще одно. "GNU operating system" - такая себе вариация на тему "POSIX compatibility layer", допустим она есть, и таки да, операционная система. Как это работает? С одной стороны у нас "ядро", у которого по одну сторону железо, по другую системные вызовы(забъем на то что оно ОС и является, допустим нет), по другую сторону, POSIX - совместимые приложения, которые: а) можно собрать, б) можно запустить, с подгрузкой соответствующих билиотек входящих в состав этой самой "операционной системы". Знаешь что способно работать точно по такой же схеме? - Java Virtual Machine. Какие бы общие принципы для определения "GNU operating system" ты не использовал, jvm будет им соответствовать, с соответствующей спецификой, конечно, но было бы безумно предполагать что все операционные системы должны быть одинаковы. Так что, у нас еще один кандидат в операционные системы, теперь уже от Oracle?
Спасибо сказали:
Аватара пользователя
Crazy
Сообщения: 862
Статус: Адепт Дзен.
ОС: Mint, Win7.

Re: gnu/linux again

Сообщение Crazy »

sash-kan писал(а):
08.05.2012 17:21
вероятно, это то, что и описано в стандарте posix, как интерфейс, предоставляемый операционной системой?

Стандарты разные бывают, так что указание на posix неуместно.

Desipere in loco
Спасибо сказали:
Аватара пользователя
deadhead
Сообщения: 1913
Статус: zzz..z

Re: gnu/linux again

Сообщение deadhead »

sash-kan писал(а):
09.05.2012 17:38
p.s. если ты считаешь, что всё-таки смешно, объясни мне, просто ради смеха, как ты собираешься запускать этот пятисоткилобайтный helloworld, не имея даже shell-а (по условию задачи, поставленной Димой, shell мы тоже выкинули в /dev/null)

хоть и не мне адресовалось, но ради смеха

Код: Выделить всё

init=/home/troll/helloworld
не?

btw, мне одна такая программа известна... busybox назывется... но это уже не смешно ;)
[x] close
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: gnu/linux again

Сообщение sash-kan »

diesel
отличное изложение, спасибо!

ответь, пожалуйста, на четыре очень простых контрольных вопроса:

1. ядро операционной системы и операционная система — это разные сущности? пожалуйста, ответь «да» или «нет»·

2. «операционная система linux» является unix-подобной (unix-like)? пожалуйста, ответь «да» или «нет»·

3. «операционная система linux» является в основном posix-совместимой (mostly posix-compliant)? пожалуйста, ответь «да» или «нет»·

4. «операционная система linux» является совместимой с секцией core стандарта linux standard base? пожалуйста, ответь «да» или «нет»·

заранее признателен за твои ответы·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: gnu/linux again

Сообщение sash-kan »

Crazy писал(а):
09.05.2012 19:49
sash-kan писал(а):
08.05.2012 17:21
вероятно, это то, что и описано в стандарте posix, как интерфейс, предоставляемый операционной системой?

Стандарты разные бывают, так что указание на posix неуместно.
какому же стандарту, по-вашему, может соответствовать «операционная система linux»?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: gnu/linux again

Сообщение sash-kan »

deadhead писал(а):
09.05.2012 20:05
init=/home/troll/helloworld
да, остроумно·
видимо, только таким методом и можно один раз воспользоваться «не обязательно переставшей быть операционной системе вообще» linux?

deadhead писал(а):
09.05.2012 20:05
btw, мне одна такая программа известна... busybox назывется... но это уже не смешно
если она скомпилирована с интерфейсом shell-а, то не катит — по условию задачи всё, что реализует описанные в posix интерфейсы, следует убрать·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: gnu/linux again

Сообщение diesel »

С пояснениями если позволишь:
sash-kan писал(а):
09.05.2012 21:07
1. ядро операционной системы и операционная система — это разные сущности? пожалуйста, ответь «да» или «нет»·

"нет", то есть для монолитной системы а-ля linux - скорее "да", для микроядерных - "нет". Поэтому в общем ответе "нет".

sash-kan писал(а):
09.05.2012 21:07
2. «операционная система linux» является unix-подобной (unix-like)? пожалуйста, ответь «да» или «нет»·

3. «операционная система linux» является в основном posix-совместимой (mostly posix-compliant)? пожалуйста, ответь «да» или «нет»·

4. «операционная система linux» является совместимой с секцией core стандарта linux standard base? пожалуйста, ответь «да» или «нет»·

Скорее "да" на все три вопроса, хотя вопросы не совсем корректны. Технически unix-like, POSIX(облом смотреть какая там часть про API), и lsb(core) определяют функции стандартной библиотеки С, но не опредляют как именно эти функции олжны быть реализованы. Часть функций этого API стандартной библиотеки - это системные вызовы ядра, с 100%-й точностью. Поэтому скорее "да".
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: gnu/linux again

Сообщение sash-kan »

diesel писал(а):
09.05.2012 19:16
Так исторически сложилось, что мое представление о том что такое "операционная система", и с чем их едят, в основном сложилось после прочтения монументального труда Танненбаума.
к счастью, моё представление об операционной системе сложилось задолго до появления на свет этой книги (и, да, я её полностю прочёл лет десять назад)·
представление было простым до безобразия: операционная система — это программа, помогающая оператору управлять эвм, предоставляющая ему более удобный, чем ввод инструкций переключателями, интерфейс·
с тех пор утекло много воды, но как ни странно, данное представление до сих пор актуально·
разве что теперь оператор потеснился и рядом с ним интерфейс операционной системы делят и прикладные программы·

из книги Таненбаума можно вычитать разные варианты определения операционной системы·
выбирайте на свой вкус (выделены два противоречия и один абсурд):
с. 19 операционная система — наиболее фундаментальная часть программного обеспечения, работающая в режиме ядра· … вся остальная часть программного обеспечения работает в режиме пользователя·
с. 20 все программы, работающие в режиме ядра, безусловно, являются частью операционной системы, но некоторые программы, работающие вне этого режима, возможно, тоже являются её частью, или, по крайней мере, имеют с ней тесную связь·
с. 20 важное отличие операционной системы от обычного (работающего в режиме пльзователя) программного обеспечения состоит в следующем: … пользователь не может написать свой собственный обработчик прерываний системных часов, являющийся частью операционной системы и защищённый на аппаратном уровне от любых попыток внесения изменений со стороны пользователя·

это я к чему? даже у одного мэтра в одной книге на двух соседних страницах содержатся фактически взаимоисключающие трактовки понятия операционной системы, по крайней мере той её части, которая «обращена» к пользователю и прикладным программам·
так всё-таки существует _чёткая_ граница между операционной системой и «всем остальным» или этой границы нет и каждый волен выбирать (цитаты из классиков) по своему вкусу?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали: