Sistem çağrısı, bir kullanıcı programının işletim sistemiyle arayüz oluşturmasının bir yoludur. Program çeşitli hizmetler talep eder ve işletim sistemi, isteği karşılamak için bir dizi sistem çağrısını başlatarak yanıt verir. Bir sistem çağrısı, montaj dilinde veya aşağıdaki gibi üst düzey bir dilde yazılabilir: C veya Pascal'ın . Sistem çağrıları, üst düzey bir dil kullanıldığında işletim sisteminin doğrudan çağırabileceği önceden tanımlanmış işlevlerdir.
Bu yazıda işletim sistemindeki sistem çağrılarını öğrenecek, türlerini ve daha birçok şeyi tartışacaksınız.
Sistem Çağrısı Nedir?
Sistem çağrısı, bir bilgisayar programının, üzerinde çalıştığı işletim sisteminin çekirdeğinden bir hizmet istemesi için kullanılan bir yöntemdir. Sistem çağrısı, programlar aracılığıyla işletim sistemiyle etkileşim kurmanın bir yöntemidir. Sistem çağrısı, bilgisayar yazılımından işletim sisteminin çekirdeğine yapılan bir istektir.
Uygulama Programı Arayüzü (API) işletim sisteminin işlevlerini kullanıcı programlarına bağlar. İşletim sistemi ile süreç arasında bir bağlantı görevi görerek kullanıcı düzeyindeki programların işletim sistemi hizmetlerini talep etmesine olanak tanır. Çekirdek sistemine yalnızca sistem çağrıları kullanılarak erişilebilir. Kaynakları kullanan tüm programlar için sistem çağrıları gereklidir.
Sistem çağrıları nasıl yapılır?
Bir bilgisayar yazılımı işletim sisteminin çekirdeğine erişmesi gerektiğinde sistem çağrısı yapar. Sistem çağrısı, işletim sisteminin hizmetlerini kullanıcı programlarına sunmak için bir API kullanır. Çekirdek sistemine erişmenin tek yöntemidir. Yürütmek için kaynak gerektiren tüm programlar veya işlemler, işletim sistemi ile kullanıcı programları arasında bir arayüz görevi gördüklerinden sistem çağrılarını kullanmalıdır.
Aşağıda bir sistem çağrısının bir kullanıcı işlevinden nasıl farklılaştığına dair bazı örnekler verilmiştir.
c programlama örnek programlar
- Bir sistem çağrısı işlevi, eşzamansız işlemeyi yürütmek için çekirdek işlemleri oluşturabilir ve kullanabilir.
- Bir sistem çağrısı standart bir alt programdan daha fazla yetkiye sahiptir. Çekirdek koruma etki alanında çekirdek modu ayrıcalığına sahip bir sistem çağrısı yürütülür.
- Sistem çağrılarının, paylaşılan kitaplıkları veya çekirdek koruma etki alanında bulunmayan herhangi bir simgeyi kullanmasına izin verilmez.
- Sistem çağrılarının kodu ve verileri global çekirdek belleğinde saklanır.
İşletim Sisteminde neden sistem çağrılarına ihtiyacınız var?
İşletim sisteminde sistem çağrılarına ihtiyaç duymanız gereken çeşitli durumlar vardır. Aşağıdaki durumlar şunlardır:
- Bir dosya sistemi bir dosya oluşturmak veya silmek istediğinde bu gereklidir.
- Ağ bağlantıları, sistem çağrılarının veri paketlerini gönderip almasını gerektirir.
- Bir dosyayı okumak veya yazmak istiyorsanız sistem çağrıları yapmanız gerekir.
- Yazıcı, tarayıcı gibi donanım aygıtlarına erişmek istiyorsanız sistem çağrısına ihtiyacınız vardır.
- Sistem çağrıları yeni süreçleri oluşturmak ve yönetmek için kullanılır.
Sistem Çağrıları Nasıl Çalışır?
Uygulamalar, kullanıcı alanı olarak bilinen bir bellek alanında çalışır. Bir sistem çağrısı, çekirdek alanında yürütülen işletim sisteminin çekirdeğine bağlanır. Bir uygulama sistem çağrısı oluşturduğunda öncelikle çekirdekten izin alması gerekir. Bunu, mevcut süreci duraklatan ve kontrolü çekirdeğe aktaran bir kesme isteği kullanarak başarır.
İsteğe izin verilirse çekirdek, dosya oluşturmak veya silmek gibi istenen eylemi gerçekleştirir. Uygulama, girdi olarak çekirdeğin çıktısını alır. Uygulama, giriş alındıktan sonra prosedüre devam eder. İşlem tamamlandığında, çekirdek sonuçları uygulamaya döndürür ve ardından verileri çekirdek alanından bellekteki kullanıcı alanına taşır.
Basit bir sistem çağrısının sonucu sağlaması, sistem tarihini ve saatini almak gibi birkaç nanosaniye sürebilir. Bir ağ cihazına bağlanmak gibi daha karmaşık bir sistem çağrısı birkaç saniye sürebilir. Çoğu işletim sistemi, darboğazları önlemek amacıyla her sistem çağrısı için ayrı bir çekirdek iş parçacığı başlatır. Modern işletim sistemleri çok iş parçacıklıdır; bu, çeşitli sistem çağrılarını aynı anda gerçekleştirebilecekleri anlamına gelir.
Sistem Çağrısı Türleri
Genellikle beş tür sistem çağrısı vardır. Bunlar aşağıdaki gibidir:
Artık tüm farklı sistem çağrısı türlerini tek tek öğreneceksiniz.
tostring java yöntemi
Süreç kontrolü
Süreç kontrolü, süreçleri yönlendirmek için kullanılan sistem çağrısıdır. Bazı süreç kontrol örnekleri arasında süreç oluşturma, yükleme, iptal etme, sonlandırma, yürütme, işleme, sonlandırma vb. yer alır.
Dosya yönetimi
Dosya yönetimi, dosyaları işlemek için kullanılan bir sistem çağrısıdır. Bazı dosya yönetimi örnekleri arasında dosya oluşturma, dosyaları silme, açma, kapatma, okuma, yazma vb. yer alır.
Cihaz yönetimi
Cihaz yönetimi, cihazlarla ilgilenmek için kullanılan bir sistem çağrısıdır. Cihaz yönetiminin bazı örnekleri arasında okuma, cihaz, yazma, cihaz niteliklerini alma, cihazı serbest bırakma vb. yer alır.
Bilgi Bakımı
Bilgi bakımı, bilgiyi korumak için kullanılan bir sistem çağrısıdır. Sistem verilerinin alınması, saatin veya tarihin ayarlanması, saatin veya tarihin alınması, sistem verilerinin ayarlanması vb. dahil olmak üzere bilgi bakımının bazı örnekleri vardır.
İletişim
İletişim, iletişim için kullanılan bir sistem çağrısıdır. İletişim bağlantılarının oluşturulması, silinmesi, mesaj gönderilmesi, alınması vb. dahil olmak üzere bazı iletişim örnekleri vardır.
Windows ve Unix sistem çağrılarına örnekler
Windows ve Unix sistem çağrılarının çeşitli örnekleri vardır. Bunlar aşağıdaki tabloda listelendiği gibidir:
İşlem | pencereler | Unix |
---|---|---|
Süreç kontrolü | Süreci oluşturmak() Çıkış İşlemi() WaitForSingleObject() | Çatal() Çıkış() Beklemek() |
Dosya İşleme | Dosya oluştur() Dosyayı Oku() Dosya Yaz() CloseHandle() | Açık() Okumak() Yazmak() Kapalı() |
Cihaz yönetimi | SetConsoleMode() ReadConsole() WriteConsole() | Ioctl() Okumak() Yazmak() |
Bilgi Bakımı | GetCurrentProcessID() Zamanlayıcıyı Kur() Uyumak() | Getpid() Alarm() Uyumak() |
İletişim | CreatePipe() CreateFileMapping() MapViewOfFile() | Boru() Shmget() Mharita() |
Koruma | SetFileSecurity() BaşlatmaSecurityDescriptor() SetSecurityDescriptorgroup() | Chmod() umask() Chown() |
Burada bazı yöntemleri kısaca öğreneceksiniz:
1 ile 10 arasında rastgele sayı
açık()
açık() sistem çağrısı, dosya sistemindeki bir dosyaya erişmenizi sağlar. Kaynakları dosyaya ayırır ve sürecin başvurabileceği bir tanıtıcı sağlar. Birçok işlem bir dosyayı aynı anda veya yalnızca tek bir işlemle açabilir. Her şey dosya sistemine ve yapısına dayanmaktadır.
Okumak()
Dosya sistemindeki bir dosyadan veri elde etmek için kullanılır. Genel olarak üç argümanı kabul eder:
- Bir dosya tanımlayıcı.
- Okunan verileri depolamak için bir arabellek.
- Dosyadan okunacak bayt sayısı.
Okunacak dosyanın dosya tanımlayıcısı onu tanımlamak ve kullanarak açmak için kullanılabilir. açık() okumadan önce.
Beklemek()
Bazı sistemlerde, bir işlemin devam etmeden önce başka bir işlemin yürütülmesini tamamlamasını beklemesi gerekebilir. Bir ana süreç bir alt süreç oluşturduğunda, ana sürecin yürütülmesi, alt süreç bitene kadar askıya alınır. Beklemek() Sistem çağrısı ana süreci askıya almak için kullanılır. Alt süreç yürütmeyi tamamladıktan sonra kontrol ana sürece geri döner.
yazmak()
Kullanıcı arabelleğinden dosya gibi bir cihaza veri yazmak için kullanılır. Bu sistem çağrısı, bir programın veri üretmesinin bir yoludur. Genel olarak üç argüman alır:
- Bir dosya tanımlayıcı.
- Verilerin kaydedildiği arabelleğe yönelik bir işaretçi.
- Arabellekten yazılacak bayt sayısı.
çatal()
İşlemler, aşağıdakileri kullanarak kendilerinin klonlarını oluşturur: çatal() sistem çağrısı. İşletim sistemlerinde süreç oluşturmanın en yaygın yollarından biridir. Bir ana süreç bir alt süreci doğurduğunda, alt süreç tamamlanana kadar ana sürecin yürütülmesi kesintiye uğrar. Alt süreç yürütmeyi tamamladıktan sonra kontrol ana sürece geri döner.
yapay sinir ağı
kapalı()
Dosya sistemi erişimini sonlandırmak için kullanılır. Bu sistem çağrısı çağrıldığında bu, programın artık dosyaya ihtiyaç duymadığını, arabelleklerin temizlendiğini, dosya bilgilerinin değiştirildiğini ve sonuç olarak dosya kaynaklarının tahsisinin kaldırıldığını gösterir.
exec()
Yürütülebilir bir dosya, halihazırda yürütülmekte olan bir işlemde daha önceki bir yürütülebilir dosyanın yerini aldığında, bu sistem işlevi çağrılır. Yeni bir süreç oluşturulmadığından eski süreç tanımlaması kalır ancak yeni süreç verinin, yığının, verinin, kafanın vb. yerini alır.
çıkış()
çıkış() programın yürütülmesini sonlandırmak için kullanılan bir sistem çağrısıdır. Bu çağrı, iş parçacığı yürütmesinin tamamlandığını gösterir; bu, özellikle çok iş parçacıklı ortamlarda kullanışlıdır. İşletim sistemi, kullanımın ardından işlem tarafından harcanan kaynakları geri alır. çıkış() sistem fonksiyonu.