- Đọc/Ghi ngày, tháng, năm
HỆ ĐIỀU HÀNH NHIỀU BỘ VI XỬ LÝ
6.2.1. Mỗi CPU cĩ riêng một hệ điều hành
Hình 6.5. Phân chia bộ nhớ cho các CPU trong hệ thống đa xử lý, nhƣng cùng chia sẻ chung tập lệnh của hệ điều hành. Dữ liệu cũng đƣợc lƣu trữ riêng cho từng CPU.
Cách đơn giản nhất để tổ chức một hệ điều hành hỗ trợ nhiều bộ xử lý là phân chia cố định bộ nhớ thành nhiều phần tƣơng ứng với số lƣợng CPU mà hệ thống hỗ trợ. Mỗi CPU đƣợc cấp một bộ nhớ riêng và sở hữu một bản sao riêng của hệ điều hành. Kết quả là, n CPU sau đĩ sẽ họat động
cho phép các CPU chia sẻ code của hệ điều hành trong khi dữ liệu thì đƣợc lƣu trữ riêng tại các
vùng nhớ đã dành riêng cho chúng.
Sơ đồ này vẫn tốt hơn trƣờng hợp hệ thống cĩ nhiều máy tính tách biệt bởi vì nĩ cho phép các CPU cĩ thể chia sẻ một tập các tài nguyên đĩa và các thiết bị nhập/xuất khác, đồng thời nĩ cũng cho phép bộ nhớ đƣợc chia sẻ một cách linh họat hơn. Thí dụ, nếu một ngày đẹp trời nào đĩ, một chƣơng trình cĩ kích thƣớc lớn bất thƣờng cần đƣợc thực thi, thì một trong các CPU vẫn cĩ thể đƣợc cung cấp một phần bộ nhớ đủ lớn để thực thi chƣơng trình đĩ. Ngịai ra, các tiến trình cịn cĩ thể truyền thơng với nhau một cách hiệu quả, chẳng hạn nhƣ một producer cĩ thể ghi dữ liệu vào bộ nhớ đồng thời một consumer lấy dữ liệu đĩ ra từ nơi mà producer ghi vào. Tuy nhiên, thiết kế này vẫn cho thấy một số nhƣợc điểm sau:
Thứ nhất, khi một tiến trình tạo một lời gọi hệ thống, thì lời gọi hệ thống này sẽ đƣợc thực thi trên chính CPU của tiến trình đĩ sử dụng các cấu trúc dữ liệu trong các bảng của cùng hệ điều hành dành CPU đĩ.
Thứ hai, vì mỗi hệ điều hành đều cĩ một tập các tiến trình đƣợc điều phối bởi chính nĩ. Cho nên, sẽ khơng cĩ việc chia sẻ tiến trình ở đây. Nếu một user làm việc với CPU 1 thì tất cả các tiến trình của user này chỉ chạy trên CPU 1. Kết quả là, CPU1 quá tải trong khi các CPU khác thì rảnh rỗi. Thứ ba, khơng cĩ việc chia sẻ trang nhớ ở đây. Chẳng hạn nhƣ, trong khi CPU 1 cĩ nhiều trang nhớ dƣ thừa, thì CPU 2 vẫn phải thực hiện phân trang liên tục. Khơng cĩ cách nào để CPU 2 cĩ thể mƣợn một vài trang nhớ từ CPU 1 bởi vì bộ nhớ đã đƣợc chia cố định.
Thứ tƣ và cũng là nhƣợc điểm lớn nhất. Nếu mỗi hệ điều hành của từng CPU lƣu giữ một vùng nhớ cache của các khối đĩa mới sử dụng gần đây, thì mỗi hệ điều hành sẽ thao tác trên khối dữ
liệu này một cách độc lập với các hệ điều hành khác. Vì vậy, cĩ thể sẽ xảy ra trƣờng hợp là các khối đĩa này trở thành một phần riêng và chỉ bị thay đổi bởi một CPU tƣơng ứng tại một thời điểm. Điều này dẫn đến những kết quả mâu thuẫn nhau. Chỉ cĩ một cách duy nhất để loại bỏ vấn đề này là loại bỏ các vùng nhớ cache. Điều này khơng cĩ gì khĩ, nhƣng vấn đề là nĩ sẽ làm giảm đáng kể hiệu suất làm việc của hệ thống.
Vì những lý do đĩ mà mơ hình này khơng cịn đƣợc sử dụng nữa. Một mơ hình thứ hai đƣợc đề cập trong phần tiếp theo là hệ điều hành hỗ trợ nhiều bộ xử lý hoạt động theo cơ chế Chủ-Tớ (Master-Slave).