Bài giảng Hệ điều hành - Chương 2: Tiến trình và luồng - Phạm Thanh Bình

Thực hiện tuần tự và song song Tiến trình là gì? Khối mô tả tiến trình Các hình thức tổ chức tiến trình Luồng là gì? Phân biệt tiến trình và luồng

ppt60 trang | Chia sẻ: thuongdt324 | Lượt xem: 886 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Bài giảng Hệ điều hành - Chương 2: Tiến trình và luồng - Phạm Thanh Bình, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
HỆ ĐIỀU HÀNHGiảng viên: Ths Phạm Thanh BìnhBộ môn Kỹ thuật máy tính & mạngộ môn Kỹ thuật máy tính & mạng – Khoa CNTTChương 2: TIẾN TRÌNH VÀ LUỒNG Các khái niệm Các trạng thái của một tiến trình Điều độ tiến trìnhBộ môn Kỹ thuật máy tính & mạng – Khoa CNTTBài 2.1 – Các khái niệm Thực hiện tuần tự và song song Tiến trình là gì? Khối mô tả tiến trình Các hình thức tổ chức tiến trình Luồng là gì? Phân biệt tiến trình và luồngBộ môn Kỹ thuật máy tính & mạng – Khoa CNTTThực hiện tuần tự và song song Thực hiện tuần tự: Tại một thời điểm chỉ có thể thực hiện một chương trình, khi chương trình đó thực hiện xong thì mới chạy được chương trình khác.Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Thực hiện song song: Có thể chạy nhiều chương trình cùng một lúcBộ môn Kỹ thuật máy tính & mạng – Khoa CNTTTiến trình là gì? Một tiến trình (Process) là sự thực hiện một chương trình Mỗi tiến trình sẽ được chạy trong khoảng thời gian (vài chục hay vài trăm mili giây), sau đó nó sẽ chuyển CPU cho tiến trình khác Tạo ra cảm giác các chương trình chạy song songBộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Làm cách nào để phân biệt được tiến trình này với tiến trình khác trong hệ thống? Mỗi tiến trình cần có đặc trưng riêng, như ID của tiến trình, tài nguyên của tiến trình...Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTKhối mô tả tiến trìnhLà nơi chứa những đặc trưng của một tiến trình, bao gồm: Biến trạng thái: Lưu giữ trạng thái của tiến trình (Sẵn sàng, Đang thực hiện, Ngắt) Vùng nhớ lưu giá trị các thanh ghi mà tiến trình sử dụng Thông tin về các tài nguyên mà tiến trình sử dụng Thông tin phục vụ cho việc liên lạc với các tiến trình khác (nếu có)Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Hệ điều hành phải có công cụ để quản lý các tiến trình Mỗi hệ điều hành thường có một tập hợp các hàm quản lý tiến trình như Khởi tạo tiến trình, Huỷ tiến trình... Ví dụ: Chương trình “Windows Task Manager”Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTCác hình thức tổ chức tiến trình Độc lập Có quan hệ thông tin Phân cấp Đồng mứcBộ môn Kỹ thuật máy tính & mạng – Khoa CNTTCác hàm quản lý tiến trình trên Windows Hàm API (Application Program Interface) Các hàm Create, Terminate, Open... Hàng đợi thông báo, các hàm trao đổi thông báo PostMessage, SendMessage... ...Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTLuồng là gì? Trong một chương trình có thể có nhiều công việc cần làm Các công việc đó cũng có thể được thực hiện song song, mỗi công việc sẽ ứng với một luồng (Thread) Hệ điều hành cũng có các hàm quản lý luồng: Khởi tạo luồng, Huỷ luồng... (tương tự như quản lý tiến trình)Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTPhân biệt tiến trình và luồng Các tiến trình sử dụng các không gian nhớ độc lập Các luồng có thể sử dụng chung không gian nhớ của chương trình (biến toàn cục), và có thể có vùng nhớ của riêng nó (biến cục bộ) ...Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTCách sử dụng hàm API Khai báo hàm (tuỳ từng ngôn ngữ): + Biết được các tham số của hàm + Biết được hàm nằm trong file DLL nào Gọi hàm để sử dụngBÀI TẬPBộ môn Kỹ thuật máy tính & mạng – Khoa CNTTBài 2.2 – Các trạng thái của một tiến trình Tại một thời điểm, tiến trình có thể ở một trong ba trạng thái sau: Trạng thái thực hiện: là trạng thái mà tiến trình đang sử dụng CPU để thực hiện lệnh Trạng thái sẵn sàng: Tiến trình đã được phân phối đầy đủ mọi tài nguyên, chỉ trừ CPU Trạng thái ngắt: Tiến trình còn thiếu một vài điều kiện nào đó thì mới chuyển sang trạng thái sẵn sàngBộ môn Kỹ thuật máy tính & mạng – Khoa CNTTQuá trình chuyển đổi trạng thái...Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTBài 2.3 – Điều độ tiến trình Tài nguyên găng Điều độ tiến trình Các giải thuật điều độBộ môn Kỹ thuật máy tính & mạng – Khoa CNTTTài nguyên găng Tài nguyên găng là loại tài nguyên mà tại một thời điểm chỉ có thể phục vụ cho một đối tượng Ví dụ: CPU, một ô nhớ, máy in...Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTĐiều độ tiến trình Điều độ tiến trình (theo nghĩa tổng quát) là sự tổ chức thực hiện các tiến trình theo một giải thuật nào đó, nhằm tránh sự sung đột giữa các tiến trình về mặt tài nguyênBộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Công tác điều độ phải thoả mãn các yêu cầu sau: Mỗi thời điểm chỉ có một tiến trình nằm trong đoạn găng Không tiến trình nào được phép ở lâu vô hạn trong đoạn găng Không tiến trình nào phải chờ vô hạn trước đoạn găngBộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Điều độ tiến trình (theo nghĩa hẹp) là sự tổ chức, phân phối tài nguyên CPU cho các tiến trình theo một giải thuật nào đó, nhằm đảm bảo tốc độ thực hiện của các tiến trình và hiệu quả sử dụng CPUBộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Các thuật ngữ: Điều độ = scheduling Bộ phận điều độ = scheduler Giải thuật điều độ = scheduling algorithm Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTCác giải thuật điều độ FCFS (First-Come First-Served ) Đến trước phục vụ trước SJF (Shortest Job First) Ưu tiên tiến trình ngắn nhất SRTN (Shortest Remaining Time Next) Ưu tiên tiến trình có thời gian còn lại ít nhất Round-Robin Xếp hàng vòng tròn ...Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTBÀI TẬP Mục đích: Tìm hiểu về lập trình ngắt để chạy song song hai chương trình Tránh xung đột khi hai chương trình sử dụng chung một tài nguyên Ngôn ngữ lập trình: C/C++Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTÔn tập: Khái niệm ngắt Phân loại ngắt Các bước xử lý ngắt Ngắt kép và các giải pháp xử lý Tìm hiểu ngắt thời gian và ngắt bàn phím Lập trình ngắtBộ môn Kỹ thuật máy tính & mạng – Khoa CNTTKhái niệm ngắt Ngắt là hành động dừng chương trình đang chạy để thực hiện một chương trình khác (chương trình này được gọi là chương trình xử lý ngắt). Bộ VXL sẽ dừng các công việc đang thực hiện khi nhận được tín hiệu yêu cầu ngắt. Sau đó nó trao quyền điều khiển lại cho chương trình xử lý ngắt. Tín hiệu yêu cầu ngắt có thể do một thiết bị phần cứng hoặc do một lệnh INT trong chương trình sinh ra.Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTLệnh 1Lệnh 2...INT ...Lệnh 1Lệnh 2...IRETChương trình bị ngắtChương trình xử lý ngắtQuá trình ngắt được mô tả trong hình dưới đây:Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Chương trình xử lý ngắt cần được kết thúc bằng lệnh IRET để sau khi thực hiện xong có thể quay trở về thực hiện tiếp chương trình bị ngắt trước đó. Có nhiều loại tín hiệu ngắt khác nhau, để phân biệt các ngắt cần dựa vào số hiệu của chúng. Bộ vi xử lý 8086 có thể quản lý 256 ngắt, được đánh số lần lượt từ 0, 1, 2,..., FFh. Dưới đây là bảng danh sách các ngắt: Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTSố hiệu ngắtChức năng0 – 1FhNgắt của BIOS20h – 3FhNgắt của DOS40h – 7FhDự trữ80h – F0hDùng cho chương trình BASIC trong ROMF1h – FFhKhông sử dụngBộ môn Kỹ thuật máy tính & mạng – Khoa CNTTGiải thích: Chương trình xử lý ngắt có thể là một bộ phận của BIOS hay của DOS, cũng có thể do người sử dụng tự viết. Ta cần phân biệt rõ hai khái niệm: “Ngắt” và “Chương trình xử lý ngắt”. Không phải số hiệu ngắt nào cũng có có chương trình xử lý ngắt tương ứng.Khi một ngắt có số hiệu từ 0 – 1Fh xuất hiện thì chúng sẽ được xử lý bởi các chương trình viết sẵn nằm trong ROM BIOS (chủ yếu là giải quyết các yêu cầu vào/ ra cơ bản). Còn nếu ngắt có số hiệu từ 20h – 3Fh thì sẽ do hệ điều hành DOS xử lý. Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTPhân loại ngắt: Để phân loại cần dựa trên một tiêu chí nào đó, ở đây ta sẽ phân loại ngắt dựa trên cách thức phát sinh ngắt, tạm chia làm hai loại sau: Ngắt mềm Ngắt cứng Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Ngắt mềm Ta gọi một ngắt là ngắt mềm nếu nó được phát sinh khi có lời gọi ngắt bằng lệnh INT trong chương trình. Cú pháp của lệnh INT là: INT Ví dụ: INT 21h ;Gọi ngắt 21h của DOS INT 13h ;Gọi ngắt 13h của BIOSBộ môn Kỹ thuật máy tính & mạng – Khoa CNTTNgắt cứngMột ngắt cứng phát sinh khi có một thiết bị phần cứng gửi tín hiệu yêu cầu ngắt tới bộ vi xử lý.Ví dụ: Khi ta gõ một phím trên bàn phím hay bấm chuột, sẽ có tín hiệu ngắt gửi tới bộ vi xử lý để yêu cầu xử lý hành động vừa thực hiện.Các ngắt được kích hoạt từ thiết bị ngoài (bàn phím, chuột...) giống như ví dụ trên được gọi là Ngắt cứng ngoài. Còn nếu ngắt phát sinh bởi các kinh kiện bổ trợ nằm trên mainboard thì được gọi là Ngắt cứng trong (hay ngắt cứng nội bộ). Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTCác bước xử lý ngắt Lưu đặc trưng của sự kiện gây ngắt vào ô nhớ quy định ( tức là nguồn gốc phát sinh ngắt) Lưu lại trạng thái của tiến trình bị ngắt (nội dung các thanh ghi, thông tin về các tài nguyên...) Chuyển quyền điều khiển cho chương trình xử lý ngắt Thực hiện chương trình xử lý ngắt để xử lý sự kiện tương ứng Khôi phục lại tiến trình bị ngắt (nhờ các thông tin đã lưu)Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTNgắt kép và các giải pháp xử lý Ngắt kép là hiện tượng xuất hiện đồng thời nhiều tín hiện ngắt gửi về CPU CPU sẽ xử lý ngắt nào trước?Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTCác giải pháp xử lý ngắt kép Thiết lập mức ưu tiên cho các ngắt Sử dụng hàng đợi Chắn ngắt ...Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTThiết lập mức ưu tiên cho các ngắt Ví dụ: Sử dụng IC 8259 để điều khiển ngắt. Các tín hiệu ngắt không được đưa trực tiếp tới CPU mà phải đưa qua IC điều khiển ngắt 8259 IC điều khiển ngắt sẽ phân loại chúng rồi chuyển tới CPU theo các mức ưu tiên khác nhau Các đường tín hiệu ngắt: IRQ 0, IRQ 1,... IRQ 15Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTSử dụng hàng đợi Các tín hiệu ngắt sẽ được xếp vào hàng đợi để chờ xử lý, ngắt nào xuất hiện trước sẽ được xử lý trước...Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTChắn ngắt Ví dụ: Sử dụng các lệnh CLI và STI để điều khiển ngắt CLI (Clear Interrupt Flag): xoá cờ ngắt IF=0 Sau lệnh này thì các ngắt cứng sẽ bị chặn (không còn tác dụng) STI (Set Interrupt Flag): Thiết lập cờ ngắt IF=1 Sau lệnh này thì các ngắt cứng có tác dụng trở lạiBộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Người lập trình có thể sử dụng hai lệnh trên để quản lý các ngắt: ... CLI ;Chắn ngắt ... Đoạn chương trình không ... thể bị ngắt STI ;Mở chắn ...Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTTìm hiểu ngắt thời gian 8h IC 8253 chuyên làm nhiệm vụ phát sinh ngắt này Cứ khoảng 55 ms (1/18.21 s) thì IC này lại gửi một tín hiệu ngắt tới CPU Ta có thể viết chương trình xử lý cho ngắt này, chương trình đó sẽ tự động được chạy cứ sau ~55 msBộ môn Kỹ thuật máy tính & mạng – Khoa CNTTTìm hiểu ngắt bàn phím Khi một phím được ấn sẽ xuất hiện một tín hiệu ngắt gửi về CPU Ta có thể viết chương trình xử lý cho ngắt này, chương trình đó sẽ tự động được chạy mỗi khi ấn phímBộ môn Kỹ thuật máy tính & mạng – Khoa CNTTLập trình ngắt Gọi ngắt bằng Assembly Gọi ngắt bằng C/C++ Chương trình xử lý ngắt của người dùngBộ môn Kỹ thuật máy tính & mạng – Khoa CNTTGọi ngắt bằng Assembly Dùng lệnh INT: INT Ví dụ: Hiện kí tự ‘M’ ra màn hìnhBộ môn Kỹ thuật máy tính & mạng – Khoa CNTTGọi ngắt bằng C/C++Cách 1: Sử dụng các giả thanh ghi: _AX, _BX, _CX, _DX _AH, _AL, _BH, _BL, _CH, _CL, _DH, _DL _SI, _DI, _SP, _BP _CS, _DS, _ES, _SS Hàm gọi ngắt:void geninterrupt(int SốHiệuNgắt);Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Ví dụ: Hiện kí tự ‘M’ ra màn hìnhBộ môn Kỹ thuật máy tính & mạng – Khoa CNTTCách 2: Sử dụng các cấu trúc và hợp REGS: (xem trang sau) Hàm gọi ngắt:int86(SốHiệuNgắt, Regs đầu vào, Regs đầu ra);int86x(SốHiệuNgắt, Regs vào, Regs ra, SRegs);Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTCác cấu trúc và hợp trong “dos.h”struct WORDREGS //Các thanh ghi 16 bít và cờ {unsigned int ax, bx, cx, dx, si, di, cflag, flags;};struct BYTEREGS //Các thanh ghi 8 bít {unsigned char al, ah, bl, bh, cl, ch, dl, dh;};struct SREGS //Các thanh ghi đoạn {unsigned int es, cs, ss, ds;};union REGS //Kết hợp các thanh ghi 8 bít và 16 bít { struct WORDREGS x; struct BYTEREGS h; }Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Ví dụ: Đặt thanh ghi AH bằng 2(cách 1 dùng struct, cách 2 dùng union)Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTChương trình xử lý ngắt của người dùng Các công việc mà hệ thống phải thực hiện khi có tín hiệu ngắt Các bước để thực hiện chương trình xử lý ngắt của người dùng (4 bước) Cấu trúc của một chương trình xử lý ngắtBộ môn Kỹ thuật máy tính & mạng – Khoa CNTTCác công việc mà hệ thống phải thực hiện khi có tín hiệu ngắt ...Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTCác bước để thực hiện chương trình xử lý ngắt của người dùng Có 4 bước sau đây:Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTBước 1: Viết hàm xử lý ngắt mớiHàm này phải thoả mãn các yêu cầu sau: Khai báo hàm có dạng:void interrupt NewInt(...); hoặc: void interrupt NewInt(INTERRUPT_REGS); Nội dung hàm càng đơn giản càng tốt (dùng các phép tính với số nguyên hay ký tự, các phép logic), không nên dùng lệnh gọi ngắtBộ môn Kỹ thuật máy tính & mạng – Khoa CNTTĐịnh nghĩa danh sách thanh ghi INTERRUPT_REGS#define u_int unsigned int#define INTERRUPT_REGS u_int bp, u_int di, \ u_int si, u_int ds, u_int es, u_int dx, u_int cx, \ u_int bx, u_int ax, u_int ip, u_int cs, u_int flagsBộ môn Kỹ thuật máy tính & mạng – Khoa CNTTBước 2: Lưu lại địa chỉ của chương trình xử lý ngắt cũ (để sau này có thể khôi phục lại) Sử dụng hàm getvect:getvect(Số hiệu ngắt) Ví dụ: Lưu địa chỉ của ngắt 15hvoid interrupt OldInt(...);OldInt = getvect(0x15);Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTBước 3: Đặt địa chỉ của hàm xử lý ngắt mới vào vị trí tương ứng trên bảng vector ngắt Sử dụng hàm setvect:void setvect(Số hiệu ngắt, Địa chỉ hàm xử lý ngắt); Ví dụ: Đặt địa chỉ của hàm NewInt vào bảng vector ngắt để thay thế cho hàm xử lý ngắt 15h cũsetvect(0x15, NewInt);Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTBước 4: Khôi phục lại chương trình xử lý ngắt cũ Ví dụ: Khôi phục lại chương trình xử lý ngắt 15h cũsetvect(0x15, OldInt);Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTChú ý: Khi sử dụng hàm setvect cần thiết lập chắn ngắt: Ví dụ: disable(); //Chắn ngắt trước khi gọi setvect setvect(0x15, NewInt); enable(); //Mở chắnBộ môn Kỹ thuật máy tính & mạng – Khoa CNTTCấu trúc của một chương trình xử lý ngắt ...Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTTHết Phần 2Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT