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 1CHƯƠNG 3: QUẢN LÝ TIẾN TRÌNH VÀ LUỒNG
TS Trần Hải Anh
1
Trang 2Vai 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 51.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 61.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 7Luồ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 8Virtual Memory
8
Trang 9Process Memory layout
9
Trang 10Program and Stack memory
10
Trang 11Cơ chế ánh xạ
11
Trang 121.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 13Cà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 14Cài đặt luồng: các tiến trình nhẹ
14
¨ Combining kernel-level lightweight processes and user-level threads
Trang 15LINUX 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 16Quản lý ID
16
Trang 17Traditional UNIX system
Trang 18Multithreaded Processes
Trang 19Multiprocessor
Trang 201.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 21Client và server đa luồng
Trang 22Server đ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 23Mô hình server dispatcher
23
¨ Dispatcher (điều phối viên)/worker (người xử lý)
Trang 24Server đa luồng
24
remote
workers
Trang 25Mô 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 26Servers đ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 27Client đ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 28Multithreading 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 30Multithreading in Java
30
Trang 31Multithreading in Java
31
Trang 322.1 Vai trò của Ảo hóa 2.2 Kiến trúc của máy ảo
2 Ảo hóa
Trang 332.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 34Khái niệm ảo hóa
34
Trang 352.2 Các kiến trúc máy ảo
Trang 36Kiến trúc mô phỏng hoàn toàn (JVM)
36
Trang 37Kiến trúc kiểm soát
37
Trang 38Networked User Interfaces Phần mềm client phục vụ trong suốt phân tán
3 Clients
38
Trang 393.1 Networked User Interfaces
39
Trang 40Hệ thống X Window
40
Trang 41Thin-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 42VD: 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 43VD: 1 chương trình X-client sử dụng Xlib
Trang 44VD: 1 chương trình X-client sử dụng Xlib
Trang 453.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 46Các vấn đề thiết kế server Server clusters
4 Servers
46
Trang 49Xây dựng dịch vụ cho inetd
49
¨ Viết 1 chương trình errorLogger.c
Trang 50Xâ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 514.2 Server clusters
51
Trang 52Chọn lựa server
52
TCP handoff
Trang 53Server phân tán
53
Trang 55Vì 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 56Vì sao phải di trú mã
56
Trang 57Mô hình di trú mã
57
¨ Alternatives for code migration
Trang 59Di 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 60Di 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 61Mobile 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 62Pull code, Push code & Autonomous code
62
Request code
code code
Trang 63Pull code, Push code & Autonomous code (2)
63
code code
Node B Node A
Remote exec
Push code
Trang 64Pull 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 68Mô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 69Di trú mã trong các hệ thống không đồng nhất
69
3-15