Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Fixed Partitioning (การแบ่งพาร์ติชันแบบคงที่) ในระบบปฏิบัติการ ด้วย C++


บทนำ

ในบทช่วยสอนนี้ เราจะเรียนรู้เกี่ยวกับ Fixed Partitioning (การแบ่งพาร์ติชันแบบคงที่) ซึ่งเป็นเทคนิคการจัดการหน่วยความจำในระบบปฏิบัติการแบบเก่าแก่

คืออะไร?

Fixed Partitioning แบ่งหน่วยความจำหลัก (Main Memory) ออกเป็นบล็อกขนาดเท่ากันล่วงหน้า ขนาดของแต่ละบล็อกถูกกำหนดไว้ล่วงหน้าและ ไม่สามารถเปลี่ยนแปลงได้ ระบบจะจัดสรรบล็อกเหล่านี้ให้กับโปรเซสที่ต้องการหน่วยความจำแบบต่อเนื่อง (Contiguous)

ข้อดีและข้อเสีย

  • ข้อดี: ง่ายต่อการนำไปใช้ ไม่มี fragmentation ภายในบล็อก (Internal fragmentation อาจเกิดขึ้นถ้าโปรเซสเล็กกว่าบล็อก)
  • ข้อเสีย: ไม่ยืดหยุ่น ขนาดบล็อกคงที่ อาจเกิด Internal Fragmentation มาก ถ้าโปรเซสใหญ่กว่าบล็อกก็ไม่สามารถรันได้

ตัวอย่างโปรแกรมจัดสรรหน่วยความจำ

#include <iostream>
using namespace std;

int main() {
    int blockNumber = 5, processesNumber = 3;
    int blockSize[5] = {4, 4, 4, 4, 4};
    int processSize[3] = {1, 2, 3};
    int flags[5], allocation[5];
    
    // เริ่มต้น flags และ allocation
    for(int i = 0; i < 5; i++) {
        flags[i] = 0;
        allocation[i] = -1;
    }
    
    // จัดสรรบล็อกให้โปรเซส (First Fit)
    for(int i = 0; i < processesNumber; i++) {
        for(int j = 0; j < blockNumber; j++) {
            if(flags[j] == 0 && blockSize[j] >= processSize[i]) {
                allocation[j] = i;
                flags[j] = 1;
                break;
            }
        }
    }
    
    // แสดงผล
    for (int i = 0; i < blockNumber; i++) {
        if (flags[i] == 1) {
            cout << "Process " << processSize[allocation[i]] << " is allocated" << endl;
        }
    }
    return 0;
}

ผลลัพธ์

Process 1 is allocated
Process 2 is allocated
Process 3 is allocated

สรุป

Fixed Partitioning เป็นเทคนิคพื้นฐานในการจัดการหน่วยความจำ แม้จะไม่ค่อยใช้ในระบบปฏิบัติการสมัยใหม่แล้ว แต่เข้าใจง่ายและเป็นพื้นฐานของ Dynamic Partitioning หากมีคำถาม สามารถถามได้ในส่วนความคิดเห็นครับ