Công Nghệ Thông Tin, it, phầm mềm, website, web, mobile app, trí tuệ nhân tạo, blockchain, AI, machine learning - Công Nghệ Thông Tin, it, phầm mềm, website, web, mobile app, trí tuệ nhân tạo, blockchain, AI, machine learning - Công nghệ thông tin 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: ABCBC 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 Mã Vùng toàn cục Stack Heap HĐH Mã 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 threadcreate() Mã hàm threadcreate() PCBs TCBs stacks newthr...
Trang 1Tiểu trình
TH 106: Hệ Điều Hành, 03-2011
Khoa CNTT
ĐH KHTN
Trang 2Tiể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
Trang 3Đ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
Trang 4Xem lại không gian địa chỉ tiến trình
HĐH
Mã Vùng toàn cục
Stack
Heap
HĐH
Mã 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
Trang 5Đ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
Trang 6Tạo tiểu trình
thread_create()
Mã hàm thread_create()
PCBs TCBs
stacks new_thread_starts_here
PC
SP
Trang 7Context 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
Trang 8Sơ đồ các trạng thái tiểu trình
Trang 9Context 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?
Trang 10Context 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