Thực hiện từ xa

Một phần của tài liệu Cơ bản về hệ điều hành (Trang 141 - 142)

Thực hiện từ xa khác dịch vụ từ xa ở chỗ: một thao tác từ xa (remote operation) đ−ợc đề ra và kiến tạo bởi chính Khách trong khi đó tại mức dịch vụ từ xa, Khách chỉ đề ra thao tác, còn các thao tác này đã đ−ợc tạo sẵn trên phục vụ. Một thông điệp gửi đi từ Khách chính là ch−ơng trình của Khách dùng để chạy trên máy chủ. Một máy chủ có thể là một hệ thống có tài nguyên đặc biệt hoặc đơn giản đó là bất kỳ một hệ thống nào dùng cho mục đích chia xẻ công việc. Hệ thống có tài nguyên đặc biệt chính là tr−ờng hợp chung của dịch vụ từ xa. Phần còn lại chính là mô hình xâu-bộ xử lý dùng cho những hoạt động phân tán (Thực hiện từ xa) hoặc định vị động các bài toán (dynamic

task placement).

Sự khác biệt lớn nhất giữa dịch vụ từ xa và thực hiện từ xa là môi tr−ờng hoạt động. Do mục đích của dịch vụ từ xa là truy cập các tài nguyên ở xa, vì vậy, mọi điều cần biết về các QT xử lý từ xa đều nằm ở máy chủ. Trái lại, với thực hiện từ xa, các QT xử lý xa chứa đựng các thông tin về hệ thống gốc. Các máy chủ chỉ đơn giản làm nhiệm vụ giảm nhẹ công việc tính toán. Độ phức tạp của việc thực thi các Thực hiện từ xa tăng lên đáng kể khi nhiều QT ở xa có ảnh h−ởng lẫn nhau đ−ợc tạo ra đồng thời. Các vấn đề nảy sinh là:

Thuật toán phân chia công việc Đơn vị độc lập

Tính không đồng nhất của hệ thống Bảo mật và an toàn.

Để đơn giản hoá, ta giả sử rằng một dịch vụ QT tồn tại trên mọi máy. Dịch vụ QT có trách nhiệm l−u giữ những thông tin về công việc, thoả thuận với máy chủ, gọi các thao tác từ xa, tạo lập các QT nền để kết nối Khách và phục vụ. Thực hiện từ xa có thể đ−ợc khởi x−ớng một cách rõ ràng bởi một QT (có thể hoàn toàn từ một QT xử lý trên phục vụ QT địa ph−ơng. Vì vậy, mối liên hệ giữa các QT có thể là quan hệ cha – con hoặc quan hệ không liên kết (disjont relation ship or noninteracting). Trong cả 2 tr−ờng hợp, công việc đầu tiên vẫn là chọn máy chủ ở xa. Tuỳ theo các QT trên máy

chủ mà thuật toán tạo lập từ trạm gửi hoặc thuật toán tạo lập từ trạm nhận sẽ đ−ợc áp dụng. Trong thực tế, mỗi QT xử lý l−u giữ một danh sách các máy chủ đã đăng ký và đang sẵn sàng đảm nhận một thực hiện từ xa. QT đăng ký/huỷ bỏ thực hiện thông qua việc quảng bá. QT lựa chọn phục vụ đ−ợc thực hiện thông qua một QT môi giới tập trung. Sau khi chọn trạm xa, QT th−ơng l−ợng bắt đầu. Phục vụ QT Khách thông báo cho phục vụ QT tại trạm xa yêu cầu về các tài nguyên. Nếu các tài nguyên yêu cầu chấp nhận và Khách đ−ợc xác nhận, phục vụ sẽ cho phép thực thi Thực hiện từ xa. Việc truyền mã ch−ơng trình đ−ợc thực hiện, sau đó phục vụ tạo lập các QT từ xa và tạo lập nền. Cuối cùng, Khách khởi động QT đã đ−ợc phân chia cho trạm xa đó.

Tính độc lập định vị trong thực hiện từ xa có đòi hỏi cao hơn so với định h−ớng lại vào/ra trong dịch vụ từ xa. Các QT tạo lập bởi Thực hiện từ xa đòi hỏi sự phối hợp để hoàn thành công việc chung. Vì thế càn cung cấp cho mỗi QT một thông tin tổng thể cho dù chúng đều đang chạy trên các máy đơn. Mỗi QT xa có một đại diện nằm trên máy chủ đầu tiên. Quan hệ cha/con đ−ợc thiết lập. Mọi kỹ thuật giao tiếp đa xử lý đ−ợc thực hiện trong suốt đinh vị. Các file hệ thống của máy chủ đầu tiên th−ờng xuyên cung cấp thông tin tổng thể cho các QT.

Thông th−ờng, thực hiện từ xa thực hiện trên một môi tr−ờng đồng nhất trong đó các máy tính t−ơng thích cả về phần cứng cũng nh− phần mềm. Khi một Thực hiện từ xa đ−ợc gọi trên một máy chủ không t−ơng thích, ch−ơng trình cần phản linh dịch lại, và phí tổn nhiều khi là quá cao. Một giải pháp cho vấn đề này là sử dụng ngôn ngữ trung gian độc lập (canonical machine-independent intermediate language) để lập trình từ xa, ví dụ nh− Java. Ch−ơng trình ghi trên Java đ−ợc linh dịch thành bộ mã độc lập. Bộ mã này có thể linh dịch trên mọi máy chủ có trang bị bộ dịch mã bytecodes. Các đối t−ợng trên mạng đ−ợc đánh địa chỉ duy nhất trong ch−ơng trình Java thông qua bộ định vị tài nguyên tổng thể. Cùng với vấn đề mã t−ơng thích, việc trao đổi dữ liệu giữa các vùng không đồng nhất cũng cần phải giải quyết, thông tin cần đ−ợc chuyển đổi. Một lần nữa, việc sử dụng dữ liệu tổng thể (ví dụ, XDR_external data representation) cần đ−ợc tích hợp vào các ph−ơng tiện cơ bản của Thực hiện từ xa.

Tuy nhiên, Thực hiện từ xa có hai mặt của nó. Nó có đầy đủ sức mạnh nh−ng lại đem lại sự lạm dụng hệ thống. Một mã ch−ơng trình lạ có thể làm hại chính ng−ời dùng. Vì thế, trên quan điểm về bảo mật và an toàn, sẽ là đáng tin cậy hơn khi chỉ chấp nhận duy nhất các thực hiện từ xa có mã gốc hoặc bộ mã trung gian. Ngôn ngữ dùng để lập trình một thực hiện từ xa nên đ−ợc giới hạn để loại trừ các khả năng xấu có thể xảy ra (ví dụ: con trỏ và đa thừa kế (pointer & multiple inheritance). Trong tr−ờng hợp một bộ mã trung gian đ−ợc sử dụng, ta bắt buộc phải kiểm tra để đảm bảo chắc chắn mã này đ−ợc sinh ra từ một ch−ơng trình nguồn thực sự. Kiểm tra tham số trong khi chạy, kiểm tra tràn Stack cũng rất cần thiết để bảo vệ sự toàn vẹn của các trạm xa. Do đó, vấn đề bảo mật và an toàn cho các Thực hiện từ xa của hệ thống phân tán vẫn là chủ đề đang đ−ợc nghiên cứu.

Một phần của tài liệu Cơ bản về hệ điều hành (Trang 141 - 142)