1. Trang chủ
  2. » Công Nghệ Thông Tin

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

69 966 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 69
Dung lượng 6,63 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

CHƯƠNG 3: QUẢN LÝ TIẾN TRÌNH VÀ LUỒNG

TS Trần Hải Anh

1

Trang 2

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

Machine

OS

P P

P P

Machine

OS

P P

P P

Machine

OS

P P

P P

Machine

OS

P P

P P

Machine

Trang 3

Ảo hóa

3

OS

P P

P P

Trang 5

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 Tiến trình và luồng

Trang 6

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ụ:

Trang 7

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

Trang 8

Virtual Memory

8

Trang 9

Process Memory layout

9

Trang 10

Program and Stack memory

10

Trang 11

Cơ chế ánh xạ

11

Trang 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

Trang 13

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)

Trang 14

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

14

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

Trang 15

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()

Trang 16

Quản lý ID

16

Trang 17

Traditional UNIX system

Trang 18

Multithreaded Processes

Trang 19

Multiprocessor

Trang 20

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

Trang 21

Client và server đa luồng

Trang 22

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ụ

Trang 23

Mô hình server dispatcher

23

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

Trang 24

Server đa luồng

24

remote

workers

Trang 25

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”

Trang 26

Servers đa luồng

26

Đa luồng Song song, các lời gọi dừng

Đơn luồng Không song song, các lời gọi dừng Máy trạng thái hữu hạn Song song, các lời gọi không dừng

Trang 27

Client đa luồng

27

¨   Tách biệt giao diện người sử dụng và xử lý

¨   Giải quyết vấn đề các thao tác chờ đợi lẫn nhau

¨   Tăng tốc độ khi làm việc với nhiều server khác nhau

¨   Che giấu các chi tiết cài đặt

¨   Ví dụ: Tải trang web

Trang 28

Multithreading in Java

28

Trang 29

¨   Tạo thread có thể thực hiện bằng 2 cách:

¤   Kế thừa lớp Thread

¤   Triển khai interface Runnable

¨   Các phương thức

¤   getName(): It is used for Obtaining a thread’s name

¤   getPriority(): Obtain a thread’s priority

¤   isAlive(): Determine if a thread is still running

¤   join(): Wait for a thread to terminate

¤   run(): Entry point for the thread

¤   sleep(): suspend a thread for a period of time

¤   start(): start a thread by calling its run() method

Trang 30

Multithreading in Java

30

Trang 31

Multithreading in Java

31

Trang 32

2.1 Vai trò của Ảo hóa 2.2 Kiến trúc của máy ảo

2 Ảo hóa

Trang 33

2.1 Vai trò của ảo hóa

¨   Mạng máy tính phát triển => hệ thống máy/ứng dụng không đồng nhất, rất đa dạng => nhu cầu chia sẻ giữa các máy trong hệ thống => mỗi ứng dụng chạy trên

máy ảo của mình, và tất cả lại chạy trên 1 nền tảng

chung

Trang 34

Khái niệm ảo hóa

34

Trang 35

2.2 Các kiến trúc máy ảo

Trang 36

Kiến trúc mô phỏng hoàn toàn (JVM)

36

Trang 37

Kiến trúc kiểm soát

37

Trang 38

Networked User Interfaces Phần mềm client phục vụ trong suốt phân tán

3 Clients

38

Trang 39

3.1 Networked User Interfaces

39

Trang 40

Hệ thống X Window

40

Trang 41

Thin-client Network Computing

41

¨   Phân biệt 2 khái niệm: X-client và X-server

¨   Các ứng dụng điều khiển màn hình bằng các lệnh chuyên dụng (cung ứng bởi X)

¨   Tách biệt về logic ứng dụng và các câu lệnh giao tiếp người dùng => Không thực hiện được

¨   Giải pháp: Nén thông điệp

Trang 42

VD: 1 chương trình X-client sử dụng Xlib

42

#include <X11/Xlib.h> // Every Xlib program must include this

#include <assert.h> // I include this to test return values the lazy way

#include <unistd.h> // So we got the profile for 10 seconds

#define NIL (0) // A name for the void pointer

main()

{

// Open the display

Display *dpy = XOpenDisplay(NIL);

assert(dpy);

// Get some colors

int blackColor = BlackPixel(dpy, DefaultScreen(dpy));

int whiteColor = WhitePixel(dpy, DefaultScreen(dpy));

// Create the window

Window w = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0, 0,

200, 100, 0, blackColor, blackColor);

Trang 43

VD: 1 chương trình X-client sử dụng Xlib

Trang 44

VD: 1 chương trình X-client sử dụng Xlib

Trang 45

3.2 Phần mềm client phục vụ trong suốt phân tán

45

v Trong suốt phân tán:

v Trong suốt truy cập

v Trong suốt di trú

v Trong suốt sao lưu

v Trong suốt che giấu lỗi

Trang 46

Các vấn đề thiết kế server Server clusters

4 Servers

46

Trang 49

Xây dựng dịch vụ cho inetd

49

¨   Viết 1 chương trình errorLogger.c

Trang 50

Xây dựng dịch vụ cho inetd

50

¨   Điền thêm vào /etc/services

errorLogger 9999/udp

¨   Điền thêm vào /etc/inetd.conf

errorLogger dgram udp wait root /usr/local/ bin/errlogd errlogd /tmp/logfile.txt

Trang 51

4.2 Server clusters

51

Trang 52

Chọn lựa server

52

TCP handoff

Trang 53

Server phân tán

53

Trang 55

Vì sao phải di trú mã

55

¨   Tăng hiệu năng

¤   Mã server cho client

¤   Mã client cho server

¤   Thực hiện song song một code trên nhiều máy

¨   Tính mềm dẻo

¤   Tải stub động

¤   Cấu hình động hệ thống

Trang 56

Vì sao phải di trú mã

56

Trang 57

Mô hình di trú mã

57

¨   Alternatives for code migration

Trang 59

Di trú mã và tài nguyên cục bộ

59

¨   Thao tác cần tiến hành khi dịch chuyển tài nguyên

Trang 60

Di trú mã trong các hệ thống không đồng nhất

60

-   Kiến trúc các máy tính không đồng nhất gây khó

khăn cho việc thực hiện mã

-   Dịch lại mã

-   Thông dịch

-   Biên dịch

-   Chuyển đổi môi trường thực hiện

-   Thực hiện trong từng đoạn chương trình tường minh: code, …

-   Sử dụng 1 ngôn ngữ: Pascal, kịch bản, Java

-   Giới hạn trong một ngôn ngữ

Trang 61

Mobile Agent

61

¨   ĐN: những thành phần phần mềm (mã chương trình,

dữ liệu và trạng thái hoạt động) có thể tự di chuyển từ

nơi này sang nơi khác

¨   Kích thước nhỏ

¨   Di trú

¨   Liên lạc, nhân bản, nhập lại, tổng hợp tính toán

¨   Khả năng xác định và dùng những tài nguyên trên các máy tính đang chứa nó

¨   Một số hệ thống Mobile Agent: Aglets, Voyager, Mole, Zeus

Trang 62

Pull code, Push code & Autonomous code

62

Request code

code code

Trang 63

Pull code, Push code & Autonomous code (2)

63

code code

Node B Node A

Remote exec

Push code

Trang 64

Pull code, Push code & Autonomous code (3)

64

code code

Node B Node A

migrate execute

code

execute

Autonomous code

Trang 66

¨   Di trú được agent và trạng thái của nó

¨   Cơ chế cho các agent trong host giao tiếp được

¨   Có thể mở rộng được

Trang 68

Môi trường ứng dụng

68

¨   Thu thập dữ liệu phân tán

¨   Theo dõi và thông báo tin cập nhật

¨   Giám sát và phân tán thông tin

¨   Xử lý song song

¨   Thương mại điện tử

¨   Quản trị hệ thống mạng

¨   Hỗ trợ các thiết bị di động

Trang 69

Di trú mã trong các hệ thống không đồng nhất

69

3-15

Ngày đăng: 19/12/2016, 18:45

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w