Tải bản đầy đủ (.pdf) (23 trang)

Tiểu trình: Hệ Điều Hành ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (560.59 KB, 23 trang )

Tiểu trình
TH 106: Hệ Điều Hành, 03-2011
Khoa CNTT
ĐH KHTN
2ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Tiểu trình
Tiểu trình: stack + registers (bao gồm PC)
Nôm na: vị trí chuỗi lệnh hiện tại của chương trình và chuỗi
các phương thức đang thực hiện tạo ra chuỗi lệnh này
Ví dụ: A gọi B, B gọi C, C gọi B, B gọi C
Lúc này PC trỏ tới vị trí nào đó trong C
Stack phải chứa 5 activation records: A/B/C/B/C
3ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Đa tiểu trình
Tại sao cần tiểu trình?
Một web server phải trả lời rất nhiều yêu cầu từ nhiều trình
duyệt
Nếu chỉ có một tiểu trình, thì chỉ xử lý được một yêu cầu tại
một thời điểm
Mô hình đa tiểu trình
Mỗi tiến trình có thể có nhiều tiểu trình
Mỗi tiểu trình có stack riêng
Thanh ghi cũng dùng riêng
Tất cả tiểu trình cùng một tiến trình chia sẻ mã và heap
Các đối tượng được chia sẻ giữa các tiểu trình sẽ được cấp
phát trong vùng heap
4ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Xem lại không gian địa chỉ tiến trình
HĐH

Vùng toàn cục


Stack
Heap
HĐH

Vùng toàn cục
Stack
Heap
Stack
(a) Kô gian đchỉ 1 tiểu trình (b) Kô gian địa chỉ đa tiểu trình
5ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Đa tiểu trình (tt)
Cài đặt
Mỗi tiểu trình được mô tả trong một thread-control block (TCB)
Một TCB thông thường chứa
ID của tiểu trình
Không gian để lưu các thanh ghi
Con trỏ tới vị trí xác định trong stack
Nhận xét
Mặc dù mỗi tiểu trình có stack riêng, các tiểu trình thật ra chia sẻ không
gian địa chỉ tiến trình
 Không có sự bảo vệ các vùng nhớ riêng!
 Tiểu trình có thể ghi vào stack của tiểu trình khác
6ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Tạo tiểu trình
thread_create()
Mã hàm thread_create()
PCBs
TCBs
stacks
new_thread_starts_here

PC
SP
7ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Context Switching
Giả sử một tiến trình có nhiều tiểu trình …nhưng … giả sử máy
tính chỉ có 1 CPU… thì làm sao?
Trong thực tế, ngay khi chỉ có 1 tiểu trình trong 1 tiến trình, chúng ta
cũng phải giải quyết bài toán nhiều tiến trình …
Chúng ta phải lập lịch nhiều tiểu trình với 1 CPU
Tại một thời điểm bất kì, chỉ một tiểu trình được thực thi
Có những thời điểm nào đó, HĐH có thể dừng tiểu trình này và
cho phép tiểu trình khác thực thi
Việc chuyển thực thi từ một tiểu trình này sang tiểu trình khác
gọi là context switching
8ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Sơ đồ các trạng thái tiểu trình
9ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Context Switching (tt)
Làm sao để thực hiện một context switch?
Lưu trạng thái của tiểu trình hiện thời đang thực thi
Chép các thanh ghi đang dùng vào thread control block
Với các máy chỉ dùng thanh ghi, cần ít nhất 1 thanh ghi tạm
Trỏ tới vùng nhớ trong thread control block nơi các thanh ghi được
lưu vào
Nạp trạng thái của tiểu trình sẽ thực thi kế tiếp
Chép giá trị các thanh ghi đang dùng lúc trước trong thread control block
vào các thanh ghi
Khi nào thì phải dùng context switching?
10ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Context Switching (tt)

Khi nào xảy ra context switching?
Khi HĐH quyết định rằng một tiểu trình đã thực thi “đủ lâu” và tiểu trình
khác nên được cấp CPU
Nhớ lại làm sao HĐH lấy lại điều khiển CPU khi nó đang thực thi
trong user mode?
Khi tiểu trình thực hiện tác vụ I/O và cần dừng lại chờ xong tác vụ này
Đợi tiểu trình khác hoàn thành
Đồng bộ tiểu trình: chúng ta sẽ thảo luận về vấn đề này trong vài bài
giảng tới
11ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Mã switching được gọi như thế nào?
Tiểu trình người dùng  interrupt đồng hồ phần cứng thay đổi
giá trị PC trỏ tới mã xử lý interrupt  lưu lại trạng thái tiểu trình
 xử lý interrupt đồng hồ được gọi  vô hiệu hóa kiểm tra
interrupt  kiểm tra liệu tiểu trình hiện thời chạy “đủ chưa” 
nếu đủ, tạo asynchronous software trap (AST)  cho phép kiểm
tra interrupt  thoát khỏi xử lý interrupt  thực hiện phần mã
nguồn “return-to-user ”  kiểm tra có AST không  nếu không,
nạp lại trạng thái tiểu trình người dùng và trở lại thực thi tiểu
trình này; nếu có AST, gọi mã context switch
12ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Mã switching được gọi như thế nào? (tt)
Tiểu trình người dùng  system call cho việc I/O  trạng thái
tiểu trình được lưu  Gọi mã HĐH thực thi cho system call 
bắt đầu tác vụ I/O (gọi I/O driver)  đặt trạng thái tiểu trình
waiting  chuyển TCB từ “hàng đợi thực thi” tới “hàng đợi chờ
I/O”  gọi mã context switching
13ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Context Switching (tt)
Khi tiểu trình bị chuyển ra ngoài, điều gì xảy ra với nó?

Làm sao chúng ta tìm ra nó để nạp lại sau đó?
Đây là công việc của TCB. Hệ thông thường sẽ có:
Một hàng đợi thực thi trỏ tới TCB của các tiểu trình sẳn sàng thực thi
Mỗi thiết bị có một hàng đợi riêng, nó lưu TCB của các tiểu trình đang
chờ tác vụ I/O cho đến khi xong
Khi một tiểu trình bị chuyển ra ngoài vì interrupt, nó vẫn ở trạng thái sẳn
sàng thực thi, nên TCB của nó vẫn ở trên hàng đợi thực thi
Khi một tiểu trình bị chuyển ra ngoài vì chờ tác vụ I/O, TCB của nó được
chuyển qua hàng đợi của thiết bị đó.
14ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Ready Queue và các hàng đợi của thiết bị I/O
15ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Chuyển đổi giữa các tiểu trình khác tiến trình
Làm sao để chuyển đổi tiểu trình thuộc các tiến trình khác nhau?
Caches, TLB, bảng trang, v.v.?
Caches
Địa chỉ vật lý: không có rắc rối gì !
Địa chỉ ảo: cache phải biết nhãn process hoặc là xóa sạch cache mỗi
lần context switch
TLB (Translation Lookaside Buffer )
Mỗi entry phải có nhãn process hoặc phải dọn sạch TLB mỗi khi có
context switch
Bảng trang
Dùng một bảng con trỏ các trang (thanh ghi) phải được nạp lại khi
context switch
16ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Tiểu trình và truyền tín hiệu
Phải làm gì nếu kernel muốn gửi tín hiệu đến một tiến trình khi
mà các tiểu trình của nó đều bị block?
Khi có nhiều tiểu trình, kernel nên gửi tín hiệu đến tiểu trình

nào?
HĐH ghi vào process control block tín hiệu cần được truyền
Tín hiệu được truyền tới tiểu trình nào được phép thực thi, đó
là một phần trong việc context switch
17ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Tổ chức tiểu trình
Tiểu trình hệ thống (tiến trình nhỏ)
Kernel hiểu như nhiều chương trình đang thực thi
Kernel quản lý các tiểu trình
Tiểu trình người dùng
Là thư viện chứa mã nguồn để tạo tiểu trình, kết thúc, lập lịch
và chuyển đổi giữa các tiểu trình
Kernel thấy chỉ 1 chương trình đang thực thi và không nhận
biết đó là hành động của một tiểu trình
Có thể bị chèn vào
18ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Tiểu trình hệ thống vs. tiểu trình người dùng
Thuận lợi tiểu trình ở mức user:
Thực thi: ít tốn kém (không yêu cầu bảo vệ giữa các vùng)
Linh động: có thể lập lịch cho từng ứng dụng cụ thể
Giao tiếp: thư viện ở mức user giúp tiểu trình dễ dàng giao
tiếp với các thành phần khác
Bất thuận lợi của tiểu trình ở mức user:
Nếu 1 tiểu trình ở mức user bị block ở kernel, thì toàn bộ tiến
trình (tất cả tiểu trình của tiến trình đó) bị blocked
Không thể lợi dụng đặc tính đa tiến trình (kernel chỉ cấp 1
CPU cho 1 tiến trình)
19ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Tiểu trình hệ thống vs. tiểu trình người dùng
tiến trình

processor
Mức user
Điều phối
tiểu trình
Điều phối
tiến trình
Mức kernel
Điều phối
tiểu trình
kernel
user
processor
tiểu trình
Tiểu trình
Điều phối
tiến trình
20ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Tiểu trình hệ thống vs. tiểu trình người dùng
Không có lý do gì để ta không
có cả hai!
Hầu hết HĐH ngày nay hỗ trợ
tiểu trình mức kernel
Tiểu trình mức người dùng sẳn
có dưới dạng các thư viện liên
kết
Tiểu trình
Mức kernel
processor
Tiểu trình
mức user

Điều phối
tiểu trình
Điều phối
tiểu trình
kernel
user
Điều phối
tiến trình
21ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Tiểu trình vs. Tiến trình
Tại sao cần nhiều tiểu trình?
Tại sao chúng ta không thể dùng nhiều tiến trình để thay thế
cho việc dùng nhiều tiểu trình?
Bởi vì chúng ta cần có khả năng chia sẻ vùng nhớ (và các tài
nguyên khác) giữa các tiến trình …
Nhưng việc chia sẻ này đã có sẳn – bài giảng sau
Các tác vụ điều hành tiểu trình (tạo, kết thúc, lập lịch, v.v )
dể dàng thực hiện hơn so với tiến trình
Là bởi vì tiểu trình không cần các thao tác liên quan đến tài
nguyên phân phát cho tiến trình
Liên lạc giữa các tiểu trình thông qua chia sẻ bộ nhớ, không
cần sự can thiệp của kernel
22ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Thời gian thực thi tiểu trình/tiến trình
Tác vụ Tiểu trình
mức user
(s)
Tiểu trình
mức kernel
(s)

Tiến trình
(s)
Null fork 34 948 11,300
Signal-wait 37 441 1,840
23ĐH KHTN TpHCM TH 106: Hệ Điều Hành
Tuần tới
Điều phối
Đọc Silberschatz (CPU Scheduling)

×