bicok arkadasimin istegi uzerine Bir Irkçının Günlüğü adlı serinin adını değiştirdim.
Bugun ogreneceklerimiz:
Input/Output Sistemleri
Portlar
Kesmeler
DMA
PCI/PCIe
0x01 - I/O (Input/Output)
CPU'nun klavye, disk, ağ kartı ve harici donanımlarla iletişim kurma yöntemidir.
0x02 - Porta Dayalı I/O
x86da CPU bellekten ayri bi i/o adres alani kullanip donanimla iletisim kurabilir. `IN` ve `OUT` assembly talimatlari bu portlara okuma/yazma islemini gerceklestirir.
```
IN AL, 0x60 ; klavye kontrolcü 0x60 portunu okuyo burda
OUT 0X43, AL ; zamanlayici kontrol kaydina yazio
```
0x03 - Kesmeler (Interrupts)
```
q: acaba aq şu pythondaki keyboardinterrupt da burdami?
EVETTTTTT sonunda onun ne oldugunu ogreniceksin ezo
```
donanim CPU dikkatini gerektirdiğinde (ilgi manyağı aq ya) bi interrupt signal (kesme sinyali) gonderiyo. CPU mevcut isini durdurur(ofofof ilgiyi verdi ilgi orusbusuna), işlemcinin durumunu kaydeder ve bir Kesme Servisi Rutini'ne (Interrupt Service Routine - ISR) atlar.
ISR tamamlaninca CPU kesilen noktadan devam eder.
0x031 - Kesme Türleri
Donanım Kesmesi:
klavye tuşu basışı, ağ paketi gelişi gibi harici donanimdan gelir.
Yazılım Kesmesi:
INT denen talimatla kasitli olarak tetikleniyo. Sistem cagrilari x86da bu sekil tetikleniyo (INT 0x80). (yanlış değilsem burası pythondaki keyboardinterrupt).
Exception - Istisna:
Sıfıra bölme, geçersiz opcode gibi CPU tarafından tespit edilen hatalar.
0x04 - Kesme Tanımlayıcı Tablosu (Interrupt Description Table - IDT)
Her kesme numarasini (0-255) karşilik gelen ISR'ye eşleyen çekirdek tarafindan yonetilen bi tablodur.
0x05 - Direkt Bellek Erişimi (Direct Memory Access - DMA)
CPU müdahalesi olmadan büyük veri bloklarini RAM ile donanim arasinda aktarmasına olanak tanır. bir disk i/o işlemi gerçekleştirdiğinde disk kontrolcüsü veriyi doğrudan RAM'e yazar; bitince CPU'ya bir kesme gönderir. Bu sayede CPU büyük aktarımlar sırasında boşta beklemez.
0x06 - PCI/PCIe (Peripheral Component Interconnect / PCI Express):
GPU'lar, ağ kartları ve NVMe SSD'lerin anakarta takıldığı genişleme veri yoludur. PCIe, her şeride (lane) saniyede ~1-2 GB bant genişliği sağlayan seri bağlantı noktalarına (lanes) sahiptir. x16 bir yuvası olan bir GPU, 16 şeritli veri yolu bant genişliğinden yararlanır.
Bugun ogreneceklerimiz:
Input/Output Sistemleri
Portlar
Kesmeler
DMA
PCI/PCIe
0x01 - I/O (Input/Output)
CPU'nun klavye, disk, ağ kartı ve harici donanımlarla iletişim kurma yöntemidir.
0x02 - Porta Dayalı I/O
x86da CPU bellekten ayri bi i/o adres alani kullanip donanimla iletisim kurabilir. `IN` ve `OUT` assembly talimatlari bu portlara okuma/yazma islemini gerceklestirir.
```
IN AL, 0x60 ; klavye kontrolcü 0x60 portunu okuyo burda
OUT 0X43, AL ; zamanlayici kontrol kaydina yazio
```
0x03 - Kesmeler (Interrupts)
```
q: acaba aq şu pythondaki keyboardinterrupt da burdami?
EVETTTTTT sonunda onun ne oldugunu ogreniceksin ezo
```
donanim CPU dikkatini gerektirdiğinde (ilgi manyağı aq ya) bi interrupt signal (kesme sinyali) gonderiyo. CPU mevcut isini durdurur(ofofof ilgiyi verdi ilgi orusbusuna), işlemcinin durumunu kaydeder ve bir Kesme Servisi Rutini'ne (Interrupt Service Routine - ISR) atlar.
ISR tamamlaninca CPU kesilen noktadan devam eder.
0x031 - Kesme Türleri
Donanım Kesmesi:
klavye tuşu basışı, ağ paketi gelişi gibi harici donanimdan gelir.
Yazılım Kesmesi:
INT denen talimatla kasitli olarak tetikleniyo. Sistem cagrilari x86da bu sekil tetikleniyo (INT 0x80). (yanlış değilsem burası pythondaki keyboardinterrupt).
Exception - Istisna:
Sıfıra bölme, geçersiz opcode gibi CPU tarafından tespit edilen hatalar.
0x04 - Kesme Tanımlayıcı Tablosu (Interrupt Description Table - IDT)
Her kesme numarasini (0-255) karşilik gelen ISR'ye eşleyen çekirdek tarafindan yonetilen bi tablodur.
0x05 - Direkt Bellek Erişimi (Direct Memory Access - DMA)
CPU müdahalesi olmadan büyük veri bloklarini RAM ile donanim arasinda aktarmasına olanak tanır. bir disk i/o işlemi gerçekleştirdiğinde disk kontrolcüsü veriyi doğrudan RAM'e yazar; bitince CPU'ya bir kesme gönderir. Bu sayede CPU büyük aktarımlar sırasında boşta beklemez.
0x06 - PCI/PCIe (Peripheral Component Interconnect / PCI Express):
GPU'lar, ağ kartları ve NVMe SSD'lerin anakarta takıldığı genişleme veri yoludur. PCIe, her şeride (lane) saniyede ~1-2 GB bant genişliği sağlayan seri bağlantı noktalarına (lanes) sahiptir. x16 bir yuvası olan bir GPU, 16 şeritli veri yolu bant genişliğinden yararlanır.
Son düzenleme: