Klavye Yankı Sırasında CPU Neden Katılıyor?


9

Şu anda bir bilgisayar bilimi sınavı için çalışıyorum ve beni biraz güldüren bir kavramla karşılaştım.

Klavyeye bir anahtar yazıldığında, CPU'ya bir ASCII karakteri iletilir. Bu karakterin alınması üzerine, CPU aynı karakteri ekrana verir. Bu işleme yankılama denir. CPU'yu dahil etmek yerine, neden bu yankılama sürecini klavye / ekran ünitesinde yapmıyoruz, böylece CPU başka faydalı işler yapmakta özgürdür?

Şimdi, sezgisel olarak, bunun tanımlanmış bir klavye / ekran ünitesi olmadığı ve CPU'nun ekran ve klavye arasında ara bağlantı ağı aracılığıyla iletişim kurmaktan sorumlu olan cihaz olduğunu hissediyorum. Bununla birlikte, bir klavye / ekran ünitesinden bahsedildiği gerçeği, önemli bir konsepti kaçırdığım anlamına gelebilir. Durum böyle mi? CPU'yu neden yankı sürecine dahil ediyoruz?


Klavye girişi ve metin çıkışı nasıl çalışır? ilgi çekici olabilir. Günümüzde PC tarzı bilgisayarlar için tipik bir işletim sisteminde devam eden işleme yüksek düzeyde genel bir bakış sunmaktadır.
Gilles 'SO- kötü olmayı bırak'

Kapatmak için oy verebilseydim yapardım. Bu bilgisayar bilimi değil. StackOverflow veya bilgisayar donanımı ve düşük seviyeli programlamaya odaklanan başka bir yer için daha uygundur.
Miles Rout

Yanıtlar:


6

Bilgisayarın her karakteri yazıldıkça görmesini sağlamak, programcıların kullanıcı arabirimini daha dinamik hale getirmelerini sağlar.

Ciddi bir bilgisayar birkaç dikey buzdolabının ve kullanıcı girişinde çalıştırılan bilgisayarların bir seferde bir satır olması durumunda, terminal girişi sizin tanımladığınız şekilde ele alındı. Bir terminale yerel olarak (genellikle kağıt üzerinde) görüntülenen bir metin satırı yazdınız. Yalnızca ENTER veya RETURN tuşuna bastığınızda işlenecek ana bilgisayara veya mini bilgisayara gönderilen metin vardı.

Ancak o zaman bile, bilgisayarın kullanıcı girişini erken görmesine izin vermenin avantajı, zamanın mühendisleri tarafından gerçekleştirildi. Komutun ilk birkaç harfini yazdığınız ve geri kalanı doldurduğu komutun tamamlanması 1960'ların ortalarında icat edildi. Bu özellik, günümüzün bulunduğu yıllar boyunca kopyalandı ve geliştirildi, tüm modern UNIX kabuklarında ve Windows altında da mevcut.

CPU'nun her karakteri yazıldıkça görmesine izin vermek, kabukların aptal bir terminalin sağlayabileceğinin ötesinde komut satırı düzenleme ve geçmiş özellikleri sunmasına da izin verir. Bir tuş, daha önce yazdığınız komutların listesine geri dönmenize, birini seçmenize ve ardından yürütmek için RETURN düğmesine basmadan önce hafifçe düzenlemenize izin verebilir. Metin, komut satırları arasında kesilip yapıştırılabilir, çünkü terminal terminali olmadığında CPU önceki komutlara erişebilir. CPU, dosya sistemindeki dosyaların adlarına erişebildiğinden ve terminali olmadığından, dosya adları ve komutlar kısmi girdiye göre tamamlanabilir.


Bu mükemmel bir cevaptı, teşekkürler!
MMMMMCK

4

Bilgisayarın her karakteri yazıldıkça görmesine izin vermek, kullanıcı arayüzünü daha dinamik hale getirmek için GEREKLİ DEĞİLDİR.

Eski ASCII terminalleri genellikle bir klavye + ekran paketi veya klavye + baskı kafası (genellikle teletype olarak adlandırılır) olarak gelir. Böylece yerel yankılama mümkün oldu. Giriş tüm satırlar olarak gönderildi ve enter tuşu bunun içindi (buna satırbaşı da denir). Bu, terminaliniz yavaş telefon hatları üzerinden uzaktaki bir bilgisayara bağlandığında kullanışlıdır. Hala kullandığım 300 baud'luk bir modeme sahibim, bu da 300 bit / saniyeden biraz daha az. Ve bu benim kullandığım en yavaş değildi. Yankıyı beklemek istemediniz.

Kyles Jones, yankıyı bilgisayar tarafından kontrol etmeniz için birkaç iyi neden verdi. Tarih ve komut satırı düzenleme gibi. Ancak bu nedenler bile yerel yankı ile aşılabilir. Eski ascii ekran terminalim (1980'de satın alındı ​​ve kapasitörler üzgün bir durumda olması gerektiği için artık bir prize bağlanmaya cesaret edemiyorum) yaklaşık 12 ekrana sahipti (bir ekran 80 karakterden oluşan 24 satır) geçmişe sahipti ve yerel düzenleme olanakları: terminalin kendi yerel CPU'su vardı ... Aklınızdan geçen şeyin bu olduğundan emin değilim. Bunların hepsi bellekten geliyor, bu yüzden umarım gerçeğe yakındır, ancak kılavuzu aramak biraz zaman alacaktır.

Yani, temelde başka bir bilgisayara bağlı bir kullanıcı arayüzü bilgisayar vardı. Aslında, her zaman yankıyı kaldıracak bazı donanımlar olacaktır, bu yüzden sorunuz bir CPU veya daha basit bir donanım (sofistike çalışma yapamayan) ile bunu yapmak için gelişmiş donanımlara sahip olmanın uygun olup olmadığı daha fazladır. Terminalimin inşaatçıları bunun uygun olduğunu düşündü ve daha sonra standart olan bilgisayarla aptal iletişim protokolü ile sofistike bir terminal yaptı.

İlk olarak, CPU'dan geçmek için iyi bir nedenin, uygulamaların şimdi her türlü özellik ve farklı yazı tipine sahip pencereler kullanacağını ve bilgisayarın uygun esnekliği elde etmek için bilgisayarın gücünü gerektirdiğini, basit bir ekranın klavye sunamıyor.

Ama zaman içinde bunun yanlış olduğunu hatırladım (hafızayı hatırlamak zor). 1980'lerin başlarında, insanlar bitmap grafikleri geliştiriyorlardı (şu anda kullandığınız ekranın adı, LCD'den daha fazla CRT olmasına rağmen). Bazı çalışmalar, geleneksel terminal görünümünü izleyerek, birden fazla rüzgar ve yazı tipi, vb. İle çok karmaşık grafik terminaller yaptı. Bunlardan biri, BLEL , Cardelli'nin rezil yengeçleri gibi birçok deneyin konusu idi .

Bu, uygulamayı çalıştıran CPU'nun karakterleri görmediği anlamına gelmez. Ama buna gerek yoktu. Terminal, kendi başına çok karmaşık işler yapacak kadar güçlüydü.

Bilgisayar mimarisi, özellikle daha hızlı ağlar kullanıma sunuldukça, birçok çözümü test etmektedir. Terminalle ilgileniyorsunuz, ancak bazı noktalarda, bir sorun olan diskti (çoğunlukla fiyat, bence ve ayrıca yönetim). Bu yüzden bir süre disksiz iş istasyonu (yani kişisel bilgisayarlar) vardı. CPU, ekran, klavye ve RAM içerir, ancak disk içermezler. Disk alanı ağdaydı ve ağdan yeni dosya istediniz. Sanal bellek değişimi bile ağ üzerinden yapıldı.

Sonuç olarak: gelişmiş arayüz (örneğin), pencereler, çeşitli yazı tipleri, programlanabilir tuşlar, komut satırı düzenleme, giriş ve çıkış arasında senkronizasyon ve nelerin yapılmaması, gerçek bir işlem gücü gerektirir. Çok zayıf yeteneklerle bile, bazı donanıma ihtiyaç vardır. Daha sonra bu bilgi işlem gücü bilgisayara ve CPU'ya bağlanabilir veya ondan bağımsız olabilir ve az çok uzaktan bağlanabilir. Aynı şey diğer kaynaklar için de geçerli olabilir.

Ama her şey çok göreceli.

Son açıklama. Kullandığım ilk alfanümerik ekran terminali, 1974'te klavyesiyle birlikte gelen bir Tektronix'di. Ekran ve klavye o kadar sıkı bağlanmıştı ki, devreyi bir havya ile değiştirerek birisine değiştirmek için ödeme yapmak zorunda kaldık, böylece gerektiği gibi davranacaktı. Ama sonsuz hikaye akışımı durdurmalıyım.


Eski olan yine yenidir. Disksiz iş istasyonları geri döndü!
dfeuer

-1

İşlemci Nasıl olabilir değil yer? Bilgisayar, CPU dahil olmadan herhangi bir şeyin ekrana yazdırılıp yazdırılmayacağını nasıl bilebilir? Karakteri nereye yazdıracağını nasıl bilebilir? Hangi yazı tipinin kullanılacağını nasıl bilebilir? Bu yazı tipinin nasıl oluşturulacağını nasıl bilebilir?


Bu da benim düşüncem. Ne yazık ki, anlaşılması zor bir soru olan büyük bir hayranı olan bir profesörle "yetenekli" oldum, bu yüzden güvenli oynamanın kötü bir fikir olmadığını düşündüm.
MMMMMCK

4
Hmmpf, çocuklar bugünlerde. Teletipler bir zamanlar bir şeydi. ROM'da bir yazı tipi vardı (RAM'de belki de bazı gelişmiş modeller için). Bir satırı sakladılar ve yazdırdılar, sonra bilgisayara gönderdiler. Sonra bir ekran ile terminaller geldi ; bunlar, geçerli karakter konumunun bir hafızasını korudu ve imleci hareket ettirmek, metin niteliklerini ayarlamak vb. için kullanıcıdan veya CPU'dan gelen komutları anlayabilir.
Gilles 'SO- kötü olmayı durdurun'
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.