1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

23 759 5

Đ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 23
Dung lượng 560,59 KB

Nội dung

Tiểu trìnhTiể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

Trang 1

Tiểu trình

TH 106: Hệ Điều Hành, 03-2011

Khoa CNTT

ĐH KHTN

Trang 2

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

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

Trang 4

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

HeapStack

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 6

Tạo tiểu trình

thread_create()

Mã hàm thread_create()

PCBs TCBs

stacks new_thread_starts_here

PC

SP

Trang 7

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

Trang 8

Sơ đồ các trạng thái tiểu trình

Trang 9

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?

Trang 10

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

Trang 11

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

Trang 12

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

Trang 13

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ị đó.

Trang 14

Ready Queue và các hàng đợi của thiết bị I/O

Trang 15

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

Trang 16

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

Trang 17

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

Trang 18

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

Trang 19

Tiểu trình hệ thống vs tiểu trình người dùng

kernel user

processor

tiểu trình

Tiểu trình

Điều phối tiến trình

Trang 20

Tiểu trình hệ thống vs tiểu trình người dùng

Đ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

Trang 21

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

Trang 22

Thời gian thực thi tiểu trình/tiến trình

mức user (s)

Tiểu trình mức kernel (s)

Tiến trình (s)

Trang 23

Tuần tới

Điều phối

Đọc Silberschatz (CPU Scheduling)

Ngày đăng: 13/07/2014, 14:21

HÌNH ẢNH LIÊN QUAN

Sơ đồ các trạng thái tiểu trình - Tiểu trình: Hệ Điều Hành ppt
Sơ đồ c ác trạng thái tiểu trình (Trang 8)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w