উত্তর:
একটি ফাঁদ একটি ব্যবহারকারী প্রক্রিয়া ব্যতিক্রম। এটি শূন্য বা অবৈধ মেমরি অ্যাক্সেস দ্বারা বিভাজন দ্বারা সৃষ্ট। এটি কার্নেল রুটিন (একটি সিস্টেম কল ) শুরু করার স্বাভাবিক উপায় কারণ এটি ব্যবহারকারীর কোডের চেয়ে উচ্চতর অগ্রাধিকার নিয়ে চলে। হ্যান্ডলিং সমকালীন (যাতে ব্যবহারকারীর কোডটি স্থগিত করা হয় এবং পরে অব্যাহত থাকে)। এক অর্থে তারা "সক্রিয়" - বেশিরভাগ সময়, কোডটি ফাঁদটি ঘটবে বলে প্রত্যাশা করে এবং এই সত্যটির উপর নির্ভর করে।
একটি বাধা হ'ল হার্ডওয়্যার দ্বারা উত্পাদিত এমন কিছু জিনিস (যেমন হার্ড ডিস্ক, গ্রাফিক্স কার্ড, আই / ও পোর্টস ইত্যাদি ইত্যাদি)। এগুলি অবিচ্ছিন্ন (যেমন তারা ব্যবহারকারীর কোডের পূর্বাভাসযোগ্য স্থানে ঘটে না) বা "প্যাসিভ" যেহেতু বাধাপ্রাপ্ত হ্যান্ডলারটি তাদের শেষ পর্যন্ত হওয়ার জন্য অপেক্ষা করতে হয়।
আপনি ট্র্যাপটিকে এক ধরণের সিপিইউ-অভ্যন্তরীণ বাধা হিসাবে দেখতে পাচ্ছেন যেহেতু ট্র্যাপ হ্যান্ডলারের হ্যান্ডলারটি কোনও বাধা হ্যান্ডলারের মতো দেখায় (নিবন্ধগুলি এবং স্ট্যাক পয়েন্টারগুলি সংরক্ষণ করা হয়, একটি প্রসঙ্গের সুইচ আছে, কিছু ক্ষেত্রে এটি কার্যকর করা আবার শুরু হতে পারে যেখানে এটি ছেড়ে যায়) ।
ফাঁদ এবং বাধা ঘনিষ্ঠভাবে সম্পর্কিত। ফাঁদগুলি এক ধরণের ব্যতিক্রম এবং ব্যতিক্রমগুলি বাধাগুলির মতো।
ইন্টেল এক্স 86 দুইটি ওভারল্যাপ বিভাগগুলির vectored ইভেন্টগুলি (সংজ্ঞায়িত বিঘ্নিত বনাম ব্যতিক্রম ), এবং ব্যতিক্রম শ্রেণীর ( ফল্ট বনাম যাত্রীর সঙ্গের নিজলটবহর বনাম aborts )।
এই পোস্টে সমস্ত উদ্ধৃতি ইন্টেল সফ্টওয়্যার বিকাশকারী ম্যানুয়াল এর এপ্রিল 2016 সংস্করণ থেকে । (যথাযথ এবং জটিল) x86 দৃষ্টিকোণের জন্য, আমি ইন্টারপট এবং ব্যতিক্রম হ্যান্ডলিং সম্পর্কিত এসডিএমের অধ্যায়টি পড়ার পরামর্শ দিই।
Vectored ঘটনাবলী ( বিঘ্নিত এবং ব্যতিক্রম ) প্রসেসর (যথেষ্ট যেমন যে মৃত্যুদন্ড পরে যে বিন্দু থেকে চালিয়ে যেতে পারেন) প্রসেসর রাষ্ট্রীয় অনেক সংরক্ষণ পর একটি ইন্টারাপ্ট হ্যান্ডলার মধ্যে তিড়িং লাফ হতে পারে।
ব্যতিক্রম এবং বাধাগুলির একটি আইডি রয়েছে যা ভেক্টর নামে পরিচিত, এটি নির্ধারণ করে যে প্রসেসরটি কোন বাধা হ্যান্ডলারের কাছে যায়। বাধা হ্যান্ডলারগুলি বিঘ্নিত বর্ণনাকারী সারণীর মধ্যে বর্ণিত হয়।
ব্যাঘাত , একটি প্রোগ্রাম চালানোর সময় র্যান্ডম সময়ে ঘটতে হার্ডওয়্যার থেকে সংকেত প্রতিক্রিয়ায়। প্রসেসরের বহিরাগত ইভেন্টগুলি হ্যান্ডেল করতে সিস্টেম হার্ডওয়্যার বিঘ্ন ব্যবহার করে যেমন পেরিফেরিয়াল ডিভাইসগুলির জন্য অনুরোধ। সফ্টওয়্যার আইএনটি এন নির্দেশনা কার্যকর করে বাধা তৈরি করতে পারে।
ব্যতিক্রম ঘটে যখন প্রসেসর কোনও নির্দেশ কার্যকর করার সময় ত্রুটির শর্ত সনাক্ত করে, যেমন শূন্য দ্বারা বিভাজন। প্রসেসর সুরক্ষা লঙ্ঘন, পৃষ্ঠা ত্রুটি এবং অভ্যন্তরীণ মেশিন ত্রুটি সহ বিভিন্ন ত্রুটির শর্তাদি সনাক্ত করে।
ব্যতিক্রমগুলি ত্রুটি , ফাঁদ , বা অ্যাবার্ট হিসাবে শ্রেণিবদ্ধ করা হয় যেগুলি তারা রিপোর্ট করার পদ্ধতি এবং প্রোগ্রাম বা টাস্কের ধারাবাহিকতা বিনষ্ট না করে ব্যতিরেকে যে নির্দেশনাটি পুনরায় চালু করা যেতে পারে তার উপর নির্ভর করে।
সংক্ষিপ্তসার: নির্দেশাবলী নির্দেশককে ফাঁদে ফেলে, ত্রুটিগুলি ঘটে না এবং 'বিস্ফোরণ' বাতিল করে।
একটি ফাঁদ একটি ব্যতিক্রম যা ফাঁসির নির্দেশ কার্যকর করার সাথে সাথেই প্রতিবেদন করা হয়। ট্র্যাপগুলি প্রোগ্রামের ধারাবাহিকতা হ্রাস না করে কোনও প্রোগ্রাম বা কার্য সম্পাদন চালিয়ে যাওয়ার অনুমতি দেয়। ট্র্যাপ হ্যান্ডলারটির ফেরতের ঠিকানা ফাঁদ দেওয়ার নির্দেশের পরে কার্যকর করার নির্দেশকে নির্দেশ করে।
একটি ত্রুটি একটি ব্যতিক্রম যা সাধারণত সংশোধন করা যেতে পারে এবং এটি একবার সংশোধন করার পরে ধারাবাহিকতা না হারিয়ে প্রোগ্রামটি পুনরায় আরম্ভ করার অনুমতি দেয়। কোনও ত্রুটির প্রতিবেদন করা হলে, প্রসেসর ত্রুটিযুক্ত নির্দেশ কার্যকর করার শুরুর আগে মেশিনের রাজ্যটিকে রাজ্যে পুনরুদ্ধার করে। ফল্ট হ্যান্ডলারটির জন্য ফেরতের ঠিকানা (সিএস এবং ইআইপি নিবন্ধগুলির সংরক্ষিত সামগ্রী) ত্রুটিযুক্ত নির্দেশ অনুসরণ না করে ফল্টিং নির্দেশকে নির্দেশ করে।
উদাহরণ: একটি পৃষ্ঠার ত্রুটি প্রায়শই পুনরুদ্ধারযোগ্য। কোনও অ্যাপ্লিকেশনের ঠিকানা স্পেসের একটি অংশটি রাম থেকে ডিস্কে বদলানো হতে পারে। অ্যাপ্লিকেশনটি কোনও পৃষ্ঠার ত্রুটিটি ট্রিগার করবে যখন এটি অদলবদল হয়ে যাওয়া মেমরিটিতে অ্যাক্সেস করার চেষ্টা করে। কার্নেল সেই মেমরিটিকে ডিস্ক থেকে রামে টেনে আনতে পারে এবং হ্যান্ড কন্ট্রোলটিকে অ্যাপ্লিকেশনটিতে ফিরিয়ে আনতে পারে। অ্যাপ্লিকেশনটি যেখানেই এটি ছেড়ে গেছে সেখানেই চলতে থাকবে (ত্রুটিযুক্ত নির্দেশে যা অদলবদলের মেমরি অ্যাক্সেস করে চলেছিল) তবে এবার মেমরির অ্যাক্সেসটি দোষ ছাড়াই সফল হওয়া উচিত।
একটি গর্ভপাত একটি ব্যতিক্রম যা সর্বদা ব্যতিক্রমের কারণ নির্দেশের সঠিক অবস্থানের প্রতিবেদন করে না এবং ব্যতিক্রম ঘটায় এমন প্রোগ্রাম বা কার্যটি পুনরায় আরম্ভ করার অনুমতি দেয় না। সিস্টেমগুলি টেবিলগুলিতে হার্ডওয়্যার ত্রুটি এবং অসামঞ্জস্যপূর্ণ বা অবৈধ মানগুলির মতো গুরুতর ত্রুটিগুলি রিপোর্ট করতে অ্যাবোর্টগুলি ব্যবহার করা হয়।
সফ্টওয়্যার চালিত বাধা (আইএনটি নির্দেশ দ্বারা চালিত) একটি ফাঁদ-জাতীয় আচরণ করে। প্রসেসর এর রাজ্য সংরক্ষণ করে বাধা হ্যান্ডলারের কাছে লাফানোর আগে নির্দেশনাটি সম্পূর্ণ হয়।
সাধারণভাবে বলতে গেলে, ব্যতিক্রম, ফল্টস, অ্যাব্রোস্টস, ট্র্যাপস এবং ইন্টারপ্টের মতো পদগুলির অর্থ একই জিনিস এবং এটিকে "বাধা" বলা হয়।
ট্র্যাপ এবং বিঘ্নের মধ্যে পার্থক্য আসার:
ফাঁদ: কোনও প্রোগ্রামার হ'ল একটি বিশেষ হ্যান্ডলার রুটিনে নিয়ন্ত্রণের স্থানান্তর এবং প্রত্যাশিত ট্রান্সফার। (যেমন: 80x86 INT নির্দেশনা একটি ভাল উদাহরণ)
যেখানে হিসাবে
বাধা (হার্ডওয়্যার): সিপিইউর বাহ্যিক বাহ্যিক হার্ডওয়্যার ইভেন্টের ভিত্তিতে একটি প্রোগ্রাম নিয়ন্ত্রণ বাধা কী (উদাহরণস্বরূপ: কীবোর্ডে একটি কী টিপুন বা টাইমার চিপে টাইম আউট)
একটি ফাঁদ একটি বিশেষ ধরণের বাধা যা সাধারণত সফ্টওয়্যার বিঘ্ন হিসাবে চিহ্নিত করা হয় । একটি বাধা একটি আরও সাধারণ শব্দ যা উভয় হার্ডওয়্যার বিঘ্ন (হার্ডওয়্যার ডিভাইসগুলি থেকে বিঘ্নিত) এবং সফ্টওয়্যার বিঘ্ন (সফ্টওয়্যার থেকে বিঘ্ন, যেমন ট্র্যাপস ) অন্তর্ভুক্ত করে।
একটি ফাঁদ প্রোগ্রাম হিসাবে কোড দ্বারা কল করা হয় এবং যেমন ওএস রুটিন কল করতে ব্যবহৃত (যেমন সাধারণত সিঙ্ক্রোনাস)। একটি বাধাকে ইভেন্টগুলি বলা হয় (অনেক সময় হার্ডওয়্যার, যেমন কার্ড হিসাবে ডেটা প্রাপ্ত নেটওয়ার্ক কার্ড, বা সিপিইউ টাইমার), এবং - নাম অনুসারে - স্বাভাবিক নিয়ন্ত্রণ প্রবাহকে বাধা দেয়, কারণ সিপিইউ পরিচালনা করার জন্য ড্রাইভারের রুটিনে স্যুইচ করতে হয় ঘটনা.
একটি বাধা হ'ল সিস্টেমের মধ্যে একটি হার্ডওয়্যার-উত্পাদিত প্রবাহের প্রবাহ। বাধা কারণের সাথে মোকাবিলা করতে একটি বাধা হ্যান্ডলারকে তলব করা হয়; এরপরে নিয়ন্ত্রণটি বাধাপ্রাপ্ত প্রসঙ্গ এবং নির্দেশে ফিরে আসে। একটি ফাঁদ একটি সফ্টওয়্যার উত্পাদিত বাধা হয়। ডিভাইস ভোটদানের প্রয়োজনীয়তা বাড়াতে I / O এর সমাপ্তির সংকেত দিতে বাধা ব্যবহার করা যেতে পারে। একটি ফাঁদ অপারেটিং সিস্টেমের রুটিনগুলিতে কল করতে বা গাণিতিক ত্রুটিগুলি ধরতে ব্যবহার করা যেতে পারে।
আমি মনে করি ট্র্যাপগুলি বর্তমান নির্দেশের প্রয়োগের ফলে ঘটে এবং তাই এগুলিকে সিঙ্ক্রোনাস ইভেন্ট হিসাবে ডাকা হয়। প্রসেসরে চলমান একটি স্বতন্ত্র নির্দেশের ফলে যেমন বাধা সৃষ্টি হয় যা বাহ্যিক ঘটনার সাথে সম্পর্কিত এবং সুতরাং এটি অ্যাসিক্রোনাস হিসাবে পরিচিত।
বাধা হ'ল হার্ডওয়্যার বাধা, যখন ট্র্যাপগুলি হ'ল সফটওয়্যার-চালিত বাধা। হার্ডওয়্যার বিঘ্ন ঘটনার ঘটনাগুলি সাধারণত অন্যান্য হার্ডওয়্যার বিঘ্ন অক্ষম করে, তবে ফাঁদগুলির ক্ষেত্রে এটি সত্য নয়। কোনও ফাঁদ সরবরাহ না হওয়া পর্যন্ত আপনার যদি হার্ডওয়্যার বিঘ্ন অস্বীকার করা দরকার, আপনাকে স্পষ্টভাবে বিঘ্নিত পতাকাটি পরিষ্কার করতে হবে। এবং সাধারণত কম্পিউটারে বিঘ্নিত পতাকা ফাঁদগুলির বিপরীতে (হার্ডওয়্যার) বিঘ্ন ঘটায়। এর অর্থ এই পতাকাটি সাফ করা ফাঁদ আটকাবে না। ফাঁদগুলির বিপরীতে, বিঘ্নগুলি সিপিইউর পূর্ববর্তী অবস্থাটি সংরক্ষণ করা উচিত।
একটি ফাঁদ একটি সফ্টওয়্যার বাধাপ্রাপ্ত হয়। আপনি যদি এমন কোনও প্রোগ্রাম লিখে থাকেন যেখানে আপনি ভেরিয়েবলকে শূন্য মানের দ্বারা বিভাজন হিসাবে ঘোষণা করেন তবে এটি একটি ট্র্যাপ হিসাবে বিবেচিত হবে hen আপনি যখনই এই প্রোগ্রামটি চালাবেন এটি একই সময়ে একই ত্রুটি ছুঁড়ে ফেলবে yste সিস্টেম কলটি একটি ফাঁদের বিশেষ সংস্করণ যাতে কোনও প্রোগ্রাম ওএসকে তার প্রয়োজনীয় পরিষেবার জন্য জিজ্ঞাসা করে। আই / ও ত্রুটির মতো বিঘ্নের (হার্ডওয়্যার বিঘ্নিত করার জন্য একটি সাধারণ শব্দ) ক্ষেত্রে, সিপিইউ এলোমেলো সময়ে বাধাগ্রস্ত হয় এবং অবশ্যই এটি আমাদের প্রোগ্রামারদের দোষ নয় the এটি এমন হার্ডওয়্যার যা তাদের সামনে এনে দেয়।