Mục từ này đã đạt chất lượng ở mức sản phẩm bước đầu của Đề án Biên soạn Bách khoa toàn thư Việt Nam giai đoạn 1
Hệ điều hành phân tán
Kiến trúc tổng quát của một hệ điều hành phân tán đa máy tính

Hệ điều hành phân tán (tiếng Anh distributed operating system) là hệ điều hành (HĐH) có chức năng giống như một HĐH tập trung thông thường nhưng chạy trên nhiều bộ xử lý (CPU) độc lập. Việc sử dụng nhiều bộ xử lý là vô hình đối với người dùng. Nói một cách khác, với người dùng, hệ thống nhiều bộ xử lý vẫn hoạt động như là một hệ thống tập trung, không phải là một tổ hợp các cấu thành riêng biệt.

Hệ điều hành phân tán được chia thành hai kiểu: HĐH đa xử lý và HĐH đa máy tính. HĐH đa xử lý có hai hoặc nhiều bộ xử lý chia sẻ quyền truy cập vào bộ nhớ vật lý chung. HĐH đa máy tính bao gồm các máy tính độc lập không chia sẻ bộ nhớ vật lý. Các máy tính kết nối, giao tiếp với nhau thông qua kênh truyền thông.

Đặc tính[sửa]

Hệ điều hành phân tán có một số đặc tính quan trọng như tính trong suốt, độ tin cậy, tính linh hoạt, hiệu năng, tính an toàn, khả năng mở rộng, và khả năng xử lý lỗi.

  • Tính trong suốt của hệ điều hành phân tán được hiểu như là sự che khuất đi các thành phần riêng biệt của hệ thống máy tính (phần cứng và phần mềm) đối với người sử dụng và người lập trình ứng dụng. Có tám dạng trong suốt được định nghĩa bởi Mô hình tham chiếu của Tổ chức Tiêu chuẩn quốc tế về Xử lý phân tán mở bao gồm trong suốt truy cập, trong suốt định vị, trong suốt thay thế, trong suốt lỗi, trong suốt di trú, trong suốt đồng bộ, trong suốt thực thi, và trong suốt mở rộng.
  • Độ tin cậy của hệ điều hành phân tán là khả năng cung cấp các tài nguyên và dịch vụ cần thiết để đạt được mức độ tin cậy cao, có khả năng ngăn ngừa và phục hồi từ các lỗi. Lỗi bao gồm lỗi vật lý hoặc lỗi logic có thể gây ra sự cố trong hệ thống. Để một hệ thống đáng tin cậy, hệ điều hành phân tán phải khắc phục được các tác động bất lợi của lỗi. Các phương pháp chính để xử lý lỗi bao gồm phòng tránh lỗi, thứ lỗi, phát hiện và phục hồi lỗi. Tránh lỗi bao gồm các biện pháp chủ động được thực hiện để giảm thiểu sự cố xảy ra. Các biện pháp chủ động này có thể ở dạng giao dịch, nhân bản và sao lưu. Khả năng thứ lỗi là khả năng hệ thống tiếp tục hoạt động khi có lỗi.
  • Tính linh hoạt trong hệ điều hành phân tán là khả năng dễ dàng thay đổi, dễ dàng nâng cấp. Yếu tố quan trọng nhất ảnh hưởng đến tính linh hoạt của hệ điều hành phân tán là mô hình dùng để thiết kế nhân (kernel) của nó. Hai mô hình thông dụng là nhân nguyên khối và vi nhân. Mức độ hoàn thiện, và chất lượng của nhân hệ điều hành phân tán giúp đơn giản hóa quá trình triển khai các dịch vụ cấp cao, cũng như cho phép các nhà cung cấp dịch vụ có nhiều lựa chọn hơn.
  • Hiệu năng của hệ thống phân tán phải tốt hơn hoặc bằng hiệu năng của hệ thống tập trung. Để đạt được mục tiêu này, các thành phần của hệ điều hành phân tán cần được thiết kế hợp lý, tuân theo một số nguyên tắc như: xử lý theo lô, sử dụng bộ nhớ đệm, giảm thiểu sao chép dữ liệu, giảm thiểu dung lượng mạng truyền thông, song song hóa trong đa xử lý...
  • Tính an toàn thể hiện khả năng gửi thông tin nhạy cảm qua Internet một cách an toàn và xác định chính xác người dùng hoặc các dịch vụ từ xa. Bộ phận chịu trách nhiệm về an toàn cho tài nguyên thông tin trong hệ điều hành phân tán có ba thành phần:
    • Bảo mật: bảo vệ hệ thống chống lại các truy cập trái phép.
    • Toàn vẹn: bảo vệ hệ thống chống lại những thay đổi, hư hỏng.
    • Sẵn sàng: bảo vệ chống lại các tác động đến các phương thức truy cập tài nguyên.
  • Khả năng mở rộng là khả năng của một hệ thống có thể thích ứng với việc tải dịch vụ tăng cao. Hệ thống phân tán phát triển liên tục theo thời gian. Các máy mới hoặc một số mạng con được thêm vào hệ thống nhằm thích ứng với việc gia tăng khối lượng công việc hoặc thay đổi tổ chức trong một công ty. Do đó, hệ điều hành phân tán nên được thiết kế để dễ dàng đối phó với sự phát triển gia tăng của các nút và người dùng trong hệ thống. Những gia tăng như vậy không nên gây ra sự gián đoạn nghiêm trọng của dịch vụ hoặc giảm hiệu năng hệ thống.
  • Khả năng xử lý lỗi trong hệ thống phân tán giúp nó chịu đựng các loại lỗi xảy ra không toàn phần, tức là một số thành phần bị lỗi trong khi các thành phần khác vẫn hoạt động. Đó là lý do tại sao xử lý lỗi rất khó khăn. Việc xử lý lỗi thường bao gồm các nhiệm vụ sau:
    • Phát hiện lỗi: quản lý sự hiện diện của các lỗi.
    • Che lỗi: che các lỗi không được đảm bảo trong trường hợp xấu nhất.
    • Đồng bộ hóa: Khi các ứng dụng, dịch vụ xử lý đồng bộ hóa, nó sẽ gây ra xung đột trong hoạt động với nhau và tạo ra kết quả không thống nhất. Mỗi tài nguyên phải được thiết kế để an toàn trong môi trường đồng bộ hóa.

Đồng bộ hóa[sửa]

Đồng bộ hóa trong các hệ thống phân tán phức tạp hơn so với các hệ thống tập trung vì phải sử dụng các thuật toán phân tán. Khái niệm về thứ tự thời gian của các sự kiện đóng vai trò quan trọng trong các hệ phân tán. Các thuật toán phân tán dựa trên đồng bộ hoá đồng hồ vật lý hoặc đồng hồ logic để giải quyết vấn đề này.

Đồng bộ hoá đồng hồ logic[sửa]

Thông thường, mỗi máy tính có một bộ đếm thời gian là một tinh thể thạch anh. Khi được giữ dưới sức căng, các tinh thể thạch anh dao động với tần số xác định phụ thuộc vào loại tinh thể, cách cắt và mức độ căng. Liên kết với mỗi tinh thể là hai thanh ghi, một bộ đếm và một thanh ghi lưu trữ. Mỗi dao động của tinh thể giảm giá trị bộ đếm đi một đơn vị. Khi giá trị bộ đếm về 0, một ngắt được tạo ra và bộ đếm được tải lại từ thanh ghi lưu trữ. Theo cách này, người ta có thể lập trình bộ đếm thời gian để tạo ra ngắt 60 lần trong một giây hoặc ở bất kỳ tần số mong muốn nào khác. Mỗi ngắt được gọi là một tích tắc đồng hồ.

Để đồng bộ hóa đồng hồ logic, Lamport định nghĩa mối quan hệ “xảy ra trước”. Biểu thức a→b được đọc "a xảy ra trước b" và có nghĩa là tất cả các tiến trình đồng ý rằng sự kiện a xảy ra trước, sự kiện b xảy ra sau. Mối quan hệ xảy ra trước khi có thể được quan sát trực tiếp trong hai tình huống:

  1. Nếu a và b là các sự kiện trong cùng một tiến trình và a xảy ra trước b, thì a→b là đúng.
  2. Nếu a là sự kiện thông điệp được gửi bởi một tiến trình và b là sự kiện thông điệp được nhận bởi tiến trình khác, thì a→b cũng đúng. Một thông điệp không thể nhận được trước khi nó được gửi, hoặc thậm chí cùng lúc nó được gửi đi, vì nó cần một khoảng thời gian để gửi đến.

Đồng hồ Lamport có thể được sử dụng để tạo thứ tự cục bộ giữa sự kiện của các tiến trình. Cho một đồng hồ logic tuân theo các quy tắc này, quan hệ sau là đúng: Nếu a→b thì C(a) < C(b), trong đó C(a) và C(b) là nhãn thời gian của hai sự kiện a và b. Để tạo thứ tự toàn cục của các sự kiện trong hệ thống phân tán, người ta kết hợp đồng hồ Lamport với số cơ chế sinh thứ tự ngẫu nhiên như số hiệu (ID) của tiến trình.

Đồng bộ hoá đồng hồ vật lý[sửa]

Mặc dù thuật toán của Lamport đưa ra thứ tự của các sự kiện một cách rõ ràng, các giá trị thời gian được gán cho các sự kiện không nhất thiết phải gần với thời gian thực tế mà chúng xảy ra. Trong một số hệ thống, ví dụ như hệ thống thời gian thực, thời gian đồng hồ thực tế rất quan trọng. Các hệ thống này cần sử dụng đồng hồ vật lý để đồng bộ hoá hoạt động.

Kể từ khi đồng hồ cơ được phát minh vào thế kỷ 17, thời gian đã được đo bằng thiên văn. Mỗi ngày, mặt trời mọc trên đường chân trời phía đông, lên độ cao tối đa trên bầu trời và đi xuống ở phía tây. Sự kiện mặt trời đạt đến điểm cao nhất trên bầu trời được gọi là sự chuyển tiếp của mặt trời. Sự kiện này xảy ra vào khoảng buổi trưa mỗi ngày. Khoảng thời gian giữa hai lần chuyển tiếp liên tiếp của mặt trời được gọi là ngày mặt trời. Vì có 24 giờ trong một ngày, mỗi giờ có 3600 giây, một giây một trời được tính chính xác là 1/86400 của một ngày mặt trời.

Vào những năm 1940, người ta nhận ra chu kỳ quay của trái đất không phải là hằng số. Trái đất đang quay chậm lại do ma sát thủy triều và lực cản của khí quyển. Dựa trên các nghiên cứu về mô hình tăng trưởng ở san hô cổ đại, các nhà địa chất hiện tin rằng 300 triệu năm trước có khoảng 400 ngày mỗi năm. Độ dài của năm, nghĩa là thời gian trái đất quay một vòng quanh mặt trời đã thay đổi, ngày đã dài hơn. Ngoài ra, những biến đổi ngắn hạn về độ dài của ngày cũng xảy ra, có lẽ do sự nhiễu loạn sâu trong lõi trái đất của sắt nóng chảy. Những tiết lộ này đã khiến các nhà thiên văn học tính toán độ dài của ngày bằng cách đo một số lượng lớn ngày và lấy giá trị trung bình trước khi chia cho 86400. Kết quả thu được gọi là giá trị trung bình của một giây mặt trời.

Với việc phát minh ra đồng hồ nguyên tử vào năm 1948, người ta có thể đo thời gian chính xác hơn nhiều, và không phụ thuộc vào sự chuyển động của trái đất, bằng cách đếm các chuyển đổi của nguyên tử Caesium 133. Các nhà vật lý đã đảm nhận công việc chấm công từ các nhà thiên văn học, và định nghĩa một giây là thời gian mà nguyên tử Caesium 133 thực hiện chính xác 9.192.631.770 lần chuyển tiếp. Sự lựa chọn 9.192.631.770 đã được thực hiện để làm cho giây nguyên tử bằng với giây mặt trời trung bình. Hiện tại, khoảng 50 phòng thí nghiệm trên khắp thế giới có đồng hồ Caesium 133. Theo định kỳ, mỗi phòng thí nghiệm thông báo cho Cục thời gian quốc tế (BIH) ở Paris biết số lần đồng hồ của họ đã tích. BIH tính trung bình những giá trị này để tạo ra Giờ nguyên tử quốc tế, viết tắt là TAI. Do đó, TAI chỉ là số tích tắc trung bình của đồng hồ Caesium 133 kể từ nửa đêm ngày 1 tháng 1 năm 1958 (thời điểm bắt đầu) chia cho 9.192.631.770.

BIH giải quyết vấn đề 86.400 giây TAI bây giờ ít hơn khoảng 3 ms so với một ngày mặt trời trung bình (vì ngày mặt trời trung bình ngày càng dài hơn) bằng cách đưa ra giây nhuận bất cứ khi nào sự khác biệt giữa TAI và thời gian mặt trời tăng lên 800 ms. Sự hiệu chỉnh này làm phát sinh một hệ thống thời gian dựa trên số giây TAI không đổi nhưng vẫn cùng pha với chuyển động của mặt trời. Nó được gọi là Thời gian phối hợp toàn cầu, được viết tắt là UTC. UTC đã thay thế tiêu chuẩn cũ, giờ chuẩn Greenwich, là thời gian thiên văn. Để cung cấp UTC cho những người cần thời gian chính xác, Viện quốc gia về Giờ chuẩn Mỹ (NIST) vận hành một đài phát thanh sóng ngắn với các thông điệp WWV từ Fort Collins, Colorado. WWV phát một xung ngắn khi bắt đầu mỗi giây UTC. Độ chính xác của WWV là khoảng ± 1 msec, nhưng do dao động khí quyển ngẫu nhiên có thể ảnh hưởng đến độ dài của đường tín hiệu, trong thực tế, độ chính xác không tốt hơn ± 10 msec. Ở Anh, trạm MSF, hoạt động từ Rugby, Warwickshire, cung cấp một dịch vụ tương tự, cũng như các trạm ở một số quốc gia khác.

Lịch sử[sửa]

Các nghiên cứu cơ bản và tiên phong về các thành phần của hệ điều hành phân tán bắt đầu từ những năm 1950. Vào giữa những năm 1970, các nghiên cứu này đã tạo ra những tiến bộ quan trọng trong tính toán phân tán. Creeper và Reaper là cặp chương trình tính toán phân tán đầu tiên được phát triển vào những năm 1970. Ethernet xuất hiện vào những năm 1970, E-mail ARPANET được phát minh vào đầu những năm 1970 là các ứng dụng phân tán quy mô lớn. Từ năm 1981, dự án phát triển hệ điều hành phân tán Amoeba được triển khai tại Đại học Vrije, Trung tâm Toán học và Khoa học Máy tính ở Amsterdam, Hà Lan. Từ 1981 đến 1988, dự án phát triển V-System được thực thi tại Đại học Standford, Mỹ. V-System là một hệ điều hành phân tán dựa trên vi nhân được thiết kế cho một cụm các máy trạm được kết nối bởi một mạng hiệu năng cao.

Những đột phá trên cung cấp một nền tảng vững chắc, ổn định cho những nỗ lực tiếp tục trong những năm 1990. Hệ điều hành phân tán Plan 9 được phát triển tại các phòng thí nghiệm Bell từ giữa những năm 1980, dựa trên các nguyên tắc thiết kế của UNIX. Phiên bản đầu tiên của Plan 9 được ra mắt vào năm 1992. Hệ điều hành phân tán Inferno, với phiên bản đầu tiên được giới thiệu năm 1996, ban đầu cũng được phát triển tại các phòng thí nghiệm Bell dựa trên các trải nghiệm của Plan 9. Phiên bản đầu tiên của hệ điều hành phân tán QNX được giới thiệu năm 1982 tại Ontario, Canada. Phiên bản gần đây nhất của QNX với hỗ trợ SDP 7.0 ra mắt vào tháng 3 năm 2017. Hệ điều hành phân tán Hamon0079OS do công ty Huawei phát triển được giới thiệu vào tháng 8 năm 2019. Nền tảng của HĐH này được thiết kế để phục vụ internet vạn vật.

Xu thế[sửa]

Hệ điều hành phân tán được ứng dụng trong nhiều lĩnh vực, ví dụ như hệ thống định vị toàn cầu, World Wide Web, hệ thống kiểm soát không lưu, hệ thống ngân hàng tự động, mạng viễn thông… Tất cả các hệ thống này đều có khả năng chịu lỗi. Nếu bất kỳ một thành phần nào bị lỗi, ứng dụng sẽ vẫn vận hành bình thường, các tác vụ của máy tính bị lỗi có thể được xử lý bởi một máy tính khác trong mạng.

Trong tương lai, hệ điều hành phân tán sẽ được đơn giản hoá thông qua các ngôn ngữ và API thiết kế dành riêng cho nó, có khả năng tự quản lý, tự phục hồi, chịu lỗi, có thể thay thế và tự nâng cấp.

Tại Việt Nam, hệ điều hành phân tán đã được sử dụng trong nhiều lĩnh vực như các ứng dụng ngân hàng số, các ứng dụng điện toán đám mây…

Tài liệu tham khảo[sửa]

  1. A.S. Tanenbaum and R. Van Renesse. Distributed operating systems. ACM Comput. Surv.17, 4 (December 1985), 419-470.
  2. LudwikCzaja, Introduction to Distributed Computer Systems: Principles and Features, Springer, 1st ed.2018 edition.
  3. Maarten van Steen, Andrew S. Tanenbaum. Distributed Systems. CreateSpace Independent Publishing Platform, 3rd Edition, 2017.
  4. Leslie Lamport. Time, Clocks, and the Ordering of Events in a Distributed System, communication of the ACM, Volume 21, Number 7, July 1978.