İşletim sistemi kabuksuz olarak neye benziyor?


41

Bash veya command.com (Windows ME'ye kadar) veya CMD.EXE (sonraki sürümlerde) gibi bir kabuk (diğer şeylerin yanı sıra) kullanıcıdan gelen komutları kabul ettiği bir arabirim sağlar. Bir işletim sistemi kabuk çalıştırılmadan önce neye benziyor? İlk kabuk geliştirilmeden önce sistemler nasıl kullanıldı (örneğin, 1970'lerin başında UNIX)? Bir bilgisayar komutları bile kabul edemiyorsa (komut satırı yoktur), kullanıcı bununla nasıl etkileşime girebilir? Bu en temel arayüz nedir? Bu arayüzü bir terminal emülatöründe çalıştırabilir miyim veya bir kabuğun arkasına geçmenin yolu yok mu?



2
@Ramhound Elbette bir komut satırı olmadan bir sistem ile etkileşimde bulunabilirsiniz. Biri, bütün hafta boyunca çeşitli UI tasarım yaklaşımlarının haklarını savunabilir, ancak kutunun dışında bir komut satırı olmasına rağmen hem klasik Mac OS hem de Altair ile etkileşime geçmek kesinlikle mümkündü.
bir CVn

4
En temel arayüz muhtemelen PDP11 / 04 vb. Gibi bir anahtar paneli olacaktır
Tog

1
Satranç gibi bu bir görünüm raspberrypi.org/archives/4300
Nico Burns

1
Etrafta kimsenin göremediği bir ormanda düşen bir ağaca benziyor.
nathan hayfield

Yanıtlar:


35

Bir işletim sistemi kabuk çalıştırılmadan önce neye benziyor?

İşletim sistemine ve nasıl yapılandırdığınıza bağlı. Linux, bir metin modu konsolu, çerçeveli konsol veya bir seri bağlantı noktası olsun, bir konsol cihazına önyükleme metni yazmak üzere yapılandırılabilir. Aynı zamanda tamamen sessiz olacak şekilde yapılandırılabilir. Bazı işletim sistemleri / sistemler tanılama bilgilerini, sistemi geliştirici, hata ayıklama veya tanılama moduna sokarak erişilebilen geçici olmayan bir belleğe yazabilir. Birçok işletim sistemi, önyükleme ve tanılama bilgilerinin bir şekilde UART'a gönderilmesini destekler; bu, bir şekilde kullanıcıdan gizlenmiş olsa bile ünite üzerinde bulunabilir (google "DD-WRT'ye seri bağlantı noktası ekle" ve üreticilerin seri bağlantı noktalarını nerede sakladıkları ve örnekleri için onlara alabilirsiniz).

Bir işletim sisteminin harici bir ekrana sahip olması gerekmez - bu sadece işletim sistemine giden başka bir cihazdır.

İlk kabuk geliştirilmeden önce sistemler nasıl kullanıldı (örneğin, 1970'lerin başında UNIX)?

Temelde (ve çok şey bırakıyorsunuz ama bu size fikir edinmeli) - Programınızı, paneldeki anahtarları çevirerek veya bir kağıt-bant okuyucusu kullanarak yüklediniz (bu cihazlar doğrudan CPU müdahalesi olmadan belleğe yazacaktır) ve ardından başlatınız. CPU başka bir anahtarla. CPU bu programı çalıştıracak, çıktısını oluşturacak ve duracaktır. Bu etkileşimli işlemenin aksine toplu işlemdir. Farklı bir program çalıştırmak istemeniz durumunda bunu yapmanız gerekiyordu.

Bir bilgisayar komutları bile kabul edemiyorsa (komut satırı yoktur), kullanıcı bununla nasıl etkileşime girebilir?

Bu alanda uzman değilim ama Altair, IMSAI ve PDP-8 gibi eski, eski bilgisayarlarda ve bu işlemcilerin doğrudan CPU'yu kontrol eden ve CPU müdahalesi olmadan doğrudan bellek okuyabilen ve yazabilen ön panel anahtarları vardı.

Bu en temel arayüz nedir?

Çoğu modern CPU'nun aynı tür doğrudan işlemlere izin veren bir "JTAG portu" olmadığına inanıyorum. Uzun süredir çoğu bilgisayardan, bir işletim sistemine vermeden önce açıldığında sistemin kontrolünü alan ROM ya da bellenime sahip olması beklendiğini unutmayın. Burada, önyükleme öncesi yardımcı programları olabilir veya bu tür yardımcı programları yüklemek için minimum bir mekanizma olabilir. U-Boot gibi bazı boot yükleyicilere seri port üzerinden erişilebilir. Önyükleyiciler işletim sisteminin "arkasında" çalışmazlar, işletim sistemini yüklerler, el kontrolünü yaparlar ve sonra artık çalışmamaktadırlar.

Bu arayüzü bir terminal emülatöründe çalıştırabilir miyim veya bir kabuğun arkasına geçmenin yolu yok mu?

Hayır, bir JTAG arayüzüne ihtiyacınız var. Bu, elektronik dünyasına dalıyor ve GuruPlug'umun bir tane gelmesi dışında, GuruPlug'un panosundaki flaş çipini doğrudan programlayabilmemin haricinde, onun hakkında bir şey bilmediğimi itiraf ediyorum ; GuruPlug, onu geri yanıp "işlemci bağımsız" bir yol var.


4
JTAG arayüzü (özel bir kontrolör yardımıyla) normal çalışma modlarını atlayarak tüm bileşenlerin test arayüzlerine erişim sağlar. Açıklanan test fonksiyonuna bağlı olarak, anıları programlayabilir, giriş / çıkışı kontrol edebilir, CPU'yu başlatabilir / durdurabilir veya dahili kayıtları okuyabilirsiniz.
Chaos_99

23

Günümüzde yaygın olarak kullanıldığı için bir işletim sisteminin bir kabuk sağlaması gerekmez (kullanıcıdan etkileşimli komutları kabul edecek bir uygulama anlamına gelir), ancak böyle bir işletim sistemi gerçekten hiçbir şeye "benzemez" kullanıcı. Oliver Salzburg'un da belirttiği gibi, muhtemelen boş bir ekran gösterecekti (eğer ekran çıkışı desteği varsa). Örneğin, Linux çekirdeğinin önyükleme ve çekirdek başlatma işlemi sırasında tanısal çıktısını alın.

Kabuk, grafik bir kabuk, komut satırı yorumlayıcısı veya başka bir şey olsun, işletim sistemi tarafından sağlanan özellikleri okuma komutları, başlatma işlemleri, G / Ç yönlendirme ve benzeri işlemleri yapmak için kullanır.

Ancak, bu olanakları kullanan uygulama için hiçbir neden yoktur sahiptir olmak bir kabuk .

Eski günlerde, işletim sistemleri basit bir şekilde her uygulamanın sıfırdan yeniden yazması gereken "yararlı rutinler" in bir topluluğuydu ve bilgisayarlar esasen toplu işlem cihazlarıydı. Dosya, disk ve yazıcı G / Ç gibi şeyler muhtemelen şu anda işletim sistemi olarak bilinenler arasında toplanan ilkler arasındaydı, ardından süreç zamanlaması (1960'ların başındaki Apollo Rehberlik Bilgisayarının çok görevli bir bilgisayar olduğu dikkat çekiyordu)). Uygulamalar daha sonra programlama karmaşıklığını azaltan ve muhtemelen kod boyutunu veya yürütme süresini azaltmaya yardımcı olan bu tür şeyleri yapmak için kendi rutinlerini kullanmak yerine OS'yi arayabilir (çünkü bu sistem tesisleri daha sonra herkesin faydalanabileceği bir zamanda yoğun şekilde optimize edilebilir ve hata ayıklanabilir) . Bilgisayarlar gittikçe daha yaygın hale geldikçe, işletim sistemleri, kullanıcının bilgisayarla etkileşime girmesinin ve etkileşimli bir şekilde komut vermesinin bir yolu gibi, büyük ölçüde kullanıcı merkezli özellikler ekledi; grafik kabukları, sadece bu akıl yürütme çizgisinin bir uzantısıdır.

Ayrıca, uzun zaman önce değil (1980'lerin sonlarına kadar düşünün), herhangi bir sıradan işletim sisteminin yardımı olmadan, çıplak kişisel bilgisayar donanımında çalışmak için uygulamalar yazmak oldukça yaygındı. Bu, özellikle işletim sisteminin uygun hafızasını ve işlemesini engellemekten kaçındığı için oyunlar için özellikle faydalıydı, ancak başka örnekler de bulunduğundan eminim. Bu durumlarda, uygulama bir dereceye kadar kendi işletim sistemi idi ve sonuç olarak, bu uygulamanın sağladığı kullanıcı arayüzü kabuktu.


4
İşletim sistemi olmadan çıplak metal üzerinde çalışan programlar yazmak bugün çok yaygın - muhtemelen eskisinden daha yaygın. Bugünlerde içinde elektronik olan her şey bir mikrodenetleyiciye sahip. Otomobiller veya yönlendiriciler gibi bu gömülü sistemlerin bazıları işletim sistemlerine sahiptir, ancak termostatlar, çamaşır makineleri vb. Gibi basit şeyler genellikle yoktur.
Jeanne Pindar,

1
@ JeannePindar İyi nokta; Kişisel bilgisayarlar bağlamında demek istediğimi açıklığa kavuşturdum.
CVn

11

Erken bilgisayarların bugün kelimesini kullandığımız bir işletim sistemi yoktu. Donanımda uygulanan işlevleri doğrudan üzerinde çalışan tüm programlara maruz bıraktılar. Aynı anda üzerinde çalışan tek bir program vardı. Programın kendisi tüm görevleri kontrol etmek zorundaydı, bir işletim sistemi tarafından 'arka planda' hiçbir şey yapılmadı.

Ancak yine de kullanıcının bir program başlatması için bir giriş noktası vardı. Kelimeyi uzatırsanız, buna "kabuk" diyebilirsiniz. Ancak temelde, kullanıcının çalışacak programın ilk bitini girmesini bekleyen donanımdı. Basılı düğmeler, yanıp sönen düğmeler, bir anahtar panosuna bağlı teller, delikli kartlar, delikli film veya manyetik bant şeklinde olabilir. Belki daha önce yüklenen birçok program seçeneğinden bile seçim yapabilirler. Ancak, yanındaki bir düğmeye basarak parlayan ışıklar olarak görüntülenen bir listeden seçim yapmak bile bir 'kabuk' olarak kabul edilebilir.

Yani 'kabuk' tanımınız 'bir kullanıcıdan komutları kabul eden bir arayüz' ise, ondan önce zaman yoktu, en azından belli belirsiz bir bilgisayarı bile çağırabileceğiniz cihazlar için.

Giriş / çıkış perspektifine pek fazla odaklanmamasına rağmen , hesaplama tarihi hakkındaki oldukça iyi wikipedia sayfasını incelemek isteyebilirsiniz .


6

Muhtemelen boş bir ekran olacak.

Kabuk muhtemelen adlı kabuk o çekirdeği etrafında bir kabuk (çekirdek işletim sistemi olmak üzere) olduğu için. Yani, bir anlamda, ne olursa olsun arayüz, işletim sistemi için kullanıcı arayüzüdür.

Bir işletim sistemi sadece bilgisayarı kapatmaya olurdu tek işlevi vardı ve bu işlemi herhangi bir klavye girişi ve ardından çağıran bir program oluşturmak istiyorsanız, o zaman bu kabuk. Kullanıcıyla etkileşime giren bir şey inşa etmek için karmaşık bir komut satırı arabirimine gerek yoktur.



2

Üniversiteden sonra kullandığım ilk işletim sistemi (1981) Prime minibilgisayarında PRIMOS idi. Bu, zaman paylaşımlı bir işletim sistemi idi ve her biri bilgisayara bir RS232 kablosu ile bağlı bir terminal kullanan birçok kullanıcıyı destekledi. Bir kullanıcı adı ve şifre vererek terminale giriş yapmanız gerekiyordu. Terminal oturumunuz bir çeşit kabaydı. Dosyaları düzenleyebilir, derleyebilir, bugünlerde yaptığımız her şeyi çalıştırabilirsin. Tüm terminaller aynı dosyalama sistemine erişime sahipti. Büyük ölçüde, bu terminaller daktilolardan daha fazla değildi - WYSISWYG editörü yok, hatta emac bile bir rüyaydı.

İşletim sistemi şu anda olduğu gibi yapılandırıldı ve bir soğan derisi tabakası olarak hayal edilebildi. En içteki katman, donanım kontrolü, bellek erişimi gibi çok düşük düzeyde işlevselliğe sahipti. Dışa doğru gidiyorsa, dosya sistemi ve ardından kullanıcı katmanları eklenir. Programınızda bazı katmanlarla etkileşime girebileceksiniz, fakat en içteki olanlarla değil (böylece zaman paylaşımı veya gerçek donanım ile uğraşmazsınız - ışıklar vb.). Kabuğu olmayan bir bilgisayar bu iç katmanlardan birine benzeyebilir, bir sabit diske ve bir teyp okuyucusuna (gerçekten!) Erişebilir, ancak dosyalar veya kullanıcılar hakkında hiçbir şey bilmiyordu.

Eski bir bilgisayarı önyüklemek için, temel bir talimatlar setini yüklemelisiniz (bu, fiziksel anahtarların bilgisayarda ayarlanmış bir sırayla değiştirilmesini içerebilir). Bu dizi, manyetik bant okuyucunun çalışmasını sağlayacak ikinci bir küçük program başlatır. Sonra, teyp okuyucusundan daha karmaşık bir sistem yüklersiniz; bu da disk sürücüsünü devreye alabilir. Kabusuz bir işletim sistemini bu ilk yükleyicilerden biri gibi düşünebilirsiniz.

Günümüzde bilgisayarların benzer sekansları vardır, bu nedenle makineyi başlattığınızda, disklerini, ağ kartlarını, video kartını vb. Başlatan BIOS'u yükler, ardından BIOS sabit diskte belirli bir programı arar ve çalıştırır (Windows'ta). en azından). Unix benzer bir şey yapar, çok temel modüller ile başlayan ve oturum açma komut istemine gelinceye kadar onları temel alan çekirdeği aşamalı olarak kurar.


1

Tanım olarak işletim sistemi belirsizdir. Bir çekirdek mi? Çekirdek ve beraberindeki araçlar mı? Linux çekirdektir, ancak GNU / Linux, Linux çekirdeği ve GNU proje araçlarına dayalı bir işletim sistemidir. Shell, bu işletim sisteminin ayrılmaz bir parçasıdır.

Ancak, Linux bir kez "önyükleme" ile tamamlanıp bittiğinde, hangi programın çalıştırılacağını söylemeniz gerekir. O andan itibaren her şey o özel programın elinde. Varsayılan olarak bundan sonra initne yapacağını bilen ve sonunda sizi güzel bir GUI giriş ekranına getirebilecek olandır. Ancak bu şekilde olmak zorunda değildir. Böyle önyükleme yapabilirsin

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

Sonra program /bin/fancy"Merhaba dünya!" Yazacaktır. Bunun için kabuğa ihtiyacımız yok. Eğer tarafından sadece yeni bir süreç yumurtası başka bir program başlatmak istiyorsanız man 2 forkve man 2 execve, veya terminal cihazından okunan ve kullanıcının girişini kabul edin. Hala kabuk için gerek yok.

Benim görüşüme göre işletim sistemi kabuğu, kullanıcının girişini okuyabilen ve daha sonra başka programları başlatabilen bir programdır. Bunu düşünürseniz, neden böyle bir program yazmak istediğinizi oldukça açık.

Kullanıcının girişini etkileşimli olarak okumanıza gerek kalmasa bile, göreviniz için basit bir kabuk betiği yazmak daha uygundur. Bu durumda sadece kayıtlı kabuk komutlarının yorumlayıcısıdır. Programınızı başka bir dilin tercümanına da yazabilirsiniz.


1

Komut satırı kabukları veya grafiksel arayüzleri olmayan işletim sistemleri birçok başka "yüz" türüne sahiptir.

Gömülü sistemler işlerini, arabanızdaki motor yönetim sistemi (OBD2 arayüzü ve uygun bir terminal aracılığıyla bir şekilde elde edebileceğiniz) gibi herhangi bir kullanıcı arayüzü olmadan yapar. Veya dijital tuş takımları, topuzlar veya her neyse olabilir (düşünün: mikrodalga fırın, asansör veya modern bir ses sisteminin ön yüzü). Bunları bir kabuk şekli olarak görüp görmediğiniz elbette özneldir.

İşte bir hobi olarak, üzerinde kabuk olmadan yararlı bir bilgisayarı nasıl yapabileceğinizi gösteren üst düzey bir tarif:

  • Bir mikrodenetleyici için bir devre kartı oluşturun veya genel bir kart edinin.
  • Bir nem sensörü ve bir su vanası gibi bazı yararlı cihazları sürmek için bağlayın. Mikrodenetleyici, bu amaç için çevresel pimlere sahiptir: UART'ler, GPIO'lar ve benzeri.
  • Sensörü izlemek için yazılımı yazın ve toprağı sulayın.
  • Ürün yazılımını geliştirme araçları aracılığıyla yükleyin (Yani, herhangi bir şeyi yüklemek ve çalıştırmak için ana bilgisayarda hiçbir kabuk gerekmez ve ürün yazılımı çip üzerindeki flash bellekte saklanır). Programlama, mikrodenetleyicinin özel bir programlama kartına takılmasını içerebilir veya gerçek kartınızda otururken bunu yapmanın bir yolu olabilir. Kart PC'nize arayüz oluşturur (örneğin, bugünlerde USB üzerinden) ve bazı araçları kullanıyorsunuz: bir IDE gibi veya ana bilgisayardaki komut satırı araçları.
  • Şey dağıtın: temelde toprak nemi izleyen ve su girişini yapan, başka hiçbir giriş veya çıkış olmadan elektronik bir kara kutu.

Kabuksuz çok eski genel amaçlı bilgisayarlarda, delikli kartların okunması gibi bazı girdiler vardı. Ancak, tabii ki, delikli kartların ayırt edilmesi gerekiyordu: delikli bir kart bilgisayara özel bir komut veriyor mu, yoksa bir Fortran programının parçası mı? Bu nedenle, fiili komut satırları olan "iş kontrol dilleri" geliştirilmesi gerekiyordu.

Delikli kartlar ve iş kontrol dilleri öncesinde, programcıların makineye ikili kod beslemek için anahtarları değiştirmesi gerekiyordu. Bir önyükleme başlatmak için komut satırında "geçiş yapan" eski zamanlayıcılardan hikayeler duymuş olabilirsiniz. Bu hala bir şekilde bugün yapılır: bir atlama telleri veya DIP anahtarları olan cihazlar hala mevcuttur ve bunlar bellenimdeki ayarlara kıyasla bazı avantajlar vardır.


0

İlk bağlandığım bilgisayar 1977'de Siemens 305'tir, FORTRAN IV'ü öğreniyordum. Komutları çalıştırmak ve tanı iletisini kağıda yazdırmak için bir daktilo yazdı, bir delikli kart okuyucusu, delikli okuyucusu / yazıcısı ve bir yazıcı. 40 MB çıkarılabilir harddisk, 16 inç ya da öylesine unutma. Bu yüzden zaten bir kabuğu vardı ve arayüz daktilo idi.


0

1970'lerde bir hata ayıklayıcı ve metin editörü (DDT ve emacs) komut kabuğunun eşdeğeri olarak çalıştırıldığını hatırlıyorum. Bu nedenle, emacs komutunu eshell yoluyla yürütülen ve programı çalıştıran bir hata ayıklayıcısına çalıştıran başka bir programla çalıştırırsanız, yakın bir deneyime sahip olursunuz.

Emacs'in eksiksiz bir lisp ortamına sahip olduğunu unutmayın; bu nedenle iyi bir komut geçmişi düzenleme ve çoklu sanal terminallere ek olarak, yerleşik çok yetenekli bir makro ve komut dosyası özelliğine sahip olursunuz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.