Як виглядає операційна система без оболонки?


41

Оболонка типу bash або command.com (до Windows ME) або CMD.EXE (у пізніших версіях) забезпечує інтерфейс, який (крім усього іншого) приймає команди від користувача. Як виглядає операційна система перед запуском оболонки? Як використовувались системи до розробки першої оболонки (наприклад, UNIX на початку 1970-х)? Якщо комп'ютер навіть не може приймати команди (немає командного рядка), як користувач може взаємодіяти з ним? Що це за найосновніший інтерфейс? Чи можу я запустити цей інтерфейс в емуляторі терміналу або немає можливості перейти за оболонку?



2
@Ramhound Звичайно, ви можете взаємодіяти з системою без командного рядка. Можна стверджувати достоїнства різних підходів до дизайну інтерфейсу протягом усього тижня, але, безумовно, можна було взаємодіяти як з класичною Mac OS, так і з Altair, незважаючи на те, що командний рядок не вийшов.
CVn

4
Найбільш базовим інтерфейсом, ймовірно, буде панель комутацій, як у PDP11 / 04 тощо
Tog

1
Цей схожий на шахи raspberrypi.org/archives/4300
Ніко Бернс

1
Це схоже на дерево, що падає в лісі і нікого навколо не бачить.
nathan hayfield

Відповіді:


35

Як виглядає операційна система перед запуском оболонки?

Залежить від ОС та способу її налаштування. Linux може бути налаштований для запису завантажувального тексту на консольний пристрій, будь то консоль текстового режиму, консоль framebuffer або послідовний порт. Він також може бути налаштований на бездоганне мовчання. Деякі ОС / системи можуть записувати діагностичну інформацію в енергонезалежну пам'ять, доступ до якої можна отримати, перевівши систему в режим розробника, налагодження чи діагностики. Багато операційних систем підтримують вихідну завантажувальну та діагностичну інформацію до якоїсь форми UART, яка може якось бути доступною на пристрої, навіть якщо прихована від користувача (google "Додати послідовний порт до DD-WRT", наприклад, де виробники приховують послідовні порти та як можна дістатися до них).

У ОС взагалі не повинно бути зовнішнього дисплея - це лише інший пристрій для ОС.

Як використовувались системи до розробки першої оболонки (наприклад, UNIX на початку 1970-х)?

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

Якщо комп'ютер навіть не може приймати команди (немає командного рядка), як користувач може взаємодіяти з ним?

Я не фахівець у цій галузі, але старі, старі комп’ютери, такі як Altair, IMSAI та PDP-8, мали такі вимикачі на передній панелі, які безпосередньо керували процесором і могли безпосередньо читати та записувати пам'ять без втручання процесора.

Що це за найосновніший інтерфейс?

Я вважаю, що, якщо не всі сучасні процесори мають "порт JTAG", який дозволяє однотипні прямі операції. Майте на увазі, що тривалий час, як очікується, більшість комп’ютерів мають ПЗУ або мікропрограмне забезпечення, яке приймає контроль над системою, коли вона вмикається, перш ніж передавати її в ОС. Тут можуть існувати утиліти перед завантаженням або існує мінімальний механізм завантаження таких утиліт. До деяких завантажувачів, таких як U-Boot, можна отримати доступ через послідовний порт. Завантажувачі не працюють «позаду» ОС, вони завантажують ОС, передають їй управління вручну, а потім вони більше не працюють.

Чи можу я запустити цей інтерфейс в емуляторі терміналу або немає можливості перейти за оболонку?

Ні, вам потрібен інтерфейс JTAG. Це занурення у сферу електроніки, і я визнаю, що я не дуже багато про це знаю, за винятком того, що мій GuruPlug поставляється з одним, і я можу безпосередньо запрограмувати флеш-чіп на платі GuruPlug з ним - це означає, якщо щось вбиває завантажувач на GuruPlug, у мене є "незалежний від процесора" спосіб відбити його назад.


4
Інтерфейс JTAG дозволяє (за допомогою виділеного контролера) доступу до тестових інтерфейсів усіх компонентів, минаючи звичайні режими роботи. Залежно від випробовуваної функціональності тесту, ви можете запрограмувати пам'ять, керувати входом / виходом, запускати / зупиняти процесор або зчитувати внутрішні регістри.
Chaos_99

23

Операційна система не повинна надавати оболонку, оскільки цей термін зазвичай використовується сьогодні (мається на увазі додаток, який інтерактивно прийме команди від користувача), але така операційна система насправді взагалі "не схожа на" користувач. Як згадує Олівер Зальцбург, він, ймовірно, просто відобразив би порожній екран (якщо він взагалі має підтримку виводу дисплея), хоча немає жодної причини для цього. Візьмемо для прикладу діагностичний вихід ядра Linux під час завантаження та ініціалізації ядра.

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

Однак немає причин, чому програма, яка використовує ці засоби , повинна бути оболонкою .

За старих часів операційні системи були просто сукупністю тих "корисних процедур", які в кожному разі додатку довелося б переписати з нуля, а комп'ютери по суті були пристроями пакетної обробки. Такі речі, як введення / виведення файлів, дисків і принтерів, ймовірно, були одними з перших, хто збирався в операційну систему, після чого планувалося процес (варто зазначити, що керівництво Apollo Computer Computer на початку 1960-х років було багатозадачним комп'ютером). Потім програми можуть здійснювати дзвінки в ОС замість використання власних процедур для виконання таких дій, що зменшує складність програмування і, ймовірно, сприяє зменшенню розміру коду чи часу виконання (адже ті системні засоби могли бути сильно оптимізовані та налагоджені один раз, після чого всі отримають користь) . Оскільки комп'ютери ставали все більш поширеними, операційні системи додавали функції, в основному орієнтовані на користувачів, такі як спосіб взаємодії користувача з комп'ютером та надання команд в інтерактивному режимі; графічні оболонки - просто розширення цієї лінії міркувань.

Крім того, не так давно (придумайте до кінця 1980-х років) все ще досить часто було писати додатки для запуску на голому персональному комп'ютерному обладнанні без допомоги будь-якої звичайної операційної системи. Це було особливо корисно для ігор, оскільки це дозволило уникнути пам'яті та обробки власних витрат операційної системи, але я впевнений, що були й інші приклади. У тих випадках, певною мірою, програма була власною операційною системою, і, як наслідок, користувальницький інтерфейс, наданий цим додатком, був оболонкою.


4
Сьогодні дуже часто писати програми, які працюють на голому металі без операційної системи - напевно, частіше, ніж це було колись. В наші дні майже все, що в них є електроніка, має мікроконтролер. Деякі з таких вбудованих систем, як автомобілі або маршрутизатори, мають операційні системи, але прості речі, такі як термостати, пральні машини тощо.
Жанна Піндар

1
@JeannePindar Добрий момент; Я уточнив, що маю на увазі в контексті персональних комп’ютерів.
CVn

11

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

Але все ж була точка входу для користувача, щоб запустити програму. Якщо ви розтягнете слово, ви можете назвати це "оболонкою". Але в основному це було лише обладнання, яке чекало, коли користувач введе перший біт програми, яку потрібно запустити. Будь то у вигляді натиснутих кнопок, натиснутих вимикачів, підключених проводів на розподільному щиті, перфокарт, перфорованої плівки або магнітної стрічки. Можливо, вони могли навіть вибрати з декількох програм, завантажених раніше. Але навіть вибір зі списку, що відображається як світиться вогнів, натискаючи кнопку біля нього, вже можна вважати «оболонкою».

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

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


6

Ймовірно, це буде порожній екран.

Оболонка , ймовірно , названа оболонка , тому що це оболонка навколо ядра (ядро є операційною системою). Отже, в певному сенсі це інтерфейс користувача для операційної системи, яким би не був інтерфейс.

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


2

З історичного погляду я б здогадався, що там були Перфоровані картки ( https://en.wikipedia.org/wiki/Punched_card ). Для взаємодії з комп'ютерною системою. Але я гадаю, що це ще далеко до вашого питання.


Перфоровані картки були (є) механізмом зберігання даних, а не видимою частиною операційної системи.
CVn

2

Першою ОС, яку я використав (1981) після закінчення коледжу, був PRIMOS на міні-комп'ютері Prime. Це була операційна система обміну часом, і вона підтримувала декілька користувачів, кожен з яких використовував термінал, підключений до комп'ютера через кабель RS232. Вам довелося увійти до терміналу, вказавши ім’я користувача та пароль. Ваш термінальний сеанс був різновидом. Ви можете редагувати файли, компілювати, запускати всі ті речі, якими ми сьогодні займаємось. Усі термінали мали доступ до тієї самої системи подачі документів. Здебільшого ці термінали були не більше ніж машинками - жодні редактори WYSISWYG, навіть emacs - мрія.

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

Для завантаження раннього комп'ютера вам потрібно було завантажити основний набір інструкцій (це може включати перемикання фізичних комутаторів у встановленій послідовності на комп'ютер). Ця послідовність ініціювала б другу невелику програму, яка могла б забезпечити роботу зчитувача стрічки. Тоді ви завантажите більш складну систему через зчитувач стрічок, що може привести диск в дію. Ви можете уявити ОС без оболонок як такий, як один із цих початкових навантажувачів.

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


1

Операційна система як визначення досить неоднозначна. Це саме ядро? Це ядро, а також супутні інструменти? Linux є ядром, але GNU / Linux є операційною системою на основі ядра Linux та інструментів проекту GNU. Shell є невід'ємною частиною такої операційної системи.

Однак, після запуску Linux і закінчення "завантаження" вам потрібно сказати, яку програму запустити. Відтоді все знаходиться в руках саме цієї програми. За замовчуванням це те, initщо знає, що робити далі, і в кінцевому підсумку може привести вас до гарного екрана входу в графічний інтерфейс. Але це не повинно бути таким. Ви можете завантажитися так

kernel /boot/vmlinuz-2.6.30 root=/dev/sda1 ro init=/bin/fancy

Тоді програма /bin/fancyнадрукує "Привіт, світ!". Для цього нам не потрібна оболонка. Якщо ви хочете , щоб почати іншу програму просто породження нового процесу, man 2 forkі man 2 execve, або читання з термінального пристрою і приймати введення користувача. Ще не потрібно оболонки.

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

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


1

Операційні системи без оболонок командного рядка або графічних інтерфейсів мають багато інших видів "облич".

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

Ось рецепт високого рівня, як, як любитель, можна зробити корисний комп’ютер без оболонки на ньому:

  • Побудувати друковану плату для мікроконтролера або отримати загальну плату.
  • Підключіть його, щоб привести в дію деякі корисні пристрої, як, скажімо, датчик вологості та клапан води. Для цього мікроконтролер має периферійні штифти: UART, GPIO та ін.
  • Напишіть прошивку для контролю за датчиком та полийте грунт.
  • Завантажте прошивку через інструменти розробки (Отже, на хост-комп'ютері не потрібна оболонка, щоб нічого не завантажувати та запускати, а мікропрограмне забезпечення зберігається у флеш-пам'яті на мікросхемі). Програмування може включати підключення мікроконтролера до спеціальної плати програмування, або може бути спосіб це зробити, поки він сидить у вашій фактичній платі. Плата взаємодіє з вашим ПК (сьогодні, наприклад, через USB), і ви використовуєте деякі інструменти: наприклад, IDE або інструменти командного рядка на хості.
  • Розгортайте річ: тепер, по суті, це електронний чорний ящик, який якимось чином контролює вологість ґрунту та вмикає воду, без інших входів чи виходів.

Дуже ранні комп'ютери загального призначення без оболонок мали певні засоби введення, як читання перфокарт. Але, звичайно, перфокарти потрібно було розрізнити: чи перфокарт дає комп'ютеру якусь особливу команду, чи це частина програми Fortran? Тож мали бути розроблені "мови контролю роботи", які є фактично командними рядками.

Перед перфокартами та мовами управління роботою програмістам довелося перемикати комутатори, щоб подати у машину бінарний код. Можливо, ви чули історії від старожилів, яким довелося "включити" послідовність інструкцій, щоб ініціювати завантажувальний запуск. Це робиться і сьогодні певним чином: досі існують пристрої, які мають перемички або DIP-перемикачі, і є деякі переваги перед ними порівняно з налаштуваннями в прошивці.


0

Перший комп’ютер, на який я застряг, був Siemens 305 в 1977 році, я вивчав FORTRAN IV. Він мав друкарську машинку для запуску команд та друку діагностичного повідомлення на папері, зчитувач перфокарт, зчитувач / записуючий планшет та принтер. Не варто забувати про 40 Мб знімного жорсткого диска, 16 дюйма або близько того. Тож він вже мав оболонку, а інтерфейс - друкарська машинка.


0

Я пам’ятаю, як запускався налагоджувач і текстовий редактор (DDT та emacs) як еквівалент командної оболонки ще в 1970-х. Отже, якщо ви запускаєте emacs в консольному режимі з будь-якою іншою програмою, виконаною через eshell, до налагоджувача, який виконує програму, ви матимете близький досвід.

Зауважте, що emacs має повне середовище lisp, тому крім хорошого редагування історії команд та декількох віртуальних терміналів, у вас вбудований дуже спроможний інструмент для макро- та сценаріїв.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.