Tải bản đầy đủ (.doc) (43 trang)

bài tập lớn môn Kiến trúc máy tính Đề tài The Mach System

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (390.08 KB, 43 trang )

Môn KTMT&NLHĐH The Mach System
TRƯỜNG ĐẠI HỌC SƯ PHẠM THÁI NGUYÊN
KHOA TOÁN


Đề tài:
The Mach System
Chào mừng cô và các bạn đến với bài tập
Chào mừng cô và các bạn đến với bài tập
của nhóm 1
của nhóm 1
Giáo viên hướng dẫn :Lương Thị Hồng Lan
Nhóm sinh viên thực hiện: Nhóm 1
• Lâm Thị Minh Nguyệt
• Vũ Hoài Thương
• Nguyễn Thị Hiến
• Chu Thị Giang
• Đặng Thị Hương
Thái Nguyên, tháng 4 năm 2012
ĐHSP Thái Nguyên- Lớp: SP Tin K45
1
Môn KTMT&NLHĐH The Mach System
A: CÁC VẤN ĐỀ TÌM HIỂU VÀ CÔNG VIỆC CỦA TỪNG
THÀNH VIÊN TRONG NHÓM
1. History:cả nhóm cùng thực hiện
2. Design principle: Lâm Thị Minh Nguyệt thực hiện
3. System components: Đặng Thị Hương thực hiện
4. Process management: Nguyễn Thị Hiến thực hiện
5. Interprocess communication: Vũ Hoài Thương thực hiện
6. Memory management: Chu Thị Giang thực hiện
7. Programmer Interface: Lâm Thị Minh Nguyệt thực hiện


8. Conclusion: cả nhóm cùng thực hiện


B: CHI TIẾT
B: CHI TIẾT
.
.
VẤN ĐỀ 1:
VẤN ĐỀ 1:
HISTORY ( LỊCH SỬ CỦA HỆ ĐIỀU HÀNH
HISTORY ( LỊCH SỬ CỦA HỆ ĐIỀU HÀNH
MACH)
MACH)
Tổ tiên của Mach là hệ điều hành Accent phát triển tại Đại học Carnegie Mellon
(CMU). Mặc dù Accent đi tiên phong trong một số khái niệm hệ điều hành mới, tiện ích
của nó bị hạn chế bởi không có khả năng thực hiện ứng dụng UNIX và các mối quan hệ
chặt chẽ của nó cho kiến trúc phần cứng, điều này đã gây khó khăn cho nó đến cổng. Hệ
thống thông tin liên lạc và triết học của Mach bắt nguồn từ Accent, nhưng một số quan
trọng khác của hệ thống (ví dụ như: hệ thống bộ nhớ ảo, nhiệm vụ và quản lý luồng)
được phát triển ngay từ đầu. Mục tiêu quan trọng của Mach là hỗ trợ bộ đa xử lý.

ĐHSP Thái Nguyên- Lớp: SP Tin K45
2
Môn KTMT&NLHĐH The Mach System
Sự phát triển của Mach đi theo con đường tiến hóa từ hệ thống UNIX BSD. Ban
đầu Mach được phát triển bên trong hạt nhân BSD 4.2, với thành phần hạt nhân BSD
được thay thế bằng thành phần Mach khi thành phần Mach hoàn tất. Thành phần BSD
được cập nhật đến BSD 4.3 khi trở thành sẵn có. Trước năm 1986, bộ nhớ ảo và truyền
thông đang chạy trên dòng máy tính DEC VAX, bao gồm bộ đa xử lý phiên bản của
VAX. Sau một thời gian ngắn, phiên bản đã dành cho IBM RT/PC và cho CN 3 máy

trạm. Năm 1987, chứng kiến sự hoàn thành của Multimax Encore và phiên bản bộ đa xử
lý Sequent Balance, bao gồm cả nhiệm vụ và hỗ trợ luồng, cũng như phiên bản đầu tiên
của hệ thống, Phiên bản 0 và Phiên bản 1.
Thông qua Phiên bản 2.0, Mach cung cấp khả năng tương thích với hệ thống BSD
tương ứng bao gồm nhiều mã trong hạt nhân của BSD. Những tính năng mới và khả năng
của hạt nhân Mach trong các phiên bản lớn hơn hạt nhân BSD tương ứng. Mach 3.0
(Hình 1.1) di chuyển mã BSD bên ngoài của hạt nhân, để lại một hạt nhân nhỏ hơn nhiều.
Hệ thống này thực hiện chỉ có tính năng cơ bản của Mach trong hạt nhân, tất cả các mã
cụ thể UNIX đã bị đổi để chạy máy chủ trong chế độ người dùng. Loại trừ mã số cụ thể
UNIX từ hạt nhân cho phép thay thế của BSD với một hệ điều hành khác, hoặc đồng thời
thực hiện nhiều giao diện của hệ thống điều hành bên trên hạt nhân. Ngoài BSD, chế độ
người dùng đã được thực hiện để phát triển cho hệ điều hành DOS, hệ điều hành
Macintosh và OSF/1. Cách tiếp cận này có điểm tương đồng với khái niệm máy ảo,
nhưng máy ảo được định nghĩa bằng phần mềm (giao diện hạt nhân Mach) chứ không
phải bởi phần cứng. Phiên bản 3.0, Mach trở thành có sẵn trên rất nhiều hệ thống, bao
gồm bộ đa xử lý SUN, Intel, IBM và bộ đa xử lý DEC, Sequent và hệ thống Encore.
Mach đã được đẩy vào vị trí hàng đầu sự chú ý của các ngành công nghiệp khi
Software Foundation (OSF) được mở rộng công bố vào năm 1989 rằng nó sẽ sử dụng
Mach 2.5 làm nền tảng cho hệ điều hành mới của nó, OSF/1. Phiên bản ban đầu của
OSF/1 xảy ra một năm sau đó, và bây giờ nó cạnh tranh với hệ thống UNIX V Phiên bản
ĐHSP Thái Nguyên- Lớp: SP Tin K45
3
Môn KTMT&NLHĐH The Mach System
4.0, hệ điều hành lựa chọn của các thành viên UNIX quốc tế (UI). Thành viên chính của
OSF bao gồm các công ty công nghệ như IBM, DEC, HP. Mach 2.5 cũng là cơ sở cho hệ
điều hành trên máy trạm NEXT, đứa con tinh thần của Steve Jobs, Apple Computer nổi
tiếng. OSF đánh giá Mach 3.0 là cơ sở cho một phiên bản hệ điều hành trong tương lai,và
nghiên cứu về Mach sẽ tiếp tục tại CMU, OSF và những nơi khác.
Hình 1.1: Cấu trúc Mach 3.0
VẤN ĐỀ 2: DESIGN PRINCIPLE ( ƯU ĐIỂM HỆ ĐIỀU HÀNH

MACH).
Hệ điều hành Mach được thiết kế cung cấp cơ chế cơ bản mà hầu hết các hệ điều
hành hiện nay còn thiếu. Mục đích là thiết kế một hệ điều hành tương thích với BSD, và
ngoài ra nổi trội hơn trong các lĩnh vực sau:
ĐHSP Thái Nguyên- Lớp: SP Tin K45
4
Nhiệm vụ IPC Bộ nhớ ảo Lập kế hoạch
và Luồng
Mach
BSD 4.3
OSF/1
HPUX
SO/2
Hệ thống
cơ sở dữ
liệu
Môn KTMT&NLHĐH The Mach System
• Hỗ trợ cho kiến trúc đa dạng, bao gồm cả bộ đa xử lý với mức độ truy cập bộ nhớ
chia sẻ khác nhau, bộ nhớ truy cập đồng bộ (UMA), truy cập bộ nhớ không đều
(NUMA), và không có bộ truy cập từ xa (Norma).
• Khả năng hoạt động với thay đổi tốc độ mạng máy tính khác nhau, từ mạng rộng
lớn đến mạng cục bộ tốc độ cao và chặt chẽ cùng bộ đa xử lý.
• Cấu trúc hạt nhân đơn giản, với một số lượng nhỏ các khái niêm trừu tượng (lần
lượt, những khái niệm này là cách tổng quát đầy đủ cho phép hệ điều hành khác
được thực hiện trên Mach).
• Phân phối hoạt động, cung cấp minh bạch cho khách hàng và tổ chức hướng đối
tượng cả trong lẫn ngoài.
• Bộ nhớ tích hợp quản lý, và truyền thông, cung cấp thông tin liên lạc hiệu quả với
số lượng lớn dữ liệu cũng như truyền thông dựa trên quản lý bộ nhớ.
• Hỗ trợ hệ thống không đồng nhất, để làm cho Mạch được phổ biến rộng rãi và

tương thích giữa các hệ thống máy tính từ nhiều nhà cung cấp.
Các nhà thiết kế Mach đã chịu nhiều ảnh hưởng lớn bởi BSD (UNIX nói chung),
những lợi ích bao gồm:
 Một giao diện lập trình đơn giản, với tập tốt các bản gốc và thống nhất tập hợp các
giao diện tiện ích của hệ thống.
 Dễ dàng di động cho một lớp rộng của bộ xử lý đơn.
 Một thư viện rộng lớn của các tiện ích và ứng dụng.
 Khả năng kết hợp các tiện ích một cách dễ dàng thông qua đường dẫn.
Tất nhiên, các nhà thiết kế cũng muốn khắc phục những hạn chế của BSD mà họ đã
thấy:
ĐHSP Thái Nguyên- Lớp: SP Tin K45
5
Môn KTMT&NLHĐH The Mach System
 Một hạt nhân đã trở thành kho chứa của nhiều tính năng dư thừa, vì vậy kết qủa là
khó khăn để quản lý và điều chỉnh.
 Các mục tiêu thiết kế ban đầu làm cho nó khó khăn để cung cấp hỗ trợ cho bộ đa
xử lý, phân phối hệ thống và chia sẻ thư viện chương trình (chẳng hạn như: vì hạt
nhân được thiết kế cho bộ đa xử lý đơn, nó không có quy định dành cho mã khóa
hoặc dữ liệu bộ vi xử lý khác có thể được sử dụng.)
 Khái niệm trừu tượng cơ bản quá nhiều, cung cấp tương tự quá nhiều, cạnh tranh
phương tiện thực hiện nhiệm vụ tương tự.
Sự phát triển của Mach là một công việc khổng lồ. Những lợi ích trong hệ thống
này có giá trị lớn như nhau. Tuy nhiên, hệ điều hành chạy trên nhiều bộ đa xử lý kiến
trúc, và nó có thể dễ dàng được chuyển đến những cái trong tương lai. Nó làm cho nghiên
cứu dễ dàng hơn, bởi vì các nhà khoa học máy tính có thể thêm các tính năng thông qua
cấp mã sử dụng, thay vì phải viết hệ điều hành thích hợp riêng của chúng. Vùng thử
nghiệm bao gồm hệ điều hành cơ sở dữ liệu, hệ thống phân phối đáng tin cậy, ngôn ngữ
bộ đa xử lý, bảo mật, và phân phối trí tuệ nhân tạo. Trong phiên bản hiện tại của nó, hệ
thống Mach thường là hiệu quả như các phiên bản khác trong UNIX khi thực hiện.
VẤN ĐỀ 3: SYSTEM COMPONENTS (THÀNH PHẦN HỆ

THỐNG MACH)
Để đạt được các mục tiêu thiết kế của Mach, các nhà phát triển làm giảm chức năng
hệ điều hành thành tập hợp nhỏ các khái niệm các khái niệm trừu tượng cơ bản, trong số
tất cả các chức năng khác có thể được bắt nguồn. Cách tiếp cận Mach là đặt càng ít càng
tốt trong hạt nhân, nhưng để làm những gì là đủ mạnh để tất cả các tính năng này có thể
được thực hiện ở cấp độ người dùng.
ĐHSP Thái Nguyên- Lớp: SP Tin K45
6
Môn KTMT&NLHĐH The Mach System
Triết lý thiết kế của Mach là phải có một hạt nhân đơn giản, dễ mở rộng, tập trung
vào các cơ sở truyền thông. Ví dụ như, tất cả các yêu cầu đến hạt nhân, và tất cả sự
chuyển đổi dự liệu giữa các quá trình xử lý là thông qua cơ chế giao tiếp. Do đó Mach có
thể cung cấp, bảo vệ toàn bộ hệ thống người sủ dụng bằng cách bảo vệ cơ chế thông tin
liên lạc. Tối ưu hóa đường dẫn truyền thong này có thể dẫn đến tăng hiệu suất đáng kể,
và đơn giản hơn là cố gắng để tối ưu hóa một số đường dẫn. Mach dễ mở rộng, bởi vì
chức năng truyền thống dựa trên hạt nhân có thể được thực hiện như các máy chủ cấp
người dùng. Ví dụ như, tất cả máy nhắn tin (bao gồm cả máy nhắn tin mặc định) có thể
được thực hiện bên ngoài và được gọi là hạt nhân cho người sủ dụng.
Mach là một ví dụ về hệ thống hướng đối tượng và hoạt động các thao tác dữ liệu đó
được đóng gói vào một bản tóm tắt đối tượng. Chỉ có các hoạt động của các đối tượng có
thể ảnh hưởng đến các thực thể được xác định trong nó. Các chi tiết của các hoạt động
này được thực hiện ẩn, như là cấu trúc dữ liệu nội bộ. Do đó, lập trình viên có thể sử
dụng một đối tượng duy nhất bằng cách gọi định nghĩa của nó, xuất ra thao tác. Một lập
trình viên có thể thay đổi thao tác bên trong mà không thay đổi định nghĩa giao diện, do
đó, thay đổi và tối ưu hóa không ảnh hưởng đến các khía cạnh khác của hoạt động hệ
điều hành. Các phương pháp tiếp cận hướng đối tượng được hỗ trợ bởi Mach cho phép
đối tượng cư trú bất cứ nơi nào trong mạng lưới hệ thống Mach, minh bạch cho người
dùng.
Khái niệm trừu tượng của Mach là trung tâm của hệ thống bao gồm:
• Nhiệm vụ(tác vụ) là môi trường thực hiện cung cấp các đơn vị cơ bản của phân phối

tài nguyên. Nó bao gồm khoảng không gian địa chỉ ảo và truy cập được bảo vệ tài
nguyên hệ thống thông qua cổng, và nó có thể chứa một hoặc nhiều luồng.
ĐHSP Thái Nguyên- Lớp: SP Tin K45
7
Môn KTMT&NLHĐH The Mach System
• Luồng là đơn vị cơ bản thực hiện và phải chạy trong hoàn cảnh của một tác vụ (mà
cung cấp không gian địa chỉ). Tất cả các luồng trong vòng một phần nhiệm vụ của
nhiệm vụ tài nguyên (cổng, bộ nhớ,…). Không có khái niệm về một “Quá trình” trong
Mach. Thay vào đó, một quá trình truyền thống sẽ được thực hiện như một nhiệm vụ
với một luồng điều khiển.
• Cổng là đối tượng tham chiếu cơ bản trong cơ chế Mach và được thực hiện như một
kênh truyền thông bảo vệ hạt nhân. Giao tiếp được thực hiện bằng cách gửi tin nhắn
đến các cổng, các tin nhắn được xếp hàng đợi tại cổng đích nếu không có luồng là
ngay lập tức sẵn sàng để nhận được chúng. Cổng được bảo vệ bởi khả năng quản lý
của hạt nhân, hoặc quyền cổng, một nhiệm vụ phải có quyền cổng để gửi một thông
điệp (tin nhắn) đến cổng. Lập trình viên gọi một hoạt động trên một đối tượng bằng
cách gửi thông điệp tới cổng liên kết với đối tượng. Các đối tượng được đại diện bởi
một cổng nhận được các tin nhắn.
• Thiết lập Cổng là một nhóm các cổng chia sẻ hàng đợi tin nhắn thông thường. Luồng
có thể nhận tin nhắn cho một xác lập cổng và do đó nó có phục vụ nhiều cổng. Mỗi tin
nhắn nhận được xác định các cổng cá nhân (trong xác lập) mà từ đó nó nhận được,
người nhận có thể dùng để xác định đối tượng gọi tin nhắn.
• Thông báo (tin nhắn) là phương pháp cơ bản của thông tin liên lạc giữa các luồng
trong Mach. Nó là một bộ sưu tập đánh máy của các đối tượng dữ liệu cho từng đối
tượng, nó có thể chứa dữ liệu thực tế hoặc một con trỏ để ra-vào dòng dữ liệu. Quyền
cổng được chuyển trong thông báo, đi qua cổng trong thông báo là cách duy nhất để di
chuyển chúng giữa các nhiệm vụ (đi qua quyền cổng trong bộ nhớ chung thì không
làm việc, bởi vì hạt nhân Mach sẽ không cho phép các nhiệm vụ mới sử dụng quyền
đạt được theo cách này).
• Bộ nhớ đối tượng là nguồn gốc của bộ nhớ, nhiệm vụ có thể truy cập nó bằng cách

lập bản đồ một phần của đối tượng (hoặc toàn bộ đối tượng) vào không gian địa chỉ
ĐHSP Thái Nguyên- Lớp: SP Tin K45
8
Môn KTMT&NLHĐH The Mach System
của chúng. Các đối tượng có thể được quản lý bởi một người quản lý chế độ người
sử dụng bộ nhớ bên ngoài. Ví dụ là một tập tin được quản lý bởi một tập tin máy chủ,
tuy nhiên, bộ nhớ đối tượng có thể là một đối tượng bất kì truy cập đến bộ nhớ-ánh
xạ có ý nghĩa. Một bộ đệm ánh xạ thực hiện một đường dẫn UNIX là một ví dụ. Hình
1.2 minh họa các khái niệm trừu tượng này.
Một tính năng khác của Mach, và là chìa khóa để hệ thống hiệu quả, là sự phối hợp
các bộ nhớ và các tính năng truyền thông liên quá trình (IPC). Trong khi đó, một số
hệ thống phân phối khác (ví dụ như Solaris, với các tính năng NFS) có mục đích
riêng là mở rộng hệ thống tập tin trên một mạng Mach, có mục đích chung là cung
cấp, sáp nhập mở rộng bộ nhớ và thông báo tại trung tâm hạt nhân của nó. Tính năng
này không chỉ cho phép Mach sử dụng cho phân phối và lập trình song song mà còn
giúp trong thực hiện là hạt nhân của chính bản thân nó.
Mach kết nối quản lý bộ nhớ và truyền thông IPC bằng cách cho phép mỗi người
được sử dụng trong việc thực hiện của người khác. Quản lý bộ nhớ dựa trên việc sử
dụng các bộ nhớ đối tượng. Mỗi bộ nhớ đối tượng được đại diện bởi một cổng (hoặc
nhiều cổng) và IPC tin nhắn được gửi đến cổng này để yêu cầu hoạt động (ví dụ:
pagein, pageout) trên đối tượng. Bởi vì IPC được sử dụng, bộ nhớ đối tượng có thể
lưu trên hệ thống từ xa và được truy cập rõ ràng. Hạt nhân lưu trữ các nội dung của
bộ nhớ đối tượng trong bộ nhớ cục bộ (địa phương).Ngược lại, kĩ thuật quản lý bộ
nhớ được sử dụng trong việc thực hiện đi qua tin nhắn. Nếu có thể, Mach chuyển tin
nhắn bằng cách di chuyển con trỏ vào bộ nhớ đối tượng chung, chứ không phải bằng
cách sao chép các đối tượng tương tự.
ĐHSP Thái Nguyên- Lớp: SP Tin K45
9
Môn KTMT&NLHĐH The Mach System
Hình 1.2: Các khái niệm trừu tượng cơ bản của Mach

IPC có xu hướng liên quan đến chi phí hệ thống lớn, trong hệ thống nội bộ tin nhắn.
Bởi vì Mach là hạt nhân dựa trên tin nhắn, xử lý tin nhắn phải được thực hiện có hiệu
quả. Hầu hết việc xử lý tin nhắn trong hệ điều hành truyền thống kem hiệu quả là do hoặc
sao chép các tin nhắn từ một nhiệm vụ này đến nhiệm vụ khác (cho tin nhắn mạng nội
bộ) hoặc mạng tốc độ truyền thấp. Để giải quyết những vấn đề này, Mach sử dụng bộ nhớ
ảo để chuyển các nội dung của tin nhắn lớn. Nói cách khác, việc chuyển giao thông báo
thay đổi nhiệm vụ của không gian địa chỉ bao gồm một bản sao của nội dung tin nhắn.
Bản sao ảo, kĩ thuật được dùng để tránh hoặc trì hoãn việc sao chép thực tế của dữ liệu.
Biện pháp này có một số ưu điểm sau:
ĐHSP Thái Nguyên- Lớp: SP Tin K45
10
Môn KTMT&NLHĐH The Mach System
• Tăng cường sự linh hoạt trong quản lý bộ nhớ cho các chương trình người sử
dụng.
• Cho phép các phương pháp tiếp cận sao chép ảo được sử dụng chặt chẽ và lỏng
trong máy tính.
• Cải thiện hiệu suất qua thông báo UNIX.
• Dễ dàng chuyển nhiệm vụ hơn; bởi vì cổng là vị trí độc lập, một công việc và
tất cả các cổng của nó có thể được di chuyển từ máy này sang máy khác, tất cả
nhiệm vụ mà trước đây giao tiếp với nhiệm vụ dời có thể tiếp tục làm như vậy
vì chúng tham khảo một nhiệm vụ bởi cổng cảu nó và giao tiếp thông qua tin
nhắn đến các cổng này.
VẤN ĐỀ 4: PROCESS MANAGEMENT (QUÁ TRÌNH QUẢN
LÝ CỦA HỆ THỐNG)
Một nhiệm vụ có thể được xem là quy trình truyền thống không có con trỏ lệnh hoặc
bộ thanh ghi. Nhiệm vụ chứa dấu cách địa chỉ ảo, tập hợp các quyền cổng, và thông tin
kế toán. Một nhiệm vụ là thực thể thụ động (chẳng làm gì) trừ phi nó có một hoặc nhiều
luồng thực hiện nó.
I. CẤU TRÚC CƠ BẢN
- Một nhiệm vụ có chứa một luồng tương tự như một quá trình UNIX. Cũng như

cuộc gọi hệ thống rẽ nhánh tạo ra quy trình UNIX mới, Mach tạo ra nhiệm vụ mới để mô
phỏng hành vi này. Bộ nhớ của nhiệm vụ mới là lặp lại khoảng không gian địa chỉ của
máy chủ, khi đọc bằng thuộc tính kế thừa của bộ nhớ máy chủ. Nhiệm vụ mới chứa một
luồng, được bắt đầu ở cùng một điểm khi gọi rẽ nhánh tạo ra trong máy chủ. Luồng và
nhiệm vụ cũng có thể được tạm hoãn và làm tiếp.
ĐHSP Thái Nguyên- Lớp: SP Tin K45
11
Môn KTMT&NLHĐH The Mach System
- Luồng đặc biệt hữu ích trong ứng dụng máy chủ, phổ biến nhiều ở UNIX, vì một
nhiệm vụ có thể có nhiều luồng để phục vụ nhiều yêu cầu. Luồng cũng cho phép sử dụng
hiệu quả tài nguyên điện toán song song.
- Thay vì có một quy trình trên mỗi bộ vi xử lý, với hình thức hiệu năng tương ứng
và trên đầu hệ điều hành, nhiệm vụ có thể cho luồng của nó phát tán giữa bộ xử lý song
song. Luồng thêm hiệu suất cho người dùng cấp chương trình là rất tốt. Chẳng hạn như,
trong UNIX, toàn bộ quy trình phải chờ khi lỗi trang xảy ra hoặc khi cuộc gọi hệ thống
được thực hiện. Trong một nhiệm vụ với nhiều luồng, luồng chỉ gây ra lỗi trang hoặc
cuộc gọi hệ thống bị trì hoãn; tất cả các luồng khác vẫn tiếp tục được thực hiện. Vì Mach
có hạt nhân hỗ trợ luồng và luồng có vài chi phí liên quan đến chúng. Chúng đã hỗ trợ
cấu trúc dữ liệu trong phần lõi, và phức tạp hơn phần lõi - lịch trình các thuật toán phải
được cung cấp. Ở cấp độ người dùng, luồng có thể thuộc một trong hai trạng thái:
• Hoạt động : luồng bao gồm cả việc thực hiện lẫn chờ để được phân bố bộ xử lý.
Luồng được xem là hoạt động mặc dù là nó bị chặn trong phần lõi ( ví dụ: chờ lỗi
trang).
• Trì hoãn : luồng không thực hiện trên bộ xử lý cũng không chờ để được phân bổ
bộ xử lý. Luồng có thể khôi phục chỉ khi nó được gửi về trạng thái hoạt động.
Hai trạng thái này đều được liên kết với một nhiệm vụ. Một hoạt động trong một
nhiệm vụ ảnh hưởng đến tất cả luồng trong nhiệm vụ, do đó trì hoãn nhiệm vụ liên
quan đến việc tạm hoãn tất cả các luồng trong đó. Tạm hoãn nhiệm vụ và luồng nhíp
là riêng biệt, cơ chế độc lập, tuy nhiên, để khôi phục một luồng trong nhiệm vụ tạm
hoãn không làm tiếp nhiệm vụ, Mach cung cấp sơ khai mà từ đó luồng - công cụ đồng

bộ hóa có thể được xây dựng. Cách thực hiện này phù hợp với triết lý của Mach về
cung cấp chức năng tối thiểu trong phần lõi. Các cơ sở Mach IPC có thể được dùng để
đồng bộ hoá, với quy trình trao đổi thông điệp tại mọi điểm (cuộc hẹn).
ĐHSP Thái Nguyên- Lớp: SP Tin K45
12
Môn KTMT&NLHĐH The Mach System
Luồng - sự đồng bộ hoá được cung cấp bởi các cuộc gọi để bắt đầu và ngăn chặn
luồng ở những thời điểm thích hợp. Một số trì hoãn được lưu giữ đối với mỗi luồng. Số
lượng này cho phép tạm hoãn nhiều cuộc gọi được thực hiện trên luồng, và chỉ khi số
lượng tương đương giữa các cuộc gọi bằng nhau xảy ra thì luồng thực hiện tiếp. Thật
đáng tiếc, tính năng này có hạn chế riêng. Vì nó là lỗi cho một cuộc gọi bắt đầu sẽ được
thực hiện trước khi chấm dứt cuộc gọi (số đếm tạm hoãn sẽ trở thành tiêu cực), những
thói quen này không thể được dùng để đồng bộ hóa truy cập dữ liệu chia sẻ.
1. Luồng Gói
Mach cung cấp các thói quen ở mức độ thấp nhưng linh hoạt hơn thay vì đánh bóng,
số lượng lớn, và chức năng hạn chế hơn . Thay vì lập trình viên làm việc ở mức độ thấp
này, Mach cung cấp nhiều giao diện ở mức cao hơn cho lập trình C và các ngôn ngữ
khác. Chẳng hạn như, luồng gói C cung cấp đa luồng điều khiển, các biến chia sẻ, loại trừ
lẫn nhau cho phần quan trọng, và biến điều kiện cho đồng bộ hoá. Trong thực tế, luồng C
là một trong những ảnh hưởng lớn trên chuẩn POSIX luồng P nhiều hệ điều hành đang
được sửa đổi để hỗ trợ. Kết quả là có nhiều điểm giống nhau lớn giữa luồng C và luồng P
trong giao diện lập trình. Luồng - thường điều khiển bao gồm gọi để thực hiện nhiệm vụ
này :
• Tạo ra luồng mới trong nhiệm vụ, cho chức năng để thực hiện và tham biến đầu
vào. Luồng sau đó thực hiện đồng thời với việc tạo ra luồng, mà nhận được một
định dạng cột khi trở về cuộc gọi.
• Phá hủy các luồng gọi, và trả về một giá trị cho các luồng tạo ra.
• Chờ cho một luồng cụ thể chấm dứt trước khi cho phép luồng gọi tiếp tục. Cuộc
gọi là công cụ đồng bộ hóa, giống như chờ đợi hệ thống UNIX các cuộc gọi.
• Năng suất sử dụng bộ xử lý, báo hiệu người lập chương trình có thể chạy luồng

khác vào lúc này. Cuộc gọi này cũng hữu ích với sự có mặt của người lập chương
ĐHSP Thái Nguyên- Lớp: SP Tin K45
13
Môn KTMT&NLHĐH The Mach System
trình ưu tiên, khi nó có thể được dùng để chuyển nhượng CPU tự nguyện trước khi
lượng tử thời gian (hoặc khoảng cách lịch biểu) hết hạn nếu luồng không cần CPU.
Loại trừ lẫn nhau đạt được khi qua sử dụng spinlocks. Các thói quen liên quan đến
loại trừ lẫn nhau này là :
 Mutex_ alloc thường xuyên tự động tạo ra biến mutex.
 Mutex _free thường xuyên miễn phí deallocates mutex tạo ra động biến.
 Mutex_lock thường xuyên khóa biến mutex. Vòng lặp luồng thực hiện trong
spinlock cho đến khi đạt được khóa. Kết quả thất bại nếu luồng với khóa mutex
cùng biến. Giới hạn chờ không được đảm bảo bằng luồng gói C. Đúng hơn là nó
phụ thuộc vào lệnh phần cứng được dùng để thực hiện các thói quen mutex.
 Mutex_unlock thường trình mở khoá biến mutex, giống thao tác tín hiệu điển hình
của cột đèn tín hiệu.
Đồng bộ hoá tổng quát không cần phải chờ đợi cũng có thể đạt được qua sử dụng
biến điều kiện, có thể được dùng để triển khai điều kiện trong vùng quan trọng (hoặc thiết
bị hiển thị). Điều kiện biến được kết hợp với biến mutex và phản ánh trạng thái Boolean
của biến đó.
Các thói quen liên quan đến đồng bộ hoá tổng quát này là :
• Condition_alloc điều kiện thường xuyên tự động phân bố một biến điều kiện.
• Condition_free thường xuyên xóa một điều kiện tự động tạo ra một biến được
phân bổ theo kết quả của alloc điều kiện.
• Condition_wait điều kiện thường xuyên mở khoá biến mutex kết hợp và ngăn
chặn luồng cho đến tín hiệu điều kiện được thực hiện trên điều kiện biến, chỉ ra
rằng sự kiện đang chờ có thể đã xảy ra. Mutex biến sau đó được khóa, và luồng
tiếp tục. Tín hiệu điều kiện không bảo đảm rằng điều kiện vẫn lưu giữ khi luồng bỏ
ĐHSP Thái Nguyên- Lớp: SP Tin K45
14

Môn KTMT&NLHĐH The Mach System
chặn cuối cùng gửi trả từ điều kiện của nó chờ đợi gọi, cho nên luồng đánh thức
vòng lặp, thực hiện các thói quen chờ đợi điều kiện cho đến khi nó được bỏ chặn
và điều kiện được nắm giữ.
Như một ví dụ về các luồng C, xem xét giới hạn - vùng đệm đồng bộ hoá vấn đề.
Nhà sản xuất và người tiêu dùng đại diện luồng truy cập chung giới hạn - vùng lưu trữ
tạm thời. Chúng ta sử dụng mutex biến để bảo vệ vùng đệm khi nó được cập nhật. Một
khi chúng tôi có quyền truy cập vào vùng đệm, chúng tôi sử dụng biến điều kiện để ngăn
chặn việc sản xuất luồng nếu vùng đệm đầy và để ngăn chặn luồng của người tiêu dùng
nếu vùng đệm trống rỗng. Mặc dù chương trình này thường được viết trong ngôn ngữ C
trên Mach hệ thống, chúng tôi sẽ sử dụng cú pháp Pascal-like quen thuộc của chương
trước đây cho độ rõ nét. Như trong Chương 6, chúng tôi giả định rằng vùng đệm bao gồm
n khe, mỗi cái có khả năng giữ một mục. Các cột tín hiệu mutex cung cấp loại trừ lẫn
nhau cho truy cập vào vùng lưu trữ tạm thời và khởi tạo đến giá trị 1. Cột tín hiệu đầy đủ
và đếm số lượng bộ đếm trống và đầy đủ của vùng đệm tương ứng. Cột tín hiệu rỗng là
khởi tạo đến n giá trị ; cột tín hiệu đầy đủ là khởi tạo đến giá trị 0. Biến điều kiện là
không rỗng khi vùng đệm có mục trong nó, và không đầy đủ nếu vùng đệm có khe cắm
rỗng.
Bước đầu tiên bao gồm việc phân bổ mutex và điều kiện biến :
mutex_alloc ( mutex ) ; codition_alloc ( không rỗng, nonfull );
Mã cho luồng sản xuất là được chỉ ra ở hình 1.3 ; mã cho luồng người tiêu dùng và
được chỉ ra ở hình 1.4. Khi chương trình kết thúc, mutex và biến điều kiện cần được huỷ
phân bổ :
mutex_free ( mutex ) ; condition_free ( nonempty, nonfull );
ĐHSP Thái Nguyên- Lớp: SP Tin K45
15
Môn KTMT&NLHĐH The Mach System
Người lập chương trình CPU
Người lập chương trình CPU cho luồng - dựa vào bộ đa xử lý hệ điều hành phức tạp
hơn là quy trình của nó - dựa vào họ hàng. Có luồng nói chung:

Do{
/ / tạo ra khoản mục vào nextp

khóa mutex ( mutex );
while ( đầy đủ )
chờ điều kiện ( nonfull, mutex );

/ / thêm nextp vào vùng đệm

tín hiệu điều kiện ( không rỗng );
mutex mở khoá ( mutex );
}while ( TRUE);
Hình 1.3: Cấu trúc quy trình của nhà sản xuất
trong hệ thống multithreaded hơn có quy trình trong hệ thống đa tác vụ. Theo dõi nhiều
bộ xử lý cũng khó khăn và là tương đối mới với phạm vi nghiên cứu. Mach sử dụng
chính sách đơn giản để người lập chương trình dễ quản lý. Chỉ luồng được xếp lịch, nên
không có kiến thức về nhiệm vụ được cần đến trong người lập chương trình. Tất cả luồng
cạnh tranh chia đều cho tài nguyên, bao gồm cả phần thời gian. Mỗi luồng có ưu tiên kết
ĐHSP Thái Nguyên- Lớp: SP Tin K45
16
Môn KTMT&NLHĐH The Mach System
hợp miền số từ 0 đến 127, được dựa trên mức trung bình theo cấp số mũ của nó sử dụng
CPU. Vậy là, luồng mới sử dụng CPU cho một số lượng lớn thời gian có mức ưu tiên
thấp nhất. Mach dùng ưu tiên để đặt luồng trong 32 hàng đợi hoạt động toàn cầu. Những
hàng đợi này được tìm kiếm theo thứ tự ưu tiên cho luồng chờ đợi khi bộ xử lý rỗng.
Mach cũng tiếp tục cho mỗi bộ xử lý, hoặc cục bộ, hàng đợi hoạt động. Hàng đợi cục bộ
hoạt động được dùng để luồng ràng buộc với bộ xử lý cá nhân. Chẳng hạn như, trình điều
khiển thiết bị cho một thiết bị kết nối với CPU cá nhân, phải hoạt động trên địa chỉ CPU.
Thay vì bộ điều phối trung tâm gán luồng đến bộ xử lý, mỗi bộ xử lý thảo luận cục
bộ và toàn cầu hàng đợi hoạt động chọn luồng thích hợp để chạy. Luồng trong hàng đợi

chạy cục bộ có ưu tiên tuyệt đối trên những hàng đợi toàn cầu, vì nó được cho rằng chúng
đang thực hiện một số việc thường ngày cho phần lõi. Hàng đợi chạy - như hầu hết mọi
đối tượng khác trong Mach - bị khoá khi chúng được sửa đổi để tránh thay đổi đồng thời
bởi nhiều bộ vi xử lý. Khó khăn lập kế hoạch bổ sung phát sinh từ bộ đa xử lý bản chất
của Mach.
do {
khóa mutex ( mutex );
while ( rỗng )
chờ điều kiện ( nonempty, mutex );

/ / đưa khoản mục ra khỏi vùng đệm đến nextc

tín hiệu điều kiện ( nonfull );
mutex mở khoá ( mutex );
ĐHSP Thái Nguyên- Lớp: SP Tin K45
17
Môn KTMT&NLHĐH The Mach System

/ / tiêu thụ khoản mục trong nextc

} while ( TRUE);
Hình 1.4 Cấu trúc của quy trình người tiêu dùng.
Lượng tử thời gian cố định không phải là thích hợp vì, chẳng hạn như, có thể có ít luồng
runnable hơn là có bộ xử lý sẵn có. Sẽ hay lãng phí khi ngắt luồng với ngữ cảnh chuyển
sang phần lõi khi lượng tử của luồng cạn kiệt, chỉ để có luồng được đặt vào đúng quay lại
trạng thái chạy. Do đó, thay vì sử dụng lượng tử có chiều dài cố định, Mach thay đổi kích
thước của lượng tử thời gian ngược lại với tổng số luồng trong hệ thống. Nó giữ lượng tử
thời gian trên toàn bộ hằng số hệ thống, tuy nhiên. Chẳng hạn như, trong hệ thống với 10
bộ xử lý, 11 luồng, và 100 phần nghìn giây lượng tử, công - tắc ngữ cảnh cần xảy ra trên
mỗi bộ xử lý một lần mà thôi mỗi giây để duy trì lượng tử mong đợi. Tất nhiên, sự phức

tạp vẫn tồn tại. Thậm chí chuyển nhượng CPU trong khi chờ nguồn lực khó còn hơn cả
nó trên hệ điều hành truyền thống. Trước tiên, luồng phải cấp phát gọi để cảnh báo người
lập chương trình luồng sắp sửa ngăn chặn. Cảnh báo này tránh tình trạng tranh đua và sự
bế tắc, có thể xảy ra khi thực hiện xảy ra trong môi trường bộ đa xử lý. Một giây gọi thực
sự đã làm cho luồng được đi hàng đợi chạy cho đến sự kiện thích hợp xảy ra. Người lập
chương trình dùng nhiều trạng thái luồng bên trong khác để điều khiển thi hành luồng.
2. Xử lý ngoại lệ
Mach được thiết kế để cung cấp một cách duy nhất, đơn giản, ngoại lệ nhất quán -
xử lý hệ thống, với sự hỗ trợ cho các tiêu chuẩn ngoại lệ do người dùng định nghĩa. Để
tránh dư thừa trong phần lõi, Mach sử dụng hạt nhân nguyên thuỷ bất cứ khi nào có thể.
ĐHSP Thái Nguyên- Lớp: SP Tin K45
18
Môn KTMT&NLHĐH The Mach System
Chẳng hạn như, một xử lý ngoại lệ chỉ là luồng mà trong trong đó các trường hợp ngoại
lệ xảy ra. Cuộc gọi thủ tục từ xa (RPC) được thông báo sử dụng để đồng bộ hoá thực hiện
các luồng gây ra trường hợp ngoại lệ. Và xử lý để giao tiếp thông tin về các trường hợp
ngoại lệ giữa đối tượng và người điều khiển. Trường hợp ngoại lệ cũng được sử dụng để
mô phỏng gói tín hiệu BSD.
Sự gián đoạn để thực hiện chương trình bình thường có hai loại: trường hợp ngoại lệ
bên trong được tạo ra và ngắt ngoài. Ngắt không đồng bộ được tạo ra sự gián đoạn của
luồng hoặc tác vụ, trong khi đó các trường hợp ngoại lệ gây ra do sự xuất hiện của điều
kiện bất thường trong quá trình thực hiện luồng. Thiết bị ngoại lệ generalpurpose của
Mach được dùng để phát hiện ra lỗi và hỗ trợ trình gỡ rối.
Thiết bị này cũng hữu ích cho các chức năng khác, như là lấy vùng lõi của tác vụ
hỏng, cho phép tác vụ xử lý lỗi riêng của chúng (phần lớn số học), và mô phỏng lệnh
không triển khai trong phần cứng.
Mach hỗ trợ hai hạt nhân khác nhau của xử lý ngoại lệ. Xử lý lỗi được hỗ trợ bởi
luồng xử lý ngoại lệ, trong khi trình gỡ lỗi sử dụng cho mỗi xử lý tác vụ. Nó khắc phục
lỗi của luồng hoặc để có ngoại lệ từ nhiều luồng gọi gỡ lỗi nhiều. Ngoài phân biệt này, sự
khác biệt duy nhất giữa hai loại ngoại lệ nằm trong sự kế thừa từ tác vụ máy chủ. Tác vụ

ngoại lệ xử lý các tiện ích được chuyển từ máy chủ đến tác vụ của các máy con, cho nên
trình gỡ lỗi có khả năng thao tác toàn bộ cây của tác vụ. Xử lý lỗi không được kế thừa và
mặc định không xử lý tại luồng và thời gian tạo ra các tác vụ. Cuối cùng, xử lý lỗi được
ưu tiên hơn trình gỡ lỗi nếu ngoại lệ xảy ra cùng một lúc. Lý do cho biện pháp này là xử
lý lỗi thường là bộ phận của tác vụ và do đó phải thực hiện bình thường ngay cả với sự có
mặt của trình gỡ lỗi.
Xử lý ngoại lệ thu được như sau :
ĐHSP Thái Nguyên- Lớp: SP Tin K45
19
Môn KTMT&NLHĐH The Mach System
• Luồng đối tượng gây ra thông báo về sự xuất hiện của một ngoại lệ thông qua
thông báo RPC được gửi để xử lí.
• Đối tượng sau đó gọi thường trình để đợi cho đến khi ngoại lệ xử lý.
• Xử lý được thông báo về ngoại lệ, thường bao gồm thông tin về ngoại lệ, luồng, và
tác vụ gây ra ngoại lệ.
• Xử lý thực hiện chức năng theo kiểu của ngoại lệ. Xử lý hành động liên quan tới
việc xoá các trường hợp ngoại lệ, đã làm cho đối tượng tiếp tục, hoặc chấm dứt
luồng đối tượng.
Để hỗ trợ thi hành của chương trình BSD, Mach cần hỗ trợ tín hiệu BSDstyle. Tín hiệu
cung cấp phần mềm tạo ngắt và các trường hợp ngoại lệ. Thật đáng tiếc, tín hiệu có chức
năng hạn chế trong multithreaded hệ điều hành. Vấn đề đầu tiên là, trong UNIX, xử lý tín
hiệu phải là thường trình trong quá trình nhận tín hiệu. Nếu tín hiệu được gây ra bởi một
vấn đề trong quá trình của nó (ví dụ như, chia cho 0), vấn đề không thể được khắc phục,
vì quy trình đã giới hạn truy cập vào ngữ cảnh riêng của nó. Thứ hai là những rắc rối của
tín hiệu được dành riêng cho chương trình singlethreaded. Ví dụ như, nó làm cho các
luồng vô nghĩa trong nhiệm vụ để nhận được tín hiệu, nhưng làm thế nào một tín hiệu có
thể được nhìn thấy chỉ bằng một luồng?
Vì hệ thống tín hiệu phải làm việc chính xác với ứng dụng đa luồng cho Mach để
chạy chương trình BSD 4.3, tín hiệu không thể bị huỷ bỏ. Tạo ra gói tín hiệu chính xác
theo chức năng ghi lại vài lần mã. Tuy nhiên, vấn đề cuối cùng với tín hiệu UNIX là

chúng có thể bị mất. Mất mát này xảy ra khi tín hiệu khác cùng kiểu xảy ra trước khi xử
lý. Trường hợp ngoại lệ của Mach được xếp hàng đợi như là một kết quả do RPC thực
hiện.
Tín hiệu phát sinh bên ngoài, bao gồm người gửi từ một quy trình BSD này sang
ĐHSP Thái Nguyên- Lớp: SP Tin K45
20
Môn KTMT&NLHĐH The Mach System
một quy trình BSD khác, được xử lí bằng phần máy chủ BSD của phần lõi Mach 2.5. Do
đó hành động của chúng giống như là thuộc BSD. Trường hợp ngoại lệ phần cứng là vấn
đề khác nhau, vì chương trình BSD sẽ nhận được trường hợp ngoại lệ phần cứng như một
tín hiệu. Do đó, ngoại lệ phần cứng gây ra bởi luồng phải đến các luồng như một tín hiệu.
Vì vậy kết quả này được tạo ra, ngoại lệ phần cứng được chuyển thành RPCs ngoại lệ.
Đối với nhiệm vụ và luồng không cho phép sử dụng các thiết bị ngoại lệ xử lý Mach,
điểm đến này mặc định RPC – tác vụ trong phần lõi. Nhiệm vụ này chỉ có một mục đích :
luồng của nó sẽ chạy trong một vòng lặp liên tục, nhận được các RPCs ngoại lệ. Đối với
mỗi RPC, nó biến ngoại lệ thành các tín hiệu thích hợp, mà được gửi đến luồng gây ra
ngoại lệ phần cứng. Sau đó, nó hoàn chỉnh RPC, giải phóng điều kiện ngoại lệ ban đầu.
Với việc hoàn thành RPC, luồng khởi xướng nhập lại trạng thái hoạt động. Ngay lập tức
nó xem tín hiệu và thực hiện mã xử lý tín hiệu của nó. Theo cách này, tất cả các ngoại lệ
phần cứng bắt đầu ở cách giống như trường hợp ngoại lệ đồng nhất RPCs. Luồng không
được thiết kế để xử lý ngoại lệ như vậy, tuy nhiên, nhận được trường hợp ngoại lệ như
chúng sẽ trên một hệ thống BSD chuẩn tín hiệu. Mach 3.0, tín hiệu xử lý mã là di chuyển
toàn bộ vào máy chủ, nhưng tổng thể cấu trúc và luồng của điều khiển tương tự Mach
2.5.
VẤN ĐỀ 5: INTERPROCESS COMMUNICATION (LIÊN
TIẾN TRÌNH GIAO TIẾP BÊN TRONG HỆ THỐNG)
Hầu hết các hệ điều hành thương mại, như là UNIX, cung cấp giao tiếp giữa quy
trình và giữa máy chủ cố định, tên toàn cầu ( hoặc địa chỉ Internet ). Không có độc
ĐHSP Thái Nguyên- Lớp: SP Tin K45
21

Môn KTMT&NLHĐH The Mach System
lập vị trí của các tiện ích, vì bất cứ hệ thống từ xa nào cần sử dụng phương tiện
cũng phải biết tên của hệ thống. Thông thường, dữ liệu trong thông báo là không
định kiểu luồng byte. Mach đơn giản hóa hình ảnh này bằng việc gửi thông báo
giữa các vị trí độc lập cổng. Thông báo chứa dữ liệu để cho dễ dàng thông dịch.
Tất cả các phương tiện truyền thông BSD có thể triển khai với hệ thống đơn giản
hóa này.
Hai thành phần của Mach IPC là cổng và thông báo. Hầu như tất cả mọi thứ trong
Mach đều là đối tượng, và tất cả đối tượng được xử lý thông qua cổng truyền thông
(thông tin liên lạc) của chúng. Thông báo được gửi đến cổng này để bắt đầu thao
tác trên đối tượng bằng việc triển khai đối tượng. Bằng cách tùy thuộc vào cổng và
thông báo cho tất cả các thông tin liên lạc, Mach cung cấp vào vị trí độc lập của
đối tượng và bảo mật liên lạc. Dữ liệu độc lập được cung cấp bởi nhiệm vụ của
Mạng máy chủ (NetMsgServer).
Mach đảm bảo bảo mật thông tin bằng cách yêu cầu người gửi tin và nhận thông
tin có quyền. Quyền bao gồm tên cổng và khả năng - gửi hoặc nhận - trên cổng, và
rất giống khả năng trong hệ thống hướng đối tượng. Một nhiệm vụ duy nhất có thể
có quyền nhận đối với bất kỳ cổng nào, nhưng nhiều nhiệm vụ có thể có quyền gửi.
Khi một đối tượng đã được tạo lập, người tạo lập của nó cũng phân bổ cổng để đại
diện cho đối tượng và có được quyền truy cập đến cổng đó. Quyền có thể được đưa
ra bởi người tạo lập của đối tượng, bao gồm phần lõi, và được chuyển trong thông
báo. Nếu người thụ hưởng quyền nhận- gửi ngay trong thông báo, người nhận của
thông báo đạt được quyền, và người gửi mất nó. Nhiệm vụ có thể phân bổ cổng để
cho phép truy cập đối tượng nào nó sở hữu hoặc để giao tiếp.Việc hủy cổng hoặc
người thụ hưởng quyền nhận gây ra thu hồi tất cả quyền đối với cổng, và nhiệm vụ
giữ quyền gửi có thể được thông báo nếu muốn.
ĐHSP Thái Nguyên- Lớp: SP Tin K45
22
Môn KTMT&NLHĐH The Mach System
I.CỔNG

- Cổng được triển khai khi bảo vệ, giới hạn hàng đợi trong phần lõi của hệ thống trên đó
đối tượng thường trú. Nếu hàng đợi đầy, người gửi có thể huỷ bỏ gửi, chờ khe cắm trở
thành sẵn có trong hàng đợi, hoặc có phần lõi cung cấp thông báo cho nó.
- Một số cuộc gọi hệ thống cung cấp cổng với chức năng sau:
• Phân bố cổng mới trong một nhiệm vụ xác định và cho nhiệm vụ của người gọi tất
cả quyền truy cập đến cổng mới. Tên cổng được gửi về.
• Deallocate quyền truy cập của một nhiệm vụ đến cổng. Nếu tác vụ giữ quyền
nhận, cổng bị phá hủy, và tất các tác vụ khác có quyền gửi có khả năng thông báo.
• Nhận được tình trạng hiện hành của cổng của tác vụ.
• Tạo ra cổng sao lưu, được cho trước quyền nhận cho cổng, nếu tác vụ chứa quyền
nhận được yêu cầu ngưng cấp phát hoặc chấm dứt của nó.
• Khi công việc đã được tạo ra, phần lõi tạo ra vài cổng cho nó. Các chức năng
nhiệm vụ tự trả về tên của cổng đại diện cho tác vụ trong việc gọi đến phần lõi.
Chẳng hạn như, cho một nhiệm vụ để phân bố cổng mới, nó sẽ gọi cổng phân bố
với cái tên của nhiệm vụ giống như tên của nhiệm vụ sẽ sở hữu cổng. Kết quả
luồng dẫn đến cổng phần lõi có cái tên luồng giống nhau. Điều này tương tự khái
niệm quá trình ID tiêu chuẩn được tìm thấy
trong UNIX. Một cổng được tạo ra cho một tác vụ là được trả về bởi tác vụ thông
báo và là cổng mà phần lõi sẽ gửi tin nhắn - thông báo sự kiện ( như là các thông
báo của sự kết thúc cổng ).
- Cổng cũng có thể được thu thập vào thiết lập cổng. Cơ sở này có ích nếu một luồng để
yêu cầu dịch vụ đi đến cho nhiều đối tượng. Cổng có thể là một thành viên và không thể
ĐHSP Thái Nguyên- Lớp: SP Tin K45
23
Môn KTMT&NLHĐH The Mach System
nhiều hơn so với một cổng được thiết lập tại cùng một thời điểm ; và nếu cổng được thiết
lập, nó không được sử dụng trực tiếp để nhận thông báo. Thay vào đó, thông báo sẽ được
chuyển đến hàng đợi của thiết lập cổng. Tập hợp các thiết lập cổng không được chuyển
trong thông báo, không giống cổng. Thiết lập cổng là đối tượng phục vụ mục đích giống
với 4.3 BSD chọn cuộc gọi hệ thống, nhưng chúng hiệu quả hơn.

Hình 1.5: Mach thông báo
Hình 1.5: Mach thông báo
ĐHSP Thái Nguyên- Lớp: SP Tin K45
Hàng đợi thông báo
(message queue)
Tin nhắn
(message)
Tin nhắn
(message)
24
Cổng đích (destination port)
Cổng nguồn (reply port)
Kích thước/ Thao tác (size/ operation)
Dữ liệu gõ nguyên bản (pure typed data)
Quyền cổng (port rights)
Ra- vào- dòng dữ liệu (out- of-line data)
…….
Điều khiển thông báo (message control)
Cổng
(port)
Bộ nhớ cache thông báo
(memory cache object)
Bộ nhớ cache thông báo
(memory cache object)
Cổng (port)
Môn KTMT&NLHĐH The Mach System
II.THÔNG BÁO
• Một thông báo bao gồm tiêu đề có chiều dài cố định và một số biến của đối tượng
dữ liệu. Tiêu đề chứa tên cổng của đích, tên của cổng trả lời thông báo trả về sau
đó được gửi đi, và chiều dài của thông báo ( Hình 1.5 ).

• Dữ liệu trong thông báo ( hay trong dòng dữ liệu ) chỉ giới hạn nhỏ hơn 8 KB (ki-
lô-bai) trong hệ thống Mach 2.5, nhưng Mach 3.0 không có giới hạn. Bất kỳ dữ
liệu nào vượt quá giới hạn phải được gửi đi hoặc ở nhiều thông báo hoặc qua tham
chiếu bằng con trỏ trong thông báo ( hoặc ra - vào - dòng dữ liệu ). Mỗi phần dữ
liệu có thể là loại đơn giản ( số hoặc kí tự ), quyền cổng, hay con trỏ để ra - vào-
dòng dữ liệu. Mỗi phần dữ liệu có một loại khác nhau, sao cho người nhận có thể
giải nén dữ liệu một cách chính xác dù là nó sử dụng byte khác với việc được sử
dụng bởi người gửi. Phần lõi (hạt nhân) cũng kiểm tra thông báo chính xác cho
một số loại dữ liệu. Chẳng hạn như, phần lõi phải xử lý cổng thông tin trong một
thông báo, hoặc bằng cách dịch tên cổng thành một địa chỉ cấu trúc dữ liệu cổng
bên trong hoặc bằng chuyển tiếp nó để xử lý đến NetMsgServer.
• Việc sử dụng con trỏ trong thông báo cung cấp phương tiện để chuyển giao toàn bộ
khoảng không gian địa chỉ của tác vụ trong một thông báo đơn. Phần lõi cũng phải
xử lý con trỏ đến dòng dữ liệu, khi con trỏ đến dữ liệu trong khoảng không gian
địa chỉ của người gửi sẽ không hợp lệ đối với người nhận - nhất là nếu người gửi
và người nhận lưu trú trên hệ thống khác nhau! Nói chung, hệ thống gửi thông báo
bằng cách sao chép dữ liệu từ người gửi đến người nhận. Vì kỹ thuật này có thể
không hiệu quả, nhất là trong trường hợp thông báo lớn, Mach tối ưu hóa thủ tục
này. Các dữ liệu tham chiếu bằng con trỏ trong một thông báo được gửi đến một
cổng trên cùng một hệ thống không được sao chép giữa người gửi và người nhận.

ĐHSP Thái Nguyên- Lớp: SP Tin K45
25

×