Báo cáo bài tập lớn nguyên lý hệ điều hành

30 827 2
Báo cáo bài tập lớn nguyên lý hệ điều hành

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Mục Lục Mục Lục 2 1 Tổng quan về tiến trình Linux 6 1.1 Khái niệm 6 1.2 Phân loại tiến trình: 7 1.3 Các trạng thái của tiến trình 9 1.4 Cấu trúc của một tiến trình 10 1.5 Bảng thông tin tiến trình và xem thông tin tiến trình 12 2 Quản lý tiến trình 12 2.1 Tạo lập tiến trình 13 2.2 Dừng một tiến trình 18 2.3 Cấp phát tài nguyên cho tiến trình 19 2.4 Giám sát và điều phối tiến trình 21 2.5 Kiểm soát và đợi tiến trình con 26 2.6 Liên lạc giữa các tiến trình 29 3 Tổng Kết 31 4 Tài liệu tham khảo 31

Bài tập lớn Nguyên lý hệ điều hành Mục Lục Mục Lục Tổng quan tiến trình Linux 1.1 Khái niệm 1.2 Phân loại tiến trình: .5 1.3 Các trạng thái tiến trình 1.4 Cấu trúc tiến trình 1.5 Bảng thông tin tiến trình xem thông tin tiến trình 10 Quản lý tiến trình 11 2.1 Tạo lập tiến trình 11 2.2 Dừng tiến trình 17 2.3 Cấp phát tài nguyên cho tiến trình 18 2.4 Giám sát điều phối tiến trình 19 2.5 Kiểm soát đợi tiến trình 25 2.6 Liên lạc tiến trình 27 Tổng Kết 29 Tài liệu tham khảo .30 Bài tập lớn Nguyên lý hệ điều hành Lời nói đầu Trước tìm hiểu Linux, nói sơ qua hệ điều hành UNIX- tảng Linux UNIX hệ điều hành Kenneth Thompson, Dennis Ritchie số người khác phát triển vào năm 1969 phòng nghiên cứu Bell Labs công ty AT&T Mỹ với mục đích tạo môi trường làm việc đa người dùng khác với Windows Microsoft hệ điều hành người dùng Phiên UNIX đời năm 1971 với 60 câu lệnh ngôn ngữ lập trình đơn giản Từ trở đi, Hệ Điều Hành phát triển mạnh nhiên nhược điểm chi phí đắt đỏ cần có nhiều máy tính hoạt động Điểm nhấn quan trọng giúp UNIX trở nệ phổ biến rông rãi vào năm 1983, dự án GNU Richard Stallman khởi xướng với mục tiêu tạo hệ thống phần mềm tương thích với UNIX hoàn toàn miễn phí Đến năm 1990, phần mềm biên dịch, thư viện, phần mềm xử lý văn bản, Unix shell hệ thống quản lý cửa sổ tích hợp thành công nhiều điểm yếu Linux kernel nhân Hệ Điều Hành viết dựa tảng Hệ Điều Hành UNIX sinh viên người Phần Lan có tên Linus Torvalds xây dựng Linux ban đầu có tên Freax, sau đó, người bạn Linus đặt tên cho thư mục chứa kernel FTP server quản trị Linux Và tên phổ biến rộng khắp Đến nay, toàn giới có 10 triệu Linux cài đặt với nhiều phiên biến thể khác Ví dụ Ubuntu, Fedora, Debian hay tiếng dùng nhiều Android- Hệ Điều Hành dùng smartphone đại Linux ngày phổ biến toàn giới lí do: Linux hệ điều hành đa người dùng: hệ điều hành đa người dùng hệ điều hành cho phép nhiều người dùng đăng nhập sử dụng chạy tiến trình hệ điều hành thời điểm  Linux hệ điều hành đa chức năng: ta chạy nhiều ứng dụng thời điểm Hiện nay, tất hệ điều hành làm việc này, nhiên, hiệu suất chạy đồng thời ứng dụng không không ổn định Bài tập lớn Nguyên lý hệ điều hành  Linux hệ điều hành ổn định: Linux hệ điều hành có tính ổn định tuyệt vời dựa cấu trúc hệ điều hành modul tích hợp Khi ta cài thêm phần mềm hay thay đổi cấu hình hệ thống không cần phải khởi động lại hệ thống Việc giúp giảm thời gian quản trị hệ thống dễ dàng  Linux hệ điều hành với nhiều phần mềm có sẵn: Khi ta cài đặt thành công linux ta sử dụng OpenOffice(tương đương với office Microsoft), Gimp(giống với photoshop) nhiều phần mềm khác Ngoài ra, ta download cài đặt miễn phí phần mềm từ trang chủ  Linux hỗ trợ hầu hết phần cứng hệ thống: driver tích hợp sẵn kernel nê cài đặt xong ta cài thêm driver cài hệ điều hành Windows  Linux hệ điều hành chạy nhanh sạch: Linux chạy nhanh miễn dịch với hầu hết virus từ hệ điều hành Windows nên ta hoàn toàn yên tâm sử dụng Quản lý tiến trình công việc quan trọng hệ điều hành Nếu có chế quản lý tốt hệ thống ổn định mượt mà Sau đây, ta tìm hiểu kĩ tiến trình quản lý tiến trình hệ điều hành Linux Bài tập lớn Nguyên lý hệ điều hành Tổng quan tiến trình Linux 1.1 Khái niệm Tiến trình phận chương trình thực hiện, sở hữu trỏ lệnh, tập ghi biến Ngoài ra, tiến trình yêu cầu số tài nguyên từ hệ thống CPU, nhớ thiết bị Ngoài có nhiều khái niệm khác tiến trình Ở đây, xin giới thiệu hai định nghĩa tiến trình sau: + Định nghĩa Saltzer: Tiến trình chương trình processor logic thực + Định nghĩa Horning & Rendell: Tiến trình trình chuyển từ trạng thái qua trạng thái khác tác động hàm hành động từ trạng thái ban đầu Ta cần phân biệt rõ hai khái niệm chương trình tiến trình Chương trình thực thể thụ động chứa đựng thị điều khiển máy tính thực thi tác vụ cụ thể Khi cho thực thi tác vụ này, chương trình chuyển thành tiến trình- thực thể hoạt động, với trỏ lệnh xác định điạ thi hành kèm theo tập tài nguyên phục vụ cho hoạt động tiến trình Định nghĩa Saltzer cho thấy góc độ thực thi tiến trình hoàn toàn tương tự chương trình, khác chỗ: Tiến trình processor logic thực mà processor vật lý Định nghĩa Horning & Rendell lại rằng: Tiến trình thực chuyển đổi từ trình sang trình khác thay đổi thân tiến trình mà tác động bên ngoài, cụ thể phận điều phối tiến trình hệ điều hành Những điều thấy rõ trình phân tích 1.2 Phân loại tiến trình: Các tiến trình hệ thống chia thành hai loại: Tiến trình tiến trình song song Tiến trình tiến trình mà điểm khởi tạo điểm kết thúc tiến trình trước Tiến trình song song tiến Bài tập lớn Nguyên lý hệ điều hành trình mà điểm khởi tạo tiến trình mằn thân tiến trình khác, tức khởi tạo tiến trình tiến trình trước chưa kết thúc Tiến trình song song chia thành nhiều loại: • Tiến trình song song độc lập: tiến trình hoạt động song song quan hệ thông tin với nhau, trường hợp hệ điều hành phải thiết lập chế bảo vệ liệu tiến trình, cấp phát tài nguyên cho tiến trình cách hợp lý • Tiến trình song song có quan hệ thông tin: trình hoạt động tiến trình thường trao đổi thông tin với nhau, số trường hợp tiến trình gửi thông báo cần phải nhận tín hiệu từ tiến trình nhận để tiếp tục, điều dễ dẫn đến bế tắc tiến trình nhận tín hiệu không trạng thái nhận hay tiến trình gửi không trạng thái nhận thông báo trả lời • Tiến trình song song phân cấp: Trong trình hoạt động tiến trình khởi tạo tiến trình khác hoạt động song song với nó, tiến trình khởi tạo gọi tiến trình cha, tiến trình tạo gọi tiến trình Trong mô hình hệ điều hành phải giải vấn đề cấp phát tài nguyên cho tiến trình Tiến trình nhận tài nguyên đâu, từ tiến trình cha hay từ hệ thống Để giải vấn đề hệ điều hành đưa mô hình quản lý tài nguyên: Thứ nhất, mô hình tập trung, mô hình hệ điều hành chịu trách nhiệm phân phối tài nguyên cho tất tiến trình hệ thống Thứ hai, mô hình phân tán, mô hình hệ điều hành cho phép tiến trình nhận tài nguyên từ tiến trình cha, tức tiến trình khởi tạo có nhiệm vụ nhận tài nguyên từ hệ điều hành để cấp phát cho tiến trình mà tạo ra, có nhiệm vụ thu hồi lại tài nguyên cấp phát trả cho hệ điều hành trước kết thúc • Tiến trình song song đồng mức: tiến trình hoạt động song song sử dụng chung tài nguyên theo nguyên tắc lần lượt, tiến trình sau khoảng thời gian chiếm giữ tài nguyên phải tự động trả lại tài nguyên cho tiến trình Các tiến trình xuất hệ điều hành đơn nhiệm đa chương, hệ điều hành MS_DOS, loại tiến trình tồn nhiều hạn chế, điển hình Bài tập lớn Nguyên lý hệ điều hành không khai thác tối đa thời gian xử lý processor Các tiến trình song song xuất hệ điều hành đa nhiệm đa chương, hệ thống uniprocessor multiprocessor Nhưng song song thực, có hệ thống multiprocessor, hệ thống processor chịu trách nhiệm thực tiến trình Sự song song hệ thống uniprocessor song song giả, tiến trình song song hệ thống thực chất tiến trình thay sử dụng processor, tiến trình chạy dừng lại để nhường processor cho tiến trình khác chạy tiếp tục lại sau có processor Đây trường hợp mà ta cho rằng: điểm khởi tạo tiến trình nằm thân tiến trình khác Hình vẽ sau minh họa khác nhau, mặt thực hiện, tiến trình song song/ đồng thời hệ thống uniprocessor với tiến trình song song/ đồng thời hệ thống multiprocessor P1 P2 P3 Time a Trong hệ thống uniprocessor P1 P2 P3 Time b Trong hệ thống Multiprocessor Hình 2.1: Sự thực đồng thời tiến trình hệ thống uniprocessor (a) hệ thống multiprocessor (b) Trong tài liệu này, khảo sát hoạt động tiến trình song song (hay đồng thời) hệ thống uniprocessor Đối với người sử dụng hệ thống có hai nhóm tiến trình Thứ nhất, tiến trình hệ điều hành Thứ hai, tiến trình chương trình người sử dụng Các Bài tập lớn Nguyên lý hệ điều hành tiến trình hệ điều hành hoạt động chế độ đặc quyền, nhờ mà truy xuất vào vùng liệu bảo vệ hệ thống Trong tiến trình chương trình người sử dụng hoạt động chế độ không đặc quyền, nên truy xuất vào hệ thống, nhờ mà hệ điều hành bảo vệ Các tiến trình chương trình người sử dụng truy xuất vào hệ thống thông qua tiến trình hệ điều hành cách thực lời gọi hệ thống 1.3 Các trạng thái tiến trình Khi chương trình chạy từ dòng lệnh, ta nhấn tổ hợp phím ctrl+Z để tạm dừng chương trình đưa vào hoạt động phía hậu trường(background) Tiến trình Linux có trạng thái sau: -Đang chạy(running): trạng thái mà tiến trình chiếm quyền sử dụng CPU để tính toán hay thực công việc -Chờ(waiting): trạng thái mà CPU tiến trình bị hệ điều hành tước quyền sử dụng CPU, phải chờ lượt cấp phát khác -Tạm dừng(suspend): trạng thái mà hệ điều hành tạm dừng tiến trình Tiến trình đưa vào trang thái thái ngủ(sleep) Khi cần thiết có nhu cầu hệ điều hành đánh thức(wake up) hay nạp lại mã lệnh tiến trình vào nhớ, cấp phát tài nguyên CPU để tiến trình tiếp tục hoạt động Trên dòng lệnh, thay dung lệnh ctrl+z, ta dùng lệnh bg để đưa tiến trình vào hoạt động phía hậu trường Chúng ta yêu cầu chương trình chạy cú pháp &, chẳng hạn: $ls –R & Lệnh fg đem tiến trình trở hoạt động ưu tiên phía trước Thực tế đăng nhập vào hệ thống tương tác dong lệnh lúc ta tiến trình shell bash Khi gọi dòng lệnh có nghĩa ta yêu cầu bash tạo thêm chương trình thực thi khác Về mặt lập trình,chúng ta dùng lệnh fork() để nhân tiến trình khác từ tiến trình ban đầu, dùng lệnh system() để triệu hồi chương trình từ hệ điều hành Hàm exec() có khả tạo tiến trình khác 1.4 Cấu trúc tiến trình Bài tập lớn Nguyên lý hệ điều hành Chúng ta trả lời câu hỏi: Hệ Điều Hành quản lý tiến trình nào? Nếu có hai người dùng user1 user2 đăng nhập vào chạy chương trình chạy grep đồng thời, thực tế hệ điều hành quản lý nạp mã chương trình grep vào hai vùng nhớ khác gọi phân vùng tiến trình User1: chạy file grep tìm kiếm chuỗi abc file $grep abc file1 User2: chạy file grep tìm kiếm chuỗi def file $grep def file Nếu dùng lệnh ps hệ thống liệt kê cho thông tin tiến trình mà hệ điều hành kiểm soát Ví dụ: $ps –af Mỗi tiến trình gắn gán cho định danh để nhận dạng gọi PID(process identify) PID số nguyên dương thường có giá trị từ đến 32768 Khi tiến trình yêu cầu khởi động, hệ điều hành chọn lấy số chưa bị tiến trình chiếm giữ khoảng số nguyên cấp phát cho tiến trình Khi tiến trình kết thúc, hệ điều hành thu hồi số PID để cấp phát cho tiến trình khác lần sau PID dành cho tiến trình gọi init Tiến trình init nạp chạy khởi động hệ điều hành Init tiến trình quản lý tạo tiến trình khác Ở ví dụ thấy lệnh $ps –af hiển thị hai tiến trình grep chạy user user2 với số PID 101 102 Mã lệnh thực thi lệnh grep chứa tập tin đĩa cứng hệ điều hành nạp vào vùng nhớ Mỗi tiến trình hệ điều hành phân chia rõ ràng: vùng chứa mã lệnh (code) vùng chứa liệu (data) Mã lệnh thường giống sử dụng chung Linux quản lý cho phép tiến trình chương trình dùng chung mã lệnh Thư viện vậy, trừ thư viện đặc thù, thư viện chuẩn hệ điều hành cho phép chia sẻ dùng chung chương trình hệ thống Bằng việc sử dụng chung thư viện, kích thước chương trình giảm đáng kể Mã lệnh chương trình chạy hệ thống dạng tiến trình đỡ tốn nhớ Trừ mã lệnh thư viện chia sẻ, liệu không Mỗi phân đoạn sở hữu Bài tập lớn Nguyên lý hệ điều hành phân đoạn liệu riêng Ví dụ tiến trình grep user1 nắm giữ lưu trữ biến s có giá trị ‘abc’ tiến trình grep user2 nắm giữ lưu trữ biến s có giá trị ‘def’ Mỗi tiến trình hệ thống dành riêng cho bảng mô tả file(file description table) Bảng chứa số mô tả áp đặt cho file mở Mỗi tiến trình khởi động, Hệ Điều Hành mở cho file: stdin(số mô tả 0), stdout(số mô tả 1) stderr(số mô tả 2) Các file tượng trưng cho thiết bị nhập, xuất thông báo lỗi mở thêm file khác Ví dụ user1 mở file1, user2 mở file2 Hệ Điều Hành cáp phát số mô tả file cho tiến trình lưu riêng chúng bảng mô tả file tiến trình Ngoài tiến trình có riêng ngăn xếp stack để lưu trữ biến cục giá trị trả sau lời gọi hàm Tiến trình giành cho khoảng không gian riêng để lưu trữ biến môi trường Chúng ta dùng lệnh putenv getenv để đặt riêng biến môi trường cho tiến trình 1.5 Bảng thông tin tiến trình xem thông tin tiến trình Hệ điều hành lưu trữ cấu trúc danh sách bên hệ thống gọi bảng tiến trình(process table) Bảng tiến trình quản lý tất PID thông tin chi tiết tiến trình chạy Ví dụ ta gọi lệnh ps, Linux thường đọc thông tin bảng tiến trình hiển thị tên lệnh tiến trình gọi: thời gian sử dụng CPU tiến trình, tên người sử dụng tiến trình,… Lệnh ps hệ điều hành dùng để xem thông tin tiến trình Tùy theo tham số lệnh ps cho ta thông tin tiến trình người dùng, tiến trình hệ thống tất tiến trình chạy Ví dụ ps đưa chi tiết tham số -af Trong thông tin ps trả về, UID tên người dùng gọi tiến trình, PID số định danh mà hệ thống cấp cho tiến trình, PPID số định danh tiến trình cha(parent PID) Ở gặp số tiến trình có định danh PPID 1, định danh tiến trình init, gọi chạy khởi động Nếu ta hủy tiến trình init hệ điều hành chấm dứt phiên làm việc STIME thời điểm tiến trình đưa vào sử dụng TIME thời gian chiếm dụng CPU tiến trình, CMD toàn dòng lệnh tiến trình triệu gọi, 10 Bài tập lớn Nguyên lý hệ điều hành pid_t pid; char * message; int n; printf( "Bat dau.\n" ); pid = fork(); switch ( pid ) { case -1: printf( "Khong the tao tien trinh moi" ); exit(1); case 0: message = "Day la tien trinh con"; n = 0; for ( ; n < 5; n++ ) { printf( "%s", message ); sleep( ); } break; default: message = "Day la tien trinh cha"; n = 0; for ( ; n < 3; n++ ) { printf( "%s", message ); sleep( ); break; } Exit(0); 16 Bài tập lớn Nguyên lý hệ điều hành } Biên dịch thực thi chương trình ta thấy hai tiến trình thực đồng thời in kết đan xen Nếu muốn xem liên quan PID PPID hai tiến trình cha tha sử dụng dòng lệnh sau: $fork_demo & ps – af 2.2 Dừng tiến trình Trong nhiều trường hợp, tiến trình bị treo, chương trình server cần nhận cấu hình mới, card mạng cần thay đổi địa IP …, phải dừng tiến trình có vấn đề Ulinux có lệnh kill để thực công tác Trước tiên ta cần phải biết PID tiến trình cần dừng thông qua lệnh ps Chỉ có super-user có quyền dừng tất tiến trình, người sử dụng dừng tiến trình  Lệnh kill Kill -9 PID_của_tiến_trình Tham số –9 gửi tín hiệu dừng không điều kiện chương trình Chú ý ta logged in vào hệ thống root, nhập số PID xác không ta dừng tiến trình khác Không nên dừng tiến trình mà làm treo máy dịch vụ Một tiến trình sinh tiến trình trình hoạt động Nếu ta dừng tiến trình cha, tiến trình dừng theo, không tức Vì phải đợi khoảng thời gian sau kiểm tra lại xem tất tiến trình có dừng hay không Trong số hãn hữu trường hợp, tiến trình có lỗi nặng không dừng được, phương pháp cuối khởi động lại máy Khi kết thúc tiến trình, hệ điều hành cần làm công việc sau: + thu hồi tài nguyên hệ thống cấp phát cho tiến trình + hủy tiên trình khỏi tất danh sách quản lý hệ thống + hủy bỏ PCB tiến trình 17 Bài tập lớn Nguyên lý hệ điều hành Hầu hết hệ điều hành không cho phép tiếp tục chương trình chương trình cha kết thúc Nếu tượng xảy ra, hệ diều hành thực loạt thao tác để kết thúc chương trình 2.3 Cấp phát tài nguyên cho tiến trình Khi có nhiều người làm việc hệ thống, hệ điều hành phải cấp phát tài nguyên yêu cầu cho người sử dụng Do tài nguyên hệ thống thường giới hạn nhiều chia sẻ nên đồng thời yêu cầu tài nguyên đề thỏa mãn Vì phải nghiên cứu phương pháp chia sẻ số tài nguyên hữu hạn nhiều tiến trình người dùng đồng thời Hệ điều hành quản lý nhiều loại tài nguyên khác như: CPU, nhớ chính, thiết bị ngoại vi, vv…Với loại tài nguyên cần có chế chiến lược cấp phát hiệu Mỗi tài nguyên biểu diễn thông qua cấu trúc liệu, khác chi tiết cho loại tài nguyên, bao gồm thông tin sau: + định danh tài nguyên + trạng thái tài nguyên: phần tài nguyên sử dụng, phần có khả cấp phát? + hàng đợi tài nguyên: tiến trình chờ cấp phát tài nguyên tương ứng + cấp phát: đoạn code đảm nhiệm việc cấp phát tài nguyên đặc thù Một số tài nguyên đòi hỏi giải thuật đặc biệt, ví dụ CPU, nhớ hay hệ thống tập tin Trong số khác lại có giải thuật cấp phát giải phóng tổng quát hơn, ví dụ như: thiết bị ngoại vi 18 Bài tập lớn Nguyên lý hệ điều hành Hình 2:Khối quản lý tài nguyên Kĩ thuật cấp phát phải: +đảm bảo số lượng hợp lệ tiến trình truy xuát đến tài nguyên chia sẻ + cấp phát tài nguyên cho tiến trình có yêu cầu trong thời gian trì hoãn chấp nhận + tối ưu hóa việc sử dụng tài nguyên Để giải tốt yêu cầu trên, ta cần giải vấn đề nảy sinh có nhiều tiến trình yêu cầu đồng thời tài nguyên không chia sẻ 2.4 Giám sát điều phối tiến trình Mục tiêu việc điều phối tiến trình là: + công bằng: tiến trình phải chờ đợi vô hạn + tình hiệu quả: hệ thống phải tận dụng CPU 100% thời gian 19 Bài tập lớn Nguyên lý hệ điều hành + thời gian đáp ứng hợp lý: cố gắng cực tiểu hóa thời gian đáp ứng yêu cầu người sử dụng + thời gian lưu lại hệ thống: cực tiểu hóa thời gian hoàn tất tác vụ xử lý theo lô + thời lượng tối đa: cực đại hóa số lượng công việc xử lý đơn vị thời gian Tuy nhiên đáp ứng toàn mục tiêu mà ta dung hòa chúng mức độ Một chương trình file thực thi hệ thống, ví dụ : /sbin/shutdown hay /sbin/init Tiến trình trường hợp chương trình thực thi Ví dụ ta mở lúc nhiều cửa sổ word, sổ trường hợp word Tiến trình đc gọi task Ta lấy thông tin tiến trình lên ps, pstree, top Ví dụ với lệnh ps : #ps Option: f: thể process dạng tree l: thể dạng long list w: thể dạng wide output x: Xem process không gắn với terminal (daemon) a: process user khác U: user xem process user cụ thể u: thể dạng “user format” 20 Bài tập lớn Nguyên lý hệ điều hành Ta có bảng thể trường bảng trên: 21 Bài tập lớn Nguyên lý hệ điều hành Với lệnh pstree tương tự lệnh ps với tham số -f, tham số -p in hình PID: 22 Bài tập lớn Nguyên lý hệ điều hành Lệnh Top giống lệnh ps danh sách process update liên tục Các thông số CPU RAM thể update 23 Bài tập lớn Nguyên lý hệ điều hành Ngoài ra, số thao tác với tiến trình sau:  Gửi tín hiệu cho tiến trình chạy với lệnh: # kill  Thay đổi thông số priority với lệnh nice renice + nice dùng để thay đổi nice number tiến trình thời điểm bắt đầu # nice [–n number] [command] +renice dùng để thay đổi nice number tiến trình chạy # renice priority PID [[-g] group] [[-u] user]  Can thiệp vào hoạt động tiến trình  Ngưng tạm ngưng Job + Để thực ngưng Job thực thi ta dùng tổ hợp phím ctrl+C Sau ta dùng lệnh Jobs để hiển thị trạng thái tiến trình chạy + Để thực tạm ngưng Job, ta dùng tổ hợp phím ctrl+Z, sau thực hai lệnh sau:  bg: tiếp tục job vừa ngừng trạng thái background 24 Bài tập lớn Nguyên lý hệ điều hành 2.5 Kiểm soát đợi tiến trình Khi fork() tách tiến trình thành hai tiến trình cha con, thực tế hoạt động độc lập Đôi lúc tiến trình cha cần phải đợi tiến trình thực xong tác vụ tiếp tục thực thi Ở ví dụ trên, thực thi ta thấy tiến trình cha kết thúc tiến trình tiếp tục in thông báo tiến trình cha đồng thời gửi thông báo hình Chúng ta không muốn thấy điều này, muốn tiến trình cha kết thúc tiến trình hoàn tất thao tác Hơn chương trình cần thực xong thao tác đến chương trình cha Để làm việc sử dụng hàm wait(): #include #include Pid_t wait(int &stat_loc) Hàm wait() gọi yêu cầu tiến trình cha dừng lại chờ tiến trình kết thúc trước thực tiếp lệnh điều khiển tiến trình cha Wait() làm cho liên hệ tiến trình cha tiến trình trở nên Khi tiến trình kết thúc hàm trả số PID tương ứng tiến trình Nếu truyền thêm đối số stat_loc khác NULL cho hàm wait() trả trạng thái kết thúc tiến trình biến stat_loc Chúng ta sử dụng macro khai báo sẵn sys/wait.h sau: WIFEXITED (stat_loc) Trả trị khác tiến trình kết thúc bình thường WEXITSTATUS (stat_loc) Nếu WIFEXITED trả trị khác 0, macro trả mã lỗi tiến trình WIFSIGNALED (stat_loc) Trả trị khác tiến trình kết thúc tín hiệu gửi đến WTERMSIG(stat_loc) Nếu WIFSIGNALED khác 0, macro cho biết số tín hiệu hủy tiến trình WIFSTOPPED(stat_loc) Trả trị khác tiến trình dừng 25 Bài tập lớn Nguyên lý hệ điều hành WSTOPSIG(stat_loc) Nếu WIFSTOPPED trả trị khác 0, macro trả số hiệu signal Ví dụ cách sử dụng hàm wait() để chờ tiến trình kết thúc sau gọi fork(), wait_child.c #include #include #include int main() { pid_t pid; int child_status; int n; // nhân tiến trình, tạo pid = fork(); switch ( pid ) { case -1: // fork không tạo tiến trình printf( "Khong the tao tien trinh moi" ); exit( ); case 0: // fork thành công, tiến trình printf( "Hello world from child\n" ); n = 0; for ( ; n < 3; n++ ) { printf( "Tien trinh con" ); 26 Bài tập lớn Nguyên lý hệ điều hành sleep( ); } exit( ); // Mã lỗi trả tiến trình default: // fork thành công, tiến trình cha printf( "Tien trinh cha, cho tien trinh hoan thanh.\n" ); // Chờ tiến trình kết thúc wait( &child_status ); printf( "Tien trinh cha – tien trinh hoan thanh.\n" ); } Return 0; } 2.6 Liên lạc tiến trình  Nhu cầu liên lạc tiến trình hệ thống Trong môi trường đa chương, chương trình không đơn độc mà có tác động qua lại với Tuy tiến trình thực thể độc lập chúng có nhu cầu lên lạc với để: + chia sẻ thông tin: nhiều tiến trình quan tâm tới liệu Vì vậy, hệ điều hành cần tạo môi trường cho phép truy cập đồng thời đến liệu chung + hợp tác hoàn thành tác vụ: từ tiến trình lớn, hệ thống chia thành tiến trình nhỏ để tiến trình cần lên lạc với hợp tác với để hoàn thành tác vụ Việc giao tiếp tiến trình thực thông qua tín hiệu chuẩn hệ thống Tín hiệu ngắt quãng logic gửi đến tiến trình hệ thống để thông báo cho chúng hoạt động không bình thường môi trường hoạt động 27 Bài tập lớn Nguyên lý hệ điều hành chúng, ví dụ lỗi nhớ hay lỗi vào Một tín hiệu(trừ SIGKILL) xem xét theo ba cách sau: + tiến trình bỏ qua: tiến trình bỏ qua ngắt quãng người sử dụng hệ thống + tiến trình thực hiện: trường hợp này, nhận tín hiệu, việc thực tiến trình chuyển quy trình người sử dụng xác định trước, sau trở lại nơi bị ngắt + lỗi tiến trình trả sau nhận tín hiệu Ví dụ số tín hiệu: SIGUP, SIGIN, SIGQUIT, SIGILL, SIGTRAP, SIGIOT,…  Ống dẫn liên lạc thao tác với ống dẫn liên lạc  Ống dẫn liên lạc Ống dẫn liên lạc kênh liên lạc trực tiếp hai tiến trình: liệu xuất tiến trình chuyển đến trở thành liệu nhập cho tiên trình dạng dòng byte Thứ tự truyền liệu qua ống dẫn tuân thủ theo nguyên tắc FIFO Một số đặc điểm ống dẫn: + ống đẫn mang tính tạm thời tồn thời gian thực tiến trình tạo + muốn tạo ống dẫn phải bắt đầu lệnh đặc biệt: pipe() + nhiều tiến trình đọc viết ống dẫn, chế phân biệt thông tin tiến trình đầu 28 Bài tập lớn Nguyên lý hệ điều hành + dung lượng ống dẫn bị hạn chế(khoảng 4KB) nên dễ xảy tắc nghẽn + tiến trình muốn liên lạc qua ống dẫn phải có mối quan hệ họ hàng ống dẫn phải tạo trước tạo chương trình + tự thay đổi vị trí thông tin ống Thao tác ống dẫn Tạo ống dẫn int p_desc[2]; int pipe (p_desc) ; giá trị trả thành công, -1 thất bại p_desc[0] chứa số hiệu mô tả nhờ đọc ống dẫn p_desc[1] chứa số hiệu mô tả nhờ ghi ống dẫn lệnh p_desc[1] dùng để truyền liệu ống lệnh p_desc[0] dùng để nhận liệu  fg: tiếp tục job vừa ngừng trạng thái foreground Tổng Kết Khi nghiên cứu hệ điều hành, điều mà ta quan tâm hệ điều hành quản lý tiến trình sao? Trên đây, vừa tìm hiểu Linux phương pháp quản lý tiến trình hệ điều hành Chúng hi vọng cung cấp cho người phần hệ điều hành phổ biến Linux Với ưu điểm nhược điểm đó, tương lai, Linux ngày hoàn thiện hơn, thân thiện với người dùng người dùng đón nhận 29 Bài tập lớn Nguyên lý hệ điều hành Tài liệu tham khảo + Giáo trình hệ điều hành Linux Unix( Đại học quốc gia Hà Nội- 2004) + Running Linux(Daheimer, Terry Dawson, Lar Kaufman, matt welsh- 2002) + Giáo trình nguyên lý hệ điều hành (Trần Ngọc Thái- đại học DL Hải phòng) -The End- 30 [...]... 20 Bài tập lớn Nguyên lý hệ điều hành Ta có bảng thể hiện các trường trong bảng trên: 21 Bài tập lớn Nguyên lý hệ điều hành Với lệnh pstree tương tự lệnh ps với tham số -f, tham số -p in ra màn hình cả PID: 22 Bài tập lớn Nguyên lý hệ điều hành Lệnh Top giống lệnh ps nhưng danh sách process được update liên tục Các thông số về CPU và RAM cũng được thể hiện và update 23 Bài tập lớn Nguyên lý hệ điều hành. .. thúc một tiến trình, hệ điều hành cần làm các công việc sau: + thu hồi tài nguyên hệ thống đã cấp phát cho tiến trình + hủy tiên trình khỏi tất cả các danh sách quản lý của hệ thống + hủy bỏ PCB của tiến trình 17 Bài tập lớn Nguyên lý hệ điều hành Hầu hết các hệ điều hành không cho phép tiếp tục chương trình con khi chương trình cha đã kết thúc Nếu hiện tượng này xảy ra, hệ diều hành sẽ thực hiện một... được sử dụng để gọi lệnh ‘ps –ax’ 12 Bài tập lớn Nguyên lý hệ điều hành  Thay thế tiến trình hiện hành với hàm exec() Mỗi tiến tình được hệ điều hành cấp cho một không gian nhớ để các tiến trình tự do hoạt động Nếu tiến trình A của chúng ta gọi một tiến trình ngoài B thì hệ điều hành thường thực hiện các thao tác như: cấp phát không gian nhớ cho tiến trình mới, điều chỉnh lại danh sách các tiến trình,... hoàn thiện hơn, thân thiện với người dùng hơn và được người dùng đón nhận hơn nữa 29 Bài tập lớn Nguyên lý hệ điều hành 4 Tài liệu tham khảo + Giáo trình hệ điều hành Linux và Unix( Đại học quốc gia Hà Nội- 2004) + Running Linux(Daheimer, Terry Dawson, Lar Kaufman, matt welsh- 2002) + Giáo trình nguyên lý hệ điều hành (Trần Ngọc Thái- đại học DL Hải phòng) -The End- 30 ... job vừa ngừng ở trạng thái foreground 3 Tổng Kết Khi nghiên cứu về một hệ điều hành, điều đầu tiên mà ta quan tâm là hệ điều hành quản lý các tiến trình ra sao? Trên đây, chúng ta đã vừa tìm hiểu về Linux và phương pháp quản lý tiến trình trên hệ điều hành này Chúng tôi hi vọng sẽ cung cấp cho mọi người một phần nào đó về hệ điều hành đang rất phổ biến hiện nay Linux Với những ưu điểm và nhược điểm... một tài nguyên: các tiến trình đang chờ cấp phát tài nguyên tương ứng + bộ cấp phát: là đoạn code đảm nhiệm việc cấp phát một tài nguyên đặc thù Một số tài nguyên đòi hỏi các giải thuật đặc biệt, ví dụ như CPU, bộ nhớ trong hay hệ thống các tập tin Trong khi một số khác lại có giải thuật cấp phát và giải phóng tổng quát hơn, ví dụ như: các thiết bị ngoại vi 18 Bài tập lớn Nguyên lý hệ điều hành Hình... tiến trình +cấp phát tài nguyên cho tiến trình + giám sát và điều phối +kiểm soát và đợi tiến trình con Sau đây chúng ta sẽ cùng tìm hiểu lần lượt về các thao tác nói trên: 2.1 Tạo lập tiến trình Hình 1: Một cây tiến trình trong hệ thống Linux Để tạo lập tiến trình, hệ điều hành cần làm các công việc sau: + định danh cho tiến trình mới phát sinh 11 Bài tập lớn Nguyên lý hệ điều hành + đưa tiến trình này... tài nguyên cho tiến trình Khi có nhiều người cùng làm việc trên hệ thống, hệ điều hành phải cấp phát tài nguyên yêu cầu cho mỗi người sử dụng Do tài nguyên hệ thống thường rất giới hạn và nhiều khi không thể chia sẻ nên hiếm khi đồng thời các yêu cầu tài nguyên đề được thỏa mãn Vì thế phải nghiên cứu ra phương pháp chia sẻ một số tài nguyên hữu hạn giữa nhiều tiến trình người dùng đồng thời Hệ điều hành. . .Bài tập lớn Nguyên lý hệ điều hành TTY là màn hình terminal ảo nơi gọi thực thi tiến trình Như chúng ta đã biết người dùng có thể đăng nhập từ rất nhiều terminal khác nhau để gọi tiến trình Để liệt kê các tiến trình hệ thống ta sử dụng lệnh $ps –ax 2 Quản lý tiến trình Hệ điều hành các thao tác chủ yếu sau đây cho một tiến trình: + tạo lập... thế chia sẻ 2.4 Giám sát và điều phối tiến trình Mục tiêu của việc điều phối tiến trình là: + sự công bằng: không có tiến trình nào phải chờ đợi vô hạn + tình hiệu quả: hệ thống phải tận dụng CPU 100% thời gian 19 Bài tập lớn Nguyên lý hệ điều hành + thời gian đáp ứng hợp lý: cố gắng cực tiểu hóa thời gian đáp ứng những yêu cầu của người sử dụng + thời gian lưu lại trong hệ thống: cực tiểu hóa thời

Ngày đăng: 11/05/2016, 08:06

Từ khóa liên quan

Mục lục

  • Mục Lục

  • 1 Tổng quan về tiến trình Linux

    • 1.1 Khái niệm

    • 1.2 Phân loại tiến trình:

    • 1.3 Các trạng thái của tiến trình

    • 1.4 Cấu trúc của một tiến trình

    • 1.5 Bảng thông tin tiến trình và xem thông tin tiến trình

    • 2 Quản lý tiến trình

      • 2.1 Tạo lập tiến trình

      • 2.2 Dừng một tiến trình

      • 2.3 Cấp phát tài nguyên cho tiến trình

      • 2.4 Giám sát và điều phối tiến trình

      • 2.5 Kiểm soát và đợi tiến trình con

      • 2.6 Liên lạc giữa các tiến trình

      • 3 Tổng Kết

      • 4 Tài liệu tham khảo

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan