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 মত জিনিস ব্যবহার করা যাবে না ।