Powłoka taka jak bash lub command.com (do Windows ME) lub CMD.EXE (w późniejszych wersjach) zapewnia interfejs, który (między innymi) akceptuje polecenia od użytkownika. Jak wygląda system operacyjny przed uruchomieniem powłoki? Jak były używane systemy przed opracowaniem pierwszej powłoki (np. UNIX na początku lat 70.)? Jeśli komputer nie może nawet zaakceptować poleceń (nie ma wiersza poleceń), w jaki sposób użytkownik może z nim współdziałać? Co to jest ten najbardziej podstawowy interfejs? Czy mogę uruchomić ten interfejs w emulatorze terminali, czy też nie ma wyjścia za powłoką?
shell
operating-systems
history
44taka
źródło
źródło
Odpowiedzi:
Zależy od systemu operacyjnego i jego konfiguracji. Linux można skonfigurować do zapisywania tekstu rozruchowego na urządzeniu konsolowym, niezależnie od tego, czy jest to konsola trybu tekstowego, konsola bufora ramki, czy port szeregowy. Można go również skonfigurować tak, aby był idealnie cichy. Niektóre systemy / systemy operacyjne mogą zapisywać informacje diagnostyczne w nieulotnej pamięci, do której można uzyskać dostęp, wprowadzając system w tryb programisty, debugowania lub diagnostyczny. Wiele systemów operacyjnych obsługuje wysyłanie informacji rozruchowych i diagnostycznych do jakiejś formy UART, która może być w jakiś sposób dostępna na urządzeniu, nawet jeśli jest ukryta przed użytkownikiem (google „Dodaj port szeregowy do DD-WRT”, na przykład gdzie producenci ukrywają porty szeregowe i jak możesz się do nich dostać).
System operacyjny wcale nie musi mieć zewnętrznego wyświetlacza - to po prostu kolejne urządzenie do systemu operacyjnego.
Zasadniczo (i pomijając wiele, ale to powinno dać ci pomysł) - Załadowałeś swój program, albo przesuwając przełączniki na panelu, albo używając czytnika papieru (urządzenia te zapisałyby bezpośrednio w pamięci bez interwencji CPU), a następnie uruchomiły CPU z innym przełącznikiem. Procesor uruchomi ten program, wygeneruje dane wyjściowe i zatrzyma się. Jest to przetwarzanie wsadowe w przeciwieństwie do przetwarzania interaktywnego. Jeśli chcesz uruchomić inny program, musisz to zrobić ponownie.
Nie jestem ekspertem w tej dziedzinie, ale stare, stare komputery, takie jak Altair, IMSAI i PDP-8, i takie miały przełączniki na panelu przednim, które bezpośrednio kontrolowały procesor i mogły bezpośrednio odczytywać i zapisywać pamięć bez interwencji procesora.
Wierzę, że większość, jeśli nie wszystkie współczesne procesory mają „port JTAG”, który umożliwia ten sam rodzaj bezpośrednich operacji. Należy pamiętać, że od dłuższego czasu oczekuje się, że większość komputerów będzie mieć ROM lub oprogramowanie układowe, które przejmuje kontrolę nad systemem, gdy jest włączony, zanim przekaże go do systemu operacyjnego. Tutaj mogą istnieć narzędzia przed uruchomieniem, lub istnieje minimalny mechanizm ładowania takich narzędzi. Dostęp do niektórych programów ładujących, takich jak U-Boot, można uzyskać przez port szeregowy. Programy ładujące nie działają „za” systemem operacyjnym, ładują system operacyjny, kontrolują go, a następnie przestają działać.
Nie, potrzebujesz interfejsu JTAG. To nurkowanie w królestwie elektroniki i przyznaję, że niewiele o nim wiem, z wyjątkiem tego, że mój GuruPlug jest wyposażony w jeden i mogę bezpośrednio zaprogramować układ flash na płycie GuruPlug - czyli jeśli coś zabije bootloadera na GuruPlug, mam sposób „flashowania” z powrotem „niezależny od CPU”.
źródło
System operacyjny nie musi zapewniać powłoki, ponieważ termin ten jest dziś powszechnie używany (co oznacza aplikację, która akceptuje polecenia interaktywnie od użytkownika), ale taki system operacyjny tak naprawdę „nie wygląda” na nic użytkownik. Jak wspomina Oliver Salzburg, prawdopodobnie po prostu pokazałby pusty ekran (jeśli w ogóle ma obsługę wyświetlania), choć nie ma powodu, by musiał. Weźmy na przykład dane diagnostyczne jądra systemu Linux podczas uruchamiania i inicjalizacji jądra.
Powłoka, bez względu na to, czy jest powłoką graficzną, interpreterem wiersza poleceń, czy czymś innym, wykorzystuje funkcje zapewniane przez system operacyjny do wykonywania takich czynności, jak odczytywanie poleceń, uruchamianie procesów, przekierowywanie we / wy i tak dalej.
Jednak nie ma powodu, dla którego aplikacja korzystająca z tych funkcji musi być powłoką .
W dawnych czasach systemy operacyjne były po prostu zbiorem „przydatnych procedur”, które w przeciwnym razie każda aplikacja musiałaby przepisać od zera, a komputery były w zasadzie urządzeniami do przetwarzania wsadowego. Rzeczy, takie jak operacje we / wy plików, dysków i drukarek, były prawdopodobnie jednymi z pierwszych, które zostały zebrane w tak zwanym systemie operacyjnym, a następnie zaplanowano procesy (warto zauważyć, że komputer prowadzący Apollo z początku lat 60. był komputerem wielozadaniowym). Aplikacje mogłyby wtedy wywoływać system operacyjny zamiast korzystać z własnych procedur w celu wykonywania takich czynności, co zmniejszyło złożoność programowania i prawdopodobnie pomogło zmniejszyć rozmiar kodu lub czas wykonania (ponieważ te funkcje systemowe można by mocno zoptymalizować i debugować raz, po czym wszyscy skorzystaliby) . W miarę jak komputery stawały się coraz bardziej popularne, systemy operacyjne dodawały funkcje, które były w dużej mierze skoncentrowane na użytkowniku, takie jak sposób interakcji użytkownika z komputerem i wydawania poleceń w interaktywny sposób; powłoki graficzne są po prostu przedłużeniem tego rozumowania.
Nie tak dawno temu (nawet do późnych lat osiemdziesiątych) pisanie aplikacji, które działałyby na zwykłym komputerze osobistym, było dość powszechne, bez pomocy zwykłego systemu operacyjnego. Było to szczególnie przydatne w grach, ponieważ unikało pamięci i właściwego przetwarzania systemu operacyjnego, ale jestem pewien, że były też inne przykłady. W tych przypadkach do pewnego stopnia aplikacja była własnym systemem operacyjnym, w związku z czym interfejs użytkownika dostarczony przez tę aplikację był powłoką.
źródło
Wczesne komputery nie miały systemu operacyjnego w takim znaczeniu, w jakim używamy tego słowa dzisiaj. Udostępnili funkcje zaimplementowane w sprzęcie bezpośrednio dla dowolnego uruchomionego na nim programu. W tym samym czasie działał na nich tylko jeden program. Sam program musiał kontrolować wszystkie zadania, nic nie zostało zrobione „w tle” przez system operacyjny.
Ale wciąż istniał punkt wejścia dla użytkownika do uruchomienia programu. Jeśli przeciągniesz słowo, możesz nazwać to „powłoką”. Ale w zasadzie tylko sprzęt czekał, aż użytkownik wprowadzi pierwszy bit programu do uruchomienia. Czy to w postaci wciśniętych przycisków, migających przełączników, podłączonych przewodów na tablicy rozdzielczej, kart perforowanych, folii perforowanej lub taśmy magnetycznej. Może nawet wybiorą kilka wcześniej załadowanych opcji programu. Ale nawet wybranie z listy wyświetlanej jako świecące światła przez naciśnięcie przycisku obok niej można już uznać za „muszlę”.
Jeśli więc twoja definicja „powłoki” jest „interfejsem, który akceptuje polecenia użytkownika”, to nie było czasu przed tym, przynajmniej dla urządzeń, które można by choć trochę nazwać komputerem.
Możesz zajrzeć na całkiem dobrą stronę Wikipedii dotyczącą historii komputerów , chociaż nie skupia się ona zbytnio na perspektywie wejścia / wyjścia.
źródło
Prawdopodobnie będzie to pusty ekran.
Powłoka jest prawdopodobnie nazwany powłoki , ponieważ jest to powłoka wokół jądra (kernel jest system operacyjny). W pewnym sensie jest to interfejs użytkownika systemu operacyjnego, niezależnie od tego, który to jest interfejs.
Jeśli system operacyjny miał tylko jedną pojedynczą funkcję, co byłoby, aby wyłączyć komputer, a chcesz zbudować program, który akceptuje żadnej klawiatury i następnie wywołuje tę funkcję, a następnie , że jest powłoka. Nie ma potrzeby posiadania złożonego interfejsu wiersza poleceń, aby zbudować coś, co łączy się z użytkownikiem.
źródło
Z historycznego punktu widzenia zgaduję, że istniały karty Dziurkowane ( https://en.wikipedia.org/wiki/Punched_card ). Do interakcji z systemem komputerowym. Ale myślę, że jest to daleko w tyle za twoim pytaniem.
źródło
Pierwszym systemem operacyjnym, którego użyłem (1981 r.) Po studiach, był PRIMOS na najlepszym minikomputerze. Był to system operacyjny dzielący czas i obsługiwany przez wielu użytkowników, z których każdy korzystał z terminala podłączonego do komputera kablem RS232. Musisz zalogować się do terminala, podając nazwę użytkownika i hasło. Twoja sesja terminalowa była swego rodzaju powłoką. Możesz edytować pliki, kompilować, uruchamiać wszystkie te rzeczy, które robimy obecnie. Wszystkie terminale miały dostęp do tego samego systemu archiwizacji. W dużej mierze te terminale były jedynie maszynami do pisania - żaden redaktor WYSISWYG, nawet emacs był snem.
System operacyjny miał taką samą strukturę jak teraz i można go sobie wyobrazić jako warstwę skórki cebuli. Najbardziej wewnętrzna warstwa miała bardzo niski poziom funkcjonalności - jak kontrola sprzętu, dostęp do pamięci. Wychodząc na zewnątrz, dodawany byłby system plików, a następnie warstwy użytkownika. W swoim programie będziesz mógł wchodzić w interakcje z niektórymi warstwami, ale nie z najbardziej wewnętrznymi (więc nie będziesz w stanie zadzierać z podziałem czasu lub ze sprzętem - lampkami i tak dalej). Komputer bez powłoki byłby jak jedna z tych wewnętrznych warstw, mógłby mieć dostęp do dysku twardego i czytnika taśm (naprawdę!), Ale nie wiedziałby o plikach ani użytkownikach.
Aby uruchomić wczesny komputer, musisz załadować podstawowy zestaw instrukcji (może to obejmować przełączanie fizycznych przełączników w określonej sekwencji na komputerze). Ta sekwencja zainicjuje drugi mały program, który może umożliwić działanie czytnika taśm. Następnie za pomocą czytnika taśm można załadować bardziej złożony system, który może doprowadzić dysk do sieci. Można sobie wyobrazić system operacyjny bez powłoki jako jeden z tych programów ładujących.
W dzisiejszych czasach komputery mają podobne sekwencje, więc po uruchomieniu komputera ładuje system BIOS, który uruchamia dyski, karty sieciowe, kartę graficzną itp., A następnie system BIOS szuka określonego programu na dysku twardym i uruchamia go (w systemie Windows przynajmniej). Unix robi coś podobnego, stopniowo konfiguruje jądro, zaczynając od bardzo podstawowych modułów i budując je aż do wyświetlenia monitu logowania
źródło
System operacyjny jako definicja jest raczej niejednoznaczny. Czy to samo jądro? Czy to jądro i narzędzia towarzyszące? Linux jest jądrem, ale GNU / Linux to system operacyjny oparty na jądrze Linux i narzędziach projektu GNU. Shell jest integralną częścią takiego systemu operacyjnego.
Jednak po uruchomieniu systemu Linux i zakończeniu „rozruchu” musisz powiedzieć mu, który program ma zostać uruchomiony. Od tego momentu wszystko jest w rękach tego konkretnego programu. Domyślnie to on
init
wie, co dalej i może ostatecznie doprowadzić do ładnego ekranu logowania GUI. Ale nie musi tak być. Możesz uruchomić w ten sposóbNastępnie program
/bin/fancy
wypisze „Hello world!”. Nie potrzebujemy do tego powłoki. Jeśli chciałbyś zacząć jakiś inny program tylko ikra nowego procesu przezman 2 fork
iman 2 execve
, lub odczytać z urządzenia końcowego i zaakceptować wejście użytkownika. Nadal nie ma potrzeby używania powłoki.Moim zdaniem powłoka systemu operacyjnego to program, który potrafi odczytać dane wejściowe użytkownika, a następnie uruchomić inne programy. Jeśli się nad tym zastanowić, to dość oczywiste, dlaczego ktoś chciałby napisać taki program.
Nawet jeśli nie musisz interaktywnie czytać danych wejściowych użytkownika, wygodniej jest napisać prosty skrypt powłoki dla swojego zadania. W takim przypadku jest to tylko interpreter przechowywanych poleceń powłoki. Równie dobrze możesz napisać swój program w tłumaczu na inny język.
źródło
Systemy operacyjne bez powłok wiersza poleceń lub interfejsów graficznych mają wiele innych rodzajów „twarzy”.
Systemy wbudowane wykonują swoją pracę bez żadnego interfejsu użytkownika, takiego jak system zarządzania silnikiem w samochodzie (do którego można uzyskać dostęp poprzez interfejs OBD2 i odpowiedni terminal). Lub mogą mieć cyfrowe klawiatury, pokrętła lub cokolwiek innego (pomyśl: kuchenka mikrofalowa, winda lub panel czołowy nowoczesnego systemu dźwiękowego). Oczywiście, czy uważasz je za formę skorupy, jest subiektywne.
Oto przepis na wysokim poziomie, w jaki sposób, jako hobbysta, możesz zrobić użyteczny komputer bez powłoki:
Bardzo wczesne komputery ogólnego przeznaczenia bez powłok miały pewne możliwości wprowadzania danych, takie jak czytanie kart perforowanych. Ale oczywiście trzeba było rozróżnić dziurkowane karty: czy dziurkowana karta daje komputerowi jakieś specjalne polecenie, czy jest to część programu Fortran? Dlatego trzeba było opracować „języki kontroli zadań”, które są de facto wierszami poleceń.
Przed kartami perforowanymi i językami kontroli zadań programiści musieli przełączać przełączniki, aby wprowadzić kod binarny do maszyny. Być może słyszałeś historie od dawnych czasów, którzy musieli „przełączyć” sekwencję instrukcji, aby zainicjować bootstrap. Dzieje się tak do dziś, w pewnym sensie: nadal istnieją urządzenia, które mają zworki lub przełączniki DIP, i mają pewne zalety w porównaniu do ustawień w oprogramowaniu układowym.
źródło
Pierwszym komputerem, na którym utknąłem, był Siemens 305 w 1977 roku, uczyłem się FORTRAN IV. Miał maszynę do pisania, aby uruchamiać polecenia i drukować komunikat diagnostyczny na papierze, czytnik kart dziurkaczy, czytnik / pisarz kart perforowanych i drukarkę. Nie można zapomnieć o wymiennym dysku twardym o pojemności 40 MB, 16 cali. Więc miał już powłokę, a interfejsem była maszyna do pisania.
źródło
Pamiętam, jak w latach 70. uruchomiłem debugger i edytor tekstu (DDT i emacs) jako odpowiednik powłoki poleceń. Więc jeśli uruchamiasz emacsa w trybie konsoli z dowolnym innym programem wykonanym przez eshell do debuggera, który wykonuje program, będziesz miał bliskie doświadczenie.
Pamiętaj, że emacs ma pełne środowisko lisp, więc oprócz dobrej edycji historii poleceń i wielu wirtualnych terminali, masz wbudowane bardzo wydajne narzędzie do makr i skryptów.
źródło