Menu
CoddyTech

Syscall Nedir?

Coddy'nin Assembly Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 31 / 45.

mov ve lea gibi assembly talimatları yazdın. Bu talimatlar doğrudan CPU üzerinde çalışır. Peki CPU'nun kendi başına yapamayacağı bir şeyi yapman gerekirse ne olur; örneğin ekrana yazdırmak, klavyeden okumak veya bir programdan çıkmak?

Bu görevler için işletim sistemine (bu kursta Linux) ihtiyacın var.

Sistem çağrısı (syscall) nedir?

Bir syscall (sistem çağrısı), programınızın işletim sistemine gönderdiği bir istektir. İşletim sisteminden sizin için bir şey yapmasını bu şekilde istersiniz.

Neden sistem çağrılarına (syscall) ihtiyacınız var:

GörevCPU bunu tek başına yapabilir mi?Sistem çağrısı gerekir mi?
İki sayıyı toplamaEvetHayır
Verileri yazmaçlar arasında taşımaEvetHayır
Ekrana metin yazdırmaHayırEvet
Klavyeden girdi okumaHayırEvet
Bir programdan çıkmaHayırEvet
Bir dosyayı açmaHayırEvet

Bir sistem çağrısı nasıl çalışır:

  1. sistem çağrısı numarasını rax içine koyarsın (işletim sistemine ne istediğini bildirir)
  2. argümanları diğer yazmaçlara koyarsın (rdi, rsi, rdx, vb.)
  3. syscall komutunu çalıştırırsın
  1. CPU, işletim sistemi çekirdeğine atlar
  2. İşletim sistemi isteği yerine getirir
  3. İşletim sistemi denetimi programınıza geri verir

Analojisi:

Bir sistem çağrısını, bir devlet dairesini aramak gibi düşün:

AdımAnalojisiAssembly'de
1Hangi hizmete ihtiyacın olduğuna karar verSistem çağrısı numarasını seç (rax içine koy)
2Formları doldurArgümanları yazmaçlara koy
3İsteği göndersyscall komutunu çalıştır
4Devlet isteği işlerİşletim sistemi çekirdeği işi yapar
5Sonucunu geri alProgram devam eder

Bu kursta öğreneceğiniz sistem çağrıları:

Sistem çağrısıNumaraNe yaparBölüm
exit60Programı sonlandırır4. Bölüm
write1Ekrana metin yazdırır5. Bölüm

Şimdilik en önemli sistem çağrısı: exit

exit olmadan programınız sonsuza kadar çalışmaya devam eder veya çöker. Yazdığınız her program bir exit sistem çağrısıyla bitmelidir.

mov rax, 60    ; exit için syscall numarası
mov rdi, 0     ; çıkış kodu (0 = başarı)
syscall        ; OS'den çıkış yapmasını iste

Kendin dene

Bu ders bir kod alıştırması içermiyor.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temel Bilgiler bölümündeki tüm dersler

Kendi başına pratik yap: Assembly playground