Bạn đang xem bài viết Thread là gì? Sự khác nhau giữa Process và Thread tại Pgdphurieng.edu.vn bạn có thể truy cập nhanh thông tin cần thiết tại phần mục lục bài viết phía dưới.
Thread và Process, đây là những thuật ngữ mà bạn sẽ được nghe rất nhiều nếu theo học ngành công nghệ thông tin, và cần phải nắm rõ khi đi làm việc. Tuy nhiên, định nghĩa và sự khác nhau giữa chúng ra sao thì không phải ai cũng biết, bởi có thể chúng không nằm trong những kiến thức được nhà trường giảng dạy. Để hiểu được Thread là gì, có gì khác so với Process, bạn hãy tham khảo bài viết dưới đây nhé.
Process là gì?
Process, hay tiến trình, là sự thực thi của một chương trình và thực hiện các hành động liên quan được chỉ định trong một chương trình, hoặc nó là một đơn vị thực thi nơi chương trình chạy. Hệ điều hành tạo, lên lịch và chấm dứt các tiến trình. Các tiến trình khác được tạo bởi tiến trình chính được gọi là tiến trình con.
Hoạt động của bất kì tiến trình nào cũng được kiểm soát bởi khối điều khiển tiến trình (Process Control Block, viết tắt là PCB). PCB chứa tất cả những thông tin quan trọng liên quan đến các tiến trình, chẳng hạn như: id tiến trình, ưu tiên, trạng thái, CPU, …
Vòng đời của một tiến trình có một số trạng thái nhất định như ready (sẵn sàng), running (đang chạy), blocked (bị chặn) và terminated (đã chấm dứt). Các trạng thái của tiến trình được sử dụng để theo dõi hoạt động của tiến trình đó ở thời điểm hiện tại.
Những hoạt động xen kẽ của các tiến trình giúp nâng cao tốc độ tính toán khi hoạt động I / O trong một tiến trình trùng lặp với hoạt động tính toán trong tiến trình khác.
Các thuộc tính của một tiến trình:
– Việc tạo mỗi tiến trình bao gồm các cuộc gọi hệ thống cho từng tiến trình riêng biệt.
– Một tiến trình là một thực thể thực thi bị cô lập và không chia sẻ dữ liệu và thông tin.
– Các tiến trình sử dụng cơ chế IPC (Inter-process Communication, tức Giao tiếp giữa các tiến trình) để liên lạc làm tăng đáng kể số lượng cuộc gọi hệ thống.
– Quản lý tiến trình tiêu thụ nhiều cuộc gọi hệ thống hơn.
– Mỗi tiến trình đều có ngăn xếp và bộ nhớ heap, dữ liệu và bản đồ bộ nhớ riêng.
Thread là gì?
Thread, hay luồng, là một tiến trình nhỏ có thể được quản lý độc lập bởi một bộ lập lịch. Tất cả các luồng trong một chương trình đơn được chứa hợp lý trong một tiến trình. Nhân cấp phát một ngăn xếp và khối điều khiển luồng (TCB) cho mỗi luồng. Hệ điều hành chỉ lưu con trỏ ngăn xếp và trạng thái CPU tại thời điểm chuyển đổi giữa các luồng của cùng một tiến trình.
Luồng được triển khai theo ba cách khác nhau: luồng cấp nhân, luồng cấp người dùng, và luồng lai. Luồng có thể có ba trạng thái running (đang chạy), ready (sẵn sàng) và blocked (bị chặn); nó chỉ bao gồm trạng thái tính toán không phân bổ tài nguyên và trạng thái giao tiếp làm giảm chi phí chuyển đổi, khiến tăng cường sự tương tranh (song song) do đó tốc độ cũng tăng lên.
Đa luồng cũng đi kèm với nhiều vấn đề. Việc có nhiều luồng không tạo ra sự phức tạp, nhưng sự tương tác giữa chúng thì không như vậy.
Một luồng phải có thuộc tính ưu tiên khi có nhiều luồng đang hoạt động. Thời gian để nó thực thi tương ứng với các luồng đang hoạt động khác trong cùng tiến trình được chỉ định bởi mức độ ưu tiên của luồng.
Các thuộc tính của một luồng:
– Một cuộc gọi hệ thống có thể tạo nhiều hơn một luồng.
– Luồng chia sẻ dữ liệu và thông tin.
– Luồng chia sẻ bộ nhớ heap nhưng có ngăn xếp và thanh ghi riêng của mình.
– Quản lý luồng không tiêu thụ hoặc tiêu thụ ít cuộc gọi hệ thống hơn vì giao tiếp giữa các luồng có thể đạt được bằng cách sử dụng bộ nhớ dùng chung.
– Thuộc tính cô lập của tiến trình làm tăng chi phí của nó về mặt tiêu thụ tài nguyên.
So sánh Process với Thread
Ta có bảng so sánh những sự khác nhau cơ bản giữa Process (tiến trình) và Thread (luồng) như sau:
Cơ sở so sánh |
Process (tiến trình) |
Thread (luồng) |
Định nghĩa |
Là chương trình đang thực thi |
Là một tiến trình nhỏ |
Chia sẻ bộ nhớ |
Hoàn toàn cô lập và không chia sẻ bộ nhớ |
Chia sẻ bộ nhớ với nhau |
Chia sẻ dữ liệu và mã |
Dữ liệu và đoạn mã độc lập |
Chia sẻ phân đoạn dữ liệu, phân đoạn mã, tệp, … với các luồng ngang hàng |
Tiêu thụ tài nguyên |
Nhiều hơn |
Ít hơn |
Thời gian cần thiết để tạo |
Nhiều hơn |
Ít hơn |
Thời gian cần thiết để chấm dứt |
Nhiều hơn |
Ít hơn |
Thời gian chuyển đổi bối cảnh |
Nhiều hơn |
Ít hơn |
Hiệu quả về giao tiếp |
Thấp hơn |
Cao hơn |
Hoạt động khi bị chặn |
Nếu một tiến trình bị chặn, các tiến trình còn lại vẫn có thể tiếp tục thực thi |
Nếu một luồng cấp người dùng bị chặn, tất cả các luồng ngang hàng của nó cũng bị chặn |
Chấm dứt không ổn định |
Tiến trình bị mất |
Luồng có thể được phục hồi |
Tóm lại, ta có thể tổng kết những điểm khác biệt quan trọng nhất như sau:
– Tất cả các luồng của một chương trình được chứa một cách hợp lý trong một tiến trình.
– Luồng nhẹ hơn tiến trình.
– Một tiến trình là một đơn vị thực thi bị cô lập trong khi luồng không bị cô lập và có chia sẻ bộ nhớ.
– Một luồng không thể tồn tại riêng biệt; nó được gắn liền với một tiến trình. Mặt khác, một tiến trình có thể tồn tại riêng lẻ.
– Tại thời điểm hết hạn của một luồng, ngăn xếp liên kết của nó có thể được phục hồi vì mỗi luồng có ngăn xếp riêng. Ngược lại, nếu một tiến trình chết, tất cả các luồng cũng sẽ chết bao gồm cả tiến trình.
Qua bài viết này, bạn đã hiểu được Process và Thread là gì, cũng như sự khác nhau giữa chúng rồi phải không? Hi vọng những thông tin vừa chia sẻ ở trên sẽ giúp ích cho bạn!
Cảm ơn bạn đã xem bài viết Thread là gì? Sự khác nhau giữa Process và Thread tại Pgdphurieng.edu.vn bạn có thể bình luận, xem thêm các bài viết liên quan ở phía dưới và mong rằng sẽ giúp ích cho bạn những thông tin thú vị.
Nguồn: https://thuthuatphanmem.vn/thread-la-gi-su-khac-nhau-giua-process-va-thread/
Từ Khoá Tìm Kiếm Liên Quan: