একটি জাভা / লিনাক্স স্ট্যাক "রিয়েল টাইম" হতে ব্যর্থ হওয়ার কারণগুলি কী কী?


20

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

আমি কেন তা বোঝার চেষ্টা করছি । আমার এসডাব্লাগ আমাকে বলেছে এটি সম্ভবত মূলত জাভার আবর্জনা সংগ্রাহকের কারণে, যা যে কোনও সময় চালানো যেতে পারে এবং পুরোপুরি সিস্টেমটিকে বিরতি দিতে পারে। এবং যদিও সেখানে তথাকথিত "বিরামহীন জিসি" রয়েছে, আমি অগত্যা তাদের বিজ্ঞাপনগুলিতে বিশ্বাস করি না, এবং শখের প্রকল্পের জন্য প্রতি জেভিএম-উদাহরণস্বরূপ K 80K -ও নেই!

আমি লিনাক্সে ড্রোন সফটওয়্যার চালনা সম্পর্কে এই নিবন্ধটিও পড়ছিলাম । এই নিবন্ধে, লেখক এমন একটি দৃশ্যের বর্ণনা দিয়েছেন যেখানে লিনাক্স প্রায় তার গাড়ীতে ড্রোনটি বিধ্বস্ত করেছিল:

পাই এর উপর নিম্ন স্তরের নিয়ন্ত্রণ লুপ (পিআইডি) করার সিদ্ধান্ত নেওয়ার পরে আমি একটি কঠিন পাঠ শিখেছি - চালাক হওয়ার চেষ্টা করে সিদ্ধান্ত নিয়েছি ডিবাগিংয়ের জন্য লুপের মাঝখানে একটি লগ রাইটিং রাখব - কোয়াড প্রথমে জরিমানা হয়ে গেছে তবে লিনাক্স সিদ্ধান্ত নিয়েছে একটি লগ এন্ট্রি লিখতে 2 সেকেন্ড নিতে এবং চতুর্দিকে আমার গাড়িতে প্রায় ক্র্যাশ হয়ে গেছে!

এখন যদিও লেখকটি তাঁর ড্রোন সফটওয়্যারটি সি ++ তে লিখেছিলেন, আমি কল্পনা করব যে লিনাক্সে চলমান একটি জাভা অ্যাপ্লিকেশন খুব ভালভাবে একই পরিণতি ভোগ করতে পারে।

উইকিপিডিয়া অনুসারে:

কোনও সিস্টেমকে রিয়েল-টাইম বলা হয় যদি কোনও অপারেশনের মোট সঠিকতা কেবল তার যৌক্তিক যথার্থতার উপরই নির্ভর করে না, তবে এটি সম্পাদিত হয় এমন সময়েও।

সুতরাং আমার কাছে, এর অর্থ হল " যদি সম্পূর্ণ নির্ভুলতার জন্য যৌক্তিক নির্ভুলতা এবং সময়সীমার প্রয়োজন হয় তবে আপনার কাছে রিয়েল-টাইম নেই " "

আসুন ভান করি যে আমি একটি জাভা অ্যাপ্লিকেশনটি সুপার পারফরম্যান্ট হওয়ার জন্য লিখেছি, এবং আমি বলতে বলতে "লেবুকে চেপে ফেলেছি", এবং এটি তাত্ক্ষণিকভাবে জাভাতে লেখা যায় না any

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



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

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

উত্তর:


28

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

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

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

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

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


4

উইকিপিডিয়া থেকে :

আরটিওএসের একটি মূল বৈশিষ্ট্য হ'ল কোনও অ্যাপ্লিকেশনটির কাজ গ্রহণ করতে এবং এটি সম্পন্ন করতে কত সময় লাগে তা সম্পর্কিত তার ধারাবাহিকতার মাত্রা; পরিবর্তনশীলতা হ'ল জিটার।

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

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


1

শুরু করার জন্য, ভ্যানিলা লিনাক্স নিজেই আসল সময় করতে পারে না। আরটিএলিনাক্সের কারণেই বিকাশ হয়েছিল।

বলুন যে আপনি আরটিএলিনাক্সে কয়েকটি জাভা প্রক্রিয়া চালান, সেগুলি এখনও রিয়েল টাইম হিসাবে বিবেচিত হবে কারণ এই সমস্ত প্রক্রিয়াগুলি কার্নেল দ্বারা নির্ধারিত হয়, যেমন যদি একটি প্রক্রিয়া দেরী হয়, তবে অন্যান্য প্রক্রিয়াগুলিতে এখনও সিপিইউয়ের টুকরো গ্যারান্টিযুক্ত থাকতে পারে।

এখন, যদি জাভা প্রক্রিয়াগুলি সবুজ থ্রেডগুলি চালায় , তবে JVM রিয়েল টাইম শিডিয়ুলিং না করায় এই থ্রেডগুলি কার্যকর করা আর আসল সময় হবে না।

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