ট্র্যাপ এবং ইন্টারপটের মধ্যে পার্থক্য কী?


159

ট্র্যাপ এবং ইন্টারপটের মধ্যে পার্থক্য কী?

যদি পরিভাষাটি বিভিন্ন সিস্টেমের জন্য পৃথক হয়, তবে তারা x86 এর অর্থ কী?

উত্তর:


203

একটি ফাঁদ একটি ব্যবহারকারী প্রক্রিয়া ব্যতিক্রম। এটি শূন্য বা অবৈধ মেমরি অ্যাক্সেস দ্বারা বিভাজন দ্বারা সৃষ্ট। এটি কার্নেল রুটিন (একটি সিস্টেম কল ) শুরু করার স্বাভাবিক উপায় কারণ এটি ব্যবহারকারীর কোডের চেয়ে উচ্চতর অগ্রাধিকার নিয়ে চলে। হ্যান্ডলিং সমকালীন (যাতে ব্যবহারকারীর কোডটি স্থগিত করা হয় এবং পরে অব্যাহত থাকে)। এক অর্থে তারা "সক্রিয়" - বেশিরভাগ সময়, কোডটি ফাঁদটি ঘটবে বলে প্রত্যাশা করে এবং এই সত্যটির উপর নির্ভর করে।

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

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


5
এটি আকর্ষণীয় যে lxr.free-electrons.com/source/arch/x86/kernel/… শূন্য দ্বারা বিভক্ত করা একটি হার্ডওয়্যার বিঘ্নিত হিসাবে আরম্ভ করা হয়েছে, তা কেন?
অ্যালেক্স ক্রেইমার

8
কারণ এটি সত্যই একটি বাধা যা সিপিইউ প্রেরণ করে যখন এএলইউ এই সমস্যাটি খুঁজে পায়। ঠিক যেমন একটি সেগমেন্টেশন ত্রুটি। যদিও সমস্ত গণিত ত্রুটিগুলি বিঘ্ন ঘটায় না (ওভারফ্লো হয় না), যদিও।
অ্যারোন দিগুল্লা

4
এটা বোধগম্য. তবে তারপরে, কিছুটা বিভ্রান্তির কারণ হ'ল পূর্ববর্তী লিনাক্স কার্নেলগুলিতে কেন এটি সফ্টওয়্যার ট্র্যাপ হিসাবে সূচনা করা হয়েছিল: set_trap_gate (0, & split_error);
অ্যালেক্স ক্রিমার

11
" কিছুটা বিভ্রান্তি" বলতে কী বোঝ? এটি খুব বিভ্রান্তিকর :-) এখানে সমস্যা হ'ল শূন্য দ্বারা বিভাজন করা একটি হার্ডওয়্যার বিঘ্নিত (আইআরকিউ / ভেক্টর 0) তবে কার্নেল বিকাশকারীদের এটি পরিচালনা করার বিভিন্ন উপায় রয়েছে। সুতরাং একটি ব্যবহারকারী প্রক্রিয়া থেকে, এটি একটি ফাঁদ কিন্তু সিপিইউ দিক থেকে, এটি একটি বাধা আছে। কে ঠিক আছে? কোনটি? উভয়?
অ্যারন ডিজুল্লা

3
অবশ্যই এটি x86 সিপিইউয়ের জন্যই সত্য। অন্যান্য সিপিইউগুলি আলাদাভাবে কাজ করে।
অ্যারন দিগুল্লা

110

ফাঁদ এবং বাধা ঘনিষ্ঠভাবে সম্পর্কিত। ফাঁদগুলি এক ধরণের ব্যতিক্রম এবং ব্যতিক্রমগুলি বাধাগুলির মতো।

ইন্টেল এক্স 86 দুইটি ওভারল্যাপ বিভাগগুলির vectored ইভেন্টগুলি (সংজ্ঞায়িত বিঘ্নিত বনাম ব্যতিক্রম ), এবং ব্যতিক্রম শ্রেণীর ( ফল্ট বনাম যাত্রীর সঙ্গের নিজলটবহর বনাম aborts )।

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

ভেক্টরড ইভেন্টস

Vectored ঘটনাবলী ( বিঘ্নিত এবং ব্যতিক্রম ) প্রসেসর (যথেষ্ট যেমন যে মৃত্যুদন্ড পরে যে বিন্দু থেকে চালিয়ে যেতে পারেন) প্রসেসর রাষ্ট্রীয় অনেক সংরক্ষণ পর একটি ইন্টারাপ্ট হ্যান্ডলার মধ্যে তিড়িং লাফ হতে পারে।

ব্যতিক্রম এবং বাধাগুলির একটি আইডি রয়েছে যা ভেক্টর নামে পরিচিত, এটি নির্ধারণ করে যে প্রসেসরটি কোন বাধা হ্যান্ডলারের কাছে যায়। বাধা হ্যান্ডলারগুলি বিঘ্নিত বর্ণনাকারী সারণীর মধ্যে বর্ণিত হয়।

ব্যাঘাত

ব্যাঘাত , একটি প্রোগ্রাম চালানোর সময় র্যান্ডম সময়ে ঘটতে হার্ডওয়্যার থেকে সংকেত প্রতিক্রিয়ায়। প্রসেসরের বহিরাগত ইভেন্টগুলি হ্যান্ডেল করতে সিস্টেম হার্ডওয়্যার বিঘ্ন ব্যবহার করে যেমন পেরিফেরিয়াল ডিভাইসগুলির জন্য অনুরোধ। সফ্টওয়্যার আইএনটি এন নির্দেশনা কার্যকর করে বাধা তৈরি করতে পারে।

ব্যতিক্রমসমূহ

ব্যতিক্রম ঘটে যখন প্রসেসর কোনও নির্দেশ কার্যকর করার সময় ত্রুটির শর্ত সনাক্ত করে, যেমন শূন্য দ্বারা বিভাজন। প্রসেসর সুরক্ষা লঙ্ঘন, পৃষ্ঠা ত্রুটি এবং অভ্যন্তরীণ মেশিন ত্রুটি সহ বিভিন্ন ত্রুটির শর্তাদি সনাক্ত করে।

ব্যতিক্রম শ্রেণিবদ্ধকরণ

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

সংক্ষিপ্তসার: নির্দেশাবলী নির্দেশককে ফাঁদে ফেলে, ত্রুটিগুলি ঘটে না এবং 'বিস্ফোরণ' বাতিল করে।

ফাঁদ

একটি ফাঁদ একটি ব্যতিক্রম যা ফাঁসির নির্দেশ কার্যকর করার সাথে সাথেই প্রতিবেদন করা হয়। ট্র্যাপগুলি প্রোগ্রামের ধারাবাহিকতা হ্রাস না করে কোনও প্রোগ্রাম বা কার্য সম্পাদন চালিয়ে যাওয়ার অনুমতি দেয়। ট্র্যাপ হ্যান্ডলারটির ফেরতের ঠিকানা ফাঁদ দেওয়ার নির্দেশের পরে কার্যকর করার নির্দেশকে নির্দেশ করে।

ফল্ট

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

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

বাতিল

একটি গর্ভপাত একটি ব্যতিক্রম যা সর্বদা ব্যতিক্রমের কারণ নির্দেশের সঠিক অবস্থানের প্রতিবেদন করে না এবং ব্যতিক্রম ঘটায় এমন প্রোগ্রাম বা কার্যটি পুনরায় আরম্ভ করার অনুমতি দেয় না। সিস্টেমগুলি টেবিলগুলিতে হার্ডওয়্যার ত্রুটি এবং অসামঞ্জস্যপূর্ণ বা অবৈধ মানগুলির মতো গুরুতর ত্রুটিগুলি রিপোর্ট করতে অ্যাবোর্টগুলি ব্যবহার করা হয়।

এজ কেস

সফ্টওয়্যার চালিত বাধা (আইএনটি নির্দেশ দ্বারা চালিত) একটি ফাঁদ-জাতীয় আচরণ করে। প্রসেসর এর রাজ্য সংরক্ষণ করে বাধা হ্যান্ডলারের কাছে লাফানোর আগে নির্দেশনাটি সম্পূর্ণ হয়।


6
এটি এমন একটি ভাল উত্তর আমি ইতিবাচক ছিলাম "নতুন ব্যবহারকারীর দেরী উত্তর" পর্যালোচনা সারিটি আমাকে মনোযোগ দিচ্ছে কিনা তা নিশ্চিত করার জন্য আমাকে একটি পরীক্ষা দিচ্ছিল।
নুমেনন

1
ধন্যবাদ! তার অর্থ আমার কাছে
অনেকটাই

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

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

1
আমি মনে করি এই উত্তরটি এটি সর্বোত্তমভাবে বর্ণনা করে। এটি অস্পষ্ট রেখাটি নিয়ে আলোচনা করে যা উভয়ের মধ্যে বিদ্যমান থাকতে পারে। এবং উল্লেখ করুন যে পৃষ্ঠার ত্রুটিগুলি সিপিইউতে কোনও নির্দেশ পুনরায় চেষ্টা করার ফলে একটি ফাঁদটি নির্দেশের উপরে চলে যায় এবং এগিয়ে যায়।
in70x

9

সাধারণভাবে বলতে গেলে, ব্যতিক্রম, ফল্টস, অ্যাব্রোস্টস, ট্র্যাপস এবং ইন্টারপ্টের মতো পদগুলির অর্থ একই জিনিস এবং এটিকে "বাধা" বলা হয়।

ট্র্যাপ এবং বিঘ্নের মধ্যে পার্থক্য আসার:

ফাঁদ: কোনও প্রোগ্রামার হ'ল একটি বিশেষ হ্যান্ডলার রুটিনে নিয়ন্ত্রণের স্থানান্তর এবং প্রত্যাশিত ট্রান্সফার। (যেমন: 80x86 INT নির্দেশনা একটি ভাল উদাহরণ)

যেখানে হিসাবে

বাধা (হার্ডওয়্যার): সিপিইউর বাহ্যিক বাহ্যিক হার্ডওয়্যার ইভেন্টের ভিত্তিতে একটি প্রোগ্রাম নিয়ন্ত্রণ বাধা কী (উদাহরণস্বরূপ: কীবোর্ডে একটি কী টিপুন বা টাইমার চিপে টাইম আউট)


ভাল সংজ্ঞা। উৎস?
অ্যালেক্সলম্বা ৮

6

একটি ফাঁদ একটি বিশেষ ধরণের বাধা যা সাধারণত সফ্টওয়্যার বিঘ্ন হিসাবে চিহ্নিত করা হয় । একটি বাধা একটি আরও সাধারণ শব্দ যা উভয় হার্ডওয়্যার বিঘ্ন (হার্ডওয়্যার ডিভাইসগুলি থেকে বিঘ্নিত) এবং সফ্টওয়্যার বিঘ্ন (সফ্টওয়্যার থেকে বিঘ্ন, যেমন ট্র্যাপস ) অন্তর্ভুক্ত করে।


4
এটি এমন বিষয়গুলিকে আরও বিভ্রান্ত করে যে কিছু লেখক (তেনেনবাউম) "হার্ডওয়্যার ট্র্যাপগুলি" উল্লেখ করেছেন। আমাদের যদি হার্ডওয়্যার ট্র্যাপ এবং সফ্টওয়্যার বিঘ্ন ঘটতে পারে তবে স্পষ্টভাবে সংজ্ঞাগুলি মোটামুটি কর্দমাক্ত এবং যে কোনও উপায়ে যেতে পারে, সর্বদা হার্ডওয়্যার বা সফ্টওয়্যার শব্দটির প্রয়োজন হয় iring
The 111

3

একটি ফাঁদ প্রোগ্রাম হিসাবে কোড দ্বারা কল করা হয় এবং যেমন ওএস রুটিন কল করতে ব্যবহৃত (যেমন সাধারণত সিঙ্ক্রোনাস)। একটি বাধাকে ইভেন্টগুলি বলা হয় (অনেক সময় হার্ডওয়্যার, যেমন কার্ড হিসাবে ডেটা প্রাপ্ত নেটওয়ার্ক কার্ড, বা সিপিইউ টাইমার), এবং - নাম অনুসারে - স্বাভাবিক নিয়ন্ত্রণ প্রবাহকে বাধা দেয়, কারণ সিপিইউ পরিচালনা করার জন্য ড্রাইভারের রুটিনে স্যুইচ করতে হয় ঘটনা.


2

একটি বাধা হ'ল সিস্টেমের মধ্যে একটি হার্ডওয়্যার-উত্পাদিত প্রবাহের প্রবাহ। বাধা কারণের সাথে মোকাবিলা করতে একটি বাধা হ্যান্ডলারকে তলব করা হয়; এরপরে নিয়ন্ত্রণটি বাধাপ্রাপ্ত প্রসঙ্গ এবং নির্দেশে ফিরে আসে। একটি ফাঁদ একটি সফ্টওয়্যার উত্পাদিত বাধা হয়। ডিভাইস ভোটদানের প্রয়োজনীয়তা বাড়াতে I / O এর সমাপ্তির সংকেত দিতে বাধা ব্যবহার করা যেতে পারে। একটি ফাঁদ অপারেটিং সিস্টেমের রুটিনগুলিতে কল করতে বা গাণিতিক ত্রুটিগুলি ধরতে ব্যবহার করা যেতে পারে।


2

আমি মনে করি ট্র্যাপগুলি বর্তমান নির্দেশের প্রয়োগের ফলে ঘটে এবং তাই এগুলিকে সিঙ্ক্রোনাস ইভেন্ট হিসাবে ডাকা হয়। প্রসেসরে চলমান একটি স্বতন্ত্র নির্দেশের ফলে যেমন বাধা সৃষ্টি হয় যা বাহ্যিক ঘটনার সাথে সম্পর্কিত এবং সুতরাং এটি অ্যাসিক্রোনাস হিসাবে পরিচিত।


2

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


1

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


1
সিস্টেম কল কীভাবে ফাঁদ হয় তা আপনি ব্যাখ্যা করতে পারেন?
রাধা গোগিয়া
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.