File Systems & Storage
ফাইল সিস্টেম হলো OS-এর সেই অংশ যা ডিস্কে ডেটা কীভাবে স্টোর এবং অর্গানাইজ করা হবে তা নির্ধারণ করে।
1. File System Structure
একটি ফাইল সিস্টেম সাধারণত নিম্নলিখিত লেয়ারে বিভক্ত:
- Application Programs: ইউজার লেভেলের প্রোগ্রাম।
- Logical File System: ফাইল নেম, পারমিশন ম্যানেজ করে।
- File Organization Module: ফাইলের লজিক্যাল ব্লককে ফিজিক্যাল ব্লকে ম্যাপ করে।
- Basic File System: ডিস্কে রিড/রাইট কমান্ড পাঠায়।
- I/O Control: ডিভাইস ড্রাইভার এবং ইন্টারাপ্ট হ্যান্ডলার।
2. File Concepts
Metadata
ফাইলের ডেটা ছাড়াও অতিরিক্ত তথ্য যেমন:
- File Name: ফাইলের নাম।
- Size: ফাইলের সাইজ।
- Permissions: কে রিড/রাইট/এক্সিকিউট করতে পারবে।
- Timestamps: তৈরি, মডিফাই, এক্সেসের সময়।
- Owner: ফাইলের মালিক।
File Descriptors
একটি ইন্টিজার যা ওপেন ফাইলকে রিপ্রেজেন্ট করে। প্রতিটি প্রসেসের একটি File Descriptor Table থাকে।
Example:
fd = open("file.txt", "r") # fd = 3 (0,1,2 reserved for stdin, stdout, stderr)3. Directory Implementation
ডিরেক্টরি হলো একটি স্পেশাল ফাইল যা অন্যান্য ফাইল এবং ডিরেক্টরির তালিকা রাখে।
Implementation Methods:
- Linear List: ফাইলের নাম এবং পয়েন্টারের একটি লিস্ট (সার্চ স্লো)।
- Hash Table: দ্রুত সার্চের জন্য হ্যাশ টেবিল ব্যবহার।
4. Inodes (Index Nodes)
Linux/Unix ফাইল সিস্টেমে inode হলো একটি ডেটা স্ট্রাকচার যা ফাইলের মেটাডেটা স্টোর করে (ফাইল নেম ছাড়া)।
inode-এ থাকে:
- File size
- Permissions
- Timestamps
- Pointers to data blocks
Real-life Example: একটি লাইব্রেরি কার্ড ক্যাটালগ। বইয়ের নাম (ডিরেক্টরি এন্ট্রি) দিয়ে আপনি কার্ড (inode) খুঁজে পান, যেখানে বইয়ের সব তথ্য এবং শেল্ফ নম্বর (ডেটা ব্লক পয়েন্টার) লেখা আছে।
5. Journaling File Systems
Journaling হলো একটি টেকনিক যা ফাইল সিস্টেমের ক্র্যাশ থেকে রিকভারি সহজ করে।
কীভাবে কাজ করে: কোনো অপারেশন করার আগে একটি জার্নাল (লগ) এ লিখে রাখা হয় কী করা হবে। যদি ক্র্যাশ হয়, তাহলে জার্নাল দেখে অসম্পূর্ণ কাজ সম্পন্ন বা রোলব্যাক করা যায়।
Examples: ext3, ext4, NTFS।
6. Disk Scheduling Algorithms
যখন একাধিক I/O রিকোয়েস্ট আসে, তখন কোন অর্ডারে ডিস্ক হেড মুভ করবে তা ঠিক করার জন্য এই অ্যালগরিদম ব্যবহার করা হয়।
FCFS (First-Come, First-Served)
যে রিকোয়েস্ট আগে এসেছে, সেটি আগে সার্ভ করা হয়।
- সহজ কিন্তু সিক টাইম বেশি হতে পারে।
SSTF (Shortest Seek Time First)
বর্তমান হেড পজিশনের সবচেয়ে কাছের রিকোয়েস্ট আগে সার্ভ করা হয়।
- ভালো পারফরম্যান্স কিন্তু starvation হতে পারে।
SCAN (Elevator Algorithm)
ডিস্ক হেড একদিকে যায় এবং পথে সব রিকোয়েস্ট সার্ভ করে, তারপর উল্টো দিকে ফিরে আসে।
- ফেয়ার এবং starvation নেই।
C-SCAN (Circular SCAN)
SCAN-এর মতো কিন্তু এক প্রান্তে পৌঁছে সরাসরি অন্য প্রান্তে ফিরে যায় (সার্ভ না করে)।
- আরও ইউনিফর্ম ওয়েট টাইম।