Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет p_govorun ([info]p_govorun)
@ 2008-01-12 22:20:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Беспроволочное
Есть такая штука -- универсальный выключатель для телевизоров. Это дистанционный пульт, имеющий всего одну кнопку: "Выкл", зато действующий на все телевизоры. Недавно шутники применили его прибор на компьютерной выставке: телевизоры на стендах, один за другим, погасли.

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

А может быть, эта история всё-таки их чему-нибудь научит?

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


(Читать комментарии) - (Добавить комментарий)

Re: За роскошь надо платить
[info]p_govorun
2008-01-13 00:39 (ссылка)
Я считаю, что вариант винды -- наихудший из возможных: флешка монтируется автоматически, после чего требует отмонтирования вручную. Но современные дружественные пользователю линуксы успешно освоили эту систему :-(

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: За роскошь надо платить
[info]orie.livejournal.com
2008-01-13 00:48 (ссылка)
ну, а что плохого в автоматическом монтировании? вот запускать оттуда что-либо - это безобразие.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: За роскошь надо платить
[info]p_govorun
2008-01-13 00:58 (ссылка)
То, что я не имею возможности выдернуть только что вставленую флешку, не роясь в интерфейсе системы. Если, конечно, я вставил её, и начал с ней работать -- тогда проблем нет. А если я её вставил, чтоб поработать когда-нибудь потом (на столе потеряется)? А если я её вставил не в ту машину (а туда и войти нельзя, и мышка там сломана)? А если я лезу её отмонтировать, а там список из десятка устройств с непонятными названиями.

Про автозапуск я вобще молчу. Зато могу рассказать о весёлом факте, который описал Cooler. Бывают внутренние устройства, видимые как USB-storage. Если такое по ошибке отмонтировать, то вернуть его можно только перезагрузкой.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: За роскошь надо платить
[info]orie.livejournal.com
2008-01-13 01:03 (ссылка)
ну, флешку, скорей всего можно выдернуть, и ничего ей не будет. хуже с USB-винчестерами.

зато вот копирование файлов на флешку (под линуксом) совершенно ничего не копирует до umount'а. в отличие от винды.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: За роскошь надо платить
[info]p_govorun
2008-01-13 01:13 (ссылка)
Кажется, если копируемое не влазит в свободную память, оно всё-таки копируется. Но, конечно, лучше бы оно помаленьку туда скидывалось. (Не сразу, чтоб флешку зазря не портить.)

А флешку можно выдернуть, только если винда туда ничего не запишет. Официального подтверждения этому я нигде не видел, и даже если увижу -- поостерегусь верить. (Я просто помню, как Win95 первое, что делала, увидев подключённый к ней второй диск -- портила там MBR.)

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: За роскошь надо платить
[info]orie.livejournal.com
2008-01-13 01:19 (ссылка)
под виндой мы регулярно выдёргиваем, и ничего, все живы. винда, зараза, лочит её частенько по непонятной причине, а перезагружаться лень.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: За роскошь надо платить
[info]p_govorun
2008-01-13 01:23 (ссылка)
Значит, винда дожидается флешки, на которой будет что-нибудь очень ценное :-)

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: За роскошь надо платить
[info]orie.livejournal.com
2008-01-13 01:24 (ссылка)
не исключено. для того и лочит ;))))))

(Ответить) (Уровень выше)

Re: За роскошь надо платить
[info]angry-elf.livejournal.com
2008-01-13 01:33 (ссылка)
> зато вот копирование файлов на флешку (под линуксом) совершенно ничего не копирует до umount'а. в отличие от винды.

Копируется. Если заливать большой объем (например, фильм), то он начнет выдавливаться на флешку практически сразу. Если мелкий, то и он в буфере не долго полежит - запишется на диск со временем (через пару минут точно будет).

Кроме того, есть команда sync.

(Ответить) (Уровень выше)

Re: За роскошь надо платить
[info]k001.livejournal.com
2008-01-14 12:01 (ссылка)
> зато вот копирование файлов на флешку (под линуксом) совершенно ничего не копирует до umount'а.
mount -o sync
или аналогичный флаг в /etc/fstab

(Ответить) (Уровень выше)

Re: За роскошь надо платить
[info]angry-elf.livejournal.com
2008-01-13 01:37 (ссылка)
Вы просто никогда глючное железо не видели :)

Вообще плохо любое "автоматическое", если оно не отключаемое.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: За роскошь надо платить
[info]p_govorun
2008-01-13 01:38 (ссылка)
+1

(Ответить) (Уровень выше)


[info]lodin.livejournal.com
2008-01-13 01:00 (ссылка)
Почему? Все уже даже привыкли, что ее надо размонтировать...

Хотя -- будь на то моя воля -- я бы делал вообще так:

при вставке монтируем ro
при попытке записи делаем remount (а лучше даже вовсе неавтоматически)
при отсутствии активности n минут делаем sync _для данного устройства_

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]p_govorun
2008-01-13 01:07 (ссылка)
Пользователи винды вобще, на удивление быстро ко всему привыкают. Все те, кто когда-то смеялся над монтированием дисков в линуксе, теперь спокойно отмонтируют флашки в винде.

Я там выше написал, почему виндовый вариант -- худший. А ваш вполне пригодный. Может быть, поэтому его никто и не реализует :-/

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]nealar.livejournal.com
2008-01-13 01:28 (ссылка)
Самое смешное, что 98 винда не требует действий для монтирования и размонтирования. Ну да, кэшировать она не сможет при такой политике. Ну и какой толк с виндового кэша?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]p_govorun
2008-01-13 01:31 (ссылка)
Вот ведь, умели когда-то :-)

(Ответить) (Уровень выше)


[info]lodin.livejournal.com
2008-01-13 16:39 (ссылка)
Придется, видимо, реализовывать. Самое сложное -- сделать хук для события "попытка записи". Это вообще насколько глубоко лезть-то нужно?..

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

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]p_govorun
2008-01-13 19:05 (ссылка)
Ну уж если так, то хотелось бы некий "менеджер съёмных дисков". Где можно посмотреть статус ("Воткнуто", "Была запись", "Синхронизировано", "Можно выдернуть", "Выдернуто без спроса: срочно верните", "Не читаеццо", "Не пишеццо") и изменить этот статус ("Я выбросил эту дискету в помойку, забудь о ней", "Отдай CDROM, мне он срочно нужен", "Попробуй ещё раз, вдруг прочтётся").

Но это уже розовая мечта. Никто о таком и не думает.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]k001.livejournal.com
2008-01-14 11:56 (ссылка)
В принципе, ничего такого особенно сложного нет, на низком уровне вроде всё есть для этого.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]p_govorun
2008-01-14 19:06 (ссылка)
Не всё.

Например, нету досовского "Abort, Retry, Ignore?" Пускай бы (по моей просьбе) ядро не спешило бы выдавать приложению "I/O error", а спросило бы меня, что делать. Может, приложение переживёт, если ему дать сектор нулей.

Флага "сюда записывали" тоже нету. Примерно как в текстовых редакторах: даже если файл открыт, редактор помнит, что изменений в нём ещё не было.

Или вот, например: я написал "umount", и жду. Ядро знает, сколько блоков ещё не синхронизировано, но мне оно не скажет. А я, может быть, успею пока сходить за чашкой чая. :-)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]k001.livejournal.com
2008-01-14 21:08 (ссылка)
Например, нету досовского «Abort, Retry, Ignore?» Пускай бы (по моей просьбе) ядро не спешило бы выдавать приложению «I/O error», а спросило бы меня, что делать. Может, приложение переживёт, если ему дать сектор нулей.

А там по игнору приложению возвращался блок нулей? Забавно, я и не знал толком.

Не знаю, для меня практическая ценность оного Нафиг/Нефиг/Пофиг была только в том, чтобы попытаться прочитать слабочитаемую дискетку (в современных условиях — компакт-диск).

Но я вот слабо себе представляю, как можно сделать, чтобы *ядро* спрашивало. Приложение может не иметь терминала. Приложение может иметь несколько терминалов. Приложение может быть иксовым (или чёрт знает каким ещё).

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

Хотя в целом мне представляется разумным поведения ядра без выбора. Оно делает retry, и если ничего не помогает, возвращает приложению EIO, давая возможность выбрать Abort, Ingore или всё, что угодно.

Флага «сюда записывали» тоже нету. Примерно как в текстовых редакторах: даже если файл открыт, редактор помнит, что изменений в нём ещё не было.

Или вот, например: я написал «umount», и жду. Ядро знает, сколько блоков ещё не синхронизировано, но мне оно не скажет. А я, может быть, успею пока сходить за чашкой чая. :-)


Есть флаг «грязности», это почти то же самое (только он после sync пропадает, но как я понимаю, именно это нам и нужно). Есть количество грязных буферов, которые надо скинуть на диск. В принципе, можно смотреть за прогрессом, писать ETA и т.п.

Кстати, одно время в gnu fileutils (cp, mv, dd) были прогресс-бары по какой-то недокументированной опции, но их оттуда убрали. А зря, мне вот жалко, приходится использовать mc для таких случаев.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]p_govorun
2008-01-14 22:20 (ссылка)
Что возвращала DOS на "ignore", я не знаю. Но что-то же она возвращала.

Я знаю, что ядру неприлично общаться с пользователем. Но если у пользователя беда (нечитающийся CDROM -- это беда), то можно и снизойти. Я это представляю примерно так. По умолчанию всё, как сейчас, но пользователь (видимо, root) может включить особый режим. В этом режиме при ошибке ввода-вывода поднимается некий флаг (скажем, в /proc) а ошибка приложению не возврашается до тех пор, пока пользователь на этот флаг не отреагирует (скажем, путём записи туда же, в /proc). Я понимаю, что при этом могут быть разнообразные глюки в ОС, но если пользователь готов это потерпеть -- его право.

(Когда я рассказываю о линуксе, я иногда говорю "А ещё линукс умеет быть досом. Для этого надо загрузить ядро и запустить bash". (Кстати, существует и command.com под линукс -- кто-то с чувством юмора написал). Так почему бы не довести это умение до совершенства?)

Про "грязный" флаг я не знал. Но нынешнюю ситуацию я вижу так: почти всё есть, но жутко разбросано.

Вот ещё пример проблемы. Представь себе, что у тебя есть usb флешка, про которую ты знаешь всё (vendor/device id, метку тома и прочее в этом духе). Она воткнута в компьютер (linux). Надо написать скрипт, определяющий, подмонтирована ли эта флешка.

(Ответить) (Уровень выше)


[info]angry-elf.livejournal.com
2008-01-13 01:49 (ссылка)
А будь воля логики, запись бы шла в синхронном режиме, а не асинхронном.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]p_govorun
2008-01-13 02:01 (ссылка)
Тоже проблема: она тормозит. Я уж не говорю о том, что от синхронно записи флешка портится. (Именно так: каждая операция записи её изнашивает, а при асинхронной записи можно обойтись одной операцией записи на несколько соседних секторов).

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]angry-elf.livejournal.com
2008-01-13 02:15 (ссылка)
> Тоже проблема: она тормозит.

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

> Я уж не говорю о том, что от синхронно записи флешка портится. (Именно так: каждая операция записи её изнашивает, а при асинхронной записи можно обойтись одной операцией записи на несколько соседних секторов).

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

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]p_govorun
2008-01-13 02:23 (ссылка)
Тормозит в том смысле, что если я копирую на диск файлы по одному, я должен ждать после каждого копирования, а не запихать всё в кэш и предоставить ОС разбираться.

Что касается перезаписывания, то на файловой системе FAT после каждой записи файла надо этот самый fat переписывать (а он-то и есть саме изнашиваемое место). Лучше уж его кешировать, а потом записать разом.

Специальные файловые системы -- это хорошо, но вряд ли когда-нибудь будет. Кроме винды, есть ещё всякие фотоаппараты и т.п., и там всё ещё хуже.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]angry-elf.livejournal.com
2008-01-13 02:29 (ссылка)
> Тормозит в том смысле, что если я копирую на диск файлы по одному, я должен ждать после каждого копирования, а не запихать всё в кэш и предоставить ОС разбираться.

Надо определится, чего мы хотим - мифический "кэш записи" или "выдергивать флешку после окончания операции копирования". Совместить это невозможно.


> Что касается перезаписывания, то на файловой системе FAT после каждой записи файла надо этот самый fat переписывать (а он-то и есть саме изнашиваемое место). Лучше уж его кешировать, а потом записать разом.

Вот. Файловая система, проектировавшаяся для дискет до мегабайта используется на многогигабайтных носителях. Не маразм ли?


> Специальные файловые системы -- это хорошо, но вряд ли когда-нибудь будет. Кроме винды, есть ещё всякие фотоаппараты и т.п., и там всё ещё хуже.

JFFS2 is a log-structured file system designed for use on flash devices in embedded systems.

Что такое embedded system расшифровывать не надо? :)

К сожалению, проблема только в виндах. А уже на винду и её пользователей завязываются производители девайсов. Ничего, придут 64GB и больше флешки, может тогда чесаться начнут. FAT32 на таких объемах будет тормозить настолько дико, ни один фотик/мобила их не вытянет.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]p_govorun
2008-01-13 02:50 (ссылка)
Я знаю, что это несовместимо. Я хочу сказать, что даже если бы мы выбрали автомонтирование, всё равно его не надо делать так, как в windows.

А чесаться не начнут, придумают ещё какой-нибудь костыль. Как FAT32 в своё время был костылём, чтобы перебраться через барьер в два гига.

(Ответить) (Уровень выше)


[info]angry-elf.livejournal.com
2008-01-13 02:16 (ссылка)
JFFS/JFFS2, во.

(Ответить) (Уровень выше)


[info]k001.livejournal.com
2008-01-14 12:06 (ссылка)
sync при отсутствии активности делается, причём это регулируется несколькими параметрами, подробности тут: http://80.71.248.82/lkd/index.html?page=0672327201/ch15lev1sec4.html

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]p_govorun
2008-01-14 19:13 (ссылка)
Посмотрел. Сколь я понял, оно живёт в /proc/sys/vm и относится ко всем кешам. Крутить это ради флешки явно не стоит.

А ведь может быть ещё более хитрая логика. Например, так: "Предыдущие пять минут мы непрерывно писали на флешку. Поэтому нам лучше не прекращать запись, а скинуть туда весь кеш."

(Ответить) (Уровень выше)


(Читать комментарии) -