it-swarm.asia

Bilgisayarlar Nasıl Çalışır?

Bu neredeyse utanç verici bir soru ... Bilgisayar Bilimi (ve devam eden ikinci bir derece) derecem var. Yaklaşık beş yıldır tam zamanlı bir .NET Geliştiricisi olarak çalışıyorum. Genelde yaptığım işte yetkin görünürüm.

Ama Bilgisayarların Nasıl Çalıştığını Bilmiyorum!

Lütfen, bir saniye benimle yalvar. 'Bilgisayar Nasıl Çalışır?' İfadesinin kısa bir Google'ı çok ve çok sayıda sonuç verecektir, ancak aradığımı gerçekten yanıtlayan birini bulmakta zorlandım. Bunun çok büyük, çok büyük bir soru olduğunun farkındayım, bu yüzden gerçekten, bana bazı anahtar kelimeler veya yön verebiliyorsanız.

Bileşenler olduğunu biliyorum .... güç kaynağı, anakart, ram, CPU, vb ... ve yaptıklarının 'genel fikrini' alıyorum. Ama gerçekten .NET (veya Java veya C++) içinde Console.Readline() gibi bir kod satırından nasıl gittiğini anlamıyorum ve aslında şeyler yapın.

Tabii, belli belirsiz MSIL farkındayım (.NET durumunda) ve JIT derleyici ile biraz sihir olur ve yerel koda dönüşür (sanırım). Bana söylendi Java benzer ve C++ orta adımı keser.

Bazı anabilgisayar Meclisi yaptım, birkaç yıl önceydi. Bazı talimatlar ve bazı CPU kayıtları olduğunu hatırlıyorum ve kod yazdım .... ve sonra biraz sihir oldu .... ve programım işe yarayacaktı (ya da çökecek). Anladığım kadarıyla, bir 'Emulator' bir talimatı çağırdığınızda ne olacağını simüle eder ve CPU kayıtlarını günceller; ama bu talimatları nasıl yürütebilir?

Bu bir 'Bilgisayar' sorusu değil, bir Elektronik sorusuna dönüşüyor mu? Sanırım bunu anlamam için pratik bir neden yok, ama yapabilmeliyim gibi hissediyorum.

(Evet, küçük bir çocukla bir gün geçirdiğinizde olan şey budur. Ne kadar bilmediğinizi fark etmeniz için onlara yaklaşık 10 dakika ve 'Neden?' Sorusunun beş tekrarlanması gerekir)

59
Rob P.

Atomdan Elektrik'e, Transistörlere, Mantık Kapılarına, Entegre Devrelere (Chip/CPU) başlayarak alakalı olabilecek en düşük seviyeden başlayacağım (daha da düşük seviyeden başlayabilirim, ancak muhtemelen çok alakasız). ) ve Meclis'te bitirir (daha yüksek seviyelere aşina olduğunuzu varsayarım).

Başlangıçta

Atom

Atom elektron, proton ve nötrondan oluşan bir yapıdır (kendileri elementer parçacıklar ). Bilgisayarlar ve elektronik cihazlar için atom 'un en ilginç kısmı elektronlar çünkü elektron hareketlidir (yani taşınması daha zor olan proton ve nötronların aksine nispeten kolay hareket edebilir) ve bir atomun içinde tutulmadan kendi başına serbestçe yüzebilirler.

Genellikle, her atomun eşit sayıda proton ve elektronu vardır, buna "nötr" durum diyoruz. Olduğu gibi, bir atom ekstra elektron kaybetmek veya kazanmak mümkündür. Bu dengesiz durumda atomların sırasıyla "pozitif yüklü" atom (elektronlardan daha proton) ve "negatif yüklü" atom (protondan daha fazla elektron) olduğu söylenir.

Elektronlar inşa edilemez ve yıkılmazdır (kuantum mekaniğinde böyle değildir, ancak bu bizim amacımızla alakasızdır); yani bir atom bir elektronu kaybederse, yakındaki diğer bir atom ekstra elektron almak zorunda kaldı veya elektron serbest bir yüzer elektrona serbest bırakmak zorunda kaldı, aksine elektron yapılamaz olduğu için ekstra elektron kazanmak için atom yakındaki atomlardan veya serbest yüzen elektrondan ayırmak zorunda kaldı. Elektronların mekaniği, pozitif yüklü bir atomun yakınında negatif yüklü bir atom varsa, bazı elektronlar her iki atom da aynı yüke sahip olana kadar göç edecektir.

Elektrik

Elektrik çok fazla negatif yüklü atom bulunan bir alandan çok fazla pozitif yüklü atom bulunan bir alana elektron akışıdır. Bazı kimyasal reaksiyonlar, çok sayıda negatif yüklü atomlu bir düğümümüz ("anot" olarak adlandırılır) ve pozitif yüklü bir sürü atom içeren başka bir düğümümüz ("katot" olarak adlandırılır) bulunan bir durum yaratabilir. Bir tel ile karşılıklı yüklü iki düğümü bağlarsak, kütleler elektronlar anottan katoda akacaktır ve bu akış "elektrik akımı" olarak adlandırdığımız şeydir.

Tüm teller elektronları eşit derecede kolay iletemez, elektronlar "iletken" materyallerde "dirençli" materyallerden çok daha kolay akar. "İletken" bir malzeme düşük elektrik direncine (ör. Kablolardaki bakır teller) ve "dirençli" bir malzeme yüksek elektrik direncine (örn. Kauçuk kablo yalıtımı) sahiptir. Bazı ilginç malzemeler yarı iletkenler (örneğin silikonlar) olarak adlandırılır, çünkü dirençlerini kolayca değiştirebilirler, belirli koşullar altında bir yarı iletken iletken olarak işlev görebilir ve diğer koşullarda bir dirence dönüşebilir.

Elektrik her zaman malzemeden en az dirençle akmayı tercih eder, bu nedenle bir katot ve anot, biri çok yüksek dirençli ve diğeri çok düşük dirençli iki kablo ile bağlanırsa, elektronların çoğu düşük dirençli kablodan akar ve neredeyse hiçbiri yüksek dirençli malzemeden akmaz.

Orta Çağ

Anahtarlar ve Transistörler

Anahtarlar/Flip-Floplar normal ışık anahtarlarınız gibidir, elektrik akışını kesmek ve/veya geri yüklemek için iki tel parçası arasına bir anahtar yerleştirilebilir. Transistörler, ışık anahtarıyla tamamen aynı şekilde çalışır, ancak kabloları fiziksel olarak bağlamak ve ayırmak yerine, bir transistörün, temel düğümde elektrik olup olmadığına bağlı olarak direncini değiştirerek ve daha önce tahmin edebileceğiniz gibi elektrik akışını bağlar/bağlantısını keser. Transistörler yarı iletkenlerden yapılır, çünkü yarı iletkenleri elektrik akımlarını bağlamak veya ayırmak için bir direnç veya iletken haline getirebiliriz.

Bir yaygın transistör tipi olan NPN Bipolar Junction Transistor (BJT), üç düğüme sahiptir: "taban", "toplayıcı" ve "yayıcı". Bir NPN BJT'de, elektrik "emitör" düğümünden "kolektör" düğümü içine sadece "taban" düğümü şarj edildiğinde akabilir. Taban düğümü şarj edilmediğinde, pratik olarak hiçbir elektron içinden geçemez ve taban düğümü şarj edildiğinde, elektronlar verici ve toplayıcı arasında akabilir.

Bir transistörün davranışı

(Etkileşimli grafiklerle benden daha iyi açıklayabileceğinden, devam etmeden önce this okumanızı şiddetle tavsiye ederim)

Diyelim ki tabanında ve kollektöründe bir elektrik kaynağına bağlı bir transistör var ve kollektörün yanında bir Çıkış kablosu bağlıyoruz (bkz. Şekil 3, http://www.spsu.edu/cs/faculty)/bbrown/web_lectures/transistör / ).

Ne tabana ne de toplayıcıya elektrik uyguladığımızda, konuşacak elektrik olmadığı için hiç elektrik akamaz:

B   C  |  E   O
0   0  |  0   0

Toplayıcıya elektrik uyguladığımız halde tabana değil elektrik verdiğimizde, baz yüksek dirençli bir malzeme olduğu için elektrik yayıcıya akamaz, bu nedenle elektrik Çıkış teline kaçar:

B   C  |  E   O
0   1  |  0   1

Toplayıcıya değil, tabana elektrik uyguladığımızda, toplayıcı ve verici arasında herhangi bir şarj farkı olmadığından elektrik de akamaz:

B   C  |  E   O
1   0  |  0   0

Hem tabana hem de toplayıcıya elektrik uyguladığımızda, transistörden elektrik akıyor, ancak transistör artık Çıkış telinden daha düşük direnç gösterdiğinden, Çıkış telinden neredeyse hiç elektrik akmıyor:

B   C  |  E   O
1   1  |  1   O

Mantık kapıları

Bir transistörün (E1) vericisini başka bir transistörün (C2) toplayıcısına bağladıktan sonra ilk transistörün (O) tabanına yakın bir çıkış bağladığımızda (bkz. Şekil 4, http: // www) .spsu.edu/cs/fakülte/bbrown/web_lectures/transistors / ), o zaman ilginç bir şey olur. Ayrıca, ilk transistörün (C1) toplayıcısına her zaman elektrik uyguladığımızı ve diyelim ki sadece transistörlerin temel düğümleriyle (B1, B2) oynarız:

B1   B2   C1   E1/C2  |  E2   O
----------------------+----------
0    0    1    0      |  0    1
0    1    1    0      |  0    1
1    0    1    0      |  0    1
1    1    1    1      |  1    0

Tabloyu özetleyelim, böylece sadece B1, B2 ve O'yu görelim:

B1   B2  |  O
---------+-----
0    0   |  1
0    1   |  1
1    0   |  1
1    1   |  0

Lo ve hadi, eğer Boolean Logic ve/veya Logic Gates'e aşina iseniz, bunun tam olarak NAND geçidi olduğunu fark etmelisiniz. Boolean Mantık ve/veya Mantık Kapıları hakkında bilgi sahibiyseniz, bir NAND'ın (NOR'nun yanı sıra) işlevsel olarak tamamlanmış olduğunu da biliyor olabilirsiniz, yani yalnızca NAND kullanarak, diğer tüm mantığı oluşturabilirsiniz kapılar ve gerçeğin geri kalanı. Başka bir deyişle, tek başına NAND kapılarını kullanarak tüm bir bilgisayar çipini tasarlayabilirsiniz.

Aslında, çoğu CPU, NAND, NOR, AND, OR, vb. Bir kombinasyon kullanmaktan daha ucuz olduğu için NAND kullanılarak tasarlanır (veya eskiden mi kullanılır?).

Diğer boole operatörlerini NAND'den türetmek

Ben tüm boolean operatörleri, sadece NOT ve AND kapısı nasıl yapılacağını tarif olmaz, gerisini başka bir yerde bulabilirsiniz.

Bir NAND operatörü verildiğinde, bir NOT geçidi oluşturabiliriz:

Given one input B
O = NAND(B, B)
Output O

Bir NAND ve NOT operatörü verildiğinde, bir AND geçidi oluşturabiliriz:

Given two inputs B1, B2
C = NAND(B1, B2)
O = NOT(C) // or NAND(C,C)
Output O

Diğer mantık kapılarını benzer şekilde inşa edebiliriz. NAND geçidi işlevsel olarak tamamlandı olduğundan, 2'den fazla giriş ve 1'den fazla çıkış ile mantık kapıları oluşturmak da mümkündür, bu tür mantık kapılarının nasıl oluşturulacağını tartışmayacağım.

Aydınlanma Çağı

Boolean Gates'ten Turing Makinesi Yapımı

CPU, Turing Makinesinin daha karmaşık bir versiyonudur. CPU kayıtları Turing Machine'nin dahili durumudur ve RAM bir Turing Machine teypidir.

Bir Turing Makinesi (CPU) üç şey yapabilir:

  • kasetten 0 veya 1 okuyun (RAM'den bir bellek hücresi okuyun)
  • dahili durumunu değiştirme (kayıtlarını değiştirme)
  • sola veya sağa hareket et (RAM'den çoklu konumu oku)
  • kasete 0 veya 1 yazın (RAM'e bir bellek hücresine yazın)

Amacımız için, birleştirici mantık kullanarak Wolfram'ın 2 durumlu 3 sembollü Turing Makinesi inşa ediyoruz (modern CPU'lar mikro kod kullanır, ancak amacımız için gerekenden daha karmaşıktır).

Wolfram'ın (2,3) Turing Makinesinin durum tablosu aşağıdaki gibidir:

    A       B
0   P1,R,B  P2,L,A
1   P2,L,A  P2,R,B
2   P1,L,A  P0,R,A

Yukarıdaki durum tablosunu bir doğruluk tablosu olarak yeniden kodlamak istiyoruz:

Let I1,I2 be the input from the tape reader (0 = (0,0), 1 = (0,1), 2 = (1,0))
Let O1,O2 be the tape writer (symbol encoding same as I1,I2)
Let M be connected to the machine's motor (0 = move left, 1 = move right)
Let R be the machine's internal state (A = 0, B = 1)
(R(t) is the machine's internal state at timestep t, R(t+1) at timestep t+1)
(Note that we used two input and two outputs since this is a 3-symbol Turing machine.)

      R  0          1
I1,I2
(0,0)    (0,1),1,1  (1,0),0,0
(0,1)    (1,0),0,0  (1,0),1,1
(1,0)    (0,1),0,0  (0,0),1,0

The truth table for the state table above:

I1  I2  R(t) | O1  O2  M   R(t+1)
-------------+--------------------
0   0   0    | 0   1   1   1
0   0   1    | 1   0   0   0
0   1   0    | 1   0   0   0
0   1   1    | 1   0   1   1
1   0   0    | 0   1   0   0
1   0   1    | 0   0   1   0

Gerçekten böyle bir mantık kapısı inşa etmeyeceğim (SE'de nasıl çizileceğinden emin değilim ve muhtemelen oldukça büyük olacak), ancak NAND geçidinin işlevsel olarak tamamlandığını, o zaman bu doğruluk tablosunu uygulayacak bir dizi NAND kapısı bulmanın bir yolu var.

Turing Machine'in önemli bir özelliği, yalnızca sabit durum tablosu olan bir Turing makinesi kullanarak bir saklanan program bilgisayarı öykünmesinin mümkün olmasıdır. Bu nedenle, herhangi bir Universal Turing Makinesi, talimatını dahili durum tablosuna sabit kodlamak yerine programını Banttan (RAM) okuyabilir. Başka bir deyişle, (2,3) Turing Makinemiz mantık kapısı uygulamasında (donanım olarak) sabit kodlanmak yerine I1, I2 pinlerinden (yazılım olarak) talimatlarını okuyabilir.

Microcodes

Modern CPU'ların artan karmaşıklığı nedeniyle, tüm CPU'yu tasarlamak için kombinatoryal mantığı tek başına kullanmak zorlaşır. Modern CPU genellikle mikrokodlar öğretiminin bir tercümanı olarak tasarlanmıştır; bir mikrokod, gerçek makine kodunu yorumlamak için CPU tarafından kullanılan küçük bir programdır. Bu mikrokod yorumlayıcının kendisi genellikle kombinatoryal mantık kullanılarak tasarlanmıştır.

Kayıt, Önbellek ve RAM

Yukarıda bir şey unuttuk. Bir şeyi nasıl hatırlarız? Kaseti ve RAM'i nasıl uygularız? Cevap, Kapasitör adı verilen elektronik bir bileşendir. Bir kondansatör şarj edilebilir bir batarya gibidir, eğer bir kondansatör şarj edilirse ekstra elektronları tutacaktır ve elektronları da devreye geri döndürebilir.

Bir kondansatöre yazmak için kondansatörü elektronla doldururuz (yazma 1) veya boş olana kadar kondansatördeki tüm elektronları boşaltırız (yazma 0). Bir kapasitörün değerini okumak için onu deşarj etmeye çalışırız. Deşarj etmeye çalıştığımızda, elektrik akışı olmazsa, kapasitör boştur (0'ı okuyun), ancak elektrik algılarsak, kapasitör şarj edilmelidir (1'i okuyun). Bir kondansatörün okunmasının elektron deposunu boşalttığını fark edebilirsiniz, modern RAM'lerde kondansatörü periyodik olarak şarj etme devresi vardır, böylece elektrik olduğu sürece hafızalarını koruyabilirler.

Bir CPU'da kullanılan birden fazla kapasitör türü vardır, CPU kayıtları ve daha yüksek seviyedeki CPU önbellekleri, aslında transistörlerden yapılmış çok yüksek hızlı "kapasitörler" kullanılarak yapılır (bu nedenle okuma/yazma için neredeyse hiç "gecikme" yoktur bunlara), bunlar statik RAM (SRAM) olarak adlandırılır; ana bellek RAM daha düşük güç, ancak daha yavaş ve çok daha ucuz kapasitörler kullanılarak yapılırken bunlara Dinamik RAM (DRAM) denir.

Saat

Bir CPU'nun çok önemli bir bileşeni saattir. Saat, işlemeyi senkronize etmek için düzenli olarak "keneler" bileşenidir. Bir saat tipik olarak iyi bilinen ve nispeten sabit salınım periyoduna sahip bir kuvars veya başka malzemeler içerir ve saat devresi, zaman salınımını korumak için bu salınımı korur ve ölçer.

CPU işlemleri yapılır arasında saat keneleri ve okuma/yazma işlemleri yapılır in tüm bileşenlerin eşzamanlı olarak hareket etmesini ve aradayken birbirine geçmemesini sağlamak için keneler devletler. (2,3) Turing Makinemizde arasında saat, girişten çıkışı (I1, I2, R (t)) hesaplamak için mantık kapılarından elektrik geçişini yapar; ve in saat keneler, kaset yazarı kasete O1, O2 yazacak, motor M değerine bağlı olarak hareket edecek ve dahili kayıt R ( t + 1), teyp okuyucusu mevcut bandı okuyacak ve I1, I2'ye şarj edecektir ve dahili kayıt tekrar R (t) 'ye geri döner.

Çevre Birimleri ile Konuşma

(2,3) Turing Makinesinin motoruyla nasıl etkileşime girdiğine dikkat edin. Bu, CPU'nun gelişigüzel bir donanımla nasıl arayüz kurabileceğinin çok basitleştirilmiş bir görünümüdür. İsteğe bağlı donanım girişler/çıkışlar için belirli bir kabloyu dinleyebilir veya yazabilir. (2,3) Turing Makinesi için, motorla olan arayüzü, motora saat yönünde veya saat yönünün tersine dönmesini bildiren tek bir teldir.

Bu makinede söylenmeyen şey, Motorun ne zaman çalışmaya başlanacağını ve durduğunu bilmek için Makinenin dahili "saati" ile senkronize çalışan başka bir "saat" olması gerektiğidir, bu da bu senkron) bir örnektir veri iletimi . Yaygın olarak kullanılan diğer alternatif, eşzamansız iletim, CPU ve eşzamansız cihaz arasındaki senkronizasyon noktalarını iletmek için kesme hattı adı verilen başka bir kablo kullanır.

Dijital çağ

Makine kodu ve Montajı

Montaj dili, makine kodları için okunabilir bir anımsatıcıdır. En basit durumda, Montaj ile makine kodu arasında bire bir eşleme vardır; modern Montaj dillerinde bazı talimatlar birden fazla opcode eşlenebilir.

Programlama dili

Hepimiz buna aşinayız değil mi?


Vay be, sonunda bitti, tüm bunları sadece 4 saatte yazdım, bu yüzden bir yerde bir hata olduğuna eminim (öncelikle bir mühendisim, elektrik mühendisi veya fizikçi değilim, bu yüzden açıkça yanlış olan birkaç şey olabilir). Lütfen bir hata bulduysanız, bir @yell vermekte veya temsilciniz varsa veya tamamlayıcı bir cevap oluşturursanız kendiniz düzeltmekten çekinmeyin.

139
Lie Ryan

12 Adımda Nand'dan Tetris'e

Bunun sizin için kesinlikle mükemmel olacağını düşünüyorum:

12 Adımda Nand'dan Tetris'e

12
Darknight

Montaj yaptıysanız, anlamanız gereken sadece iki veya üç katman kaldı:

  • Mantık kapıları , mantık hareketli elektronlar aracılığıyla nasıl uygulanır - burada bir elektronik soru haline gelir
  • CPU ve sistem tasarımı, mantık kapılarının bir CPU oluşturmak için nasıl oluşturulduğu ve RAM ve çevre birimleri ile bağlantılı) Modern CPU'lar son derece karmaşıktır, ancak şeylerin nasıl çalıştığını anlama arzunuz için Z8 gibi klasik basit bir CPU'ya bakmak için yeterli olmalıdır.
  • Microcode , Montaj talimatları bu şekilde yorumlanır ve kayıtların ve mantık devrelerinin donanım düzeyinde eylemlerine dönüştürülür.

Sonuncusu (Mikrokod) benim için "klik" kılan şeydi, çünkü elektronik ve kod arasındaki boşluğu doldurdu.

10

Ne sormak istediğinizi tam olarak açıklayan bir CS lisans ders müfredatı örneği bulunabilir burada (IDC.AC.IL course CS101) . Buna dayanır MIT Basın kitabı: " Hesaplama Sistemlerinin Unsurları: İlk İlkelerden Modern Bir Bilgisayar Kurmak ".

7
littleadv

Bu soruyu tam olarak cevaplamak bütün bir kitabı alacaktı. Neyse ki birisi bu kitabı zaten yazmış. Adı Kod: Bilgisayar Donanımı ve Yazılımının Gizli Dili Charles Petzold. Son derece bilgilendirici ve çok eğlenceli bir okuma.

7
Bill the Lizard

Charles Petzold tarafından tavsiye Kod . Kitap hem bir tarih dersi hem de bir bilgisayarın nasıl oluşturulacağına dair teknik bir genel bakış. Basit telgraf anahtarlarını açıklamakla başlayan kitap, transistörlerin nasıl çalıştığını, daha sonra mantık kapılarına, programlanabilir bilgisayara, daha karmaşık şeylere nasıl olduğunu gösterir. Ayrıca çok iyi yazılmış ve muhtemelen yeterli merak olan herkes tarafından kavranabilir.

4
Doug T.

Bilmeniz gerekenler hakkında yeterli bir anlayış kazanmak için bilmeniz gereken her şeyi listelemek çok zor (ve uzun!) Olacak. Aslında tüm bu soruları cevaplayan ünlü bir kitap Andrew Tanenbaum'dan: Yapısal Bilgisayar Organizasyon .

Bu kitap aslında sizi masanızdaki fiziksel bilgisayardan mantık kapılarına ve boole cebirine kadar götürür, sonra böyle bir sistemde her şeyin gerçekte nasıl gerçekleştiğini size rehberlik edecek örnek bir mimari gösterir.

(Bir not: ~ 800 sayfa olduğu için çok pahalı. Muhtemelen sadece ikinci el bir sürüm veya daha eski bir sürüm elde etmek iyidir. Kavramlar değişmedi.)

3
Deckard

Bunu söylemek ve sanırım sormak için çok fazla top gerekiyor.

Kod hemen hemen daha karmaşık ve daha düşük seviyeli koda indirgenir. Aşağı ve Push kayıtları ile Montaj seviyesine kadar kod ..

Sonra donanım bu kodu alır ve ona göre hareket eder. Çoğu zaman donanımın aslında bir şeylerin nasıl yapılacağı hakkında kendi talimatları olacaktır. Bu nedenle, bir kaydın (bellek konumu) 1 veya 2 gibi bir değer aldığı herhangi bir Push gibi basit bir talimat olabilir.

Bu kesinlikle bir bilgisayar sorusu. Ve ayrıca bir programlama. Bazı programcılar, kodunuzu alacak ve çok düşük bir düzeyde de olsa bir şey yapmasını sağlayacak donanımı programlar. Aynı zamanda elektronik bir soru.

2
Ross

Birinin donanımı öğrenmeden CS'de bir dersi tamamlayabileceğini şaşırtıcı bulsam da, sanırım tamamen bir dersin mühendislik ve uygulama detaylarından ziyade sadece bir matematik dalı olarak teoriye odaklanabileceğini düşünüyorum. Saygıdeğer SICP dersler (1980'lerde verildiği gibi) böyle görünüyordu.

Yirmi yıl önce CS kursumda, ilk yıl içinde Bilgisayarlar: Mantıktan Mimariye 'ın daha önceki bir sürümü gerekiyordu.
Böyle bir şey boşlukları doldurmalı.

Alternatif olarak, MIT Open Courseware yardımcı olacak bir şeye sahip olmalıdır.

1
njd

Cihazlar var.

Sonra bu cihazlarla etkileşime giren aygıt sürücüleri var. Kısmen C'de, kısmen Meclis'te yazılmıştır.

İşletim sistemi, gerçek donanımla iletişim kurmak için bir uçtaki uygulama yazılımı ve diğer uçtaki aygıt sürücüleri ile etkileşime girer.

Gerçekten ilgileniyorsanız neden daha fazla bilgi edinmek için bir Linux çekirdeği korsanlığı yapmıyorsunuz?

1
Fanatic23

İşlerin özünde bu bir elektronik sorudur, ancak bunun temelleri herhangi bir CS derecesi için anket kursunda ele alınmış olmalıdır. Tüm donanım, bileşen düzeyinde programlanmış kapılara dayanır. Bunlar en temel mantıksal işlemlerdir: NOT, AND, OR, XOR, NAND, NOR. Her kapı belirli bir işleve sahiptir:

DEĞIL geçidi bir giriş değeri alır ve bir çıkış değeri üretir, 0 veya 1 alır ve tersini verir.

VE geçidi iki giriş değeri alır ve bir çıkış değeri üretir, 0 ve 1'in herhangi bir kombinasyonunu alır ve iki dışındaki herhangi bir kombinasyon için 0 çıkışını alır. 1 verir.

VEYA geçidi AND geçidine çok benzer, ancak 0 ve 1'in her birleşimi için 1 üretecektir, 0.

XOR geçidi yine hem AND hem de OR gates'e benzer), ancak her iki giriş de 0 üretecektir aynı ve her iki giriş farklı olduğunda 1.

NAND geçidi AND geçidinin mantıksal zıttıdır ve VEYA geçidi OR geçidinin mantıksal zıttı).

Başka bir deyişle, donanım düzeyinde, her şey ikili mantıksal ifadelerin en temeline iner. Diğer her şey, bu son katmana ulaşıncaya kadar daha yüksek bir programlama seviyesinden daha düşük bir programlamaya geçiştir.

1
MaQleod

Bir programı makine talimatlarında üst düzey bir dilde dönüştürme bölümü için, derleyici kitaplarının faturayı doldurması gerekir. Örneğin ejderha kitabı .

"Talimatlar nasıl yürütülür?" Bilgisayar Organizasyonu ve Tasarımı: Donanım/Yazılım Arayüzü faturayı doldurmalıdır.

1
AProgrammer