Câu 8:
Trong chế độ thực bộ nhớ được quản lí theo cơ chế phân đoạn.Cơ chế quản lí bộ nhớ theo phân đoạn là cơ chế trong đó bộ nhớ được định vị và giám sát theo đoạn.Trong cơ chế phân đoạn mỗi một chương trình không được xem là một chuỗi liên tục của mã lệnh và dữ liệu mà được chia thành các modul mã lệnh ,dữ liệu ,ngăn xếp,…. .Mỗi modul được chứa trong một đoạn nhớ và một địa chỉ xác định.Hệ điều hành có thể đặt các modul của chương trình ở bất kỳ chỗ nào trong bộ nhớ vật lý ,đoạn nhớ sẽ mang tên của loại modul nó chứa.
Có 4 loại đoạn khác nhau :
+Đoạn mã lệnh(code segment) chứa mã lệnh của chương trình
+Đoạn dữ liệu (data segment) chứa dữ liệu của chương trình
+Đoạn ngăn xếp(stack segment ) là đoạn chứa các thông tin và dữ liệu phục vụ chương trình con
+Đoạn mở rộng (extra segment) chứa dữ liệu mở rộng
Mỗi một đoạn có một địa chỉ gọi địa chỉ đoạn
CPU có phần cứng hỗ trợ việc quản lí và truy nhập các đoạn , đó là các thanh ghi đoạn 16 bit CS,DS,SS,ES:
CS
DS
SS
ES
Trong chế độ thực thanh ghi đoạn chứa địa chỉ đoạn .Thanh ghi CS chứa địa chỉ đoạn mã lệnh ,thanh ghi DS chúa địa chỉ đoạn ngăn xếp ,thanh ghi ES chứa địa chỉ đoạn mở rộng .
Mỗi một ô nhớ trong mỗi đoạn được định vị bằng một cặp con số :địa chỉ đoạn và địa chỉ offset (địa chỉ lệch),trong đó địa chỉ offset là con số xác định vị trí của ô nhớ so với nền đoạn .Cặp số này được gọi là địa chỉ logic của ô nhớ ,được biểu diễn :
Địa chỉ đoạn:Địa chỉ offset
Thanh ghi IP chứa địa chỉ offset của ô nhớ trong đoạn mã lệnh chứa lệnh CPU cần nhập
Thanh ghi SP chứa địa chỉ offset của ô đỉnh ngăn xếp trong đoạn ngăn xếp
Khi truy nhập các đoạn dữ liệu người lập trình cần xác định địa chỉ offset của cacs ô nhớ bằng các phương pháp xác định địa chỉ toán hạng
Công thức tính :
Địa chỉ vật lí =Địa chỉ đoạn *16+Địa chỉ offset