সিস্টেম কল কীভাবে কার্যকর করা হয় [বন্ধ]


2

অ্যাপ্লিকেশন প্রোগ্রামারের দৃষ্টিকোণ থেকে সিস্টেম কলটি কেবল মোড়কের লাইব্রেরি থেকে একটি প্রক্রিয়া শুরু করা। আমি সমাবেশ সম্পর্কে ভাল জ্ঞান না থাকায় আমি ভাবছিলাম যে এটি কীভাবে সর্বনিম্ন স্তরে করা হয়। অ্যাপ্লিকেশন লাইব্রেরি ব্যবহার না করে কীভাবে সিস্টেম কল করতে পারে?


1
সিস্টেম কল কোনও গ্রন্থাগার থেকে কোনও পদ্ধতির প্রার্থনা নয়।
মারিয়া ইনেস পরনসারি

উত্তর:


3

সিস্টেম কলগুলি আর্কিটেকচার নির্ভর, তবে এগুলি সমস্ত একই বৈশিষ্ট্য ভাগ করে।

X86-এ, সিস্টেম কলগুলি হয় সফ্টওয়্যার বিঘ্নের মাধ্যমে বা একটি বিশেষ "সিস্টেটার" নির্দেশের মাধ্যমে করা হয়। লিনাক্স উভয়ই ব্যবহার করতে পারে তবে একটি সফ্টওয়্যার বিঘ্নিত হওয়া সবচেয়ে সাধারণ। বুট করার সময়, কার্নেল বাধা উভয়ের জন্য হার্ডওয়্যার এবং সফ্টওয়্যার দ্বারা উত্পাদিত উভয় বিঘ্নগুলির জন্য হ্যান্ডলার স্থাপন করে। X86-তে একটি বিশেষ সমাবেশের নির্দেশ 'ইন' রয়েছে যা একটি সফ্টওয়্যার বিঘ্নিত করে। কার্নেল সিস্টেম কল বিঘ্নিত হতে সফ্টওয়্যার বিঘ্নিত 0x80 জন্য একটি হ্যান্ডলার সেটআপ করেছে।

এই টেবিলটি প্রতিটি সম্ভাব্য সিস্টেম কল এবং এর পরামিতি এবং সেগুলি কীভাবে পাশ করা যায় তা দেখায়। আপনি দেখতে পাচ্ছেন, ইক্স রেজিস্টারে একটি নম্বর নির্দেশ করে যে কোন সিস্টেম কল। অন্যান্য রেজিস্টারগুলি সিস্টেম কলটিতে কিছু পরামিতি দেখায়।

সুতরাং ব্যবহারকারীল্যান্ড সফ্টওয়্যারটি সহজভাবে নিবন্ধগুলিতে সঠিক পরামিতিগুলি সেট আপ করে, তারপরে 0x80 বাধা দেয় issues সিস্টেম কলটি ব্যাখ্যা করতে, ফাংশনটি সম্পাদন করতে এবং কোনও সম্ভাব্য রিটার্ন মান সহ নিবন্ধগুলি সংশোধন করে ফিরে আসার জন্য কার্নেলের হ্যান্ডলারটি সেট আপ করা আছে।

মোড়ক ফাংশনগুলি এই সমস্ত এবং সাধারণত পোর্টেবল উপায়ে করার সময়, কোনও সিস্টেমের সরাসরি ইস্যু করার জন্য আপনি কোনও সি / সি ++ কোডে কিছু ইনলাইন অ্যাসেমবিলি লিখতে না পারার কোনও কারণ নেই। আপনার কেবল সমাবেশের প্রাথমিক জ্ঞানের প্রয়োজন হবে: সঠিক রেজিস্টারে সঠিক ডেটা সরান এবং তারপরে 'int 0x80' জারি করুন


1
লিনাক্সের sysenterপরিবর্তে নির্দেশাবলী ব্যবহার করা যেতে পারে। trilithium.com/johan/2005/08/linux-gate
লরেন্স

@ সালতসাব্ল্যাডে আমি উল্লেখ করার জন্য ধন্যবাদটি ভুলে গিয়েছিলাম।
ডগভ্জ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.