Vì thế, một yêu cầu quan trọng trong thiết kế hệ điều hành là thành phần quản lý tiến trình của hệ điều hành phải đáp ứng tất cả những gì liên quan đến tiến trình: Hệ điều hành phải ch
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
Trang 3MỤC LỤC
LỜI NÓI ĐẦU 1
CHƯƠNG 1: KHÁI NIỆM TIẾN TRÌNH VÀ CÁC VẤN ĐỀ LIÊN QUAN 2
1 Tiến trình 2
1.1 Khái niệm 2
1.2 Các loại tiến trình 2
1.3 Quá trình tạo một tiến trình 2
1.4 Các trạng thái của tiến trình 3
1.5 Liên lạc giữa các tiến trình 4
2 Lập lịch tiến trình 6
2.1 Các phương pháp lập lịch 6
2.2 Các kỹ thuật lập lịch 9
3 Luồng 11
3.1 Khái niệm: 11
3.2 Sự cơ động 11
4 Tài nguyên “Găng” 13
4.1 Khái niệm 13
4.2 Cách xử lý tài nguyên găng 13
CHƯƠNG 2: QUẢN LÝ TIẾN TRÌNH VỚI TASK MANAGER( WINDOWS 8) 14
1 Giới thiệu chung 14
2 Chức năng của các tap trong Task Manager 15
2.1 Tab Processes( tab tiến trình) 15
2.2 Tab Performance( Tab hiệu suất) 18
2.3 Tab App History 20
2.4 Tab Startup( Tab Khởi động) 21
2.5 Tab Users( Tab người dùng) 22
2.6 Tab Details( Tab chi tiết) 23
2.7 Tab Services 24
TÀI LIỆU THAM KHẢO 25
Trang 41
LỜI NÓI ĐẦU
Tất cả các hệ điều hành đa chương, từ các hệ điều hành đơn người sử dụng đến các
hệ điều hành có thể hỗ trợ đến hàng ngàn người sử dụng, đều phải xây dụng dựa trên khái niệm tiến trình Vì thế, một yêu cầu quan trọng trong thiết kế hệ điều hành là thành phần quản lý tiến trình của hệ điều hành phải đáp ứng tất cả những gì liên quan đến tiến trình:
Hệ điều hành phải cho phép thực hiện nhiều tiến trình đồng thời để khai thác tối đa thời gian xử lý của processor nhưng cũng cung cấp được thời gian hồi đáp hợp lý
Hệ điều hành phải cấp phát tài nguyên để tiến trình hoạt động một cách hiệu quả với một chính sách hợp lý nhưng không xảy ra tình trạng tắc nghẽn trong
cụ thể hơn là trình quản lý Task Manager
Bài tiểu luận gồm 2 chương chính:
thức cơ bản nhất, tổng quát nhất về tiến trình, quá trình tạo ra 1 tiến trình, các
kỹ thuật lập lịch tiến trình và 1 số khái niệm cơ bản liên quan
tiết các tab, cách sử dụng trong Task Manager và từ đó hiểu được cách mà Windows quản lý tiến trình các tiến trình của nó
Sau cùng nhóm chúng em xin gửi lời cảm ơn trân thành Thầy Nguyễn Thanh Hải
đã giúp chúng em rất nhiều trong việc hoàn thiện nội dung đề tài này Bài tiểu luận do nhóm thực hiện sẽ khó tránh khỏi những sai thiếu sót, nhóm chúng em rất mong muốn nhận được những đóng góp ý kiến của bạn đọc và quý thầy cô để bài tiểu luận được hoàn thiện và chính xác hơn
Trân trọng cảm ơn !
Trang 5- Một tiến trình thường bao gồm các thành phần sau :
Các lệnh, tức là các chỉ thị cho CPU thực hiện
Phần dữ liệu chứa các biến toàn cục
Ngăn xếp (stack) tiến trình: chứa các dữ liệu tạm thời, ví dụ khi gọi một hàm, các tham số cần thiết để khôi phục lại trạng thái trước khi gọi hàm sẽ được
lưu vào ngăn xếp
Tiến trình song song: là các tiến trình mà điểm khởi tạo của tiến trình này nằm ở
thân của các tiến trình khác, tức là có thể khởi tạo một tiến trình mới khi các tiến
trình trước đó chưa kết thúc Tiến trình song song được chia thành nhiều loại:
- Tiến trình song song độc lập
- Tiến trình song song có quan hệ thông tin
- Tiến trình song song phân cấp
- Tiến trình song song đồng mức
1.3 Quá trình tạo một tiến trình
Một tiến trình Windows được tạo khi mà ứng dụng gọi hàm tạo tiến trình, như là
hàm Create Process, Create Process As User, Create Process With Token Who hoặc Create Process With LogonW Để tạo một tiến trình thì cần những thông tin trong
thư viện client-server Kernel32.dll, trình thực thi của Windows và tiến trình hệ thống con của Windows
Để tạo một tiến trình với hàm API CreateProcess thì phải qua 6 bước cơ bản sau:
Mở tệp tin thực thi (.exe)
Tạo đối tượng thực thi tiến trình
Tạo luồng khởi tạo và stack, ngữ cảnh của nó
Trang 63
Thông báo cho hệ thống con của Windows về tiến trình mới được tạo
Bắt đầu thực thi luồng khởi tạo
Trong ngữ cảnh của luồng và tiến trình mới, hoàn thành việc khởi tạo của không gian địa chỉ(mục đích để nạp những thư viện liên kết động DLL)
và bắt đầu thực thi chương trình
Trước khi gọi image, hàm CreateProcess thực hiện những bước sau:
Trong hàm CreateProcess,mỗi thứ tự ưu tiên cho các tiến trình mới là - một bít độc lập trong cờ CreationFlags, do đó có thể tạo một tiến trình -
có nhiều mức ưu tiên, Windows sẽ xem xét và chọn thứ tự ưu tiên từ thấp đến cao để gán cho tiến trình mới tạo
Nếu không có một thứ tự ưu tiên nào thì mặc định sẽ được đặt là Nornal
Nếu ứng dụng có mức ưu tiên là Real-time và tiến trình gọi không có khả năng Nâng quyền ưu tiên, thì tiến trình mới tạo ra sẽ được gán mức ưu tiên là mức Cao
Tất cả các tiến trình tạo ra đều được gắn với 1 desktop nào đó
1.4 Các trạng thái của tiến trình
Là một thực thể động, tiến trình có thể thuộc những trạng thái khác nhau Có nhiều cách phân biệt trạng thái tiến trình Theo cách đơn giản nhất, tiến trình thuộc một trong hai trạng thái: chạy và không chạy Chạy là khi các lệnh của tiến trình được CPU thực hiện và không chạy là trường hợp ngược lại, ví dụ khi CPU đang được phân phối cho tiến trình khác hoặc khi tiến trình phải dừng để chờ kết quả vào/ra
Cách sử dụng hai trạng thái tiến trình là quá đơn giản và không đủ để phản ánh đầy đủ thông tin về trạng thái tiến trình Trên thực tế, hệ điều hành thường phân biệt năm trạng thái khác nhau của tiến trình: mới khởi tạo, sẵn sàng, chạy, chờ đợi, kết thúc
Ý nghĩa cụ thể năm trạng thái như sau:
- Trạng thái mới khởi tạo: tiến trình đang được tạo ra Hệ điều hành đã tạo ra các
thông tin về tiến trình tuy nhiên tiến trình chưa được thêm vào danh sách những tiến trình được phép thực hiện Thông thường, tiến trình ở trạng thái này chưa nằm trong bộ nhớ
- Trạng thái sẵn sàng: tiến trình chờ được cấp CPU để thực hiện lệnh của mình
- Trạng thái chạy: lệnh của tiến trình được CPU thực hiện Với những máy tính có
một CPU và CPU có một lõi, tại mỗi thời điểm chỉ có một tiến trình nằm trong trạng thái chạy
- Trạng thái chờ đợi: tiến trình chờ đợi một sự kiện gì đó xảy ra, ví dụ chờ tín hiệu
từ tiến trình khác hoặc chờ kết thúc quá trình vào/ra Trạng thái chờ đợi còn được gọi là trạng thái bị phong tỏa (blocked)
Trang 74
- Trạng thái kết thúc: tiến trình không còn nằm trong danh sách các tiến trình được
thực hiện nhưng vẫn chưa bị xóa Tiến trình thuộc về trạng thái này sau khi đã thực hiện xong hoặc bị tiến trình khác kết thúc
Hình 1 Mô tả chuyển trạng thái của tiến trình
1.5 Liên lạc giữa các tiến trình
1.5.1 Nhu cầu liên lạc giữa các tiến trình
Trong môi trường đa chương, một tiến trình không đơn độc trong hệ thống , mà
có thể ảnh hưởng đến các tiến trình khác, hoặc bị các tiến trình khác tác động Nói cách khác, các tiến trình là những thực thể độc lập , nhưng chúng vẫn có nhu cầu liên lạc với nhau để:
Chia sẻ thông tin: nhiều tiến trình có thể cùng quan tâm đến những dữ liệu
nào đó, do vậy hệ điều hành cần cung cấp một môi trường cho phép sự truy cập đồng thời đến các dữ liệu chung
Trang 85
Hợp tác hoàn thành tác vụ: đôi khi để đạt được một sự xử lý nhanh chóng, người ta
phân chia một tác vụ thành các công việc nhỏ có thể tiến hành song song Thường thì các công việc nhỏ này cần hợp tác với nhau để cùng hoàn thành tác vụ ban đầu, ví dụ
dữ liệu kết xuất của tiến trình này lại là dữ liệu nhập cho tiến trình khác …Trong các trường hợp đó, hệ điều hành cần cung cấp cơ chế để các tiến trình có thể trao đổi thông tin với nhau
Hình 2 Mô tả tiến trình cha con
1.5.2 Các vấn đề nảy sinh trong việc liên lạc giữa các tiến trình
Do mỗi tiến trình sỡ hữu một không gian địa chỉ riêng biệt, nên các tiến trình không thể liên lạc trực tiếp dễ dàng mà phải nhờ vào các cơ chế do hệ điều hành cung cấp Khi cung cấp cơ chế liên lạc cho các tiến trình, hệ điều hành thường phải tìm giải pháp cho các vấn đề chính yếu sau :
Liên kết tường minh hay tiềm ẩn (explicit naming/implicit naming) : tiến trình
có cần phải biết tiến trình nào đang trao đổi hay chia sẻ thông tin với nó ? Mối liên kết được gọi là tường minh khi được thiết lập rõ ràng , trực tiếp giữa các tiến trình, và là tiềm ẩn khi các tiến trình liên lạc với nhau thông qua một qui ước ngầm nào đó
Liên lạc theo chế độ đồng bộ hay không đồng bộ (blocking / non-blocking): khi một tiến trình trao đổi thông tin với một tiến trình khác, các tiến trình có
Trang 96
cần phải đợi cho thao tác liên lạc hoàn tất rồi mới tiếp tục các xử lý khác ? Các tiến trình liên lạc theo cơ chế đồng bộ sẽ chờ nhau hoàn tất việc liên lạc, còn các tiến trình liên lạc theo cơ chế nonblocking thì không
Liên lạc giữa các tiến trình trong hệ thống tập trung và hệ thống phân tán: cơ chế liên lạc giữa các tiến trình trong cùng một máy tính có sự khác biệt với việc liên lạc giữa các tiến trình giữa những máy tính khác nhau?
Hầu hết các hệ điều hành đưa ra nhiều cơ chế liên lạc khác nhau, mỗi cơ chế
có những đặc tính riêng, và thích hợp trong một hoàn cảnh chuyên biệt
vụ kiểu này như trên hình 8.2 Trong tất cả các hệ điều hành, chúng ta đều có thể tìm
thấy một lệnh gọi là hàm trễ Delay(), hoặc là một vài hàm có chức năng tương tự Hàm
này làm cho tác vụ bị khoá trong một thời gian xác định cho trước, thông thường thời
gian này được biểu diễn bằng xung đồng hồ (clock tick) Hình 8.2a cho ta thấy việc thực
hiện một tác vụ khi ta sử dụng lệnh Delay() đối với tác vụ có tính chu kỳ đó Trong trường hợp này, khoảng thời gian trễ là 3 clock tick Hoạt động của hệ thống phụ thuộc vào thời gian thực thi của tác vụ Nếu thời gian thực hiện nhỏ hơn 1 tick thì tác vụ sẽ thức dậy sau mỗi 3 tick như mong muốn Tuy nhiên, nếu tác vụ hoạt động quá 1 tick, khi đó, sau khi tác vụ gọi lệnh Delay(), nó vẫn sẽ bị khoá trong 3 clock tick Thế nhưng, trong ví dụ này, tác vụ thực tế là sẽ thức dậy sau mỗi 4 xung clock tick Đó không phải
là điều chúng ta mong muốn
Trang 107
Hình 3 Các tác vụ có tính chu kì
Lập lịch không theo chu kỳ
Một số tác vụ phải phản ứng lại các sự kiện xảy ra ngẫu nhiên tại các thời điểm khác nhau Một sự kiện có thể là việc một gói dữ liệu từ trên mạng được gửi đến nơi, việc một cái công tắc đóng lại để chỉ ra là bể nước đã đầy hoặc cũng có thể là sự kết thúc việc convert một tín hiệu tương tự sang số của bộ ADC và đang cần được đọc Thông thường, các sự kiện không đồng bộ này được giao tiếp với máy tính thông qua các ngắt Chương trình con dịch vụ ngắt phải có cách nào đó để kết nối sự xuất hiện của ngắt với tác vụ chịu trách nhiệm xử lý sự kiện
Lập lịch theo kiểu chiếm quyền thực thi và lập lịch không có chiếm quyền thực
thi
Có 2 phương thức cơ bản cho việc lập lịch một tác vụ: chiếm quyền thực thi và không chiếm quyền thực thi Xét 2 tác vụ: tác vụ 1 có mức ưu tiên thấp hơn đang
thực hiện và tác vụ 2 có mức ưu tiên cao hơn đang bị khoá để chờ một sự kiện xảy ra,
sự kiện này được thông báo bởi một tín hiệu ngắt Hình 8.3a cho thấy những gì xảy ra trong hệ thống không có tính chiếm quyền ưu tiên Chương trình con dịch vụ ngắt ISR làm cho tác vụ 2 với mức ưu tiên cao hơn chuyển từ trạng thái Khoá sang trạng thái Sẵn sàng Tuy nhiên, đến khi ISR được thực hiện xong thì tác vụ 1 với mức ưu tiên thấp hơn vẫn sẽ được tiếp tục thực thi tại điểm nó bị ngắt Sau đó, khi tác vụ 1 bị khoá để chờ sự kiện thì tác vụ 2 mới được chuyển sang trạng thái thực thi
Trang 118
Hình 4 Lập lịch: Có và không có chiếm quyền thực thi
Hình : Lập lịch Non-Preemptive và Preemptive
Trang 129
Bộ lập lịch ra hoạt động khi…
1 Khi tiến trình chuyển từ Running sang Waiting (Chờ I/O chờ tiến trình con)
2 Khi tiến trình chuyển từ Running sang Ready (do ngắt xảy ra)
3 Khi tiến trình chuyển từ Waiting sang Ready (khi kết thúc I/O)
4 Khi tiến trình kết thúc công việc
- Sơ đồ điều phối chỉ tiến hành trong tình huống 1 và 4 được gọi là điều phối
không tiếm quyền (Non-Preemptive): Tiến trình giữ CPU cho đến khi kết thúc bình thường hoặc khi chuyển sang trạng thái Waiting Dùng khi máy không có Timer/Counter.(Quá trình running nếu bị ngắt sẽ tiếp tục running sau đó)
- Sơ đồ điều phối tiến hành trong cả 4 tình huống được gọi là điều phối có tiếm
quyền (Preemptive)
- Non-Preemptive Scheduling: Có nghĩa là khi tiến trình P1 có thời điểm đến
trước P2 thì tiến trình P1 được thực hiện hết khoảng thời gian thực hiện, sau đó mới thực hiện tiến trình P2
- Preemptive Scheduling: Có nghĩa là khi có 3 tiến trình P1, P2, P3 có thời điểm
đến theo thứ tự đó thì tiến trình P1 sẽ được thực hiện với một khoảng thời gian cho phép sau đó bị tiến trình P2 hay P3 tiếm quyền Còn quá trình điều phối kế tiếp như thế nào là tuỳ thuộc vào thuật toán điều phối và độ ưu tiên của tiến trình
Sử dụng Preemptive Scheduling hiệu quả hơn do Non-Preemptive Scheduling tốn thời gian tổng của hệ thống
2.2 Các kỹ thuật lập lịch
FCFS
Trong cơ chế lập lịch đến trước được phụ vụ trước thì các quá tình được xử lý theo thứ tự mà nó xuất hiện yêu cầu và cho đến khi hoàn thành Cơ chế lập lịch này thuộc loại không ngắt được và có ưu điểm là dễ dàng thực thi Tuy nhiên, nó không phù hợp cho các hệ thống mà hỗ trợ nhiều người sử dụng vì có một sự biến đổi lớn về thời gian trung bình mà một quá trình hay tác vụ phải chờ đợi để được xử lý Hơn nữa do việc xử lý không ngắt được nên có hiện tượng chiếm hữu độc quyền bộ xử lý trong thời gian dài và có thể gây ra sự trễ bất thường trong quá trình thực hiện của các tác vụ phải chờ đợi khác
Shortest Job First - SJF
Trong cơ chế lập lịch này tác vụ có thời gian thực thi ngắn nhất sẽ có quyền ưu tiên cao nhất và sẽ được phục vụ trước Vấn đề chính gặp phải trong cơ chế lập lịch này
Trang 1310
là không biết trước được thời gian thực thi của các tác vụ tham gia trong chương trình
và thông thường phải áp dụng cơ chế tiên đoán và đánh giá dựa vào kinh nghiệm về các tác vụ thực thi trong hệ thống Điều này chắc chắn rất khó để luôn đảm bảo được độ chính xác Cơ chế lập lịch này có thể áp dụng cho cả loại ngắt được và không ngắt được
Rate monotonic (RM):
Phương pháp lập lịch RM có lẽ hiện này là thuật toán được biết tới nhiều nhất áp dụng cho các tác vụ hay quá trình độc lập Phương pháp này dựa trên một số giả thiết sau:
(1) Tất cả các tác vụ tham gia hệ thống phải có deadline kiểu chu kỳ
(2) Tất cả các tác vụ độc lập với nhau
(3) Thời gian thực hiện của các tác vụ biết trước và không đổi
(4) Thời gian chuyển đổi ngữ cảnh thực hiện là rất nhỏ và có thể bỏ qua
Thuật toán RM được thực thi theo nguyên lý gán mức ưu tiên cho các tác vụ dựa trên chu kỳ của chúng Tác vụ nào có chu kỳ nhỏ thì sẽ có được gán mức ưu tiên cao Theo nguyên lý này với các tác vụ chu kỳ không thay đổi thì RM sẽ là phương pháp lập lịch cho phép ngắt và mức ưu tiên cố định Tuy nhiên RM hỗ trợ yêu cầu hệ thống không tốt
Earliest deadline first (EDF)
Như đúng tên gọi của phương pháp, thuật toán lập lich theo phương pháp này sử dụng deadline của tác vụ hay như điều kiện ưu tiên để xử lý điều phối hoạt động Tác
vụ có deadline gần nhất sẽ có mức ưu tiên cao nhất và các tác vụ có deadline xa nhất sẽ nhận mức ưu tiên thấp nhất Ưu điểm nổi bật của phương pháp này là giới hạn có thể lập lịch đáp ứng được 100% cho tất cả các tập tác vụ Hơn nữa mức ưu tiên gán cho mỗi tác vụ trong quá trình hoạt động là động vì vậy chu kỳ của tác vụ có thể thay đổi bất kỳ lúc nào theo thời gian EDF có thể được áp dụng cho các tập tác vụ chu kỳ và cũng có thể mở rộng để đáp ứng cho các trường hợp các deadline thay đổi khác nhau theo chu
kỳ
Vấn đề chính của thuật toán lập lich EDF là không thể đảm bảo được tác vụ nào trong hệ thống có thể không được thực thi trong tình huống quá độ hệ thống bị quá tải Trong nhiều trường hợp mặc dù mức độ sử dụng trung bình nhỏ hơn 100% những vẫn
có thể trong một tình huống nào đó vẫn vượt qua khả năng đáp ứng của hệ thống tức là
sẽ có tác vụ không được đảm bảo thực thi đúng Trong những trường hợp như vậy cần phải điều khiển để biết tác vụ nào bị lỗi không thực hiện thành công hoặc tác vụ nào được thực hiện thành công trong quá trình quá độ
Minimum Laxity first (MLF)
Trang 1411
Cơ chế lập lịch này sẽ ưu tiên tác vụ nào còn ít thời gian còn lại để thực hiện nhất trước khi nó phải kết thúc để đảm bảo yêu cầu thực thi đúng Đây được xem là cơ chế lập lịch gán quyền ưu tiên động và dễ đạt được sự tối ưu về hiệu suất thực hiện và sự công bằng trong hệ thống
Round Robin
Đây là một cơ chế lập lịch phân bổ đều đặn, ngắt được và đơn giản Mỗi một tác
vụ được xử lý/phục vụ trong một khoảng thời gian nhất định và lặp lại theo một chu trình xuyên suốt toàn bộ các tác vụ tham gia trong hệ thống Khoảng thời gian phục vụ cho mỗi tác vụ trong quá trình là một sự thoả hiệp giữa thời gian thực hiện của các tác
vụ và thời gian thực hiện một chu trình Có thể chọn khoảng thời gian đó rất nhỏ và đôi lúc chúng ta không nhận được ra rằng đang có sự phân bổ thực hiện trong hệ thống Tuy nhiên nếu thời gian đó quá nhỏ có thể làm mất tính hiệu quả thực hiện toàn hệ thống vì cần nhiều thời gian trong việc chuyển đổi ngữ cảnh cho mỗi tác vụ sau mỗi chu trình thực hiện
3 Luồng
3.1 Khái niệm:
- Mỗi đơn vị thực hiện của tiến trình, tức là một chuỗi lệnh được cấp phát CPU để
thực hiện độc lập được gọi là một luồng thực hiện.Hệ điều hành hiện nay thường
hỗ trợ đa luồng
- Đa luồng là cho phép nhiều chuỗi lệnh được thực hiện cùng lúc trong phạm vi
một tiến trình
- Có thể tạo ra và quản lý luồng ở hai mức: mức người dùng và mức nhân Luồng
mức người dùng được tạo ra và quản lý không có sự hỗ trợ của hệ điều hành Trong khi đó, luồng mức nhân được tạo ra nhờ hệ điều hành và được hệ điều hành quản lý Luồng mức nhân còn được gọi là các tiểu trình để nhấn mạnh sự
hỗ trợ trực tiếp của hệ điều hành tương tự như đối với tiến trình
- Những ưu điểm của mô hình đa luồng:
Tăng hiệu năng và tiết kiệm thời gian
Dễ dàng chia sẻ tài nguyên và thông tin
Tăng tính đáp ứng
Tận dụng được kiến trúc xử lý với nhiều CPU
Thuận lợi cho việc tổ chức chương trình
3.2 Sự cơ động
Nhiều gói phần mềm chạy trên các máy để bàn PC là đa luồng Điển hình, một ứng dụng được cài đặt như một quá trình riêng rẻ với nhiều luồng điều khiển Một trình duyệt Web có thể có một luồng hiển thị hình ảnh, văn bản trong khi một luồng khác lấy