দ্রুত রিভিশনের জন্য সূত্র, সাধারণ ভুল আর ফ্ল্যাশ কার্ড, এক জায়গায়।
৭টি সূত্র ও নিয়ম
অপারেটিং সিস্টেম
কফম্যানের ডেডলক ৪টি শর্ত মনে রাখার "M-H-N-C" নেমোনিক
Deadlock 4 Necessary Conditions: The "M-H-N-C" Mnemonic
সূত্র
Deadlock Occurs <=> (Mutual Exclusion) AND (Hold and Wait) AND (No Preemption) AND (Circular Wait). To Prevent Deadlock: Invalidate at least ONE of these 4 conditions.
নিয়ম ও সহজ উপায়
অপারেটিং সিস্টেমে ডেডলক ঘটার জন্য এডওয়ার্ড কফম্যানের ৪টি শর্ত একযোগে পূরণ হতে হয়। শর্টকাট নেমোনিক "M-H-N-C":
- M: Mutual Exclusion (রিসোর্সটি নন-শেয়ারেবল, একবারে একজনই ব্যবহার করবে)
- H: Hold and Wait (একটি রিসোর্স ধরে রেখে অন্য রিসোর্সের জন্য অপেক্ষা করা)
- N: No Preemption (রিসোর্স জোর করে ছিনিয়ে নেওয়া যাবে না, প্রসেস স্বেচ্ছায় ছাড়বে)
- C: Circular Wait (P0 অপেক্ষা করে P1-এর রিসোর্সের জন্য, P1 অপেক্ষা করে P2-এর জন্য... এবং Pn অপেক্ষা করে P0-এর জন্য)।
ডেডলক প্রিভেনশন (Deadlock Prevention) নিশ্চিত করতে এই ৪টির যেকোনো একটি শর্তকে বাস্তবায়ন স্তরে অসম্ভব করে দিতে হয়। যেমন: সকল রিসোর্সে ক্রমিক নম্বর বরাদ্দ দিলে Circular Wait কখনো তৈরি হতে পারে না।
অপারেটিং সিস্টেম
ব্যাংকার্স অ্যালগরিদমের সেফ স্টেট টেস্ট ও Need ম্যাট্রিক্স সূত্র
Banker's Algorithm Safe State Condition: Need <= Work
সূত্র
Need[i][j] = Max[i][j] - Allocation[i][j]. Feasibility Test: If Need_i <= Available (Work), Process P_i can finish. New Work = Work + Allocation_i. If all processes complete -> Safe State.
নিয়ম ও সহজ উপায়
ব্যাংকার্স অ্যালগরিদমে সেফ সিকোয়েন্স বের করার ৩ ধাপের শর্টকাট:
১. Need Matrix বের করুন: Need = Max - Allocation।
২. বর্তমান Available রিসোর্সের সাথে তুলনা করুন: এমন একটি প্রসেস খুঁজুন যার Need <= Available।
৩. ওই প্রসেসটি সমাপ্ত হলে তার দখলকৃত সব Allocation রিসোর্স Available-এর সাথে ফেরত যোগ হবে: নতুন Available = পুরাতন Available + Allocation_i।
এইভাবে সব প্রসেস সমাপ্ত করা সম্ভব হলে সিস্টেমটি "Safe State"-এ আছে এবং ডেডলক হবে না।
অপারেটিং সিস্টেম
বেলাডির অ্যানোমালি: কেন কেবল FIFO-তে ফ্রেম বাড়ালে পেজ ফল্ট বাড়ে
Belady's Anomaly: Why FIFO Suffers and Stack Algorithms Do Not
সূত্র
Belady's Anomaly: Increasing the number of physical page frames results in an INCREASE (not decrease) in page faults. Occurs in FIFO. NEVER occurs in Stack Algorithms (LRU, Optimal/MIN).
নিয়ম ও সহজ উপায়
সাধারণত পেজ ফ্রেম সংখ্যা বাড়ালে পেজ ফল্ট কমে যাওয়ার কথা। কিন্তু FIFO (First-In, First-Out) এবং এর সমগোত্রীয় অ্যালগরিদমে নির্দিষ্ট রেফারেন্স স্ট্রিং-এ ফ্রেম ৩ থেকে ৪ করলে পেজ ফল্ট বেড়ে যেতে পারে—এটিই বেলাডির অ্যানোমালি।
- বেলাডির অ্যানোমালি ঘটে: FIFO, Second Chance, Random Replacement-এ।
- কখনো ঘটে না (Stack Algorithms): LRU (Least Recently Used), Optimal (Belady's Min), LFU-তে। কারণ স্ট্যাক অ্যালগরিদমে m ফ্রেমের সেট সর্বদা m+1 ফ্রেমের সাবসেট থাকে।
লিনাক্সে ফাইল পারমিশনের ৩টি শ্রেণি থাকে: Owner, Group, Others। প্রতিটি শ্রেণির জন্য ৩টি বিট: Read (৪), Write (২), Execute (১)।
- 7 = 4 + 2 + 1 = rwx (সব অধিকার)
- 6 = 4 + 2 + 0 = rw- (পড়া ও লেখা)
- 5 = 4 + 0 + 1 = r-x (পড়া ও রান করা)
- 4 = 4 + 0 + 0 = r-- (কেবল পড়া)
- 0 = --- (কোনো অধিকার নেই)
উদাহরণ:
- chmod 755 -> rwxr-xr-x (মালিক সব পারবে, গ্রুপ ও অন্যরা শুধু পড়তে ও চালাতে পারবে)
- chmod 644 -> rw-r--r-- (মালিক পড়তে ও লিখতে পারবে, বাকিরা শুধু পড়তে পারবে)।
অপারেটিং সিস্টেম
CPU শিডিউলিং সময় গণনার দ্রুত সূত্র: TAT, WT ও RT
CPU Scheduling Time Formulas: Completion, Turnaround & Waiting Time
সূত্র
Turnaround Time (TAT) = Completion Time (CT) - Arrival Time (AT). Waiting Time (WT) = Turnaround Time (TAT) - Burst Time (BT). Response Time (RT) = First CPU Allocation Time - Arrival Time (AT).
নিয়ম ও সহজ উপায়
শিডিউলিং অংক দ্রুত নির্ভুল করার সিকোয়েন্স:
১. প্রথমে Gantt Chart আঁকুন এবং প্রতিটি প্রসেসের সমাপ্তি সময় (CT) লিখুন।
২. TAT বের করুন: TAT = CT - AT (প্রসেসটি সিস্টেমে মোট কতক্ষণ কাটাল)।
৩. WT বের করুন: WT = TAT - BT (মোট সময়ের মধ্যে সে কতক্ষণ শুধুই বসে বসে অপেক্ষা করল)।
৪. নন-প্রিম্পটিভ (Non-preemptive) শিডিউলিংয়ে প্রসেস সিপিইউ পাওয়া মাত্রই নির্বাহ শেষ করে, তাই নন-প্রিম্পটিভে Response Time সর্বদা Waiting Time-এর সমান হয় (RT == WT)।
অপারেটিং সিস্টেম
ভার্চুয়াল অ্যাড্রেস থেকে ফিজিক্যাল অ্যাড্রেস রূপান্তর: অফসেট অপরিবর্তিত রাখার নিয়ম
Paging Address Translation Shortcut: Preserving the Offset
সূত্র
Given Page Size = 2^k bytes: Page Offset = k bits (Identical in both Virtual and Physical address). Virtual Address = (Page Number, Offset). Physical Address = (Frame Number * Page Size) + Offset.
নিয়ম ও সহজ উপায়
পেজিং সিস্টেমে লজিক্যাল (ভার্চুয়াল) অ্যাড্রেস থেকে ফিজিক্যাল অ্যাড্রেসে রূপান্তরের সময় অফসেট (Offset) কখনো পরিবর্তিত হয় না!
- যদি পেজ সাইজ 4 KB (2^12 bytes) হয়, তবে অফসেট হবে ১২ বিট।
- ভার্চুয়াল অ্যাড্রেসের উপরের বিটগুলো হলো Page Number (p) এবং নিচের ১২ বিট হলো Offset (d)।
- Page Table-এ p-তম এন্ট্রিতে গিয়ে Frame Number (f) খুঁজে নিন।
- ফিজিক্যাল অ্যাড্রেস = ফ্রেম নম্বরটিকে সামনে বসিয়ে পেছনে ঠিক আগের অফসেটটি (d) অবিকল যুক্ত করে দিন: Physical Address = (f, d)।
অপারেটিং সিস্টেম
থ্র্যাশিং শনাক্তকরণ ও ওয়ার্কিং সেট মডেল সূত্র
Thrashing Indicator & Working Set Principle
সূত্র
Thrashing occurs when: Sum of all processes' Working Set Sizes (Sum WSS_i) > Total Physical Frames (D). Symptoms: Page fault rate sky-rockets, CPU utilization drops near zero, OS thrashes pages to/from swap disk.
নিয়ম ও সহজ উপায়
থ্র্যাশিং হলো এমন একটি বিশৃঙ্খল অবস্থা যখন অপারেটিং সিস্টেম প্রসেসের নির্দেশাবলী এক্সিকিউট করার চেয়ে পেজ সোয়াপিং (Disk I/O) করতেই বেশি ব্যস্ত থাকে।
- মূল লক্ষণ: উচ্চ পেজ ফল্ট রেট এবং নাটকীয়ভাবে কমে যাওয়া CPU ইউটিলাইজেশন।
- পিটার ডেনিংয়ের Working Set Model: প্রতিটি প্রসেসের সাম্প্রতিক সময়ের রেফারেন্স করা পেজের সংখ্যা হলো তার Working Set Size (WSS)। যদি সব প্রসেসের WSS-এর যোগফল উপলব্ধ ফিজিক্যাল মেমোরি ফ্রেমের চেয়ে বেশি হয়, তবেই থ্র্যাশিং ঘটে।
- সমাধান: Degree of Multiprogramming সাময়িকভাবে কমানো (কিছু প্রসেস সাসপেন্ড করা) অথবা ফিজিক্যাল র্যাম বাড়ানো।