Trong vấn đề thực hiện từ xa nêu ở trên, một thao tác khi đã bắt đầu sẽ tồn tại trên trạm cho đến khi hoàn thành. Chúng ta có thể mở rộng mô hình chia xẻ tải cho phép một Thực hiện từ xa có thể giành quyền chuyển sang một trạm khác. Nh− vậy, một QT có thể di chuyển linh hoạt từ trạm này tới trạm khác. Sự di chuyển các QT là một chủ đề rất hấp dẫn. Một hệ thống với năng lực trong suốt di trú là thành quả cuối cùng của xử lý phân tán.
Cũng giống nh− Thực hiện từ xa, một chức năng di chuyển QT đòi hỏi phải định vị và th−ơng l−ợng đ−ợc với 1 trạm xa, chuyển nh−ợng mã, khởi động hoạt động. Và khi
một QT đ−ợc di chuyển, các trạng thái của nó cũng phải chuyển kem theo. Trạng thái của một QT trong hệ phân tán bao gồm 2 phần: trạng thái tính toán và trạng thái truyền thông. Trạng thái tính toán là những thông tin cần thiết để l−u và thiết lập lại một QT trên một trạm xa. Trạng thái truyền thônglà tình trạng của các mối liên kết và các thông điệp quá cảnh (các thông điệp đang tạm thời l−u giữ chờ chuyển tiếp). Việc chuyển nh−ợng trạng thái kết nối là một vấn đề mới trong thực thi việc di chuyển QT.
Định h−ớng lại liên kết và chuyển phát thông điệp
Các QT dùng các liên kết truyền thông cho mục đích liên lạc giữa các QT. Chúng đ−ợc thực hiện thông qua bảng liên kết (link table) chứa trong nhân. Bảng liên kết chứa các con trỏ trỏ tới điểm kết nối cuối (communication endpoints) của các QT xử lý khác liên quan đến nó. Khi di chuyển một QT, bảng liên kết (của QT có mối liên hệ với QT đ−ợc di chuyển) cần đ−ợc cập nhật lại để giữ nguyên đ−ợc các mối liên kết đã có. Rất nhiều giải pháp cho máy tính đ−ợc tìm thấy trong đời sống hàng ngày. Việc chuyển h−ớng liên kết cũng giống nh− việc chuyển địa chỉ khi ta thay đổi nơi sinh sống. Thông th−ờng, ta sẽ thông báo địa chỉ mới cho các bạn thân tr−ớc khi di chuyển và cho những ng−ời còn lại sau khi chuyển. Cũng với ph−ơng thức nh− vậy, việc chuyển h−ớng liên kết đ−ợc thực hiện nh− 1 trong những công đoạn của việc di chuyển QT, tr−ớc hoặc sau khi chuyển các ngữ cảnh, nh− đ−ợc trình bày trên hình 5.12. Đầu tiên QT di chuyển sẽ ng−ng lại (subpended or frozen) ngay sau khi lựa chọn và th−ơng l−ợng đ−ợc với một trạm xa. Và khi trạm xa đã sẵn sàng, công việc chính tiếp theo là chuyển giao hiện trạng và ngữ cảnh của ch−ơng trình (chuyển bản mã ch−ơng trình) tới trạm xa tr−ớc khi công việc đ−ợc thực hiện lại tại đây. Việc chuyển h−ớng liên kết có thể đ−ợc thực hiện bằng cách gửi một yêu cầu cập nhật liên kết cho các QT có liên
quan. Thời gian cho cập nhật liên kết ảnh h−ởng đến việc các thông điệp gửi đến trong QT di chuyển đ−ợc chuyển tiếp nh− thế nào. Những thông điệp gửi đến tr−ớc khi cập nhật liên kết đ−ợc l−u giữ, có thể đ−ợc chuyển đồng thời với mã nguồn (hoặc chuyển muộn hơn thông qua nhân nguồn (source kernel)-phần ch−ơng trình cốt yếu còn lại ở
trạm cũ. Sau khi cập nhật liên kết, các thông điệp phải đếm tr−ớc khi ch−ơng trình hoạt động trở lại trên trạm mới. Chúng đ−ợc chứa trong bufers bởi nhân đích (destintation
kernel) –phần ch−ơng trình cốt yếu nằm trên trạm mới. Thực hiện cập nhật liên kết
sớm sẽ giảm bớt công việc thừa do phải l−u thông điệp tại nhân nguồn. Một cách lý t−ởng, mọi thứ còn lại tại trạm gốc sau QT di chuyển là nhỏ nhất và đ−ợc dọn gọn nhanh nhất có thể. Ng−ợc lại, nó sẽ làm hỏng mục đích giảm nhẹ công việc.
TĐ buffer hóa bởi nhân
đích định vị kết nối thực hiện lại hoãn thực hiện chuyển trạn thái và ngữ cảnh
Hình 5.12. Định h−ớng lại kết nối và chuyển tiếp TĐ TĐ buffer
hóa bởi nhân nguồn
thời gian đông cứng
Tuy nhiên, ngay cả khi việc cập nhật diễn ra nhanh chóng, sau khi QT đ−ợc di chuyển, các thông điệp vẫn có thể đến trạm cũ do sự trễ trên mạng hoặc do nơi gửi không biết gì về việc di chuyển. Để không mất thông tin, nhân nguồn cần phải tiếp tục chuyển những thông điệp tới QT đã đ−ợc di chuyển. Theo lý thuyết, quãng thời gian này là không xác định. Trên thực tế, ta cần đặt ra một giới hạn giống nh− hạn gửi th− trên b−u điện. Trong khi ch−a hết hạn, các thông điệp đ−ợc chuyển giao cho nhân đích. Để giảm bớt sự truyền không trực tiếp, nhân nguồn sẽ thông tin cho nơi gửi vị trí mới của QT. Nh−ng việc thông báo này chỉ thực hiện đ−ợc khi nhân nguồn biết đ−ợc thông tin về nơi gửi. Những thông điệp đến sau thời gian cho phép sẽ bị bỏ qua và coi nh− thất lạc. Vì vậy, ch−ơng trình ứng dụng phải có trách nhiệm xử lý thông tin bị thất lạc.
Chuyển giao ngữ cảnh và trạng thái
Thời gian từ khi dừng ch−ơng trình đến khi tái hoạt động của một QT gọi là thời gian đông cứng. Đó là cái giá phải trả cho việc di chuyển các QT. Để giảm bớt phí tổn, các QT chuyển ngữ cảnh (context transfer), chuyển h−ớng liên kết (link redirection), chuyển phát thông điệp cần phải xử lý đồng thời. Trong thực tế, việc chuyển h−ớng liên kết và chuyển phát thông điệp có thể đợi khi QT đ−ợc tái hoạt động ở địa điểm mới. Điều kiện duy nhất cần thiết cho một QT có thể định danh hoạt động ở địa điểm mới là sự giao giao tình trạng hoạt động và một vài mã khởi tạo. Nh− vậy, để giảm bớt thời gian đông cứng, điểm tái hoạt động (resume execution) của QT trên hình 5.12 cần đ−ợc đẩy lùi và gối lên QT chuyển ngữ cảnh. Nếu bản mã lớn, QT chuyển có thể đ−ợc thực hiện theo gói các khối hoặc theo trang. Mã khởi tạo đ−ợc chuyển tới, thậm chí tr−ớc khi QT di chuyển đ−ợc hoàn thành. Những khối mã khác có thể đ−ợc copy theo chỉ dẫn: giống nh− hệ thống đòi hỏi trang. Mặc dù giảm đ−ợc đáng kể thời gian đông cứng, nh−ng ph−ơng pháp lại phụ thuộc vào việc tính toán trên trạm nguồn. Tuy nhiên, ph−ơng pháp này tỏ ra rất phù hợp với hệ thống chia xẻ bộ nhớ phân tán đ−ợc nói tới ở ch−ơng 7. Một hệ thống chia xẻ bộ nhớ phân tán giả lập một bộ nhớ logic chung dựa trên các modul bộ nhớ vật lý phân tán. Vị trí của các khối bộ nhớ vật lý, đ−ợc bản đồ hoá thành không gian địa chỉ nhớ logic của các QT, là trong suốt đối với các QT. Trong hệ thống nh− vậy, chỉ có thông tin trạng thái là cần chuyển giao. Việc chuyển giao ngữ cảnh là không cần thiết. Nó đ−ợc ẩn giấu trong các kỹ thuật cơ sở làm nhiệm vụ chia sẻ bộ nhớ phân tán. Việc quyết định khi nào các khối, do QT đòi hỏi, đ−ợc copy (thậm chí định danh lại) là trong suốt đối với QT. Những phụ thuộc vô ích không còn nữa. Vì vậy, nó nâng cao tốc độ truyền thông tin dẫn tới đẩy mạnh tốc độ ch−ơng trình.