Phân đoạn (Segmentation) là một kỹ thuật quản lý bộ nhớ. Kỹ thuật này phân chia bộ nhớ vật lý ra nhiều phân đoạn, mỗi phân đoạn sẽ có một kích thước nhất định và tương ứng với một tác vụ nhất cụ thể nào đó.

Địa chỉ luận lý dùng cho kỹ thuật phân đoạn sẽ gồm hai giá trị là segmentoffset.

Segment Table

  • Bảng phân đoạn là một bảng giúp chuyển đổi địa chỉ luận lý sang địa chỉ vật lý. Mỗi entry trong bảng bao gồm hai thông tin:
    • base: địa chỉ vật lý bắt đầu của phân đoạn.
    • limit: độ dài của phân đoạn. Địa chỉ luận lý có giá trị offset nhỏ hơn limit là địa chỉ hợp lệ.
  • Hai thanh ghi giúp lưu giá trị địa chỉ luận lý là:
    • STBR (segment table base register) trỏ đến giá trị base.
    • STRL (Segment table length register) trỏ đến giá trị limit.

Address Translation

Mô tả quá trình chuyển đổi địa chỉ luận lý sang địa chỉ vật lý.

Ví dụ cho một segment table như sau:

SegmentBaseLimit
0300700
11200500
22000600

Chuyển các địa chỉ luận lý sau thành địa chỉ vật lý: (1 - 200), (1 - 0), (0 - 700), (2 - 0), (2 - 600).

  • (1 - 200): 200 nhỏ hơn 500 → địa chỉ hợp lệ, có giá trị là 1400.
  • (1 - 0): 0 nhỏ hơn 500 → địa chỉ hợp lệ, có giá trị là 1200.
  • (0 - 700): 700 không nhỏ hơn 700 → địa chỉ không hợp lệ.
  • (2 - 0): 0 nhỏ hơn 600 → địa chỉ hợp lệ, có giá trị là 2000.
  • (2 - 600): 600 không nhỏ hơn 600 → địa chỉ không hợp lệ.

Resources

  • Slide “Phân mảnh bộ nhớ” của đại học Bách Khoa.