Y2k bios і windows
Y2K: BIOS і Windows
Від тому, що одна з проблем Y2K.
Що таке BIOS?
У чому проблема з годинником
Дуже старий персональний комп'ютер
Конфлікти годин тривають
Що ж робити?
Від тому, що одна з проблем Y2K.
Від тому, що одна з проблем Y2K пов'язана з невірною роботою годин BIOS, сьогодні здається знають вже всі. Але так чи велика ця небезпека, в чому вона конкретно вона полягає і висока ймовірність зустрітися з нею?
Уважний розгляд цього питання говорить про те, що галас навколо нього занадто перебільшена. Багато з цією проблемою не зустрінуться зовсім, а кому пощастить побачити її зблизька - легко зможе її подолати, без якоїсь модернізації апаратури або ПО. Швидше тут постають два інших принципових питання:
- Чому виробники BIOS уникають відповідальності за явний брак ?;
- Чому виробник ОС не передбачає елементарні засоби контролю за правильною установкою системного годинника?
Сучасні користувачі ПК вже трохи призабули про деякі основи комп'ютера, які були відомі майже кожному за часів DOS, тому варто нагадати про деякі з них.
Однією з ключових ідей архітектури персонального комп'ютера (з моменту його створення в 1982 році) була реалізація деякого набору системних функцій за допомогою програм, записаних в постійному пристрої, що запам'ятовує (ПЗУ), яке розміщується на одній з мікросхем на системній платі. По-старому цей набір мікрокоманд називається BIOS (Basic Input-Output System - базова систем введення-виведення), хоча їх функції вже давно вийшли за межі функцій вводу-виводу.
На виробництві таких мікросхем в світі спеціалізується кілька фірм, найбільш відомі з яких - American Megatrends і Award Software. Завданням BIOS є не тільки автоматизація стандартного набору команд (ПЗУ дешевше і працює швидше, ніж оперативна пам'ять), але і ув'язка між собою окремих електронних компонентів ПК і стикування з ними власне програм користувача. Тому при апаратному оновленні комп'ютера (наприклад, при установці нового більш потужного процесора) часом (але далеко не завжди) буває потрібно встановити і новий BIOS.
Раніше для цього просто змінювали мікросхему (вона коштувала 10-15 дол.), Але останнім часом в якості ПЗУ використовується флеш-пам'ять, яка дозволяє вносити виправлення в код програмним чином. Тобто c дискети або через Web зчитується програма, яка коригує вміст BIOS. Так що, якщо і раніше оновлення BIOS було нескладним завданням, то сьогодні це робиться ще простіше (фахівцем, звичайно ж).
Одним із завдань BIOS є підтримка годин поточного часу / дати, діапазон роботи яких у відповідності зі специфікаціями персональних комп'ютерів (певних ще в 1982 році) дорівнює з 01.01.1980 до 31.12.2099.
Відлік ведеться за допомогою обліку сигналів, що надходять з апаратного таймера, і питання полягає в тому, яким чином проводиться початкова установка дати (і часу) в момент включення комп'ютера. У перших моделях IBM PC, включаючи XT (випускалася до 1988 року), за замовчуванням встановлювалася дата 01.01.1980, яку користувач повинен був вручну коригувати при кожному завантаженні комп'ютера.
Починаючи з моделі IBM PC AT (процесор i286), в середині 80-х років у складі BIOS з'явився спеціальний блок пам'яті (CMOS) для зберігання набору параметрів, які керують режимами роботи BIOS. Ці дані можуть змінюватися, але при цьому їх треба між включеннями комп'ютера. Корекція даних параметрів, як правило, виконується тільки вручну самим користувачем (а скоріше - працівника центру обслуговування ПК), причому тільки в момент завантаження комп'ютера, до запуску операційної системи. Для цього потрібно відразу після включення ПК натиснути певну клавішу (зазвичай це Delete - повідомлення з назвою клавіші з'являється на екрані) і ви потрапите в зашиту в BIOS програму під назвою типу BIOS CMOS Setup Utilily.
У складі CMOS є вбудовані електронні годинники, які працюють постійно, в тому числі і при вимкненому ПК. Для цього в використовується спеціальний заряджає акумулятор, від якого живляться логічні схеми годин.
Раніше акумулятор використовувався і для харчування самої пам'яті CMOS, а його робота доставляла великий головний біль. По-перше, акумулятори з часом працювали гірше або просто розряджалися, якщо ПК довго не включався (це може статися і зараз). По-друге, пам'ять іноді очищалася через зовні непомітних кидків харчування. Так що доводилося записувати значення збережених там параметрів на папірець і періодично відновлювати їх вручну. В останні кілька років така проблема стала великою екзотикою - виробники навчилися робити якісні акумулятори. До того ж сьогодні в якості CMOS застосовується незалежна флеш-пам'ять, а харчування потрібно тільки для підтримки роботи логічних схем, в тому числі і годин.
У чому проблема з годинником
Проблема полягає в наявності двох годин в системі: електронних, які працюють завжди, і системних програмних годинник BIOS, які функціонують тільки у включеному стані ПК. Алгоритм їх взаємодії виглядає приблизно наступним чином:
1. В момент завантаження ПК програмні годинник в якості початкового значення беруть час електронного годинника.
2. При установці користувачем дати / часу в явному вигляді, проводиться відповідна корекція обох годин. В інший час годинник працює абсолютно незалежно один від одного.
Так ось, програмні годинник, з якими має справу користувач, працюють правильно завжди - з 1980 по 2099. А ось електронні дійсно дають певні збої (абсолютно незрозуміло, з якого дива). Крім того, можливі деякі колізії в роботі цих двох механізмів обліку часу. Але вони вирішуються (якщо взагалі мають місце) досить елементарно, без особливих зусиль з боку користувача.
Дуже старий персональний комп'ютер
Протестувати таку ситуацію можна в такий спосіб <*>.
Якщо Вам вдалося виявити помилку, описану вище в пункті 2, то раджу провести ще один експеримент.
2. Перезавантажте комп'ютер і подивіться дату - побачите 01.01.1980.
Але проблема полягає в іншому: чому така помилка відразу не виправляється на рівні DOS? Адже очевидно, що якщо годинник повідомляють номер року 1980, то версія DOS, випущена в 1989 році, могла б здогадатися про те, щоб принаймні запропонувати користувачеві перевірити дату. Могла б, але не хоче.
Конфлікти годин тривають
Однак ті, хто думають, що на цьому конфлікти BIOS-DOS / Windows закінчуються, глибоко в цьому помиляються. Зараз ми розглянемо інший випадок, який по суті не загрожує роботі користувача, але все ж цікавий з точки зору питання про те, які ще каверзи готують нам ІТ-розробники.
Отже, при досягненні максимальної дати CMOS просто перестає вважати року - після 31.12.2079 слід 01.01.2079.
Щоб розібратися з можливими проблемами, давайте розглянемо кілька конкретних ситуацій:
Як бачимо, проблеми з електронним годинником дійсно є, хоча це дуже дивно. Уявіть собі, якась фірма стала б випускати звичайний годинник, які будуть неправильно вважати дні тижня. Напевно, покупці відразу ж знищили б її своїми позовами. У комп'ютерній індустрії вам з цього приводу пропонують оновити техніку або ПО, заплативши за модернізацію з власної кишені. І все, схоже, погоджуються з цим.
Проте, ситуація навіть з древніми "проблемними" BIOS / CMOS виглядає зовсім не настільки драматично:
1. Якщо на вашому ПК взагалі не працюють електронний годинник, ви можете просто взяти за правило встановлювати їх вручну при кожному запуску комп'ютера (або не вимикати його).
Довго ж роздумував потужний колектив розробників Microsoft, перш ніж вставити процедуру, яка описується одним рядком програмного коду (на Basic):
Але користувачам, які працюють зі "старими" OC Microsoft (наприклад, DOS), зовсім не обов'язково бігти купувати нову систему - досить самому записати наведений вище код в стартовий файл Autoexec.bat.
Для цього достатньо написати утиліту, що складається з декількох рядків коду (наприклад, на Basic), які може зрозуміти навіть людина, ніколи не займався програмуванням: