OS Fundamentals
1. What is an Operating System, and what are its main functions?
Operating System (OS) হলো একটি system software যা computer hardware এবং user/application software-এর মধ্যে মধ্যস্থতাকারী হিসেবে কাজ করে। এট ি computer-এর সকল hardware resource (যেমন CPU, memory, disk, I/O devices) পরিচালনা করে এবং application program-গুলোকে চলার জন্য একটি environment প্রদান করে।
সহজভাবে বললে, OS ছাড়া computer-এর hardware ব্যবহার করা, program চালানো, file manage করা বা user interaction করা খুব কঠিন হয়ে যেত।
Main Functions of an Operating System
i) Process Management: OS বিভিন্ন process (running program) তৈরি, terminate, suspend, resume এবং schedule করে। এটি নির্ধারণ করে কোন process কখন CPU পাবে, কতক্ষণ পাবে, এবং multiple process-এর মধ্যে CPU time ভাগ করে দেয়।
Example: আপনি যদি একই সাথে Chrome, VS Code এবং Spotify চালান, তাহলে OS CPU time তাদের মধ্যে ভাগ করে দেয়।
ii) Memory Management: OS RAM-কে বিভিন্ন process-এর মধ্যে বণ্টন করে এবং কোন process কত memory ব্যবহার করবে তা নিয়ন্ত্রণ করে। এটি memory allocation, deallocation, virtual memory support এবং memory protection/isolation নিশ্চিত করে, যাতে একটি process অন্য process-এর memory-তে অবৈধভাবে access করতে না পারে।
iii) File System Management: OS file ও folder কীভাবে store, organize, retrieve এবং manage হবে তা নিয়ন্ত্রণ করে। এটি file naming, directory structure, file permissions এবং storage allocation পরিচালনা করে।
Example: Windows-এ NTFS এবং Linux-এ ext4 commonly ব্যবহৃত file system; তবে উভয় platform-ই আরও বিভিন্ন file system support করে।
iv) Device / I/O Management: OS বিভিন্ন hardware device যেমন keyboard, mouse, printer, disk, monitor ইত্যাদির সাথে যোগাযোগ পরিচালনা করে। এ কাজের জন্য OS সাধারণত device drivers ব্যবহার করে।
v) Security and Access Control: OS user authentication, authorization, permission control এবং system resource protection নিশ্চিত করে। এটি নির্ধারণ করে কে কোন file, folder বা resource access করতে পারবে।
vi) User Interface: OS user-এর সাথে interaction করার জন্য interface প্রদান করে। এটি হতে পারে:
- GUI (Graphical User Interface) → যেমন Windows desktop
- CLI (Command Line Interface) → যেমন Linux terminal
vii) System Call Interface: Application program সরাসরি privileged hardware operation করতে পারে না। তাই OS একটি system call interface দেয়, যার মাধ্যমে application নিরাপদভাবে file, process, memory, network বা device-related service request করতে পারে।
What is the difference between an OS and the kernel?
Kernel হলো Operating System-এর core component। এটি system-এর hardware resources-এর উপর low-level control প্রদান করে এবং CPU scheduling, memory management, device management, interrupt handling, system calls, এবং file system access-এর মতো গুরুত্বপূর্ণ কাজ পরিচালনা করে। Kernel সাধারণত kernel mode / privileged mode-এ চলে।
অন্যদিকে, Operating System (OS) হলো একটি সম্পূর্ণ system software package, যার মধ্যে kernel ছাড়াও থাকে system utilities, libraries, command-line tools, services, and sometimes GUI components। অর্থাৎ, kernel হলো OS-এর কেন্দ্রীয় অংশ, কিন্তু OS শুধু kernel নয়—এটি user এবং application-এর জন্য একটি complete working environment প্রদান করে।
উদাহরণস্বরূপ:
- Linux technically একটি kernel
- Ubuntu, Fedora, Debian হলো complete operating systems / Linux distributions, যেখানে Linux kernel-এর সাথে shell, package manager, libraries, utilities, এবং অন্যান্য software components যুক্ত থাকে
OS vs Kernel Comparison
| বিষয় | Kernel | Operating System (OS) |
|---|---|---|
| সংজ্ঞা | OS-এর core component | Kernel + system utilities + libraries + services + interface |
| মূল কাজ | Hardware resource control, scheduling, memory, device, system calls | User/application-কে complete environment ও services প্রদান |
| Hardware access | সরাসরি low-level access | সাধারণত kernel-এর মাধ্যমে hardware ব্যবহার করে |
| User interaction | সরাসরি user interaction নেই | CLI/GUI বা অন্যান্য interface দিতে পারে |
| Mode | Kernel mode / privileged mode | Kernel + user-space components নিয়ে গঠিত |
| উদাহরণ | Linux kernel, Windows NT kernel, XNU kernel | Ubuntu, Fedora, Windows 11, macOS |
What is the difference between an operating system and a hypervisor?
Operating System (OS) হলো এমন একটি system software যা user এবং application program-কে একটি usable computing environment প্রদান করে। এটি process management, memory management, file system, device management, security, এবং user interface-এর মতো কাজ করে।
অন্যদিকে, Hypervisor হলো একটি virtualization layer/software যার কাজ হলো একটি physical machine-এর hardware resources virtualize করে multiple virtual machines (VMs) তৈরি ও চালানো। প্রতিটি VM-এর মধ্যে আলাদা guest operating system চলতে পারে।
সহজভাবে বললে:
- OS একটি computer system-কে একজন user বা application-এর জন্য ব্যবহারযোগ্য করে
- Hypervisor একটি physical machine-কে একাধিক virtual computer-এ ভাগ করে
Types of Hypervisors
i) Type 1 Hypervisor (Bare-metal): এগুলো সরাসরি hardware-এর উপর চলে। এরা high performance এবং enterprise/data-center environment-এ বেশি ব্যবহৃত হয়।
Examples:
- VMware ESXi
- Microsoft Hyper-V
- Xen
Note: Hyper-V Windows-এর সাথে tightly integrated হলেও architecture অনুযায়ী এটি সাধারণত Type 1 / bare-metal hypervisor হিসেবে ধরা হয়।
ii) Type 2 Hypervisor (Hosted): এগুলো একটি existing OS-এর উপর application হিসেবে চলে। সাধারণত development, testing, learning, বা personal virtualization-এর জন্য ব্যবহৃত হয়।
Examples:
- Oracle VirtualBox
- VMware Workstation
- VMware Fusion / Parallels Desktop
OS vs Hypervisor Comparison
| বিষয় | Operating System (OS) | Hypervisor |
|---|---|---|
| মূল উদ্দেশ্য | User/application-কে computing environment দেওয়া | Multiple virtual machines চালানো |
| প্রধান কাজ | Process, memory, file system, device, security management | Hardware virtualization, VM creation, isolation, resource sharing |
| কার জন্য কাজ করে | End user এবং applications | Guest OS / virtual machines |
| Hardware access | Kernel ও drivers-এর মাধ্যমে hardware manage করে | Physical hardware-কে abstract/virtualize করে VM-কে virtual hardware দেয় |
| Output | একটি usable computer environment | একাধিক virtual computer environment |
| উদাহরণ | Windows, Ubuntu, macOS | VMware ESXi, Xen, Hyper-V, VirtualBox |
ধরো একটি বাস্তব building আছে।
- Operating System হলো সেই building-এর ভিতরের management system, যা একটি company-র কর্মীদের কাজ করার environment দেয়।
- Hypervisor হলো এমন একটি system, যা একটি বড় building-কে একাধিক independent office space-এ ভাগ করে, যাতে প্রতিটি office-এ আলাদা company কাজ করতে পারে।
অর্থাৎ:
- OS একটি OS instance-এর process, memory, device ও অন্যান্য resource manage করে
- Hypervisor একাধিক VM এবং তাদের virtual hardware resource manage করে
2. What are the different types of operating systems?
Operating System (OS) বিভিন্ন ধরনের হতে পারে, এবং প্রতিটি ধরনের OS একটি নির্দিষ্ট computing environment বা requirement-এর জন্য তৈরি করা হয়। কিছু OS single user system-এর জন্য, কিছু multiple users/processes handle করার জন্য, কিছু real-time control system-এর জন্য, আবার কিছু embedded devices-এর জন্য ব্যবহৃত হয়।
সাধারণভাবে গুরুত্বপূর্ণ OS types হলো:
- Batch Operating System
- Time-Sharing Operating System
- Distributed Operating System
- Network Operating System
- Real-Time Operating System (RTOS)
- Embedded Operating System
What distinguishes batch, time-sharing, distributed, real-time, and embedded operating systems?
এখানে প্রতিটি OS type-এর purpose, working style, এবং key distinction বোঝা গুরুত্বপূর্ণ।
i) Batch Operating System: Batch OS এমন একটি operating system যেখানে user-এর job বা task-গুলো একত্রে batch আকারে collect করা হয়, তারপর একটার পর একটা automatically execute করা হয় — সাধারণত direct user interaction ছাড়াই।
How it works
- User job submit করে
- OS job-গ ুলোকে group/batch করে
- তারপর scheduler প্রয়োজন অনুযায়ী job-গুলো sequentially বা parallelভাবে process করতে পারে
- execution চলাকালীন user সাধারণত interact করতে পারে না
Key Characteristics
- Direct user interaction নেই
- Similar jobs একসাথে process করা যায়
- Throughput ভালো হতে পারে
- Response time সাধারণত slow
Example Use Cases
- payroll processing
- bank statement generation
- large report generation
- billing system
ধরো একটি company মাসের শেষে 10,000 employee-র salary generate করবে। সব employee data একসাথে batch হিসেবে দিয়ে system salary slip তৈরি করল — এটাই batch processing।
ii) Time-Sharing Operating System: Time-sharing OS এমন একটি OS যেখানে একাধিক user বা process একই system ব্যবহার করতে পারে, এবং CPU time-কে ছোট ছোট time slice-এ ভাগ করে প্রত্যেক process/user-কে পালাক্রমে দেওয়া হয়।
How it works
- CPU একটি process-কে অল্প সময় দেয়
- তারপর দ্রুত context switch করে অন্য process-এ যায়
- ফলে সবাই মনে করে system যেন একই সাথে কাজ করছে
Key Characteristics
- Interactive system
- Multiple users/processes support করে
- Fast response time
- CPU sharing-এর জন্য scheduling ব্যবহার করে
- Fairness ও responsiveness গুরুত্বপূর্ণ
Example Use Cases
- multi-user Unix systems
- terminal-based shared servers
- modern desktop OS conceptually time-sharing behavior ব্যবহার করে
একটি university server-এ একাধিক student একই সাথে login করে program run করছে। OS CPU time slice দিয়ে সবাইকে service দিচ্ছে — এটাই time-sharing।
iii) Distributed Operating System: Distributed OS এমন একটি OS যেখানে একাধিক independent computer/machine একসাথে কাজ করে কিন্তু user-এর কাছে পুরো system-টিকে একটি single unified system হিসেবে উপস্থাপন করা হয়।
How it works
- multiple computers network দিয়ে connected থাকে
- কাজ, data, computation বিভিন্ন machine-এ distribute করা হয়
- user অনেক সময় বুঝতেই পারে না কোন machine আসলে task execute করছে
Key Characteristics
- Multiple computers একসাথে resource share করে
- System looks like one integrated system
- load sharing / parallel processing support করতে পারে
- transparency গুরুত্বপূর্ণ (location transparency, access transparency)
Example Systems / Concepts
- Amoeba
- Sprite
- LOCUS
- research/educational distributed OS বা single-system-image cluster environments
ধরো ৫ টি computer মিলে একটি বড় computation করছে, কিন্তু user-এর কাছে মনে হচ্ছে যেন একটাই system কাজ করছে — এটাই distributed OS-এর idea। তবে মনে রাখতে হবে, সব distributed system বা cloud platform Distributed OS নয়; Distributed OS সাধারণত user-এর কাছে single-system image দেওয়ার চেষ্টা করে।
iv) Real-Time Operating System (RTOS): Real-Time Operating System (RTOS) এমন একটি OS যা নির্দিষ্ট সময়সীমার মধ্যে (deadline-এর মধ্যে) response দিতে designed। এখানে শুধু “correct result” দিলেই হবে না — ঠিক সময়ে result দিতে হবে।
Why it is different
Normal OS-এ performance গুরুত্বপূর্ণ, কিন্তু RTOS-এ timing guarantee / predictability সবচেয়ে গুরুত্বপূর্ণ।
Key Characteristics
- Deterministic behavior
- Very fast interrupt response
- predictable scheduling
- deadline-sensitive task execution
- low latency
Types of Real-Time Requirements
a) Hard Real-Time
Deadline miss করা একেবারেই acceptable না।
Example use cases:
- aircraft control system
- pacemaker
- industrial safety system
b) Soft Real-Time
Deadline miss করা ideally হওয়া উচিত না, কিন্তু মাঝে মাঝে হলে system পুরোপুরি fail করে না।
Example workloads:
- video/audio streaming
- interactive multimedia
- কিছু latency-sensitive online gaming workload
এগুলো soft real-time workload-এর উদাহরণ; এগুলো যে operating system-এ চলে, সেটি অবশ্যই RTOS হতে হবে—এমন নয়।
একটি car airbag system crash detect করে milliseconds-এর মধ্যে deploy না করলে result useless। এখানে correctness + timing দুটোই জরুরি — তাই RTOS দরকার।
v) Embedded Operating System: Embedded OS হলো এমন OS যা embedded systems / dedicated devices-এ ব্যবহারের জন্য তৈরি। এগুলো প্রধানত dedicated device বা নির্দিষ্ট কাজের জন্য optimized; তবে embedded system-এ Linux-এর মতো general-purpose OS-এর customized version-ও ব্যবহৃত হতে পারে।
- microwave oven
- smart TV
- router
- washing machine
- ATM
- car infotainment/control system
- IoT devices
- medical devices
Key Characteristics
- Small and lightweight
- low memory usage
- low power consumption
- device-specific
- often highly reliable
- কখনও real-time features-ও থাকতে পারে
How does a network OS differ from a distributed OS?
এটা খুব common interview question, কারণ Network OS আর Distributed OS দেখতে কাছাকাছি মনে হলেও conceptually আলাদা।
Network Operating System (NOS) Network OS এমন একটি operating system যা একাধিক computer-কে network-এর মাধ্যমে connect করে resource sharing (যেমন file sharing, printer sharing, remote login, centralized user management) করার সুবিধা দেয়। কিন্তু এখানে প্রতিটি machine নিজের আলাদা identity বজায় রাখে।
অর্থাৎ:
- প্রতিটি computer আলাদা system
- user জানে সে কোন machine ব্যবহার করছে
- network-এর মাধ্যমে resource share করা হয়
Example Features
- file sharing
- printer sharing
- user authentication over network
- remote access
- server-client resource management
Examples
- Windows Server
- traditional Unix/Linux network server setups
- NetWare (historically)
Distributed Operating System (again, key idea)
Distributed OS-এ multiple machines মিলে user-এর কাছে single system image দেওয়ার চেষ্টা করে।
অর্থাৎ:
- user ideally বুঝবে না resource কোন machine-এ আছে
- system একক OS-এর মতো behave করে
- workload, resource, execution distributed হতে পারে
Core Difference: Network OS vs Distributed OS
Network OS
- একাধিক computer network-এর মাধ্যমে connected
- কিন্তু প্রতিটি computer আলাদা machine হিসেবেই visible
- user জানে কোন server-এ login করেছে, কোন machine থেকে file নিচ্ছে
- resource sharing আছে, কিন্তু single-system illusion নেই
Distributed OS
- একাধিক computer মিলে একটি unified system হিসেবে কাজ করে
- user ideally বুঝতে পারে না কোন machine task execute করছে
- system transparency বেশি
- distributed resource management built-in
Example to Understand the Difference
Network OS Example
ধরো office-এ ৫টা computer আছে এবং একটি file server আছে। তুমি জানো:
- file server-এর নাম কী
- printer server আলাদা
- database server আলাদা তুমি specific server-এ connect করছ। এটা Network OS style environment।
Distributed OS Example
ধরো ৫টা computer মিলে একটি system তৈরি করেছে, আর তুমি শুধু job submit করছ। কোন machine কাজ করল, কোথায় file store হলো — এগুলো তোমার জানার দরকার ন েই। System নিজেই সব manage করছে। এটা Distributed OS style idea।
| বিষয় | Network OS | Distributed OS |
|---|---|---|
| System view | Multiple connected but separate computers | Multiple computers appear as one system |
| User awareness | User জানে কোন machine/server ব্যবহার করছে | User ideally জানে না কোন machine task করছে |
| Resource sharing | Network-এর মাধ্যমে resource share হয় | Resource management system-wide integrated |
| Transparency | কম | বেশি |
| Administration | Machine/server ভিত্তিক | More unified / coordinated |
| Goal | Network resource sharing | Single-system image + distributed computing |
| Example concept | File server, printer server, login server | Cluster acting like one logical system |
3. What is the difference between a monolithic kernel and a microkernel?
Monolithic kernel এবং microkernel হলো operating system kernel design-এর দুটি ভিন্ন architectural approach। দুটোর মূল পার্থক্য হলো — OS-এর কোন কোন service kernel space-এ থাকবে, আর কোনগুলো user space-এ চলবে।
Monolithic kernel এমন একটি kernel architecture যেখানে অধিকাংশ core OS services—যেমন process management, memory management, file system, networking, এবং অনেক device driver—kernel space-এ চলে।
অর্থাৎ, OS-এর বড় অংশ একই privileged address space-এ execute করে।
এখানে design philosophy হলো: “বেশিরভাগ system service kernel-এর ভেতরেই রাখো, যাতে তারা দ্রুত communicate করতে পারে।”
How it works
- kernel-এর component-গুলো একই address space-এ থাকে
- তারা সাধারণত direct function call-এর মাধ্যমে communicate করতে পারে
- এজন্য performance সাধারণত ভালো হয়
- modern monolithic kernel-এ loadable kernel modules-ও থাকতে পারে, কিন্তু সেগুলোও kernel space-এ চলে
Advantages
- High performance — direct communication, কম IPC overhead
- Efficient system call handling
- file system, drivers, memory manager, scheduler—সব কাছাকাছি integrated
Disadvantages
- kernel বড় হয়ে যায়
- debugging কঠিন হতে পারে
- একটি faulty kernel-mode driver বা subsystem পুরো system crash করাতে পারে
- attack surface বড় হতে পারে
Examples
- Linux
- FreeBSD / OpenBSD / NetBSD
- traditional Unix-like monolithic kernels
Microkernel
Microkernel এমন একটি kernel architecture যেখানে kernel-কে যতটা সম্ভব ছোট রাখা হয়। Kernel-এ শুধু সবচেয়ে জরুরি low-level mechanisms রাখা হয়, আর বাকি service-গুলো user-space processes/servers হিসেবে চালানো হয়।
Microkernel-এ সাধারণত থাকে:
- IPC (Inter-Process Communication)
- basic scheduling / thread management
- low-level memory or address-space management
- basic interrupt / hardware control
আর যেগুলো user space-এ যেতে পারে:
- file system service
- network stack
- device drivers
- window system / other OS services
এখানে philosophy হলো: “Kernel-এ শুধু essential mechanism রাখো, আর policy/service-গুলো user space-এ সরিয়ে দাও।”
How it works
- application বা service অন্য service-এর সাথে message passing / IPC দিয়ে কথা বলে
- kernel এই communication coordinate করে
- services আলাদা process হিসেবে চলতে পারে
Advantages
- Better isolation — একটি service crash করলে পুরো kernel নাও crash করতে পারে
- Improved reliability
- Better modularity
- security auditing তুলনামূলক সহজ হতে পারে
- কি ছু service restart করা সহজ হতে পারে
Disadvantages
- IPC/message passing overhead
- extra context switch লাগতে পারে
- implementation design অনেক সময় জটিল হয়
- historically কিছু microkernel system performance penalty ভুগেছে
Examples
- MINIX 3
- QNX
- seL4
- L4 family
- Mach (historically important microkernel)
Monolithic vs Microkernel Comparison
| বৈশিষ্ট্য | Monolithic Kernel | Microkernel |
|---|---|---|
| Kernel size | তুলনামূলক বড় | তুলনামূলক ছোট |
| কোথায় services চলে | বেশিরভাগ service kernel space-এ | শুধুমাত্র minimal core kernel space-এ; অনেক service user space-এ |
| Communication | direct function call / internal kernel calls | IPC / message passing |
| Performance | সাধারণত দ্রুত | IPC/context-switch overhead-এর কারণে তুলনামূলক ধীর হতে পারে |
| Reliability | একটি faulty kernel component পুরো system-কে affect করতে পারে | একটি user-space service crash হলেও kernel টিকে থাকতে পারে |
| Security / isolation | কম isolation | বেশ ি isolation |
| Fault isolation | kernel component-গুলোর মধ্যে তুলনামূলক কম | user-space service-গুলোর মধ্যে তুলনামূলক বেশি |
| Debugging / maintenance | kernel-level debugging কঠিন হতে পারে | service isolation-এর কারণে কিছু ক্ষেত্রে সহজ |
What is a hybrid kernel, and can you name examples?
Hybrid kernel হলো এমন একটি kernel architecture যা monolithic kernel এবং microkernel—এই দুই design philosophy-এর কিছু বৈশিষ্ট্য একসাথে ব্যবহার করার চেষ্টা করে। এর মূল লক্ষ্য হলো microkernel-এর modularity / separation-এর কিছু সুবিধা রাখা, কিন্তু monolithic kernel-এর performance-ও যতটা সম্ভব বজায় রাখা।
সহজভাবে বললে:
- Microkernel চায় kernel-কে খুব ছোট রাখতে এবং অনেক service user space-এ চালাতে
- Monolithic kernel চায় অধিকাংশ service kernel space-এ রেখে performance বাড়াতে
- Hybrid kernel এই দুইয়ের ম ধ্যে একটি বাস্তবমুখী সমঝোতা করার চেষ্টা করে
Hybrid kernel-এর মূল ধারণা: Hybrid kernel-এ সাধারণত microkernel-এর কিছু idea—যেমন layered structure, modularity, কিছু message-based interaction, subsystem separation—ব্যবহার করা হয়। কিন্তু pure microkernel-এর মতো সব service user space-এ পাঠানো হয় না; performance-critical বা tightly integrated অনেক service kernel space-এই রাখা হয়।
ফলে hybrid kernel-এ:
- কিছু design decision microkernel-inspired
- কিন্তু implementation অনেক ক্ষেত্রে monolithic-style kernel-space execution ব্যবহার করে
Examples
- Windows NT kernel — Windows-এর kernel family; সাধারণত hybrid kernel হিসেবে classify করা হয়
- XNU kernel — macOS/iOS-এর kernel; Mach microkernel ideas + BSD components + I/O Kit মিলিয়ে তৈরি
Note: “Hybrid kernel” classification কিছু ক্ষেত্রে debated, কারণ real-world kernels pure textbook category-তে সবসময় perfectly fit করে না।
What are the performance and reliability trade-offs between monolithic and microkernel designs?
এখানে মূল প্রশ্ন হলো: “Speed বেশি চাই, নাকি isolation ও reliability বেশি চাই?” বাস্তবে উত্তরটা সবসময় black-and-white না; বরং এটি trade-off।
Monolithic kernel কেন দ্রুত হতে পারে
Monolithic kernel-এ file system, scheduler, memory manager, networking, driver—এগুলো সাধারণত একই kernel address space-এ থাকে। তাই component-গুলোর মধ্যে communication direct function call বা internal kernel call-এর মাধ্যমে হতে পারে। এতে:
- IPC overhead কম
- extra user↔kernel switching কম
- data path ছোট হতে পারে
ফলে performance সাধারণত ভালো হয়।
Microkernel-এ overhead কেন হতে পারে
Microkernel-এ file system server, driver, networking service ইত্যাদি user space-এ থাকলে, একটি কাজ সম্পন্ন করতে application ↔ kernel ↔ service ↔ kernel ↔ application ধরনের communication লাগতে পারে। এতে:
- extra IPC/message passing
- additional context switching
- scheduling overhead
- কিছু workload-এ cache/TLB impact
— এগুলোর কারণে performance cost আসতে পারে।
Monolithic kernel-এর downside যেহেতু অনেক subsystem ও driver kernel mode-এ চলে, তাই একটি buggy kernel-mode component পুরো system stability-কে affect করতে পারে। যেমন:
- kernel panic
- BSOD
- full system hang
এর ঝুঁকি তুলনামূলক বেশি।
Microkernel-এর advantage Microkernel-এ যদি file server, driver, network service ইত্যাদি user space-এ চলে, তাহলে একটি service crash করলেও পুরো kernel crash নাও করতে পারে। এতে পাওয়া যায়:
- better fault isolation
- improved modularity
- কিছু ক্ষেত্রে service restart করা সহজ
- smaller trusted computing base
এই কারণেই microkernel-based design safety-critical ও embedded systems-এ আকর্ষণীয়।
Monolithic vs Microkernel Trade-off Table
| বিষয় | Monolithic Kernel | Microkernel |
|---|---|---|
| Performance | সাধারণত দ্রুত | IPC/context-switch overhead থাকতে পারে |
| Communication | direct kernel-space calls | message passing / IPC |
| Reliability | kernel-mode bug পুরো system affect করতে পারে | better isolation; service failure সীমাবদ্ধ রাখা সম্ভব |
| Privileged TCB / attack surface | তুলনামূলক বড় | minimal trusted core-এর কারণে তুলনাম ূলক ছোট |
| Fault isolation | kernel component-গুলোর মধ্যে কম | user-space service-গুলোর মধ্যে বেশি |
| Debugging / maintenance | kernel debugging কঠিন হতে পারে | user-space services-এর কারণে কিছু ক্ষেত্রে সহজ |
Where does hybrid kernel fit?
Hybrid kernel সাধারণত এই দুই design-এর মাঝামাঝি একটি practical position নেয়:
- pure microkernel-এর মতো সব service user space-এ পাঠায় না
- pure monolithic-এর মতো সবকিছুও একভাবে treat করে না
- performance-critical অংশ kernel space-এ রাখতে পারে
- কিছু architectural modularity বজায় রাখে
তাই hybrid kernel-কে বলা যায় performance এবং structural modularity-এর মধ্যে compromise-oriented design।
4. What is the difference between user mode and kernel mode?
Modern operating system সাধারণত CPU-এর available privilege level থেকে প্রধানত দুই ধরনের execution mode ব্যবহার করে:
- User Mode
- Kernel Mode
CPU architecture-এ আরও privilege level থাকতে পারে—যেমন x86-এর rings বা ARM-এর exception levels—তবে সাধারণ application বনাম OS kernel বোঝাতে user mode এবং kernel mode-ই মূল distinction।
এই mode দুটির মূল উদ্দেশ্য হলো system security, stability, এবং protection নিশ্চিত করা। সব program-কে যদি hardware এবং memory-তে unrestricted access দেওয়া হতো, তাহলে একটি buggy program বা malicious program পুরো system crash করাতে পারত। এই কারণেই CPU privilege level ব্যবহার করে কিছু operation শুধু kernel-এর জন্য reserve করে রাখে।
User mode হলো সেই execution mode যেখানে সাধারণ application program চলে। যেমন: Chrome, VS Code, Spotify, browser tab-এর process।
এই mode-এ চলা process-গুলোর ক্ষমতা সীমিত থাকে। এরা সরাসরি critical hardware operation বা sensitive system resource access করতে পারে না।
User Mode-এর বৈশিষ্ট্য
- privileged instruction execute করতে পারে না
- সরাসরি hardware control করতে পারে না
- kernel memory access করতে পারে না
- অন্য process-এর protected memory-তে ঢুকতে পারে না
- system resource access করতে হলে OS-এর কাছে request করতে হয়
অর্থাৎ, user mode-এ program restricted environment-এ চলে।
Kernel mode হলো CPU-এর privileged / supervisor mode, যেখানে operating system-এর kernel এবং kernel-level components execute করে।
এই mode-এ code-এর পূর্ণ ক্ষমতা থাকে:
- hardware access করতে পারে
- privileged instruction execute করতে পারে
- page table modify করতে পারে
- interrupts handle করতে পারে
- device control করতে পারে
- process scheduling করতে পারে
- memory management করতে পারে
Kernel Mode-এ কী কী চলে?
- OS kernel
- scheduler
- memory manager
- file system core
- interrupt handler
- many device drivers
- system call handler
অর্থাৎ, kernel mode হলো full-privilege execution environment।
| বিষয় | User Mode | Kernel Mode |
|---|---|---|
| Privilege level | কম | সর্বোচ্চ |
| কে চলে | Applications, user programs | OS kernel, core services, many drivers |
| Hardware access | সরাসরি না | হ্যাঁ |
| Privileged instruction | execute করতে পারে না | পারে |
| Memory access | নিজের allowed memory পর্যন্ত সীমাবদ্ধ | protected kernel resource এবং mapped system memory access করতে পারে |
| Risk | crash হলেও সাধারণত সেই process-এ সীমাবদ্ধ | bug হলে পুরো system crash হতে পারে |
| Purpose | safety, isolation, app execution | resource management, hardware control |
যদি user program-কে full privilege দেওয়া হতো তাহলে কী হতো?
একটি সাধারণ app তখন:
- disk controller-এ ইচ্ছামতো command পাঠাতে পারত
- kernel memory overwrite করতে পারত
- অন্য process-এর data পড়ে ফেলতে পারত
- CPU interrupt disable করতে পারত
- system crash করাতে পারত
এই ঝুঁকি এড়াতে OS বলে:
“Applications user mode-এ চলবে; sensitive কাজ করতে হলে kernel-এর সাহায্য নিতে হবে।”
How does the CPU switch between user mode and kernel mode?
CPU নিজে থেকে randomভাবে mode switch করে না। সাধারণত নির্দিষ্ট event ঘটলে CPU user mode থেকে kernel mode-এ যায়।
এই switching-এর সবচেয়ে common কারণ হলো:
- System call
- Interrupt
- Exception / Trap / Fault
System Call-এর মাধ্যমে switch যখন একটি user program এমন কিছু করতে চায় যা privileged — যেমন:
- file open করা
- network socket তৈরি করা
- OS-এর কাছ থেকে নতুন memory mapping/request করা (
mmap,brk-এর মতো system call বাVirtualAlloc-এর মতো OS API) - process create করা
- disk থেকে data পড়া
তখন program সরাসরি hardware access করতে পারে না। এর বদলে সে system call করে।
- Application user mode-এ চলছে
- সে
read(),write(),open(),fork()ইত্যাদি system call invoke করল - CPU একটি special trap/syscall instruction-এর মাধ্যমে kernel mode-এ switch করল
- control OS kernel-এর system call handler-এ গেল
- kernel requested কাজ করল
- result প্রস্তুত হলে CPU আবার user mode-এ ফিরে application-এ control দিল
Interrupt-এর মাধ্যমে switch
ধরো একটি disk I/O operation চলছিল। ডিস্ক কাজ শেষ হলে hardware CPU-কে interrupt পাঠায়।
তখন:
- CPU বর্তমানে হয়তো user-mode process চালাচ্ছে
- interrupt এলে CPU current execution pause করে
- kernel mode-এ switch করে
- interrupt handler execute করে
- কাজ শেষে CPU আগের process-এ ফিরতে পারে, অথবা scheduler প্রয়োজন মনে করলে অন্য ready process/thread চালাতে পারে
Exception / Fault-এর মাধ্যমে switch
যদি program কোনো abnormal কাজ করে, যেমন:
- divide by zero
- invalid memory access
- page fault
- illegal instruction
তাহলে CPU exception generate করে। এর ফলে control kernel-এ যায়, কারণ kernel-কে decide করতে হবে কী করা হবে।
User Mode → Kernel Mode switch-এর step-by-step internal idea
যখন user mode থেকে kernel mode-এ switch হয়, সাধারণত CPU/OS নিম্নোক্ত কাজগুলো করে:
-
current user process-এর execution state save করে
- program counter / instruction pointer
- registers
- flags
-
CPU privilege level change করে
- user mode → kernel mode
-
kernel stack-এ switch করতে পারে
-
predefined handler address-এ jump করে
- system call handler / interrupt handler / exception handler
-
kernel requested কাজ সম্পন্ন করে
-
return-from-trap / return-from-interrupt instruction ব্যবহার করে আবার user mode-এ ফিরে যায়
User mode থেকে kernel mode-এ switch হলে কি সবসময় context switch হয়?
না — সবসময় context switch হয় না।
এখানে দুটি আলাদা জিনিস আ ছে: Mode switch
শুধু CPU privilege level বদলালো:
- user mode → kernel mode → আবার user mode কিন্তু একই process-এর behalf-এ কাজ হচ্ছে।
Context switch
CPU এক process/thread থেকে অন্য process/thread-এ চলে গেল।
Example:
read() system call করলে:
- আগে user mode
- তারপর kernel mode
- তারপর same process-এ ফিরে user mode
এখানে mode switch হয়েছে, কিন্তু process context switch না-ও হতে পারে।
What happens if a user-mode process tries to execute a privileged instruction?
এটাই সবচেয়ে important protection behavior।
যদি একটি user-mode process privileged instruction execute করতে চায়, CPU সেটা অনুমতি দেবে না। বরং CPU একটি trap / exception / protection fault generate করবে।
কী ধরনের privileged instruction হতে পারে? যেমন:
- interrupt disable করা
- page table register modify করা
- I/O port-এ সরাসরি access করা
- CPU control register change করা
- memory management unit-এর sensitive setting বদলানো
তখন কী ঘটে step by step?
ধরো একটি user program privileged instruction execute করার চেষ্টা করল।
- CPU দেখে instructionটি privileged
- কিন্তু current mode হলো user mode
- CPU instruction execute না করে exception / trap raise করে
- CPU kernel mode-এ switch করে
- OS exception handler control পায়
- OS সাধারণত process-টিকে terminate করে বা signal/exception দেয়