PROCESS & THREAD
Tá Quý – 13T1 BKDN
Dongianchithethoi@gmail.com
PROCESS & THREAD
1. Giới thiệu process
- Chương trình là danh sách các lệnh để giải quyết
một vấn đề nào đó, được cất trên đĩa dưới dạng file.
- Khi chương trình được nạp vào RAM và CPU bắt
đầu thực thi chương trình ở điểm nhập thì chương
trình trở thành một process, CPU thực hiện hết lệnh
này đến lệnh khác từ trên xuống hay theo sự điều
khiện của lệnh thực thi.
PROCESS & THREAD
1. Giới thiệu process
Process là quá trình hoạt động của một ứng dụng.
Process gồm 2 thành phần chính : danh sách các
lệnh cấu thành thuật giải của chương trình và dữ
liệu.
PROCESS & THREAD
1. Giới thiệu process
Vùng nhớ của mỗi process được chia thành:
 Vùng code : chứa danh sách mã lệnh của program
 Vùng static data : chứa các biến dữ liệu được khai
báo tường minh trong chương trình.
 Vùng dynamic data : chứa các vùng nhớ dữ liệu
được cấp phát động (thông qua new, maloc…).
Kích thước vùng này biến động theo thời gian.
 Vùng stack : phục vụ cho việc gọi hàm trong
chương trình. Kích thước vùng này biến động theo
thời gian.
Code
Static data
Dynamic data
stack
Góc nhìn vật lí:
từng thời điểm
CPU chỉ chạy
một process.
Góc nhìn user: 4
process đang chạy
song hành.
Đồ thị chạy của từng
process theo thời
gian.
2. Thực thi tiến trình
PROCESS & THREAD
Process A Process B Process C Process D
Góc nhìn vật lí: từng thời điểm CPU chỉ chạy một process.
time
2. Thực thi tiến trình
PROCESS & THREAD
Process A Process B Process C Process D
Góc nhìn user: 4 process đang chạy song hành.
time
2. Thực thi tiến trình
PROCESS & THREAD
A
B
C
D
Đồ thị chạy của từng process theo thời gian
Process
time
2. Thực thi tiến trình
PROCESS & THREAD
• Trong thực tế, chỉ có một bộ xử lý thật sự được chuyển
đổi qua lại giữa các process. Sự chuyển đổi nhanh chóng
này được gọi là sự đa chương(multiprogramming) .
• HĐH chịu trách nhiệm sử dụng một thuật toán điều phối
để quyết định thời điểm cần dừng hoạt động của process
đang xử lý để phục vụ một process khác, và lựa chọn
process tiếp theo sẽ được phục vụ. Bộ phận thực hiện
chức năng này của HĐH được gọi là bộ điều phối
(scheduler).
2. Thực thi tiến trình
PROCESS & THREAD
Trình lập lịch (Scheduler) là 1 module chức năng của
HĐH, nó sẽ điều khiển việc chạy các process theo thời gian để
thỏa mãn các tiêu chí xác định mà HĐH cần thực hiện.
2. Thực thi tiến trình
PROCESS & THREAD
Một tiến trình có thể có các trạng thái sau:
 New: quá trình đang được khởi tạo
 Running: các chỉ thị của quá trình đang được thực thi
 Waiting: quá trình đang chờ đợi một sự kiện nào đó xuất
hiện ( hoàn thành nhập/xuất, chờ đợi một tín hiệu).
 Ready: quá trình đang đợi để được sử dụng CPU
 Terminated: quá trình kết thúc.
2. Thực thi tiến trình
Lưu đồ trạng thái của process:
Terminatednew
ready running
waiting
admitted
interrupt
exit
I/O or event waitI/O or event completion
Scheduler dispatch
Job queue
ready queue
PROCESS & THREAD
3. Giới thiệu thread
• Luồng(Thread) còn gọi là tiến trình nhẹ(LWP- Light Weight
Process), một đơn vị cơ bản sử dụng CPU.
• Thread là một bước điều hành bên trong một process. Một
process có thể chứa nhiều thread.
• Mỗi Thread là một khối các lệnh tuần tự.
• Có một trạng thái thực thi (running, ready, etc.)
• Có độ ưu tiên.
PROCESS & THREAD
2. Giới thiệu thread
Process
Thread
PROCESS & THREAD
3. Giới thiệu thread
 Có thể truy cập vùng nhớ chung cho các thread trong một
process
• Vùng nhớ được chia sẽ cho tất cả các thread
• Khi một thread thay đổi dữ liệu dùng chung, tất cả các
thread khác (cùng process) có thể “thấy” được
• Chia sẽ file dùng chung
 Lập trình nhiều công việc có nhiều thread: Multithreading
16
Vòng đời Thread
ready
running
waiting
sleeping
new
blocked
dead
notify()
start()
wait()
sleep()
stop()
suspend()
resume()
dispatch
completion
timer expire
/ interrupted
block on I/O
I/O completion
PROCESS & THREAD
MS-DOS
JVM
Traditional UNIX
NT, Solaris, Mach, OS/2…
Multithreading
• Nhiều thread cùng được thực hiện đồng thời: nhiều
phần của một chương trình có thể chạy đồng thời
 Xem phim online: 1 thread để load video, 1 thread
để play,…
• Với CPU đơn, việc xử lý multithreading là giả lập.
• Với CPU nhiều nhân hoặc luồng, multithreading
thực sự là thực hiện song song (parallel), việc thực
hiện song song nâng cao sức mạnh thiết bị lên
nhiều lần nhưng cũng phức tạp hóa việc lập trình
Hiệu quả của Thread so với Process
 Tạo ra một thread nhanh hơn tạo một process
 Hủy một thread thì nhanh hơn hủy một process
 Tốn ít thời gian chuyển đổi giữa các thread trong cùng một
process
 Bởi vì các thread trong cùng một process chia sẻ bộ nhớ và
các file dùng chung nên việc trao đổi qua lại giữa các thread
không cần kích hoạt các hàm hệ thống
 Thread có thể chạy song song trên các vi xử lý khác nhau:
multithreading
PROCESS & THREAD
 Process và thread theo một cách hiểu khác:
• Tiến trình như một khu rừng có nhiều cây, luồng là cây
trong khu rừng đó.
• Các cây trong khu rừng cùng sử dụng tài nguyên đất, nước
và không khí tại khu rừng đó.
• Khu rừng này có thề trồng 1 loại cây chính và một số cây
phụ xung quanh.
• Vì vấn đề gì đó khu rừng chỉ còn sống một cây duy nhất (
đơn luồng), tuy nhiên khu rừng bên cạnh lại phát triển rất
rậm rạp ( đa luồng ).
PROCESS & THREAD
 Sự khác biệt giữa process và thread:
•Để tạo nhiều thread thì dễ dàng hơn so với process vì chúng
không cần các địa chỉ nhớ riêng rẽ.
• Các thread chia sẻ các cấu trúc chung mà chỉ sử dụng được bởi
từng thread vào mỗi thời điểm. Khác với thread, các process
không dùng chung địa chỉ nhớ.
•Thread sử dụng ít tài nguyên hơn so với các process.
•Các process chạy độc lập với nhau. Các thread thì sử dụng chung
các địa chỉ nhớ liên kết với nhau.
•Một process có thể chứa nhiều thread.
Thank you
for your
attention

Process and thread

  • 1.
    PROCESS & THREAD TáQuý – 13T1 BKDN Dongianchithethoi@gmail.com
  • 2.
    PROCESS & THREAD 1.Giới thiệu process - Chương trình là danh sách các lệnh để giải quyết một vấn đề nào đó, được cất trên đĩa dưới dạng file. - Khi chương trình được nạp vào RAM và CPU bắt đầu thực thi chương trình ở điểm nhập thì chương trình trở thành một process, CPU thực hiện hết lệnh này đến lệnh khác từ trên xuống hay theo sự điều khiện của lệnh thực thi.
  • 3.
    PROCESS & THREAD 1.Giới thiệu process Process là quá trình hoạt động của một ứng dụng. Process gồm 2 thành phần chính : danh sách các lệnh cấu thành thuật giải của chương trình và dữ liệu.
  • 4.
    PROCESS & THREAD 1.Giới thiệu process Vùng nhớ của mỗi process được chia thành:  Vùng code : chứa danh sách mã lệnh của program  Vùng static data : chứa các biến dữ liệu được khai báo tường minh trong chương trình.  Vùng dynamic data : chứa các vùng nhớ dữ liệu được cấp phát động (thông qua new, maloc…). Kích thước vùng này biến động theo thời gian.  Vùng stack : phục vụ cho việc gọi hàm trong chương trình. Kích thước vùng này biến động theo thời gian. Code Static data Dynamic data stack
  • 5.
    Góc nhìn vậtlí: từng thời điểm CPU chỉ chạy một process. Góc nhìn user: 4 process đang chạy song hành. Đồ thị chạy của từng process theo thời gian. 2. Thực thi tiến trình
  • 6.
    PROCESS & THREAD ProcessA Process B Process C Process D Góc nhìn vật lí: từng thời điểm CPU chỉ chạy một process. time 2. Thực thi tiến trình
  • 7.
    PROCESS & THREAD ProcessA Process B Process C Process D Góc nhìn user: 4 process đang chạy song hành. time 2. Thực thi tiến trình
  • 8.
    PROCESS & THREAD A B C D Đồthị chạy của từng process theo thời gian Process time 2. Thực thi tiến trình
  • 9.
    PROCESS & THREAD •Trong thực tế, chỉ có một bộ xử lý thật sự được chuyển đổi qua lại giữa các process. Sự chuyển đổi nhanh chóng này được gọi là sự đa chương(multiprogramming) . • HĐH chịu trách nhiệm sử dụng một thuật toán điều phối để quyết định thời điểm cần dừng hoạt động của process đang xử lý để phục vụ một process khác, và lựa chọn process tiếp theo sẽ được phục vụ. Bộ phận thực hiện chức năng này của HĐH được gọi là bộ điều phối (scheduler). 2. Thực thi tiến trình
  • 10.
    PROCESS & THREAD Trìnhlập lịch (Scheduler) là 1 module chức năng của HĐH, nó sẽ điều khiển việc chạy các process theo thời gian để thỏa mãn các tiêu chí xác định mà HĐH cần thực hiện. 2. Thực thi tiến trình
  • 11.
    PROCESS & THREAD Mộttiến trình có thể có các trạng thái sau:  New: quá trình đang được khởi tạo  Running: các chỉ thị của quá trình đang được thực thi  Waiting: quá trình đang chờ đợi một sự kiện nào đó xuất hiện ( hoàn thành nhập/xuất, chờ đợi một tín hiệu).  Ready: quá trình đang đợi để được sử dụng CPU  Terminated: quá trình kết thúc. 2. Thực thi tiến trình
  • 12.
    Lưu đồ trạngthái của process: Terminatednew ready running waiting admitted interrupt exit I/O or event waitI/O or event completion Scheduler dispatch Job queue ready queue
  • 13.
    PROCESS & THREAD 3.Giới thiệu thread • Luồng(Thread) còn gọi là tiến trình nhẹ(LWP- Light Weight Process), một đơn vị cơ bản sử dụng CPU. • Thread là một bước điều hành bên trong một process. Một process có thể chứa nhiều thread. • Mỗi Thread là một khối các lệnh tuần tự. • Có một trạng thái thực thi (running, ready, etc.) • Có độ ưu tiên.
  • 14.
    PROCESS & THREAD 2.Giới thiệu thread Process Thread
  • 15.
    PROCESS & THREAD 3.Giới thiệu thread  Có thể truy cập vùng nhớ chung cho các thread trong một process • Vùng nhớ được chia sẽ cho tất cả các thread • Khi một thread thay đổi dữ liệu dùng chung, tất cả các thread khác (cùng process) có thể “thấy” được • Chia sẽ file dùng chung  Lập trình nhiều công việc có nhiều thread: Multithreading
  • 16.
  • 17.
    PROCESS & THREAD MS-DOS JVM TraditionalUNIX NT, Solaris, Mach, OS/2…
  • 18.
    Multithreading • Nhiều threadcùng được thực hiện đồng thời: nhiều phần của một chương trình có thể chạy đồng thời  Xem phim online: 1 thread để load video, 1 thread để play,… • Với CPU đơn, việc xử lý multithreading là giả lập. • Với CPU nhiều nhân hoặc luồng, multithreading thực sự là thực hiện song song (parallel), việc thực hiện song song nâng cao sức mạnh thiết bị lên nhiều lần nhưng cũng phức tạp hóa việc lập trình
  • 19.
    Hiệu quả củaThread so với Process  Tạo ra một thread nhanh hơn tạo một process  Hủy một thread thì nhanh hơn hủy một process  Tốn ít thời gian chuyển đổi giữa các thread trong cùng một process  Bởi vì các thread trong cùng một process chia sẻ bộ nhớ và các file dùng chung nên việc trao đổi qua lại giữa các thread không cần kích hoạt các hàm hệ thống  Thread có thể chạy song song trên các vi xử lý khác nhau: multithreading
  • 20.
    PROCESS & THREAD Process và thread theo một cách hiểu khác: • Tiến trình như một khu rừng có nhiều cây, luồng là cây trong khu rừng đó. • Các cây trong khu rừng cùng sử dụng tài nguyên đất, nước và không khí tại khu rừng đó. • Khu rừng này có thề trồng 1 loại cây chính và một số cây phụ xung quanh. • Vì vấn đề gì đó khu rừng chỉ còn sống một cây duy nhất ( đơn luồng), tuy nhiên khu rừng bên cạnh lại phát triển rất rậm rạp ( đa luồng ).
  • 21.
    PROCESS & THREAD Sự khác biệt giữa process và thread: •Để tạo nhiều thread thì dễ dàng hơn so với process vì chúng không cần các địa chỉ nhớ riêng rẽ. • Các thread chia sẻ các cấu trúc chung mà chỉ sử dụng được bởi từng thread vào mỗi thời điểm. Khác với thread, các process không dùng chung địa chỉ nhớ. •Thread sử dụng ít tài nguyên hơn so với các process. •Các process chạy độc lập với nhau. Các thread thì sử dụng chung các địa chỉ nhớ liên kết với nhau. •Một process có thể chứa nhiều thread.
  • 22.