কিছু লিগ্যাসি কম্পিউটার / কন্ট্রোলারগুলির সাথে ফাইল সিস্টেম থাকে না কারণ এই ডিভাইসগুলিতে অপারেটিং সিস্টেম নেই? যদি ফাইলগুলি এই ডিভাইসে সংরক্ষণ করা যায় না, তবে কীভাবে কারখানার নিয়ন্ত্রণ যুক্তি / প্রোগ্রাম এবং অন্যান্য ডেটা ডিভাইসে সংরক্ষণ করা যায়?
কিছু লিগ্যাসি কম্পিউটার / কন্ট্রোলারগুলির সাথে ফাইল সিস্টেম থাকে না কারণ এই ডিভাইসগুলিতে অপারেটিং সিস্টেম নেই? যদি ফাইলগুলি এই ডিভাইসে সংরক্ষণ করা যায় না, তবে কীভাবে কারখানার নিয়ন্ত্রণ যুক্তি / প্রোগ্রাম এবং অন্যান্য ডেটা ডিভাইসে সংরক্ষণ করা যায়?
উত্তর:
ফাইল সিস্টেমটি মূলত মেমরিতে ফাইলগুলি সঞ্চয় করার পদ্ধতি।
মেমরি ডিভাইস, যেমন হার্ড ডিস্ক, ফ্ল্যাশ ড্রাইভ, অপটিকাল ডিস্ক, মেমরি কার্ড ইত্যাদি একটি নির্দিষ্ট সংখ্যক বাইট সঞ্চয় করতে পারে। একটি খালি, মুছে ফেলা, 48-বাইট মেমরিটিতে এটি রয়েছে:
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
এখন, ধরা যাক আমার কাছে দুটি পাঠ্য ফাইল রয়েছে
Hello
।gronostaj
।ফাইলগুলি এএসসিআইআই ব্যবহার করে এনকোড করা থাকে , তাই প্রতিটি অক্ষর একটি বাইটের সাথে মিলে যায়। এএসসিআইআই ব্যবহার করে এনকোডিংয়ের পরে ফাইলগুলির বাইটগুলি হ'ল:
নাম 47 72 65 65 74 69 6e 67 73 2e 74 78 74
সামগ্রী 48 65 6c 6c 6f
নাম 55 73 65 72 6e 61 6d 65 2e 74 78 74
সামগ্রী 67 72 6f 6e 6f 73 74 61 6a
(আমি সেই ওয়েবসাইটের টেবিলের দ্বিতীয় কলাম থেকে হেক্সাডেসিমাল মান ব্যবহার করছি))
আমি আমাদের মেমরিতে প্রথম ফাইলের বিষয়বস্তু এইভাবে রাখতে পারি:
48 65 6c 6c 6f 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
যদিও কিছু বিষয় রয়েছে।
এগুলি সমাধান করার জন্য, আমরা একটি সাধারণ ফাইল সিস্টেম উদ্ভাবন করতে পারি। আসুন আমরা বলি যে আমরা ফাইলের নামগুলি তাদের বিষয়বস্তুগুলির সাথে আন্তঃলিভ করি, যাতে প্রতিটি ফাইলের নাম সেই ফাইলের বিষয়বস্তু অনুসরণ করে এবং সেগুলি শূন্য বাইটের সাথে পৃথক করে। দুটি ক্রমিক শূন্য বাইট মানে "আর কোনও ফাইল নেই"।
47 72 65 65 74 69 6e 67 <- first 8 bytes of name 1
73 2e 74 78 74 00 48 65 <- next 5 bytes of name 1, then 00, then 2 bytes of content 1
6c 6c 6f 00 55 73 65 72 <- next 3 bytes of content 1, then 00, then 4 bytes of name 2
6e 61 6d 65 2e 74 78 74 <- next 8 bytes of name 2
00 67 72 6f 6e 6f 73 74 <- 00, then 7 bytes of content 2
61 6a 00 00 00 00 00 00 <- 2 bytes of content 2, then 00 00, so no more files
বা একই জিনিস, তবে এএসসিআইআই এনকোডিং ছাড়াই: (আমরা এটিকে স্মৃতিতে সঞ্চয় করতে পারি না, এটি কেবল পঠনযোগ্যতার জন্য)
G r e e t i n g
s . t x t 00 H e
l l o 00 U s e r
n a m e . t x t
00 g r o n o s t
a j 00 00 00 00 00 00
একটি বাস্তব ফাইল সিস্টেম এটিও করবে:
00
বাইট থাকেতবে আপনি ধারণা পেতে পারেন।
এখন, অপারেটিং সিস্টেম। বেশিরভাগ কম্পিউটারের অপারেটিং সিস্টেমগুলিতে ফাইল থাকে, সুতরাং এতে অপারেটিং সিস্টেম সংরক্ষণ করার জন্য আপনার একটি ফাইল সিস্টেম দরকার। তবে আপনি এমন একধরনের ওএস তৈরি করতে পারেন যা ধ্রুবক ফাইলগুলির সাথে কাজ করতে হয় না এবং কোনও ফাইলে সংরক্ষণ করা হয় না। ফ্রিআরটিওএস এর একটি উদাহরণ। সুতরাং যখন ফাইল সিস্টেম এবং অপারেটিং সিস্টেমগুলি সাধারণত দৃ tight়ভাবে একত্রে হয় তবে এগুলি আসলে একে অপরকে ছাড়াই থাকতে পারে।
"একতরফা" দ্বারা আমি "বাইনারি কোডের একক টুকরা" বোঝায়। এটি একটি তথাকথিত ব্লব হবে : নাম, সৃষ্টির তারিখ বা অন্য কোনও বৈশিষ্ট্য ছাড়াই বাইটগুলির ক্রম। সর্বোপরি, সিপিইউগুলি কেবল নির্দেশের ক্রমগুলি প্রক্রিয়া করে। তারা ফাইল মেটাডেটা বা ফাইল সিস্টেমগুলির বিষয়ে চিন্তা করে না, তারা কেবল কার্য সম্পাদন করার জন্য খাওয়ানোতে চায়। এবং যদি আপনি এই নির্দেশাবলীকে বাইট হিসাবে প্রকাশ করতে পারেন তবে ব্লবগুলি যথেষ্ট!
এবং ব্লবগুলি সহজেই কোনও ধরণের ফাইল সিস্টেম ছাড়াই মেমরিতে সঞ্চয় করা যায়। প্রকৃতপক্ষে আমরা আমাদের প্রথম উদাহরণটিতে এটি করেছি, যখন আমরা কেবল মেমরিতে 1 ফাইলের সামগ্রী রেখেছি।
আমি আশা করি এটি আপনার প্রশ্নের উত্তর দেয়!
বায়োস, অপারেটিং সিস্টেম এবং ফাইল সিস্টেম স্বতন্ত্র এবং পৃথক উপাদান এবং একটি অপারেটিং সিস্টেম ডিভাইসে কেবল পঠন মেমরির মধ্যে থাকতে পারে। সুতরাং কোনও বার্তা সমান নয়, তবে প্রোগ্রাম এবং হার্ডওয়্যারের মধ্যে ইন্টারফেস হতে অপারেটিং সিস্টেমের একটি কাজ রয়েছে। ডিভাইসে যদি কোনও অপারেটিং সিস্টেম না থাকে তবে প্রোগ্রাম বা ডিভাইসে চলমান প্রোগ্রামগুলি অপারেটিং সিস্টেম।
মনে হচ্ছে এটি কোনও অপারেটিং সিস্টেম না থাকলে সিস্টেমটি কোনও ফাইল সিস্টেম বা ভাঙ্গা বা অসম্পূর্ণ পার্টিশন / ফাইল সিস্টেমের প্রতিবেদন না করে; কিন্তু
... এটি হতে পারে যে ভর স্টোরেজ ডিভাইসটি ভুলভাবে কনফিগার করা হয়েছে; বা আরও সুনির্দিষ্টভাবে যে বায়োস ব্যবহারের জন্য কনফিগার করা হয়েছে এমন হেড এবং ট্র্যাকের সংখ্যাটি ডিভাইসটি ব্যবহারের জন্য ফর্ম্যাট করা হয়েছে এমন হেড এবং ট্র্যাকের সংখ্যার মতো নয়। এটি যখন ঘটে তখন বুটস্ট্র্যাপ সম্পূর্ণ ফাইল বরাদ্দ সিস্টেম লোড করতে পারে না। সিস্টেমে কী এমন ব্যাটারি রয়েছে যা সেটআপের তথ্য হারাতে পারে। যদি তাই সঠিকভাবে বায়োস সেটিংস ফর্ম্যাটিংয়ের সাথে মেলে তাহলে সিস্টেমটি পুনরুদ্ধার হবে ...
বায়োস হল হার্ডওয়্যারটির প্রাথমিক ইন্টারফেস। অপারেটিং সিস্টেমটি প্রোগ্রামগুলির ব্যবহারের জন্য ইন্টারফেস যা মানক করা হয়েছে তাই প্রোগ্রামগুলিকে কী নির্দিষ্ট হার্ডওয়্যার ব্যবহার করা হচ্ছে সে বিষয়ে যত্ন নেওয়া দরকার না। একটি ভর স্টোরেজ ডিভাইস অ্যাক্সেস করার জন্য ফাইল সিস্টেমটি স্ট্যান্ডার্ড ডেটা টেবিল।
বায়োসগুলি প্রথমে ড্রাইভার ইন্টারফেস ডিভাইসে পঠনযোগ্য মেমরি থেকে লোড করে অ্যাক্সেসের জন্য বিঘ্নিত পয়েন্ট সেট করে। 13 টি ভর স্টোরেজ ডিভাইসের অ্যাক্সেস পয়েন্ট।
https://en.wikedia.org/wiki/INT_13H ... বায়োস তারপরে ডিভাইসের সেক্টর 0, সেক্টর 0 এবং পার্টিশন টেবিলটি লোড করে। http://www.ntfs.com/fat-partition-sector.htm
পার্টিশন টেবিলটি হার্ড ড্রাইভটি কত বড় এবং মেশিনের ঠিকানা পার্টিশন টেবিল + 3 ই হেক্সে বুটস্ট্র্যাপ রুটিন সবকিছু জানায় (যদি আমি আমার বিপরীত প্রকৌশলটি সঠিকভাবে মনে করি তবে এটি মেশিনে 0000: 063E হেক্সে রয়েছে), সাধারণত অপারেটিং সিস্টেমটি লোড করে, এবং ড্রাইভার যে আরও উন্নত হতে সক্ষম।
যদি কম্পিউটারের ওএসে ভর স্টোরেজ সমর্থন না থাকে তবে আপনি এখনও এই বায়োসের সমর্থনটি পেতে পারেন এবং ভর স্টোরেজ ডিভাইসের উপর ভিত্তি করে সিস্টেমে একটি এক্সটেনশন তৈরি করতে পারেন। তবে আপনাকে পরামর্শ দিন যে ওএসগুলি বায়োস সিক্যুয়ালিটিতে অনুরোধগুলি রাখার জন্য বাধা চালু এবং বন্ধ করতে পারে।
বায়োস নিজে থেকেই বহু-থ্রেডেড ক্রিয়াকলাপ পরিচালনা করতে পারে না। বিশেষত একটি নির্দিষ্ট স্থানে পড়তে বা লিখতে প্রস্তুত হওয়ার জন্য হার্ড ড্রাইভকে নির্দেশ দেওয়ার জন্য বায়োসকে কল করা হয়। পঠন লেখার ক্রিয়াকলাপগুলি তখন বায়োসের দ্বিতীয় কলতে ঘটে। আরও উন্নত অপারেটিং সিস্টেমের প্রয়োজন কারণ কোনও কিছুতে একটি প্রোগ্রামকে ডেটা পড়তে প্রস্তুত হওয়া থেকে বিরত রাখতে হয় অন্য প্রোগ্রামে ডেটা বা ডেটা লিখতে চায় বা ডেটা ওভাররাইট করা হবে।
ওভাররাইটিং ডেটা ঝুঁকি না নিয়ে বা হার্ড ড্রাইভ বা বায়ো ব্যবহার না করে অন্যান্য প্রোগ্রামগুলি লক না করে প্রোগ্রামগুলিকে ভর স্টোরেজ ডিভাইসটি ব্যবহার করার জন্য একটি ফাইল সিস্টেমের প্রয়োজন।
8080 এর দিনগুলিতে আল্টায়ার বেসিক দ্বারা ব্যবহৃত অপারেটিং সিস্টেমটি খুব মিনিমালিস্ট ছিল। আপনি কী ড্রাইভ এবং ট্র্যাকটি ফাইলটি বলা শুরু করবেন তা নির্দিষ্ট করে হার্ড ড্রাইভে ফাইল সংরক্ষণ করতে পারেন। কোনও ফাইল সিস্টেম ব্যবহার করা হয়নি, ব্যবহারকারীর মাথা এবং ট্র্যাক নম্বরটি মনে রাখতে হয়েছিল ফাইলটি নিজেই সংরক্ষণ করা হয়েছিল।
ডিস্ক অপারেটিং সিস্টেমের বেশি নয় তবে এটি কাজ করে। কীবোর্ডটি পড়ার এবং প্রদর্শনীতে তথ্য প্রেরণের রুটিনগুলিও ন্যূনতম ছিল।
আমি মনে করি এখানে দুটি পয়েন্ট সম্বোধন করতে হবে:
কিছু সিস্টেমে অপারেটিং সিস্টেম নেই - একটি অ্যাপ্লিকেশন রয়েছে এবং সেই অ্যাপ্লিকেশন সফ্টওয়্যারটি সরাসরি হার্ডওয়্যারটির সাথে ইন্টারফেস করে। এটি ছোট মাইক্রোকন্ট্রোলার সিস্টেমগুলির মধ্যে সাধারণ, যেখানে জটিলতা কম। এই দৃশ্যে সফ্টওয়্যারটি সাধারণত স্পষ্ট হয়ে থাকে, ড্রাইভাররা লিখতে থাকে এবং স্ক্র্যাচ থেকে বিমূর্ততা দেয় বা তাদের নকশার লক্ষ্যটি সহজ করতে ভেন্ডর কোড ব্যবহার করে।
বলা হচ্ছে, এই জাতীয় সিস্টেমগুলি কোনও ফাইল সিস্টেমকে সমর্থন করতে পারে । FAT এর মতো সরল ফাইল সিস্টেমগুলি সাধারণত লগগুলি সঞ্চয় করতে এবং ফার্মওয়্যার আপডেটটি কার্যত সরবরাহ করতে ব্যবহৃত হয়।
কনফিগারেশনটি প্রায়শই বিন্যাস করা হবে এবং কোনও ফাইল সিস্টেম ব্যবহার না করে সরাসরি কাঁচা অ-উদ্বায়ী স্টোরেজে লিখিত হবে।
একটি স্তর উপরে যেতে, আমরা কিছুটা বড় সিস্টেম এবং জটিলতা বৃদ্ধি পাই। এই মুহুর্তে আমরা রিয়েল টাইম অপারেটিং সিস্টেমগুলি (আরটিওএস) সন্ধান করব - যদিও সবার রিয়েল টাইম প্রয়োজনীয়তা নেই - যা বৈশিষ্ট্যগুলি থাকলে নির্দিষ্ট সেট দিয়ে ডিজাইন করা হয়েছে। এই সিস্টেমগুলি " কার্য " গুলির একটি সেট দিয়ে তৈরি করা হবে যা কার্যকর করার জন্য নির্ধারিত হয় - সাধারণত অন্যান্য / স্বেচ্ছাসেবী কাজগুলি চালানো যায় না। এই সিস্টেমগুলির জন্য সহজেই বিক্রেতার বা সম্প্রদায়-উত্পাদিত কোড ব্যবহার করে ফাইল সিস্টেম, নেটওয়ার্কিং ইত্যাদি ... সমর্থন করা সাধারণ।
কনফিগারেশন কাঁচা স্টোরেজ লিখিত হতে পারে, বা একটি ফাইল সিস্টেমে একটি ফাইল হিসাবে সংরক্ষণ করা যেতে পারে।
দেখব FreeRTOS , ThreadX , ইত্যাদি ...
এখন আমরা এম্বেড থাকা সিস্টেমগুলি দেখতে পাই যা আরও বড়। জটিলতা বেড়েছে, এবং এই স্তরে আমরা সিস্টেম কনফিগারেশন এবং অ্যাপ্লিকেশন / সফ্টওয়্যার সংগঠিত করতে একটি ফাইল সিস্টেমের উপর নির্ভরতা পাই। আমরা এখন নির্বিচারে অ্যাপ্লিকেশনগুলি কার্যকর করতে সক্ষম হয়েছি, এবং কার্নেলগুলি বিভিন্ন হার্ডওয়্যারের জন্য পুরো ড্রাইভারের বোঝা নিয়ে আসবে।
এখানে আমরা লিনাক্স , কিউএনএক্স , " উইন্ডোজ এম্বেডেড কমপ্যাক্ট " ইত্যাদির দিকে নজর দিচ্ছি ...
সফটওয়্যার সাধারণত নির্মাণ করা হবে জন্য সিস্টেম, মত প্রকল্পে কলিং , busybox কার্যকারিতা অনেক প্রদান করতে এবং এর মতো প্রকল্পগুলি ব্যবহার buildroot এবং Yocto বিভিন্ন অ্যাপ্লিকেশন নির্মাণ এবং একটি চিত্র উত্পাদন করতে।
কনফিগারেশন সম্ভবত কোনও ফাইলে লেখা হবে - যদিও এটি বিকাশকারীদের আগের মতো কাঁচা স্টোরেজ ব্যবহার করা থেকে বিরত রাখার কিছুই নয়, কারণ এই সিস্টেমগুলি সাধারণত কাস্টম হার্ডওয়ারে চলবে।
ফাইল সিস্টেমটি প্রয়োজনীয়, তবে লিখনযোগ্য নাও হতে পারে এবং খাঁটিভাবে " ইন-মেমরি " থাকতে পারে - আকারে সীমাবদ্ধ এবং সমস্ত পরিবর্তন (যদি আরডাব্লু) পুনরায় বুটে হারিয়ে যায়।
এখানে আমরা ডেস্কটপ পিসিগুলির দিকে নজর দিচ্ছি যা উইন্ডোটিং সিস্টেম চালাচ্ছে, রিড-রাইটিং ফাইল সিস্টেমগুলি (সাধারণত বড় ডিস্কে থাকে), স্বেচ্ছাসেবী কোড এক্সিকিউশন গ্যালোর, কনফিগারেশন অবশ্যই একটি ফাইল হিসাবে সংরক্ষণ করা হয় - এটি আপনার প্রকারের সিস্টেমের ধরণ। সার্ভারগুলি এখানে আমরা যে পদে আলোচনা করছি তাতে ডেস্কটপ পিসিগুলির সাথে বেশ মিল রয়েছে।
লিনাক্স বিশ্বে এটি একটি " বিতরণ " হবে। আপনি সাধারণত প্যাকেজ পরিচালনার কিছু ফর্ম দেখতে পাবেন, সুতরাং কোনও অ্যাপ্লিকেশন ইনস্টল / আনইনস্টল করা ডাউনলোড করা এবং আনপ্যাক করার বিষয়টি (যদি আপনি জেন্টুর পছন্দগুলি ব্যবহার করেন তবে খুব संकलित করুন )।
এখানে আমরা লিনাক্স, উইন্ডোজ , উইন্ডোজ সার্ভার ইত্যাদির দিকে নজর দিচ্ছি ...
উপরে আমি উল্লেখ করেছি যে ছোট সিস্টেমগুলি সাধারণত কাঁচা অ-উদ্বায়ী স্টোরেজে কনফিগারেশন সঞ্চয় করে। আপনি কী সংরক্ষণ করতে চান তা স্থির করে, ডেটাটি কোলাট করে এবং স্টোরেজে লিখে এটি করা হয়।
উদাহরণস্বরূপ, আমরা নিম্নলিখিত সহজ কনফিগারেশন সংরক্ষণ করতে চাই:
52458
ঘূর্ণনের নির্দিষ্ট ধাপ রয়েছে5547
হবে05:00
49885
এ ঘোরানো উচিত18:00
সমস্ত সংখ্যা 16-বিট পূর্ণসংখ্যার সাথে মাপসই, সুতরাং পদক্ষেপের প্রতিনিধিত্ব করতে এটি ব্যবহার করুন। সময়ের জন্য, আমরা আরটিসির সাথে আরও ভাল সামঞ্জস্যের জন্য বিসিডিতে সঞ্চয় করার সিদ্ধান্ত নিয়েছি, তাই এটি।
আমাদের নিম্নলিখিত তথ্য রয়েছে:
0xCCEA
0x15AB
0x0500
0xC2DD
0x1800
10 টি বাইট হিসাবে মানগুলি কোলাটেড এবং স্টোরেজে লেখা যেতে পারে:
0x00000000 CC EA 15 AB 05 00 C2 DD 18 00
অ্যাপ্লিকেশনটি কীভাবে এটি ব্যাখ্যা করতে পারে তা জানে, সুতরাং কোনও সমর্থন প্রয়োজন। সমর্থন দ্বারা আমি নাম দ্বারা স্টোরেজ এরিয়া লোকেটিং উল্লেখ করছি (যেমন: ফাইলসিস্টেম এবং ফাইলের নাম), এবং একজন মানুষ সঙ্গে কনফিগারেশন বোঝার ভাগ (যেমন: তাদেরকে JSON / এক্সএমএল / YAML / TOML )।