JET School

System Call nədir?

System Call (Sistem çağırışı) — bir proqramın, yəni istifadəçi səviyyəsində çalışan tətbiqin, əməliyyat sisteminin nüvəsində (kernel) olan funksiyalara və xidmətlərə çıxış əldə etmək üçün istifadə etdiyi mexanizmdir. Əsas məqsədi, proqramın təhlükəsiz və nəzarətli şəkildə sistem resurslarından (fayl sistemi, yaddaş, prosessor, şəbəkə, və s.) istifadə etməsinə imkan yaratmaqdır.

Əməliyyat sistemi birbaşa istifadəçiyə və ya proqramlara əsas sistem resurslarına çıxışa icazə verməz, çünki bu resurslara nəzarət və qorunma vacibdir. Ona görə də istifadəçi proqramı bu resurslara çıxmaq istədikdə, bu istəyi sistem çağırışı vasitəsilə əməliyyat sisteminin nüvəsinə çatdırır.

Necə işləyir?

Bir proqram sistem çağırışı edəndə, o, aşağıdakı addımları yerinə yetirir:

  1. İstifadəçi rejimindən (user mode) nüvə rejiminə (kernel mode) keçid baş verir. Bu rejim dəyişməsi xüsusi təlimat (məsələn, int 0x80 və ya syscall) vasitəsilə həyata keçirilir.
  2. Əməliyyat sisteminin nüvəsində müvafiq sistem funksiyası çağırılır (məsələn, open(), read(), write(), fork() və s.).
  3. Əməliyyat sistemi bu istəyi yerinə yetirib nəticəni proqramın özünə qaytarır.
  4. Proqram yenidən istifadəçi rejiminə qayıdır və normal şəkildə fəaliyyətini davam etdirir.

System Call-ların funksiyaları

System call-lar aşağıdakı əsas sahələr üzrə qruplaşdırıla bilər:

  • Fayl sistemi əməliyyatları: fayl açmaq (open), oxumaq (read), yazmaq (write), bağlamaq (close) və s.
  • Proses idarəetməsi: yeni proses yaratmaq (fork), prosesə nəzarət (wait, exec) və prosesin dayandırılması (exit).
  • Yaddaş idarəetməsi: proqram üçün yaddaş ayırmaq və ya sərbəst buraxmaq.
  • Şəbəkə əməliyyatları: TCP/IP əlaqələrinin yaradılması və idarə olunması.
  • Cihazlara çıxış: klaviatura, monitor, printer və s. kimi giriş-çıxış cihazlarına çıxış.
  • Taymer və saat funksiyaları: sistem vaxtını oxumaq, gecikmə yaratmaq və s.
  • İcazə və təhlükəsizlik: istifadəçi hüquqlarının yoxlanılması, proseslərin təhlükəsiz şəkildə icrası.

Niyə system call vacibdir?

  1. Təhlükəsizlik və sabitlik: Əgər istifadəçi proqramları birbaşa sistem resurslarına çıxış edə bilsəydi, bu, sistemin çökməsinə, digər proqramların fəaliyyətinə müdaxiləyə və ya məlumatların itirilməsinə səbəb ola bilərdi. System call-lar bu çıxışı nəzarət altında və qorunmuş şəkildə həyata keçirir.
  2. Soyutlama və rahatlıq: Proqramçılar sistemin daxili quruluşunu bilmədən fayllarla işləyə, yaddaş ayıra və ya şəbəkəyə qoşula bilirlər.
  3. Dəstəklənmiş interfeys: Əməliyyat sisteminin təklif etdiyi xidmətlərin sabit və sənədləşdirilmiş bir interfeysidir.

System Call-ların nümunələri

Ən məşhur UNIX/Linux sistem çağırışlarına aşağıdakılar daxildir:

  • fork() – yeni proses yaratmaq
  • exec() – yeni proqramı mövcud prosesdə icra etmək
  • read() – fayldan məlumat oxumaq
  • write() – fayla məlumat yazmaq
  • open() – faylı açmaq
  • close() – faylı bağlamaq
  • exit() – prosesi sonlandırmaq
  • wait() – uşaq prosesinin bitməsini gözləmək

System Call və API fərqi

Bəzən system call ilə API (Application Programming Interface) anlayışları qarışdırılır. API — proqramçının istifadə etdiyi funksiyaların toplusudur. Məsələn, C dilindəki printf() bir API funksiyasıdır, amma o, əslində sistem çağırışı olan write() vasitəsilə çıxışı həyata keçirir. Yəni:

  • API — istifadəçi proqramının çağırdığı funksiyadır.
  • System call — əməliyyat sisteminə edilən əsl çağırışdır.

API-lər system call-ları daha istifadəçi dostu formaya salır və proqramçının işini asanlaşdırır.

Nəticə

System call-lar əməliyyat sisteminin və istifadəçi proqramlarının bir-biri ilə ünsiyyət qurmasına imkan verən əsas körpüdür. Bu mexanizm proqramlara sistem resurslarına nəzarətli şəkildə çıxış etməyə şərait yaradır və müasir əməliyyat sistemlərinin funksionallığının mərkəzində dayanır. System call-ların düzgün və effektiv istifadəsi proqramın təhlükəsiz, sabit və səmərəli işləməsini təmin edir.

Teqlər:

Əlaqəli terminlər:

IT sahəsini dərindən öyrənmək üçün kurslarımıza qoşulun. Ətraflı məlumat almaq üçün sorğu göndərin!