LINUX.ORG.RU

Что такое UNIX на самом деле?


0

0

Компьютерные профессионалы всегда достаточно вольно определяли термин UNIX начиная с оригинальных систем Berkeley и наследных вариантов AT&T, поэтому нет ничего удивительного в том, что многие UNIX стандарты базируются на версиях соответвующих ОС. Разработчик из IBM разъясняет эту ситуацию, а также говорит о том, что слухи о смерти UNIX явно преувеличены. (Особенно мне понравилась фраза: "Прийдут новые интерфейсы для dekstop'a и всё соответвующее ПО опять придётся переписывать, но горы рассыпятся прежде чем функции read() and write() перестанут работать").

>>> Подробности

★★★★★

Проверено: Shaman007 ()

It's not UNIX, but it's Unix

ээ..

> Компьютерные профессионалы всегда достаточно вольно определяли термин UNIX начиная с оригинальных систем Berkeley и наследных вариантов AT&T

ты хотел сказать оригинальных систем AT&T и наследных берклей? at&t первично.

niikita
()
Ответ на: комментарий от niikita

>ты хотел сказать оригинальных систем AT&T и наследных берклей? at&t первично.


Первично - Bell labs.

Но от него вообще ничего не осталось.

Lockywolf ★★★
()

>Что такое UNIX на самом деле?
Все время думал что, это операционная система :)
Хотя не простая а со своим unix-way так сказать. Который и объединяет огромное семейство unix-like систем.

Maclaud
()

>...термин UNIX начиная с оригинальных систем Berkeley и наследных вариантов AT&T...

как так можно?!! позор!!! вызывающе не верная информация!!! ;)

1969 - The Beginning - The history of UNIX starts back in 1969, when Ken Thompson, Dennis Ritchie and others started working on the "little-used PDP-7 in a corner" at Bell Labs and what was to become UNIX.

1975 - Sixth Edition - UNIX leaves home. Also widely known as Version 6, this is the first to be widely available out side of Bell Labs. The first BSD version (1.x) was derived from V6.

1982 - System III - AT&T's UNIX System Group (USG) release System III, the first public release outside Bell Laboratories.

http://www.levenez.com/unix/

http://www.unix.org/what_is_unix/history_timeline.html

AcidumIrae ★★★★★
()
Ответ на: комментарий от AcidumIrae

ЗЫ: требую привселюдного покаяния и извинений в адрес AT&T от birdie и Shaman007 :)))))

AcidumIrae ★★★★★
()
Ответ на: комментарий от alman

> И процессы создаются путём деления, как амёбы.

Другой признак Юникса - процессы без контрольного терминала превращаются в демонов.

Третий признак Юникса, процесс номер 1 называется init и является предком всех процессов. Наличие понятия runlevel.

alman ★★★
()

Кстати, а может кто объяснит, почему в /dev/ нет записей для сетевых карт? Во всяком случае я не нашёл ни линукса ни у фри.

alman ★★★
()
Ответ на: комментарий от niikita

> Bell Telephone Laboratories, подразделение американского гиганта AT&T

Ага. А потом пришёл антимонопольный комитет и "порвал" AT&T на более мелкие компании.

alman ★★★
()
Ответ на: комментарий от alman

>>Но от него вообще ничего не осталось.

>курим историю и не говорим глупостей ;)

Не от Bell Labs ничего не осталось, а от того юникса ;)

Lockywolf ★★★
()
Ответ на: комментарий от alman

> Кстати, а может кто объяснит, почему в /dev/ нет записей для сетевых карт?

NIC != block/char device. NIC оперирует ethernet пакетами, а не /dev/random

birdie ★★★★★
() автор топика
Ответ на: комментарий от alman

>Другой признак Юникса - процессы без контрольного терминала превращаются в демонов. Третий признак Юникса, процесс номер 1 называется init и является предком всех процессов. Наличие понятия runlevel.

три закона робототехники

swar0g ★★★★
()
Ответ на: комментарий от alman

>Кстати, а может кто объяснит, почему в /dev/ нет записей для сетевых карт? Во всяком случае я не нашёл ни линукса ни у фри.

Хм... разве у фри нет?.. По-моему /dev/lo есть (или /dev/net/lo). Хотя я могу быть не прав - завтра в колледже посмотрю.

PashaKustov ★★
()
Ответ на: комментарий от sergey_feo

$ echo aaa > /dev/tcp/127.0.0.1/8000
bash: connect: Connection refused
bash: /dev/tcp/127.0.0.1/8000: Connection refused
$ uname -a
Linux -------- 2.6.15-1.1831_FC4smp #1 SMP Tue Feb 7 13:48:31 EST 2006 i686 i686 i386 GNU/Linux
$

# tethereal -i any port 8000
tethereal: Promiscuous mode not supported on the "any" device.
Capturing on Pseudo-device that captures on all interfaces
1   0.000000    127.0.0.1 -> 127.0.0.1    TCP 40557 > 8000 [SYN] Seq=0 Ack=0 Win=32767 Len=0 MSS=16396 TSV=8359344 TSER=0 WS=2
2   0.000002    127.0.0.1 -> 127.0.0.1    TCP 8000 > 40557 [RST, ACK] Seq=0 Ack=0 Win=0 Len=0


Но это, конечно-же, шутка. (man bash)

del
()
Ответ на: комментарий от seiken

А ты прикинь ReadFile уберут? Это ж блин пол софта мирового перписывать придется!

anonymous
()

UNIX - зарегистрированная торговая марка (TM). Существуют стандарты, которым она удовлетворяет. Админам UNIX (TM) платят гораздо больше (например - чем сертифицированным специалистам Микрософт) ибо они - настоящие профессионалы.
Unix - философия, подход к программированию, объединяющая сообщество Unix-like систем. А GNU/Linux со всякими *BSD - так себе, чем-то напоминает свалку отходов программирования. :-)

anonymous
()
Ответ на: комментарий от anonymous

>Unix - философия, подход к программированию, объединяющая сообщество Unix-like систем. А GNU/Linux со всякими *BSD - так себе, чем-то напоминает свалку отходов программирования. :-)

О да. По-вашему - лучше лежать на кладбище, чем жить на свалке?

geek ★★★
()
Ответ на: комментарий от anonymousI

>Не смешите мои тапки. Эта шняга там только для галочки стоит.
Какая шняга? Это всякие _read, _creat и т.п. там для галочки стоят, а *File - самый что ни на есть Win32 API. Или как по-вашему виндовые программы работают с файлами?

seiken ★★★★★
()
Ответ на: комментарий от birdie

> NIC != block/char device. NIC оперирует ethernet пакетами, а не /dev/random

Это понятно, но отчего бы поконфигурить через ioctl? Чтоб уж всё было по единому образу и подобию.

alman ★★★
()
Ответ на: комментарий от anonymous

по тому-что плана мало курили %)

anonymous
()
Ответ на: комментарий от seiken

> Короче, всё, что есть в UNIX, есть и в винде.

Многое действительно есть. Но пользоваться этим всем хозяйством надо по-другому. В этом-то и есть главная проблема: нельзя просто взять произвольную программу и скомпилировать на винде (хотя бы, не то что уж сразу запустить). POSIX как раз и придуман для устранения этой проблемы.

const86 ★★★★★
()

Цитатка: Linux is, in practice, a UNIX standard. Only it's not a standard, and the documentation sometimes lags implementation.

Смеялся. Сквозь слезы.

ivlad ★★★★★
()

В Санках есть записи в /dev для каждого сетевого интерфеса.

--------------

Винда- это в первую очередь ядро. Над ядром существуют надстройки (подсистемы), и уже с подсистемами взаимодействует прикладное ПО. Одна из надстроек- Win32 API, другая- Win16 API, третья- NTVDM (ака DOS emulation layer). Если кто не знает, существует и полноценная POSIX подсистема- Windows Services for Unix. Что правда для чего-то серьёзного она малопригодна.

anonymous
()
Ответ на: комментарий от alman

> почему в /dev/ нет записей для сетевых карт?


> uname -sr
FreeBSD 6.0-RELEASE
> ls -l /dev/net*
lrwxr-xr-x  1 root  wheel         8  1 янв  1970 /dev/net1 -> net/fwe0
lrwxr-xr-x  1 root  wheel         7  1 янв  1970 /dev/net2 -> net/xl0
lrwxr-xr-x  1 root  wheel         9  1 янв  1970 /dev/net3 -> net/plip0
lrwxr-xr-x  1 root  wheel         7  1 янв  1970 /dev/net4 -> net/lo0
crw-------  1 root  wheel    0,   3 13 янв 01:42 /dev/network

/dev/net:
total 0
crw-------  1 root  wheel    0,  35 13 янв 01:42 fwe0
crw-------  1 root  wheel    0,  75 13 янв 01:42 lo0
crw-------  1 root  wheel    0,  47 13 янв 01:42 plip0
crw-------  1 root  wheel    0,  37 13 янв 01:42 xl0

baka-kun ★★★★★
()
Ответ на: комментарий от birdie

2birdie

> Кстати, а может кто объяснит, почему в /dev/ нет записей для сетевых карт? NIC != block/char device. NIC оперирует ethernet пакетами, а не /dev/random

И что?!

$ ls /dev | grep iprb0 lrwxrwxrwx 1 root root 50 ðÔÎ áÐÒ 15 15:17:25 2005 iprb0 -> ../devices/pci@0,0/pci10de,6c@8/pci8086,40@6:iprb0

$ ifconfig iprb0 iprb0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 inet 193.108.163.58 netmask fffffe00 broadcast 193.108.163.255

Ximandr
()
Ответ на: комментарий от alman

>Ой-ли? А fork() тоже есть?

В Win32 нет. В NT Native API - есть.

anonymous
()
Ответ на: комментарий от alman

Кстати, а зачем fork нужен? Т.е. какой смысл в создании копии данного процесса? Это имеет какой-то смысл для многопроцессорных систем, когда через fork процессы по процессорам раскидываются и одновременно распределяются строки матриц для обсчёта, но в обычной жизни? Почему, чтобы запустить внешний процесс, надо сначала скопировать текущий, а только потом в него скопировать код? Ладно, можен иногда и надо, но ведь просто создать новый процесс нужно гораздо чаще! Это как если бы не было функции создания файла - только копирование текущего и удаление данных из него.

Eugene_Korobko
()
Ответ на: комментарий от Eugene_Korobko

>Кстати, а зачем fork нужен? Т.е. какой смысл в создании копии данного процесса?

fork() в никсах работает гораздо быстрее чем CreateProcess в офтопике

>Почему, чтобы запустить внешний процесс, надо сначала скопировать текущий, а только потом в него скопировать код?

физически никакого копирования не происходит. Курите документацию =)

geek ★★★
()
Ответ на: комментарий от Eugene_Korobko

> Кстати, а зачем fork нужен? Т.е. какой смысл в создании копии данного процесса?

Ну, если бы exec запускал отдельную задачу, а не "затирал" родительскую, то можно, наверное, и без fork.

Кстати, иногда fork() используется при органищации серверов - при каждом новом коннекте сервер форкается и передача/обработка данных происходят в форкнутом процессе.

alman ★★★
()
Ответ на: комментарий от Eugene_Korobko

Можно разделить логику программы на 2 процесса, ограничившись одним бинарником.

seiken ★★★★★
()
Ответ на: комментарий от geek

> физически никакого копирования не происходит. Курите документацию =)

Во время fork() может быть и не происходит. Но стек и данные копируются при записи в соответствующие страницы.

alman ★★★
()
Ответ на: комментарий от alman

>Но стек и данные копируются при записи в соответствующие страницы.

там вроде Copy-On-Write используется

geek ★★★
()
Ответ на: комментарий от alman

>Кстати, иногда fork() используется при органищации серверов - при каждом новом коннекте сервер форкается и передача/обработка данных происходят в форкнутом процессе.

Ну, для этого потоки обычно используются.

>Ну, если бы exec запускал отдельную задачу, а не "затирал" родительскую, то можно, наверное, и без fork.

Если бы помимо exec был ещё и CreateProcess, то форк бы не нужен был. Нет, я спорю, иногда форк удобен (особенно если нет потоков), но вот почему нет нормального CreateProcess?

Eugene_Korobko
()
Ответ на: комментарий от Eugene_Korobko

>но вот почему нет нормального CreateProcess?

что такое "нормальный CreateProcess" ? Вы хоть знаете, что внутри него тот же самый fork()? =)

geek ★★★
()
Ответ на: комментарий от Eugene_Korobko

> Кстати, а зачем fork нужен?..

fork нужен для создания нового процесса, exec нужен для запуска программы. Если нужно запустить программу в новом процессе, то есть posix_spawn. Все три действия часто бывают нужны. Так зачем себя ограничивать одним только последним?

const86 ★★★★★
()
Ответ на: комментарий от geek

Вы, наверное, участвовали в разработке windows или хотя бы видели исходники, раз так уверенно говорите. Потому что, например, при создании процесса ему можно задать Desktop/Station, на котором запускаться, а вот для уже запущенный процесс переместить на другую station нельзя. Поэтому будьте добры ответить, в какой станции создаётся клон процесса при вызове fork() внутри CreateProcess? Я уже молчу про задания прав для нового процесса.

Eugene_Korobko
()
Ответ на: комментарий от Eugene_Korobko

>Потому что, например, при создании процесса ему можно задать Desktop/Station, на котором запускаться, а вот для уже запущенный процесс переместить на другую station нельзя. Поэтому будьте добры ответить, в какой станции создаётся клон процесса при вызове fork() внутри CreateProcess?

CreateProcess - это часть Win32 API. А ниже есть NT API. Проверка прав доступа и прочее проиcходит на уровне Win32 API. А действительным созданием нового процесса занимается ведро. А Desktop/Station - это свойства процесса. И невозможность сменить станцию - это ограничение наложенное негрософтом, а не какая-то фундаментальная особенность CreateProcess

geek ★★★
()
Ответ на: комментарий от geek

> там вроде Copy-On-Write используется

Дык оно есть. Правда штука нетривиальная. Т.е. после форка страницы стека и данных помечаются как Read Only. При попытке записи в такую страницу родительским или дочерним процессом происходит исключение и его обработчик копирует страниу и помечает её как Read/Write.

А вот что будет если несколько форков подряд и некоторы страницы так и остались зашаренными между несколькими процессами? Это-ж ещё надо отслеживать всё. Ужас.

alman ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.