Tải bản đầy đủ (.pdf) (57 trang)

Bài giảng lập trình hệ điều hành chương 3 tiến trình và luồng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.83 MB, 57 trang )

Khoa Công Nghệ Thông Tin & Truyền Thông
Đại học Cần Thơ
Giảng viên: Hà Duy An



1.
2.
3.
4.

Các khái niệm
Định thời biểu tiến trình
Các thao tác với tiến trình
Giao tiếp giữa các tiến trình

8/22/2013

3

Chương 3: Tiến Trình



• Hệ điều hành có thể thực thi nhiều dạng chương trình:
o Hệ thống bó (batch system) – jobs
o Hệ thống chia thời gian – chương trình người dùng (user
program) hay tác vụ (task)

• Tiến trình - là một chương trình đang thực thi. Sự thực thi của
tiến trình diễn ra theo cách thức tuần tự.


• Một tiến trình bao gồm:
o Mã chương chương trình (program code hay text section)
o Bộ đếm chương trình (program counter)
o Ngăn xếp (stack) – chứa các dữ liệu tạm thời
• Các tham số của hàm, địa chỉ trở về, biến cục bộ

o Phần dữ liệu (data section) - chứa các biến toàn cục
o Heap – bộ nhớ động, được cấp phát trong suốt thời gian thực thi
8/22/2013

5

Chương 3: Tiến Trình


• Chương trình là một thực thể bị
động lưu trữ trên đĩa, tiến trình
là thực thể chủ động
o Chương trình trở thành tiến
trình nó được nạp vào trong bộ
nhớ để thực thi
o Chương trình có thể được kích
hoạt qua thao tác nhấp chuột,
nhập tên vào CLI, …
o Một chương trình có thể có vài
tiến trình

8/22/2013

6


Chương 3: Tiến Trình


• Tiến trình có thể có các trạng thái sau:
o new: quá trình đang được khởi tạo.
o running: các chỉ thị của quá trình đang được thực thi.
o waiting: quá trình đang chờ đợi một sự kiện nào đó xảy
ra (hoàn thành xuất/nhập, chờ đợi một tín hiệu).
o ready: quá trình đang đợi để được sử dụng CPU.
o terminated: quá trình đã kết thúc.

8/22/2013

7

Chương 3: Tiến Trình


8/22/2013

8

Chương 3: Tiến Trình


• Thông tin kết hợp với mỗi quá trình:
o
o
o

o
o
o
o

8/22/2013

Trạng thái của quá trình
Bộ đếm chương trình
Các thanh ghi
Thông tin về định thời sử dụng CPU
Thông tin về quản lý bộ nhớ
Thông tin về chi phí
Thông tin về trạng thái nhập/xuất

9

Chương 3: Tiến Trình


8/22/2013

10

Chương 3: Tiến Trình



• Nhằm tối ưu hóa việc sử dụng CPU, các tiến thay phiên nhau
sử dụng CPU

• Bộ định thời tiến trình (Process scheduler) chọn lựa một tiến
trình có thể thực thi để cấp phát CPU cho tiến trình đó
• Các hàng đợi định thời:
o Hàng đợi công việc (Job queue): tập hợp tất cả các quá trình
trong hệ thống.
o Hàng đợi sẵn sàng (Readyqueue): tập hợp tất cả các quá trình
đang nằm trong bộ nhớ, sẵn sàng và đang chờ để thực thi.
o Hàng đợi thiết bị (Device queue): tập hợp các quá trình đang
đợi sử dụng một thiết bị xuất/nhập.

• Quá trình có thể di chuyển giữa các hàng đợi khác nhau
8/22/2013

12

Chương 3: Tiến Trình


8/22/2013

13

Chương 3: Tiến Trình


8/22/2013

14

Chương 3: Tiến Trình



• Bộ định thời dài kỳ (Long-term scheduler/job scheduler) – chọn quá
trình nào sẽ được đặt vào hàng đợi sẵn sàng (nạp vào bộ nhớ).
• Bộ định thời ngắn kỳ (Short-term scheduler/CPU scheduler) –chọn
ra quá trình sẽ được thực thi kế tiếp và cấp CPU cho nó.
• Bộ định thời ngắn kỳ được gọi rất thường xuyên (milliseconds) =>
cần phải nhanh
• Bộ định thời dài kỳ được gọi không thường xuyên hơn (seconds,
minutes) => có thể chậm
• Bộ định thời dài kỳ khống chế mức độ đa chương của hệ thống
• Các tiến trình có thể là:
o Tiến trình hướng xử lý: cần nhiều tính toán hơn nhập xuất
o Tiến trình hướng nhập xuất: cần nhiều nhập xuất hơn tính toán

• Bộ định thời dài kỳ cố gắng điều hòa giữa các tiến trình này

8/22/2013

15

Chương 3: Tiến Trình


• Bộ định thời trung kỳ (Medium-term scheduling) – làm giảm
mức độ đa chương của hệ thống
o Di chuyển các tiến tình ra khỏi bộ nhớ, lưu trữ trên đĩa, sau đó
mang vào bộ nhớ để tiếp tục thực thi: swapping

8/22/2013


16

Chương 3: Tiến Trình


• Chuyển ngữ cảnh (context switch): Khi CPU chuyển sang phục vụ
tiến trình khác, hệ thống phải ghi lại trạng thái của tiến trình cũ và
nạp trạng thái được lưu trước đó của tiến trình mới
• “Ngữ cảnh” của một tiến trình được xác định thông qua các thông
tin trong PCB
• Thời gian chuyển ngữ cảnh là một phí tổn, vì hệ thống không làm gì
hữu ích khi thực hiện chuyển ngữ cảnh
o HĐH và PCB càng phức tạp => thời gian chuyển ngũ cảnh càng dài

• Thời gian chuyển ngữ cảnh phụ thuộc nhiều vào sự hỗ trợ của phần
cứng
o Vài hệ thống cung cấp nhiều tổ hợp các thanh ghi trên mỗi CPU=>
nhiều “ngữ cảnh” được nạp vào cùng lúc

8/22/2013

17

Chương 3: Tiến Trình



• Quá trình cha tạo ra quá trình con, đến lượt quá trình con
này lại tạo ra những quá trình khác, tạo nên cây quá trình.

• Thông thường các tiến trình được xác định và quản lý
thông qua PID (Process identifier)
• Chia sẻ tài nguyên – có nhiều lựa chọn:
o Quá trình cha và con chia sẻ tất cả tài nguyên.
o Quá trình con chia sẻ một phần tài nguyên của quá trình cha.
o Quá trình cha và con không chia sẻ tài nguyên nào cả.

• Thực thi:
o Quá trình cha và con thực thi đồng thời.
o Quá trình cha đợi đến khi quá trình con hoàn thành.
8/22/2013

19

Chương 3: Tiến Trình


init
pid = 1

login
pid = 8415

khelper
pid = 6

bash
pid = 8416

ps

pid = 9298

8/22/2013

sshd
pid = 3028

kthreadd
pid = 2

pdflush
pid = 200

sshd
pid = 3610

tcsch
pid = 4005

emacs
pid = 9204

20

Chương 3: Tiến Trình


• Không gian địa chỉ:
o Quá trình con sao chép không gian địa chỉ của quá trình cha
(cùng chương trình và dữ liệu).

o Quá trình con tự nạp chương trình riêng của nó.

• Hệ thống UNIX
o fork() –là lời gọi hệ thống dùng tạo quá trình mới
o exec() –là lời gọi hệ thống được sử dụng sau fork() để thay thế
không gian địa chỉ của quá trình bằng một chương trình mới

8/22/2013

21

Chương 3: Tiến Trình


8/22/2013

22

Chương 3: Tiến Trình


8/22/2013

23

Chương 3: Tiến Trình


• Quá trình thực hiện câu lệnh cuối cùng và yêu cầu HĐH xóa nó
(dùng exit).

o Xuất dữ liệu từ quá trình con lên quá trình cha (wait()).
pid_t pid; int status;
pid=wait(&status);
o Tài nguyên của quá trình bị thu hồi lại bởi hệ điều hành.

• Quá trình cha có thể kết thúc sự thực thi của quá trình con (abort()).
o Quá trình con đã vượt quá số tài nguyên được cấp.
o Công việc giao cho quá trình con nay không còn cần thiết nữa.
o Quá trình cha đang thoát.
• Vài hệ điều hành không cho phép quá trình con tiếp tục thực thi khi
quá trình cha kết thúc => Sự kết thúc hàng loạt các quá trình con
(cascading termination)

• Nếu tiến trình cha chưa gọi wait() => tiến trình con vừa kết thúc trở
thành một zombie
• Nếu tiến trình cha kết thúc trước => tiến trình con mồ coi (orphan)
8/22/2013

24

Chương 3: Tiến Trình



×