Linux এবং Windows এ System Call Interface

Computer Programming - অ্যাসেম্বলি প্রোগ্রামিং (Assembly Programming) Assembly Language এ System Calls (System Calls in Assembly Language) |
237
237

System Call Interface (SCI) হলো একটি প্রোগ্রামিং ইন্টারফেস যা অপারেটিং সিস্টেমের কোর (kernel) এর সাথে ব্যবহারকারী প্রোগ্রামের যোগাযোগ নিশ্চিত করে। এটি অপারেটিং সিস্টেমের গুরুত্বপূর্ণ ফাংশনগুলো, যেমন ফাইল অপারেশন, প্রসেস ম্যানেজমেন্ট, এবং মেমোরি ম্যানেজমেন্ট পরিচালনা করতে ব্যবহার করা হয়। Linux এবং Windows অপারেটিং সিস্টেমের System Call Interface-এর কাঠামো এবং ব্যবহারের মধ্যে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে।


Linux এ System Call Interface

Linux System Call Interface সাধারণত Assembly Language বা উচ্চ-স্তরের ভাষা ব্যবহার করে প্রোগ্রামারের অ্যাপ্লিকেশন থেকে kernel ফাংশনগুলো কল করতে ব্যবহৃত হয়। Linux-এ system call ইন্টারফেস সাধারণত int 0x80 বা syscall নির্দেশনা ব্যবহার করে কাজ করে।

প্রক্রিয়া:

  1. সিস্টেম কল নম্বরটি eax রেজিস্টারে লোড করা হয়।
  2. প্রয়োজনীয় প্যারামিটারগুলো ebx, ecx, edx, esi, এবং edi রেজিস্টারে লোড করা হয়।
  3. int 0x80 বা syscall নির্দেশনা ব্যবহার করে system call কার্যকর করা হয়।

Assembly উদাহরণ:

section .text
    global _start

_start:
    ; sys_write সিস্টেম কল
    mov eax, 4          ; sys_write এর সিস্টেম কল নম্বর (4)
    mov ebx, 1          ; ফাইল ডিসক্রিপ্টর (stdout)
    mov ecx, msg        ; মেসেজের অ্যাড্রেস
    mov edx, 13         ; মেসেজের দৈর্ঘ্য
    int 0x80            ; সিস্টেম কল

    ; sys_exit সিস্টেম কল
    mov eax, 1          ; sys_exit এর সিস্টেম কল নম্বর (1)
    xor ebx, ebx        ; এক্সিট কোড 0
    int 0x80            ; সিস্টেম কল

section .data
msg db 'Hello, World!', 0

নতুন ইন্টারফেস (syscall):

  • নতুন ৬৪-বিট আর্কিটেকচারে syscall নির্দেশনা ব্যবহার করা হয়, যা int 0x80 এর চেয়ে দ্রুত।
  • System call নম্বর rax রেজিস্টারে এবং প্যারামিটারগুলো rdi, rsi, rdx, r10, r8, এবং r9 রেজিস্টারে লোড করা হয়।

Windows এ System Call Interface

Windows System Call Interface সাধারণত API (Application Programming Interface) ব্যবহার করে অ্যাপ্লিকেশন এবং kernel-এর মধ্যে যোগাযোগ স্থাপন করে। Windows-এ system call সরাসরি ব্যবহৃত হয় না; বরং, Windows API কলগুলো kernel32.dll বা ntdll.dll লাইব্রেরির মাধ্যমে kernel-mode ফাংশনে পৌঁছায়।

প্রক্রিয়া:

  1. Windows API ব্যবহার করে সিস্টেম ফাংশন কল করা হয়।
  2. API কলগুলো kernel32.dll বা ntdll.dll এর মাধ্যমে kernel-mode ফাংশনে ম্যাপ করা হয়।
  3. Windows kernel সেই ফাংশন কার্যকর করে এবং রেসপন্স প্রদান করে।

উদাহরণ:
C/C++-এ Windows API ব্যবহার করে system call:

#include <windows.h>
#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}

নির্দেশনার কার্যপ্রণালী:

  • Windows-এ system call interface ntdll.dll এর মাধ্যমে কাজ করে, যা kernel-level API ফাংশন, যেমন NtWriteFile, NtCreateProcess, ইত্যাদি ব্যবহৃত হয়।
  • Windows-এ সাধারণত syscall বা sysenter নির্দেশনা ব্যবহার করা হয় যা kernel-mode এ সিস্টেম কল কার্যকর করে।

Linux এবং Windows System Call Interface এর মধ্যে পার্থক্য

বৈশিষ্ট্যLinuxWindows
ইন্টারফেস পদ্ধতিসরাসরি int 0x80 বা syscall ব্যবহার করে।Windows API (kernel32.dll, ntdll.dll) মাধ্যমে।
সিস্টেম কল নম্বরনির্দিষ্ট রেজিস্টারে লোড করা হয় (eax, rax)।সরাসরি ব্যবহার করা হয় না, API মাধ্যমে ম্যাপ হয়।
কাস্টম সিস্টেম কলব্যবহারকারীরা প্রয়োজন হলে কাস্টম system call তৈরি করতে পারে।সরাসরি সমর্থন নেই, তবে ড্রাইভার বা kernel-mode কোডের মাধ্যমে।
ব্যবহারসাধারণত অ্যাডভান্সড প্রোগ্রামার বা kernel-level প্রোগ্রামিংয়ে ব্যবহৃত।সাধারণ অ্যাপ্লিকেশন প্রোগ্রামিংয়ে API ব্যবহৃত।
আর্কিটেকচারওপেন সোর্স, পরিবর্তন করা যায়।ক্লোজড সোর্স, Microsoft দ্বারা নিয়ন্ত্রিত।

সারসংক্ষেপ

Linux এবং Windows উভয় অপারেটিং সিস্টেমেই System Call Interface ব্যবহার করা হয়, তবে তাদের পদ্ধতি ভিন্ন। Linux-এ সরাসরি int 0x80 বা syscall ব্যবহার করা যায়, যেখানে Windows-এ API কল ব্যবহার করে kernel-mode ফাংশন কার্যকর করা হয়। Linux সিস্টেম কল পদ্ধতি সরাসরি এবং প্রোগ্রামার-কেন্দ্রিক, যেখানে Windows পদ্ধতি API-কেন্দ্রিক এবং সাধারণ ব্যবহারকারীদের জন্য সহজতর।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion