Bài giảng hệ điều hành chương 3 thread new

24 460 0
Bài giảng hệ điều hành chương 3 thread new

Đ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

Bài giảng hệ điều hành chương 3 thread new Bài giảng hệ điều hành chương 3 thread new Bài giảng hệ điều hành chương 3 thread new Bài giảng hệ điều hành chương 3 thread new Bài giảng hệ điều hành chương 3 thread new Bài giảng hệ điều hành chương 3 thread new

Thread  Khái niệm tổng quan  Các mô hình multithread  Pthread (POSIX thread) Xem xét lại khái niệm trình  Nhìn lại phân tích khái niệm trình truyền thống: trình gồm ● Không gian nhớ / đòa  chứa text (code), data, heap ● Một luồng thực thi (single thread of execution)  program counter  register  stack ● Các tài nguyên khác (các open file, trình con,…) Mở rộng khái niệm trình  Nhìn lại ‘cooperating processes’ ● Web server tạo process cho client để phục vụ yêu cầu trang web, hình ảnh, âm thanh…  Tạo process tốn thời gian tài nguyên  Mở rộng khái niệm trình truyền thống cách thực nhiều luồng thực thi môi trường trình Mở rộng khái niệm trình  Quá trình gồm ● Không gian đòa ● 2’ Một hay nhiều luồng thực thi, luồng thực thi (thread) có riêng  program counter  register  stack ● Các tài nguyên khác (các open file, trình con,…) Quá trình multithreaded  Khi trình khởi đầu có main (hay initial) thread thực thi ● Main thread tạo thread khác   Các thread process chia sẻ code, data tài nguyên khác (các file mở, ) process Quá trình đa luồng (multithreaded process) trình có nhiều luồng Sử dụng thread formatting backup mouse Trình soạn thảo văn với ba thread Các trường tiêu biểu PCB Tanenbaum Process & thread information Per process items Address space Open files Child processes Signals & handlers Accounting info Global variables Per thread items Per thread items Per thread items Program counter Registers Stack & stack pointer State Program counter Registers Stack & stack pointer State Program counter Registers Stack & stack pointer State Quá trình có ba thread Chia sẻ CPU thread (1/2) time CPU ba trình single-threaded Chia sẻ CPU thread (2/2) time CPU hai trình multithreaded 10 Ví dụ chương trình sử dụng Pthread #include void* thread1(){ int i; for (i = 0; i < 10; i++){ printf(“Thread 1\n”); sleep(1); } SP1 } void* thread2(){ SP2 int i; for (i = 0; i < 10; i++){ printf(“Thread 2\n”); sleep(1); } int main(){ pthread_t th1, th2; pthread_create(&th1, NULL, thread1, NULL); pthread_create(&th2, NULL, thread2, NULL); sleep(20); return 0; } Stack Heap thread1 stack thread2 stack Data PC1 Text PC2 Sơ đồ nhớ Chương trình chạy có thread? 11 Ưu điểm thread  Tính đáp ứng cao cho ứng dụng tương tác  Chia sẻ tài nguyên thread: vd memory  Tiết kiệm chi phí hệ thống ● Chi phí tạo/quản lý thread nhỏ so với trình ● Chi phí chuyển ngữ cảnh thread nhỏ so với trình  Tận dụng đa xử lý (multiprocessor) ● Mỗi thread chạy processor riêng, tăng mức độ song song chương trình 12 User thread (1/4)  Một thư viện thread (thread library, run-time system) thực user space để hổ trợ tác vụ lên thread ● Thư viện thread cung cấp hàm khởi tạo, đònh thời quản lý thread  thread_create  thread_exit  thread_join  thread_yield ● Thư viện thread dùng Thread Control Block (TCB) để lưu thông tin user thread (program counter, register, stack) 13 User thread (2/4)  Cấu trúc liệu memory layout để thực user thread TCBs D Feitelson 14 User thread (3/4)  Kernel có mặt user thread ● Kernel biết PCB trình  Ví dụ thư viện user thread ● POSIX Pthread 15 User thread (4/4)  Vấn đề: hệ điều hành cấp phát PCB cho process ( main/initial thread) ● Blocking problem: Khi thread trở nên blocked thread khác process không tiến triển user space thread library thread library thread library PCB PCB PCB kernel space 16 Kernel thread (1/3)  Khi kỹ thuật multithreading hệ điều hành trực tiếp hỗ trợ ● Kernel quản lý process thread – kernel thread ● Kernel thực việc đònh thời CPU cho thread trình 17 Kernel thread (2/3)  Khi multithreading hỗ trợ kernel ● Khởi tạo quản lý thread chậm so với user thread system call overhead chuyển user mode  kernel mode ● Tận dụng lợi kiến trúc multiprocessor ● Dù thread bò blocked, thread khác trình tiến triển  Một số hệ thống multithreading ● Windows 9x/NT/200x ● Solaris ● Linux 18 Kernel thread (3/3)  Cấu trúc liệu memory layout để thực kernel thread TCBs D Feitelson 19 Các mô hình thực thread  Để thống ý niệm ‘user thread’ ‘kernel thread’ trình bày, ta dùng mô hình ‘X-to-X’ sau: ● Khái niệm ‘user(-level) multithreading’ dùng để multithreading user space ● User(-level) multithreading thực theo mô hình sau  Mô hình many-to-one – tương ứng với ‘user thread’ cũ  Mô hình one-to-one – tương ứng với ‘kernel thread’ cũ  Mô hình many-to-many 20 Mô hình many-to-one  Nhiều user(-level) thread “chia sẻ” PCB để thực thi ● Việc quản lý thread thực thông qua hàm thread library gọi user level ● Blocking problem: Khi thread trở nên blocked thread khác process không tiến triển  Có thể thực hầu hết hệ điều hành user space thread library TCB TCB TCB PCB kernel space 21 Mô hình one-to-one  Mỗi user thread hệ điều hành quản lý thông qua kernel TCB riêng user space ● Hệ điều hành phải cấp phát kernel TCB để tạo user thread   Hệ điều hành phải cung cấp nhiều kernel TCB cho trình Ví dụ: Windows NT/2000 PCB kernel space TCB TCB TCB 22 Mô hình many-to-many   Gọi ‘many-to-few’ Nhiều user-level thread phân chia thực thi (multiplexed) thông qua số kernel TCB trình ● Kết hợp ưu điểm mô hình many-to-one one-to-one  Ví dụ user space thread library kernel space PCB TCB TCB ● Solaris ● Windows NT/2000 với package ThreadFiber 23 Pthread     Chuẩn POSIX (IEEE 1003.1c) đặc tả API cho thủ tục tạo thread đồng thread Phổ biến hệ thống UNIX/Linux Là thư viện hỗ trợ user-level thread Biên dòch thực thi chương trình multithreaded C Linux $ gcc source_file.c -lpthread –o output_file $ /output_file 24 [...]... blocked thì mọi thread khác của process sẽ không tiến triển được user space thread library thread library thread library PCB PCB PCB kernel space 16 Kernel thread (1 /3)  Khi kỹ thuật multithreading được hệ điều hành trực tiếp hỗ trợ ● Kernel quản lý cả process và các thread – kernel thread ● Kernel thực hiện việc đònh thời CPU cho các thread của quá trình 17 Kernel thread (2 /3)  Khi multithreading được... stack) 13 User thread (2/4)  Cấu trúc dữ liệu và memory layout để hiện thực user thread TCBs D Feitelson 14 User thread (3/ 4)  Kernel không biết sự có mặt của user thread ● Kernel chỉ biết PCB của quá trình  Ví dụ thư viện user thread ● POSIX Pthread 15 User thread (4/4)  Vấn đề: hệ điều hành cấp phát duy nhất một PCB cho mỗi process ( main/initial thread) ● Blocking problem: Khi một thread trở... mức độ song song của chương trình 12 User thread (1/4)  Một thư viện thread (thread library, run-time system) được hiện thực trong user space để hổ trợ các tác vụ lên thread ● Thư viện thread cung cấp các hàm khởi tạo, đònh thời và quản lý thread như  thread_ create  thread_ exit  thread_ join  thread_ yield ● Thư viện thread dùng Thread Control Block (TCB) để lưu thông tin về user thread (program counter,...Ví dụ chương trình sử dụng Pthread #include void* thread1 (){ int i; for (i = 0; i < 10; i++){ printf( Thread 1\n”); sleep(1); } SP1 } void* thread2 (){ SP2 int i; for (i = 0; i < 10; i++){ printf( Thread 2\n”); sleep(1); } int main(){ pthread_t th1, th2; pthread_create(&th1, NULL, thread1 , NULL); pthread_create(&th2, NULL, thread2 , NULL); sleep(20); return 0; } Stack Heap thread1 stack thread2 ...  Ví dụ user space thread library kernel space PCB TCB TCB ● Solaris 2 ● Windows NT/2000 với package ThreadFiber 23 Pthread     Chuẩn POSIX (IEEE 10 03. 1c) đặc tả API cho các thủ tục tạo thread và đồng bộ thread Phổ biến trong các hệ thống UNIX/Linux Là một thư viện hỗ trợ user-level thread Biên dòch và thực thi chương trình multithreaded C trong Linux $ gcc source_file.c -lpthread –o output_file... user(-level) thread “chia sẻ” một PCB để thực thi ● Việc quản lý thread được thực hiện thông qua các hàm của một thread library được gọi ở user level ● Blocking problem: Khi một thread trở nên blocked thì mọi thread khác của process không tiến triển được  Có thể được hiện thực đối với hầu hết các hệ điều hành user space thread library TCB TCB TCB PCB kernel space 21 Mô hình one-to-one  Mỗi user thread được hệ. .. hình one-to-one  Mỗi user thread được hệ điều hành quản lý thông qua một kernel TCB riêng user space ● Hệ điều hành phải cấp phát một kernel TCB để tạo user thread   Hệ điều hành phải cung cấp được nhiều kernel TCB cho một quá trình Ví dụ: Windows NT/2000 PCB kernel space TCB TCB TCB 22 Mô hình many-to-many   Gọi ‘many-to-few’ thì đúng hơn Nhiều user-level thread được phân chia thực thi (multiplexed)... tạo và quản lý thread chậm hơn so với user thread do system call overhead chuyển user mode  kernel mode ● Tận dụng được lợi thế của kiến trúc multiprocessor ● Dù một thread bò blocked, các thread khác của quá trình vẫn có thể tiến triển  Một số hệ thống multithreading ● Windows 9x/NT/200x ● Solaris ● Linux 18 Kernel thread (3/ 3)  Cấu trúc dữ liệu và memory layout để hiện thực kernel thread TCBs D... hiện thực thread  Để thống nhất các ý niệm ‘user thread và ‘kernel thread đã được trình bày, ta dùng mô hình ‘X-to-X’ sau: ● Khái niệm ‘user(-level) multithreading’ sẽ được dùng để chỉ multithreading trong user space ● User(-level) multithreading có thể hiện thực theo một trong các mô hình sau  Mô hình many-to-one – tương ứng với ‘user thread cũ  Mô hình one-to-one – tương ứng với ‘kernel thread ... Text PC2 Sơ đồ bộ nhớ Chương trình này khi chạy có bao nhiêu thread? 11 Ưu điểm của thread  Tính đáp ứng cao cho các ứng dụng tương tác  Chia sẻ tài nguyên giữa các thread: vd memory  Tiết kiệm chi phí hệ thống ● Chi phí tạo/quản lý thread nhỏ hơn so với quá trình ● Chi phí chuyển ngữ cảnh giữa các thread nhỏ hơn so với quá trình  Tận dụng được đa xử lý (multiprocessor) ● Mỗi thread chạy trên một

Ngày đăng: 07/09/2016, 16:40

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan