Pointer swizzling
কম্পিউটার বিজ্ঞানে, পয়েন্টার সুইজলিং হল নাম বা অবস্থানের উপর ভিত্তি করে রেফারেন্সগুলিকে সরাসরি পয়েন্টার রেফারেন্স (মেমরি অ্যাড্রেস)-এ রূপান্তর করা। এটি সাধারণত একটি এক্সিকিউটেবল ফাইল বা পয়েন্টার-ভিত্তিক ডেটা স্ট্রাকচারের মতো ডিস্ক ফাইল থেকে কোনও স্থানান্তরযোগ্য বস্তুর ডিসেরিয়ালাইজেশন বা লোড করার সময় সঞ্চালিত হয়। বিপরীত অপারেশন, অবস্থান-স্বাধীন প্রতীক বা অবস্থানের সাথে মেমরি পয়েন্টার প্রতিস্থাপন, কখনও কখনও আনসুইজলিং হিসাবে উল্লেখ করা হয়, এবং ক্রমিককরণের (সঞ্চয়) সময় সঞ্চালিত হয়। উদাহরণ এই ধরনের উপাদানগুলি ব্যবহার করে একটি সংযুক্ত তালিকা তথ্য কাঠামো তৈরি করা সহজঃ কাঠামো নোড {int ডেটা; কাঠামো নোড * পরবর্তী;}; কিন্তু একটি ফাইলে তালিকাটি সংরক্ষণ করা এবং তারপর এটি পুনরায় লোড করা (বেশিরভাগ অপারেটিং সিস্টেমে) প্রতিটি লিঙ্ক ভেঙে দেবে এবং তালিকাটিকে অকেজো করে দেবে কারণ নোডগুলি প্রায় কখনও একই মেমরি অবস্থানে লোড করা হবে না। দরকারীভাবে তালিকাটি সংরক্ষণ এবং পুনরুদ্ধারের একটি উপায় হল প্রতিটি নোডে একটি অনন্য আইডি নম্বর বরাদ্দ করা এবং তারপরে পরবর্তী নোডের আইডি নম্বর নির্দেশ করে একটি ক্ষেত্রে পরিণত করে পয়েন্টারগুলি আনসুইজল করাঃ স্ট্রাক নোড _ সেভ করা {int ডেটা; int আইডি _ নম্বর; int আইডি _ নম্বর _ অফ _ নেক্সট _ নোড;}; এই জাতীয় রেকর্ডগুলি যে কোনও ক্রমে একটি ফাইলে সংরক্ষণ করা যেতে পারে এবং তালিকাটি না ভেঙে পুনরায় লোড করা যেতে পারে। অন্যান্য বিকল্পগুলির মধ্যে রয়েছে পরবর্তী নোডের ফাইল অফসেট সংরক্ষণ করা বা সংরক্ষিত রেকর্ডের ক্রমে তার অবস্থান নির্দেশ করে একটি সংখ্যা সংরক্ষণ করা, অথবা কেবল ফাইলের ক্রম অনুসারে নোডগুলি সংরক্ষণ করা। এই ধরনের একটি তালিকা লোড করার পরে, তার সংখ্যার উপর ভিত্তি করে একটি নোড খুঁজে পাওয়া জটিল এবং অকার্যকর (ক্রমিক অনুসন্ধান)। মূল "পরবর্তী" পয়েন্টারগুলির সাথে তালিকাটি অতিক্রম করা খুব দ্রুত ছিল। তালিকাটিকে তার মূল রূপে রূপান্তর করতে বা পয়েন্টারগুলি পরিবর্তন করতে, প্রতিটি নোডের ঠিকানা খুঁজে বের করতে হবে এবং আইডি _ নম্বর _ অফ _ নেক্সট _ নোড ক্ষেত্রগুলিকে সরাসরি পয়েন্টারগুলিতে ডান নোডে ফিরিয়ে আনতে হবে। আনসুইজলিং-এর পদ্ধতিগুলি একটি সম্ভাব্য সীমাহীন সংখ্যক ফর্ম রয়েছে যার মধ্যে একটি পয়েন্টার আনসুইজল করা যেতে পারে, তবে কয়েকটি সর্বাধিক জনপ্রিয়ের মধ্যে রয়েছেঃ ফাইলের পয়েন্ট-টু-অবজেক্টের অফসেট রেকর্ডের কিছু ক্রমে পয়েন্ট-টু-অবজেক্টের সূচক পয়েন্ট-টু-অবজেক্টের মালিকানাধীন একটি অনন্য শনাক্তকারী, যেমন কোনও ব্যক্তির সামাজিক সুরক্ষা নম্বর; ডেটাবেসে, সমস্ত পয়েন্টার এই পদ্ধতিতে আনসুইজল করা হয় (বিদেশী কী দেখুন)। সাধারণ ক্ষেত্রে সুইজলিং করার পদ্ধতিগুলি জটিল হতে পারে। পয়েন্টারের রেফারেন্স গ্রাফে নির্বিচারে সংখ্যক চক্র থাকতে পারে; এটি পুরানো অপরিবর্তিত মান থেকে নতুন ঠিকানায় ম্যাপিং বজায় রাখা জটিল করে তোলে। সহযোগী অ্যারে ম্যাপিং বজায় রাখার জন্য দরকারী, অন্যদিকে প্রস্থ-প্রথম অনুসন্ধানের মতো অ্যালগরিদমগুলি গ্রাফটি অতিক্রম করতে সহায়তা করে, যদিও এই উভয়ের জন্য অতিরিক্ত সংরক্ষণের প্রয়োজন হয়। বিভিন্ন সিরিয়ালাইজেশন লাইব্রেরি সাধারণ সুইজলিং সিস্টেম সরবরাহ করে। যাইহোক, অনেক ক্ষেত্রে, অনুমানকে সহজ করে সুইজলিং করা যেতে পারে, যেমন একটি গাছ বা রেফারেন্সের তালিকা কাঠামো। বিভিন্ন ধরনের সুইজলিং হ 'লঃ স্বয়ংক্রিয় সুইজলিং অন-ডিমান্ড সুইজলিং সম্ভাব্য নিরাপত্তা দুর্বলতা নিরাপত্তার জন্য, আনসুইলিং এবং সুইজলিং অবশ্যই অত্যন্ত সতর্কতার সাথে প্রয়োগ করা উচিত। বিশেষ করে, একজন আক্রমণকারীর একটি বিশেষভাবে তৈরি ফাইলের উপস্থাপনা প্রত্যাশিত এবং সঠিক সীমার বাইরে ঠিকানাগুলিতে প্রবেশাধিকারের অনুমতি দিতে পারে। দুর্বল মেমরি সুরক্ষা সহ সিস্টেমে এটি গোপনীয় তথ্যের প্রকাশ বা কোডের পরিবর্তনের দিকে পরিচালিত করতে পারে যা কার্যকর হওয়ার সম্ভাবনা রয়েছে। যদি সিস্টেমটি ডেটা কার্যকর করার বিরুদ্ধে রক্ষী প্রয়োগ না করে তবে বিভিন্ন ধরণের ম্যালওয়্যার ইনস্টলেশনের মাধ্যমে সিস্টেমটি মারাত্মকভাবে আপোস হতে পারে। সুরক্ষার পদ্ধতিগুলির মধ্যে একটি অ্যাপ্লিকেশনে ডেটা প্রকাশের আগে যাচাইকরণ অন্তর্ভুক্ত রয়েছেঃ যে প্রতিটি অফসেট ডেটা পড়ার সীমার মধ্যে রয়েছে। যে সূচক এবং রেকর্ডগুলির একটি টেবিল একইভাবে সীমাবদ্ধ। সেই শনাক্তকারীগুলি অনন্য এবং সংবেদনশীল হলে এনক্রিপ্ট করা। যে সমস্ত পরিবর্তনশীল-দৈর্ঘ্যের তথ্য প্রকৃত বরাদ্দের চেয়ে বেশি দৈর্ঘ্যের মধ্যে সীমাবদ্ধ নয়। এই বরাদ্দগুলি যুক্তিসঙ্গত আকারের। যে বরাদ্দগুলি ডেটা রিডে লোড করা হয় না সেগুলি সাফ করা হয়, বা কিছু নির্দিষ্ট প্যাটার্ন দিয়ে লোড করা হয়। আরও দেখুন স্থানান্তর, পয়েন্টার পরিবর্তনের একটি আগ্রহী রূপ রেফারেন্স আরও পড়ুন (49 পৃষ্ঠা) স্মৃতি ব্যবস্থাপনা