Cỏc kiến thức liờn quan 1 Tiến trỡnh ( process)

Một phần của tài liệu LẬP TRÌNH JAVA (Trang 148 - 151)

1. Tiến trỡnh ( process)

Tiến trỡnh là một thể hiện của một chương trỡnh đang xử lý. Sở hữu một con trỏ lệnh, tập cỏc thanh ghi và cỏc biến. để hoàn thành tỏc vụ của mỡnh, một tiến trỡnh cũn cần đến một số tài nguyờn khỏc như: CPU, bộ nhớ, cỏc tập tin, cỏc thiết bị ngoại vi..

Cần phõn biệt được giữa tiến trỡnh và chương trỡnh. Một chương trỡnh là một thể hiện thụ động, chứa cỏc chỉ thị điều khiển mỏy tớnh để thực hiện mục đớch gỡ đú; khi cho thực thi chỉ thị này thỡ chương trỡnh sẽ biến thành tiến trỡnh

Cú thể núi túm tắt tiến trỡnh là một chương trỡnh chạy trờn hệ điều hành và được quản lý thụng qua một số hiệu gọi là thẻ

2. Tiểu trỡnh ( thread )

Một tiểu trỡnh là một đơn vị xử lý cơ bản trong hệ thống. Mỗi tiểu trỡnh xử lý tuần tự cỏc đoạn code của nú, sở hữu một con trỏ lệnh, một tập cỏc thanh ghi và một vựng nhớ stack riờng, cỏc tiểu trỡnh chia sẻ CPU với nhau giống như cỏch chia

sẻ giữa cỏc tiến trỡnh. Một tiến trỡnh sở hữu nhiều tiểu trỡnh, tuy nhiờn một tiểu trỡnh chỉ cú thể thuộc về một tiến trỡnh, cỏc tiểu trỡnh bờn trong cựng một tiến trỡnh chia sẻ nhau khụng gian địa chỉ chung, điều này cú nghĩa là cỏc tiểu trỡnh cú thể chia sẻ nhau cỏc biến toàn cục của tiến trỡnh. Một tiểu trỡnh cũng cú thể cú cỏc trạng thỏi giống như cỏc trạng thỏi của một tiến trỡnh.

3. Hệ điều hành đơn nhiệm, đa nhiệm

• HĐH đơn nhiệm là HĐH chỉ cho phộp 1 tiến trỡnh chạy tại một thời điểm, vớ

dụ HĐH DOS là HĐH đơn nhiệm.

• - HĐH đa nhiệm cho phộp nhiều tiến trỡnh chạy tại một thời điểm, vớ dụ HĐH windows, Unix, Linux là cỏc HĐH đa nhiệm

• HĐH đa nhiệm ưu tiờn: cỏc tiến trỡnh được cấp phỏt thời gian sử dụng CPU

theo mức ưu tiờn khỏc nhau

• HĐH đa nhiệm khụng ưu tiờn: cỏc tiến trỡnh khụng cú mức ưu tiờn nào cả,

chỳng “tự giỏc” nhả quyền kiểm soỏt CPUsau khi kết thỳc phần cụng việc

Chỳ ý: trong thực tế mỗi mỏy thường chỉ cú 1 CPU, nờn khụng thể cú nhiều tiến

trỡnh chạy tại một thời điểm. Nờn thụng thường sự đa chương chỉ là giả lập. Chỳng được giả lập bằng cỏch lưu trữ nhiều tiến trỡnh trong bộ nhớ tại một thời điểm, và điều phối CPU qua lại giữa cỏc tiến trỡnh.

4. Cỏc trạng thỏi của tiến trỡnh

Trạng thỏi của một tiến trỡnh tại một thời điểm được xỏc định bởi hoạt động hiện thời của tiến trỡnh đú. Trong quỏ trỡnh sống một tiến trỡnh thay đổi trạng thỏi do nhiều nguyờn nhõn như: hết thời gian sử dụng CPU, phải chờ một sự kiện nào đú xẩy ra, hay đợi một thao tỏc nhập/xuất hoàn tất…

Tại một thời điểm một tiến trỡnh cú thể nhận một trong cỏc trạng thỏi sau đõy:

• Tạo mới: tiến trỡnh đang được thành lập

trỡnh đang sở hữu CPU

• Blocked: tiến trỡnh đang chờ được cấp tài nguyờn, hay chờ một sự kiện nào đú xẩy ra

• Ready: tiến trỡnh đang chờ cấp CPU để xử lý

• Kết thỳc: tiến trỡnh đó hoàn tất việc xử lý

5. Miền găng ( Critical Section ) a) Vấn đề tranh chấp tài nguyờn a) Vấn đề tranh chấp tài nguyờn

Ta xột tỡnh huống sau:

• giả sử A cú 500$ trong tài khoản ngõn hàng

• A quyết định rỳt ra 100$ từ tài khoản ngõn hàng, thao tỏc của A gồm 2 bước: 1) lấy ra 100$

2) giảm số tài khoản đi 100$

• Tỡnh huống giữa 2 thao tỏc 1 và 2, B trả A 300$, do vậy B cập nhật vào trong tài khoản của A là 800$ ( =500$ +300$), sau đú A tiếp tục cụng việc 2, nú cập nhật lại trong tài khoản là 400$, như vậy B đó trả A 300$, nhưng A khụng nhận được.

b) Miền găng (Critical Section)

Đoạn chương trỡnh trong đú cú thể xẩy ra cỏc mõu thuẫn truy xuất trờn tài nguyờn dụng chung được gọi là miền găng ( Critical Section )

6. Khoỏ chết (deadlock)

Một tập cỏc tiến trỡnh được định nghĩa là ở trong tỡnh trạng khoỏ chết nếu như, mỗi tiến trỡnh trong tập hợp đều đều chờ đợi một số tài nguyờn đang bị nắm

giữ bởi cỏc tiến trỡnh khỏc, như vậy khụng cú tiến trỡnh nào cú thể tiếp tục xử lý, cũng như giải phúng tài nguyờn cho cỏc tiến trỡnh khỏc sử dụng, tất cả cỏc tiến trỡnh trong tập hợp đểu bị khoỏ vĩnh viễn!.

Một phần của tài liệu LẬP TRÌNH JAVA (Trang 148 - 151)

Tải bản đầy đủ (PDF)

(193 trang)