Running Blocked Ready Dispatch Waik up Over time Ready suspend Blocked suspend Event Terminated Suspend Activate Suspend Suspend Activate Event Terminated ACTIVE STATE SUSPENDED STATE.[r]
(1)Bài 2: Quản lý tiến trình
Nội dung
Khái niệm tiến trình
Đồng giải pháp giải tranh chấp Tắc nghẽn
Mục tiêu Thời lượng học
Trình bày khái niệm tiến trình, trạng thái tiến trình trình biến đổi trạng thái
Trình bày khái niệm luồng,
đồng giải tranh chấp Trình bày vấn đề liên quan
đến Deadlock
tiết
(2)Bài 2: Quản lý tiến trình
TÌNH HUỐNG DẪN NHẬP
Tình
Task Manager tiện ích giúp quản lý tiến trình máy tính Vậy tiến trình hoạt động nào?
Câu hỏi
(3)Bài 2: Quản lý tiến trình
2.1. Khái niệm tiến trình (Process) 2.1.1. Định nghĩa
Trong xem xét khái niệm tiến trình, khái niệm quan trọng
để hình dung cơng việc máy tính ngày
Chúng ta tìm hiểu khái niệm trạng thái (rời rạc) tiến trình
cách mà tiến trình chuyển từ trạng thái sang trạng thái khác với thao tác tiến trình
Khái niệm tiến trình lần kỹ sư thiết kế hệ thống MULTICS vào năm 60 Trong thời kỳđầu tiên, tiến trình hiểu nhiều trường hợp đồng nghĩa chương trình, tốn (Task) đối tượng xử lý phục vụ,
Người ta thường dùng định nghĩa tiến trình chương trình lúc chạy 2.1.2. Khối điều khiển tiến trình (Process Control Block – PCB)
Đại diện cho tiến trình hệ điều hành khối điều khiển tiến trình (PCB) PCB cấu trúc liệu chứa thông tin quan trọng tiến trình
khác hệ thống khác nhau, thường có:
Trạng thái tiến trình
ID (Identifier) cho tiến trình
Độưu tiên (Priority) tiến trình
Thơng tin nhớ
Thơng tin tài ngun tiến trình sử dụng
Vùng ghi
PCB đối tượng quan trọng, nhờ hệđiều hành có tồn thơng tin
bản tiến trình Khi hệ điều hành chuyển (Switch) xử lý từđang phục vụ tiến trình sang phục vụ tiến trình khác, dùng vùng cho ghi PCB lưu thông tin giá trị ghi hệ thống để tiếp tục thực tiến trình tiến trình đến lượt sử dụng xử lý
Tóm lại, PCB đối tượng đại diện cho tiến trình hệ điều hành Vì hệ điều hành phải có khả thực thao tác với PCB khác cách nhanh chóng, nhiều hệ thống có ghi đặc biệt ln tới PCB tiến trình chạy (Running Process) có lệnh cài đặt phần cứng đểđảm bảo nhanh chóng ghi thơng tin trạng thái vào PCB nhanh chóng đọc thơng tin
Các thao tác với tiến trình:
Hệ thống điều khiển tiến trình cần có khả thực thao tác với tiến trình, có:
Tạo tiến trình (Create)
Huỷ tiến trình (Free, Destroy)
Thay đổi độưu tiên (Priority)
Dừng (Block) tiến trình
Kích hoạt (Waikup) tiến trình
(4)Bài 2: Quản lý tiến trình Tiến trình tạo tiến trình gồm nhiều thao tác nhỏ:
Gán tên cho tiến trình
Đưa tên tiến trình vào danh sách tiến trình hệ thống
Xác định mức ưu tiên (Priority) ban đầu cho tiến trình
Tạo, nạp thơng tin PCB
Phân chia tài nguyên khởi đầu cho tiến trình
Tạo tiến trình:
Một tiến trình tạo tiến trình Tiến trình tiến trình cha (Parent Process) cịn tiến trình tạo tiến trình (Child Process) Để tạo tiến trình cần tiến trình có Tức tiến trình có tiến trình cha cịn tiến trình cha có nhiều tiến trình Các quan hệđó tạo kiến trúc tiến trình
Xố tiến trình:
Xố tiến trình loại bỏ khỏi hệ thống Khi tài nguyên phân chia cho tiến trình sẽđược giải phóng, trả lại cho hệđiều hành, tên tiến trình xố khỏi tất danh sách hệ thống, PCB giải phóng
Dừng/ hỗn tiến trình:
Một tiến trình bị hỗn–dừng (Suspended Process) tiến trình khơng tiếp tục thực đến có tiến trình khác kích hoạt Tạm dừng (Suspending) thao tác quan trọng sử dụng nhiều hệ thống với cách cài đặt, thực khác Tạm dừng thường diễn khoảng thời gian ngắn
Ví dụ: hệđiều hành phải tạm dừng số tiến trình (khơng phải ln tất cả) thời gian ngắn hệ thống tải,…
Trong trường hợp tiến trình bị dừng thời gian dài tài ngun phải giải phóng trả lại cho hệ điều hành Việc loại tài nguyên có cần giải phóng hay khơng cịn phụ thuộc vào kiểu
Ví dụ: nhớ cần giải phóng ngay, cịn thiết bị vào thuộc quyền sử
dụng tiến trình trường hợp tiến trình bị hỗn–dừng thời gian ngắn cịn giải phóng thời gian Suspend dài hay không xác định
Tiến trình kích hoạt (Activate) thao tác chuẩn bị để tiến trình tiếp tục thực từđúng trạng thái mà bị dừng trước
Quá trình huỷ bỏ tiến trình phức tạp tiến trình cha Trong số
hệ thống tiến trình tựđộng bị huỷ bỏ theo, số hệ thống khác tiến trình tồn (độc lập với tiến trình cha)
Sự thay đổi độ ưu tiên tiến trình thường đơn giản thay đổi giá trị ưu tiên PCB hệđiều hành
2.1.3. Trạng thái tiến trình
Trong thời gian tồn mình, tiến trình tồn trang thái tách biệt (rời rạc) Sựđổi từ trạng thái sang trạng thái khác xảy kiện khác
A
B C
(5)Bài 2: Quản lý tiến trình
Ta nói tiến trình trạng thái hoạt động (Running State) xử
lý phục vụ Cịn tiến trình sẵn sàng để xử lý phục vụ chờ đến lượt tiến trình trạng thái sẵn sàng (Ready State) Nói tiến trình trạng thái bị cản, chặn (Blocked State) chờ kiện (ví dụ kết thúc tác vụ vào/ra) để tiếp tục hoạt động Ngồi trạng thái nói cịn số
trạng thái khác tạm thời xem xét quan hệ trạng thái
Để đơn giản xem xét trường hợp máy tính có xử lý Trong hệ
thống xử lý, thời điểm có tiến trình thực hiện, cịn số tiến trình nằm trạng thái sẵn sàng (Ready) số khác trạng thái bị chặn (Blocked) Do lập danh sách chứa tiến trình
trạng thái Ready danh sách tiến trình bị khóa Mỗi tiến trình sẵn sàng nằm danh sách thứ có mức độ ưu tiên riêng (Priority) mình– tức tiến trình xếp theo thứ tự tiến trình nằm đầu danh sách tiến trình có độ ưu tiên cao xử lý thực (có nhiều tiêu chuẩn để gán độưu tiên thay đổi độưu tiên) Cịn danh sách Blocked Process nói chung khơng có thứ Blocked Process giải phóng (Unblock) kiện mà chờ
2.1.4. Biến đổi trạng thái
Khi có chương trình (Task) bắt đầu thực hiện, hệ thống sinh tiến trình tương ứng tiến trình đưa vào danh sách tiến trình sẵn sàng, đơn giản đưa vào cuối danh sách – tức có mức ưu tiên thấp Tiến trình dịch chuyển dần lên phía đầu danh sách tiến trình trước xử lý phục vụ Khi tiến trình nằm ởđầu danh sách xử lý giải phóng tiến trình xử lý phục vụ lúc xảy thay đổi trạng thái tiến trình – chuyển từ trạng thái Ready sang Running Việc trao quyền sử dụng xử lý cho tiến trình danh sách tiến trình sẵn sàng gọi tiến trình dispatching, điều thực module chương trình nằm OS gọi Dispatcher
tiến trình đổi trạng thái biểu diễn ký hiệu: dispatch(Process name): Ready Running
Tiến trình sử dụng xử lý gọi tiến trình thực
Để ngăn chặn trường hợp vơ tình cố ý độc quyền chiếm tài nguyên hệ thống tiến trình, hệ điều hành sinh ngắt cứng đặc biệt ngắt thời gian (Timer Interrupt) nhằm xác định khoảng thời gian lớn mà tiến trình sử dụng
xử lý liên tục Nếu sau khoảng thời gian đó, tiến trình khơng tự giải phóng xử lý hệ thống sinh ngắt, theo quyền điều khiển chuyển lại cho hệ điều hành Lúc hệ điều hành
sẽ chuyển tiến trình thực từ trạng thái Running trạng thái Ready,
đưa vào danh sách tiến trình sẵn sàng, sau đưa tiến trình danh sách (tiến trình có mức ưu tiên cao nhất) vào thực (Running State) Các biến
đổi biểu diễn hai thao tác:
Running
Blocked Ready
Dispatch Blocking
(6)Bài 2: Quản lý tiến trình interval gone (Process name): Running Ready
dispatch (Process name): Ready Running
Nếu tiến trình sử dụng xử lý (Running State) trình hoạt
động thực tác vụ vào/ra (I/O) tự giải phóng xử lý (tự
mình chuyển vào trạng thái Blocked để chờ tác vụ vào/ra kết thúc) Sự chuyển trạng thái biểu diễn:
blocking (Process name): Running Blocked
Cịn tiến trình thay đổi trạng thái cuối cùng, kết thúc tác vụ vào/ra (hay nói chung xảy kiện mà tiến trình bị khóa chờ) lúc tiến trình chuyển từ trạng thái Blocked sang trạng thái Ready – sẵn sàng để thực tiếp Tiến trình biểu diễn:
waikup(Process name): Blocked Ready
Với trạng thái trên, có khả chuyển trạng thái tiến trình là:
Dispatch (Process name): Ready Running interval gone(Process name): Running Ready blocking (Process name): Running Blocked waikup (Process name): Blocked Ready
Chú ý:
Trong khả trên, có khả thứ sinh chương trình người sử dụng, cịn lại khả khác đối tượng khác bên tiến trình gây
Tạm dừng kích hoạt (Suspending and Activating):
Chúng ta biết khái niệm tạm dừng kích hoạt Các thao tác quan trọng lý do:
Nếu hệ thống hoạt động khơng
ổn định có dấu hiệu trục trặc tiến trình diễn cần tạm dừng để lại kích hoạt sau sửa lỗi
Người sử dụng (lập trình viên) cần tạm dừng (khơng phải huỷ bỏ) tiến trình để kiểm tra kết trung gian xem chương trình có hoạt động hay khơng
Một số tiến trình bị tạm dừng khoảng thời gian ngắn hệ thống tải sau lại kích hoạt có đủ tài ngun (hệ thống trở trạng thái bình thường)
So với mục trước, ta có thêm hai trạng thái ứng với thao tác tạm dừng kích hoạt Tác nhân dừng thân tiến trình tiến trình khác
Trong hệ có xử lý tiến trình dừng thân khơng có tiến trình khác chạy đồng thời với Cịn hệđiều hành có nhiều xử
lý tiến trình bị dừng tiến trình khác chạy xử lý khác
(7)Bài 2: Quản lý tiến trình
Một tiến trình trạng thái Ready bị dừng tiến trình khác, lúc xảy chuyển trạng thái:
Suspend (Process name): Ready Suspended–Ready
Tiến trình trạng thái Suspended–Ready chuyển trạng thái Ready tiến trình khác; tiến trình chuyển trạng thái biểu diễn bởi:
Activate (Process name): Suspend–Ready Ready
Tiến trình trạng thái Blocked chuyển sang trạng thái Suspend tiến trình khác, diễn sựđổi trạng thái:
Suspend (Process name): Blocked Suspend–Blocked
Và ngược lại, tiến trình trạng thái Suspended Blocked có thểđược kích hoạt tiến trình khác
Activate (Process name): Suspended–Blocked Blocked
Chúng ta đặt vấn đề khơng thay tạm dừng tiến trình trạng thái Blocked, ta chờđến có kiện (kết thúc I/O) mà tiến trình đợi xảy để tiến trình chuyển trạng thái Ready Tuy nhiên tác vụ I/O hay kiện tiến trình chờ khơng xảy hay xảy
Như thế, nhà thiết kế cần phải chọn lựa: tạm dừng Blocked Process (đưa
trạng thái Suspended–Blocked) phải sinh chế cho phép đưa tiến trình từ
trạng thái Blocked sang trạng thái Ready sau chuyển thành trạng thái Suspended–Ready kết thúc I/O hay diễn kiện tiến trình chờ
Mặt khác thao tác tạm dừng thường có mức ưu tiên cao cần thực ngay, phần lớn hệ thống sử dụng cách thứ Khi kiện tiến trình chờ xảy (nếu xảy ra), trạng thái tiến trình chuyển từ Suspended – Blocked sang trạng thái Suspended – Ready:
Incommingevent (Process name): Suspended–Blocked Suspended–Ready 2.1.5. Khái niệm luồng
Khái niệm:
Luồng dòng điều khiển phạm vi tiến trình Tiến trình đa luồng gồm nhiều dịng điều khiển khác không gian địa
Một luồng thường gọi tiến trình nhẹ (Lightweight Process–LWP), đơn vị việc sử dụng CPU; hình thành gồm:
Một định danh luồng (Thread ID)
Một bộđếm chương trình
Tập ghi
Ngăn xếp
Một luồng chia sẻ với luồng khác thuộc tiến trình phần mã, phần
liệu, tài nguyên hệđiều hành tập tin mở tín hiệu Một tiến trình truyền thống (hay tiến trình nặng) có luồng điều khiển đơn
Nếu tiến trình có nhiều luồng điều khiển, thực nhiều tác vụ thời điểm
Tại đa luồng?
(8)Bài 2: Quản lý tiến trình
Ví dụ: Một máy chủ Web thể phải phục vụ hàng trăm trình duyệt truy xuất đồng thời Nếu máy chủ Web chạy tiến trình đơn luồng truyền thống
phục vụ trình khách thời điểm Dẫn đến thời gian mà trình khách phải chờ yêu cầu phục vụ lớn
Giải pháp thứ sử dụng đa tiến trình, có tiến trình phục vụ chạy tiến trình đơn tiếp nhận yêu cầu Khi trình phục vụ nhận u cầu, tạo tiến trình để phục vụ
yêu cầu Phương pháp đa tiến trình cách sử dụng thơng thường trước luồng trở nên phổ
biến Tuy nhiên, việc tạo tiến trình chiếm nhiều tài nguyên thời gian hệ thống
Nếu tiến trình thực tác vụ
tiến trình có lại phải chịu tất chi phí đó? Thường hiệu cho tiến trình
gồm nhiều luồng phục vụ mục đích Tiếp cận đa luồng hóa tiến trình máy chủ Web Tiến trình tạo luồng riêng lắng nghe yêu cầu; yêu cầu
được thực khơng tạo tiến trình khác mà tạo luồng khác xử lý yêu cầu Ưu điểm đa luồng:
Khả đáp ứng: đa luồng ứng dụng cho phép chương trình tiếp tục chạy, chí phần bị khóa hay thực thao tác dài Do cải thiện sựđáp ứng người dùng Ví dụ, máy chủ Web đáp ứng yêu cầu người dùng luồng yêu cầu người dùng cũđang xử lý Chia sẻ tài nguyên: mặc định, luồng chia sẻ nhớ tài nguyên tiến trình mà chúng thuộc Thuận lợi việc chia sẻ mã cho phép ứng dụng có nhiều hoạt động luồng khác nằm không gian địa Kinh tế: cấp phát nhớ tài nguyên cho việc tạo tiến trình đắt Vì luồng chia sẻ tài nguyên tiến trình mà chúng thuộc nên kinh tế để tạo chuyển ngữ cảnh luồng Khó đểđánh giá theo kinh nghiệm khác biệt chi phí cho việc tạo trì tiến trình luồng, thường nhiều thời gian để tạo quản lý tiến trình luồng Ví dụ, hệđiều hành Sun Solaris 2, tạo tiến trình chậm khoảng 30 lần tạo luồng chuyển đổi ngữ cảnh chậm lần
Khai thác kiến trúc đa xử lý: lợi điểm đa luồng phát huy kiến trúc
đa xử lý, luồng thực thi song song xử lý khác Một tiến trình đơn luồng chạy CPU Đa luồng máy nhiều CPU gia tăng tính đồng hành Trong kiến trúc đơn xử lý, CPU thường chuyển đổi qua lại luồng nhanh để tạo hình ảnh song song thực tế luồng chạy thời điểm
Luồng người dùng luồng nhân:
Chúng ta vừa thảo luận xem xét luồng chiều hướng chung Tuy nhiên, hỗ trợ luồng cung cấp cấp người dùng, cho luồng người dùng
cấp nhân, cho luồng nhân
Luồng người dùng: hỗ trợ nhân cài đặt thư viện luồng cấp người dùng Thư viện cung cấp hỗ trợ cho việc tạo luồng, lập thời biểu, quản lý
(9)Bài 2: Quản lý tiến trình
mà khơng có hỗ trợ từ nhân Vì nhân khơng biết luồng cấp người dùng, tất
việc tạo luồng lập thời biểu thực không gian người dùng mà khơng cần can thiệp nhân Do đó, luồng cấp người dùng thường tạo quản lý nhanh, nhiên chúng có trở ngại Ví dụ, nhân đơn luồng luồng cấp người dùng thực lời gọi hệ thống nghẽn làm cho tồn tiến trình bị nghẽn
Luồng nhân: hỗ trợ trực tiếp hệ điều hành Nhân thực việc tạo luồng, lập thời biểu, quản lý khơng gian nhân Vì quản lý luồng thực hệ điều hành, luồng nhân thường tạo quản lý chậm luồng người dùng Tuy nhiên, nhân quản lý luồng luồng thực lời gọi hệ thống nghẽn, nhân lập thời biểu luồng khác ứng dụng thực thi Trong môi trường đa xử
lý, nhân lập thời biểu luồng xử lý khác Hầu hết hệ điều hành Windows NT, Windows 2000, Solaris 2, BeOS Tru64 UNIX (trước Digital UNIX) – hỗ trợ luồng nhân
2.1.6. Xử lý ngắt
Trong thực tế có nhiều trường hợp tương tự ngắt máy tính
Khái niệm:
Trong kỹ thuật máy tính, ngắt (Interrupt) kiện làm thay đổi trình tự thực lệnh bình thường xử lý
Tín hiệu ngắt phần cứng xử lý Khi xảy ngắt, trình tự thực sau:
Bước 1:Điều khiển chuyển cho hệđiều hành
Bước 2: Hệđiều hành lưu lại trạng thái tiến trình bị ngắt Trong nhiều hệ thống thơng tin lưu PCB tiến trình bị ngắt
Bước 3: Hệ điều hành phân tích loại ngắt chuyển điều khiển cho chương trình xử
lý ngắt tương ứng
Bước 4: Tác nhân gây ngắt thân tiến trình chạy, kiện liên quan khơng liên quan đến tiến trình
2.1.6.1. Các dạng ngắt
Chúng ta xem xét dạng ngắt hệ thống máy lớn IBM:
Dạng SVC– Interrupt
Ngắt tiến trình chạy sinh SVC chương trình ứng dụng sinh để
yêu cầu dịch vụ hệ thống, ví dụ thực tác vụ vào/ra, cấp phát
nhớ Cơ chế SVC giúp bảo vệ hệ điều hành, người sử dụng không tự xâm nhập OS mà phải u cầu dịch vụ thơng qua lệnh SVC Do hệ điều hành ln kiểm sốt thao tác vượt q giới hạn ứng dụng hồn tồn từ
chối yêu cầu
Dạng Ngắt vào/ra
Do thiết bị vào/ra sinh Các ngắt thông báo cho xử lý thay đổi trạng thái ví dụ kết thúc tác vụ in, máy in hết giấy,
Dạng External Interrupt
(10)Bài 2: Quản lý tiến trình Dạng Restart Interrupt
Sinh người điều kiển cần khởi động lại hệ thống, hay lệnh Restart SIGP xử lý khác hệ thống đa xử lý
Dạng Program check Interrupt
Ngắt sinh lỗi hoạt động chương trình ví dụ lệnh chia cho 0,
Dạng Machine check Interrupt
Sinh lỗi phần cứng hệ thống 2.1.6.2. Chuyển ngữ cảnh – (Context Switching)
Để xử lý loại ngắt, hệđiều hành có chương trình chun biệt gọi Interrupt Handler Như nêu, hệ thống có loại ngắt, hệđiều hành có IH (Interrupt Handler) để xử lý loại ngắt khác Khi có ngắt hệđiều hành ghi lại trạng thái tiến trình bị ngắt chuyển điều khiển cho chương trình xử lý ngắt tương ứng Điều thực phương pháp gọi “chuyển ngữ cảnh” (Context Switching)
Trong phương pháp sử dụng ghi trạng thái chương trình PSW (Program status word), chứa thứ tự thực lệnh thông tin khác liên quan
đến trạng thái tiến trình Có loại PSW:
PSW thời (Current)
PSW (New)
PSW cũ (Old)
Địa lệnh (sẽ thực hiện) chứa Current PSW, Current PSW chứa thông tin loại Interrupt bị cấm (Disable) hay phép (Enable) Bộ xử lý phản ứng với loại ngắt phép, ngắt bị cấm xử lý sau bỏ qua Có số Interrupt không bị cấm: SVC, Restart,
Trong hệ có xử lý có Current PSW, có New PSW (tương
ứng cho loại ngắt) Old PSW tương ứng New PSW loại ngắt chứa
địa chương trình xử lý ngắt (Interrupt Handler) loại
Khi xảy ngắt (nếu loại ngắt khơng bị cấm), lúc tựđộng (do phần cứng thực hiện) xảy tiến trình chuyển đổi PSW sau:
SVC
I/O
External
Restart
Program check
Machine check
SVC
I/O
External
Restart
Program check
Machine check
Current PSW