Serge
Советую почитать про VFS в линуксе. Будет похоже. Я конечно не собираюсь слизывать один в один, т.к. там есть такие "фичи" которые либо сложны в реализации, либо ядро не потянет, либо просто не нужны (как на мой взгляд). Ну а в кратце, Linux VFS реализует POSIX стандарт (с небольшими отклонениями), так что здесь будет тоже: дескрипторы файлов(процесс открывает файл, получает его дескриптор, и работает уже с этим дескриптором), вся работа с VFS абстрактная (т.е. каждая ФС сама реализует свои read,write и т.п.), понятие блочное устройство (тоже абстрактное), понятие монтирования и т.д. Если что-то конкретно интересует спрашивай.
Igor
> Но привыкших к Windows пользователей она почему-то сильно напрягает.
По сути, в виндах, тоже корневая файловая система. Корнем выступает Рабочий стол, дальше Мой компьютер в котором лежат диски, панель управления, мои документы и т.п. Вот только в никсах она эффективней используется.
Вот только можно сделать некий гибрид (над которым я и думаю). Что-то вроде (не окончательный вариант):
/ - корневой раздел
/conf - папка с конфигами
/home - домашняя директория (в идеале там будет своя папка для каждого пользователя)
/disks - или /My Computer или /media или что-то вроде. Тут можно монтировать cd-rom'ы флешки отдельные диски и т.п.
/share - можно так сказать общий склад для всех пользователей
/tmp - временная папка
/rd - сюда будет монтироваться рамдиск (долго обьяснять зачем так)
/apps - папка для приложений (внутри будет представлять из себя bin,lib,data и т.д)
Вобщем много чего. Суть в чем, мы получаем гибкую систему, в которой тот же /apps тот же /share тот же /home могут быть на отдельных партициях/дисках, а так же в сети или на внешнем носителе. А значит при крахе одного из разделов, мы можем сохранить остальные. Ярким примером является папка /home в никсах. Если слетает система, а папка home осталась целой, то при переустановке системы все настройки (если умный софт писал настройки в домашнюю директорию) сохранятся. Также все эти каталоги могут лежать и на одном разделе.
В то же время мы имеем, папку на подобии виндового моего компьютера, в котором будут cd-rom'ы, флешки, внешние носители, или отдельные диски, если так желает пользователь. А о расположении домашней директории, темповой и остальных пользователю и не обязательно знать. Это только продвинутый пользователь знает что в c:\documents and settings\login валяются всякие application data, recent и прочая срань.
Тут думать много надо, пробовать. Походу будут выяснятся еще детали. У меня желание есть, возможностей к сожалению меньше.
>На сколько я понимаю, BSD тоже пойдет
Да, у них суть одна. Но есть и отличия, но они не столь важны.
Консоль
: Так... . Му тут сильно ушли от темы "Консоль". (Да простят нас модераторы). Поэтому создай пожалуйста отдельную тему. Лучше ты, чем я.
Меня напрягает наличие отсутствия консоли, нежели наличие онной
>По сути, в виндах, тоже корневая файловая система. Корнем выступает Рабочий стол, дальше
>Мой компьютер в котором лежат диски, панель управления, мои документы и т.п. Вот только в никсах она эффективней используется.
И что правда стало так?? OMG. слава богу,что я Вендой не пользуюсь
>По сути, в виндах, тоже корневая файловая система. Корнем выступает Рабочий стол, дальше
>Мой компьютер в котором лежат диски, панель управления, мои документы и т.п. Вот только в никсах она эффективней используется.
И что правда стало так?? OMG. слава богу,что я Вендой не пользуюсь
Tinki-vinki, Dipsy, Dipsy, Lala, Lala, Po, Po!
Teletubbies, teletubbies. Oh, Hello!
Teletubbies, teletubbies. Oh, Hello!
как программисту, мне тоже консоли (системной) очень не хватает. только мне, как ассемблерщику, больше нравится DOS'овский вариант работы с ней, через прерывание (таким образом вывод/вывод в консоль займет в программе всего 1-2 байта!)
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Ну, извини, в Linux` е работа с консолью ведется через printf() + something в C и через потоки i/o cout и cin в C++
Tinki-vinki, Dipsy, Dipsy, Lala, Lala, Po, Po!
Teletubbies, teletubbies. Oh, Hello!
Teletubbies, teletubbies. Oh, Hello!
shamaz.mazum, ты не прав.
Вот простой пример. Известно что printf в итоге вызывает write(1,str). write это ф-ция из libc, которая в свою очередь вызывает ф-цию ядра либо через int 0x80 или syscall.
В итоге получаем простой код (это не рабочий вариант, я использовал не те регистры и не те номера,важна суть):
mov eax,12 ; допустим это системный номер ф-ции write
mov ebx,1 ; stdout
mov ecx,str ; передаем адресс строки
int 0x80
Вот простой пример. Известно что printf в итоге вызывает write(1,str). write это ф-ция из libc, которая в свою очередь вызывает ф-цию ядра либо через int 0x80 или syscall.
В итоге получаем простой код (это не рабочий вариант, я использовал не те регистры и не те номера,важна суть):
mov eax,12 ; допустим это системный номер ф-ции write
mov ebx,1 ; stdout
mov ecx,str ; передаем адресс строки
int 0x80
Я то про С. (или про плюсы + (два потока)
Там всё легче, так что я прав.
Да и вообще мы про удобство, а не про Linux
Там всё легче, так что я прав.
Да и вообще мы про удобство, а не про Linux
Tinki-vinki, Dipsy, Dipsy, Lala, Lala, Po, Po!
Teletubbies, teletubbies. Oh, Hello!
Teletubbies, teletubbies. Oh, Hello!
Да и не важно 2 байта или 3
Tinki-vinki, Dipsy, Dipsy, Lala, Lala, Po, Po!
Teletubbies, teletubbies. Oh, Hello!
Teletubbies, teletubbies. Oh, Hello!
Who is online
Users browsing this forum: No registered users and 1 guest