Чому операційні системи мають можливість вимкнутись? [дублікат]


10

Екран відключення Windows 98
(джерело: ytimg.com )

Хочу знати, чому операційні системи вимагають від нас закрити функцію. Чому я не можу просто вимкнути живлення за допомогою механічного вимикача?

Чи пошкоджую апаратне забезпечення або пошкоджую свої дані, якщо постійно вимикаю комп'ютер, не використовуючи опцію ОС?

Для уточнення: я хочу використовувати Intel Compute Stick як медіаплеєр, підключений до проектора, тому він буде керуватися електричним вимикачем. На комп’ютері буде працювати лише відео і не буде встановлено програм. Комп'ютер не матиме доступу до Інтернету.


30
Що вам сказали ваші дослідження? Швидкий пошук від Google, "чому мені потрібно вимкнути комп'ютер, а не витягувати живлення", знайде численні відповіді ... І так, ви можете пошкодити обладнання, але ризики низькі, але, безумовно, є шанс псує або втрачає дані.
acejavelin

1
Якщо ваше обладнання підтримує це, а система, з якою ви працюєте, повністю отримує доступ до будь-якого сховища в режимі лише для читання, а система не працює апаратним забезпеченням, яке повинно бути вимкнено певною процедурою (наприклад, деякі карти телевізійного тюнера, модеми, ...) , то немає проблеми просто в тому, щоб відключити живлення. Однак такі системи досить важко знайти.
Даніель Жур


1
Старіша техніка була менш толерантною до раптових втрат електроенергії. Але сучасне обладнання терпимо до раптових втрат електроенергії. Настільні системи, як правило, вимагають впорядкованого відключення. Вбудовані системи можуть бути терпимими до раптових втрат електроенергії. Вбудований Linux часто використовує файлові системи JFFS2 та UBIFS; "І UBI (див. Тут ), і UBIFS мають толерантність до відключення електроенергії, і вони були розроблені з урахуванням цієї властивості." . Зауважте, що це файлові системи для читання / запису.
тирса

1
@DrZoo він (досі є) ідентичний у XP, якщо ви запускаєте його в системі без джерела живлення ATX. Раніше я використовував тестовий комплект із вбудованим стандартним комп'ютером XP pro.
Кріс Х

Відповіді:


41

Це залежить від того, що відбувається з системою в той момент, який ви вибрали, щоб раптово припинити живлення. Якщо система зайнята записом важливих даних, і ви відключили живлення, ви можете потенційно пошкодити дані або пошкодити ОС. Багато чого відбувається, чого ви насправді не бачите. В основному вам доводиться турбуватися про щось, пов’язане з порушенням програмного забезпечення, коли ви робите жорсткий скидання. Що стосується обладнання, ви не повинні мати жодних проблем. Постукати по дереву

Ви не хочете робити звичку, минаючи метод відключення та відключаючи живлення. Було б просто питання часу, поки щось не стане корумпованим і не призведе до того, що вам доведеться перевстановити ОС.

У деяких випадках жорсткий перезавантаження - це єдиний у вас вибір. Якщо ваш комп'ютер заблокується, і ви не можете змусити його нічого робити, який інший варіант є?

Початок цього екрана походить з Windows 9X Systems, де повідомлення відображається, коли Windows успішно вимкнувся на MS-DOS, але не налаштований знову повертатися до підказки (COMMAND.COM). У системах з належною підтримкою ACPI та джерелом живлення ATX комп'ютер може замість цього вимкнути живлення.

У будь-якій ситуації, коли ви збираєтеся зробити жорсткий перезавантаження, не забудьте кричати " Я господар влади на вашому комп'ютері !!! Покажіть, хто у вас начальник.


26
Останній рядок ... на жаль, він не має таких самих відчуттів, коли це віртуальна машина
Бургі

14
@ Бургі " Я барон електрики !!! * " - виправлено?
corsiKa

5
@Burgi " Я король бітів !!! "
hBy2Py

5
Що стосується апаратури, я розумію, що витягнення живлення призведе до того, що жорсткий диск зробить "аварійний парк". Хоча це зазвичай запобігає пошкодженню накопичувача, жорсткі диски розраховані на набагато меншу кількість парків аварійних ситуацій, ніж звичайні парки (командовані), тому диск може швидше зношуватися.
Нейт Елдредж

6
У сучасній файловій системі, що працює на основі журналу, вам не доведеться перевстановлювати ОС за звичайних обставин. Але ви, правдоподібно, можете втратити багато даних програми, які, на вашу думку, зберегли на диску.
Кевін

27

Комп'ютери розроблені так, щоб вони були швидкими. Це може включати обман. Наприклад, коли комп'ютер повинен записувати дані, комп'ютери можуть зберігати дані в оперативній пам’яті, а не записувати їх на жорсткий диск. Це робиться тому, що оперативна пам'ять набагато швидша.

Після вимкнення комп'ютер сповіщає буфери, тобто припиняє зберігати речі в оперативній пам’яті та готується до втрати системи електроенергією. Якщо ви фактично втрачаєте електроенергію, перш ніж переконатися, що всі такі дані правильно записані, ви можете втратити дані.

Частина деталей структури обсягу файлової системи обробляється кодом обробки файлової системи операційної системи (іноді називається драйвером файлової системи). Часто файлові системи використовують таблиці. (Візуально ви можете придумати такі, як діаграми.) Уявіть собі, якби ви писали таблицю множення, і вона сказала:
2 4 6 8 10 12 14 1

Перш за все, кожен стовпець має лише один рядок. Проблеми множення повинні мати три частини (два числа, які перемножуються (множник і множник), і відповідь (добуток)). Тут ми бачимо купу одиничних чисел, тому у нас навіть немає повного прикладу продукту множення. Те, що ми маємо, марно.

По-друге, те, що ми маємо, насправді гірше, ніж марне. Іноді, єдине, що гірше, ніж відсутність інформації (змушує вас не досягти прогресу під час з'ясування потрібної інформації), - це довірна оманлива інформація, яка змушує витрачати ресурси на просування в марному, поганому напрямку. У цьому випадку у вас є недійсні дані до кінця: один замість 16. (Ідея тут полягає в тому, що діаграма перестала оновлюватися раптово, перш ніж все число "16" було відмічено належним чином.) Якщо ви не впустите комп'ютер заповнить свої графіки правильно, то це може спричинити плутанину. (Якщо комп'ютеру запропоновано оновити деякі дані, і він повинен записати у позицію номер шістнадцять ... ви не хочете, щоб він писав у позицію номер один!) Комп'ютер покладається на таблиці, подібні за цим за своєю суттю.

Ще один приклад - віртуальна пам'ять. Якщо на комп'ютері не вистачає оперативної пам’яті, він може використовувати простір на жорсткому диску для відстеження деталей. Наприклад, можливо, у вас є документ із п'ятдесят сторінок у текстовому процесорі. Комп'ютер відстежує той факт, що текстовий процесор відкритий, і відслідковує перші 12 сторінок, але решта 38 сторінок зберігаються на жорсткому диску в тому, що називається "віртуальна пам'ять". Коли ви вимкнете, комп'ютер пройде весь процес відключення програм, що звільнить деяку оперативну пам’ять, і врешті використає «віртуальну пам’ять» для належного поводження з текстовим процесором. Якщо ви просто втратили електроенергію, то текстовий процесор перестає працювати (бо все припиняється). Потім, коли комп'ютер запускається, він бачить, що віртуальна пам'ять має дані з 38 сторінок документа, який був відкритий в текстовому процесорі. Комп'ютер навіть не знає, що ці дані використовуються текстовим процесором. Вимкнення дозволяє опікуватися такими речами, поки комп'ютер може відслідковувати ці деталі.

Порівняно з Windows 95, MS-DOS був більш стійким (менш схильним до проблем), коли мова зайшла про раптові відключення електроенергії. (Частина цієї підвищеної вразливості була пов'язана зі здатністю Windows 95 робити багатозадачність та обробляти віртуальну пам'ять.) Таким чином, сприйнятливість комп'ютера до недійсних відключень або навіть якщо офіційна процедура відключення взагалі потрібна, заснована на тому, яка операційна система використовується. Більшість сучасних операційних систем розраховані на те, щоб вимагати належного відключення, оскільки операційні системи спрощуються з такою вимогою. Причини цього не мають бути, і насправді деякі операційні системи nanobsd дозволяють людині просто вимкнути її. Як один із прикладів, на сторінці nanobsd написано: "Все є лише для читання під час виконання - безпечно витягнути вилку живлення".На домашній сторінці resflash є куля, на якій написано : "Влада може бути безпечно втрачена в будь-який час". Тож немає причин, чому абсолютно відключення повинні бути вимогою, яку пред'являють дизайнери операційних систем, коли вони створюють дизайн операційної системи. Вимкнення - це просто проста вимога, яка є досить поширеною.


1
"Потім, коли комп'ютер запускається, він бачить, що віртуальна пам'ять має дані з 38 сторінок документа, які були відкриті в текстовому процесорі." - це не хвилюватиметься, він буде трактувати це як дані про сміття, а не використовуватиме його, поки його не перезаписать. (Тому що, що ти очікуєш там? Ніколи не буде нічого корисного)
user253751

1
"це не байдуже, воно буде ставитися до цього як до сміття" - правильно. Ось чому моє наступне речення (після того, яке ви цитували) сказало: "Комп'ютер навіть не знає, що ці дані використовуються текстовим процесором". Це втратило слід цього факту.
TOOGAM

Я маю на увазі те, що це не викликає проблем.
користувач253751

" Більшість сучасних операційних систем розроблені ... простіше проектувати з такою вимогою ". ІМО це надмірне спрощення. Ми можемо уникнути відключень, але дуже дорогою ціною. Ні кешування, ні способу повідомлення фонових процесів (серверів, менеджерів резервних копій, оновлень). Також сучасне обладнання більше не використовується з PIO, але з DMA , ви скажете HDD і NIC читати дані з оперативної пам'яті, і вони повідомлять вас про завершення. Що робити, якщо потужність між HDD записується з кеша на пластини? Нехай ОС вирішить, на скільки затримати відключення. Це краще знає.
Маргарет Блум

5

За часів MS-DOS вбивство живлення комп'ютера, як правило, призвело до втрати будь-якої інформації, яка зберігалася в оперативній пам'яті, але не зберігалася на диску, але не впливала б на інформацію, що зберігається на диску. Однак акт зберігання інформації на диску часто дасть стару інформацію нечитабельною хоча б трохи до того, як нова версія буде читаною. Втрата потужності між моментом знищення старої версії та новою версією написаного залишила б її без будь-якої версії інформації. Якщо інформація, про яку йдеться, - це щось на зразок структури каталогів, що великі області диска можуть бути практично недоступними.

Якщо ви користуєтесь програмним забезпеченням, яке записує інформацію на диск лише тоді, коли це явно попросять зробити це, тоді за умови, що він не вбиває живлення одразу після того, як попросить систему записати на диск, не слід випадково клопотати будь-яку інформацію на диску. Однак у сучасних системах часто є одне або більше завдань, які можуть почати записувати інформацію на диск часом, коли користувач не обов’язково розраховує. Якщо трапилось, що система почала записувати якусь інформацію безпосередньо перед тим, як користувач знищив живлення, це може призвести до пошкодження диска та втрати даних.

Частина мети вибору "відключення" полягає в тому, щоб виключити можливість системи мимовільно запускати будь-які дії, які записують дані на диск так само, як користувач збирається вбити владу. Будь-які дії, які не запускаються до появи повідомлення "Ви зараз можете вимкнути комп'ютер", не можуть бути запущені до того моменту, коли система не перезапуститься, тому немає небезпеки, що щось станеться, як тільки користувач витягне плагін.


1
Навіть у дні DOS це була дійсно погана ідея. Якщо файл було оновлено, але FAT не було оновлено, ви отримаєте пошкоджений файл.
Деві Морган

1
@DewiMorgan: У дні DOS були утиліти, доступні для кешування назад, але кожна окрема версія DOS я пам’ятаю, як використовувала кешування для запису як звичайну поведінку. Що б інакше зробити, щоб повідомити систему, яку хотіли вимкнути?
supercat

3
@DewiMorgan: Я знаю, що деякі старі жорсткі диски мали утиліти head-park, але вони були значно застарілими ще до того, як Windows 95 замінив DOS.
supercat

1
supercat: Так, MS-DOS не робив такого кешування, якщо ви не запустили програмне забезпечення для цього, наприклад, SmartDrv в комплекті. Як ви сповістили про те, що система повинна вимкнутись - це використовувати SmartDrv/C. (Я вважаю, що поведінка за замовчуванням, що стосується кешування записів, відрізнялася між MS-DOS 5.0 та 6.22 ... Я не пам'ятаю, чи змінили це зміни 5.0-> 6.0 або більш пізні оновлення). Якщо пам'ять слугує мені правильно, одна з пізніших оновлень (починаючи з 6 або пізнішої) спричинила SmartDrv автоматично зробити це перед тим, як дозволити Command.Com знову відобразити підказку, настільки безпечно вимкнути її під час запиту
TOOGAM

1
@Supercat Як я розумію, кешування наскрізних даних захищає один блок даних від пошкодження під час запису. Це не захищає два різних блоки (FAT та вміст файлів) від випадання синхронізації, якщо живлення перервано між записом одного та іншого.
Деві Морган

4

Є дві основні причини того, що комп'ютерні системи потребують впорядкованого відключення:

Стан програми

У багатьох програмах є стан, який потрібно записати на постійне зберігання. Очевидний приклад - сервер баз даних, але навіть додатки з читанням, такі як веб-або NTP-сервери, можуть писати журнали або статистику, які можуть бути нерозбірливими, якщо запис припинено.

Цю проблему можна усунути, якщо відповідні програми не читають і не записують файли безпосередньо, а виконують ці операції через транзакційний механізм, такий як запис у реляційну базу даних.

Структура файлової системи

Оскільки операційна система записує файли від імені додатків, записи можуть бути буферовані до тих пір, поки диски не наздоганятимуть, тобто записи додатків не обов'язково завершуються до певного часу. Механізми енергозбереження, як правило, збільшують затримку тут, тому у вас є компроміс між споживанням енергії та безпекою даних.

Поки дані записуються на диск, є пункти, коли дані файлової системи несумісні. Сучасні реалізації файлової системи дбають про те, щоб мінімізувати періоди, але їх не можна повністю усунути. Наприклад, коли блок взято з вільного списку, є коротке вікно, де він не виділений і не вільний. Ця проблема узгодженості полягає в тому, що після нечистого відключення ОС потрібно буде виконати перевірку файлової системи при наступному завантаженні, щоб перевірити всі блоки та переконатися, що вони правильно обліковуються.

Журнальні файлові системи зменшують це деякою мірою, записуючи передбачувані зміни в журнал, перш ніж їх реально виконувати. Тоді перевірка файлової системи може працювати набагато швидше, відтворюючи всі повні записи журналу та викидаючи неповні.

Проблем узгодженості файлової системи можна уникнути, якщо немає локальних дисків та NFS-монтажу кореневої файлової системи, але втрата кешованих записів все ще є проблемою для цих систем. Єдині системи, які я готовий до жорсткого відключення живлення без відключення - це ті, на яких диски встановлені лише для читання (в основному, вбудовані системи, такі як мій музичний плеєр Empeg Car, а також пара терміналів для перегляду веб-дисків менше, ніж я лежу навколо для відвідувачів).

TL; DR

Запис даних у постійне зберігання повинен бути завершений перед відключенням живлення. Якщо у вас немає місця для запису, то вимкнути живлення - це малий ризик.


-1

адже якщо якийсь файл дескриптора відкритий, він може пошкодити важливий файл і залишити ОС мертвою


15
Ласкаво просимо до Супер Користувача. Поширена помилка, яку роблять нові користувачі, - відповідати без деталей, як реально вирішити проблему. Відповіді мають бути детальними та включати посилання, якщо це необхідно. Будь ласка, знайдіть кілька хвилин, щоб відредагувати свою відповідь, щоб включити подробиці, чому ваша відповідь є дійсною. Якщо вам потрібна допомога, читайте як я можу написати гарну відповідь? .
CharlieRB
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.