সফ্টওয়্যার বিঘ্নিত বনাম ফাংশন


10

MCUs এর সাথে প্রায় 3 বছর কাজ করার পরেও আমি জানি না সফ্টওয়্যার বিঘ্নের ব্যবহার কী? আমি এসটিএম 32 এর সাথে বেশ কয়েকটি কাজ করেছি এবং আমি কখনও সফ্টওয়্যার বিঘ্ন ব্যবহার করি নি। আসলে এটি আমার কাছে একটি বড় প্রশ্ন:

কেন আমরা যখন কোনও কাজটি করার জন্য একটি সাধারণ ফাংশন ব্যবহার করতে পারি, তখন আমাদের কোনও সফ্টওয়্যার বাধা দেওয়া উচিত? একটি সফ্টওয়্যার বাধা এবং একটি ফাংশন মধ্যে পার্থক্য কি?

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


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

1
@ মিঃফুকি যে হার্ডওয়্যারটি আপনার সম্পর্কে কথা বলছে তাতে বাধা রয়েছে। ওপি সফটওয়্যার বিঘ্ন সম্পর্কে কথা বলছে।
ব্রাহানস

উত্তর:


19

একটি ফাংশন এবং সফ্টওয়্যার বিঘ্নের মধ্যে প্রধান পার্থক্যটি প্রসঙ্গ হিসাবে পরিচিত ।

  • আপনার মূল প্রোগ্রামের প্রসঙ্গে একটি ফাংশন চলে।
  • একটি বাধা বিঘ্নিত হ্যান্ডলারের প্রসঙ্গে চলে।

একটি সাধারণ সিস্টেমে এটি কোনও সত্যিকারের পার্থক্য নাও থাকতে পারে, এবং সফটওয়্যার বিঘ্নগুলি সহজেই রোমে হার্ড কোডিংযুক্ত লাইব্রেরি রুটিন সরবরাহের সুবিধাজনক উপায় হিসাবে ব্যবহার করা যেতে পারে - আপনার প্রতিটি রুটিনের ঠিকানা, কেবল আইডি কোড এবং প্রধান প্রবেশ পয়েন্ট এটি আপনার কোডটিকে আরও বহনযোগ্য করে তোলে।

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


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

4
সম্ভবত এটিও নোট করুন যে সেই "সফ্টওয়্যার বিঘ্ন "গুলিকে" সিঙ্ক্রোনাস বিঘ্ন "হিসাবেও অভিহিত করা হয়েছে, কারণ অ্যাপ্লিকেশন কোডটি ঠিক এমন সময় এবং কেন এই ধরনের একটি বিঘ্ন ঘটেছিল তা জানে," অ্যাসিনক্রোনাস বিঘ্নিত "এর বিপরীতে যা হতে পারে, অ্যাপ্লিকেশন, মূলত যে কোনও সময় অযৌক্তিক পদ্ধতিতে ঘটে।
জিমিবি

@ হ্যানোবাইন্ডার: আমার মনে হয় ওপি কর্টেক্স-এম 3 ভেক্টরড ইন্টারপ্যান্ট কন্ট্রোলারের কাছে বাধা অনুরোধ পোস্ট করার কথা বলছে; যদি উচ্চ-অগ্রাধিকারের বিঘ্নিত পোস্টের কোড যদি নিম্ন-অগ্রাধিকার পোস্টে থাকে তবে অনুরোধটি পরবর্তী সময়ে অগ্রাহ্য করা হবে যখন সমস্ত উচ্চ-অগ্রাধিকারের বাধা শেষ হয়ে যায়।
সুপারক্যাট

12

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

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

একটি সফ্টওয়্যার বিঘ্নিত এবং একটি ফাংশন মধ্যে পার্থক্য কি?

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


2
আর একটি সাধারণ প্যাটার্নটি হতে পারে টাইমিং-সমালোচনামূলক স্টাফগুলি পরিচালনা করতে 100KHz ব্যাঘাত ঘটতে পারে এবং এর জন্য 1kHz টাইমার টিক প্রয়োজন, তবে দুটি পৃথক টাইমার উপলব্ধ নাও হতে পারে। 100kHz বিঘ্নিত রুটিনটি বলার জন্য অনেক বেশি ওভারহেড লাগবে না if ((timer_count--) & 0x80000000) SET_TICK_INTERRUPT_FLAG(); else timer_count = temp-1; অন্য ব্যাহত তার কাজটি করতে পারে এবং বাধা সংক্ষেপে অক্ষম হয়ে টাইমার_কাউন্টে 100 যোগ করে; এমনকি যদি 1kHz রুটিনটি সম্পাদন করতে 10us এর বেশি সময় নেয় তবে এটি 100kHz কে হস্তক্ষেপ করবে না।
সুপারক্যাট

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

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

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

ধন্যবাদ! উত্তরের এই তথ্যের কিছু অন্তর্ভুক্ত করা ভাল হতে পারে, এটি "সফ্টওয়্যার বাধা" কোনটি তা পরিষ্কার করে দেওয়া।
ডোমেন

7

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

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

লিনাক্স এবং MS-DOS এর এক্স 86 ব্যবহার সফ্টওয়্যার বিঘ্নিত সিস্টেম কল ইন্টারফেস, তাই আমি একটি উদাহরণ হিসাবে যারা এর প্রতি সংযোগ আছে করব।


1
এবং অনেক ক্ষেত্রে যেখানে ওএস নরম বিঘ্ন ব্যবহার করে, জীবনকে সহজ করার জন্য এগুলি ফাংশনে আবদ্ধ হয়।
hildred

1
আমি এখনও ডসের জন্য জিনিসগুলি (একেবারে নতুন) প্রোগ্রাম করি এবং 21 টি হ্যান্ডলারের সাথে খুব পরিচিত। আমার / ও বুদ্ধিমানের প্রয়োজন অনুসারে প্রায় সমস্ত কিছুই ডস আইএসআর দিয়ে পরিচালনা করা হয়।
আর ড্রাস্ট

নোট করুন যে লিনাক্সের জন্য উদ্ধৃত পৃষ্ঠাটি 1993-1996 এর from
একটি সিভিএন

আমি লিঙ্কটি আরও একটি আপ-টু-ডেটের সাথে প্রতিস্থাপন করেছি।
অ্যাডাম হাওন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.