Một tiến trình kết thúc xử lý khi nó hoàn tất chỉ thị cuối cùng và sử dụng một lời gọi hệ thống để yêu cầu hệ điều hành hủy bỏ nó. Đôi khi một tiến trình có thể yêu cầu hệ điều hành kết thúc xử lý của một tiến trình khác. Khi một tiến trình kết thúc, hệ điều hành thực hiện các công việc :
• thu hồi các tài nguyên hệ thống đã cấp phát cho tiến trình
• hủy tiến trình khỏi tất cả các danh sách quản lý của hệ thống
• hủy bỏ PCB của tiến trình
Hầu hết các hệ điều hành không cho phép các tiến trình con tiếp tục tồn tại nếu tiến trình cha đã kết thúc. Trong những hệ thống như thế, hệ điều hành sẽ tự động phát sinh một loạt các thao tác kết thúc tiến trình con.
48 trang |
Chia sẻ: maiphuongdc | Lượt xem: 3858 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Đề tài Hệ phân tán, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ợc với độ chính xác tương đối thấp, tuy nhiên chúng có khả năng duy trì một số mục đích.
Chế độ gọi thủ tục tưng tự như thuật toán xử lý của Christian mô tả trên đây. Trong chế độ này một máy chủ sẽ nhận các yêu cầu từ máy tính khác, các yêu cầu đó sẽ được đáp ứng thông qua việc phuc đáp với nhãn thời gian của nó. Chế độ này thích hợp cho các mạng đòi hỏi độ tin cậy cao và do đó nó có thể thực hiện trong trường hợp Multicast hoặc ở những mạng phần cứng không hỗ trợ Multicast. Ví dụ, các file Server trong cùng mạng hoặc trong mạng LAN khác kết nối với nó, cần phải lưu giữ các thông tin về thời gian cho những lần truy cập file một cách chính xác, chúng cũng có thể giao tiếp với Server chủ cục bộ trong chế độ gọi thủ tục.
Cuối cùng, chế độ đối xứng thường được Serverử dụng trong các Server chủ( những máy cung cấp các thông tin thời gian trong các mạng LAN) và các con đồng bộ hóa mức cao ( giai tầng thấp ), những nơi đòi hỏi tới độ chính xác cao nhất. Mỗi cặp máy chủ hoạt động trong chế độ đối xứng trao đổi các thông báo mang thông tin thời gian với nhau. Dữ liệu thời gian được giữ lại như một phần của Server kết hợp giữa các máy chủ, và được duy trì nhằm làm tăng độ chính xác của việc đồng bộ hóa thời gian của chúng.
Trong tất cả các chế độ nêu trên, các thông báo được chuyển phát không đáng tin cậy như trong Server sử dụng giao thức truyền thông Internet chuẩn UDP. Trong chế độ gọi thủ tục và trong chế độ đối xứng các thông báo được trao dổi theo từng cặp. Mỗi thông báo mang một nhãn thời gian của biến cố thông báo hiện tại bao gồm: các giá trị thời hạn cục bộ khi gửi và nhận thông báo NTP trước đó, và thời điểm truyền thông báo hiện tại. Người nhận thông báo NTP sẽ ghi lại thời gian cục bộ khi nhận được thông báo. Bốn đơn vị thời gian Ti-3, Ti-2, Ti-1 và Ti của các thông báo m được gửi giữa các Server A và B, được mô tả như trong hình 1.6. Chú ý rằng, không giống như thuật toán Christian, chế độ đối xứng có thể có trễ khá lớn từ lúc thông báo tới khi gửi thông báo tiếp theo. Vì vậy, các thông báo có thể bị mất, nhưng các nhãn thời gian mang theo trong mỗi thông báo vẫn có giá trị.
Máy chủ A Ti-2 Ti-1 thời gian
Máy chủ B Ti-3 Ti
Hình 1.6 Truyền dẫn các thông báo giữa các cặp NTP ngang hàng
Với mỗi cặp các thông báo được gửi giữa hai Server, giao thức thời gian mạng NTP sẽ tính giá trị ước lượng độ lệch thực tế Oi giữa hai đồng hồ, và tổng trễ thời gian truyền dẫn hai thông báo di. Nếu độ lệch của đồng hồ trong B đối với A là O, và nếu thời gian truyền dẫn cho các thông báo m và m* tương ứng là t và t*, thì ta có:
Ti-2 = Ti-3 + O và Ti = Ti-1+ t* - O
đặt a=Ti-2-Ti-3 và b=Ti-1- Ti ta có:
d1= t + t* = a- b
Tương tự: O= Ti-2, Ti-3 = Oi + ( t*- t )/2, trong đó Oi=(a+b)/2;
Trên thực tế t, t* >=0, nên ta có Oi + di/2 >= 0 >=(Oi -di/2). Biểu thức này chứng tỏ Oi là một ước lượng của độ lệch, và di là một phép đo chính xác của giá trị ước tính này.
Các dịch vụ NTP áp dụng thuật toán lọc dữ liệu cho các cặp kế tiếp (Oi,di), các cặp này ước tính độ lệch O và tính toán chất lượng ước tính đó bằng hàng loạt các thống kê gọi là phân toán học. Độ phân tán lọc cao biểu thị dữ liệu có độ tin cậy thấp. Cũng như thuật toán Christian, giá trị của Oi tương ứng với giá trị nhỏ nhất của dj được chọn làm giá trị ước lượng O.
Tuy nhiên, giá trị độ lệch nhận được được từ truyền thông với một nguồn không cần thiết phải dùng để điều chỉnh đồng hồ địa phương. Nói chung, một NTP Server trao đổi thông báo với một dịch vụ ngang hàng với nó. Ngoài việc lọc dữ liệu để trao đổi với từng dịch vụ ngang hàng, NTP còn áp dụng thuật toán chọn ngang hàng. Khảo sát những giá trị nhận được từ việc trao đổi với các dịch vụ ngang hàng này, sẽ tìm ra được những giá trị không tin cậy. Đầu ra của thuật toán này có thể làm cho dich vụ phi thay đổi các dịch vụ ngang hàng mà lúc đầu nó đã dùng để đồng bộ hóa.
Những dịch vụ ngang hàng có chỉ số giai tầng thấp ưa chuộng hơn nhưng dịch vụ ngang hàng ở giai tầng cao, vì chúng “gần” với các nguồn thời gian cấp 1 hơn. Tương tự, nhưng dịch vụ ngang hàng có độ phân tán đồng bộ hóa thấp nhất được ưa chuộng hơn. Đây chính là tổng của bộ phân tán của bộ lọc đảo được giữa dịch vụ và gốc của mạng đồng bộ con, (độ phân tán đồng bộ hóa trao đổi ngang hàng trong các thông báo, cho phép tính được tổng này).
Theo Mill, trong năm 1991, khong 20->30 Server cấp 1 và hơn 2000 Server cấp 2 hoạt động trên Internet, gồm ở Mỹ, Canada, Anh và Na uy. Server cấp 1 thường trao đổi thông báo với hầu hết các Server cấp 1 khác. Server cấp 2 đặc biệt thường thông tin với 1 Server ngang hàng ở cùng giai tầng và hai Server ngang hàng khác ở giai tầng thấp nhất tiếp theo.
Các phép đo cho thấy lỗi đồng bộ hóa không quá 30 mili giây, nhưng chỉ 1% giá trị thời gian mẫu lấy từ các Server được đồng bộ hóa bởi NTP. Hơn nữa, bằng việc c chế vòng lặp đồng hồ để điều chỉnh tần số của các đồng hồ cục bộ trong việc đáp ứng với giữ liệu bù thêm, có thể đạt được độ chính xác ở mức 1 mili giây bằng việc thực hiện nhiều chu kỳ trong một giờ. Tuy nhiên không bảo đảm có giới hạn nào về sự khác nhau giữa hai đồng hồ.
Mô hình vồng lặp đồng hồ pha đã được Mills đưa ra vào năm 1991. Mô hình này bao hàm cả việc chỉnh tần số đồng hồ địa phưng theo sự quan sát tốc độ lệch của nó. Xét ví dụ đơn giản, nếu thấy một đồng hồ luôn chạy nhanh 4 giây trong 1 giờ thì tần số của nó có thể giảm nhẹ (bằng phần mềm hoặc bằng phần cứng) để bù cho việc chạy nhanh này. Do đó, độ lệch đồng hồ trong các khoảng thời gian giữa các lần đồng bộ hóa sẽ giảm đi.
Người ta quan niệm rằng bất kì một tiến trình đơn, một biến cố nào đều có thể sắp xếp một cách duy nhất theo thời gian của đồng hồ địa phương. Tuy nhiên, vì chúng ta không thể đồng bộ hóa một cách hoàn hảo các đồng hồ cục bộ trong hệ phân tán, nên nói chung ta không thể sử dụng thời gian vật lý để tìm ra trật tự của cặp biến cố bất kỳ nào xẩy ra trong nó.
Nói chung, ta có thể sử dụng một sơ đồ tương tự tính nhân quả vật lý, nhưng nó chỉ được áp dụng trong hệ phân tán, để sắp xếp một biến cố xảy ra ở các tiến trình khác nhau. Việc sắp xếp này dựa trên hai điểm sau:
Nếu hai biến cố xẩy ra trong cùng một tiến trình thì chúng xẩy ra theo trật tự mà tiến trình quan sát chúng.
Khi thông báo được gửi giữa các tiến trình, biến cố gửi thông báo bao giờ cũng xẩy ra trước biến cố nhận thông báo.
Lamport gọi trật tự nhận được nhờ việc khái quát hóa của hai mối quan hệ trên là quan hệ xẩy ra trước. Đôi khi nó còn được coi là trật tự nhân quả hay trật tự nhân quả tiềm tàng.
Ta sẽ viết X->p Y nếu hai biến cố X và Y xẩy ra trong cùng một tiến trình p,và X xy ra trước Y. Sử dụng trật tự giới hạn này ta có thể xác định mối quan hệ xảy ra trước, biểu thị bằng kí hiệu->p như sau:
HB1: nếu tồn tại tiến trình p: X->p Y, thì X->Y.
HB2: đối với thông báo m bất kỳ: gửi(m)->nhận (m) Trong đó: gửi(m) là biến cố gửi thông báo, và nhận (m) là biến cố nhận thông báo.
HB3: nếu X,Y và Z là những biến cố mà Y->Yvà Y->Z, thì X->Z.
Do đó, nếu X->Y thì ta có thể tìm được một dãy các biến cố e1, e2, e3,.. en xảy ra trong một hoặc một số tiến trình mà x=e1 và y=en, và với i=1,2..n-1, HB1 hoặc HB2 áp dụng được giữa ei và ei+1, điều này có nghĩa là chúng xảy ra liên tiếp trong cùng tiến trình, hoặc có một thông báo m nào đó mà ei=gửi(m) và ei+1=nhận(m). dãy các biến cố e1, e2, e3…en không cần thiết phải duy nhất.
PHẦN II: TIẾN TRÌNH HỆ ĐIỀU HÀNH PHÂN TÁN.
I. TỔNG QUAN VỀ HỆ ĐIỀU HÀNH.
Hệ điều hành là một chương trình hay một hệ chương trình hoạt động giữa người sử dụng (user) và phần cứng của máy tính. Mục tiêu của hệ điều hành là cung cấp một môi trường để người sử dụng có thể thi hành các chương trình. Nó làm cho máy tính dể sử dụng hơn, thuận lợi hơn và hiệu quả hơn.
Hệ điều hành là một phần quan trọng của hầu hết các hệ thống máy tính. Một hệ thống máy tính thường được chia làm bốn phần chính : phần cứng, hệ điều hành, các chương trình ứng dụng và người sử dụng.
Các bộ xử lý thông tin với nhau thông qua các đường truyền thông như những bus tốc độ cao hay đường dây điện thoại.
Các bộ xử lý trong hệ phân tán thường khác nhau về kích thước và chức năng. Nó có thể bao gồm máy vi tính, trạm làm việc, máy mini, và những hệ thống máy lớn. Các bộ xử lý thường được tham khảo với nhiều tên khác nhau như site, node, computer v.v.... tùy thuộc vào trạng thái làm việc của chúng.
Các nguyên nhân phải xây dựng hệ thống phân tán là:
Chia xẻ tài nguyên : Một người sử dụng A có thể sử dụng máy in laser của người sử dụng B và người sử dụng B có thể truy xuất những tập tin của A. Tổng quát, chia xẻ tài nguyên trong hệ thống phân tán cung cấp một cơ chế để chia xẻ tập tin ở vị trí xa, xử lý thông tin trong một cơ sở dữ liệu phân tán, in ấn tại một vị trí xa, sử dụng những thiết bị ở xa đểõ thực hiện các thao tác.
Tăng tốc độ tính toán : Một thao tác tính toán được chia làm nhiều phần nhỏ cùng thực hiện một lúc. Hệ thống phân tán cho phép phân chia việc tính toán trên nhiều vị trí khác nhau để tính toán song song.
An toàn : Nếu một vị trí trong hệ thống phân tán bị hỏng, các vị trí khác vẫn tiếp tục làm việc.
Thông tin liên lạc với nhau :Có nhiều lúc, chương trình cần chuyển đổi dữ liệu từ vị trí này sang vị trí khác. Ví dụ trong hệ thống Windows, thường có sự chia xẻ và chuyển dữ liệu giữa các cửa sổ. Khi các vị trí được nối kết với nhau trong một hệ thống mạng, việc trao đổi dữ liệu diễn ra rất dễ. Người sử dụng có thể chuyển tập tin hay các E_mail cho nhau từ cùng vị trí hay những vị trí khác.
Trong thời gian hiện tại đồng thời phát triển một số loại hệ điều hành theo các yêu cầu và các giải pháp khác nhau nhằm hỗ trợ cho việc đáp ứng yêu cầu của từng người sử dùng đến một tập thể và toàn bộ những người sử dụng máy vi tính. Vì vậy, theo những yêu cầu khác nhau thì việc phát triển hệ điều hành theo các hướng khác nhau là điều đương nhiên.
Để phân loại hệ điều hành chúng tôi phân loại theo yêu cầu của người sử dụng chúng ta có thể chia làm ba loại hệ điều chính như sau:
Hệ điều hành tập trung: Các hệ điều hành này có thể là đơn xử lý hoặc đa xử lý. Hệ thống này cung cấp các khả năng tốt nhất dùng để cho một người hay một số lượng nhỏ người sử dụng yêu cầu xử lý có độ phức tạp về việc quản lý file, bộ nhớ và các bộ vi xử lý.
Hệ điều hành mạng: cấu trúc cũng giống như hệ điều hành trên nhưng chúng tập trung quản lý về việc chia sẻ tài nguyên, các giao dịch từ xa, anh ninh mạng,….. nói chung tập trung vào các giao tiếp trên mạng về các tài nguyên.
Hệ điều hành phân tán: hệ điều hành phân tán nhìn qua thì cũng tương tự như hệ điều hành mạng nhưng có điểm khác là tính chất trong suốt. Do đó, chúng ta khi sử dụng hệ điều hành hệ phân tán chúng ta không hề cảm thấy khó khăn bởi vì toàn bộ hệ thống phân tán đều được che dấu đối với người sử dụng. Trong hệ điều hành này, đối với người sử dụng không có sự phân biệt giữa truy nhập từ xa hay ngay trong hệ thống của các tài nguyên được truy nhập đến.
II. TIẾN TRÌNH HỆ ĐIỀU HÀNH PHÂN TÁN.
Trước khi chúng ta nghiên cứu về các tiến trình trong hệ điều hành phân tán chúng ta cần xem kiến trúc nói chung của một hệ phân tán. Qua đó, chúng ta thấy được các chức năng, vai trò của hệ điều hành phân tán. Từ đó, chúng ta có thể phân tích các tiến trình trong hệ điều hành phân tán.
Các cổng truyền thông
Trạm làm việc
Trạm làm việc máy khách
Máy chủ chuyên trách
Hình 2.1 Kiến trúc mạng phân tán.
Kiến trúc của mạng của một hệ phân tán với thành phần là hệ điều hành hệ phân tán với hệ trung gian:
Hình 2.2 Kiến trúc hệ phân tán và middleware.
Mục đích hệ điều hành phân tán.
Ngoài các mục đích cơ bản của hệ điều hành đó là: độ tin cậy cao, an toàn, hiệu quả trong xử lý, tính kế thừa, thuận tiện cao. Thì trong hệ điều hành phân tán còn phải đáp ứng các tính chất mà chúng ta luôn cần đến đó là tính bền vững. Tính bền vững ở đây chính là khả năng chụi lỗi có nghĩa là hệ thống có khả năng tự khởi động lại tới trạng thái mà ở đó tính toàn vẹn của hệ thống được duy trì với một số hiệu năng bị giảm sút. Chính nhờ khả năng này mà nó giúp cho hệ điều hành phân tán tăng cường độ tin cậy, an toàn và điều khiển truy nhập do chính nó thực hiện.
Kiến trúc hệ điều hành phân tán.
Hệ điều hành phân tán gồm hai thành phần chính đó là: các tiến trình và các file. Khi có mạng, chúng ta phải thêm thành phần thứ ba: các đường truyền thông. Phần cứng là các trạm làm việc và mạng. Tuy nhiên, người ta không dùng liên quan tới các thành phần vật lý ngoại trừ chi phí, sự xuất hiện của hiệu năng hệ thống. Trong đó người ta chia thành hai mô hình chính đó là mô hình trạm làm việc -máy chủ và mô hình xử lý nhóm tuỳ theo vào yêu cầu và mục đích của mạng phân tán.
Hình 2.3 Kiến trúc hệ điều hành phân tán.
Như vậy các kiến trúc của hệ điều hành phân tán có 5 thành phân chính
Process manager: quản lý tiến trình đặt ở mức cao nhất là thành phần giao tiếp trực tiếp với người sử dụng.
Communication manager: Quản lý truyền thông đóng vai trò như một thành phần giao tiếp giữa các tiến trìn các luồng cũng như quản lý tài nguyên tại máy và các máy khác nhau trong hệ thống.
Thread manager: quản lý các tiểu tiến trình.
Memory manager: quản lý tài nguyên hệ thống.
Supervisor: Thực hiện quản lý mức thấp nhất của hệ điều hành.
Kiến trúc của tiến trình trong hệ điều hành phân tán.
a. Tiến trình hệ điều hành phân tán.
Tiến trình là một chương trình đang xử lý, sỡ hữu một con trỏ lệnh, tập các thanh ghi và các biến. Để hoàn thành tác vụ của mình, một tiến trình có thể cần đến một số tài nguyên – như CPU, bộ nhớ chính, các tập tin và thiết bị nhập/xuất…
Cần phân biệt hai khái niệm chương trình và tiến trình. Một chương trình là một thực thể thụ động, chứa đựng các chỉ thị điều khiển máy tính để tiến hành một tác vụ nào đó ; khi cho thực hiện các chỉ thị này, chương trình chuyển thành tiến trình, là một thực thể hoạt động, với con trỏ lệnh xác định chỉ thị kế tiếp sẽ thi hành, kèm theo tập các tài nguyên phục vụ cho hoạt động của tiến trình.
Trong hầu hết các hệ điều hành, mỗi tiến trình có một không gian địa chỉ và chỉ có một dòng xử lý. Tuy nhiên, có nhiều tình huống người sử dụng mong muốn có nhiều dòng xử lý cùng chia sẻ một không gian địa chỉ, và các dòng xử lý này hoạt động song song tương tự như các tiến trình phân biệt (ngoại trừ việc chia sẻ không gian địa chỉ).
b. Tiểu tiến trình( threads_Luồng của tiến trình).
Trong hầu hết các hệ điều hành, mỗi tiến trình có một không gian địa chỉ và chỉ có một dòng xử lý. Tuy nhiên, có nhiều tình huống người sử dụng mong muốn có nhiều dòng xử lý cùng chia sẻ một không gian địa chỉ, và các dòng xử lý này hoạt động song song tương tự như các tiến trình phân biệt (ngoại trừ việc chia sẻ không gian địa chỉ).
Ví dụ : Một server quản lý tập tin thỉnh thoảng phải tự khóa để chờ các thao tác truy xuất đĩa hoàn tất.Nếu server có nhiều dòng xử lý, hệ thống có thể xử lý các yêu cầu mới trong khi một dòng xử lý bị khoá. Như vậy việc thực hiện chương trình sẽ có hiệu quả hơn. Điều này không thể đạt được bằng cách tạo hai tiến trình server riêng biệt vì cần phải chia sẻ cùng một vùng đệm, do vậy bắt buộc phải chia sẻ không gian địa chỉ.
Chính vì các tình huống tương tự, người ta cần có một cơ chế xử lý mới cho phép có nhiều dòng xử lý trong cùng một tiến trình.
Ngày nay đã có nhiều hệ điều hành cung cấp một cơ chế như thế và gọi là tiểu trình (threads).
c. Nguyên lý chung :
Một tiểu trình là một đơn vị xử lý cơ bản trong hệ thốn. Mỗi tiểu trình xử lý tuần tự đoạn code của nó, sỡ hữu một con trỏ lệnh, tập các thanh ghi và một vùng nhớ stack riêng. Các tiểu trình chia sẻ CPU với nhau giống như cách chia sẻ giữa các tiến trình: một tiểu trình xử lý trong khi các tiểu trình khác chờ đến lượtù. Một tiểu trình cũng có thể tạo lập các tiến trình con, và nhận các trạng thái khác nhau như một tiến trình thật sự. Một tiến trình có thể sỡ hữu nhiều tiểu trình.
Các tiến trình tạo thành những thực thể độc lập. Mỗi tiến trình có một tập tài nguyên và một môi trường riêng (một con trỏ lệnh, một Stack, các thanh ghi và không gian địa chỉ ). Các tiến trình hoàn toàn độc lập với nhau, chỉ có thể liên lạc thông qua các cơ chế thông tin giữa các tiến trình mà hệ điều hành cung cấp. Ngược lại, các tiểu trình trong cùng một tiến trình lại chia sẻ một không gian địa chỉ chung, điều này có nghĩa là các tiểu trình có thể chia sẻ các biến toàn cục của tiến trình. Một tiểu trình có thể truy xuất đến cả các stack của những tiểu trình khác trong cùng tiến trình. Cấu trúc này không đề nghị một cơ chế bảo vệ nào, và điều này cũng không thật cần thiết vì các tiểu trình trong cùng một tiến trình thuộc về cùng một sỡ hữu chủ đã tạo ra chúng trong ý định cho phép chúng hợp tác với nhau.
Hình 2.4 Các tiểu trình trong cùng một tiểu trình
d. Phân bổ thông tin lưu trữ.
Hình 2.5 Cấu trúc mô tả tiến trình và tiểu trình
Trong một số trường hợp tiểu tiến trình có thẻ gọi là “lightweight” của tiến trình. Đó là do hệ điều hành sẽ chỉ biết đến khái niệm tiến trình, do vậy cận có cơ chế để liên kết các tiểu trình cùng một tiến trình với tiến trình cha trong kernel_ đối tượng này đôi lúc được gọi là LWP (lightweight process).
Hình 2.6 Tiểu tiển trình là một “lightweight proccess”
4. Các vấn đề trong quản lý tiến trình của.
a. Sự loại trừ lẫn nhau trong hệ phân tán.
Sự loại trừ lẫn nhau trong hệ phân tán xảy ra khi nhiều tiến trình đồng thời thực hiện một sự truy nhập nối tiếp để chia sẻ tài nguyên và dữ liệu ( ví dụ như cập nhật dữ liệu hay gửi các tín hiệu đến các thiết bị vào ra. Vấn đề ở đây là trong các trường hợp đó chúng ta cần phải làm gì để sự tương xảy ra là công bằng theo các tiêu chuẩn cho trước. Trong đó, các tiêu chuẩn này bao gồm: thời gian yêu cầu, thứ tự yêu tiên của yêu cầu hay sự lựa chọn. Chúng ta có một số thuật toán để giải quyết tranh chấp khi xảy ra tương tranh. Người dùng có thể dựa vào đó để có thể lấy quyền ưu tiên. Trong đó có một số phương pháp và dạng xảy ra tương tranh dưới đây:
Loại trừ lẫn nhau dựa vào tranh chấp: là sự tranh chấp cho các phần tới hạn có thể quyết định bằng bất cứ tiêu chí vào để phá vỡ các dàng buộc khi các yêu cầu thực hiện xảy ra cùng một thời điểm. Cách tốt nhất cho phép yêu cầu tới các tiến trình được hỏi đầu tiên hoặc tiển trình được dưa ra nhiều nhất từ các tiến trình khác chúng ta sẽ gọi hai cách tiếp cận khác nhau này là các sơ đồ yêu tiên nhãn thời gian và bầu cử.
Loại trừ dựa vào việc chuyển Token: Đây là sự tranh chấp dựa vào thuật toán. Cơ chế của thuật toán dựa trên việc cung cấp các Token cho các thành viên xảy ra tranh chấp làm sao đảm bảo chỉ có một Token. Có ba thuật toán chính để phân chia các Token theo kiến trúc mạng là : cấu trúc vòng, cây và quảng bá.
b. Lập lịch xử lý hệ điều hành phân tán.
Để tạo sự đồng bộ và thuận lợi trong truyền thông, các hệ thống hệ phân tán cần thiết phải có sự hỗ trợ cho việc giải quyết tương tranh của các tiến trình tương tác. Trước khi thực hiện, các tiến trình cần lập lịch và phân phối tài nguyên. Đối tượng được lập lịch chính là để nâng cao toàn bộ hiệu năng hệ thống như thời gian hoàn thành tiến trình và sự tận dụng các bộ xử lý. Sự tồn tại nhiều nút xử lý trong các hệ thống phân tán đưa ra vấn đề thách thức để lập lịc các tiến trình như ccs xử lý và ngược lại.
Tiến trình lập lịch phân tán được tổ chức thành hai thành phần: tiến trình lập lịch tĩnh, phân chia và cân bằng tải động.
c. Truyền thông liên tiến trình.
Trong các hệ điều hành, tương tác giữa các tiến trình và luồng thông tin giữa các đối tượng phụ thuộc vào truyền thông. Tại mức thấp nhất, truyền thông báo chỉ có nghĩa truyền thông trong các hệ phân tán. Truyền thông liên tiến trình có thể được hoàn thành bằng cách dùng truyền thông báo đơn giản. Tuy nhiên, nó muốn có sự trong suốt trong truyền thông bằng cách cung cấp các phương thức truyền thông logic mức cao hơn để che các chi tiết vật lý của việc truyền thông báo.
Hai khái niệm quan trọng để thực hiện kết quả này là mô hình khách/chủ (client/server) và gọi thủ tục từ xa (RPC). Mô hình client/server là mô hình lập trình cho các tiến trình cấu trúc trong hệ phân tán. Trong mô hình này, tất cả các tương tác hệ thống được thấy như một cặp thông báo trao đổi trong tiến trình client gửi thông báo yêu cầu tới server và đợi cho server trả lời với thông báo trả lời. Thông báo hỏi đáp (request/repply) trao đổi giữa client và server do vậy có thể được biểu diễn như gọi thủ tục đến server ở xa. Truyền thông gọi thủ tục từ xa (RPC) xây dựng trên mô hình client/server và truyền thông báo cho đã được đưa ra như một kỹ thuật truyền thông liên tiến trình chuẩn cho tất cả các hệ phân tán.
c.1 Mô hình RPC.
Các tiến trình là các đơn vị xử lý cơ bản trong hệ điều hành. Một tiến trình là một chương trình thực hiện. Một tiến trình là tuần tự nếu chuỗi điều chỉnh hoạt động của nó. Chúng ta dùng thuật ngữ tiến trình tương tranh (concurrent process) để mô tả các tiến trình giả lập tương tác tuần tự. Các tiến trình xảy ra là không đồng bộ và mỗi tiến trình có không gian địa chỉ logic của chính nó. Giữa hai tiến trình, một số thành phần trong các tiến trình được tách ra có thể được thực hiện đồng thời. Số khác cần để truyền thông hay đồng bộ giữa chúng.
Cho phép nhiều nhánh điều khiển trong tiến trình đưa ra mức tương tranh mới trong hệ thống. Tiến trình mới có thể sinh ra tiến trình mới, do vậy tạo ra nhiều nhánh hoạt động. Trường hợp quan tâm đặc biệt khi các tiến trình con được nhóm lại với nhau để chia sẻ không gian địa chỉ chung, nhưng mỗi trạng thái lại có trạng thái cục bộ của nó. Tiến trình này được gọi là tiến trình nhánh hay là các tiến trình không quan trọng. Quá trình tương tranh trong hệ phân tán được chia làm hai mức của tiến trình và nhánh. Trong mức thấp hơn, các tiểntình xảy ra đồng thời thực hiện không đồng bộ trên hệ điều hành. Mỗi tiến trình xảy ra đồng thời chạy như một máy ảo để hỗ trợ việc thực hiện đồng thời các nhánh, tạo thành mức tương tranh thứ hai. Tiến trình chỉ là không gian địa chỉ logic trong lúc các nhánh hoạt động.
Chúng ta dùng thuật ngữ khối điều khiển tiển trình ( PCB_Process Control Block) bao gồm các thông tín sau: bộ đếm chương trình, nội dung thanh ghi, con trỏ, ngăn xếp, các cổng truyền thôngm và các file mô tả. Khối điều khiển các nhánh (TCB_ Thread Control Block) chúng được sinh ra nhờ lời gọi của các tiến trình.
Hình 2.7 Tương tranh hai mức của các tiến trình và các nhánh.
c.2 Mô hình client/server.
Một cách tiếp cận phổ biến là kiểu client/server. Kiểu client/server là mô hình lập trình biểu diễn các tiến trình và các cấu trúc hệ thống. Các tiến trình yêu cầu dịch vụ là các client, các tiến trình cung cấp dịch vụ là các server. Trong bất cứ trường hợp nào, một tiến trình là một client hay là một server hoặc cũng có thể là cả hai vai trò.
Client và server tương tác thông qua một chuỗi các yêu cầu và đáp ứng trên cơ sở đồng bộ hoá các vấn đề truyền thông.
Truyền thông liên tiến trình và quá trình xử lý tương tranh
Trong mạng phân tán, chúng ta tập trung xử lý truyền thông trong đó việc nhận hay gửi là một phần chính của chúng. Ngoài ra, chúng còn có một số biến thể của nó. Tuy nhiên việc gửi và nhân là chức năng chính của truyền thông cơ bản.
Truyền thông cơ bản chính là việc nhận và gửi thông báo trong đó bao gồm ba thành phần chính là địa chỉ đến và đi và nội dung cần gửi đi.
Trong quá trình truyền đi,chúng ta thấy sự tồn tại một vùng đệm để lưu trữ dữ liệu. Bộ đệm này ngoài mang ý nghĩa giúp người dùng tạo cảm giác liên tục đồng đều. Chúng còn có vai trò quan trọng trong việc đồng bộ giữa bên nhận và bên gửi, giữa nhân và nhân.
5. TỔ CHỨC QUẢN LÝ TIẾN TRÌNH
5.1. Các trạng thái của tiến trình
Trạng thái của tiến trình tại một thời điểm được xác định bởi hoạt động hiện thời của tiến trình tại thời điểm đó. Trong quá trình sống, một tiến trình thay đổi trạng thái do nhiều nguyên nhân như : phải chờ một sự kiện nào đó xảy ra, hay đợi một thao tác nhập/xuất hoàn tất, buộc phải dừng hoạt động do đã hết thời gian xử lý …
Tại một thời điểm, một tiến trình có thể nhận trong một các trạng thái sau đây :
Mới tạo : tiến trình đang được tạo lập.
Running : các chỉ thị của tiến trình đang được xử lý.
Blocked : tiến trình chờ được cấp phát một tài nguyên, hay chờ mộtsự kiện xảy ra.
Ready : tiến trình chờ được cấp phát CPU để xử lý.
Kết thúc : tiến trình hoàn tất xử lý.
Hình 2.7Sơ đồ chuyển trạng thái giữa các tiến trình
Tại một thời điểm, chỉ có một tiến trình có thể nhận trạng thái running trên một bộ xử lý bất kỳ. Trong khi đó, nhiều tiến trình có thể ở trạng thái blocked hay ready.
Các cung chuyển tiếp trong sơ đồ trạng thái biễu diễn sáu sự chuyển trạng thái có thể xảy ra trong các điều kiện sau :
Tiến trình mới tạo được đưa vào hệ thống
Bộ điều phối cấp phát cho tiến trình một khoảng thời gian sử dụng CPU
Tiến trình kết thúc
Tiến trình yêu cầu một tài nguyên nhưng chưa được đáp ứng vì tài nguyên chưa sẵn sàng để cấp phát tại thời điểm đó ; hoặc tiến trình phải chờ một sự kiện hay thao tác nhập/xuất.
Bộ điều phối chọn một tiến trình khác để cho xử lý.
Tài nguyên mà tiến trình yêu cầu trở nên sẵn sàng để cấp phát ; h
Các file đính kèm theo tài liệu này:
- 77654.DOC