রিয়েল-টাইম হওয়ার জন্য সফ্টওয়্যার কীভাবে পরিবর্তন করবেন? [বন্ধ]


9

প্রথমটির জন্য আমি উল্লেখ করতে চাই যে আমি রিয়েল-টাইম সিস্টেম প্রোগ্রামিংয়ে নবাগত, তাই আমার প্রশ্নগুলি সঠিক কিনা তা সম্পর্কে আমি নিশ্চিত নই। এর জন্য দুঃখিত তবে আমার কিছু সাহায্য দরকার

সংক্ষেপে প্রশ্ন: হার্ড রিয়েল-টাইম সফ্টওয়্যারটি কার্যকর সময়সীমা পূরণ করে তা নিশ্চিত করার জন্য কীভাবে এটি প্রয়োগ করবেন? এটি কিউএনএক্স কিছু বৈশিষ্ট্য ব্যবহার করা প্রয়োজন? অথবা লিনাক্স, কিউএনএক্সে পোর্ট করার জন্য এটি লেখার পক্ষে যথেষ্ট এবং এটি ডিফল্টরূপে রিয়েল-টাইম হবে?

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

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

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

সম্ভবত কিউএনএক্সের জন্য সমস্ত রিয়েল-টাইম বৈশিষ্ট্য বাস্তবায়নের জন্য আমাদের প্রচেষ্টা করা দরকার? তবে আমি কীভাবে এটি করব তা এখনও বুঝতে পারি না। কেউ কি এই প্রশ্নের উপর আলোকপাত করতে পারে?


55
যদি আপনার প্রকল্পটি সুরক্ষা-সমালোচনা করে থাকে তবে আপনার সত্যিকারের এমন একজনের প্রয়োজন আছে যিনি আপনার বেতনভিত্তিতে রিয়েল-টাইম সিস্টেমগুলি বোঝেন।
blrfl

18
বাস্তব বা বাস্তব পদ্ধতি ধীরে ধীরে হোক না কেন বাস্তবায়নের সময়ের ক্ষেত্রে আপনার কোডটি কতটা সঠিক is
প্যাগোটি

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

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

4
আপনি জিজ্ঞাসা করেছিলেন: " ক্রস-প্ল্যাটফর্ম রিয়েল-টাইম সফ্টওয়্যার (রিয়েল-টাইম ওএসস (আরটিএস) পাশাপাশি সাধারণ উদ্দেশ্যে ওএসস (জিপিওএস) জন্য প্রয়োগ করা কি আদৌ সম্ভব ? " আমার অনুমান না, অন্যথায় আরটিওসগুলি তা করবে না বিদ্যমান। "ক্রস প্ল্যাটফর্ম" "হলি গ্রিল" এর সাথে বেশ মিল similar

উত্তর:


38

ফাস্ট অর্থ রিয়েল-টাইম এবং রিয়েল-টাইম মানে দ্রুত নয়।

রিয়েল-টাইম মানে যে ফলাফলটি সরবরাহ করা হয় তার তারিখটি তার মান হিসাবে গুরুত্বপূর্ণ important অন্য কথায়, যদি ফলাফলটির একটি সঠিক মান থাকে তবে খুব তাড়াতাড়ি বা খুব দেরীতে সরবরাহ করা হয়, তবে সামগ্রিক ফলাফলটি ভুল।

উদাহরণস্বরূপ, একটি ভিডিও প্লেয়ার সম্পর্কে চিন্তা করুন। যদি ভিডিও ফ্রেমগুলি সঠিক হারে প্রদর্শিত না হয় তবে ব্যবহারকারীরা সন্তুষ্ট হবেন না। চিত্র এবং সাউন্ড সিঙ্ক না থাকলে আরও খারাপ।

এই উদাহরণটি দেখায় যে কিছু সাধারণ-সময় অ্যাপ্লিকেশন বর্তমান সাধারণ উদ্দেশ্য ওএসে প্রয়োগ করা যেতে পারে।

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


মিঃ মাউভিচিয়েল, আমার প্রশ্নের উত্তরের জন্য ধন্যবাদ আমাদের রিয়েল-টাইম হওয়ার জন্য কিছু বৈশিষ্ট্য দরকার অন্যটি নরম রিয়েল-টাইম হতে পারে আমি বুঝতে পারি না সময়সীমার গ্যারান্টি দেওয়ার জন্য সফ্টওয়্যার কীভাবে লিখব? আপনি কি এই প্রশ্নের উপর একটি আলোকপাত করতে পারেন দয়া করে?
ব্যবহারকারী 172825

7
@ user172825 - গ্রন্থাগারগুলির এই প্রশ্নের উত্তরের উত্তর cover শুরুর পয়েন্টগুলি "রিয়েল-টাইম প্রোগ্রামিং", সম্পর্কিত উইকিপিডিয়া নিবন্ধ বা কিউএনএক্স বা আরটিইএমএসের মতো আরটিওএসের টিউটোরিয়ালগুলি গুগল করতে পারে।
mouviciel

এটা আমার কাছে সবচেয়ে জটিল প্রশ্ন ছিল। আমি এই বিষয় সম্পর্কিত অনেক বড় বই পেয়েছি। তবে আমি আশা করেছি যে এটি কয়েকটি বাক্যে ব্যাখ্যা করা সম্ভব। :)
ব্যবহারকারী 172825

5
" কম্পিউটার বিজ্ঞানে কেবল দুটি শক্ত জিনিস রয়েছে: ক্যাশে অবৈধকরণ এবং নামকরণের জিনিস " "- ফিল কার্লটন ওকে, এবং রিয়েল-টাইম। সেখানে একটি বাক্য ব্যাখ্যা করে কেন এটি দুটি বাক্যে ব্যাখ্যা করা যায় না। আমরা এখন আপনাকে নিয়মিত নির্ধারিত প্রোগ্রামিংয়ে ফিরিয়ে দেব।

1
আমি "হার্ড রিয়েল-টাইম" "ডিটারমিনিস্টিক টাইম" কল করা লোকদের কাছে সাধারণত পয়েন্টটি পেতে সহায়তা করে।
pm

15

@ মউভিচিয়াল যেমন ইতিমধ্যে বলেছে, রিয়েল-টাইম এবং দ্রুত আসলে দুটি স্বতন্ত্র সম্পত্তি, যদিও অনেক রিয়েল-টাইম সময়সীমা বোঝায় যে তুলনামূলক দ্রুত সাড়া প্রয়োজন।

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

অবিশ্বাস্যতার সাধারণ উত্সগুলিতে পাওয়া যেতে পারে

  • গতিশীল মেমরি বরাদ্দ এবং আবর্জনা সংগ্রহ
  • (উচ্চ অগ্রাধিকার) বাধা দেয়
  • ওএসের শিডিয়ুলার
  • গতিশীল সৃষ্টি এবং অবজেক্টগুলির ধ্বংস
  • শর্তাধীন-সম্পাদিত কোডের বৃহত পরিমাণ

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


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

2
কিছু ক্ষেত্রে, আপনাকে ডাব্লুসিইটি বিশ্লেষণ করার দরকার হতে পারে , প্রয়োগের সময়টি মিলি সেকেন্ডের পূর্বাভাস দেওয়ার জন্য
বেসিল স্টারিনকিভিচ

3
@ ব্যবহারকারী 172825: প্রোফাইলিং সাহায্য করতে পারে, তবে এর বেশিরভাগ অংশ ভাষা এবং গ্রন্থাগারগুলিতে অভিজ্ঞতা এবং জ্ঞানের জন্য নেমে আসে।
বার্ট ভ্যান ইনজেন শেহানাউ

3
আপনার যদি হার্ড রিয়েল-টাইম প্রয়োজনীয়তা থাকে তবে প্রোফাইলিং যথেষ্ট ভাল নাও হতে পারে। যদি রান সময় পুরোপুরি নিরঙ্কুশিত না হয় তবে প্রোফাইলিং এটি আপনাকে ধারণা দেয় যে এটি সর্বদা সময়সীমার সাথে পূর্ণ হবে, যখন বাস্তবে এটি 100 এর মধ্যে 99 বার সময়সীমার সাথে মিলিত হয় you আপনার যদি সত্যিকারের সত্যিকারের প্রয়োজন থাকে তবে এটি এটি 100 এর মধ্যে 100 বার পূরণ করা দরকার
জেমস_পিক

2
@ ইউজার 172825 রিয়েল-টাইম হ'ল সফটওয়্যারটির জন্য মস্তিষ্কের শল্য চিকিত্সার জন্য যা করা হয় - এটিকে সঠিকভাবে বন্ধ করতে আপনার অনেক অভিজ্ঞতা এবং দক্ষতার প্রয়োজন এবং আপনি যা করছেন তা সম্পর্কে আপনাকে সত্যই সত্যই নিশ্চিত হতে হবে। ওই প্রকল্পগুলি এলাকার দক্ষ পেশাদারের তত্ত্বাবধানে আরও ভালভাবে তৈরি করা হয়েছে। এগুলি এমন কিছু নয় যা আপনি নিয়মিত বিকাশকারীকে ফেলে দিতে পারেন এবং "এই জিনিসটিকে একটি বাস্তব সময় ব্যবস্থা হিসাবে কাজ করতে" বলতে পারেন।
টি। সর

8

আমি অনুমান রিয়েলটাইম দুই-বাক্য ব্যাখ্যা করে একটি রিয়েলটাইম সিস্টেমে ডিজাইন করা হয় বুঝতে এবং নিয়ন্ত্রণ খারাপ-কেস পরিবর্তন আউটপুট পরিবর্তন ইনপুট প্রতিক্রিয়াতে সময়।

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

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

এই জাতীয় পরিবেশে সাধারণত নির্ভরযোগ্যতার জন্য বিশেষ বিবেচনা করা হয়, যেমন মিস্রা সি মানক।


এও কি সত্য যে রিয়েলটাইম হওয়ার ক্ষেত্রে কোনও অপারেশন হতাশাবোধক, সম্ভবত পুনরাবৃত্তিযোগ্য, বা কিছু ক্ষেত্রে একেবারে গণনাযোগ্য কিনা তা বিবেচনাও অন্তর্ভুক্ত রয়েছে?

হ্যাঁ, এগুলি সমস্তই "সীমাহীন" হবে। পুনরাবৃত্তিমূলক আলগোরিদিমগুলিকে অনুমতি দেওয়া যেতে পারে তবে তাদের স্ট্যাকের ব্যবহারের উপর এটি উপরের সীমাবদ্ধ থাকে imposed
pjc50

5
avoiding use of garbage collection- এটা হওয়া উচিত avoiding use of non-deterministic memory management। আবর্জনা সংগ্রহ রিয়েল-টাইমে করা যেতে পারে এবং ম্যানুয়াল মেমোরি পরিচালনা অগত্যা নির্ঘন্ট নয় ( mallocসিটির জন্য আদর্শ বাস্তবায়ন দেখুন )।
বিট্রি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.