"মানচিত্র" এর অর্থ কী?


10

বিভিন্ন সিএস শিক্ষা উপকরণগুলিতে আমি এই শব্দটি বহুবার সম্মুখীন হয়েছি:

  1. L2 CS162 (ইউসি বার্কলে):

    মেমরি-ম্যাপযুক্ত I / O

  2. L4 CS162 (ইউসি বার্কলে):

    মেমরি ম্যাপ করা ফাইল

  3. L24 CS61 (ইউসি বার্কলে):

    "মেমোরি I / O ম্যাপযুক্ত": সিপিইউ ঠিকানা স্পেসে ম্যাপযুক্ত ডিভাইস নিয়ন্ত্রণ / ডেটা নিবন্ধগুলি

  4. এমনকি, "ম্যাপিং" গুগল করার পরে, আমি ম্যাপ_ (উচ্চতর অর্ডার_ফাংশন) নিবন্ধটি পেয়েছি , তবে এটি আমার কাছে খুব পরিষ্কার ছিল না।
  5. আরও বেশি, উইকিপিডিয়া নিবন্ধটিbitmap পড়ার প্রসঙ্গে অর্থটি বোঝার চেষ্টা করেছেন :

    কিছুটা ডোমেন (প্রায় সবসময় পূর্ণসংখ্যার ব্যাপ্তি) থেকে মান সেট করার ক্ষেত্রে কিছুটা অ্যারে ম্যাপিং হয় {0, 1 set

    আমি নিশ্চিত নই, তবে উপরের প্রসঙ্গে এটি ডেটা রূপান্তর সম্পর্কে আমার কাছে শোনাচ্ছে।

  6. পরে একটি সিএস বই পড়ার পরে আমি কেবল এই অনুচ্ছেদটি পেয়েছি তবে এটি আমার জন্য "ম্যাপিং" এর অর্থ ব্যাখ্যা করে না:

    মেমোরি ম্যাপিং লিনাক্স (ইউনিক্সের অন্যান্য ফর্মগুলির সাথে) ভার্চুয়াল মেমরি অঞ্চলের বিষয়বস্তুটিকে ডিস্কের কোনও অবজেক্টের সাথে যুক্ত করে প্রবর্তন করে, এটি একটি প্রক্রিয়া যা মেমরি ম্যাপিং হিসাবে পরিচিত।

  7. আমি অনুসন্ধানের ফলাফল হিসাবে ম্যাপ্রেইডুসও পেয়েছি : যেখানে মানচিত্রটি "সমান্তরাল কম্পিউটিংয়ের একটি আইডিয়ম হিসাবে ব্যাখ্যা করা হয়েছে যেখানে সম্ভাব্যভাবে সমান্তরালভাবে একটি ক্রমের সমস্ত উপাদানগুলিতে একটি সাধারণ অপারেশন প্রয়োগ করা হয়"।

আমি এই শব্দটি সম্পর্কে এখনও বিভ্রান্ত। আমি উল্লিখিত প্রসঙ্গে "মানচিত্র" এর অর্থ কী কেউ ব্যাখ্যা করতে পারবেন?

উত্তর:


14

সুতরাং, "মানচিত্র" শব্দটির দুটি স্বতন্ত্র ব্যবহার রয়েছে যে আমি এখানে আনপ্যাক করব।

  1. এক্স2এক্সএক্স(এক্স)=2এক্স

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

    অনুরূপভাবে, বিট অ্যারেগুলি (এবং সাধারণভাবে অ্যারেগুলি) এর মধ্যে পড়ে: প্রতিটি সূচকের সাথে এটির সাথে যুক্ত থাকে (যে কোনও সময়), তাই অ্যারে কার্যকরভাবে সীমাবদ্ধ-ডোমেন ফাংশনটির এনকোডিং।

  2. ক্রিয়ামূলক প্রোগ্রামিং এবং ডেরিভেটিভগুলিতে (যেমন ম্যাপ্রেডস), মানচিত্রটি কোনও কাঠামো জুড়ে একটি রূপান্তর প্রয়োগকে বোঝায়।

    আসলটি mapলিস্প থেকে আসে, যেখানে এটি অন্য ফাংশন এবং একটি তালিকা নিয়েছিল এমন ফাংশনটিকে উল্লেখ করে এবং সেই তালিকার প্রতিটি উপাদানগুলিতে ফাংশন প্রয়োগের ফলাফলটি ফিরিয়ে দেয়।

    তবে, এই ঘটনাটি বেশ সাধারণ। Haskell, একটি ডাটা স্ট্রাকচার যে স্বীকার যেমন একটি অপারেশন বলা হয় functor এবং ক্রিয়াকলাপের বলা হয় fmap (ঐতিহাসিক কারণে, তালিকা মানচিত্র সাথে সংঘাত এড়াতে)।

    এগুলি সমস্ত বিভাগ তত্ত্ব থেকে ফান্টারের ধারণার মাধ্যমে সম্পর্কিত , এটি একটি "মানচিত্র" অপারেশন স্বীকার করে এমন কাঠামোর বিমূর্ততা।


4
( Functorলিঙ্কের নামটিতে টাইপ করুন - কোনও সম্পাদনার পরামর্শ দেওয়ার মতো খুব কম)
মাদুর

খুব স্পষ্ট এবং দুর্দান্ত ব্যাখ্যা। তবে আমি বুঝতে পারি না যে 'সসীম কার্য' বলতে কী বোঝায়।
কাইস

1
@ কাইসের 'সসীম কার্য' সবচেয়ে বেশি ব্যবহৃত হয় কোনও ফাংশনের জন্য যার জন্য কোনও উপাদান অনন্তকে ম্যাপ করা হয় না। আমার ধারণা জেমেট হাইলাইট করতে চেয়েছিল যে অ্যারেগুলি মূলত অন্তর্ভুক্ত মানগুলিতে (বৈধ) সূচকগুলির সেট ম্যাপিং ফাংশন।
মাইকেল হফ 16

2
দুটি ব্যবহার সত্যই একই জিনিস মাত্র। mapফাংশন ফলে যেখানে প্রতিটি উপাদান ইনপুটের সংশ্লিষ্ট উপাদান সঙ্গে যুক্ত করা হয় ফেরৎ। পার্থক্যটি হ'ল প্রথম ব্যবহারটি বিদ্যমান সম্পর্কের বর্ণনা দেয়, যখন দ্বিতীয়টি কোনও ক্রিয়াকলাপকে বোঝায় যা সম্পর্ক তৈরি করে।
বারমার

1
টাইপো: ফুকেন্টার
বার্মার

8

নীচে আমি বেশ কয়েকটি উপায়ে নির্ভুলের চেয়ে কম হতে চলেছি, একটি মৌলিক উপলব্ধি প্রদানের জন্য প্রযুক্তিগত নির্ভুলতার ত্যাগ করছি। এটা সুস্পষ্ট যে আপনি বেশ কয়েকটি প্রযুক্তিগত উত্স পড়েছেন এবং উপাদানের খুব প্রযুক্তিগততা আপনার পক্ষে মোটামুটি বেসিক এবং সাধারণ ধারণাটি বুঝতে অসুবিধা বোধ করছে।

সাধারণ ভাষায় ম্যাপ শব্দের সর্বাধিক সাধারণ ব্যবহার হ'ল দুটি ভিন্ন সেটে জিনিসগুলির মধ্যে একটি সম্পর্ককে বর্ণনা করা। এটি গাণিতিক ক্রিয়া হতে পারে বা এটি অন্য কোনও উপস্থাপনা এবং প্রক্রিয়া হতে পারে। অবিলম্বে মনে আসা সবচেয়ে সাধারণ হল রাস্তার মানচিত্র।

একটি রাস্তার মানচিত্র হ'ল বাস্তব জগতের কোনও নির্দিষ্ট ভূখণ্ড বা অঞ্চলের চিত্র যেখানে মানচিত্রে লাইন এবং অঙ্কন এবং শব্দগুলি প্রকৃত শারীরিক রাস্তাগুলি এবং বিল্ডিংয়ের সাথে মিলে যায়। রাস্তার মানচিত্র এবং প্রকৃত ভূখণ্ডে চিত্রিত ভূখণ্ডের প্রতিনিধিত্বের মধ্যে একটির মধ্যে একটির সম্পর্ক রয়েছে।

আরও তাকিয়ে আমরা আরও দেখতে পাচ্ছি যে রাস্তার মানচিত্রটি প্রকৃত ভূখণ্ডের উপস্থাপনা। আসল ভূখণ্ডে অবজেক্টস এবং বিশদ এবং গতিশীল প্রক্রিয়া রয়েছে যা রাস্তার মানচিত্র চিত্রিত করে না। রাস্তার মানচিত্রটি প্রকৃত ভূখণ্ডের একটি বিমূর্ত উপস্থাপনা এবং রাস্তার মানচিত্রে যা চিত্রিত হয়েছে কেবলমাত্র তার উদ্দেশ্যটি পূরণ করার জন্য, প্রকৃত ভূখণ্ডের জন্য একটি নেভিগেশনাল সহায়তা সরবরাহ করা দরকার।

প্রশ্নের বেশ কয়েকটি উদাহরণ সমর্থনকারী প্রক্রিয়াগুলির সাথে একটি প্রতিনিধিত্ব তৈরি করার সাথে জড়িত যাতে কোনও ব্যক্তি প্রতিনিধিত্বটি ব্যবহার করতে পারে এবং প্রক্রিয়াটি সেই ব্যক্তির ক্রিয়াগুলিকে অনুবাদ করে যা উপস্থাপনের সম্মুখভাগে লুকানো অন্তর্নিহিত কার্যকারিতার জন্য প্রয়োজনীয়।

মেমরি ম্যাপ করা ফাইল আই / ও কোনও প্রোগ্রামারকে কোনও ফাইলকে মেমরির বৃহত ক্ষেত্র হিসাবে চিন্তা করতে, একটি আসল ফাইলের মেমরির উপস্থাপনা ব্যবহার করতে দেয়। প্রোগ্রামার ফাইলটিকে ফাইল হিসাবে ভাবেন না বরং পরিবর্তে এটিকে মেমরির একটি বৃহত অঞ্চল হিসাবে ভাবেন। মেমরি ম্যাপ করা ফাইল I / O কার্যকারিতা নিশ্চিত করার জন্য যত্ন নেয় যে প্রোগ্রামার যখন একটি নির্দিষ্ট মেমরির অফসেট রেফার করে যে ফাইলের সাথে সম্পর্কিত ডেটা অ্যাক্সেস করা হয়েছে।

মেমরি ম্যাপযুক্ত ডিভাইস I / O মেমরি ঠিকানাগুলিতে লিখে বা মেমরি ঠিকানাগুলি পড়ে কোনও ডিভাইস প্রোগ্রামিং ইন্টারফেসকে সহজ করার অনুমতি দেয়। এই লিখন এবং পাঠের ক্রিয়াগুলি অনুরোধকৃত পরিষেবা বা ক্রিয়া সম্পাদনের জন্য প্রয়োজনীয় ডিভাইস নির্দিষ্ট ক্রিয়ায় অন্তর্নিহিত মেমরি ম্যাপযুক্ত ডিভাইস I / O কার্যকারিতা দ্বারা অনুবাদ করা হয়।

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


দুর্দান্ত ব্যাখ্যা। তবে এর বিষয়ে Memory mapped file I/O, এটি কি স্ট্যান্ডার্ড ফাইল আই / ও (বিকল্প, ফাগেন ..) এর বিকল্প? ডিস্কের তুলনায় র‌্যামের দ্রুত অ্যাক্সেসের কারণে পারফরম্যান্স সুবিধা কি?
কাইস

1
@ কাইস মেমোরি ম্যাপযুক্ত ফাইল আই / ও (এমএমএফ) স্ট্যান্ডার্ড ফাইল এপিআই কলগুলি ব্যবহার করার বিকল্প। এমএমএফ ব্যবহারে পারফরম্যান্সের সুবিধা থাকতে পারে বা নাও হতে পারে। এটি এমএমএফের যান্ত্রিকগুলি ফাইলের সামগ্রীগুলি যেভাবে আপনি ফাইল ব্যবহার করছেন তার পাশাপাশি ফাইলটি কতটা বড় তার উপর নির্ভর করে। এমএমএফ I / O পৃষ্ঠাগুলি বড় ব্লকগুলিতে মেমরির মধ্যে রয়েছে areas আপনি ফাইল এপিআই এর সাথে অনুরূপ কিছু করতে পারেন এবং গুরুত্বপূর্ণ পারফরম্যান্সে পার্থক্য করতে পারেন। স্ট্যান্ডার্ড ফাইল এপিআই I / O এর সাথে কার্নেল স্পেস থেকে ব্যবহারকারী স্পেসে মেমরি বাফারগুলির মধ্যে প্রচুর অনুলিপি থাকে যা প্রায়শই এমএমএফ দিয়ে বাইপাস করা হয়।
রিচার্ড চেম্বারস

1
@ কাইরা নিশ্চিত হন না যে আপনি কী জিজ্ঞাসা করছেন। এক মেমরির অবস্থান থেকে অন্যটিতে ডেপি অনুলিপি করতে সময় এবং সিপিইউ চক্র লাগে তাই ডেটা অনুলিপি হ্রাস করে ডেটা অ্যাক্সেস করার সময় কর্মক্ষমতা উন্নত করে। ফাইল I / O সাধারণ উদ্দেশ্য এবং অভ্যন্তরীণভাবে ফাইলের বিষয়বস্তুগুলির নিজস্ব ক্যাচিং এবং পেজিং করে তবে সাধারণত মেমরি ম্যাপযুক্ত ফাইল I / O এর সাথে মেমরি বাফারগুলির আকার ছোট হয়। ফাইল এপিআই বড় ব্লকগুলির চেয়ে ছোট ছোট অংশগুলির I / O পছন্দ করার দিকে লক্ষ্য করে। অনুক্রমিক অ্যাক্সেসটি I / O স্ট্যাক এবং কার্নেল ফাইলের মধ্যে এক নজরে এগিয়ে যেতে পছন্দ করে।
রিচার্ড চেম্বারস 16

1
@ কাইস তাই আপনি যদি আই / ও এপিআই ফাইলটিকে ইঙ্গিতটি সরবরাহ করতে পারেন তবে I / O ফাইলটি পারফরম্যান্সের বাধা হয়ে দাঁড়ানোর সময় আপনি আপনার অ্যাপ্লিকেশনটির কার্যকারিতা উন্নত করতে পারেন যা I / O API ফাইলটি ব্যবহার করছে। এবং মেমোরি ম্যাপযুক্ত ফাইল আই / ও ব্যবহার করা বিশেষত একক এমএমএফ পৃষ্ঠার আকারের বেশিরভাগ সিক্যুয়াল অ্যাক্সেস এবং ক্রিয়াকলাপগুলিতে সহায়তা করতে পারে। GNU C gnu.org/software/libc/manual/html_node/… সহ নিম্ন স্তরের আই / ও সম্পর্কে এই URL- এ উপাদান এবং লিঙ্কগুলি দেখুন যা GNU নিম্ন স্তরের যান্ত্রিকগুলির কিছু বর্ণনা করে।
রিচার্ড চেম্বারস

1
@ কাইস আমি setbuf()একটি বড় ফাইল আই / ও বাফার সেট করতে ফাংশনটি ব্যবহার করে সি স্ট্যান্ডার্ড লাইব্রেরি ফাইল এপিআই এর সাথে উল্লেখযোগ্য পারফরম্যান্সের উন্নতি দেখেছি । স্টোরেজ ডিভাইস অ্যাক্সেস হ্রাস করতে আপনি যা কিছু করতে পারেন তা বোনাস হতে পারে। ডিস্ক ড্রাইভের জন্য সিক্সের সংখ্যা হ্রাস করা একটি বড় পার্থক্য আনতে পারে তবে এমন অনেক প্রভাব রয়েছে যা আপনি ডিস্ক প্লাটারগুলিতে কীভাবে ডেটা সংগঠিত করেন, প্লাটারগুলির ঘূর্ণন গতি, মাথা চলাচলের গতি, ক্যাচিং এর মতো অনেক কিছুই করতে পারেন না about ডেটা, ক্যাশে কতটা ভাল আঘাত করে বৈদ্যুতিন-যান্ত্রিক ডিস্ক ইত্যাদি কমাতে পারে
রিচার্ড চেম্বারস

1

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

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

দ্বিতীয় সুবিধাটি হ'ল এটি মেমরির প্রয়োজনীয়তাগুলি হ্রাস করতে পারে। উদাহরণস্বরূপ, একটি Map<Integer, SomeDataType>"স্পার্স অ্যারে" উত্পাদন করতে পারে, এটি কার্যকর যেখানে আপনি এমন অ্যারে চান যেখানে বেশিরভাগ অবৈধ / অব্যবহৃত ডেটা থাকবে এবং নিকট-লিনিয়ার সময়ে অ্যাক্সেস করা যায়। এটি কোনও লিঙ্কযুক্ত তালিকার চেয়ে বেশি কার্যকর হতে পারে (যেখানে এন- তম উপাদানটি অ্যাক্সেস করতে ও ( এন ) সময় লাগে )।

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


ব্যাখ্যার জন্য ধন্যবাদ. তবে "স্পার্স অ্যারে" এর অর্থ কী এবং কীভাবে এটি আরও দক্ষ তা আমি বুঝতে পারি নি।
কাইস

@ কাইস একটি স্পারস অ্যারে এমন একটি তালিকা যা বেশিরভাগ শূন্য মানের সমন্বিত। সমস্ত মানগুলিকে মেমরিতে সংরক্ষণ করার পরিবর্তে, একটি স্পার্স অ্যারে কেবল মেমরির অ-শূন্য মানের সঞ্চয় করে। এটি করে, এটি একবারে সমস্ত মেমরি কেবলমাত্র বরাদ্দ করার চেয়ে বেশি কার্যকর। স্পেস সাশ্রয়ের জন্য স্পার্স অ্যারেগুলি প্রায় 75% খালি থাকতে হবে। ভার্চুয়াল মেমরিটি প্রায়শই এইভাবে কাজ করে, যেখানে ওএস কেবল মেমরির "নোংরা" পৃষ্ঠাগুলি সঞ্চয় করে, সেই সাথে ফাইল সিস্টেমগুলি যা আপনাকে কেবলমাত্র শূন্য-মানগুলির সেক্টর সংরক্ষণ করতে দেয়।
ফায়ারফক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.