Bài giảng Hệ điều hành - Chương 2: Tiến trình trình bày những nội dung về quan niệm về tiến trình, các trạng thái tiến trình, định thời tiến trình, đồng bộ tiến trình. Với các bạn đang học chuyên ngành Công nghệ thông tin thì đây là tài liệu tham khảo hữu ích dành cho các bạn.
CHƯƠNG TIẾN TRÌNH 2.0 Quan niệm tiến trình Trước tuỳ thời điểm, máy tính xác định nhiệm vụ chính; tất chương trình bó lại thành gói (paket) gởi liên tục Điều gọi xử lý đóng gói (pile processing) hay quản lý lơ (batch manager) Ngày nay, khơng có chương trình chạy máy tính, mà nhiều chương trình thực (multi-tasking) Cũng thế, khơng có người sử dụng làm việc, mà nhiều người sử dụng làm việc (multi- user) Để hạn chế tranh chấp chúng việc dùng máy tính, phân bổ phương tiện điều hành phải điều chỉnh chương trình Ngồi ra, điều cịn tiết kiệm thời gian chạy máy giảm đáng kể thời gian thao tác Thí dụ, người ta điều chỉnh phân chia vi xử lý (Central Processing Unit- CPU) cho việc biểu thị Text song song với việc xử lý Text, điều cho thấy rằng, CPU trợ giúp việc xử lý Text thời gian máy in in ký tự Nếu điều hồn thiện vi xử lý đẩy ký tự cho máy in tiếp tục việc xử lý Text Thêm vào đó, chương trình phải lưu trữ cần thiết sử dụng phương tiện điều hành nào: không gian nhớ, hệ CPU, dùng lượng CPU… Từ đó, ta hiểu, tiến trình thơng tin trạng thái phương tiện điều hành chương trình (thường gọi Job) Hình 2.1 minh họa điều đây: Tiến trình Daten Programm Stack Thanh ghi CPU Thanh ghi NMU luật truy cập thông tin file Kernel-stack ngữ cảnh tiến trình Hình 2.1 Sự cấu thành liệu tiến trình Một tiến trình sinh tiến trình khác, người ta gọi tiến trình đầu tiến trình cha, cịn tiến trình sinh tiến trình Một hệ thống đa chương trình (multi-programming system) cho phép thực đồng thời nhiều chương trình nhiều tiến trình Một chương trình (gọi job ) tự phát sinh nhiều tiến trình Thí dụ hệ điều hành UNIX: Các chương trình hệ thống Unix gọi tảng, tổng hợp giải pháp đồng thích ứng thuận tiện Sự độc lập tiến trình kể chương trình hệ điều hành Unix cho phép khởi động đồng thời nhiều cơng việc.Thí dụ, chương trình pr hình thành Text1, chương trình lpr biểu diễn Text2 người ta kết nối thành chương trình cat dòng lệnh sau: cat Text1 Text2 | pr | lpr Ở đây, thông dịch, mà người ta chuyển lệnh cho nó, khởi động ba chương trình với tư cách ba tiến trình riêng lẻ, mà ký tự “|” tạo thay đổi cho việc xuất chương trình thành việc nhập vào chương trình khác Nếu hệ thống có nhiều vi xử lý, đó, vi xử lý xếp theo tiến trình, vậy, điều hành tiến hành song song Ngồi ra, có vi xử lý thực phần tiến trình dẫn tới Ở hệ thống đơn vi xử lý ln có tiến trình thực hiện, tiến trình khác giữ lại chờ đợi Điều khảo sát phần 2.1 Các trạng thái tiến trình Kế tiếp trạng thái hoạt động (running) tiến trình diễn ra, phải xem xét tiến trình khác chờ đợi đâu Đối với nhiều khả biến cố, có hàng đợi riêng, mà tiến trình phân loại Một tiến trình bị hãm phải chờ đợi, để: + đón nhận vi xử lý hoạt động, lúc ta có trạng thái sẵn sang (ready), + đón nhận thơng tin (massage) tiến trình khác, + đón nhận tín hiệu thị thời gian (timer), + đón nhận liệu thiết bị xuất nhập Thực ra, trạng thái sẵn sang đặc biệt: tất tiến trình nhận thay đổi giải hãm, tiếp đến, chúng chuyển dịch vào danh sách sẵn sàng sau đó, chúng đón nhận vi xử lý dãy tuần tự.Các trạng thái độ chúng sơ đồ hố hình 2.2 Hình 2.2.Các trạng thái tiến trình Ở đây, cịn quan tâm tới điều, chương trình tiến trình khơng tồn vĩnh viễn, mà chúng sinh kết thúc Do đó, từ lý bảo vệ, tiến trình khơng tự quản lý được, mà chúng thuyên chuyển từ chức đặc biệt hệ điều hành cho định giờ, hay thuyên chuyển từ trạng thái thành trạng thái liền kề Việc chuyển đổi tín hiệu, việc lưu trữ liệu tiến trình việc xếp thành hàng đợi chức trung tâm hoàn thiện, chức người sử dụng không trực tiếp điều khiển Bởi vậy, qua việc gọi hệ điều hành mong muốn tiến trình khai báo, mà khuôn khổ việc quản lý phương tiện điều hành định thời phù hợp với quan tâm người sử dụng khác Tất trạng thái chứa đựng hay nhiều danh sách Các tiến trình ứng với trạng thái đưa vào danh sách Điều rõ, tiến trình ln ln chứa đựng danh sách Trong khác với mã máy, liệu trạng thái phần cứng (CP, FPU, MNU), mà với tiến trình làm việc, chúng biểu thị văn cảnh tiến trình (stask context), xem hình 2.1 Ở tiến trình hãm, phần liệu chứa đựng trạng thái sau CPU CPU biểu thị nột vi xử lý ảo phải nạp nhờ chuyển đổi tới tiến trình khác chuyển đổi văn cảnh (context switch) Những hệ điều hành khác thu hẹp số biến cố thu hẹp số lượng kiểu hàng đợi Điều phân biệt, giao thức chúng dự định cho việc bắt đầu kết thúc vi xử lý việc phân chia xếp danh sách chờ Ở đây, người ta phân biệt việc đặt kế hoạch phân bổ phương tiện điều hành (scheduling) việc phân bổ thực tế (dispatching) 2.1.1 Thí dụ Unix Trong hệ điều hành Unix có sáu trạng thái khác Có ba trạng thái nhắc tới Đó trạng thái running(SRUN), trạng thái blocked (SSLEEP) trạng thái ready (SWAIT) Trạng thái trạng thái stopped (SSTOP), mà phù hợp với chờ đợi tiến trình cha việc tìm lỗi (tracing anh debugging) Đón nhận tín hiệu Khơn g tồn Phát sinh Lý tưởng sẵn sàn g tiếp tục thực bị hãm Phân bổ dừn g chờ đợi tín hiệu hoạt độn g zombi chờ đợi tiến trình cha ++++++++++++++++++++ kết thúc Khơn g tồn Hình 2.3.Những trạng thái tiến trình q độ Unix Ngồi cịn tồn trạng thái trung gian phụ trạng thái idle (SIDL) trạng thái zombie (SZOMB), mà chúng xuất việc sinh kết thúc tiến trình Sự q độ trạng thái có hình thái hình vẽ 2.3 Sự độ trạng thái tới trạng thái đạt qua thăm dò gọi hệ thống Thí dụ, có tiến trình gọi hàm fork(), tiến trình lơi đem treo vào danh sách sẵn sàng Với điều đó, ta có hai tiến trình đồng nhất, mà hai trở lại từ việc gọi hàm fork() Sự khác hai tiến trình chỗ giá trị trả lại hàm: tiến trình cha đón nhận số tiến trình (PID) con; PID = nhận rằng, tiến trình thể diễn biến tiếp tục chương trình qua lần gọi hệ thống khác Đối với chương trình thực thi (execute) nhận thấy rằng, chương trình chạy tải mã chương trình Tất thiết bị hiển thị biến số kích thích (thí dụ sử dụng đếm địa gọi hệ thống chương trình) tiến trình hồn tất treo vào danh sách sẵn sang Ở hiệu cuối tiến trình cha chương trình hồn tồn khởi động Tiến trình cha có khả chờ đợi hàm gọi hệ thống exit() chờ đợi kết thúc tiến trình với hàm waitpid(PID) Trong hình 2.4 trình phát sinh tiến trình Người ta quan tâm rằng, tiến trình đạt hàm gọi hệ thống exit() nói khi, lỗi xuất hàm exec() Điều có nghĩa, tệp tin programm khơng tồn , khơng thể đọc Ngồi ra, lệnh chương trình theo hàm exec() trạng thái người sử dụng giống hệt với lệnh chương trình ‘programm’ Cha PID = fork () /* PID # 0*/ if (PID = = 0) { exec … … /* PID = = 0*/ if (PID = = 0) { exec (“programm”) … }; Waitpid (PID) exit () }; … Hình 2.4.Sự phát sinh loại trừ tiến trình hệ điều hành Unix Tiến trình kết thúc khi, ‘programm’ hàm gọi exit() tự đạt tới Với suy nghĩ này, thí dụ sau làm sáng tỏ tiến trình thỉnh cầu người sử dụng thiết bị đầu cuối Tuy nhiên, mã (nói trên) sở cho việc thỉnh cầu Unix để người sử dụng khởi động shell Thí dụ shell Unix: LOOP Write(prompt); (*thí dụ có dạng :>*) ReadLine(command, params); (*đọc chuỗi, phân cách qua ý tự trống *) pid := fork(); (*tái tiến trình này*) IF (pid=0) THEN execve(command, params,0) (*con chở tải Programm*) ELSE waitpid(-1, status, 0) (*cha chờ kết thúc con*) END; END; Tất tiến trình Unix thích hợp với tiến trình khởi đầu (PID =1) Nếu chấm dứt tiến trình mà khơng có tiến trình cha tồn nữa, tiến trình khởi đầu nói thơng báo Trong khoảng thời gian gọi hệ thống với hàm exit() tiếp nhận thơng tin tiến trình cha, tiến trình đạt trạng thái đặc biệt gọi “zombi” (xem hình 2.1) Văn cảnh tiến trình nội (intern process context) phân thành hai phần: Phần thứ phần mang tiến trình bảng nhớ trú ngụ, quan trọng việc điều khiển tiến trình ln ln tồn Phần thứ hai gọi phần cấu trúc người sử dụng (user structure), quan trọng, tiến trình hoạt động xuất nhớ quảng đại với mã lại liệu Thực chất hai phần kể là: Các khối điều khiển tiến trình bảng tiến trình (process control bock- PCB) + Thông số định + Những tham chiếu nhớ: địa mã, địa liệu, địa ngăn xếp nhớ nhớ quảng đại + Các liệu tín hiệu: mặt nạ, trạng thái + Những điều khác: trạng thái tiến trình, biến cố chờ đợi, trạng thái định thời, PID, PID cha, người sử dụng • Văn cảnh người sử dụng (user context): + Trạng thái vi xử lý: ghi, ghi FPU… + Gọi hệ thống: thông số… + Bảng thông tin file + Ngăn xếp nhân: không gian ngăn xếp gọi hệ thống tiến trình Khác biệt với PCB tiến trình thay đổi kiểm tra gián tiếp qua gọi hệ thống, cho phép gọi hệ thống Unix để kiểm tra trực tiếp cấu trúc người sử dụng để thay đổi phần 2.1.2 Thí dụ Windows NT Vì Windows NT phải được loại tiến trình khác trợ giúp, mà tiến trình khơng hạn chế phát sinh đa dạng, loại riêng lẻ tiến trình ( đối tượng xâu: thread object) hệ thống tiến trình tạo nên Việc phát sinh đối tượng (như OS/2, POSIX,Windows32) liên hợp lại thành đối tượng thay đổi trạng thái chúng khơng đóng vai trị Sơ đồ đơn giản hoá độ trạng thái hình 2.5 Đón nhận tín hiệu Khôn g tồn Phát sinh khởi xướn g sẵn sàn g lựa chọn / bẻ gãy vận chuyể n Đình dừn g chờ đợi biến chạ y kết mãn gởi Hình 2.5.Các trạng thái tiến trình Windows NT kết thúc Khơn g tồn Việc sản sinh tiến trình Windows NT phức tạp Unix, để có chuyển giao nhiều trạng thái tiến trình phải thực Do đó, phát sinh đặc biệt liên kết hệ thống Để sản sinh tiến trình có hàm gọi hệ thống NtCreateProcess(), đấy, bên cạnh kích thích nhờ mà cịn có tiến trình cha thơng báo Trên sở đó, tất biến gọi hệ thống khác thiết lập, mà người sử dụng quan tâm cần tới Thật vậy, tạo cấu hàm gọi POSIX-fork() Thí dụ, chương trình POSIX (hay tiến trình POSIX) gọi lệnh với hàm fork() qua giao diện người lập trình ứng dụng ( Application Programming Interface) Cái chuyển đổi thành thông tin gởi tới hệ thống POSIX qua nhân hệ thống (xem hình 1.7) Cái trở lại gọi hàm NtCreateProcess() thơng báo chương trình POSIX cho PID cha Chìa khố đối tượng (object handle) trao trở lại hệ thống POSIX quản lý; tất gọi hệ thống tiến trình POSIX, mà đưa thơng tin tới hệ thống POSIX, hồn thiện với trợ giúp gọi hệ thống Windows NT đưa kết có dạng POSIX trở lại tiến trình gọi Tương tự, điều dẫn tới gọi tiến trình hệ thống khác 2.1.3 Các tiến trình trọng lượng nhẹ Nhu cầu lưu trữ tiến trình tồn diện Nó chứa đựng khơng vài số, số tiến trình liệu,mà thông báo files thông thường mã chương trình liệu chúng Điều có hầu hết tiến trình, thích ứng nhớ Cho nên, tiến trình chiếm khơng gian nhớ quảng đại (chẳng hạn harddisk) Vì có chuyển đổi tiến trình, nhớ bị tiêu tốn (chiếm chỗ), cịn nhớ trước đĩa cứng phục hồi trở lại, thay đổi tiến trình làm cho tải hệ thống nặng nề thời gian thực tương đối dài Ở nhiều ứng dụng khơng có tiến trình sử dụng, mà có đoạn mã độc lập (threads) sử dụng Những đoạn mã độc lập mơ tả văn cảnh tiến trình (thí dụ thủ tục chương trình) Trường hợp người ta gọi đồng lập thức (coroutine) Việc ứng dụng đoạn mã theards có điều kiện để tạo khoảng tiến trình hệ thống tiến trình mà người ta gọi tiến trình trọng lượng nhẹ (light weight process: LWP) Với hình dạng đơn giản tiến trình tự chuyển đổi điều khiển cách dứt khoát, mà người gọi phác thảo đồng lập thức (coroutine concept) Có lý để nói rằng, tiến trình tiến trình gọi hệ thống Nếu tiến trình mà sinh nhiều tiến trình khác, điều khó khăn Từ lý đó, người ta dẫn định thời, mà định thời luôn chứa đựng điều khiển điều khiển chuyển tiếp tục tới tiến trình danh sách sẵn sang Nếu điều khơng lập trình người sử dụng, chứa đựng hệ điều hành qua việc gọi hệ thống Do đó, qua thời gian chuyển đổi gọi hệ thống tiến trình threads tiến trình trọng lượng nặng (heavy weight process: HWP) Mỗi tiến trình phải thâu giữ liệu riêng cách độc lập với tiến trình khác Điều thuận với tiến trình trọng lượng nhẹ: Nếu chúng phân bổ files đồng (nói xác vùng địa ảo đồng đều, xem chương 3) với tiến trình trọng lượng nhẹ khác Do vậy, hầu hết ngăn xếp sử dụng, mà ngăn xếp trữ không gian để phát sinh cho tiến trình Trong khác biệt với tiến trình xác thực, đó, tiến trình trọng lượng nhẹ sử dụng liệu văn cảnh (context data), mà liệu phải thay đổi chuyển đổi Từ đó, trạng thái vi xử lý (processorstatus: PS) trỏ ngăn xếp (stack-pointer:SP) thứ quan trọng Còn, tự thân đếm chương trình (programm-counter) tách khỏi ngăn xếp, đó, khơng phải chuyển giao cách rõ ràng Bằng ngôn ngữ Assemble, việc chuyển đổi thực thi cách hiệu nghiệm làm cho việc gọi hệ thống tiến trình xảy nhanh 2.1.4 Trạng thái tiến trình Unix Ở hệ điều hành Unix, tiến trình trọng lượng nhẹ thực thi thư viện người sử dụng ngôn ngữ C hay C++ (xem phần Unix chương 3) Tuỳ theo thực thi, mà có hệ thống đơn giản với việc chuyển giao điều khiển cách trực tiếp, có hệ thống phức tạp với định thời đặc biệt (xem mục 2.2) Lợi việc thực thi thư viện tồn chuyển đổi nhanh, cấu gọi hệ điều hành cấu giải mã chúng điều kiện thực theo số dịch vụ theo thơng số Cịn nhược điểm tiến trình thread phải chờ đợi biến cố (thí dụ biến cố vào/ra) chặn tiến trình tổng thể lại Có thí nghiệm để tiêu chuẩn hóa tiến trình threads để giảm nhẹ thực thi chương trình (xem chuẩn IEEE năm 1922) Ở phiên Unix, chúng chứa đựng loại 64bit –Unix, gọi Unix-98 2.1.5 Trạng thái tiến trình Windows NT Khác với Unix, hệ điều hành Windows NT, tiến trình trọng lượng nhẹ LWP thực thi với chức gọi hệ điều hành Tuy nhiên, chuyền đổi chậm chạp hơn, nên gọi tiến trình trọng lượng nặng (heavy weight thread), có ưu điểm Đó là, người lập trình hệ thống có giao diện kết nối chắn Nó làm giảm nhẹ thực thi chương trình, chúng sử dụng tiến trình LWP tránh việc thực nghiệm để phát triển hệ thống lệch lạc riêng lẻ Unix Một điều khác nhân hệ điều hành điều khiển qua tiến trình LWP.Ở đây, điều cần phải lưu ý là, tiến trình LWP thực song song hệ thống đa vi xử lý biến cố I/O có tiến trình thread ngăn hãm tiến trình Vì tiến trình thread trọng lượng nặng dẫn tới việc thu hẹp không cần thiết cần thiết sử dụng, đó, Windows NT với version 4.0 dẫn vào trạng thái files Đó thủ tục tiến hành song song, mà thủ tục hoạt động theo phác thảo đồng lập thức: Sự chuyển đổi tiến trình fiber (thớ) tới tiến trình thread khác thực cách tự Nếu tiến trình thread bị ngăn hãm, tất tiến trình fiber bị ngăn hãm tương tự Điều giảm nhẹ việc thực thi chương trình hệ thống Unix 2.2 Định thời tiến trình Nếu hệ điều hành có nhiều nhu cầu phương tiện điều hành, đó, việc truy cập phải phối hợp Thật vậy, đóng vai trị quan trọng định thời nói giao thức việc xếp tiến trình theo hàng chờ Nếu khảo sát hệ thống đơn vi xử lý, thấy tiến trình độc lập làm việc cách (sequemtiell) Trong hệ thống tính tốn thơng thường, phân biệt hai loại nhiệm vụ định thời: định thời dự định việc thực Job (còn gọi định thời dài cho Job) dự định việc phân bổ vi xử lý hoạt động (còn gọi định thời ngắn) Ở việc định thời dài, người ta phải lưu ý:(1) Khi mà có nhiều người sử dụng phép vào hệ thống (login) với công việc họ, (logout) người sử dụng phải báo đó; (2) Nếu hệ thống có người sử dụng q nhiều, việc dẫn vào phải chặn lại tải hệ thống chất đầy NSD ĐỊNH THỜI DÀI ĐỊNH THỜI NGẮN Hình 2.6 Định thời dài định thời ngắn Tuy nhiên việc định thời ngắn, cơng việc phải dẫn giao thức để điều phối vi xử lý tiến trình Sau đây, khảo sát giao thức thông dụng 2.1.1 Tranh chấp mục đích Tất giao thức định thời để thực mục đích Người ta thấy có mục đích thơng dụng sau đây: • Khả chịu tải CPU: Nếu CPU phương tiện điều hành, nhất, muốn thể sử dụng hiệu nghiệm Mục đích CPU tải 100%, thơng thường tải khoảng 40-90% • Lưu lượng (througput): Số cơng việc đơn vị thời gian gọi lưu lượng, mức độ chịu tải hệ thống • Cách điều khiển thật: Khơng có cơng việc ưu tiên việc khác, chưa thoả thuận đích xác Điều có ý nghĩa rằng, người sử dụng nhận phương tiện cách đồng thời gian truy cập CPU • Thời gian thực hiện: Thời gian thực (turnround time) khoảng thời gian từ bắt đầu Job kết thúc Job, chứa đựng tất thời gian hàng đợi, thời gian thực thời gian xuất nhập Tất nhiên chúng phải tối thiểu • Thời gian chờ đợi: Trong khoảng thời gian tổng cộng, định thời ảnh hưởng tới thời gian chờ danh sách ready (sẵn sàng) Đối với giao thức định thời, người ta giới hạn mục đích để làm giảm thời gian chờ • Thời gian trả lời: Ở hoạt động bên hệ thống, người sử dụng cảm thấy đặc biệt khơng dễ chịu, sau truy nhập đó, người ta phải chờ đợi lâu phản ứng máy tính Một cách độc lập với thời gian tổng cộng thực Job, thời gian việc nhập vào việc chuyển giao liệu trả lời gọi thời gian trả lời Danh sách việc chuyển giao mục đích khơng phải đầy đủ mà cịn phải chặt chẽ Thí dụ, chuyển đổi tiến trình cần có thay đổi văn cảnh tiến trình (context switch) Những tiến trình ngắn ưa chuộng hơn, thời gian trả lời rút ngắn- thời gian hai lần truy nhập, nhờ suất gia tăng Ngược lại, tiến trình chậm khơng ưa chuộng Mặc khác, khả chịu tải nâng cao, diễn biến bên Job, thời gian trả lời kéo dài Tương tự, đời sống thường nhật, người ta nhìn thấy điều đó: Thí dụ việc cho th tơ, khách hàng xác định dịch vụ thuận tiện, mặc dụ chật chội, khách hàng khác phải chờ đợi lâu Nếu muốn thuê ô tơ chạy tốt, khách hàng tới phải đợi nhận ô tơ thích muốn Đối với thời gian phản ứng ngắn, có nhiều tơ đưa vào sử dụng Vì đối nhóm người sử dụng nhượng mục đích thay đổi, khơng có thuật tốn định thời lý tưởng tình Trên sở này, có nhiều phương hướng để tách chia cấu định thời thành giao thức định thời riêng lẻ thành thơng số chúng Thí dụ, tiến trình Sự tiêu phí cho việc tạo lập cho việc giữ gìn kết nối (canal) thực lớn Từ lý này, loại trao đổi thông tin khác đại hơn: trao đổi thơng tin khơng có kết nối Trong khác biệt với việc tạo lập kết nối đồng bộ, đây, người gởi người nhận phải biểu lộ sẵn sàng họ kết nối, đó, thơng tin gởi cách khơng đồng bộ: send (Adresse, Message) / receive (Adresse, Message) Vì thế, khơng cịn dám rằng, thơng tin có thật tới chưa (vì truyền đạt tiếp nhận bị quấy nhiễu), đó, thông tin phải xác nhận cách rõ ràng Nếu khoảng thời gian khơng có thơng tin truyền tới xuất hiện, đó, người gởi phải gởi phục hồi thông tin anh ta, nhận biên lai nhận Sau đó, tiếp tục gởi thông tin khác Nếu thông tin biên nhận bị đánh mất, đó, người nhận nhận thơng tin tương tự Để phân biệt thông tin với thông tin cũ, trường hợp này, thông tin thực số hiệu liên tục Một thơng tin thiết lập từ cấu trúc sau đây: TYPE tMessage = RECORD ReceiveAdresse: STRING; SendAdresse: STRING; Information Typ: tMsgTyp; SequentialNummer: INTEGER; Length: CARDINAL; Data : POINTER TO tBlock; END; Điều người ta biểu thị gói thơng tin (message header) phù hợp với việc chuyển tải, giống việc chuyển thư Ở đây, số lượng tối thiểu thông tin chuyển tới cho ta thấy: thực ra, thông tin thực tiến trình phóng nhiều lần Bởi vậy, cần phải có đồng người gởi người nhận, giống việc thông dịch trường thông tin Đồng thời người ta lưu ý tới vấn đề quan trọng khác: kiểu liệu (thí dụ kiểu tMsgTyp), dãy trường thông tin thông dịch số liệu (nó thường dẫn tới kiểu INTEGER với Byte có giá trị cao hay Byte có giá trị thấp nhất) Với lý này, việc trao đổi thơng tin máy tính (khác kiểu nhau), mơ tả liệu sau liệu gởi Việc quản lý bên ngồi thơng tin có chiều dài khác khơng đơn giản Các gói thơng tin ln ln có chiều dài giống nhau, chiều dài liệu truyền đạt trường Data cho phép không cần cố định Tại bên người nhận, gói thơng tin đọc tiếp đến phải cấp phát không gian lưu trữ cho khối liệu vừa trao đổi Việc gởi việc tiếp nhận thực phương pháp khác Về phía gởi đi, là, người gởi bị làm trì hỗn thật lâu, thông báo trả lời xảy (gọi gởi đồng hay gởi có kìm hãm), là, hệ thống thực đệm lại thông tin (giống hay trực tiếp), hay hệ thống quan tâm đến giao chuyển hợp cảnh cuối hệ thống người gởi tiếp tục thực việc chuyển gởi (tức gởi khơng có hãm hay gởi khơng đồng bộ) Tuy nhiên, việc chuyển gởi khơng có hãm, thơng tin báo lỗi chuyển trở lại, đệm hệ thống bị tràn, trường hợp người gởi phải làm chậm lại Đối với việc nhận hay việc đọc thông tin (cũng vậy) có ấn có hãm khơng có hãm: người nhận bị làm trễ thơng tin bày ra, người nhận đón nhận thơng báo trở lại thích hợp với việc đọc khơng có hãm Định vị (addressing): Việc xác định địa người nhận khác Ở kiểu kết nối unicast, địa người nhận bao gồm số hiệu tiến trình Nếu tiến trình chờ đợi máy tính khác, đó, số hiệu hay tên máy tính khác thêm vào, máy chủ công ty, địa phương hay quốc gia…Do địa người nhận biểu diễn chuỗi ký tự tên, mà tách chia chúng biểu thị dấu chấm: Address = Process-ID.ComputerName.Company.City.Country Thí dụ: 4743CNTT.Dng-Uni.Vnn.Vn Đối với kết nối kiểu multicast, người sử dụng danh sách tiến trình máy tính, mà danh sách gởi tới với thông tin Tuy nhiên, kiểu định vị địa chưa thuận tiện lắm, đơi bạn trao đổi thông tin chưa quen biết trực tiếp chưa biết tên danh định (process-ID) Thí dụ, chương trình muốn gởi liệu cho máy in để in lên trang giấy Trường hợp tên danh định máy in, có biết máy in tồn tại, cách tốt hơn: định nghĩa tên logic người nhận máy in hệ thống, mà xếp thay đổi tới tên danh định hành ID theo trạng thái hệ thống cố định bảng xếp nhân hệ thống phía người nhận Tất việc gọi hệ thống tới máy in dẫn tới địa xác định theo yêu cầu tiến trình gởi Người ta mở rộng ngun tắc việc định vị tên logic tên phi vật lý phạm vi trao đổi thông tin mạng máy tính Vì thơng tin đầy đủ tiến trình, máy tính công sở không cố định máy tính mạng, đó, có máy tính đặc biệt (gọi name server) chuyên dùng cho việc xếp địa xa, gọi địa dừng hay địa phân giải Những điều nói khơng có giá trị việc kết nối kiểu unicast , mà kiểu multicast, với kiểu kết nối này, nhiều tiến trình máy tính thu tóm lại thành nhóm định vị tên nhóm chúng Một kiểu định vị đặc biệt khác nữa, việc định vị nhờ địa tên gọi Ở đây, người ta dẫn kiểu tên gọi logic, mà phụ thuộc vào điều kiện logic, thí dụ, phụ thuộc vào kiểu máy tính hay kiểu CPU, vào nhớ RAM, vào thiết bị ngoại vi… Người nhận định vị việc chọn đọc theo giao thức IF, kết WAHR, đó, cảm nhận cách nhạy bén, kết FALL, (người nhận) khơng có câu hỏi thơng tin bị thất lạc Điều làm tốt hơn, phải phân bổ cơng việc động phải sử dụng thiết bị ngoại vi nhàn rỗi Các hộp thoại (mailboxs): Ở việc trao đổi thông tin không đồng bộ, thông tin nạp trung gian nhờ đệm (buffer), người nhận chưa đọc thông tin Những đệm thông tin bị nhầm lẫn tên, đó, người ta sử dụng tiến trình chưa biết tới để chuyển thơng tin cho Ngay việc quản lý hệ thống bị thay đổi, phải thực việc xếp tên logic tiến trình tới tiến trình vật lý, lại thực việc xếp tên logic đệm tới địa vật lý đệm Kiểu đệm thơng tin cấu tạo hàng đợi, mà đó, thơng tin treo vào người nhận đọc Nếu thấy trước hàng đợi tiến trình nhận nhóm tiến trình, xem xét: trường hợp khơng có thơng tin sử dụng, ví hàng đợi tiến trình gởi; trường hợp dịng thơng tin đầy, đó, nhận hộp thoại với cấu trúc sau: TYPE Mailbox = RECORD SendQueue: tList; ReceiveQueue: tList; MsgQueue: tList; MsgNumb: INTEGER; END; Việc xâm nhập hàng đợi (với hàm Treo vào ( Msg) Bứt (Msg)) phải bảo vệ nhờ tác vụ cờ hiệu, đó, cờ hiệu phải nhìn thấy hộp thoại Ta thấy biến MsgNumber dịch vụ đếm để điều khiển dòng chảy khoảng tới hạn hai hàm Treovào(Msg) Bứt ra(Msg) Nếu với biến MsgNumber =N mà dung lượng hộp thoại đạt lớn nhất, đó, tiến trình gởi treo vào hàng đợi nằm ngủ; ngược lại, biến MsgNumber =0 trường hợp người nhận Nếu MsgNumber =N thơng tin đọc, đó, người nhậ phải thực thêm hàm wakeup(SendQueue) để đánh thức cờ hiệu gởi tồn Khi MsgNumber =0 cờ hiệu phải đánh thức người nhận nằm chờ Đối với kết hợp tiến trình gởi tiến trình nhận phải đạt mục đích, để tiếp nhận thủ tục treo vào hay bứt tờ khai hộp thoại cho phép lối vào hộp thoại qua tác vụ kiểm tra Cấu trúc liệu chung kiểu liệu trừu tượng Ở ngôn ngữ lập trình hướng đối tượng, tờ khai PUBLIC cho phép che dấu cấu trúc liệu che dấu hộp thoại, vậy, nhận cấu trúc liệu giống cấu trúc kiểm tra 2.4.2 Trao đổi thơng tin tiến trình với kênh Unix Ở ấn Unix, trao đổi thơng tin tiến trình sử dụng kênh đệm chuyên dụng Trong thí dụ đầu chương 2, thấy rằng, nhiều chương trình Unix (ở trường hợp tiến trình) tương tác với qua mệnh thức: Programm 1| Programm 2|…| Programm N Ở đây, dấu thẳng đứng biểu thị chế chuyển giao liệu chương trình tới chương trình kế cạnh, mà chế thực nhờ kênh Một kênh trao đổi thông tin hoạt động theo nguyên tắc sau đây: Với hàm gọi hệ thống pipe(), kênh thông tin mở, mà kênh đó, tác vụ đọc viết, dịng lệnh truy cập cách bình thường: read(fileId, buffer) / write(fileId, buffer) Đối với kiểu kết nối trao đổi thơng tin, chương trình (ở vỏ hệ thống người sử dụng) mở kênh (pipe) riêng lẻ truyền tiếp kênh với văn cảnh tiến trình tiến trình con; tiến trình bên gởi sử dụng hàm fileId để viết, cịn tiến trình bên nhận sử dụng hàm để đọc Vì nhận biết files số (số hiệu) bảng, mà chúng truyền cho tiến trình hàm gọi hệ thống fork(), cho nên, trao đổi thơng tin tiến trình cha tiến trình hệ điều hành Unix tạo thành nhờ kênh (pipes) Ở hình 2.33 hai tiến trình: chúng trao đổi thơng tin với nhờ nặc danh pipe, tức chúng truyền pipe cho tiến trình cha ngữ cảnh tiến trình Pipe chứa đựng số lượng bước ngữ cảnh tiến trình (các đường nét đậm) Hình 2.33 -Ở hệ điều hành Unix, pipe khơng định hướng; việc trao đổi thông tin hai tiến trình hai pipe sử dụng Bình thường tiến trình gởi bị hãm, pipe đầy; tiến trình đọc xảy ra, pipe trống Ở loại tiến trình khơng có hãm, tiến trình đọc nhận trở lại mức khơng, khơng có thơng tin bày ra; cịn khơng, số lượng Byte để đọc lưu trữ biến đệm Sự trao đổi thơng tin tiến trình bỏ qua giới hạn kiểu máy tính khả ấn Unix, chúng bỏ qua pipe, ví bỏ qua cấu trúc socket 2.4.3 Trao đổi thơng tin tiến trình với kênh Windows NT Ở Windows NT có trao đổi thơng tin tiến trình với kênh Chúng đạt nhờ gọi hệ thống CreadPipe() Sau đó, người ta nhận hàm WriteFile() ReadFile() nhờ tác vụ đọc viết Với hàm gọi CloseHandle() chúng kết nối Vì đây, việc chiếm dụng kênh (pipes) khơng tồn nhận biết bên ngồi, đó, giống thế, bị giới hạn nhóm tiến trình cha tiến trình Tuy nhiên, theo đó, trao đổi thơng tin tương hỗ ln ln có khả năng, pipe hai hướng Thật vậy, để thay đổi tình trạng có hãm khơng có hãm, Windows NT có cấu trúc named pipes giống cấu trúc socket nói 2.4.4 Đồng tiến trình trao đổi thông tin Ở phần trước thấy, cờ hiệu kiểu động nguyên thuỷ sơ đẳng kiểm tra không sử dụng Cả hai vấn đề cần thiết phạm vi đơn vi xử lý đa vi xử lý, mà không mạng máy tính Do đó, sử dụng kiểu đồng nguyên thuỷ, mà kiểu đồng dùng hệ thống phân bổ Trước hết, điều đạt nhờ việc trao đổi thông tin với thông tin ngắn nhờ chờ đợi việc gởi thơng tin Có thể nói cách xác, việc nhận thơng tin bao gồm hai phần: phần chờ đợi (tức đồng ) thông tin phần đọc thông tin Ở thông tin dài, đồng mức khơng Các hàm send(Message) receive(Message) giống hệt với tác vụ send(Signal) waitFor(Signal) thông tin Chúng ta xuất phát từ hai trường hợp này, thông tin truyền lưu trữ trung gian trước đọc không biến Một đồng khiết mở rộng cách dễ dàng tới việc trao đổi thông tin ngược lại, trao đổi thông tin dùng để làm đồng khiết Tiếp theo, khảo sát đồng tín hiệu Sự đồng tín hiệu: Một sở quan trọng để nhận thông tin xuất biến cố Đó báo động lỗi xuất hệ thống (thí dụ lỗi liệu, địa lưu trữ không rõ ràng…), cách sửa chữa ngoại lệ (thí dụ chia cho zero…) tín hiệu tiến trình khác Do đó, tiến trình biên nhận chờ đợi đồng biến cố có xuất hiện, thiết lập việc xử lý thông báo biến cố hay bỏ lại việc xử lý thông tin xuất không đồng cho thủ tục yêu cầu xử lý Trường hợp thứ hai đặc biệt hữu ích việc sửa chữa ngoại lệ Bằng tiến trình riêng biệt, người ta sửa chữa ngoại lệ chia cho zero, tràn ngăn xếp, tổn thương giới hạn trường…Để có số lượng nhiều sửa chữa ngoại lệ khác nhau, giao diện riêng lẻ thuộc hệ điều hành định nghĩa, khởi xướng biên soạn chương trình bên ngồi đơn thể Các tín hiệu hệ điều hành Unix: Ở hệ điều hành Unix có hệ thống tín hiệu, mà với nó, tồn biến cố thơng báo cho tiến trình Thuộc điều đó, tín hiệu (POSIX) liệt kê định nghĩa SIGABRT SIGTERM SIGQUIT SIGFPE SIGALRM SIGHUP SIGKILL SIGILL SIGPIPE SIGSEGV SIGINT SIGUSR1 SIGUSR2 abort process: yêucầu bẻ gãy tiến trình lậptức terminate: mong muốn kết thúc tiến trình core dump: yêu cầu bẻ gãy tiến trình khỏi nhớ floating point error alarm-Signal: diễn biến đồng hồ thời gian hang up: kết nối điện thoại thiết đặt kill- Signal: bẻ gãy tiến trình trường hợp illegal instruction: lệnh máy không tồn pipe-data: người nhận tồn liệu pipe segmentation violation: địa nhớ sử dụng interrupt-Signal: tín hiệu ngắt dùng cho ứng dụng đặc biệt dùng cho ứng dụng đặc biệt Theo tiêu chuẩn, hệ điều hành Unix có thảy 16 tín hiệu POSIX, mà chúng thể qua bề rộng từ ghi khối điều khiển tiến trình dài 16 bit Ở Unix, dịch vụ hệ điều hành send(Signal) xuất việc gởi tín hiệu SIFKILL để bẻ gãy tiến trình, dịch vụ cịn có tên kill() Việc sử dụng tín hiệu nói suy cho cơng việc xác định, để ghi nhận phạm vi ảnh hưởng chúng Nhưng với trường hợp này, thủ tục (tự định nghĩa) kết nối khoảng gọi hệ thống sigaction(), mà thủ tục bắt đầu chạy xuất tín hiệu tiến trình ngắt phần mềm, mà bên gởi bên nhận, tín hiệu sử dụng để trao đổi thông tin Với tín hiệu này, người ta cịn phân biệt thêm, liệu tiến trình phải chờ đợi tín hiệu xác định từ biến cố hay chờ đợi tín hiệu nói chung Thuộc điều đó, người ta thấy rằng, hệ điều hành khác có dịch vụ khác nhau, mà với hàm logic AND OR, người ta thiết đặt điều kiện cho hoạt động tiến trình nhờ biến cố hay tín hiệu nói Thí dụ chờ đợi biến cố: Các biến cố (như nhấp mouse hai lần, ấn ký tự chuẩn ASCII, chọn menu, điều khiển cửa sổ…) đòi hỏi nhiều phản ứng khác Một cách hữu hiệu, người ta trơng chờ vào chương trình tương tác, ví dụ chương trình điều hành hệ thống cửa sổ, chương trình điều hành biến cố truy nhập… Vì thế, chúng đạt tới gọi hệ thống, gọi chờ đợi đa biến cố (wait-multievent) Chẳng hạn, chúng chờ đời để kích mouse hay ấn nút ký tự ASCII, đó, mặt nạ phù hợp kiến lập Thật vậy, mặt nạ AND có điều kiện, liên hiệp nút bấm SHIFT nhấp hai lần mouse đáp ứng 16 tín hiệu Unix sử dụng để tạo lập đồng tiến trình Với trợ giúp hàm send(Signal) wait(Signal), tác vụ cờ hiệu thực thi cách dễ dàng Ở loại máy tính MODULA-2, đoạn chương trình cho thấy đồng tiến trình thiết lập máy tính Type Semaphor = POINTER to tSemaphor tSemaphor = RECORD besetz: BOOLEAN; free : SIGNAL; END; PROCEDURE P(VAR S: Semaphor); BEGIN IF S^.besetz THEN waitFor(S^.free) END; S^.besetz := TRUE; END P; PROCEDURE V(VAR S: Semaphor); BEGIN S^.besetz := TRUE; send(S^.free) END V; Tuy nhiên, đơn thể cờ hiệu phải chiếm lấy ưu tiên cao tiến trình cịn lại để tác vụ P() V() trở thành nhân tử Điều đạt được: máy tính MODULA-2, thực nhờ chuyển giao ưu tiên khai đơn thể; cịn ngơn ngữ lập trình khác thực nhờ gọi hệ thống setPrio(high) đặt trực tiếp sau từ khoá BEGIN hay nhờ gọi hệ thống setPrio(low) đặt trực tiếp trước từ khoá END Cờ hiệu sinh khởi xướng nhờ việc gọi thủ tục sau: PROCEDURE createSemaphor(VAR S: Semaphor); BEGIN ALLOCATE(S, TSIZE(tSemaphor)); S^.besetz:=FALSE initignal(S^.free); END createSemaphor Hệ thống cờ hiệu tạo vừa nói có nhược điểm: hoạt động tiến trình vi xử lý giống nhau, mà đó, gia tăng ưu tiên trước loại bỏ ngắt Như vậy, hệ thống đa vi xử lý hệ thống nhiều máy tính, có cấu khác sử dụng để đạt đồng Đồng nhờ kiểu kết nối broadcast: Để có phác thảo quan trọng cho việc đồng thông tin trao đổi, câu hỏi đặt là: liệu thơng tin có đến người nhận hay khơng Nếu vài người nhận được, cịn số khác khơng nhận được, điều thật khó khăn cho người gởi để quản lý trao đổi thông tin đắn để đảm bảo sở liệu phù hợp thống cho thơng tin Để thu hẹp chi phí phụ để đảm bảo mức kết thúc hoàn toàn truy cập ngân hàng liệu, điều phải làm là: người ta phải mơ tả trao đổi thông tin kiểu broadcast hoạt động nhân tử (atomic action) Theo F.Cristian (1985), kiểu kết nối atomic broadcast định nghĩa yêu cầu sau đây: + Thời gian truyền đạt thông tin có hạn; + Tất người nhận thông tin, không nhận được; + Dãy thông tin tất người nhận Dãy thông tin tất người nhận sử dụng cấu hãm thể liệu bền vững Nếu dãy nội dung thông tin khắp nơi nhau, đó, trạng thái liệu biến toàn cục files dẫn M Dalcin R.Brause (1987) nhe ỏ hình 2.35 Hình 2.35 -Người ta nhận thấy rằng, dãy thời gian 1,4,3 giữ chặt trạng thái biến tồn cục, vậy, điều độc lập với số hiệu thông tin, tức thông tin phụ thuộc vào việc đếm người gởi Nếu người gởi thành viên nhóm, tất nhiên, người gởi chuyển thơng tin cho để lưu thơng tin liệu nhóm sau nhận thông tin, người gởi phép thay đổi biến tồn cục Nếu trước đó, làm điều này, là: người nhận khác, sau thông báo thay đổi xác định, thông tin chuyển tới nơi, vậy, hiệu lực chỗ khác với hiệu lực tất vi xử lý khác, nghĩa là: khơng có lưu thơng liệu Điều dẫn tới mong muốn che phủ tiến trình khác phương tiện điều hành Do đó, mong muốn tiến trình phải sửa chữa mọt cách mạnh mẽ dãy tuần tự, để tạo khắp nơi trạng thái giống biến che phủ Phương pháp sử dụng cho dãy liên kết chặt chẽ thông tin, không cần đánh số hiển thị tồn thơng tin loại trừ nhiều vấn đề trao đổi thông tin nhóm thay đổi cục Đồng chương trình: Đối với việc gởi nhận tín hiệu, người ta dùng phương pháp trao đổi thơng tin khơng cần đệm Trong trường hợp này, chương trình bên nhận làm chậm lại chương trình bên gởi chuyển thơng tin: đó, gọi nhận đồng có hãm Tức điều dẫn tới đồng người gởi người nhận, mà mong muốn hệ thống tiến trình vậy, có tên gọi nỗi tiếng Rendez-vous-Concept (bản phác thảo chỗ gặp lại) Ngôn ngữ lập trình ADA có chứa đựng ý tưởng tạo điều kiện để chạy chương trình tiến trình trao đổi thơng tin tất hệ thống, mà đó, chương trình biên dịch ADA tạo lập Hình 2.36 trình đồng Hình 2.36 Một ý tưởng quan trọng khác việc thực song song chương trình nhờ tiến trình trao đổi thơng tin Nhiều chương trình tạo lập cách đơn giản hơn, mở rộng chờ đợi niềm nở hơn, người ta diễn đạt trạng thái giống nhiệm vụ, mà hồn tất thực thể chuyên dụng (tách biệt nhỏ) dùng để trao đổi thông tin với Nếu phân tách chương trình thành đoạn mã ngắn, thí dụ mã threads, đó, đoạn ngắn chương trình cần dùng trao đổi thông tin hiệu để thực nhiệm vụ chung chương trình tổng thể Kiểu trao đổi thông tin nội chương trình thật đơn giản người lập trình để tránh lỗi để tạo khả lập trình hiệu suất Với mục đích này, C.A.R More (1978) thiết kế kiểu ngơn ngữ lập trình cho tiến trình trao đổi thơng tin (communicating sequential process: CSP) Ở tiến trình CSP có cấu trúc ngôn ngữ: receive! data1 cho thủ tục send(receive, data1) send?data2 cho thủ tục receive(send, data2) Đôi bạn trao đổi thông tin người gởi người nhận phải chờ đợi việc trao đổi thông tin lẫn Điều phù hợp với kiểu đồng Rendez-vous-Concept (cùng hẹn chờ), tức phù hợp với kiểu trao đổi thơng tin khơng có đệm thêm Sau đồng bộ, việc xếp liệu data2:=data1 thực hiện, data1 data2 phải kiểu liệu, thí dụ kiểu INTEGER hay kiểu REAL Người gởi người nhận có tên cắt nghĩa rõ ràng chương trình Việc thực song song chương trình tác dụng với trợ giúp dấu hiệu sau việc lựa chọn lệnh: B1 → S1 []B2 → S2 … []Bn → Sn Tất điều kiện Boolean B → Bn kiểm tra: Nếu có điều kiện Bi thoả mãn, đó, lệnh tương ứng S i thực Nếu có nhiều điều kiện thoả mãn, phép chọn số điều kiện Một dấu ngoặc vng biểu thị dãy tác dụng xuyên qua việc chọn lệnh khơng cịn điều kiện thoả mãn Sau đó, tiếp tục việc thực lệnh chương trình khác Cấu trúc E.W.Dijktra phát để cảnh giới lệnh, đảm bảo phần nhờ ngơn ngữ lập trình song song OCCAM (1988) Tiến trình trọng lượng nhẹ để trao đổi thơng tin bao gồm vài lệnh dịng Thí dụ, kiểu sản sinh- tác dụng OCCAM coi cơng việc gởi tới tiến trình đệm, mà người sử dụng nhận lại từ Hình 2.37 Bộ đệm kiểu đệm hình xuyến với 10 phần tử tiến trình BufferProc bao bọc mã: CHAN OF item producer, consumer: INT in, out: SEQ in := out :=0 WHILE TRUE ALT IF (in < out +10) AND (producer? buffer(in REM 10)) in :=in +1 IF (out < in )AND (cosumer?more) out := out+1 Theo đó, số thích hợp đệm xuyến chuyển cho việc vào –ra khoảng tác vụ REM (remmainder) Ký hiệu ALT để dãy bất kỳ, ký hiệu SEQ để dãy xác định, mà xác định việc thực dịng lệnh Vì có việc nhập vào điều kiện mới kiểm tra, đó, tín hiệu bổ sung more người sử dụng cần thiết để gọi thơng tin tiếp từ đệm 2.4.5 Trao đổi thông tin ẩn Trong thí dụ kiểu sản sinh- sử dụng mục 2.3.5, liệu tiến trình chuyển tới tiến trình khác nhờ khoảng nhớ nhớ, tiến trình xử lý liệu vừa chuyển tới Sự chuyển giao thông tin gọi trao đổi thông tin ẩn, sử dụng putInBuffer(item); gọi trao đổi thông tin hiển thị sử dụng send(consumer, item) receive(procedure, item) Theo hình 2.38, người ta rút nhận xét sau đây: + Lệnh send(consumer, item) để chuyển item tới đệm hệ thống, mà làm đầy nhờ hai tác vụ P() V() Nếu đệm đầy, tiến trình bị làm chậm lại không gian cho item tồn trở lại + Lệnh receive(procedure, item) để đọc item từ đệm bảo vệ nhờ tác vụ P() V() Nếu khơng có item sử dụng, tiến trình bị làm chậm item xuất Dạng trao đổi thông tin kiểu sản sinh- sử dụng có ưu điểm: Cơ cấu đồng kiểu thực thi với cấu đồng trao đổi thông tin hoạt động bỏ qua giới hạn kiểu máy tính Chúng ta tiết kiệm số tác vụ cờ hiệu, mà đây, giả thiết mục đích xác định thích hợp thủ tục trao đổi thông tin send(Msg) receive(Msg) Cụ thể, điều thực thi hệ thống đơn vi xử lý nhờ tác vụ cờ hiệu cục Trong trường hợp này, phạm vi đệm hộp thoại (mainbox), mà thơng tin treo vào Nói chung, hầu hết cấu trao đổi thơng tin hoạt động tiến trình với trợ giúp vùng nhớ, chúng trình bày tốt nhờ trao đổi thông tin hiển Tiêu phí giảm đáng kể, phần mềm tạo lập chạy không hệ thống đơn vi xử lý, mà hệ phân bổ Ở đây, người ta chuyển đổi cách dễ dàng từ trao đổi thông tin tiến trình với trao đổi thơng tin tiến trình khác, giao diện, việc thực thi chức send() receive() sử dụng thư viện 2.5 Các tập chương 2.5.1.Các tập trạng thái tiến trình Bài tập 2.1 Về dạng điều hành (operating-typs) Bạn kể vài dạng điều hành hệ điều hành (operatingsystem) mà bạn nhận thức qua chương Bài tập 2.2 Về tiến trình a) Bạn giải thích khác thực chất khái niệm chương trình, tiến trình thread (xâu) b) Trong hệ điều hành Unix máy tính, khối điều khiển tiến trình (PCB) cấu trúc người sử dụng xem xét nào? Bạn kiểm tra tệp tin /include/sys/proc.h /include/sys/user.h, đồng thời bạn biểu thị điền vào theo nhận thức Bài tập 2.3 Về tiến trình a) Một tiến trình dẫn qua trạng thái tiến trình nào? b) Điều kiện chờ đợi biến cố gì? c) Bạn thay đổi độ trạng thái sơ đồ trạng thái hình 2.2 sơ đồ khác tương tự Bạn lý giải thay đổi bạn Bài tập 2.4 Về tiến trình hệ điều hành Unix Ở hệ điều hành Unix, với ngôn ngữ C, gọi hệ thống ExecuteProgramm(prg) thực nào? Khi thủ tục với trợ giúp gọi hệ thống fork() waitpid() Bài tập 2.5 Về tiến trình threads Bạn thực hai thủ tục tiến trình trọng lượng nhẹ chúng chuyển giao điều khiển cách đồng thời 2.5.2 Các tập định thời tiến trình Bài tập 2.6 Về định thời a) Sự khác thời gian thực thời gian Job gì? b) Bạn lý giải khác giải thuật định thời kiểu phản hồi đa mức (multilevel- feedback) giải thuật định thời kiểu tiền cảnh hậu cảnh (foregroundbackground) Bài tập 2.7 Về định thời Có xấp nhiệm vụ tới máy tính gần đồng thời; chúng có thời gian thực chừng 10, 6,4,2 phút; theo đó, chúng có quyền ưu tiên theo thứ tự 3, 5, 2, 4; đây, số có quyền ưu tiên cao số có quyền ưu tiên thấp Bạn cho biết thời gian thực thi trung bình cho giải thuật định thời (bỏ qua tổn thất thời gian chuyển đổi tiến trình.): a) Kiểu định thời quay vịng Robin; b) Kiểu định thời có ưu tiên; c) Kiểu định thời đến trước dịch vụ trước; d) Kiểu định thời Job ngắn - trước Ghi chú: Đối với kiểu (a), bạn thấy rằng, hệ thống sử dụng kiểu điều hành đa chương trình nhiệm vụ nhận phần xác định thời gian vi xử lý Đối với kiểu (b), (c) (d), bạn thấy đấy, nhiệm vụ kế thực Bài tập 2.8 Về định thời song song a) Nếu chương trình dẫn tới 40% mã (khơng thể dẫn tới mã song song) Khi đó, độ tăng tốc (speedup) đạt bao nhiêu? b) Giả sử có phương tiện điều hành A tiếp tục sử dụng Người ta thay đổi sơ đồ Gantt hình 2.12 để thời gian sử dụng hơn? 2.5.1 Các tập đồng tiến trình Bài tập 2.9 Cái xảy ra, mục 2.3.1, tiến trình A nhận điều khiển sau bước xảy đổi chiều? Có cịn khả tạo lỗi không? Bài tập 2.10 Về ngăn hãm lẫn Bạn diễn giải thủ tục: Entering_area(Process: INTEGER) leaving_area(Process: INTEGER), mà chúng chứa đựng giải pháp Peterson vấn đề ngăn hãm lẫn Cho đó, hạn định nghĩa hai biến toàn cục Interesse[1 2] dran Một khái qt tồn n tiến trình khơng? Nếu có, nào? Bài tập 2.11 Về cờ hiệu a) Các tác vụ cờ hiệu P V diễn đạt nào, s chứa đựng số lượng tiến trình chờ đợi? b) Giải pháp mô tả quan hệ nhà sản xuất người tiêu dùng thay đổi nào? c) Người ta phải thay đổi s nào, có nhiều phương tiện điều hành tồn tại? Bài tập 2.12 Về đồng tiến trình Việc đồng phương tiện điều hành theo hình 2.11 dẫn với trợ giúp cờ hiệu? Bài tập 2.13 Về vài khái niệm a) Sự khác khái niệm khoá tử, ngăn hãm làm đói tiến trình gì? b) Sự khác hai khái niệm chờ đợi tích cực chờ đợi thụ động chỗ nào? c) Bạn dẫn ví dụ thực tế khái niệm khố tử Bài tập 2.14 Về khoá tử ngăn hãm Một sinh viên s1 có mượn sách A thư viện; sách, tìm thấy tài liệu hướng dẫn sách B; đó, muốn mượn sách Quyển sách B sinh viên s mượn, anh tìm thấy sách B hướng dẫn nằm sách A; thế, thử mượn sách A Tình cần phải thiết đặt khố tử,một ngăn hãm hay khơng có hai? Bạn lý giải ý kiến bạn Bài tập 2.15 Về vấn đề kiểm tra a) Bạn thực thi vấn đề đọc/ viết giải pháp kiểm tra b) Ưu nhược điểm giải pháp kiểm tra gì? Bài tập 2.16 Về giải thuật nhà băng(ngân hàng) a) Dãy hai dãy có khả ví dụ nêu hình 2.29 giải thuật nhà băng tiến trình (P1…P5) b) Giả sử tiến trình P1 nhận ổ đĩa băng từ (một loại ổ đĩa mềm dùng bưu điện hay ngân hàng) bổ sung Có phải hệ thống bị khố tử đe dọa không? Bài tập 2.17 Về bảo vệ hệ thống a) Một hệ thống máy tính có ổ đĩa n tiến trình; tiến trình cần dùng hai ổ đĩa Hỏi n phải để đảm bảo hệ thống an toàn? b) Nhằm để phân cấp trạng thái bảo vệ, có m phương tiện điều hành n tiến trình số lượng tác vụ tỷ lệ với biểu thức m anb Hỏi a b đạt yêu cầu? 2.5.4 Các tập trao đổi thông tin Bài tập 2.18 a) Bạn mơ tả cách chi tiết dịng lệnh sau tác động lên hệ điều hành Unix? grep deb xyz | wc-1 b) Ở Unix, việc trao đổi thơng tin bị bó hẹp thơng tin nhóm tiến trình cha/ Tại việc thực thi gặp phải thu hẹp này? c) Bạn trình bày độ trạng thái tiến trình mục 2.1 với trợ giúp thông tin hộp thư Ai gởi cho thông tin này? Bài tập 2.19 Về trao đổi thơng tin kiểu đường kênh (cịn gọi kiểu pip) Bạn quan sát hệ thống tiến trình, hệ thống trao đổi thông tin kiểu đường kênh (pips) hệ điều hành Unix, mà đệm chúng cấp phát không gian nhớ nói chung đường kênh có tiến trình gởi tiến trình nhận a) Dưới hồn cảnh nào, tiến trình chen vào để đợi chờ? b) Bạn sơ đồ hoá chế thích hợp để khẳng định hay để phịng tránh khoá tử (deadlocks) cho hệ thống c) Với hệ thống có quy tắc để lựa chọn tiến trình vật hy sinh, khố tử tồn Nếu đúng, bạn thiết lập quy tắc này! ... theo tiến trình, vậy, điều hành tiến hành song song Ngồi ra, có vi xử lý thực phần tiến trình dẫn tới Ở hệ thống đơn vi xử lý ln có tiến trình thực hiện, tiến trình khác giữ lại chờ đợi Điều. ..Thí dụ hệ điều hành UNIX: Các chương trình hệ thống Unix gọi tảng, tổng hợp giải pháp đồng thích ứng thuận tiện Sự độc lập tiến trình kể chương trình hệ điều hành Unix cho phép khởi... tới tiến trình danh sách sẵn sang Nếu điều khơng lập trình người sử dụng, chứa đựng hệ điều hành qua việc gọi hệ thống Do đó, qua thời gian chuyển đổi gọi hệ thống tiến trình threads tiến trình