mmap
আপনার কাছে একই ফাইল থেকে কেবল পঠন ফ্যাশনে ডেটা অ্যাক্সেস করার একাধিক প্রক্রিয়া থাকে, যা আমি লিখি এমন সার্ভার সিস্টেমের মধ্যে সাধারণ। mmap
এই সমস্ত প্রক্রিয়াগুলিকে প্রচুর মেমরি সঞ্চয় করে একই শারীরিক মেমরি পৃষ্ঠাগুলি ভাগ করতে দেয়।
mmap
অপারেটিং সিস্টেমকে পেজিং ক্রিয়াকলাপগুলি সর্বোত্তম করতে সহায়তা করে। উদাহরণস্বরূপ, দুটি প্রোগ্রাম বিবেচনা করুন; প্রোগ্রাম A
যা একটি 1MB
ফাইলের সাথে তৈরি করে বাফারটি দিয়ে তৈরি করে malloc
এবং প্রোগ্রাম বি যা mmaps
মেমরিতে 1 এমবি ফাইল। যদি অপারেটিং সিস্টেমটির A
মেমরির কিছু অংশ অদলবদল করতে হয় তবে মেমরিটি পুনরায় ব্যবহার করার আগে এটি অবশ্যই বাফারের সামগ্রীগুলি অদলবদলে লিখতে হবে। ইন B
এর ক্ষেত্রে কোনো অপরিবর্তিত mmap
অপারেটিং সিস্টেম জানে কারণ কিভাবে বিদ্যমান ফাইল তারা থেকে তাদের ফিরিয়ে আনতে 'ঘ পৃষ্ঠাগুলি অবিলম্বে পুনঃব্যবহার করা যাবে mmap
' থেকে ঘ। (ওএস সনাক্ত করতে পারে যে লেখাগুলি mmap
'ডি পৃষ্ঠাগুলি কেবলমাত্র পঠনযোগ্য হিসাবে চিহ্নিত করে এবং সেটিং কৌশলগুলি অনুলিপি করার অনুরূপ সেগ ফল্টগুলি সনাক্ত করে কোন পৃষ্ঠাগুলিকে অপরিবর্তিত রয়েছে) OS
mmap
আন্ত প্রক্রিয়া যোগাযোগের জন্য দরকারী । আপনি mmap
যে প্রক্রিয়াগুলিতে যোগাযোগ করতে হবে এবং তারপরে এই mmap'd
অঞ্চলে সিঙ্ক্রোনাইজেশন আদিমগুলি ব্যবহার করতে পারেন সেগুলি পড়ার / লেখার মতো ফাইল করতে পারেন (এটি MAP_HASSEMAPHORE
পতাকাটি এর জন্য কী)।
আপনার mmap
যদি 32 বিট মেশিনে খুব বড় ফাইলগুলির সাথে কাজ করতে হয় তবে একটি জায়গা বিশ্রী হতে পারে। এটি হ'ল কারণটি mmap
আপনার প্রক্রিয়াটির ঠিকানার জায়গার ঠিকানার একটি সংক্ষিপ্ত ব্লক সন্ধান করতে হবে যা ম্যাপ করা ফাইলের পুরো পরিসীমা ফিট করার জন্য যথেষ্ট বড়। আপনার ঠিকানার স্থান খণ্ডিত হয়ে উঠলে এটি সমস্যা হয়ে উঠতে পারে, যেখানে আপনার কাছে 2 জিবি ঠিকানা স্থান মুক্ত থাকতে পারে, তবে এর কোনও স্বতন্ত্র পরিসীমা 1 জিবি ফাইল ম্যাপিংয়ের সাথে খাপ খায় না। এক্ষেত্রে আপনাকে ফাইলটি ফিট করতে চাইলে তার চেয়ে ছোট ছোট অংশে ম্যাপ করতে হতে পারে।
mmap
পঠন / লেখার প্রতিস্থাপন হিসাবে আরও একটি সম্ভাব্য বিশ্রী উদ্ভাস হ'ল আপনাকে পৃষ্ঠা আকারের অফসেটগুলিতে আপনার ম্যাপিং শুরু করতে হবে। আপনি যদি অফসেটে কিছু তথ্য পেতে চান তবে আপনাকে X
সেই অফসেটটি ফিক্সআপ করতে হবে যাতে এটির সাথে সামঞ্জস্য হয় mmap
।
এবং শেষ অবধি, পড়া / লেখাই হ'ল একমাত্র উপায় যা আপনি কিছু ধরণের ফাইলের সাথে কাজ করতে পারেন । পাইপ এবং ttysmmap
মত জিনিস ব্যবহার করা যাবে না ।