Tải bản đầy đủ

Bài giảng hệ phân tán chương 3 Quản lý tiến trình và luồng

1

CHƯƠNG 3: QUẢN LÝ
TIẾN TRÌNH VÀ LUỒNG
TS. Trần Hải Anh


2

Vai trò của hệ điều hành trong quản lý
tiến trình
P
P
P

P

P

P
P


P
P

P

P

OS

OS

Machine

P

OS

Machine

Machine

P
P

P

P
P

P

P
P

OS

OS

Machine


Machine


Ảo hóa
3

P
P

P
P

OS
Machine A

Machine B


Nội dung
4

1. 
2. 
3. 

Tiến trình và luồng
Khái niệm ảo hóa
Di trú mã


1. Tiến trình và luồng
1.1. Khái niệm
1.2. Luồng trong hệ thống tập trung
1.3. Luồng trong hệ thống phân tán


1.1. Tiến trình và luồng
6

¨ 

Tiến trình
¤  Chương

trình đang hoạt động
¤  Đòi hỏi nhiều tài nguyên
n 

Môi trường thực hiện, không gian bộ nhớ, các thanh ghi, thời lượng
CPU

¤  Khi

chuyển đổi giữa các tiến trình cần chuyển đổi giữa các
môi trường thực hiện
¤  Trao đổi thông tin thông qua các dịch vụ hệ thống (thông
báo): An toàn, kiểm soát chặt chẽ, hiệu năng thấp
¨ 

Ví dụ:


Luồng
7

¨ 
¨ 
¨ 

¨ 
¨ 

¨ 

Là một luồng thực thi của tiến trình.
Tiến trình có nhiều luồng thực thi à Tiến trình đa luồng
Các luồng của tiến trình dùng môi trường thực hiện chung của
tiến trình: trạng thái của CPU
Trao đổi thông tin giữa các luồng thông qua các biến chia sẻ
An toàn và hợp lý của tương tác luồng do lập trình viên quyết
định
Luồng=> hiệu năng+chi phí lập trình


Virtual Memory
8


Process Memory layout
9


Program and Stack memory
10

Program memory

Stack memory


Cơ chế ánh xạ
11


12

1.2. Luồng trong các hệ thống tập
trung
¨ 

¨ 
¨ 

¨ 

¨ 

Chống treo tiến trình
khi thực hiện các thao
tác vào ra
Khai thác đa vi xử lý
Tiết kiệm tài nguyên
chuyển đổi giữa các
luồng mã
Chuyển đổi giữa các
luồng không dùng đến
các lời gọi hệ thống
Hỗ trợ việc mô đun hóa
các phần mềm


Cài đặt luồng
13

¨ 

Được quản lý bởi gói luồng (Thread package)
¤  Khởi

tạo luồng (1)
¤  Giải phóng luồng (2)
¤  Đồng bộ các luồng (3)
¨ 

(1), (2), (3) có thể thực hiện dưới chế độ NSD hoặc
nhân
¤  Chế

độ NSD: có thao tác vào ra-> block cả tiến trình
¤  Chế độ nhân: Tốn kém


Cài đặt luồng: các tiến trình nhẹ
14

¨ 

Combining kernel-level lightweight processes and user-level
threads.


LINUX triển khai các luồng
15

Không có sự phân biệt thread và process, tất cả chỉ
là task
¨  Luồng ở mức user được xây dựng theo chuẩn
POSIX (Portable Operating System Interface for
uniX)
¨  Chạy ở 2 không gian thực thi phân biệt:
¨ 

¤  User

space: sử dụng thư viện pthread
¤  Kernel: các LWPs

Ánh xạ 1-1 từ mỗi thread và 1 LWP
¨  Thay vì dùng fork(), LINUX dùng clone().
¨ 


Quản lý ID
16


Traditional UNIX system


Multithreaded Processes


Multiprocessor


1.3. Luồng trong các hệ thống phân tán
20

¨ 

Server đơn luồng
¤  Chỉ

xử lý được một yêu cầu tại một thời điểm
¤  Các yêu cầu có thể được xử lý tuần tự
¤  Các yêu cầu có thể được xử lý bởi các tiến trình khác
nhau
¤  Không đảm bảo tính trong suốt


Client và server đa luồng
21

Thread 2 makes
requests to server
Thread 1
generates
results

Input-output

Receipt &
queuing

T1
Requests
N threads
Client
Server


Server đa luồng
22

¨ 

Chức năng của server
¤  Tiếp

nhận yêu cầu
¤  Xử lý yêu cầu
¤  Trả lời yêu cầu
¨ 

Nếu server đơn luồng, các thao tác này được thực
hiện tuần tự
¤  Các

yêu cầu mới cần chờ quá trình xử lý yêu cầu hiện tại
kết thúc
¤  Lãng phí thời gian chờ đợi
¤  VD: Đăng ký dịch vụ tại điểm có 1 nhân viên phục vụ


Mô hình server dispatcher
23

¨ 

Dispatcher (điều phối viên)/worker (người xử lý)


Server đa luồng
24

workers
I/O

remote
objects

a. Thread-per-request

per-connection threads
remote
objects

b. Thread-per-connection

per-object threads
I/O

remote
objects

c. Thread-per-object


Mô hình máy trạng thái
25

Các yêu cầu từ client và xử lý được sắp hàng
¨  Tại một thời điểm server thực hiện thao tác trong
hàng
¨  Không cần đa luồng
¨  Các lời gọi xử lý là các lời gọi “không dừng”
¨ 


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×