Sistem Çağrıları

Linux'ta Sistem Çağrısı Nedir ve Örneklerle Nasıl Çalışır?

Linux'ta Sistem Çağrısı Nedir ve Örneklerle Nasıl Çalışır?

Sistem çağrısı, bir işlemin Linux çekirdeği ile iletişim kurmasını sağlayan bir işlevdir. Bu, bir bilgisayar programının işletim sisteminin çekirdeğinden bir tesis sipariş etmesinin programlı bir yoludur. Sistem çağrıları, işletim sisteminin kaynaklarını bir API (Uygulama Programlama Arayüzü) aracılığıyla kullanıcı programlarına gösterir. Sistem çağrıları yalnızca çekirdek çerçevesine erişebilir. Kaynaklara ihtiyaç duyan tüm hizmetler için sistem çağrıları gereklidir.

Linux çekirdeği, cihaza en düşük potansiyel aşamada yükleyen ve üzerinde çalışan tescilli bir yazılımdır. Görevi, klavye, disk sürücüsü ve ağ olaylarından farklı programların eşzamanlı yürütülmesi için zaman dilimleri sağlamaya kadar makinede olan her şeyi düzenlemektir. Yazılım ve donanımın ayrılması, koruma ve güvenilirliği artıran güvenli bir balon oluşturur. Ayrıcalıksız uygulamalar diğer programın deposuna erişemez ve biri başarısız olursa, çekirdek tüm sisteme zarar vermemesi için işlemi askıya alır.

Gofret İnce Sarıcı:

Linux sistem çağrıları, belirli programlarda çekirdeğe açıkça aktarılmaz. Hemen hemen tüm programlar temel C kitaplığını kullanır ve Linux sistem çağrıları üzerinde hafif ama gerekli bir sarmalayıcı sunar. Depo, özellik parametrelerinin doğru işlemci kayıtlarına çevrilmesini sağladıktan sonra, beraberindeki Linux makine çağrısını sağlar. Sarıcı sistem çağrısından veri aldığında, onu analiz eder ve programa net bir şekilde katkıda bulunur. Bir programdaki herhangi bir makine etkileşimli işlem, nihayetinde bir sistem çağrısına dönüştürülür. Öyleyse, bazılarına bir göz atalım. Linux sistemimizde kullanabileceğimiz uzun bir Linux sistem çağrıları listesi var. İşte bazı yaygın ve en çok kullanılan Linux sistem çağrılarının listesi.

Uygulamalı olmak için makalemizde C dilini kullanan bazı Linux sistem çağrılarını tartışalım.

Sistem Çağrısını Açın:

C dili kodumuzda belirteceğimiz belgeyi hızlı bir şekilde açmak için Linux dağıtımımızdaki “Open” sistem çağrısını kullanabiliriz. Önce komut terminalini başlatın. “Ctrl+Alt+T” kısayolunu kullanabilirsiniz. Diyelim ki bir "test" metin dosyanız var.txt ”ve içinde bazı içerikler var. Bu nedenle, başlangıçta yeni bir C tipi dosya adı “yeni” oluşturmanız gerekir.c” terminalde nano editör aracılığıyla. Bu nedenle, aşağıdaki basit nano talimatı deneyin.

$ nano yeni.c

Şimdi, Nano düzenleyici başlatıldı. Aşağıda gösterilen kodu içine yazın. Kodda iki dosya tanımlayıcımız var. Her iki dosya da açık sistem çağrısı kullanılarak açılabilir. İlk tanımlayıcı bir okuma çağrısı içerir ve ikincisi yazma işlevini içerir. İlk açık çağrı, “test” metin dosyasını açmaktır.robots.txt” ve içeriğini “fd” dosya tanımlayıcısına kaydetme. İkinci açık sistem çağrısı, "hedef" adlı bir dosya oluşturmaktır. "Hedef" belgesi, bir "fd1" dosya tanımlayıcısına geri ödendi. Yazma talimatı, arabellekteki veri baytlarını kopyalamak için kullanılır. Kodu kaydetmek için “Ctrl+S”ye basın ve dosyadan çıkmak için “Ctrl+X” kısayol tuşuna basın.

Bu C kodunu derlemek için gcc derleme talimatını çalıştırın.

$ gcc yeni.c

Basit “a” kullanarak kodu çalıştıralım.out ”sorgusu aşağıdaki gibi kabukta:

$ ./a.dışarı

Çıktı verileri "target" dosyasına iletildi. “Kedi” sorgusunu kullanarak “hedef” dosyasını kontrol edelim. Çıktı ekranı, “hedef” dosyasındaki 20 karakterlik verileri gösteriyor.

$ kedi hedefi

Exec Sistem Çağrısı:

Yürütme sistem çağrısı, şu anda işlenmekte olan bir dosyayı çalıştırmak için yayınlanıyor. Eski yürütülebilir dosya değiştirilir ve geçerli dosya, exec çağrıldığında çalıştırılır. Bir exec sistem çağrısı kullanarak, bunu yapmanın döngüdeki eski belgenin veya uygulamanın üzerine yenisini yazacağını varsayabiliriz. Tüm sürecin malzemesini geçersiz kılmak için yeni yazılım kullanılır. exec() çağrıldığında ifadede başlığı verilen belge, exec() sistem çağrısını () çalıştıran kullanıcı bilgileri bölümü için değiştirilir. Komut terminalini açın ve nano düzenleyiciyi kullanarak aşağıdaki gibi yeni bir C tipi dosya oluşturun:

$ nano deneyim.c

Editör açıldı. Aşağıdaki C dil kodunun tamamını içine yazın. İçerisinde bulunan üç ana kütüphane vardır. Bundan sonra, ana işlev somutlaştırıldı. Print ifadesi, "exp" dosyasının dize verilerini ve İşlem Kimliğini gösteriyor.c”. getpid() işlevi bu amaç için kullanılmıştır. Sonra içinde bazı değerler olan bir karakter tipi dizimiz var. Exec sistem çağrısı, dosya adını ve bir satır yukarıdaki diziyi argüman olarak almak için kullanıldı. Şimdi dosya “merhaba.c” işlenecek. Bundan sonra, şu ana kadar başka bir print ifadesi gelir, ancak asla yürütülmez. Bu dosyayı kaydetmek için "Ctrl+S" tuşlarına basın. Çıkmak için "Ctrl+X" tuşlarına basın.

Şimdi başka bir c dosyası oluşturma zamanı, “merhaba.c” nano düzenleyiciyi kullanarak. Bunu yapmak için kabukta aşağıdaki sorguyu kullanın.

$ nano merhaba.c

İçine aşağıdaki kodu yazın. Bu kod, ana işlevde iki yazdırma ifadesi içerir. İlki yalnızca içinde verilen bir dizeyi yazdırıyor ve ikincisi, şu anda kullanılan dosyanın işlem kimliğini alırken "merhaba" olan dizeyi yazdırıyor.c”.

Her iki dosyayı da gcc kullanarak birbiri ardına derleyelim.

$ gcc -o exp exp.c

$ gcc -o merhaba merhaba.c

exp çalıştırdığımızda.c dosyası, exp'den ilk yazdırma ifadesini çıkaracaktır.c dosyası ve merhabadan her iki baskı satırı.c dosyası.

$ ./tecrübe

Sonuç:

Linux sistem çağrılarının tüm konseptini ve bunların Linux sisteminizde nasıl kullanılabileceğini detaylandırdık. Ubuntu 20 kullandık.04 Bu konsepti uygularken.

Microsoft Sculpt Touch Wireless Mouse Review
I recently read about the Microsoft Sculpt Touch wireless mouse and decided to buy it. After using it for a while, I decided to share my experience wi...
AppyMouse On-screen Trackpad and Mouse Pointer for Windows Tablets
Tablet users often miss the mouse pointer, especially when they are habitual to using the laptops. The touchscreen Smartphones and tablets come with m...
Middle mouse button not working in Windows 10
The middle mouse button helps you scroll through long webpages and screens with a lot of data. If that stops, well you will end up using the keyboard ...