Menu
Coddy logo textTech

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 olacak; ö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.

syscall nedir?

Bir syscall (sistem çağrısı), programınızdan işletim sistemine gönderilen bir istektir. OS'tan sizin için bir şey yapmasını isteme şeklinizdir.

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

GörevCPU bunu tek başına yapabilir mi?Sistem çağrısı gerekli mi?
İki sayıyı toplamaEvetHayır
Verileri kayıtlar arasında taşımaEvetHayır
Ekrana metin yazdırmaHayırEvet
Klavye girdisini okumaHayırEvet
Bir programdan çıkmaHayırEvet
Bir dosyayı açmaHayırEvet

Bir syscall nasıl çalışır:

  1. syscall numarasını rax içine yerleştirirsin (işletim sistemine ne istediğini bildirir)
  2. argümanları diğer register'lara (rdi, rsi, rdx vb.) yerleştirirsin
  3. syscall talimatını çalıştırırsın
  1. CPU, işletim sistemi çekirdeğine atlar
  2. İşletim sistemi isteği gerçekleştirir
  3. İşletim sistemi denetimi programınıza geri verir

Benzetme:

Bir syscall'ı devlet dairesini aramak gibi düşün:

AdımBenzetmeAssembly'de
1Hangi hizmete ihtiyacın olduğuna karar verSyscall numarasını seç (rax içine koy)
2Formları doldurArgümanları yazmaçlara koy
3Talebi göndersyscall komutunu çalıştır
4Devlet bunu 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ı: <strong>exit</strong>

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

mov rax, 60    ; syscall number for exit
mov rdi, 0     ; exit code (0 = success)
syscall        ; ask the OS to exit

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