ভিডিএসও এবং ভার্সাইস্কল কী?


89

আমি করেছিলাম sudo cat /proc/1/maps -vv

আমি আউটপুটটি বোঝার চেষ্টা করছি I আমি দেখতে পাচ্ছি অনেকগুলি ভাগ করা লাইব্রেরি প্রত্যাশার সাথে মেমরি ম্যাপিং বিভাগে ম্যাপ করা হচ্ছে।

শেষের দিকে কিছু একটা আছে

কী vdsoএবং vsyscallএর অর্থ কি? ভার্সস্কল মেমরির কার্নেল অংশ? কেউ যদি বিষয়টি নিয়ে কিছু আলোকপাত করতে পারে তবে দুর্দান্ত হবে।


4
গুগল ভিডিএসও এই ভিডিএসও উইকিপেজ দেয় (যার আরও উল্লেখ রয়েছে)।
বেসাইল স্টারিনকিভিচ

procfs ডকুমেন্টেশন , আপনার সিস্টেমে নির্দিষ্টকরণের জন্য এই ফাইলটির কার্নেল সংস্করণটি দেখুন।
নির্দ্বিধ শব্দ

আমি মনে করি আরও ভাল ব্যাখ্যা যা উইকি বা প্রোকফস ডকুমেন্টেশনে পাওয়া যায় এই বিষয়টির জন্য প্রয়োজনীয়।
জিউসেপ পেস

উত্তর:


151

Vsyscall এবং vDSO অংশ দুই লিনাক্স নির্দিষ্ট সিস্টেম কল ত্বরান্বিত করার জন্য ব্যবহৃত পদ্ধতি উপলব্ধ রয়েছে। উদাহরণস্বরূপ, gettimeofdayসাধারণত এই প্রক্রিয়া মাধ্যমে আহ্বান করা হয়। প্রথমে প্রবর্তিত মেকানিজমটি হ'ল ভিসিসকল , এটি নির্দিষ্ট সিস্টেম কলগুলি সম্পাদন করার উপায় হিসাবে যুক্ত করা হয়েছিল যা সিস্টেম কল ওভারহেড হ্রাস করার জন্য কোনও বাস্তব স্তরের অধিকারের প্রয়োজন হয় না do পূর্ববর্তী উদাহরণ অনুসরণ করে, gettimeofdayকর্নেলের বর্তমান সময়টি পড়তে হবে। এমন অ্যাপ্লিকেশন রয়েছে যা gettimeofdayঘন ঘন কল করে (যেমন টাইমস্ট্যাম্পগুলি তৈরি করতে) এমন বিন্দুতে যে তারা কিছুটা ওভারহেডেরও যত্ন করে care এই উদ্বেগের সমাধানের জন্য, কার্নেলটি বর্তমান সময় এবং একটি দ্রুতগতিযুক্ত একটি পৃষ্ঠা ব্যবহারকারীর জায়গাগুলিতে ম্যাপ করেgettimeofdayবাস্তবায়ন (অর্থাত্ একটি ফাংশন যা ভিসিস্কলে সংরক্ষণের সময়টি পড়ে )। এই ভার্চুয়াল সিস্টেম কলটি ব্যবহার করে, সি লাইব্রেরি একটি দ্রুত সরবরাহ করতে gettimeofdayপারে যা কার্নেল স্পেস এবং ব্যবহারকারী স্থানের মধ্যে সাধারণত ক্লাসিক সিস্টেম কল মডেল INT 0x80বা দ্বারা প্রবর্তিত ব্যবহারকারী স্পেসের মধ্যে প্রসঙ্গের সুইচ দ্বারা ওভারহেড প্রবর্তিত হয় না SYSCALL

যাইহোক, এই ভিসিস্কাল প্রক্রিয়াটির কিছু সীমাবদ্ধতা রয়েছে: বরাদ্দ করা মেমরিটি ছোট এবং কেবল 4 টি সিস্টেম কলের অনুমতি দেয় এবং আরও গুরুত্বপূর্ণ এবং গুরুতর, ভায়স্কল পৃষ্ঠাটি স্থিতিকভাবে প্রতিটি প্রক্রিয়াতে একই ঠিকানায় বরাদ্দ করা হয়, যেহেতু ভায়স্কাল পৃষ্ঠার অবস্থানটি রয়েছে is কার্নেল এবিআইতে পেরেক দেওয়া। ভার্সিস্যাকালের এই স্ট্যাটিক বরাদ্দটি সাধারণত লিনাক্স দ্বারা ব্যবহৃত মেমরি স্পেস র্যান্ডমাইজেশন দ্বারা উপস্থাপিত সুবিধার সাথে আপস করে। কোনও আক্রমণকারী, স্ট্যাকের ওভারফ্লো ব্যবহার করে কোনও অ্যাপ্লিকেশনকে আপস করার পরে, ভিসিসকল থেকে সিস্টেম কল শুরু করতে পারেস্বেচ্ছাসেবী পরামিতি সহ পৃষ্ঠা। তার যা প্রয়োজন কেবল তা হ'ল সিস্টেম কলের ঠিকানা, এটি সহজেই অনুমানযোগ্য যেহেতু এটি স্থিতিশীলভাবে বরাদ্দ করা হয়েছে (যদি আপনি বিভিন্ন কমান্ড প্রয়োগ করেও আপনার কমান্ডটি আবার চালানোর চেষ্টা করেন তবে আপনি লক্ষ্য করবেন যে ভিসস্কলের ঠিকানা পরিবর্তন হয় না)। এই ধরণের আক্রমণকে ব্যর্থ করার জন্য ভিসস্কল পৃষ্ঠার অবস্থান সরিয়ে ফেলা বা কমপক্ষে এলোমেলো করে নেওয়া ভাল। দুর্ভাগ্যক্রমে, অ্যাপ্লিকেশনগুলি সেই পৃষ্ঠার অস্তিত্ব এবং সঠিক ঠিকানার উপর নির্ভর করে, তাই কিছুই করা যায় না।

একটি বিশেষ ফাঁদ নির্দেশ দ্বারা স্থির ঠিকানাগুলিতে সমস্ত সিস্টেম কল নির্দেশাবলী প্রতিস্থাপন করে এই সুরক্ষা সমস্যা সমাধান করা হয়েছে addressed ভিসিসকল পৃষ্ঠায় কল করার চেষ্টা করা একটি অ্যাপ্লিকেশন কার্নেলের মধ্যে আটকা পড়বে, যার পরে কার্নেল স্পেসে কাঙ্ক্ষিত ভার্চুয়াল সিস্টেম কল অনুকরণ করা হবে। ফলাফলটি হ'ল একটি কার্নেল সিস্টেম কল যা ভার্চুয়াল সিস্টেম কল অনুকরণ করে যা প্রথমে কার্নেল সিস্টেম কল এড়াতে সেখানে রাখা হয়েছিল। ফলাফলটি একটি ভিসিসকল যা কার্যকর করতে আরও বেশি সময় নেয় তবে, গুরুত্বপূর্ণভাবে, বিদ্যমান এবিআইকে ভেঙে দেয় না। যাই হোক, মন্দার শুধুমাত্র যদি অ্যাপ্লিকেশন ব্যবহার করার চেষ্টা করছে দেখা যাবে vsyscall পরিবর্তে পৃষ্ঠা vDSO

VDSO তার সীমাবদ্ধতা অভিভূতকারী সময় vsyscall হিসাবে একই কার্যকারিতা উপলব্ধ করা হয়। ভিডিএসও (ভার্চুয়াল ডায়নামালি লিংকড শেয়ারড অবজেক্টস) ব্যবহারকারী স্পেসে বরাদ্দ করা একটি মেমরি অঞ্চল যা ব্যবহারকারীর স্থানে কিছু নিরাপদে কার্নেল কার্যকারিতা নিরাপদে প্রকাশ করে। এটি দ্বারা সৃষ্ট নিরাপত্তা হুমকির সমাধানের জন্য এটি চালু করা হয়েছে vsyscall। ভিডিএসও গতিশীলভাবে বরাদ্দ করা হয়েছে যা সুরক্ষা উদ্বেগ সমাধান করে এবং 4 টিরও বেশি সিস্টেম কল করতে পারে। VDSO সংযোগগুলি জন্য glibc গ্রন্থাগার মাধ্যমে প্রদান করা হয়। লিঙ্কারটি গ্লিবসি ভিডিএসও কার্যকারিতাটিতে লিঙ্ক করবে , তবে শর্ত থাকে যে এই জাতীয় রুটিনের সাথে একটি ভিডিএসও সংস্করণ রয়েছে, যেমন gettimeofday। যখন আপনার প্রোগ্রামটি কার্যকর করে, আপনার কার্নেলের ভিডিএসও নেই সমর্থন, একটি traditionalতিহ্যগত syscall তৈরি করা হবে।

ক্রেডিট এবং দরকারী লিঙ্ক:


4
কেন ভিসিস্কলটিতে কেবল 4 টি সিস্টেম কল আসতে পারে? সিস্টেম কলের জন্য 8 মেগাবাইট সংরক্ষিত রয়েছে এবং কেবলমাত্র 1 টি পৃষ্ঠা (আসলে 3 টি ফাংশন, 1024-এ 1 পৃষ্ঠার দ্বারা স্বাক্ষরিত) ব্যবহৃত হয়।
স্কিপ করুন

9

আমি কেবল এটি যুক্ত করতে চাই যে এখন নতুন কার্নেলগুলিতে vDSOকেবল "নিরাপদ" সিস্কলগুলির জন্য ব্যবহৃত হয় না তবে এটি সিস্টেমে কোন সিস্টেমে ডাকার জন্য কোন সিস্টেমেটাল পদ্ধতিটি পছন্দ করা হয় তা নির্ধারণ করার জন্য এটি ব্যবহৃত হয়।

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