Sự khác nhau giữa Process và Thread

17 tháng 10, năm ngoái – 11076 lượt xem

Sự khác nhau giữa Process và Thread

Process và Thread

Process là quy trình hoạt động giải trí của một ứng dụng. Điều đó nghĩa là gì vậy ? Có thể lấy một thí dụ như sau, khi bạn click đúp chuột vào hình tượng MS Word, một process chạy ứng dụng Word được khởi tạo. Thread là một bước quản lý bên trong một process. Một process đương nhiên hoàn toàn có thể chứa nhiều thread bên trong nó. Khi tất cả chúng ta chạy ứng dụng Word, hệ quản lý và điều hành tạo ra một process và khởi đầu chạy các thread chính của process đó .

Bạn đang đọc: Sự khác nhau giữa Process và Thread

Điểm quan trọng nhất cần chú ý là một thread có thể làm bất cứ nhiệm vụ gì một process có thể làm. Tuy vậy, vì một process có thể chứa nhiều thread, mỗi thread có thể coi như là một process nhỏ. Vậy, điểm khác biệt mấu chốt giữa thread và process là công việc mỗi cái thường phải làm. 

Sự khác nhau giữa Process và Thread

Một điểm độc lạ nữa đó là nhiều thread nằm trong cùng một process dùng một khoảng trống bộ nhớ giống nhau, trong khi process thì không. Điều này được cho phép các thread đọc và viết cùng một kiểu cấu trúc và tài liệu, tiếp xúc thuận tiện giữa các thread với nhau. Giao thức giữa các process, hay còn gọi là IPC ( inter-process communication ) thì tương đối phức tạp bởi các tài liệu có tính tập trung chuyên sâu sâu hơn .

Chương trình thực tập lập trình dành cho sinh viên trái ngành, hoặc học từ đầu. Đảm bảo việc làm sau 6-12 tháng thực tập. đây chính là bản dịch của một học viên thực tập sau 1.5 tháng tại Techmaster .

Đa luồng (Mutilple threading)

Thread, dĩ nhiên cho phép chạy đa luồng. Minh hoạ dễ hiểu cho tính ưu việt của sự đa luồng là trình xử lý Word có thể vừa in tài liệu sử dụng một thread nền, vàvừa cùng lúc chạy một thread khác nhận dữ liệu vào từ người dùng để gõ một văn bản mới.

Nếu bạn đang thao tác với ứng dụng sử dụng một thread duy nhất, mà ứng dụng đó chỉ hoàn toàn có thể làm một việc đơn lẻ vào một thời gian – thì việc vừa in văn bản vừa đảm nhiệm thông tin người dùng là bất khả thi trong ứng dụng đơn luồng này .

Mỗi một process có một vùng nhớ riêng của chúng, song các thread trong cùng một process thì dùng chung địa chỉ nhớ. Và các thread cũng dùng chung bất cứ tài nguyên nào nằm trong process đấy. Có nghĩa là rất dễ để chia sẻ dữ liệu giữa các thread, nhưng cũng rất dễ làm thread này nhảy sang thread khác, dẫn đến một số kết quả tồi tệ.

Các chương trình đa luồng cần được lập trình cẩn trọng để tránh việc nhảy cóc như trên xảy ra. Đoạn mã lệnh biến hóa cấu trúc tài liệu chia sẻ giữa các đa luồng này được gọi là các đoạn quan trọng. Khi một đoạn quan trọng đang chạy ở thread này, cần bảo vệ không thread khác nào được phép sử dụng đoạn quan trọng này. đây chính là quy đình đồng bộ hoá, nhằm mục đích tránh không bị dừng chương trình một cách giật mình ở đây. Và đó cũng là nguyên do tại sao đa luồng yên cầu lập trình một cách rất cẩn trọng .Nhìn chung, thiên nhiên và môi trường quy đổi của các thread đỡ tốn kém hơn so với giữa các process. Đặt biệt là overhead ( ngân sách giao thức ) giữa các thread đặc biệt quan trọng thấp so với các process .Sau đây chính là bảng tổng kết sự khác nhau giữa thread và process :

Để 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ẽ.Việc chạy đa luồng cần được lập trình một cách chi tiết vì 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 được xếp hạng “nhẹ cân” bởi vì chúng 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, vì thế cần thận trọng tránh việc thread này nhảy sang thread khác. (Điều đã được nhắc đến trong ý thứ 2 vừa trên)Một process có thể chứa nhiều thread. 

Giới thiệu: Quang Sơn

Quang Sơn là giám đốc hocdauthau.com - Kênh thông tin học đấu thầu, kiến thức tổng hợp, công nghệ, đời sống.

0 Shares
Share
Tweet
Pin