ফার্মওয়্যারে প্রোগ্রামের সম্পাদন কীভাবে ঘটে?


9

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


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

উত্তর:


13

কোনও দৃষ্টান্তের শিফট নেই; উভয় ক্ষেত্রেই একটি সিপিইউ সফ্টওয়্যার / ফার্মওয়্যার চালাচ্ছে।

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

ফার্মওয়্যার সাধারণত অনাবোলটাইল মেমোরিতে (যেমন, FLASH) সরাসরি সিপিইউতে কম-বেশি সংযুক্ত থাকে stored এটি সংশোধন করা শক্ত (তাই "ফার্ম") এবং এটি কার্যকর করার জন্য অন্য মেমরিতে স্থানান্তরিত হতে পারে বা নাও হতে পারে।

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


9

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

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


6

আপনার প্রশ্নে কিছু ভুল ধারণা রয়েছে বলে মনে হচ্ছে।

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

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

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

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


5

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

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

ফার্মওয়্যার একটি "ফুল ব্লোন্ড" অপারেটিং সিস্টেম হতে পারে। উদাহরণস্বরূপ, টমেটো ওয়্যারলেস রাউটারগুলির জন্য একটি লিনাক্স-ভিত্তিক ফার্মওয়্যার:

http://www.polarcloud.com/tomato

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

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

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

যেহেতু আপনি কৌতূহলী, আপনি সম্ভবত উইলিয়াম স্ট্যালিংস বা হেনেসি এবং প্যাটারসনের মতো কম্পিউটার আর্কিটেকচারের কিছু পাঠ্যপুস্তক উপভোগ করতে পারেন।


4

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

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

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


1

বিয়োগ কিছু অনুমতি, একটি সিপিইউ এটি ওএস বা অন্য কোনও প্রোগ্রামের কোড থেকে কার্যকর করছে কিনা তা জানতে পারবে না। একটি সিপিইউতে, এটি কেবল মেমরি থেকে প্রাপ্ত নির্দেশাবলী সম্পাদন করছে।

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

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

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

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