Có hai cách tổ chức quản lý bộ nhớ: tổ chức theo phân đoạn và tổ chức tuyến tính. Ở cách tiếp cận theo phân đoạn chương trình và dữ liệu được người lập trình chia thành các modul. Mỗi modul có một không gian địa chỉ riêng. Mỗi modul được gọi là một đoạn và được gần một con số, gọi là địa chỉ đoạn. Mỗi ô nhớ trong đoạn được xác định bởi địa chỉ logic gồm hai con số: địa chỉ đoạn và địa chỉ offset (địa chỉ lệch). Các modul được nạp vào bộ nhớ và được quản lý theo cơ chế phân đoạn.
Ở cách tiếp cận tuyến tính, một bộ nhớ với không gian địa chỉ rất lớn (ảo) được cung cấp cho chương trình. Địa chỉ này là địa chỉ tuyến tính và bắt đầu từ 0. Chương trình được chia thành các khuc nhỏ có kích thước cố định, mỗi khúc này được gọi là một trang, và được nạp vào bộ nhớ vật lý. Mỗi chương trình được hệ điều hành quản lý bằng một bảng trang. Các khúc chương trình chứa trong bộ nhớ được quản lý theo cơ chế phân trang. Nhiệm vụ đang chạy tại một thời điểm chỉ cần một số ít trang chương trình và dữ liệu trong bộ nhớ vật lý, nên kỹ thuật quản lý bộ nhớ theo trang là một kỹ thuật thích hợp cho việc tổ chức bộ nhớ ảo.
46 Người ta có thể kết hợp cả hai cách nói trên để quản lý bộ nhớ.
2.3.1. Cơ chế quản lý bộ nhớ theo phân trang
Các CPU x86 32 bit có phần cứng hỗ trợ quản lý bộ nhớ trong chế độ bảo vệ theo cả hai cơ chế phân đoạn và phân trang. Cơ chế quản lý bộ nhớ theo phân đoạn đã được trình bày ở chương 1. Trong phần này ta chỉ xét cơ chế quản lý bộ nhớ theo phân trang.
Đơn vị quản lý bộ nhớ chuyển địa chỉ logic gồm địa chỉ nền đoạn 32 bit và địa chỉ offset 32 bit thành địa chỉ tuyến tính.
Nếu chọn cách quản lý theo phân đoạn thì địa chỉ tuyến tính sẽ là địa chỉ vật lý.
Nếu chọn cách quản lý theo phân trang thì đơn vị quản lý bộ nhớ sẽ chuyển địa chỉ tuyến tính thành địa chỉ vật lý theo cơ chế quản lý theo phân trang.
Trong cơ chế quản lý theo trang, chương trình được chia thành các khúc nhỏ có kích thước xác định, được gọi là trang. Mỗi trang chương trình được gán vào từng đoạn nhỏ của bộ nhớ, mỗi đoạn nhỏ chứa trang được gọi là một khung trang.
Hệ điều hành quản lý quá trình thực hiện chương trình bằng bảng trang. Bảng trang chỉ ra vị trí khung trang (địa chỉ nền) của mỗi trang chương trình. CPU dựa vào vị trí khung trang và địa chỉ offset của ô nhớ trong trang để tính ra địa chỉ vật lý của ô nhớ.
Cấu trúc của hệ thống quản lý gồm 3 phần: thư mục trang (Page Directory), bảng trang
(Page Table) và trang (Page). Thư mục trang, bảng trang và trang đều có cùng một kích thước là 4Kbyte.
Thư mục trang:
Thư mục trang có kích thước 4Kbyte. Thư mục trang chứa tới 1024 Lối vào thư mục trang
PDE (Page Directory Entry).
PDE có kích thước 32 bit (4 byte). Mỗi PDE chứa 20 bít địa chỉ nền bảng trang (trỏ đến nền bảng trang). Mỗi một thư mục trang có thể quản lý được tới 1024 bảng trang.
Cấu trúc một PDE trong thư mục trang:
31 12 11 0 Địa chỉ bảng trang (20bit) Thông tin về bảng trang
Phần địa chỉ bảng trang chứa 20 bit cao của địa chỉ nền bảng trang (địa chỉ bắt đầu một bảng trang), 12 bít thấp của địa chỉ nền bảng trang luôn bằng 0.
Phần thông tin về bảng trang chứa các thông tin về quyền truy nhập bảng trang và một số thuộc tính khác của trang. Các bit 1 và 2 trong mỗi PDE cung cấp mức đặc quyền và quyền ghi/đọc v.v... của tất cả các trang trỏ bởi PDE này.
Trong cơ chế quản lý bộ nhớ theo trang, 10 bit cao (từ bit 22 đến bit 31) của địa chỉ tuyến tính được dùng để xác định vị trí của PDE trong thư mục trang (vị trí so với nền thư mục trang).
47 Bảng trang có kích thước 4 Kbyte. Bảng trang chứa 1024 lối vào bảng trang PTE (Page Table Entry).
PTE có kích thước 32 bit (4 byte). Mỗi PTE chứa địa chỉ nền của một trang 4Kbyte, do vậy một bảng trang có thể quản lý được tới 1024 trang.
Cấu trúc một PTE:
31 12 11 0
Địa chỉ trang (20bit) Thông tin về trang
Phần Địa chỉ trang chứa 20 bit cao của địa chỉ vật lý nền trang (địa chỉ vật lý bắt đầu một trang), 12 bít thấp của địa chỉ nền trang luôn bằng 0.
Phần Thông tin về trang chứa các thông tin về quyền truy nhập trang và một số thuộc tính khác của trang. Các bít 1 và 2 trong mỗi PTE cung cấp mức đặc quyền và quyền ghi/đọc, v.v... của tất cả các trang trỏ bởi PTE này.
Trong cơ chế quản lý bộ nhớ theo trang, 10 bit của địa chỉ tuyến tính (từ bit 12 đến bít 21) được dùng để xác định vị trí của PTE trong bảng trang (vị trí so với nền bảng trang).
Có hai mức đặc quyền được dùng để bảo vệ trang: mức chương trình ứng dụng (tương đương mức 3 trong quản lý theo đoạn) và mức chương trình giám sát (tương đương mức 0, 1, 2 trong quản lý theo đoạn).
Mức thấp nhất trong hai mức của PDE và PTE được lấy làm mức đặc quyền và quyền ghi/đọc của từng trang.
Địa chỉ vật lý của ô nhớ trong trang được tính bằng cách kết hợp 20 bit cao (phần địa chỉ trang) trong PTE với 12 bit thấp nhất trong địa chỉ tuyến tính.
2.3.2 Cơ chế truy nhập bộ nhớ theo trang
Các máy tính PC loại 32 bit quản lý bộ nhớ theo cách kết hợp hai cơ chế phân đoạn và phân trang. Để truy nhập một ô nhớ CPU cần có một địa chỉ logic, gồm địa chỉ nền đoạn (nhận được từ bộ mô tả đoạn theo cơ chế đã được trình bày Chương I) và địa chỉ offset. Địa chỉ logic này được chuyển thành địa chỉ tuyến tính. Địa chỉ tuyến tính này được dùng để tính địa chỉ vật lý và truy nhập ô nhớ theo cơ chế phân trang (hình bên dưới).
Khi truy nhập theo cơ chế phân trang địa chỉ tuyến tính được tách thành 3 phần: + A31 ÷ A22: 10bit chỉ số PDE, xác định vị trí PDE trong thư mục trang.
+ A21 ÷ A12: 10 bit chỉ số PTE, xác định vị trí PTE trong bảng trang. + A11 ÷ A0: là 12 bít địa chỉ offset của ô nhớ trong trang.
48 Địa chỉ vật lý của ô nhớ trong trang được tính bằng cách kết hợp 20 bit cao (phần địa chỉ trang) trong PTE với 12 bit thấp (A11÷A0) nằm trong địa chỉ tuyến tính này.
49
Chương 3
Các phương pháp vào ra dữ liệu trong máy vi tính 3.1. Cấu trúc phần cứng của hệ thống vào/ra dữ liệu
- Đơn vị xử lý trung tâm CPU thực hiện trao đổi thông tin với các thiết bị ngoại vi và thế giới bên ngoài thông qua thiết bị giao diện. Thiết bị giao diện là loại thiết bị khả trình. Mỗi một thiết bị giao diện đều có ba loại thanh ghi, mỗi loại thực hiện một chức năng khác nhau, đó là các thanh ghi điều khiển (control), thanh ghi trạng thái (status) và thanh ghi dữ liệu (data). Mỗi một thanh ghi đều được gán một địa chỉ xác định, gọi là địa chỉ cổng.
Bộ nhớ CPU STATUS DATA Thiết bị ngoại vi Hệ thống BUS
Thiết bị giao diện CONTROL
+ Các thanh ghi điều khiển (thanh ghi CONTROL) nhận và chứa các từ điều khiển xác lập chế độ làm việc của thiết bị.
+ Các thanh ghi trạng thái (thanh ghi STATUS) chứa thông tin phản ảnh trạng thái làm việc của thiết bị giao diện và thiết bị ngoại vi.
+ Các thanh ghi dữ liệu (thanh ghi DATA) thực hiện chức năng bộ đệm tạm chứa dữ liệu vào/ra.
Khi CPU đưa một dữ liệu ra ngoài (khi CPU thực hiện lệnh OUT xuất một dữ liệu ra cổng có địa chỉ xác định) thực chất là CPU đưa dữ liệu ra thanh ghi dữ liệu của thiết bị giao diện, thiết bị giao diện sẽ chuyển nó thành dạng thích hợp với thiết bị ngoại vi rồi mới đưa ra ngoài cho thiết bị ngoại vi. Khi thiết bị ngoại vi gửi một dữ liệu cho máy tính, dữ liệu này được đưa vào thanh ghi dữ liệu trong thiết bị giao diện. CPU nhập dữ liệu từ ngoài bằng cách đọc thanh ghi dữ liệu đệm này.
VD: OUT port 378, AL: Đưa nội dung thanh ghi AL ra cổng máy in
3.2. Các phương pháp vào/ra dữ liệu
3.2.1 Phân loại
Thiết bị giao diện chỉ giúp CPU kết nối một cách thích hợp về mặt vật lý các thiết bị bên ngoài, nhưng chưa đảm bảo tính tin cậy của quá trình trao đổi thông tin. Điều này xuất phát từ một số nguyên nhân khách quan là nhịp làm việc và tốc độ làm việc của CPU khác xa thiết bị bên ngoài nhiều. Để CPU có thể thực hiện trao đổi thông tin với các thiết bị bên ngoài có độ tin cậy cao cần phải áp dụng các phương pháp vào ra thích hợp, các phương pháp này được gọi là các phương pháp vào ra dữ liệu.
50 vẽ):
Các phương pháp vào/ra dữ liệu
Vào/ra do CPU chủ động Vào/ra do các thiết bị vào/ra chủ động
Vào/ra theo định trình
Vào/ra có
thăm dò Vào/ra theo ngắt cứng Vào/ra kiểu DMA
3.2.2 Phương pháp vào/ra dữ liệu theo định trình
Phương pháp vào ra theo định trình là phương pháp trong đó quá trình vào ra được thực hiện theo một chu kỳ xác định trước, nhờ các lệnh vào ra ( lệnh IN hoặc OUT) và CPU không quan tâm đến trạng thái của thiết bị vào ra ( gồm thiết bị giao diện và thiết bị ngoại vi). .
Ưu điểm: Phương pháp này phù hợp với những quá trình vào/ra có chu kỳ cố định và có thể xác định trước.
51
3.2.3 Phương pháp vào/ra dữ liệu theo kiểu thăm dò
Vấn đề điều khiển vào/ra dữ liệu sẽ là đơn giản nếu thiết bị ngoại vi luôn sẵn sàng để làm việc với CPU. Ví dụ, với thiết bị vào như bộ phận đo nhiệt độ số lắp sẵn trong một hệ thống điều khiển lúc nào cũng có thể cung cấp số đo về nhiệt độ của đối tượng cần điều chỉnh, hay thiết bị ra như bộ đèn LED dùng để hiển thị giá trị nhiệt độ trong hệ thống nói trên thì lúc nào cũng có thể biểu hiện thông tin đó. Như vậy khi CPU cần có thông tin về nhiệt độ của đối tượng thì nó chỉ việc đọc dữ liệu tại cổng phối ghép với bộ đo nhiệt độ và nếu CPU muốn biểu diễn thông tin vừa đọc lên đèn LED thì nó chỉ việc đưa ra tín hiệu điều khiển tới đó mà không cần kiểm tra xem các thiết bị này có đang sẵn sàng làm việc hay không.
Trong mỗi thiết bị giao diện thường có ít nhất một thanh ghi trạng thái chứa thông tin phản ánh trạng thái làm việc của thiết bị này và của thiết bị ngoại vi. Khi thực hiện phương pháp vào ra có thăm dò, CPU luôn thực hiện kiểm tra trạng thái sẵn sàng làm việc của thiết bị trước khi thực hiện thật sự việc vào ra dữ liệu. Việc kiểm tra trạng thái sẵn sàng của thiết bị bằng cách kiểm tra thông tin trên thanh ghi trạng thái.
Quá trình vào/ra dữ liệu theo phương pháp thăm dò như sau:
52 Ưu điểm của phương pháp thăm dò: do CPU luôn kiểm tra trạng thái sẵn sàng làm việc của thiết bị
trước khi thực hiện vào/ra dữ liệu nên quá trình vào/ra dữ liệu kiểu này có độ tin cậy cao.
Nhược điểm: Do CPU luôn phải kiểm tra lần lượt trạng thái làm việc của các thiết bị cho nên tốc độ vào/ra dữ liệu chậm. Hơn nữa, nếu CPU chỉ làm có một công việc là vào/ra dữ liệu (theo phương pháp thăm dò) thì hiệu quả không cao, ngược lại nếu CPU đồng thời phải thực hiện nhiều loại công việc hơn thì thời gian làm việc của CPU sẽ bị chia xẻ, đồng thời độ tin cậy của phương pháp vào/ra thăm dò cũng bị giảm đi rất nhiều.
3.2.4 Phương pháp vào/ra dữ liệu theo ngắt cứng
Trong cách vào/ra dữ liệu điều khiển bằng phương pháp thăm dò, trước khi tiến hành trao đổi dữ liệu CPU phải dành toàn bộ thời gian vào việc xác định trạng thái sẵn sàng của thiết bị cần trao đổi. Trong hệ thống VXL với cách làm việc như vậy, thông thường CPU được thiết kế chủ yếu chỉ là để phục vụ cho việc vào/ ra dữ liệu và thực hiện các tác vụ xử lý dữ liệu liên quan.
Trong thực tế, người ta phải tận dụng những khả năng của CPU để thực hiện những công việc khác ngoài việc trao đổi dữ liệu với TBN, chỉ khi nào có yêu cầu trao đổi dữ liệu thì mới yêu cầu CPU tạm dừng công việc hiện tại để phục vụ việc trao đổi dữ liệu. Sau khi hoàn thành thì CPU lại trở lại thực hiện tiếp công việc đang tiến hành, hoặc thực hiện một công việc mới. Cách làm việc như vậy gọi là ngắt cứng để trao đổi dữ liệu. Một hệ thống như vậy có thể đáp ứng rất nhanh với các yêu cầu trao đổi dữ liệu trong khi vẫn có thể thực hiện các công việc khác.
53
Ngắt là sự kiện CPU bị tạm dừng tiến trình đang thực hiện để chuyển sang thực hiện quá trình phục vụ ngắt.
Ngắt cứng là phương pháp vào/ra dữ liệu trong đó thiết bị vào/ra chủ động khởi động quá trình vào/ra dữ liệu nhờ hệ thống ngắt cứng.
Thông thường quá trình vào/ra theo ngắt cứng được trợ giúp bởi thiết bị điều khiển ngắt PIC (Programmable Interrupt Controller). PIC có chức năng ghi nhận các yêu cầu ngắt IRQ và cung cấp cho CPU số ngắt đại diện cho địa chỉ của chương trình con phục vụ ngắt và tương ứng yêu cầu ngắt IRQ.
Cấu trúc của hệ thống ngắt cứng:
Quá trình vào ra theo ngắt cứng;
- CPU dang thực hiện một chương trình nào đó
- Một hoặc nhiều thiết bị vào/ra có yêu cầu được phục vụ phát tín hiệu IRQ cho PIC - Thiết bị PIC phát ra tín hiệu INT cho CPU, đòi CPU phục vụ
- CPU thực hiện các thao tác sau:
++ Thực hiện nốt lệnh của chương trình hiện hành.
++ Lưu địa chỉ trở về (nội dung các thanh ghi CS, IP) và thanh ghi cờ FLAGS vào ngăn xếp. ++ Gửi 2 tín hiệu trả lời ngắt INTA cho PIC
- PIC nhận được tín hiệu INTA lần thứ 1 từ CPU thì PIC không gửi gì cho CPU mà thực hiện chức năng của nó như: Sắp xếp độ ưu tiên cho các yêu cầu ngắt IRQi.
- PIC nhận được tín hiệu INTA lần 2 thì nó phát số hiệu ngắt (con số đại diện cho địa chỉ của chương trình con phục vụ ngắt, và tương ứng với tín hiệu IRQ) cho CPU.
- Dựa trên số hiệu ngắt này CPU kích hoạt và thực hiện chương trình con phục vụ ngắt để thực hiện vào ra dữ liệu.
- Khi chương trình phục vụ ngắt kết thúc (Khi CPU thực hiện lệnh IRET) thì CPU khôi phục địa chỉ trở về vào thanh ghi CS, IP, nội dung thanh ghi FLAGS và tiếp tục tiếp tục thực hiện chương trình vừa bị tạm dừng.
54 Ưu điểm:
- CPU thực hiện vào ra dữ liệu ngay sau khi có yêu cầu từ TB bên ngoài do vậy quá trình vào dữ liệu có độ tin cậy cao.
- CPU chỉ phục vụ thiết bị vào ra khi có yêu cầu do vậy tăng hiệu quả làm việc của CPU.
Do những ưu điểm này mà phương pháp này được dùng để thực hiện vào/ra dữ liệu với phần lớn các thiết bị chuẩn của máy tính như: Bàn phím, máy in, thiết bị vào/ra nối tiếp, song song,…
Tuy nhiên đối với phương pháp này quá trình chuyển dữ liệu giữa bộ nhớ và thiết bị vào/ra vẫn phải qua CPU và quá trình vào/ra dữ liệu vẫn do CPU thực hiện nên đây chưa phải là phương pháp vào ra dữ liệu nhanh nhất.
3.2.5 Phương pháp vào/ra dữ liệu theo kiểu DMA (truy nhập trực tiếp bộ nhớ - Direct Memory Access) Memory Access)
Trong các cách điều khiển việc trao đổi dữ liệu giữa thiết bị ngoại vi và VXL bằng các cách thăm dò trạng thái sẵn sàng của thiết bị ngoại vi hay bằng cách ngắt bộ VXL như trên, dữ