>[оверквотинг удален] >-- и правда, непонятно. Ну, к примеру: программа позвала open(), написала >данные write()'ом, позвала close(). Все системные вызовы завершились успешно. Программа (и, >как следствие, пользователь!) уверены, что ВСЕ НОРМАЛЬНО. Exit code 0. Но >ФИЗИЧЕСКИ данные пока в buffer cache. И тут добрый пользователь выдернул >флэшку. > >Как объяснить пользователю поведение операционной системы, допустим, если в данном случае просто >инвалидировать содержимое кэша буферов? Он же ВИДЕЛ, что ВСЕ НОРМАЛЬНО завершилось! >Где, балин, данные?! Паника операционки в этом случае -- способ показать, >что ан нет, не все нормально... Гениально. А если так: программа вызвала write () на TCP-сокете. ОС взяла эти данные в буфер и сказала программе, что они успешно записались. А потом - remote host завис/пропала связь, в общем, выяснилось, что данные доставить невозможно. Программа же видела, что ВСЕ НОРМАЛЬНО записалось! Тоже паниковать?
|