Việc phân bổ các chức năng giữa chương trình người sử dung và cửa sổ quản lý làm yêu cầu thêm về việc tách chia các nhiệm vụ một cách rõ ràng; ở đó giữa các nhiệm vụ chuẩn của cửa sổ quả[r]
(1)CHƯƠNG 1.0 MỞ ĐẦU Những quan niệm hệ điều hành (operating system) Một hệ điều hành là phần mềm chứa đựng tất các chương trình cần thiết để điều hành máy tính thực các ứng dụng khác Nếu người sử dụng máy tính để xử lý text, mong rằng, máy tính chứa đựng tất các chức ứng dụng xử lý text Các phần mềm hệ điều hành dùng trên thị trường là phần mềm đã chuẩn hoá Tất có chung chức là kết nối phần cứng máy tính ( vi xử lý, nhớ và thiết bị xuất nhập) và các phần mềm ứng dụng ( các files, các chương trình người sử dụng…) Ta định nghĩa cô động: Hệ điều hành là tổng hợp các chương trình sử dụng là phương tiện điều hành để quản lý và điều khiển Định nghiax này không đòi hỏi đa và hoàn mỹ mà nó thực nghiệm cách uyển chuyển để mô trạng thái tức thời khái niệm có thể thay đổi Sự khác định nghĩa thứ là chỗ, chương trình dịch vụ ( biên dịch và kết nối) gắn vào hệ điều hành, nó lại tách rời định nghĩa thứ hai Sau đây, chúng ta chấp nhận quan điểm trung hoà: Hệ điều hành là phần mềm có ứng dụng độc lập và cần thiết để điều hành máy tính Tuy nhiên, cắt nghĩa khái niệm ứng dụng độc lập và cần thiết là chủ quan và đó điều tất nhiên là phải dẫn tới lý thuyết 1.1 Các lớp hệ điều hành Không có hệ điều hành nào mà không cần tới trợ giúp phù hợp với các yêu cầu chương trình ứng dụng Sự trợ giúp này phụ thuộc vào cấu hình người sử dụng (NSD) định nghĩa và biến đổi quá trình công tác Nếu trước đây việc quản lý vi xử lý, nhớ và việc xuất nhập thuộc hệ điều hành, thì ngày giao diện người sử dụng đòi hỏi với các thành phần và độ lớn lớp khác các chức mạng máy tính Đặc trưng hệ thống máy tính hoạt động độc lập với các phần mềm hữu là cần tới trợ giúp hữu hiệu tương ứng hệ điều hành (HĐH) Hình 1.1 mô tả quan hệ các phần mềm và máy tính NSD Chương trình NSD HĐH Phần cứng máy tính Hình 1.1.Những quan hệ tương đối các thành phần (2) Điều đó cách chặt chẽ hình 1.2 đây với mô hình hệ thống các lớp Lớp a Lớp b Lớp c Lớp d User1 User User Compiler Editor Các ứng dụng… Dịch vụ hệ điều hành Phần cứng Hình 1.2 Mô hình các lớp 1.2 Các giao diện và máy ảo Ở trên chúng ta đã nói tới mô hình các lớp Sự tương đối việc lớp này ( thí dụ lớp a) ứng dụng lớp ( thí dụ lớp b) rằng, lớp b đã dịch vụ lớp a Đó là trường hợp việc sử dụng procedure lớp b chương trình lớp a Nếu chúng ta xuất phát từ đó, tất các khả dịch vụ yêu cầu theo thứ tự xác định, đó yêu cầu người sử dụng đới với các chương trình tiện ích hay các yêu cầu các chương trình tiện ích các hệ điều hành các yêu cầu hệ điều hành đới với phần cứng thì diễn biến theo trục thời gian… Và yêu cầu đó xếp liền kề Mỗi lớp không tạo thành đơn vị phần mềm hình 1.2, mà chúng còn xếp cách cạnh Những chức dịch vụ lớp ( các procedure, các liệu và các giao thức tiện dụng chúng) người ta tập hợp giao diện Chương trình mà nó mang lại khả dịch vụ tập hợp thành dãy các lệnh, mà dịch vụ này sử dụng khả riêng Lớp cùng tạo phần cứng máy tính Vì các chức chúng điều chỉnh qua các giao diện, đó người ta coi chúng máy Tuy nhiên, máy này không tự làm việc được, nó không phải là máy thực và đó người ta gọi là máy ảo Chức các máy ảo tổng thể tạo cộng tác các máy ảo riêng lẻ Cho đến chúng ta đã có phân biệt máy vật lý và máy ảo Bây có thêm loại thứ 3: máy logic Một số người cho máy logic là máy ảo, số người khác tách biệt chúng thành máy vật lý và máy ảo Một ổ đĩa ảo mô hình hoá trường các khối nhớ mà nó xem đồng nghĩa với số khối Ngược lại, ổ đĩa logic mô tả cái gì cụ thể hơn, nó hiểu là ổ đĩa cứng với nhiều điểm khác biệt thời gian trễ và ưu tiên vận chuyển liệu ( data) Hình 1.3 điều đó (3) Với ý tưởng đó, người ta đưa khái niệm quản lý các khối nhớ, đó chỗ nhớ các ổ đĩa cứng quản lý cách thống mà không cần phải quan tâm tới giao diện các ổ đĩa ảo Máy ảo (Virtual Machine) Máy logic Máy logic Drive Drive Máy vật lý Máy vật lý Hình 1.3 Minh hoạ máy vật lý, máy logic và máy ảo Trong kiểu kết hợp thứ 3, việc khảo sát máy logic cụ thể thì độ chính xác đầy đủ ổ đĩa cứng ( ghi trạng thái, thông tin lỗi, địa buffer đọc viết) phải rõ ràng Việc quản lý thông tin và việc che phủ lớp liền kề phía trên ( việc quản lý máy logic) cần tới kích tạo chuyên dụng (specify- driver) Trong trường hợp này, ý nghĩa các định nghĩa là: Máy ảo = máy logic + Bộ kích tạo quản lý (Manager-driver) Máy logic = Máy vật lý + Bộ kích tạo phần cứng (Hardware - driver) Cả loại máy tạo nên lớp trình bày hình 1.3 1.3 Kiến trúc hệ điều hành Để điều hành ứng dụng độc lập máy tính, hệ điều hành ( operating system) chứa đựng phần mềm sau: Các chương trình dịch vụ và các công cụ: các chương trình tiện dụng Editor… Các chương trình dịch: thông dịch ( interpreter), biên dịch (compiler), chuyển đổi ( translator)… Giao diện người sử dụng: hệ thống giao tiếp text và độ họa với người sử dụng… Vì hệ điều hành đầy đủ phải bao gồm hàng trăm MegaByte, đó với dùng lượng này thì chức ứng dụng thông thường nạp để làm nhân hệ điều hành ( operating system kernel) nhớ chính Hình 1.4 mô tả việc nạp nhân hệ điều hành lớp hệ thống máy tính Đó là các (4) phần mềm để quản lý thiết bị, nhớ và vi xử lý, đồng thời phần mềm quan trọng để quản lý mạng NSD (User 1) NSD (User 2) GIAO GIAO DIỆN DIỆN NSD NSD (User (User Interface) Interface) Các ứng dụng Các dịch vụ Các công cụ Nhân hệ điều hành (Operating System Kernel) Phần cứng (Hardware) Hình 1.4 Cấu trúc khái quát các phần mềm máy tính 1.3.1Gọi hệ thống (system- call) Các dịch vụ nhân yêu cầu qua việc gọi hệ điều hành và dẫn tới gọi các procedure bình thường theo khuôn khổ định Vì việc nạp nhân hệ điều hành nhớ chính có thể thay đổi, đó các chương trình tiện dụng luôn luôn kết nối cách mẻ Ở hầu hết các nhân hệ điều hành có cấu gọi đặc biệt để đáp ứng khả dịch vụ mà không biết địa chính xác procedure Cơ chế gọi này bao gồm nhớ các tham số trên ngăn xếp (stack) và khởi động tín hiệu phần cứng hay bắt đầu ngắt phần mềm (softwareinterrupt) Như vậy, ngắt phần cứng, vi xử lý lưu trữ trạng thái và địa lệnh ( instructionadress) ngăn xếp, đón nhận trạng thái và địa lệnh kế sau đó nhớ chính và tiếp tục thực các lệnh địa này Ở việc tự khởi động hệ thống máy tính thì địa đưa vào nhân hệ điều hành mô tả trên không gian nhớ ngắt, đó chương ứng dụng tìm thấy dấu đợi lệnh ( prompt) hệ điều hành Hình 1.5 quá trình gọi hệ thống (5) CÁC LỆNH program GỌI HỆ THỐNG CÁC LỆNH program NGẮT TRỞ LẠI TỪ NGẮT DỊCH VỤ CỦA NHÂN HỆ ĐIỀU HÀNH Hình 1.5 Vòng lệnh việc gọi hệ thống Sau gọi hệ thống thì lệnh không thực đồng thời mà vòng lệnh địa nhớ này ngừng đột ngột, đó ngắt phần mềm biểu thị là cửa bẩy (trap door) Việc chuyển đổi chương trình người sử dụng tới hệ điều hành tiến hành bất kì nào nhằm mở rộng khả truy cập mã cách hữu hiệu Nếu phần lớn các máy tính bảo vệ trước chuyển đổi chương trình người sử dụng thì đó tất các thiết bị bảo vệ ngắt để không cản trở nhân hệ điều hành Ở việc rút khỏi, nhân hệ điều hành đóng trở lại cách tự động mà không cần người sử dụng biết điều hành xảy hầu hết qua vi xử lý và không cần người sử dụng thực tay Những vi xử lý còn chế ngự mức độ bảo vệ kế tiếp, nhiên nó nâng cao chi phí phần cứng trên vi mạch (chip) Để khắc phục các lỗi khối dấu phẩy trôi ( Floating Point Unit: FPU) thì ngắt phần mềm sử dụng Việc khắc phục lỗi này không chứa đựng hệ điều hành mà nó phó mặc cho chương trình ứng dụng hay chương trình ngoại vi 1.3.2.Thí dụ Unix Trong hệ điều hành Unix truyền thống, giao diện người sử dụng có thông dịch lệnh mà người ta gọi là vỏ ( shell) Từ đó, tất các chương trình người sử dụng các chương trình hệ thống hệ điều hành khởi động Sự trao đổi thông tin người sử dụng và hệ điều hành xảy qua các kênh xuất nhập Trường hợp đơn giản, đó là việc nhập các ký tự qua bàn phím và việc xuất qua thiết bị đầu cuối Sơ đồ sơ lược trên hình 1.6 (6) Vỏ NSD1 (User shell 1) Vỏ NSD2 (User shell 2) Chương trình NSD Chương trình hệ thống Chương trình hệ thống … -trạng thái NSD trạng thái nhân Giao diện kiểm tra và phân bổ chức quản lý nhớ Dãy xuất / nhập phô bày TTY máy in mouse Hệ thống file tiến trình đĩa mạng mềm quản lý Phần cứng Hình 1.6.Các lớp hệ điều hành Unix Cho đến nay, Unix là hệ điều hành có nhiều mạnh khác Bởi lẽ, nó không là hệ điều hành trợ giúp đồng thời nhiều người sử dụng, mà còn có thể thực đồng thời nhiều chương trình Nhờ việc thực thi vượt trội với ngôn ngữ lập trình bậc cao C thì nó có thể truy cập cách dễ dàng và nhanh chóng tới phần cứng khác Ở biên dịch C cũ, người ta muốn thay đổi tạo mã ( Codegenerator) với câu lệnh thì công việc chính phải làm là, phải mô tả lại các chương trình hệ điều hành nhân ngôn ngữ C và sau biên dịch, chúng có thể chạy máy tính Tuy nhiên, việc chuyển đổi còn vài vấn đề cần phải hoàn hảo Các phiên đầu tiên Unix thì phụ thuộc nhiều vào phần cứng, trước hết nó phụ thuộc vào bề rộng từ (word- width) CPU Trong các phiên sau này ( Berkeley Unix Systems IV và V) đã tu chỉnh và sửa chữa nhiều Cho đến công việc chuyển đổi không phải không còn vấn đề Từ thực thi này tới thực thi khác có cấu trúc sở khác biệt Unix Do đó loại và số lượng gọi hệ thống là đa dạng Việc chuyển đổi chương trình người sử dụng các phiên khác thực đã giảm thiểu Để có trợ giúp, thì tổ chức khác đã thành lập Nỗi bậc là nhóm X/Open ( bắc Mỹ và Châu Âu) Một hiệp định các công ty và trường đại học đã đưa vài chuẩn khác Một các chuẩn đầu tiên đó là hệ thống chuyển đổi POSIX ( Portable Operating System Interface based on Unix) Unix, mà nó định nghĩa là lượng các dịch vụ có thể sử dụng khác Tất nhiên chúng là dịch vụ, không định nghĩa trực tiếp là gọi hệ thống Điều thú vị là, biểu trưng Unix phù hợp với giao diện bắt (7) buộc không phải là mọt thực thi Điều đó có ý nghĩa rằng, Unix thực chất là cấu hệ điều hành ảo không phải thực thi 1.3.3 Thí dụ Windows NT Hệ điều hành Windows NT hảng Microsoft là hệ thống tương đối đại, nó phát triển lảnh đạo David Cutler vào năm 1988 Một dự án để sản xuất hệ điều hành chuyên dụng Microsoft lần đầu tiên thực nghiệm, nó bao gồm các ý tưởng sau đây: Một hệ điều hành phải bao hàm các chuẩn hữu (MS- DOS, 16 bitWindows, Unix và OS/2) và thị trường chấp nhận cách rộng rãi Nó phải chắn và bền vững Nghĩa là các chương trình vừa tương hổ vừa không làm tổn hại hệ điều hành, các lỗi xuất có hậu giới hạn Nó phải truy cập cách dễ dàng trên phần cứng có phiên thấp Nó không che phủ tất cả, mà nó phải đáp ứng cách dễ dàng các yêu cầu chuyển đổi Điều quan trọng: nó phải là hệ điều hành mạnh Nếu quan sát dự kiến này, người ta thấy, đó là điều nan giải Những yêu cầu đồng thời ( tương thích, bền vững, tiện lợi và mạnh) thì đối lập với chính nó, vì MS-DOS thì tuyệt đối không bền vững, không mạnh và hoàn toàn không tương thích với Unix Tuy nhiên, tác giả đạt mục đích, vì đã sử dụng kinh nghiệm các hệ điều hành khác và đã biến điệu cách mạnh mẽ Việc phân lớp và quan hệ gọi nhân phác thảo gốc trình bày trên hình 1.7 Nhân hệ điều hành này mang tên Windows NT Executive, nó là phần khối chuyển đổi trạng thái người sử dụng và trạng thái hệ điều hành Để giải vấn đề thiết kế, đây ba tiêu chí quan trọng hệ điều hành nói tới Tính tương thích ( compatible) Đó là khả đặc biệt hệ điều hành mà ta có thể truy cập vào hệ điều hành riêng lẻ Với tư cách là cấu hệ điều hành ảo, nó chứa đựng khả dịch vụ Windows NT Executive ( tức là gọi hệ thống biểu thị mũi tên vẽ đậm trên hình 1.7) Việc xuất nhập định hướng ký tự dẫn dịch vụ Win32 Những dịch vụ hệ thống (subsystem) yêu cầu qua các thông tin ( gọi các local procedure, xem mũi tên vẽ nhạt trên hình 1.7) các chương trình người sử dụng hay khách hàng Nếu là server, chúng có quan hệ client/server (8) Độ bền vững ( strengthen) Nó đạt nhờ phân chia chặt chẽ các chương trình với và nhờ việc luôn luôn giữ vững các quá trình ngoại vi (cơ cấu DOS ảo) các chương trình chạy trên MS-DOS hay trên Windows Các chức này là đồng đều, việc truy cập(số liệu) trực tiếp tách trên phần cứng, với các chức này thì các chương trình cũ có thể chạy Những biện pháp phụ hệ thống files có độ chính xác lỗi và cấu bảo vệ chuyên dụng để kiểm tra chọn files, mạng và chương trình đã trợ giúp cho mục đích này Độ thuận tiện (commodity) Đó là khả có thể bảo quản và mở rộng, qua đó, hệ điều hành viết ngôn ngữ C, có thể trao đổi mạnh và phân lớp từ đầu Với lớp HAL (xem hình 1.7), phần cứng mô là máy ảo và việc truy cập tới các vi xử lý khác nó thu hẹp thay đổi cần thiết trên các đơn thể Điều thú vị là từ các version 4.0 hệ thống Win32 thì đã tiết kiệm thời gian để gọi hệ thống từ Win32 tới Win NT Sự trợ giúp chuẩn khác ( hệ thống file OS/2 với version 4.0) thì hệ điều hành Win NT đã điều chỉnh 1.4 Sự giao kết phần cứng và phần mềm Cấu tạo các máy ảo cho phép giữ lại giao diện cách tương tự tới các đơn thể và thay đổi thực thi Do đó, nó có điều kiện để thực việc thực thi nhờ giao trộn qua lại từ phần cứng và phần mềm Đối với khả dịch vụ thì điều đó không quan trọng Vì phần cứng làm việc nhanh hơn, giá đắt hơn; ngược lại phần mềm làm việc chậm hơn, giá lại rẻ và có thể thay đổi nhanh chóng Do đó, thiết kế cấu trúc máy tính , người ta phải lưu ý giải hai nguyên kể trên Hình 1.8 là thí dụ, cho thấy phân lớp theo mã máy tượng trưng (trên hình vẽ ký hiệu p-code), mà nó là giao kết phần mềm qua biên dịch (compiler) và thông dịch(interpreter), là có thể thực phần cứng qua các lệnh máy Trong trường hợp thứ hai, lớp di chuyển phần cứng (xem hình 1.8 phía bên trái) Trong đó, lệnh p-code thực chức (tức là lập trình mã microcode) CPU Program in p-code p-code/machinecode CPU- hardware Program in p-code Microcodehardware and CPUhardware Hình 1.8 Sự giao kết phần cứng và phần mềm mã p-code (9) Đối với vấn đề vừa nêu, điều khác cần phải nói, đó là trợ giúp các chức mạng Với các điều khiển mạng rẻ tiền thì hầu hết có chứa đựng tập hợp các chip theo tiêu chuẩn, nó là cấu nối tín hiệu và có thời hạn làm việc định Tất chức và giao thức cao để kết hợp các gói liệu để tìm thấy lộ trình mạng phải nhớ chính và phần mềm tích hợp thực hiện, điều đó làm giảm đáng kể khả vi xử lý các nhiệm vụ khác(như giao diện người sử dụng, xử lý text…) Trên sở đó, các điều khiển mạng giá đắt hơn, các chức điều khiển mạng và quản lý liệu di chuyển trên phần cứng, nghĩa là vi xử lý phải thực số quy trình để tiếp cận chức mức độ cao Ở đây, điều chẳng có gì quan trọng đó là: chức điều khiển mạng đã hoàn thiện nhờ vi xử lý riêng lẻ nhờ kết cấu thích hợp chip Ngoài ra, ngôn ngữ hình thức sử dụng để thiết kế các lệnh cho máy thì khác hai vấn đề trên không còn điều gì để nói Điều định còn lại cần phải xem xét, đó là giá thành, chất lượng tiêu chuẩn và mong muốn khách hàng 1.5 Cấu trúc nhiều vi xử lý (multi- processorsystem) Đối với vấn đề quản lý các phương tiện điều hành thì điều quan trọng là phải xem xét còn tồn quan hệ và phụ thuộc nào chúng Điều đó độc lập với việc sử dụng kiểu vi xử lý, kiểu bus, hay loại sản phẩm vi mạch các nhớ, vấn đề là, người ta phải biết phân biệt vài kiểu cấu hình Trong trường hợp kinh điển và đơn giản, trước hết ta khảo sát hệ thống với vi xử lý dùng làm nhớ quảng đại (massen- memory) và nhớ chính (main memory) để xây dựng hệ điều hành và thực các chương trình người sử dụng (xem hình 1.9) Ở đây, các thiết bị vào- (như màn hình, bàn phím, chuột…) không trên hình vẽ Các chương trình các liệu Nhân HĐH nhớ quảng đại Chương trìnhNSD1 … Chương nhớ chính processor Hình 1.9 Hệ thống vi xử lý đơn trìnhNSDn (10) Từ việc nghiên cứu hệ thống đơn vi xử lý vừa nêu, người ta có thể thiết lập hệ thống với nhiều vi xử lý Mỗi lần người ta kết nối các vi xử lý khác thì nhận cấu trúc hệ thống khác Cấu trúc đơn giản cho thấy, đó là CPU mà các vi xử lý đơn mắc song song qua bảng kết nối, chẳng hạn qua bus đa nhiệm (multi-master- systembus) Hình 1.10 mô tả hệ thống nhiều vi xử lý; đó P1….Pn là các vi xử lý đơn và M1…Mn là các nhớ quảng đại Các đơn thể vi xử lý định vị trên phía bảng kết nối, còn phía là các đơn thể nhớ Đối với việc truy cập mã chương trình hay mã liệu thì kết nối chúng tạo ra, kết nối này tồn suốt thời gian yêu cầu P1 P2 Pn Bảng kết nối (với multi-master-systembus) M1 M2 Nhân HĐH Chương trìnhNSD1 … Chương trìnhNSDn Hình 1.10 Hệ thống đa vi xử lý Một cấu trúc dẫn tới cách dễ dàng giảm sút hiệu suất thực thi, vì bảng kết nối quá tải phải thường xuyên truy cập nhớ Trong trường hợp này, trợ giúp dẫn từ việc quan sát, các vi xử lý tham chiếu giới hạn hẹp phần chương trình Ở đây, nhớ có thể phân chia và dẫn cách dày đặc tới vi xử lý (xem hình 1.11) Tất nhiên, phân chia này phải trợ giúp biên dịch để nó phân chia chương trìng người sử dụng cách thích hợp (11) Nhân HĐH Chương trìnhNSD1 Nhân HĐH Chương trìnhNSDn P1 P1 Bảng kết nối M2 M1 Hình 1.11 Hệ thống nhiều máy tính Mạng máy tính tồn là kiểu kết nối thứ ba Ở đây, các máy tính làm việc độc lập với hệ điều hành riêng lẻ (nghĩa là không cần thiết phải giống nhau), kết nối với mạng (xem hình 1.12) Nhân HĐH Chương trìnhNSD1 Chương trìnhNSDn Nhân HĐH M2 M1 P1 P1 Bảng kết nối (mạng LAN, WAN) Hình 1.12 Mạng máy tính - cấu trúc đa vi xử lý Nếu có phần mềm tạo lập trên máy tính, mà máy tính này làm việc là máy chủ (server), nó cung cấp các dịch vụ (các tài nguyên) cho các máy tính khác (client) thì người ta gọi cấu trúc này có quan hệ khách- chủ (clientserver) Thông thường, máy chủ có khả dịch vụ là quản lý chương trình (number- cruncher), quản lý in ấn (print server), quản lý liệu (file server)… Mỗi kiểu cấu trúc máy hệ điều hành máy tính trình bày trên có lợi và yếu khác Đối với chúng ta, điều quan trọng là, sử dụng cấu nào để đạt trao đổi thông tin qua các vi xử lý và để đạt (12) truy cập đồng các phương tiện điều hành Đó chính là phương hướng tiếp tục xem xét kỷ lưởng các chương sau 1.6 Các bài tập chương Bài tập 1.1 Về hệ điều hành Mục đích hệ điều hành bao gồm việc phân bổ các phương tiện điều hành theo thỉnh cầu người sử dụng a) Vì phải tạo thô hệ điều hành ? b) Có phương tiện điều hành nào bạn biết? c) Người sử dụng nào có thể thỉnh cầu ? (Ở đây khái niệm người sử dụng là khái niệm khái quát) d) Người sử dụng đòi hỏi yêu cầu gì hệ điều hành? e) Bạn hãy giải thích các khái niệm máy ảo và giao diện Bài tập 1.2 Về hệ điều hành Unix a) Trên phạm vi các máy tính quan bạn, hệ điều hành Unix có bao nhiêu gọi hệ thống ? b) Các gọi hệ thống phân thành máy nhóm chức ? c) Một gọi hệ thống thực thi trên máy tính bạn nào? Gợi ý:Nếu bạn mở sổ tay lập trình Assembler hay C, bạn thực trình Debugger dịch trở lại gọi hệ thống viết ngôn ngữ C thành Assembler; đó các tệp tin include C (như syscall.h trap.h, proc.h, kernel.h…)sẽ đưa nhiều trợ giúp thú vị (13) CHƯƠNG TIẾN TRÌNH 2.0 Quan niệm tiến trình Trước đây tuỳ thời điểm, máy tính xác định nhiệm vụ chính; tất các chương trình bó lại thành gói (paket) và gởi liên tục Điều đó gọi là 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 trên máy tính, mà nhiều chương trình cùng 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 cù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ổ các phương tiện điều hành phải điều chỉnh trên chương trình Ngoài ra, điều đó còn tiết kiệm thời gian chạy máy và giảm đáng kể thời gian thao tác Thí dụ, người ta có thể điều chỉnh phân chia vi xử lý chính (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 đó hoàn thiện thì vi xử lý đẩy ký tự cho máy in và 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 là thông tin trạng thái các phương tiện điều hành chương trình (thường gọi là Job) Hình 2.1 minh họa điều trên đâ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 các liệu tiến trình Một tiến trình này có thể sinh tiến trình khác, đó người ta gọi tiến trình đầu là tiến trình cha, còn tiến trình sinh là 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 và nhiều tiến trình Một chương trình (gọi là job ) có thể tự phát sinh nhiều tiến trình (14) Thí dụ hệ điều hành UNIX: Các chương trình hệ thống Unix gọi là tảng, nó tổng hợp các giải pháp đồng và thích ứng thuận tiện Sự độc lập các tiến trình và kể các 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 thì người ta có thể 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 là ba tiến trình riêng lẻ, mà đây 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ý có thể xếp theo tiến trình, và vậy, điều hành tiến hành song song Ngoài ra, có vi xử lý thực phần tiến trình và dẫn tới Ở hệ thống đơn vi xử lý thì luôn có tiến trình thực hiện, tiến trình khác giữ lại và chờ đợi Điều này khảo sát các 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, chúng ta phải xem xét tiến trình khác chờ đợi đâu Đối với nhiều khả biến cố, nó có hàng đợi riêng, mà đó các 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 các tiến trình nhận các thay đổi và giải hãm, tiếp đến, đầu tiên chúng chuyển dịch vào danh sách sẵn sàng và sau đó, chúng đón nhận vi xử lý dãy tuần tự.Các trạng thái và quá độ chúng sơ đồ hoá trên hình 2.2 (15) ready Rs CPU Nhaän R Nhaän CPU running Traû CPU Rs CPU blocked Chờ R Rs CPU Hình 2.2.Các trạng thái tiến trình Ở đây, chúng ta còn quan tâm tới điều, các chương trình và các tiến trình thì không tồn vĩnh viễn, mà chúng có thể sinh và kết thúc nào Do đó, từ các lý bảo vệ, các 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 này thành trạng thái liền kề Việc chuyển đổi các tín hiệu, việc lưu trữ các liệu tiến trình và việc xếp thành các hàng đợi chức trung tâm hoàn thiện, các chức này 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 thì mong muốn các tiến trình khai báo, mà cái đó khuôn khổ việc quản lý các 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 các 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 thì đưa vào danh sách đó Điều đã rõ, tiến trình có thể luôn luôn 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 các tiến trình làm việc, chúng biểu thị là 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 cùng CPU thì nó CPU có thể biểu thị là nột vi xử lý ảo và 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ố các biến cố và thu hẹp số lượng kiểu hàng đợi Điều đó phân biệt, giao thức nào chúng dự định cho việc bắt đầu và kết thúc vi xử lý việc phân chia và xếp danh sách chờ Ở đây, người ta còn phân biệt việc đặt kế hoạch phân bổ các phương tiện điều hành (scheduling) và việc phân bổ trên 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ên Đó là trạng thái running(SRUN), trạng thái blocked (SSLEEP) và trạng (16) thái ready (SWAIT) Trạng thái là trạng thái stopped (SSTOP), mà cái gì đó phù hợp với chờ đợi các tiến trình cha việc tìm lỗi (tracing anh debugging) Đón nhận tín hiệu Không tồn Phát sinh sẵn sàng Lý tưởng tiếp tục thực bị hãm chờ đợi tín hiệu Phân bổ dừng hoạt động zombi chờ đợi tiến trình cha kết thúc Không tồn ++++++++++++++++++++ Hình 2.3.Những trạng thái tiến trình và quá độ Unix Ngoài còn tồn trạng thái trung gian phụ trạng thái idle (SIDL) và trạng thái zombie (SZOMB), mà chúng xuất việc sinh và kết thúc tiến trình Sự quá độ trạng thái có hình thái hình vẽ 2.3 trên Sự quá độ 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 và đem treo vào danh sách sẵn sàng Với điều đó, bây 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 là chỗ giá trị trả lại hàm: tiến trình cha đón nhận số tiến trình (PID) con; PID = thì nó nhận rằng, đó là tiến trình và nó 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 các chương trình thực thi (execute) có thể nhận thấy rằng, chương trình chạy quá tải mã chương trình Tất các thiết bị hiển thị và các biến số kích thích (thí dụ sử dụng đếm địa gọi hệ thống chương trình) và tiến trình hoàn tất treo vào danh sách sẵn sang Ở hiệu cuối cùng tiến trình cha thì chương trình hoàn toàn khởi động Tiến trình cha có khả chờ đợi hàm gọi hệ thống exit() và chờ đợi kết thúc tiến trình với hàm waitpid(PID) Trong hình 2.4 quá 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 trên khi, lỗi xuất hàm exec() Điều đó có nghĩa, tệp tin programm không tồn , thì nó không thể đọc Ngoài ra, lệnh chương trình theo hàm exec() trạng thái người sử dụng thì giống hệt với lệnh đầu tiên chương trình ‘programm’ (17) 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 và 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 đây 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) là 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 các 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 nào tồn nữa, đó tiến trình khởi đầu nói trên thông báo Trong khoảng thời gian gọi hệ thống với hàm exit() và tiếp nhận các thông tin tiến trình cha, thì tiến trình đạt trạng thái đặc biệt gọi là “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ứ là phần mang tiến trình bảng nhớ trú ngụ, nó thì quan trọng việc điều khiển tiến trình và đó nó luôn luôn tồn Phần thứ hai gọi là phần cấu trúc người sử dụng (user structure), nó quan trọng, nó là tiến trình hoạt động và nó có thể xuất trên nhớ quảng đại với mã còn lại và các liệu (18) Thực chất hai phần kể trên 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ớ chí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 là tiến trình có thể thay đổi và 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 và để thay đổi các phần 2.1.2 Thí dụ Windows NT Vì Windows NT phải được cá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, cho nên loại riêng lẻ các tiến trình ( đối tượng xâu: thread object) thì hệ thống tiến trình tạo nên Việc phát sinh các đối tượng (như OS/2, POSIX,Windows32) thì liên hợp lại thành các đối tượng và thay đổi trạng thái chúng không đóng vai trò gì Sơ đồ đơn giản hoá các quá độ trạng thái hình 2.5 Đón nhận tín hiệu Không tồn Phát sinh khởi xướng sẵn sàng lựa chọn / bẻ gãy vận chuyển Đình dừng chờ đợi biến cô 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ông tồn (19) Việc sản sinh tiến trình Windows NT thì phức tạp Unix, vì để có chuyển giao thì 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 các tiến trình thì có hàm gọi hệ thống NtCreateProcess(), đấy, bên cạnh kích thích nhờ các mà thì còn có tiến trình cha có thể thông báo Trên sở đó, tất các biến gọi hệ thống khác thiết lập, mà cái đó người sử dụng quan tâm và cần tới Thật vậy, cái đó đã 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 và 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() và thông báo chương trình POSIX cho PID cha Chìa khoá đố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à nó đưa thông tin tới hệ thống POSIX, thì hoàn thiện đó với trợ giúp gọi hệ thống Windows NT và đư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 các 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 thì toàn diện Nó chứa đựng không vài số, số tiến trình và các liệu,mà thông báo các files thông thường các mã chương trình và các liệu chúng Điều đó có hầu hết các tiến trình, nó thích ứng nhớ chính Cho nên, tiến trình chiếm ít không gian trên 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ề và thời gian thực tương đối dài Ở nhiều ứng dụng thì 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 này mô tả văn cảnh tiến trình (thí dụ các thủ tục chương trình) Trường hợp này người ta gọi là đồng lập thức (coroutine) Việc ứng dụng các đ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 là các tiến trình trọng lượng nhẹ (light weight process: LWP) Với hình dạng đơn giản thì tiến trình này tự chuyển đổi điều khiển cách dứt khoát, mà người gọi là phác thảo đồng lập thức (coroutine concept) Có lý để nói rằng, tiến trình này là tiến trình gọi hệ thống Nếu tiến trình mà càng sinh nhiều tiến trình khác, thì điều đó càng khó khăn Từ lý đó, người ta có thể dẫn đây định thời, mà định thời này luôn luôn chứa đựng điều khiển và điều khiển này chuyển tiếp tục tới tiến trình danh sách sẵn sang nó Nếu điều đó không lập trình người sử dụng, thì nó đã chứa đựng hệ điều hành qua việc gọi hệ thống Do đó, (20) qua thời gian chuyển đổi gọi hệ thống thì các tiến trình threads là 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ữ các liệu riêng nó cách độc lập với các tiến trình khác Điều đó thì thuận với tiến trình trọng lượng nhẹ: Nếu chúng phân bổ các files đồng (nói chính xác là vùng địa ảo đồng đều, xem chương 3) với các tiến trình trọng lượng nhẹ khác Do vậy, hầu hết các ngăn xếp nó sử dụng, mà ngăn xếp này trữ không gian để phát sinh cho tiến trình Trong khác biệt với các tiến trình xác thực, thì đó, các tiến trình trọng lượng nhẹ sử dụng ít các liệu văn cảnh (context data), mà các liệu này phải thay đổi chuyển đổi Từ đó, trạng thái vi xử lý (processorstatus: PS) và trỏ ngăn xếp (stack-pointer:SP) là thứ quan trọng Còn, tự thân đếm chương trình (programm-counter) có thể tách khỏi ngăn xếp, đó, nó 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 và làm cho việc gọi hệ thống các tiến trình này xảy nhanh 2.1.4 Trạng thái tiến trình Unix Ở hệ điều hành Unix, các tiến trình trọng lượng nhẹ thực thi thư viện người sử dụng và ngôn ngữ C hay C++ (xem phần Unix chương 3) Tuỳ theo thực thi, mà là có hệ thống đơn giản với việc chuyển giao điều khiển cách trực tiếp, là 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 là tồn chuyển đổi nhanh, vì các cấu gọi hệ điều hành và các cấu giải mã chúng không có điều kiện thực theo số dịch vụ và theo các thông số Còn nhược điểm nó là tiến trình thread phải chờ đợi biến cố (thí dụ biến cố vào/ra) và nó chặn tiến trình tổng thể lại Có thí nghiệm để tiêu chuẩn hóa các tiến trình threads và để giảm nhẹ thực thi chương trình (xem chuẩn IEEE năm 1922) Ở các phiên Unix, chúng chứa đựng loại 64bit –Unix, còn gọi là 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, các 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 là tiến trình trọng lượng nặng (heavy weight thread), nó 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, vì chúng sử dụng các tiến trình LWP và nó 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 là nhân hệ điều hành điều khiển qua các tiến trình LWP.Ở đây, điều cần phải lưu ý là, (21) các tiến trình LWP thực song song hệ thống đa vi xử lý và biến cố I/O thì 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ái cần thiết sử dụng, đó, Windows NT với version 4.0 dẫn vào trạng thái các files Đó là 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 các tiến trình fiber bị ngăn hãm tương tự Điều đó giảm nhẹ việc thực thi các chương trình trên 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 là định thời đã nói trên và các giao thức nó việc xếp các tiến trình theo hàng chờ Nếu chúng ta khảo sát hệ thống đơn vi xử lý, thì thấy trên đó các tiến trình độc lập làm việc cách (sequemtiell) Trong hệ thống tính toán thông thường, chúng ta có thể 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 là định thời dài cho Job) và dự định việc phân bổ vi xử lý hoạt động (còn gọi là đị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 nào đó; (2) Nếu hệ thống có người sử dụng quá nhiều, thì 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 và định thời ngắn Tuy nhiên việc định thời ngắn, công việc chính là phải dẫn giao thức để điều phối vi xử lý các tiến trình Sau đây, chúng ta khảo sát giao thức thông dụng 2.1.1 Tranh chấp mục đích Tất các giao thức định thời là để thực mục đích nào đó Người ta thấy có mục đích thông dụng sau đây: (22) Khả chịu tải CPU: Nếu CPU là phương tiện điều hành, thì ít nhất, chúng ta muốn thể sử dụng hiệu nghiệm Mục đích là CPU tải 100%, thông thường tải khoảng 40-90% Lưu lượng (througput): Số công việc trên đơn vị thời gian gọi là lưu lượng, nó chính là mức độ chịu tải hệ thống Cách điều khiển thật: Không có công việc nào ư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 các 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) là khoảng thời gian từ bắt đầu Job kết thúc Job, nó chứa đựng tất thời gian các hàng đợi, thời gian thực và thời gian xuất nhập Tất nhiên chúng phải là 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 có thể 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, vì sau truy nhập nào đó, 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 và việc chuyển giao liệu trả lời thì gọi là 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 thì cần có thay đổi văn cảnh tiến trình (context switch) Những tiến trình ngắn thì ưa chuộng hơn, vì thời gian trả lời rút ngắn- đó là thời gian hai lần truy nhập, nhờ suất gia tăng Ngược lại, các tiến trình chậm thì không ưa chuộng Mặc khác, khả chịu tải nâng cao, thì 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 có thể nhìn thấy điều đó: Thí dụ việc cho thuê ô tô, khách hàng xác định dịch vụ thuận tiện, mặc dụ chật chội, còn khách hàng khác phải chờ đợi lâu Nếu muốn thuê ô tô chạy tốt, thì 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, thì có nhiều ô tô cùng đưa vào sử dụng Vì đối nhóm người sử dụng thì nhượng mục đích có thể thay đổi, không có thuật toá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 các (23) giao thức định thời riêng lẻ và thành các thông số chúng Thí dụ, tiến trình ngân hàng liệu phát sinh vài tiến trình trợ giúp, thì nó nhận biết đặc trưng trợ giúp đó và vì thế, tạo khả để ảnh hưởng tới giao thức định thời các tiến trình qua các tiến trình cha Những phận nhân hệ điều hành, các cấu định thời bên và cấu điều phối cần thiết dùng nhờ giao diện đã chuẩn hoá (tức là nhờ gọi hệ thống) Giao thức định thời có thể có người sử dụng lập trình 2.2.2 Định thời không có ưu tiên trước Trong trường hợp đơn giản, các tiến trình có thể chạy thật lâu rời khỏi trạng thái hoạt động và chờ đợi biến cố (I/O thông tin) trao việc điều khiển cho tiến trình khác, tự kết thúc: nghĩa là chúng không ngắt khỏi quá sớm Trường hợp này gọi là định thời không có ưu tiên trước Loại định thời này có lợi tất các hệ thống, mà đây người ta phải hiểu chính xác là tiến trình nào tồn và chúng có đặc trưng nào Thí dụ, có chương trình ngân hàng liệu, người ta phải hiểu chính xác: cách thông thường, dàn xếp nào để chương trình thực thi thôi qua bao lâu (?) Trong trường hợp này, người ta có thể sử dụng hệ thống tiến trình trọng lượng nhẹ để thực Đối với loại định thời này, chiến lược sau đây thường sử dụng nhất: Chiến lược đến trước dịch vụ trước (First Com First Serve: FCFS): Một chiến lược đơn giản loại này thì bao gồm các tiến trình xếp theo thứ tự xuất hàng đợi Tất các tác vụ xảy theo tuần tự, mà không cần biết, chúng cần bao nhiêu thời gian Cho nên việc thực thi giao thức này với hàng đợi FCFS thì đơn giản Tuy nhiên, hiệu thuật toán này thì giới hạn Chúng ta giả định, chúng ta có Job với chiều dài 10, và Các Job xếp và làm việc theo giao thức FCFS Hình 2.7 mô tả điều đó Job 10 Job Job 10 14 (a) Dãy FCFS Job Job 17 Job 10 (b) Dãy SIN 10 Hình 2.7 Dãy các Job Thời gian thực Job1 là 10, Job là 14 và Job3 là 17, thời gian thực trung bình là (10+14+17): 3= 13,67 Tuy nhiên, chúng ta có thể (24) xếp lại các Job này theo kiểu: Job có chiều dài ngắn làm việc đầu tiên, xem hình (b) Khi đó, ta có thời gian thực trung bình ngắn (3+7+17):3=9 Chiến lược đầu tiên Job ngắn (Shortest Job First: SJF): Tiến trình có thời gian dịch vụ ngắn chuộng các tiến trình khác Nghĩa là chiến lược loại này tránh các nhược điểm nói trên Thật vậy, tiến trình hoạt động nội thì cần thời gian CPU ít và việc chờ đợi kết thúc các hoạt động diễn song song cùng các kênh xuất nhập Do đó, thời gian trả lời trung bình giảm đáng kể Người ta có thể rằng, giao thức SJF đã giảm thiểu đáng kể thời gian chờ đợi trung bình Job dãy các Job Vì theo nguyên tắc ưu tiên Job ngắn, thì thời gian chờ đợi nó giảm mạnh, đó thời gian chờ Job dài tăng lên Ở loại giao thức này còn tồn vấn đề: Tại dòng vào lớn các tiến trình ngắn và với nhiều yêu cầu CPU, tiến trình không bị hãm chặn, nó không đón nhận CPU Điều này gọi là làm đói (starvation) Đó là vấn đề quen thuộc, mà nó hay xuất nhiều hoàn cảnh khác Chiến lược tỷ lệ kế cận đáp ứng cao (Hightest Response Ratio Next: HRN): Ở đây, các Job làm việc theo tỷ lệ mong muốn, mà đó, nhận xét và phân tích thời gian đáp ứng và thời gian dịch vụ sử dụng để làm sở cho việc đánh giá đo đạc trước đó Chiến lược này chú ý các Job có thời gian dịch vụ ngắn, mà nó giới hạn thời gian chờ các Job có thời gian dịch vụ dài, vì thiệt hại đáng kể, thời gian đáp ứng chúng bị kéo dài Chiến lược định thời có ưu tiên trước (Priority Scheduling: PS): Mỗi tiến trình chiếm dụng ưu tiên Nếu tiến trình vào hàng đợi, đó nó xếp, tiến trình có ưu tiên cao đứng đầu hàng chờ; tiến trình có ít ưu tiên đứng cuối Nếu có nhiều tiến trình có ưu tiên nhau, thì dãy các tiến trình này phải định theo chiến lược khác thí dụ chiến lược FCFS Người ta lưu ý rằng, Job bị làm tổn thất thì có thể tiếp tục làm đói Ở việc định thời có ưu tiên trước, vấn đề này cần phải nhìn bao quát, việc ưu tiên là không cố định, mà nó là quá trình động Nếu tiến trình nhận ưu tiên dãy hợp lý, đó nó có ưu tiên cao nào và thế, nó nhận CPU Sự giả định các chiến lược SJF và HRN thiết đặt các câu hỏi viện cớ, thời gian thực các Job thì không thống và thường hay thay đổi Do đó, lợi các giao thức các hệ thống khác bị hạn chế Điều đó thì khác với trường hợp các Job thường hay xuất hiện, các Job có thể (25) nhìn bao quát và các Job quen thuộc, tức là Job tồn ngân hàng liệu (datenbank) hay các hệ thống tiến trình (chỉ hệ thống thời gian thực) Ở đây, điều có lợi là để nhận xét các tham số quen thuộc cách thường xuyên mẻ và để tối ưu việc định thời Ở việc làm thích hợp thường xuyên các tham số (như thời gian thực và thời gian dịch vụ) và việc thực thi, người ta có thể đạt với các thuật toán khác Một các thuật toán tiếng, đó là: Với tham số a tiến trình thời điểm t, thì từ giá trị tức thời bt và giá trị trước đó a(t), người ta xác định giá trị trung bình theo biểu thức sau: a(t+1) = (1-α) a(t) + αbt Ở đây, nó diễn giải sau: a(0) = b0 a(1) = (1-α) b0 + αb1 a(2) = (1-α)2b0 + (1-α)αb1 + αb2 a(3) = (1-α) b0 + (1-α) αb1 +(1-α)αb2 + b3 … a(n) = (1-α)nb0 + (1-α)n-1αb1 +…+(1-α)n-iαbi +…+αbn Người ta thấy rằng, với a<1, ảnh hưởng việc đo đạc sớm giảm theo hàm số mũ Nguyên tắc này tìm thấy nhiều phương pháp thích ứng khác Ý nghĩa hạn hẹp việc đo sớm tạo nên thay đổi chất tiến trình và điều này nhìn thấy phân tích các tham số tức thời Khi đó người ta nhận thấy dãy các giá trị tham số là biến cố biến ngẫu nhiên Điều đó có ý nghĩa rằng, phân chia biến này không phải là số, mà thực ra, nó thay đổi theo thời gian Một thuật toán thích ứng không dễ xác định giá trị trung bình đo đạc (giá trị tham số chờ đợi) mà nó đánh giá trạng thái tức thời chức phân bổ phụ thuộc thời gian Đối với trường hợp α =1/2 thì thuật toán thực thi đặc biệt nhanh Ở đây, phép chia thì phù hợp với cấp bậc phép xê dịch số sang phải vị trí Sự đánh giá thích ứng các tham số tiến trình thuật toán định thời (tức là việc phân vi xử lý thích ứng) phải thực cho tiến trình cách đích thực Trong thí dụ trên, tham số a phải nhận hai số: số cho số tham số trên tiến trình và số cho số tiến trình Phương pháp đánh giá các tham số thì độc lập với thuật toán, vì thuật toán dùng cho việc định thời Ngoài ra, thuật toán này không dùng cho việc định thời không có ưu tiên trước, nó còn là phương pháp để nghiên cứu việc định thời có ưu tiên trước 2.2.3 Định thời có chặn trước (preemptive scheduling) (26) Ở hệ thống có nhiều người sử dụng có nhiều Job nhiều người sử dụng cùng khởi động, đó có điều không vừa ý, có Job hãm chặn các Job khác Do đó, đòi hỏi phải có kiểu định thời khác, để đó Job có thể ngắt hãm sớm Một các chiến lược quan trọng là chiến lược nói việc phân chia khoảng thời gian sử dụng các phương tiện điều hành (chẳng hạn CPU) thành các khoảng thời gian riêng lẻ và Nếu tiến trình đó là tiến trình sẵn sang thì nó xếp vị trí thích hợp hàng đợi theo chiến lược Ở việc khởi đầu khoảng thời gian, điều phối cho ngắt thời gian gọi, tiến trình thực hiện, thì nó bị chặn lại và tiến trình ready xếp vào hàng đợi Sau đó, tiến trình đầu tiên hàng đợi chuyển vào trạng thái hoạt động Điều đó trình bày hình 2.8 đây Hàng đợi Lối tới Bộ vi xử lý Lối Đình Hình 2.8 Định thời có chặn trước Ở đây, đường thẳng góc đậm tượng trưng cho các tiến trình, mà nó dịch chuyển vào từ trái sang ống hàng đợi Bộ phận công tác - đây là vi xử lý- biểu thị tượng trưng hình ê-líp Sau ngắt đoạn, tiến trình xếp vị trí các tiến trình khác hàng đợi Dưới đây khảo sát các chiến lược định thời khác Chiến lược quay tròn Robin (Round Robin: RR): Chiến lược đơn giản phương pháp lát cắt thời gian là chiến lược FCFS và hàng đợi FIFO (vào trước trước) Sự kết hợp chiến lược là phương pháp lát cắt thời gian gọi là thuật toán quay vòng Robin Việc phân tích này rằng, đây, các thời gian đáp ứng thì tỷ lệ với thời gian dịch vụ, nó độc lập với phân bổ thời gian dịch vụ và phụ thuộc vào thời gian dịch vụ trung bình Điều đã rõ, hiệu suất chiến lược RR thì phụ thuộc mạnh vào lát cắt thời gian Nếu người ta chọn lát cắt thời gian không kết thúc lâu, thì đó còn giao thức đơn giản FCFS thực Ngược lại, người ta chọn lát cắt thời gian nhỏ (thí dụ đúng lệnh), đó, tất n Job đón nhận lần chừng 1/n hiệu suất vi xử lý; vi xử lý thì phân thành n vi xử lý ảo Tuy nhiên, điều đó xẩy khi, vi xử lý chạy nhanh so với các thiết bị ngoại vi (27) (thí dụ nhớ) và việc chuyển đổi tiến trình nhờ cấu phần cứng thực nhanh Đối với các hệ thống chuẩn thì điều đó không còn đúng Ở đây, chuyển đổi văn cảnh tiến trình xảy qua cấu phần mềm và sử dụng khoảng thời gian để xếp thô áng chừng 10 đến 100 μs Nếu chúng ta chọn lát cắt thời gian quá ngắn, đó có tỷ số quan hệ thời gian làm việc và thời gian chuyển đổi nhỏ Bởi vậy, suất giảm và thời gian chờ đợi gia tăng Trong trường hợp thời điểm cực trị, vi xử lý chuyển đổi, không thực thi Job Đối với tương quan hợp lý giao thức FCFS và chu kỳ chuyển đổi, thì hiểu biết các tham số khác là cần thiết Ở đây, quy tắc số ra: lát cắt thời gian phải lớn nhu cầu trung bình CPU hai lần truy cập I/O (CPU - burst) khoảng 80% Job, tức là nó phù hợp với giá trị khoảng 100ms Chiến lược quay vòng Robin có ưu tiên động: (Dynamic Priority Round Robin:DPRR) Định thời kiểu RR Job làm đầy đủ thêm nhờ tầng đầu tiên hàng đợi có ưu tiên Sự ưu tiên tiến trình tầng đầu tiên thay đổi sau lát cắt thời gian, kéo dài có đạt ưu tiên bung theo phương pháp RR riêng lẻ và nó xếp vào hàng đợi chính Do đó, xử lý khác Job đạt theo ưu tiên hệ thống, mà không làm thay đổi trực tiếp phương pháp RR Chiến lược thời gian còn lại ngắn trước (Shortest Remaining Time First): Ở đây, chiến lược SJF để xếp hàng đợi có ý nghĩa rằng, Job phải phân tích để biểu thị Job có thời gian dịch vụ còn lại nhỏ (xem giao thức SJF trình bày phía trước) Tóm lại, định thời có ưu tiên có ý nghĩa khi: Tiến trình diễn biến có thể thay tiến trình tới (từ hàng đợi I/O) có ưu tiên cao hay xếp trở lại danh sách sẵn sàng Trong thực tế, liên hiệp hai phương pháp thường hay sử dụng Chẳng hạn, giao thức FCFS thuyên chuyển cho hàng đợi quay vòng Robin (RR) định thời có ưu tiên 2.2.4 Đa hàng đợi và đa định thời Ở hệ thống vi xử lý đại có vi xử lý chính, còn hầu hết các thiết bị vào thì nhanh nhờ sử dụng điều khiển, mà điều khiển này thì độc lập với vi xử lý chính, và các liệu có thể tạo từ nhớ chính đến nhớ quảng đại và ngược lại (Direct Memory Acess:DMA) Bộ điều khiển DMA này có tác dụng là vi xử lý chuyên dụng và chúng xem là phương tiện điều hành độc lập Mục đích là, để tạo hàng đợi cho cách xuất nhập mà nó dịch vụ điều khiển DMA Sự điều phối (28) chung thì phủ lên toàn Job từ hàng đợi này tới hàng đợi kế tiếp, phản ứng ngắn CPU (CPU bursts) nằm khoảng đó Một biến cố cho thấy, chúng ta không có loại Job, thực có nhiều loại Job vì có ưu tiên khác Vì vậy, loại Job thì hàng đợi thông báo Khi đó, ta có định thời đa mức (Multi – level Scheduling) Bộ vi xử lý chính I/O ổ đĩa cứng I/O ổ đĩa cứng I/O đầu cuối Hình 2.9 Định thời với đa hàng đợi Với ưu tiên khác nhau, các hàng đợi xếp theo xác định, tức là theo thứ tự làm việc xác định: hàng đợi có ưu tiên cao làm việc trước tiên, tiếp đến hàng đợi thứ hai Vì để có Job luôn luôn tới, đó dãy làm việc luôn luôn thay đổi Điều đó mô hình hoá thành bốn bình diện, thể hình 2.10 đây Mức ưu tiên 0: Các tiến trình hệ thống Mức ưu tiên 1: Job nội hoạt Mức ưu tiên 2: Job chung chung thống Mức ưu tiên 3: Job tính toán cấp tốc Hình 2.10 Định thời đa mức Khi thời gian chờ đợi lâu hàng chờ, Job có thể chuyển đến vị trí cao Lúc đó, người ta nói định thời ăn sau đa mức (multi-level-feedbackScheduling) Ở thuật toán định thời trình bày trên, nay, ta đã bỏ qua tính huống, tất các tiến trình nhớ chính không thể cùng đồng thời sử dụng Để có thể định thời các tiến trình, người ta phải dựa vào các liệu quan trọng tiến trình nhớ chính, mà cái đó mô đầy đủ khối điều khiển tiến trình (Process Controll Block: PCB); tất (29) các liệu khác thì di chuyển trên nhớ quảng đại Nếu tiến trình hoạt động, thì đầu tiên nó phải nhận chép từ nhớ quảng đại vào nhớ chính và sau đó, nó thực Cái đó yêu cầu thời gian bổ sung đáng kể thay đổi văn cảnh tiến trình và nâng cao thời hạn làm việc Tuy nhiên, tốt là phải có tiến trình sẵn sang đúng nhớ chính Nghĩa là, quá độ tiến trình cần thiết phải điều chỉnh từ nhớ quảng đại tới nhớ chính Cách giải vấn đề này là dẫn vào định thời thứ hai để nó có nhiệm vụ gộp hay tachs các tiến trình Bộ định thời thứ điều hành việc xếp các tiến trình tới các phương tiện điều hành (như vi xử lý) và nó làm việc ngắn hạn Còn định thời thứ hai là định thời trung bình hay dài hạn (giống hình 2.6) và nó điều chỉnh xếp các tiến trình tự phương tiện điều hành ( nhớ chính), mà đó nó điều chỉnh độ lớn phạm vi nhớ chính Trong khoảng thời gian lớn hơn, loại định thời thứ hai gọi là loại định thời ngắn hạn Cả hai loại sử dụng hàng đợi riêng lẻ mà điều chỉnh xếp và dẫn vào tiến trình Chiến lược cho định thời kiểu đã nói này trình bày chương 2.2.5 Định thời hệ điều hành thời gian thực Có loạt các hệ thống máy tính mà chúng gọi là hệ thống thời gian thực (real time system) Với biểu thị này, người ta hiểu điều gì? Một quan điểm trực giác điều đó cho rằng: Đó là hệ thống phải tác dụng nhanh, hệ thống này còn gọi là hệ thống thời gian thực Với khái niệm “nhanh”, điều đó làm cho chúng ta có thể hiểu cách chính xác hơn: Một hệ thống thực Job, thì Job đó phải tuân theo quy định thời gian đã đề Nhưng điều đó chưa đủ đúng, vì có thể quy định đó chưa thể là quy định cứng được, ví dụ: người soạn thảo không cần thiết phải sử dụng lâu giây để đưa ký tự lên màn hình; ngân hàng cần thiết phải thực việc chuyển tiền khoảng tuần để tránh nhẫm lẫn đáng tiếc…Lúc đó, ta gọi nó là hệ thống thời gian thực mềm Hệ thống thời gian thực mềm có đặc điểm: đó, các ngăn xếp các ngăn xếp thời gian là mềm và không chuyên môn hoá Lẽ tất nhiên, không có thoả mãn nào để dẫn tới phán nặng cân Trái ngựơc với hệ thống thời gian thực mềm là hệ thống thời gian thực cứng Throng cog nigh may tin, he thing this gain theca conga cons gọi tắt là hệ thống thời gian thực; nó thường dùng điều khiển các nhà máy điện nguyên tử, điều khiển máy bay, điều khiển giao thông…Vậy hệ thống thời gian thực phải thừa nhận giới hạn thời gian đầu cuối rõ ràng các tiến trình, để loại trừ định sai phạm nghiêm trọng làm cho hệ thống tổn thất nặng nề Những thuật toán định thời phải hướng tới kiểu dạng các tiến trình Kiểu dạng hệ thống thời gian thực là tình huống, mà các tiến trình luôn luôn quay trở lại khoảng thời gian đã xác định chính xác và các tiến trình này thì có thể nhìn thấy trước đó thường xuyên xuất chúng (30) chu kỳ làm việc và xác định các phương tiện điều hành…Cho nên, điều đó thì có lợi để kiến tạo định thời cố định Thí dụ tác vụ định kỳ (Priodic task): Một máy bay(thí dụ loại Airbus A340) điều khiển máy tính Để điều khiển, máy tính cần sử dụng số liệu bay khác nhau, mà nó phải xác định và xử lý thành quảng khác nhau: giá trị gia tốc theo hướng x,y,z khoảng 5ms, ba giá trị các chuyển động quay khoảng 40 giây, nhiệt độ khoảng giây và vị trí tuyệt đối để điều khiển khoảng 10giây Trên màn hình cho thấy diễn biến giây Những chiến lược định thời quan trọng theo chuẩn IEEE năm 1993 có loại sau đây: Chiến lược vòng xén ( Polled Loop): Bộ vi xử lý thực chu trình tính,mà đó, nó luôn luôn kiểm tra trở lại thiết bị, xem số liệu có tồn không Nếu tồn tại, thì đó, nó xử lý Chiến lược này thích hợp với thiết bị riêng lẻ, mà không thích hợp, có biến cố khác xuất xử lý và đó, các số liệu không sờ tới Chiến lược điều khiển ngắt các hệ thống: Bộ vi xử lý thực chu trình chờ.Nếu số liệu xuất hiện, đó, ngắt thiết bị gọi để xử lý các số liệu này Phương pháp điều khiển ngắt hệ thống này gọi là lập thức dịch vụ ngắt (Interrupt Service Routine: ISR) Nếu các ưu tiên xếp cho lập thức ISR, thì đó, định thời có ưu tiên xẩy cách tự động nhờ ngắt logic điều khiển ngắt Vấn đề còn lại chiến lược này là, các biến cố bị chất đống, thì đó, các ngắt có ưu tiên thấp không bị bẻ gãy và có thể đẩy lên đầu Chiến lược đường tử ít nhất- trước (Minimal Deadline First: MDF): Đâu tiên tiến trình chỉnh lý: nó chiếm trước ngăn xếp thời gian nhỏ (deadline time Td: thời gian chết), đến ngăn xếp Giao thức này thường hay sử dụng (thí dụ để triển khai dự án phần mềm), mà nó có vài nhược điểm Thí dụ, chúng không có lợi, tất các tiến trình chiếm các ngăn xếp thời gian Chiến lược thời gian xử lý ít nhất-trước (Minimal Processing Time First: MPTF) Một tiến trình chọn làm tiến trình điều khiển tiến trình này chiếm phần thời gian dịch vụ nhỏ (control time Tc: thời gian điều khiển) Điều đó thì phù hợp với chiến lược SJF và nó có ý nghĩa rằng, Job ngắn với ưu tiên thấp thì ưa chuộng Job dài có ưu tiên cao Chiến lược định thời đơn điệu tỷ suất (Rate Monotonic Scheduling : RMS): (31) Nếu chúng ta có hệ thống ưu tiên cố định với các tỷ suất thực cố định các tiến trình tham gia ( xem thí dụ định thời điều khiển máy bay trên), thì đó, cách tối ưu là, chúng ta xếp ưu tiên cao cho tỷ suất thực cao và ưu tiên thấp cho tỷ suất thực thấp ( gọi là định thời đơn điệu tỷ suất) Nếu trường hợp không có định thời đơn điệu tỷ suất tiến trình tìm thấy, thì điều đó chứng minh rằng, sau đó không có định thời khác tồn tại, đó định thời nói trên đạt yêu cầu Thật vậy, CPU có khả tải nhỏ 70%, thì với chiến lược RMS, tất các ngăn xếp thời gian giữ đúng cách bảo đảm Tuy nhiên, điều cần thiết là, ưu tiên thấp các tiến trình quan trọng với số thực hạn chế phải nâng lên Cái đó gọi là đảo ngược ưu tiên Chiến lược định thời hậu cảnh- tiền cảnh (Foreground Background Scheduling): Trong các hệ thống thời gian thực có số tiến trình có ích, mà không cần thiết Những tiến trình đó có thể thu hẹp hậu cảnh, mà vi xử lý giải phóng và nó không dùng việc gì khác Mỗi tiến trình có thể làm cho các hệ thống gián đoạn Minh hoạ cho điều đó có vài ví dụ sau đây: Tự thử nghiệm để khám phá khuyết tật Lắp thêm RAM để đọc và viết lại nội dùng RAM Với hệ thống tiện dụng thì, chúng ta có bus liệu để sửa lỗi bit RAM Nâng cao khả tải màn hình để phát sớm các lỗi Thí dụ nhờ việc cảnh giới quá thời gian (watch dog time) mà tránh báo động khẩn cấp Một hệ điều hành thời gian thực bây không có tiến trình giới hạn, mà các ngăn xếp thời gian (time stack) chúng thiết phải giữ cố định; nó còn có các tiến trình tới hạn cần thiết và các tiến trình không có giới hạn Tất sửa lỗi tương tự còn thời gian Chúng ta thấy rằng, tiến trình tới hạn cần thiết tháo gở theo chiến lược RMS cố định Loại tiến trình không có tới hạn định thời theo chiến lược hậu cảnh Còn loại tiến trình tới hạn quan trọng định thời chiến lược điều khiển ngắt hệ thống Những nhà thiết kế hệ thống đã phát triển thêm nhiều chiến lược phụ cho loại các hệ thống vừa nêu Họ đã tách chia để phân biệt các biến: biến quan trọng, biến thời gian ngăn xếp ( với Td là thời gian đình hay thời gian chết) và biến phương tiện điều hành cần thiết ( với Tc là thời gian dịch vụ hay thời gian điều khiển )…Đồng thời, họ liên hiệp các biến này tới chiến lược mới: Chiến lược tình trạng biến động nhỏ đầu tiên (Minimum Laxity First): Tiến trình chọn cho kiểu định thời này phải có thời gian tự nhỏ (minimum free time), tức là biểu thức [Td – (Ts +Tc)] đạt nhỏ Chiến lược liên hiệp tiêu chuẩn 1: Tiến trình chọn cho kiểu (32) định thời này có thời gian tự biểu diễn biểu thức [Td +Tc] đạt nhỏ Chiến lược liên hiệp tiêu chuẩn 2: Tiến trình chọn cho kiểu định thời này có thời gian tự dạng [Td +Ts] đạt nhỏ Những mô hình hoá cho thấy rằng, tất định thời, mà nó dùng mình thời gian Td, mang tới kết tồi cho hệ thống đơn đa vi xử lý Ngược lại, các tiêu chuẩn liên hiệp đã loại trừ cái đó cách tốt đẹp, đặc biệt, liên hiệp tiêu chuẩn đã đưa tới kiểu định thời tốt nhất, vì nó đã quan tâm tới các phương tiện điều hành 2.2.6 Định thời hệ thống đa vi xử lý Nói chung, phương tiện điều hành còn tồn vấn đề, và đó, vi xử lý, hàng đợi riêng lẻ hay kiểu định thời riêng lẻ Tuy nhiên, quá độ các hàng đợi là không thể tuỳ tiện được, đặc biệt, nhiều tiến trình xẩy song song hay cùng đồng thời làm việc, thì phải xem xét vấn đề trên cùng hệ trục toạ độ Điều cho thấy rằng, các tiến trình riêng lẻ tồn nhiều phụ thuộc dãy làm việc Nếu chúng ta biểu thị các phương tiện điều hành các chữ cái A,B,C và các yêu cầu chúng là Ai, Bj, Ck , đó yếu tố gây ấn tượng qua ký tự “>” Chẳng hạn Ai > Bj có ý nói: đầu tiên Ai và sau đó (bất kỳ nào) Bj phải thực Nếu Ai là hành động trực tiếp trước Bj là hành động kế gần, thì quan hệ chúng viết dấu “>>” Sau đây dẫn vài ví dụ: A1>>B1 >>C1>> A5 >>B3 >> A6 B1 >>B4>>C3>> B3 A2>> A3>> B4 A3>> C2>> B2>> B3 A4>> C2 Những tương quan hàng ví dụ trên mô hình hoá qua sơ đồ: nút yêu cầu hệ điều hành, còn tương quan (>>) chúng biểu thị mũi tên (với gốc là nguồn, là đích) Chu kỳ làm việc ti các yêu cầu phương tiện điều hành thì đó số (gọi là trọng số) viết cạnh nút (để biểu thị yêu cầu nào đó) Hình 2.11 thí dụ Một dãy gọi là đúng chưa cần thiết, nó bao gồm tiến trình độc lập, mà tiến trình này chẳng có liệu để mà thay đổi Nhưng chúng cần tới phương tiện điều hành, đó dẫn tới tranh chấp tiến trình (33) C1 A5 A1 B1 B4 C3 A2 A3 C2 B2 B3 A6 A4 Hình 2.11.Sơ đồ tương quan điển hình Một sơ đồ định thời có khả thực thi mô hình hoá đồ thị cột, mà đó, phương tiện điều hành xếp vào hang ngang Chúng ta chờ đợi cái gì đó giao thức định thời tốt với tổng thời gian thực T ? Điều đã rõ: với n tiến trình độc lập có các trọng số t1…tn (chính là thời gian thực thi tiến trình riêng lẻ) và m vi xử lý, thì Topt là tổng thời gian thực tối ưu định thời có ưu tiên phân bổ trên vi xử lý và xác định biểu thức sau: n Topt= max{ 1/m ti , với max ti } 1<=i<=n i 1 Đó là trường hợp thuận tiện mà chúng ta chờ đợi Đối với ví dụ hình 2.11, ta có n=13 tiến trình và m=3 vi xử lý Trong trường hợp thuận lợi, thời gian thực tối ưu là Topt=1/3(43)<=15 Trong đó ví dụ này kiểu định thời hình 2.12 thì thời gian thực là T=30 Sở dĩ có khác biệt đó là vì người ta đã dẫn lý sau đây để giải thích cho ví dụ hình 2.12: Nếu tiến trình kiểu Ai thực trên vi xử lý A, tiến trình Bj thực trên vi xử lý B, còn tiến trình Ckchỉ thực trên vi xử lý C, thì đó, thời gian thực kéo dài Với các phương tiện trợ giúp trên, bây giờ, chúng ta muốn khảo sát số giao thức định thời để các tiến trình thực song song trên hệ đa vi xử lý gần kề 2.2.6.1 Định thời song song trên hệ đa vi xử lý Chúng ta nhận thấy rằng, yêu cầu phương tiện điều hành (ta hiểu đó là thời gian thực tiến trình nút) là phép tích luỹ khoảng thời gian cố định ∆t Các khoảng thời gian cố định này thì tỷ lệ với (34) Số lượng các nút trên sơ đồ phân chia thành các cụm nhỏ, cho, tất các nút cụm thì độc lập với và không có quan hệ đặc biệt chúng Thí dụ: Số lượng các nút trên hình 2.11 phân chia thành cụm độc lập là {A1,A2},{B1,A3,A4}, {C1,B4,C2},{A5,C3,B2},{B3}, {A6} Tuy nhiên, B4 thì phụ thuộc vào cụm A3 và B1, còn cụm {C1,B4,C2} thì phụ thuộc vào cụm {B1,A3,A4}, nó không phải là các cumj nhỏ vừa chia Một tách chia có thể nhận từ các phương thức khác Nghĩa là phân chia, phân đoạn rõ ràng Nếu hệ thống có N cụm, thì người ta gọi hệ thống đó có N bậc (mức): bậc cho cụm có nút vào, bậc cho cụm phụ thuộc vào cụm bậc 1… và bậc N cho cụm có nút cuối cùng Điều đó gọi là phân bổ tương quan Thí dụ: Ở tách chia nói trên, hệ có N=6 bậc, cụm {A1,A2} là cụm bậc và bậc cho cụm có nút cuối cùng A6 Tuy nhiên, để tìm thấy định thời tối ưu, vấn để là: Đối với tiến trình nào đó thì có yêu cầu tương ứng và đó có thuật toán tương ứng Nhờ nó, mà người ta thiết kế chiến lược định thời khả thi Thật vậy, hai ông R Muntxz và E Coffman đã đưa (1961) ba giao thức kinh điển sau đây để thiết kế định thời cho các tiến trình có ưu tiên Chiến lược định thời kiểu tai nghe (Earlisten Scheduling): Một tiến trình xử lý thì vi xử lý tự Dựa theo ý kiến đó, chúng ta bắt đầu với bậc thứ và sử dụng các vi xử lý tự dụng cho các tiến trình bậc thứ hai (ngay tức khắc có điều kiện)…Tiếp đến, theo cách tương tự, các vi xử lý tự lại dùng cho bậc tất các bậc làm việc Thí dụ: Sơ đồ kiểu khung phân bổ đặc biệt thí dụ hình 2.12 đã giải thích định thời cho các vi xử lý P1,P2,P3 và theo chiến lược định thời kiểu tai nghe, sơ đồ này có dạng sau: Hình 2.13 -Đồ thị trên cho thấy, định thời kiểu song song này, chúng ta đạt thời gian dịch vụ T=20 Chiến lược định thời kiểu muộn (Latest Scheduling): Một tiến trình thực đến thời điểm muộn nhất, thì đó nó còn làm việc Thêm vào đó, chúng ta thay đổi dãy tên gọi các bậc thành trao đổi quan hệ: bậc N cuối cùng thì bây thành bậc thứ nhất, còn bậc đầu tiên thì (35) tới bậc cuối cùng N Bây giờ, chúng ta biểu thị trở lại trước: đầu tiên bố trí vi xử lý cho tiến trình bậc 1, sau đó cho tiến trình bậc 2… Thí dụ, với giao thức định thời kiểu muộn nhất, thí dụ hình 2.11 dẫn sơ đồ khung hình 2.14 sau đây: Hình 2.14 Với kiểu định thời hình 2.14, chúng ta đạt thời gian diễn biến dài T=22 Chiến lược định thời kiểu danh sách (List Scheduling): Tất các tiến trình có ưu tiên dẫn vào danh sách trung tâm Nếu vi xử lý tự do, đó, nó nhận tiến trình dẫn tới từ danh sách các tiến trình và thực tiến trình dẫn tới này, vì nó có ưu tiên cao Nếu ta lưu ý ưu tiên đã xếp danh sách sẵn sàng và các tiến trình đã xếp thành hàng đợi, thì đó, chúng ta nhận hàng đợi các tiến trình đa vi xử lý Ở mục 2.3.5 thì điều khiển hàng đợi các máy tính siêu hạng NYU mô tả kỷ càng Người ta thấy rằng, với nhiều thuật toán, người ta không tìm thấy định thời tối ưu, nhờ giao thức này, người ta có thể tìm thấy định thời động Với m =2 vi xử lý và các tiến trình có độ dài ti =tk, chúng ta có thể đạt định thời tối ưu có ưu tiên toàn các tiến trình Không thế, cụm bậc các tiến trình, người ta tìm thấy định thời tối ưu có ưu tiên Muntz và Coffman đã mở rộng suy nghĩ này (1969) cho trường hợp t i # tk : Ở đây, tiến trình có thời gian dịch vụ s.∆t tồn cách ảo từ kết s đơn vị tiến trình Chúng ta nhận sơ đồ quan hệ mới, mà nó chứa đựng tiến trình cùng độ dài thời gian thực và với m=2 vi xử lý thì nó cho phép có định thời tối ưu có ưu tiên Tuy nhiên, số lượng không đúng mức các tiến trình thì cần thiết, ba tiến trình C1,C2,C3 các cụm bậc phải tách tiến trình (thí dụ C2) và phải phân các vi xử lý làm (xem hình 2.15) Nếu định thời cụm tối ưu, thì đó, định thời hệ tối ưu Hình 2.15 -Những khảo sát này có thể mở rộng ta cho đồ thị tương quan với nhiều chuỗi Job song song đơn giản, các đồ thị với nút khởi đầu và nút cuối, và nhiều nút nút khác 2.2.6.2 Thời gian thực nhỏ định thời đa vi xử lý (36) Chúng ta sử dụng dãy hàng đợi trung tâm định hướng điển hình và có ưu tiên Vậy thời gian thực nhỏ (Tprio) là gì, mà chúng ta chờ đợi nó danh sách các Job, để không có nhầm lẩn đặc điểm ưu tiên và điển hình ? Để trả lời câu hỏi này, chúng ta thực tính toán, mà hai nhà hệ thống J.W.S Lliu và C.L Liu đã đề xướng (1978) Chúng ta nhận thấy, Tprio là thời gian thực định thời có ưu tiên, mà định thời này thông báo cho vi xử lý (đã giải phóng) có Job: Job này có thể thực với ưu tiên cao từ các danh sách liệt kê Sau đó Tprio phân định cho vi xử lý Pj thực thời gian tj và thời gian trống Фj Chúng ta có thể đặt số j cho tất các vi xử lý làm việc, còn không, các phần việc Job đặt hai số: số i cho số Job vi xử lý và số k để vi xử lý đó Với các ký hiệu vừa nêu, ta có biểu thức: tprio =tj +Φj = tik + Φik Thời gian thực thi các Job diễn song song tất m vi xử lý với r kiểu vi xử lý khác thì biểu diễn sau: m T*prio = (1/m) m Tprio = (1/m) [tj+ Φj] r rk k 1 i 1 j 1 j 1 Hay ta có T*prio = (1/m) [tik+ Φik] Chúng ta gộp rk lần các thời gian thực hiện, thời gian trống các vi xử lý cùng kiểu k, ta nhận được: rk Tk = i 1 rk tik ; Φk = Φik ; Φ = i 1 r Φk k 1 Do đó dẫn tới biểu thức chung: r r k 1 k 1 T*prio = (1/m) [tk+ Φk] = (1/m) (Φ + tk) (2.1) Một ngăn xếp tốt thì cho thời gian trống Ф là bao nhiêu ? Việc trả lời cho câu hỏi này định qua chất lượng việc định thời Ta ký hiệu H là tổng các thời gian trống vi xử lý, đây, tối thiểu vi xử lý thực lần trống và Kj là tổng thời gian trống các việc khác Ta có biểu thức biểu diễn điều kiện: (37) r Φ < = H + Kj (2.2) j 1 Việc làm Job khoảng thời gian trống H đặc trưng rằng, đó, điều kiện cưỡng phải thực để ngăn ngừa làm việc song song các kiểu Job giống Nghĩa là, các Job có thể làm việc cách Không thể có định thời tối ưu, thời gian thực tổng cộng tối thiểu vi xử lý (đã giải phóng) thì nhỏ thời gian trống trên vi xử lý Do đó, việc định thời tối ưu, thời gian thực tối thiểu T phải có giá trị lớn hơn: T0 >= H m 1 hay T0 >= r Tk m k 1 (2.3) Đối với thời gian trống Kj với tối thiểu vi xử lý thứ j làm việc dẫn tới các ký hiệu sau: Sj là thành phần thời gian thực các Job vi xử lý thứ j (tức là đó, tối thiểu có vi xử lý thứ j trống), còn ký hiệu Tk – Sj là thời gian mà đó không có vi xử lý thứ j trống: nghĩa là, tất làm việc Khoảng thời gian này chu trình định thời là (Tk + Sj)/mj Còn khoảng thời gian mà đó các vi xử lý khác (m-mj) thì trống và còn lại các vi xử lý …từ thứ j làm việc, thì nó phải nhỏ hay khoảng thời gian làm việc tất mj vi xử lý: Kj /(m=mj) <= (Tj - Sj) /mj Nếu tat hay biểu thức này vào phương trình (2.2), đó, chúng ta nhận đánh giá cho khoảng thời gian trống: r r r j 1 j 1 j 1 Φ <= H + ( [m-mj ]/mj)/ (Tj - Sj) =H Tj(m-mj)/mj- Sj(m-mj)/mj Hay r r r j 1 j 1 j 1 Φ <= H +m ( 1/mj) Tj - Tj (1/mj)Sj + Sj Biểu thức tổng cuối cùng có thể thu nhỏ thêm, đây chúng ta sử dụng hệ số nhỏ và đưa vào biểu thức trên với tư cách là thừa số chung: r r j 1 j 1 Φ <= H +m ( 1/mj) Tj - Tj - m(min [1/mj ]) r j 1 r Sj + Sj j 1 (2.4) (38) Bây giờ, chúng ta phải đánh giá tổng các thời gian trống Sj, Nếu luôn luôn có vi xử lý trống, đó, H là tổng tất khoảng thời gian (m-1) vi xử lý là: H = (m-1) Sj j Trường hợp chung, các thời gian trống đơn lẻ Sj gộp lại thành tổng, thì tổng này phải lớn H/(m-1), nghĩa là: Sj >= H/(m-1) (2.5) j Nếu chúng ta xem xét các quan hệ (2.5)với (2.2) và (2.3) thì dẫn tới: r j 1 r ( 1/mj) Tj - Tj <= mT0(r-1) j 1 Thay biểu thức này vào (2.4), chúng ta nhận đánh giá cho tổng thời gian trống biểu thức sau: r Φ <= H + mT0(r-1) –( [m/mj ]-1) Tj j 1 Và với quan hệ biểu thức (2.5), biểu thức (2.6) biến đổi thành: Hay Φ <= H + mT0(r-1) –( [m/mj ]-1)H/(m-1) Φ <= H + mT0(r-1) –(m- [m/mj ]) H/(m-1) Vì phần dấu ngoặc là số dương, đó, ta sử dụng biểu thức (2.3) và biến đổi biểu thức trên trở thành: Φ <= H + mT0(r-1) –T0(m- [m/mj ]) = mT0r –mT0(min [1/mj ]) Hay Φ <= H + mT0(r- [1/mj ]) (2.7) Bây chúng ta có thể trực tiếp dẫn tương quan thời gian thực theo định thời có ưu tiên Pprio với thời gian thực theo định thời tối ưu T0 ta thay biểu thức (2.7) vào biểu thức (2.1) và với quan tâm tới quan hệ thứ biểu thức (2.3), ta nhận bất phương trình sau đây: r Tprio = 1/m (Φ + tk ) <=T0 (r-min[1/mj]) + T0 k 1 Hay Tprio/ T0 <= 1+ r - [1/mj] (2.8) (39) Đối với các vi xử lý cùng kiểu (r=1) và có m vi xử lý, công thức (2.8) trở thành: Tprio/ T0 <= 2- 1/m (2.9) Từ biểu thức (2.9), người ta thấy, với các vi xử lý cùng loại,thì trường hợp nhanh nhất, định thời có ưu tiên diễn lâu gấp đôi so với định thời tối ưu; trường hợp tốt là Khi có vi xử lý thì hai trường hợp hoàn toàn giống nhau, vì vi xử lý luôn luôn đảm nhận toàn công việc, dù dãy nào Nếu người ta dẫn vào nhiều vi xử lý, tức là đưa vào nhiều phương tiện điều hành, thì tổng thời gian thực thu nhỏ nhờ khả làm việc song song các vi xử lý Vì với phương tiện điều hành bổ trợ lẫn này, làm cho quá tải giảm, đó, thời gian trống trung bình phương tiện điều hành tăng cao Sự giảm nhẹ các hạn chế đã dẫn các phương pháp thích hợp sau đây: Nâng cao vài điều kiện đặc biệt; Thu hẹp ít thời gian thực (ti = tj); Gia tăng số lượng vi xử lý (m=m) Điều đó không thể dẫn tới rút ngắn thời gian thực cách tự động, mà nó có thể dẫn tới định thời bất lợi, người ta gọi tượng này là khác thường đa vi xử lý Trong mối quan hệ này thì công trình nghiên cứu R.L.Graham (1972) đem lại nhiều thú vị Ông nhận thấy rằng, hệ thống với m vi xử lý giống hệt nhau, mà hệ thống này các tiến trình xếp cho các vi xử lý cách hoàn toàn theo ý muốn, thì tổng thời gian thực T không nhiều lần so với định thời tối ưu: Gọi T là tổng thời gian thực định thời thay đổi với các hạn chế thu hẹp, dẫn tới quan hệ: (T/T) <= 1+ (m-1)/m (2.10) Do đó, m=m thì giới hạn dẫn tới (2-1/m) Để thiết kế việc định thời cách thành đạt, phương pháp tốt tồn tất yếu các tiến trình (hầu hết sinh tiến trình cha) tới nhóm tiến trình, mà nhóm tiến trình này thực trên hệ thống đa vi xử lý, lúc đó, người ta gọi là định thời nhóm (group Scheduling) Vì có các phụ thuộc hình dạng vào cấu trao đổi thông tin các tiến trình nhóm, mà các tiến trình này có thể hoạt động nhờ nhớ chia xẻ (bộ nhớ chung), đó, người ta loại trừ đưa vào hay xuất các phía nhớ và văn cảnh tiến trình tham gia Một giả thiết quan trọng việc định thời có ưu tiên là tiêu phí cho trao đổi thông tin thấp để có thể bắt đầu và tiếp tục tiến trình với văn cảnh nó trên vi xử lý Điều đó thì không xảy hệ thống phân bổ, mà hầu (40) xẩy các hệ thống đa vi xử lý liên kết chặt chẽ hay việc sử dụng các nhóm tiến trình Nếu người ta sử dụng định thời không ưu tiên, thì đó, bất lợi nó loại bỏ; nhiên, việc định thời này có khó khăn Thật vậy, các giao thức định thời trình bày trên có giá trị việc định thời không có ưu tiên các tiến trình dài; dù vậy, định thời không có ưu tiên nói chung phải lưu ý cách đặc biệt Các chiến lược định thời đặc biệt M Gonzales (1977) tìm thấy 2.2.6.3 Sự phân bổ tải hệ thống đa vi xử lý Gia tốc có thể đạt cao ( speedup là tương quan thời gian cũ và thời gian mới) việc thực chương trình nhờ các vi xử lý phân bổ song song nhờ các kênh I/O thì là hạn chế Một cách có lợi nhất, chúng ta có thể phân bổ tải trên m phương tiện điều hành theo nguyên tắc: thời gian thì thời gian củ chia cho m, tức là, cái gì đó gây nên gia tốc tuyến tính m (bộ vi xử lý) Trong thực tế, dẫn khác có tính định hơn, đó là thành phần mã không thể xếp song song Người ta ký hiệu thời gian thực mã là Tpar , đó, m ->∞ vi xử lý và Tpar ->∞, thì gia tốc thay đổi thời gian xẩy mạnh mẽ Cuối cùng, tương quan mã và mã song song xác định speedup = tcũ / tmơi = (Tseq + Tpar ) / Tseq = + (Tpar/ Tseq) (2.11) Thí dụ: Chúng ta có chương trình, mà nó có thể nhận khoảng 90% thời gian theo mã xếp song song, có 10% thời gian thực theo mã Vậy, với giao thức định thời tốt và với phần cứng song hành nhanh nhất, chúng ta có thể tăng tốc mã với 90% thời gian, còn phần 10% phải thực tiếp theo, và cho phép chúng ta nhận gia tốc lớn khoảng (90% +10%)/10%= 10 lần Vì hầu hết các chương trình có việc tính toán cấp bách ít lại chiếm phần I/O cao khoảng 20- 80% Điều có nghĩa là, các phần mềm hệ điều hành cần thiết đánh giá việc định thời song song, để làm giảm cách rõ ràng thời gian thực Đối với điều đó, hình 2.16 hai khả P1 Nhân HĐH P2 c trình NSD Pn … c trình NSD P1 Nhân HĐH P2 c trình NSD Pn … Hình 2.16 Đa xử lý đối xứng và không đối xứng c trình NSD (41) Hình phía trái là tình hình 2.11 trình bày cách đơn giản: Mỗi vi xử lý làm việc cách nghiêm ngặt để tách chia các tiến trình tồn song song, mà đó, hệ điều hành xếp đặt là các mã cho vi xử lý Cấu hình này biểu thị là đa vi xử lý không đối xứng Ngược lại với cái đó, người ta có thể phân tách hệ điều hành phân tách các chương trình người sử dụng thành đoạn mã thực song song, mà đoạn mã này vi xử lý thực Do đó, các thành phần hệ điều hành có thể thực cách song song, suất đã nâng cao cách rõ ràng Cấu hình này người ta biểu thị là đa xử lý đối xứng Đối với việc định thời các hệ thống đa vi xử lý thì hàng đợi diện rộng (global-wait-range) sử dụng, mà đó tất tiến trình sẵn sàng (readyprocess) đưa vào Mỗi vi xử lý hoàn tất nhiệm vụ (Job) nó, thì nó đón nhận Job kế nhau; nó còn các lỗi phương tiện điều hành rằng, Job gặp thì các Job khác phải thực tiếp tục và việc điều hành tính toán diễn tiếp tục Những lỗi phương tiện điều hành này thì không thể các hàm lỗi riêng lẻ, mà nó thể tổn thất chung vi xử lý Vấn đề chưa giải là việc phân bổ n nhiệm vụ cho m vi xử lý Về vấn đề này, nhiều chiến lược khác đã ghi nhận cách mạnh mẽ nhờ các giả định các tính chất các nhiệm vụ Vì phụ thuộc các nhiệm vụ với phụ thuộc các phương tiện điều hành làm việc các Job không đặn có thể là giả định, cho nên, các thuật toán định thời nêu là ít là nhiều các phép tính gần đúng 2.2.7 Mô hình định thời ngẫu nhiên Trên sở này, có hai giả định để thiết kế thuật toán định thời tốt dựa trên quan sát cách ngẫu nhiên các tính chất nhiệm vụ: chúng không tách biệt, mà chúng điền thêm vào Đối với giả định thứ nhất, người ta có thể xây dựng mô hình toán học với tiếp nhận hợp lý các Job và công việc chúng Đó là nhiệm vụ việc phân tích giả định, mà nó đã P.B Hausen (1973) sử dụng để phát triển lý thuyết hàng đợi Thí dụ: Gọi Pj là xác xuất mà Job hàng đợi xuất khoảng thời gian ∆t thì tỷ lệ với khoảng thời gian đó và độc lập với lai lịch trước đó (gọi là tiếp nhận phân bổ Poisson): Pj ~ ∆t hay: Pj = λ∆t (2.12) λ gọi là hệ số tỷ lệ Gọi PN là xác suất mà không có Job nào đến khoảng thời gian ∆t, ta có: (42) PN ( ∆t) = 1- Pj = 1- λ ∆t (2.13) Do đó, xác suất mà không có Job nào đến khoảng thời gian t +∆t xác định: PN (t + ∆t) = P (không có Job khoảng t ∩ không có Job khoảng ∆t ) = PN (t) PN (∆t) = PN (t) (1- λ∆t) Bởi vậy, ta rút ra: [PN (t + ∆t) - PN (t)] / ∆t = - λPN (t) Ở giới hạn quá độ, ∆t -> 0, thì ta có: dPN (t) / d(t) = - λPN (t) PN (0) = thì: PN (t) = e-λt với (2.14) (2.15) Từ đó ta nhận biểu thức xác suất phân bổ theo hàm số mũ: Pj (t) =1 - PN (t) = 1- e-λt (2.16) Với biểu thức này, ta đã nhận giả định thống kê quan trọng, nó không thời gian tới mà thời gian làm việc Job Gọi P(t) là mật độ xác suất đến làm việc Job, lấy đạo hàm vế biểu thức (2.16), ta có: dP (t)/dt = λ e-λt dP (t) = λ e-λt dt Hay: Lấy tích phân vế biểu thức, ta nhận được: t P(t) = e-λtdt = λ e-λt (2.17) Gọi Tj là thời gian đến trung bình hay thời gian đến chờ đợi, biến đổi toán học thông thường, ta có: Tj = P(t)dt = t e-λtdt (2.18) Nghịch đảo Tj là tần số hay là tỷ lệ thời gian tới λ Tương tự, chúng ta nhận tỷ lệ thời gian điều khiển là μ Nếu λ<μ, thì hàng đợi trạng thái trọng lượng nhẹ Đối với trường hợp này ta nhận thấy: chiều dài trung bình L hàng đợi thì tỷ lệ với thời gian chờ trung bình Tw Job, tức là: L = λ Tw (2.19) (43) Một giả định định thời đa vi xử lý ngẫu nhiện J.T.Robinson tìm thấy (1979) Đáng tiếc, giả thiết này đã phủ định hoàn toàn mô hình này, mà nó đã tạo điều kiện cho công trình nghiên cứu toán học Đáng lẽ điều này phải các giả định tổng hợp thực hiện, mà giả định này gây khó khăn cho việc nghiên cứu toán học Do đó, kết mô hình hoá toán học gần bị giới hạn cách có thể dùng được; chúng ý tưởng và trình bày tình đặc biệt Trên sở này, điều có lý là, với lập luận thứ 2, mô hình hoá các hệ thống nghiên cứu thực Mấu chốt cái đó là gói thông tin ready (phần mềm) khác nhau, nhờ nó mà công việc nghiên cứu thuận lợi Ở việc mô hình hoá, tất các phương tiện điều hành song song (như các vi xử lý, các kênh I/O ) với hàng đợi, tỷ lệ xuất hiện, loại điều khiển mô hình hoá Hệ thống máy tính thực kết nối thành mạng từ các trạm điều khiển, đó, người ta có thể làm thích hợp tham số riêng lẻ thực tốt Những vướng mắc và nan giải có thể giải mô hình hoá, khắc phục và thông dịch cách thích hợp 2.2.8 Định thời Unix Trong Unix, phương pháp quay vòng Robinson áp dụng, để mô hình hoá cách thích hợp cho các tiến trình có ưu tiên Mỗi tác vụ (tiến trình) đón nhận ưu tiên nào đó mà nó phân bổ Qua đó, các tiến trình hệ thống phân bổ trước đó, mà từ phía tới phía khác đảm bảo rằng, tiến trình chờ lâu thì tối thiểu lần đưa tới hàng đợi Ngoài ra, Unix, ưu tiên ký hiệu chữ số từ -127 đến +127, đây, số nhỏ thì có ưu tiên cao Trong các tiến trình hệ thống, số âm có ý nghĩa rằng, nó không thể bị bẻ gãy cách bình thường Nó cho phép người sử dụng dùng lệnh nice , để người sử dụng tiếp tục dùng các tiêu chuẩn ưu tiên riêng lẻ, vì các Job chưa tới hạn thì có thể còn dùng cho người sử dụng khác Một cách hình thức thì điều đó không nên dùng Vì số đầy đủ tồn nhiều Job với ưu tiên nhau, đó, tất các Job có ưu tiên giống nhận thấy hàng đợi theo định thời FCGS Nếu tất các Job hàng đợi đã thực xong, đó hàng đợi sau đó với ưu tiên thấp làm việc Ngoại lệ, Job có ưu tiên mà phải chờ lâu, thì treo vào hàng đợi khác ( theo kiểu định thời đa mức bước lùi) Trong các phiên Unix thì ưu tiên đánh số từ đến 255 và ngoài ra, nó còn chia nhỏ thêm Hình 2.17 dãy hàng đợi có ưu tiên kiểu định thời đa mức này (44) Các hàng đợi tạo thành danh sách chuỗi, mà các hiển thị nội dùng nó trên khối điều khiển tiến trình (PCB) bảng tiến trình Tất các Job ưu tiên hệ thống (128 đến 177) và tất các Job người sử dụng (188 đến 255) phân chia theo phương pháp lát cắt thời gian, các Job xử lý đặc biệt, nó khởi động gọi hệ thống đặc biệt với hàm gọi rtprio() Sự ưu tiên (0 đến 127) dành cho ưu tiên cao và không thay đổi nhiều Những tính chất không tồn các phiên khác Unix việc định thời có ưu tiên các tiến trình, mà nó thuộc kiểu định thời trạng thái nhân thì không thể ngắt cách bình thường (nó tồn ngăn xếp nhân riêng lẻ, đó không thể vượt qua được), việc phân bổ nhớ chính dự trữ cứng để phòng tránh việc đổi tráo và các files với các khối hợp lý tạo nên đặc trưng thời gian thực Unix 2.2.9 Định thời Windows NT Ngay Windows NT có định thời đa mức, mà nó đã thu nạp Job có thời gian thực Những ưu tiên từ mức ưu tiên 0, đó là mức ưu tiên thu hẹp (đối với tiến trình trống hệ thống ) tới ưu tiên mức cao 31 (đối với các tiến trình thời gian thực) Trong hình 2.18 dẫn tới cách nhìn tổng quát Tuy nhiên, không có Job nào quản lý, các tiến trình trọng lượng nhẹ (threads) Sự định thời tách chia điều phối Thật vậy, điều phối đã cung cấp sở liệu riêng, mà nó đã giữ chặt trạng thái tiến trình trọng lượng nhẹ và CPU, đồng thời, nó đã tạo nên định nguyên tắc cho định thời Windows NT trợ giúp cho ta xử lý cân đối Nếu quá trình trọng lượng nhẹ không kết thúc, thì đó, các CPU thực thread đặc biệt gọi là idle thread Những tiến trình threads phân bổ và làm việc theo phương pháp lát cắt thời gian ưu tiên Sau lát cắt thời gian (tức là ngắt thời gian), thì ưu tiên tiến trình thread (ưu tiên mức đến 15) bị thu hẹp ít đạt nhỏ tới ưu tiên sở (ưu tiên đến 6) Sau đó, cần định rằng, tiến trình thread nào hàng đợi có ưu tiên cao và liệu tiến trình thread có thực trên vi xử lý ? Cho cái đó, có tinh chất phụ có thể thay đổi được, đó là tính chất ảnh xạ tương đồng các vi xử lý Nếu có tiến trình thread treo vào hàng đợi danh sách sẵn sàng, đó, nó nhận ưu tiên bổ sung, mà ưu tiên này thì phụ thuộc vào loại danh sách chờ: Đầu cuối I/O nhận nhiều ưu tiên bổ sung là các I/O Nếu tiến trình thread tới sẵn sàng, thì tiến trình này có ưu tiên thời gian thực (real time) cao (mức 16 đến 31) là các tiến trình threads thực trên các vi xử lý và đó, tiến trình thread dẫn vào hàng đợi, đồng thời vi xử lý đón nhận ngắt Do vậy, nó đẩy tiến trình trở lại vào hàng đợi và thay đổi đạt ưu tiên mức cao (45) Những mức ưu tiên thiết lập phân bổ theo loại Job: Những Job nội hoạt thì quan trọng các Job với I/O; các Job I/O thì quan trọng các Job tính toán 2.3 Đồng tiến trình Việc trình bày các tiến trình là đơn vị chương trình có thể thực độc lập cách giả song song mang lại nhiều đặc điểm mềm dẻo và hiệu việc tổ chức tính toán; điều đó đã cung cấp cho chúng ta phương pháp định thời các tiến trình và các vấn đề trợ giúp Bởi vậy, đầu tiên chúng ta nghiên cứu tình sau đây 2.3.1 Các điều kiện chạy đua và các giai đoạn tới hạn Người ta nhận thấy rằng, nhiều hàng đợi hệ thống tiến trình, thì nhiều tiến trình treo vào và chờ đợi điều khiển Tình trạng này luôn luôn trở lại xuất các hàng đợi và trên hình 2.19 Móc treo B PointTo B C A PCB(B) PCB(C) PCB(A) Hình 2.19.Các điều kiện chạy đua hàng đợi Về điều đó, chưa có thể phân biệt các trạng thái rằng, là tiến trình treo vào (ở đây là tiến trình A) là tiến trình tồn treo vào (ở đây là tiến trình B) Để treo vào hay bứt ra, tiến hành bước sau đây: Treo vào: Bứt ra: (1) Lấy móc treo: PointToB (1) Lấy móc treo: PointToB (2) Lập dấu dẫn kế cạnh : = PointToB (2) Lập dấu dẫn kế cạnh := PointToB (3) Đặt móc treo:= PointToA (3)Đặt móc treo:= PointToC Sau bứt tiến trình thì không gian nhớ việc ghi chép danh sách trả lại tự và chuyển đổi tiến trình đón nhận với dấu hiệu dẫn tới khối điều khiển tiến trình Mỗi các tác vụ tiến hành tốt, khi, nó thực cho chính nó (trong khoảng thời gian ngắn) Nếu chúng ta có hệ thống các tiến trình, chuyển đổi sau lệnh khoảng tác vụ tiến trình, thì với cái đó, tạo điều kiện cho chuyển đổi kịp thời (46) tác vụ khác Bây giờ, chúng ta khảo sát bước đầu tiên tác vụ “bứt ra” tiến trình Chúng ta nhận thấy: tiến trình B cần thiết phải bứt ra, tức là bước (1) và (2) thực để bứt tiến trình Bấy xuất ngắt thời gian, lát cắt thời gian B là cuối cùng Tiến trình A xuất và treo vào danh sách khoảng tác vụ “treo vào”; nó còn tạo thêm việc gì đó hay nằm yên Nếu bây B lại nhận điều khiển, đó B tiếp tục làm việc cách khó nhọc với các liệu cũ Trong bước thứ (3), móc treo đặt vào vị trí C và với cái đó, thì tiến trình A không còn danh sách nữa; đó là danh sách sẵn sàng, thì đó không nhận điều khiển và không làm việc Sự xảo trá lỗi này là chỗ: nó không xuất luôn luôn, mà xuất cách phiếm định, cái gì đó không rõ ràng, cách không thể tái định và nó xuất điều kiện phụ kết nối Vì có cái đó xẩy ra, cho nên nếu, tiến trình chạy vượt qua tiến trình khác, thì người ta cái đó là điều kiện chạy đua; đó là đoạn mã mà đó lỗi tồn tại; và tất nhiên, các đoạn mã này không phép bẻ gãy, chúng là đoạn mã tới hạn (critical section) Vấn đề này là đặc trưng cho hệ thống, mà đó, nhiều phương tiện điều hành độc lập làm việc trên dải liệu Đặc biệt hệ thống đa vi xử lý, thì cái đó là vấn đề quan trọng các nhà thiết kế hệ thống nhận biết và quan tâm Vấn đề là chỗ phải đảm bảo an toàn khoảng tới hạn chương trình người sử dụng hay hệ điều hành: tức là đó luôn luôn có tiến trình hay vi xử lý Việc dẫm lên hay loại bỏ mã phải xác định đồng các tiến trình và phải đảm bảo loại bỏ tương tác (mutial exclusion) khoảng tới hạn Vấn đề này đã nhận biết năm 60 và đã xử lý với nhiều thuật toán khác Ở phương pháp giải E.W Dijkstra (1965) đã đưa yêu cầu sau đây: + Hai tiến trình không đồng thời khoảng tới hạn chúng; + Không phép hãm tiến trình ngoài khoảng tới hạn tiến trình khác; + Mỗi tiến trình chờ lối vào khoảng tới hạn, thì nó phải phép dẫm lên khoảng tới hạn: Một chờ đợi vỉnh viễn phải chấm dứt (fairness condition) 2.3.2 Tín hiệu, cờ hiệu và các hoạt động nhân tử Ý tưởng đơn giản để tạo lập loại bỏ tương tác là chỗ: tiến trình phải chờ đợi lối vào khoảng tới hạn quá lâu, khi, khoảng tới hạn này trở lại trống Đối với hai tiến trình diễn biến song song, thì mã chúng hình 2.20 (47) Tiến trình1 … Tiến trình2 … WHILE drin1 DO NoOp END; WHILE drin2 = TRUE DO NoOp END; khoảng tới hạn drin1 :=FASLE; … giai đoạn tới hạn dran :=1; … Hình 2.20.Thí nghiệm đầu tiên để đồng tiến trình Nếu chúng ta thiết lập biến chung dran thí dụ với 1, đó, mã nói trên đạt tới loại bỏ tương tác, hai tiến trình có thể thực cách thay đổi khoảng tới hạn Điều đó tương ứng với yêu cầu (3) trên, vì tiến trình tự cản trở để dẫm lên lần thứ hai khoảng tới hạn, mà không phải khoảng tới hạn Nếu chúng ta giả sử, để làm đồng hai tiến trình dãy bất kỳ, đó, chúng ta lưu ý, điều đó thì không đơn giản Thí dụ, cấu trúc hình 2.21 có lợi, tiến trình chờ không lâu phân bổ đặc biệt, ngoài còn phải lưu ý thêm: tiến trình khác thì không khoảng tới hạn Hình 2.21 Tuy nhiên, đây có lỗi khác xuất hiện: Người ta thấy rằng, các biến đồng thiết lập với drin2 := drin1 := FALSE Tiến trình P1 tìm thấy drin2 := FALSE và tiến trình P2 tìm thấy drin1 := FALSE Do đó, các tiến trình đặt là drin1 := TRUE drin2 := TRUUE và hai đồng thời khoảng tới hạn, tức chúng mâu thuẩn với yêu cầu (1) theo loại bỏ tương tác (mutical exclusion) Cũng vậy, trao đổi hai hàng (khoảng máu xám thứ nhất) không mang lại trợ giúp nào Đầu tiên là đề nghị T Dekker nhà toán học Hà Lan đã phương hướng để giải vấn đề đồng hai tiến trình (1965) Dựa vào đó, G Peterson đã đưa (1981) phương pháp đơn giản đồng hai tiến trình, nó trên hình 2.22 đây Hình 2.22 - (48) Ta có: Interesse1, Interesse2 và dran là các biến toàn cục Cả biến Interesse1, Interesse2 thiết lập(mặc định) với FALSE Chúng ta nhận thấy, tiến trình làm việc với các dãy lệnh vùng màu xám trước khoảng tới hạn Vì tiến trình khác đã không biến Interesse, cho nên, điều kiện vòng lặp WHILE không thực và tiến trình dẫm lên khoảng tới hạn Nếu tiến trình khác xuất muộn, thì đó, nó phải chờ đợi quá lâu, tiến trình khác bỏ qua khoảng tới hạn và không biểu lộ biến Interesse Trong trường hợp hai tiến trình đồng thời dẫm lên vùng màu xám, thì trường hợp này, làm việc chúng định lệnh, mà với lệnh này, biến toàn cục dran đưa vào Tiến trình đưa vào cuối cùng thì làm giải thoát tiến trình khác và phải chờ đợi; còn tiến trình khác có thể dẫm lên khoảng tới hạn Người ta có thể trình bày phác thảo này cách chắn với kết cấu ngôn ngữ định Một ý tưởng cho cái đó là việc qui định tín hiệu khoảng tới hạn Qua đó, tiến trình này tự động và tín hiệu quy định vừa nói tới kiểm tra trước dẫm lên khoảng tới hạn Nó đưa với giá trị khởi xướng có thể dùng Tiến trình gọi bị hãm lại lệnh: waitFor(Signal), trường hợp này không có tín hiệu nào đặt vào, mà nó đặt tín hiệu trở lại và dẫm lên khoảng này Nếu tiến trình gọi hoàn thành, thì nó tác động lên các tiến trình với lệnh: send(Signal) Tiến trình nào tác động, đó là công việc chiến lược dự định bổ sung Cấu trúc E.W Dijkstra nêu (1965), đã tạo điều kiện tới kết thúc không hoàn hảo khoảng tới hạn Ông gọi tín hiệu này là cờ cầm tay (Semaphore) Những cớ tín hiệu này xuất hiểu là đèn hiệu giao thông Chúng quản lý thành kiểu tác vụ sau đây: Tác vụ vượt qua P(s): Khi vào khoảng tới hạn thì P(s) gọi với cờ hiệu s Tiến trình gọi thuyên chuyển vào trạng thái chờ đợi, tiến trình khác khoảng đổi cờ tín hiệu Tác vụ rời khỏi V(s): Khi rời khỏi khoảng tới hạn, tiến trình V(s) gọi đến và gây nên cho cái đó tiến trình chờ đợi kích hoạt và phép dẫm lên khoảng tới hạn Điều đó thì chưa thực chất, liệu là, tín hiệu hay cờ hiệu tồn khoảng tới hạn, mà khoảng này tất các vi xử lý nhớ chính thực (các hệ thống đa vi xử lý); liệu là, có nhiều các tiến trình (thí dụ hệ thống nhiều máy tính), hay liệu, chúng là khoảng mã khác nhau, mà chúng trao đổi chức lẫn và chúng phải đảm bảo với tín hiệu toàn cục thí dụ nói trên, đó là việc treo vào hay bứt hàng đợi (49) Thí dụ sử dụng các tác vụ P(s) và V(s): Nhiều tiến trình cần phải gia tăng số và giá trị chúng phải xuất ra, vậy, cách bình thường “1,2,3…” đếm tăng lên Khi đó, khoảng tới hạn dẫn đây là: … z := z +1; WriteInt(z,3); … Với cờ tín hiệu này thì điều dẫn tới là: P(s); {* Kiểm tra: khoảng tới hạn đã bị chiếm giữ ?*} z := z +1; {* khoảng tới hạn*} WriteInt(z,3); WriteInt(z,3); V(s); {* Tiến trình chờ đợi gọi tới*} Người ta lưu ý rằng, các khoảng tới hạn không thể tự bẽ gãy, chúng vừa biểu thị các hàm send(Signal) và waitFor(signal) vừa diễn tả các hàm P(s) và V(s) Tuy nhiên, chúng ngắn, và cho nên chúng thi hành cách nhẹ nhàng với tư cách là hoạt động nhân tử Một hoạt động nhân tử thì là thực hoàn toàn (tất các tác vụ khoảng này) là chẳng thực gì (không có tác vụ riêng lẻ) Những đệm chuyên dụng (special buffer) tạo điều kiện để nhớ trạng thái ban đầu Nếu hoạt động nhân tử phải bẻ gãy, thì đó, trạng thái khởi điểm tái sinh Thí dụ các hoạt động nhân tử: Đối với việc chuyển tiền, bạn muốn nhập triệu đồng vào tài khoản bạn Đáng tiếc, khoảnh khắc này, khiếm khuyết xuất hệ thống các máy tính, mà trước số tiền có thể nhập vào tài khoản; hệ thống máy tính phải dừng lại Sau khởi động hệ thống, bạn có thể lựa chọn: để đón nhận lần nhập lại triệu đồng và để chuyển số tiền cho tài khoản đích, không làm gì Vì số tiền này đã không tới người nhận, điều có nghĩa, trường hợp bạn thì giống trường hợp tiền bị đánh rơi Với tư cách là khách hàng, bạn nhận biết cách không chắn thông báo tình hình vừa qua máy tính Trường hợp đón nhận cố này, việc chuyển tiền dự đoán là hoạt động nhân tử Vì hoạt động đã không kết thúc, đó, tính chất phá huỷ đảm bảo cho bạn rằng, việc nhập sổ lần đầu không thực và nó tồn với tư cách là thay đổi nhịp điệu: Bạn không bị thất lạc triệu đồng Việc nhập sổ tức khắc thực lại sau khởi động máy tính (50) Việc đặt trở lại thì không có vấn đề gì các ngân hàng liệu phân bổ Do đó, kiểu ngân hàng này ưa chuộng hầu hết các ngân hàng liệu trung tâm và các ngân hàng liệu quản lý các máy tính lớn Ý tưởng đồng hoá tiến trình cho phép dẫn tới vấn đề lớn: Mỗi tiến trình phải chờ đợi cách tích cực chuỗi lệnh (busy waiting) đủ điều kiện để nó có thể dẫm lên khoảng tới hạn Loại tác vụ chờ đợi này gọi là spin locks (các khoá vòng quay) Sự chờ đợi này không chất tải lên các vi xử lý cách không cần thiết, mà còn có thể gây tổn hại điều kiện cân (fairness condition) Nếu chúng ta lưu ý tới điều kiện mà tiến trình ưu tiên cao đón nhận điều khiển sau đó; còn là tiến trình ưu tiên thấp thì phải khoảng tới hạn nó Trong trường hợp này thì tiến trình lại lâu tác vụ spin lock, tiến trình khác rời bỏ khoảng tới hạn Vì tiến trình có ưu tiên thấp, cho nên, không có trường hợp nào tiến trình không phụ thuộc các ưu tiên thống kê và điều kiện cân bị phá vỡ Việc chờ đợi chuỗi lệnh (busy waiting) đã tránh tiến trình chờ đợi phải ngủ lịm, mà điều khiển chuyển giao các câu lệnh waitFor(Signal) hay P(s) Phần mềm thực thi: Một các kiểu thực thi các cờ hiệu mô hình hoá: cờ hiệu là đệm, mà đệm này làm giảm lại tới tiến trình Các tác vụ P(s) và V(s) gọi là các hoạt động nhân tử Sau đây, thực thi kiểu busy wait ra, chúng có thể sử dụng nào nhân hệ điều hành để chắn đường khoảnh khắc Ở đây, đầu tiên lấy s =1 PROCEDURE P(VAR s: INTEGER) BEGIN WHILE s<=0 DO NoOp END; s := s-1; END; PROCEDURE V(VAR s: INTEGER) BEGIN s := s+1; END V; Một giải pháp tiến tiến trình người sử dụng và thời gian chặn lại lâu thì thực lệnh sleep và wakeup() và cờ hiệu lưu ý là các biến cấu thành, mà chúng đón nhận danh sách các tiến trình chờ Việc thực thi danh sách các tiến trình thì không đây Còn s lấy giá trị ban đầu s =1 TYPE Semaphor = RECORD value : INTEGER; (51) list : ProcessList; END; PROCEDURE P(VAR s: Semaphor) BEGIN s.value := s.value -1; IF s.value <0 THEN Einhangen (MyID, s.list); sleep; END END P; PROCEDURE V(VAR s: Semaphor) VAR PID: ProcessId; BEGIN IF s.value <0 THEN PID := aushangen(s.list); wakeup(PID); END; s.value := s.value +1 END V; Phần cứng thực thi: Đối với việc lập trình hệ thống và phạm vi đa vi xử lý, trợ giúp quan trọng việc thực thi các hoạt động nhân tử phương tiện phần cứng Đến nay, có nhiều phiên khác nhau, có thể giới thiệu vắn tắt sau: Loại bỏ ngắt: Một các phương pháp đơn giản cho các hoạt động nhân tử các hệ thống đơn vi xử lý là loại bỏ tất làm gián đoạn việc đặt các bit trạng thái CPU điều khiển ngắt Điều đó có thể mang lại hiệu phụ, ví dụ, có ngắt hẹn thời bị loại bỏ và việc đếm thời gian đến thì thời điểm ách tắt dòng, ngắt power failure bị từ chối và các ghi không thể cứu thoát nữa…Tốt là, không cần cản lại các ngắt và với lý này, cần mượn vay ưu tiên có khả cao cho tiến trình khoảng tới hạn Dãy lệnh nhân tử: Ở các thiết bị đa vi xử lý, ngăn cản các ngắt cho thấy không có phương tiện thích ứng Ở đây, hoạt động nhân tử (atomic operation, atomic action) đã giữ hình dáng các lệnh máy không thể bị bẻ gãy, các lệnh này thực lệnh máy tổng hợp chu kỳ nhớ riêng lẻ Thídụ các cái đó là: + Lệnh Test And Set (thử nghiệm và thiết đặt): (52) Lệnh Test And Set lựa chọn nội dùng phần tử nhớ và thay nó vào khoảng chu kỳ nhớ qua giá trị khác Điều đó chuyên môn hoá hàm: PROCEDURE TestAndSet(VAR target: BOOLEAR): BOOLEAR VAR tmp: BOOLEAR; BEGIN tmp := target; target := TRUE; RETURN tmp; END Te stAndSet; Việc đặt lui FALSE thực tiến trình và có thể xẩy cách bình thường mà không có hoạt động atomic action + Lệnh swap (tráo đổi) Người ta có thể khái quát tác vụ trên và chuyên môn hoá giá trị viết lui tới Khi đó hàm swap tráo đổi trị số các biến nguồn và đích với nhau: PROCEDURE swap(VAR source, target: BOOLEAR) VAR tmp: BOOLEAR; BEGIN tmp := target; target := source; source:= tmp; END swap; + Lệnh Fetch And Add (lấy và cộng vào) Lệnh này lựa chọn nội dung phần tử nhớ và viết nó vào chu kỳ nhớ tương tự giá trị hay giá trị chọn làm tăng lên số PROCEDURE fetchAndAdd(VAR a, value:INTEGER): INTEGER; VAR tmp :INTEGER; BEGIN tmp := a; a:=tmp+value; RETURE tmp; END fetchAndAdd; Điều đã rõ, với các lệnh nhân tử phần cứng, lệnh chờ đợi busy wait khóa vòng (spin lock) có thể thực thi cách dễ dàng loại bỏ không đáng kể Nếu chúng ta sử dụng điều này để thực thi các tác vụ nhân tử P() và V() cờ hiệu, điều có nghĩa rằng, tác vụ cờ hiệu đã lưu ý phần cứng, mà không cần thực các lệnh máy phức tạp các thủ tục P() và V() Thí dụ đồng đa vi xử lý: Trong các thiết bị đa vi xử lý với nhớ chung, đồng phần cứng thực có lệnh nhân tử, vì ngắt chung không tồn Những lệnh nhân tử các vi xử lý riêng lẻ này thực song song với (53) và chúng không thể tách chia nhau, vì chúng xảy kết nối chặt chẽ với hệ thống tiếp nhận nhớ, mà hệ thống này chỗ nhớ tồn lần và nó đảm bảo cho cái đó thời gian ngắn (một chu kỳ nhớ) tiếp nhận thông thường trên các biến toàn cục Việc thực thi các tác vụ cờ hiệu hệ thống đa vi xử lý với lệnh máy nhân tử có thể nhìn nhận sau: VAR s: INTEGER; (*lấy giá trị đầu s=1*) PROCEDURE P(S); BEGIN LOOP WHILE s>1 DO NoOp END; (a) IF (FetchAndAdd(S,-1)>=1) THEN RETURN END; (b) FetchAndAdd(s,1); (c) END; END P; PROCEDURE V(s); BEGIN FetchAndAdd(s,1); END V; Những điều này A Gittlieb thực lần đầu (1981) và đã ra, bên cạnh lệnh LOOP không có vòng đợi P(), còn có hàng đợi dòng lệnh (a) với vòng lặp WHILE Nhờ bao quát hệ thống đa vi xử lý, điều thì có lý, chúng ta thoát khỏi vòng lặp WHILE, đó, phép thử với FetchAndAdd(FAA) dòng lệnh (b) không đạt Thật vậy, chúng ta lưu ý trường hợp, mà đó ba vi xử lý P(s) đồng thời thực thủ tục (Procedure), đó người ta lấy giá trị ban đầu s=1 Cả ba vi xử lý cần thiết nhận trả lại s các giá trị 1, và -1, và cuối cùng đạt s=-2 Bộ vi xử lý đầu tiên dẫm lên, rời khỏi khoảng tới hạn, còn hai vi xử lý chờ đợi vòng lặp chuyện xong xuôi Chúng ta nhận thấy rằng, vi xử lý thứ hai đã hạ thấp xuống lệnh FAA thứ dòng lệnh (b) cờ hiệu với s= - 1, vi xử lý thứ thực tác vụ V() nó và gia tăng cờ hiệu với s= Nếu bây giờ, vi xử lý thứ hai thực lệnh FAA thứ hai dòng lệnh (c) và gia tăng cờ hiệu với s = 1, đó, sau vi xử lý này thực lệnh FAA dòng lệnh (b) vi xử lý thứ nhất, thì nó có thể rời bỏ tác vụ P() cách bình thường Sự việc này có thể phòng ngừa nhờ vi xử lý thứ ba, lúc đó, nó thực lệnh FAA dòng lện (b) mà trước đó vi xử lý thứ hai đã thực dòng lệnh (c) và vậy, cờ hiệu đã giảm xuống trở lại với s = -1; tiếp theo, cờ hiệu tăng lên vi xử lý thứ hai với s = (đáng lẽ s = 1) (54) Nhờ dãy điều chỉnh (timing) [P3(b),P2(c),P2(b),P3(c)], … thì dãy cờ hiệu với s = 0,-1,0, -1… là có thể thực được, đó, các cờ hiệu không có giá trị đúng phải loại bỏ khỏi các vi xử lý từ vòng đợi: hai vi xử lý hãm lại, dụ cho khoảng tới hạn còn trống Bấy giờ, nhờ vòng lặp WHILE mà điều đó phòng ngừa, vì đây, s đọc, không thay đổi, đó, tất các tiến trình bị loại bỏ…một cách đơn giản: tiếp tục chờ đợi, không có phương cách nào 2.3.3 Cờ hiệu Unix Ở vài phiên hệ điều hành Unix, có tiếp nhận cờ hiệu là việc gọi hệ thống Sau đây các gọi hệ thống HP-UX: lockf Tác vụ cờ hiệu để truy xuất files msem_init Việc khởi xướng cờ hiệu để trích nạp nhớ msem_lock Việc ngăn hãm cờ hiệu msem_unlock Giải phóng cờ hiệu msem_remove Sự loại bỏ cờ hiệu để truy cập nhớ semct1 Tác vụ điều khiển cờ hiệu nói chung semget Đón cờ hiệu semop Tác vụ cờ hiệu Cú pháp và ngữ nghĩa các tác vụ cờ hiệu phân biệt khác từ phiên này tới phiên khác hệ điều hành Unix Các tác vụ nhân tử ẩn thì quan trọng các cờ hiệu ẩn, tác vụ này đưa chuẩn để thực thi các cờ hiệu Thí dụ việc tạo file (nói chính xác hơn: tạo thông tin quản lý file kèm theo file) chính là việc tạo tác vụ nhân tử: là tồn file với các tên file tạo lập theo gọi hệ thống, là thủ tục đưa thông báo lỗi, thí dụ: tên file tồn hai lần Điều cần phải loại trừ là hai tiến trình đồng thời sinh hai file khác với các tên file tương tự Cho nên, người ta sử dụng điều đó để tạo khả cùng phô diễn việc tạo lập liệu và biểu lộ tiến trình (đó là kiểu người sử dụng và nhà sản xuất) việc phô bày các file (printer demon) Những file sinh cho cái đó cờ hiệu biểu thị là người thợ khoá hay file khoá (lock file) Ở hệ điều hành Unix, các hoạt động nhân tử yêu cầu rằng, tiến trình (của loại nhân tử) thì có thể không bị bẻ gãy Thật vậy, quá lâu mà nó chưa nhận điều khiển, nó đặt yên tĩnh thủ tục nhân (kernel procedure) hay trở lại trạng thái người sử dụng Ở các hệ thống đa vi xử lý Unix, các cờ hiệu nhân đặt tới toạ độ các vi xử lý Ở phiên HP-UX (Hewlett- Packard Unix version), tất các khoảng tới hạn các liệu nhân quan trọng và các bảng bảo vệ nhờ cờ hiệu busy wait (55) 2.3.4 Cờ hiệu Windows NT Có nhiều kiểu kết cấu đồng hệ điều hành Windows NT Đối với đồng cổ điển, các tiến trình và các xâu (threads) có các lệnh gọi hệ thống CreatSemaphore() và OpenSemaphore() mà nó sinh các cờ hiệu không gain biến toàn cục (giống file) bắt đầu việc truy cập cái đó Các tác vụ P() và V() thì phù hợp với các thủ tục WaitForSingleObject(Sema, TimeOutValue) và ReleaseSemaphore() Về cái đó, người ta chọn các cờ hiệu với tư cách là đếm với giá trị kết thúc lớn hay với tư cách là biến nhị phân cục Qua việc truy cập hệ thống các biến toàn cục thì cấu trúc cờ hiệu này với tiêu phí gia tăng là có thể đáp ứng Do đó, toạ độ các vòng quay kín (spin locks) khoảng tiến trình thì cờ hiệu trọng lượng nhẹ phụ tạo lập, mà cờ hiệu này quen thuộc khoảng tiến trình hay khoảng chương trình Cờ hiệu này gọi là khoảng tới hạn và bắt đầu với lệnh InitialezeCriticalSection(s) Ở đây, các tác vụ P() và V() có ý nghĩa là EnterCriticalSection(s) và LeaveCriticalSection(s) Vì hệ điều hành Windows NT thì lý tưởng các hệ đa vi xử lý kết nối chặt chẽ với nhớ quảng đại, cho nên, nhân hệ điều hành Windows NT sử dụng thuận tiện cho việc đồng đa vi xử lý Ở đây, vòng quay kín (spin lock) sử dụng là cờ hiệu, đó, xâu (thread) với vòng quay kín hãm giữ vi xử lý thật lâu, nó lại rời bỏ vòng quay kín này Các tác vụ vòng quay kín này sử dụng để dịch vụ hệ điều hành Windows NT Executive Tuy nhiên, chúng có vài hạn chế: thí dụ khoảng tới hạn thì không có tham chiếu nào tới khoảng nhớ thực hiện, mà chúng đã nạp trên nhớ quảng đại, người ta có thể không cần gọi các thủ tục bên ngoài hay có thể không cần loại bỏ ngắt ngoại tệ nào Đối với các dịch vụ cao thì cần tới các đối tượng nhân có tính chất đồng khác và các đối tượng nhân này quy tụ hệ thống định thời bình thường Ví dụ các đối tượng đó là các cờ hiệu, các biến cố (event), các cặp biến cố, các hẹn thời, các quay vòng kín, các đối tượng loại trừ lẫn nhau… Các đối tượng có thể tồn hai trạng thái: báo trước và không báo trước Thí dụ, đối tượng cờ hiệu qua trạng thái báo trước, đếm số không (0) và tất trở thành vòng chờ trống Ở hệ điều hành Windows NT, vòng chờ có thể chờ đợi trên vòng chờ trống khác, chờ đợi các biến cố hay chờ đợi cờ hiệu và nhờ thế, nó có thể làm đồng Win32 API thì sử dụng các thủ tục WaitForSingleObject() và WaitForMultipleObject() Thí dụ, vòng chờ chương trình tờ trãi (hay còn gọi là chương trình bảng tính) có thể gọi vòng chờ khác Nếu người sử dụng kết thúc chương trình, đó, tiến trình chính với lệnh WaitForSingleObject() chờ đợi kết thúc tiến trình cưỡng bức, trước chương trình kết thúc hoàn toàn và tất các liệu bên bị loại bỏ (56) 2.3.5 Các ứng dụng Cờ hiệu sử dụng rộng rãi cho vấn đề làm đồng khác Ở đây, vài ví dụ quan trọng và phổ dụng giới thiệu sau đây Đồng các tiến trình: Tác vụ P() cờ hiệu để ngăn hãm tiến trình thật lâu, nó tự nhờ tác vụ V() Điều đó chúng ta có thể sử dụng để đem lại tính toán cho phụ thuộc tương hỗ hệ thống tiến trình và để khẳng định cách chính xác dãy tác động tiến trình Về cái đó, chúng ta định nghĩa cho phụ thuộc với cờ hiệu đặc biệt để bắt đầu hay kết thúc chờ đợi tiến trình Thí dụ đồng cờ hiệu: Dưới đây sơ đồ tương quan năm tác cụ A, B, C, D và E: Hình -Bây giờ, các tiến trình diễn giải cách tách biệt sau: Tiến trình A: BEGIN TaskBodyA; V(b); V(c); END A; Tiến trình B: BEGIN P(b) TaskBodyB; V(d1); V(e); END B; Tiến trình C: BEGIN P(c) TaskBodyC; V(d2); END C; Tiến trình D: BEGIN P(d1); P(d2) TaskBodyD; END D; Tiến trình E: BEGIN P(e ) TaskBodyE; END E; Các cờ hiệu b,c,d1,d2, e phải định nghĩa là các biến toàn cục và giá trị đầu chúng lấy không (0) Qua đó, tất các tiến trình chờ đợi cờ hiệu cho hoạt động chúng, chúng không dẫn tới khoảng thời gian khác Điều cần quan tâm là tác động chúng chưa mở, tức là, đây tiến trình đến quá muộn: Tín hiệu đánh thức đã nạp cờ hiệu, đó, nó không thể Quan hệ sản sinh và tiêu dùng: Các nhiệm vụ thiết lập liệu, quản lý liệu, lọc liệu mô tả hệ thống hai hay nhiều tiến trình và nhờ các tiến trình này mà các liệu vừa nêu thiết lập, còn các liệu khác bị loại bỏ Thật vậy, xin xem ví dụ hệ điều hành Unix đầu chương này Nếu chúng ta biểu thị việc chế tạo (sản sinh) là nhà sản xuất, còn việc sử dụng là người tiêu dùng, đó, quan hệ nhà sản xuất và người tiêu dùng giống (57) việc thiết lập và loại bỏ các liệu với các tỷ phần khác (số liệu trên đơn vị thời gian) Nói chung, người ta đưa đệm (buffer) vào các tiến trình, mà đó, đệm này làm đầy việc tạo lập và làm trống việc tiêu dùng Vì vậy, đệm kết thúc mà dòng liệu việc tạo lập nghỉ ngơi đệm đã điền đầy và nó người tiêu dùng gọi làm việc trở lại đệm đã vơi cạn Tương tự vậy, đối vời người sử dụng sử lý ngược lại cho phù hợp Hình 2.23 thiết đặt đơn giản, mà đó, dung lượng đệm với N và biến toàn cục used lấy giá trị đầu không (0) Hình 2.23 -Giải pháp này có vấn đề cần lưu ý: Liệu nó có dễ dàng dẫn tới điều kiện chạy đuẳ) Để xem thử nào, chúng ta khảo sát trường hợp sau đâỵ Khi đệm vơi cạn, thì tiêu dùng cho biết used = 0, và đồng thời sinh sản chuyển đổi Khi sinh sản tạo lượng nào đó (item), thì nó đẩy đệm và làm gia tăng biến used lên 1, cho nên, đệm muốn đánh thức người tiêu dùng Nhưng mà, nó chưa bị đánh thức: đầu tiên, phân bổ vi xử lý gần đó, nó trạng thái ngủ, vì lúc đó biến used không (0) Sau việc sinh sản đã làm đầy đệm, thì tương tự, nó trạng thái ngủ Sau đó hai tiếp tục ngủ mãi mãi Sở dĩ có tình trạng trên, vì tín hiệu đánh thức (wakeup-signal) đến sớm và trôi qua mau Để loại bỏ tồn này thì giải pháp khắc phục là: bit đánh thức (wakeup-bit) lưu trữ, để nó trợ giúp sau thời gian ngắn, các tiến trình tiếp theo, các bit này dẫn vào Nếu chúng ta có số lượng không rõ các tiến trình, điều đó thì giống việc các bit đánh thức này tồn ngoài các hệ thống, và đó, giải pháp chưa giải trọn vẹn vấn đề Bởi việc dẫn tới các cờ hiệu cho giải pháp Vì cờ hiệu gia tăng lại giảm đi, đó, tất các tín hiệu đánh thức lưu trữ hay giải thoát khỏi cần thiết các bit trạng thái riêng biệt Hình 2.24 giải pháp với các cờ hiệu lấy các giá trị: belegt:= 0, free := N, mutex :=1 Hình 2.24 -Phương pháp thực thi tương tác để dẫn tới đệm đảm bảo nhờ cờ hiệu mutex Với cờ hiệu belegt thì số không gian đệm đếm, còn cờ hiệu free là số không gian trống đệm đếm Do việc đọc chọn đếm các cờ gọi wakeup và sleep, cho nên các tác vụ cờ hiệu gọi, mà đó, cờ hiệu riêng lẻ dùng với các điều kiện biên (ghi ngủ) used = N và used = Các tiến trình sản sinh giảm số phần không gian trống, chúng không, thì tiến trình bị hãm lại, trước nó có thể xếp vào vị trí Nếu nó xếp vào vị trí, thì đó nó tăng số vị trí đặt (58) vào và đồng thời đánh thức tiến trình tiêu dùng, mà tiến trình này đặt vào vị trí ngủ (used =0) Người ta lưu ý rằng, giải pháp này nhờ khởi đầu cờ hiệu mutex thì tác dụng lên và loại trừ tương hỗ khoảng tới hạn việc quản lý đệm Ở việc sản sinh và việc lấy (tiêu dùng), tồn nhiều tiến trình sản sinh và nhiều tiến trinh tiêu dùng với cùng loại mã và đó có thể làm đầy hay làm trống đệm, mà không có xáo trộn nào Vấn đề đọc-viết: Để xác định việc đọc và viết nhiều tiến trình trên phạm vi nhớ chung, vấn để việc đồng là xác định lại việc đọc và viết các liệu Yêu cầu là phải làm tách biệt việc đọc và viết đồng thời trên phạm vi liệu chung và phải tránh các liệu không xác định Cái đó điều chỉnh nhờ cờ hiệu riêng lẻ Nếu chúng ta thiết lập yêu cầu phụ thêm, thì đó, các giải pháp trở nên phức tạp Để xem lại giải pháp hoàn thiện thì cần lưu ý điểm sau đây: + Một người cần thiết phải chờ đợi, người viết đã nhận luật truy cập việc ghi chép (gọi là vấn đề thứ việc đọc-viết) Điều đó có nghĩa rằng, không có người đọc nào phải chờ đợi người đọc khác, mà phải chờ đợi người viết + Nếu người viết đã sẵn sàng, thực việc viết nhanh có thể (gọi là vấn đề thứ hai việc đọc -viết) Đồng thời, người viết đã sẵn sàng rồi, để nhận luật truy cập, thì không người đọc nào có thể bắt đầu đọc Người ta lưu ý rằng, giải pháp cho vấn đề thứ là cần phải thực hiện: người viết phải chờ đợi mãi mãi; còn giải pháp cho vấn đề thứ hai là phải thực hiện: người đọc phải chờ đợi mãi mãi Trong hai trường hợp,các tiến trình bị làm đói: vì việc chờ đợi phụ thuộc vào dòng đọc hay phụ thuộc vào dòng viết và không bị tiêu biến phong toả nào Một giải pháp có thể đạt vấn đề thứ là thực đếm chung để ghi số đọc khoảng tới hạn Để đọc khoảng tới hạn, thì người viết bị hãm lại, ngoài không có gì Cho cái đó có hai cờ hiệu ReadSem và RWSem: cờ hiệu để bảo vệ đếm đọc và cờ hiệu để điều chỉnh lối dẫn vào đọc- viết Mã giả để đọc (Reading) viết sau: P(ReadSem); readcount:= readcount +1; IF readcount = THEN P(RWSem) END; V(ReadSem); … Reading_Data(); … P(ReadSem); readcount:= readcount - 1; (59) IF readcount = THEN V(RWSem) END; V(ReadSem); Mã giả cho viết (Writing) sau: P(RWSem); … Writing_Data(); … V(RWSem); Trường hợp người viết khoảng tới hạn, đó, người đọc thứ hãm trên cờ hiệu RWSem; còn tất người đọc khác chờ đợi cờ hiệu RWSem, việc định thời cần định: cờ hiệu nào đánh thức tác vụ V(RWSem) tiến trình viết thứ hai Quản lý hàng đợi đa vi xử lý máy tính NYU-Ultra: Một các hệ thống vi xử lý song song quan tâm năm 80 là máy tính NYU-Ultra trường đại học New York(1983) Nó có cấu trúc đa vi xử lý có sơ đồ nguyên lý hình 1.10 Đối với việc định thời thì thuật toán đặc biệt đã thực thi Thuật toán này đã sử dụng tác vụ fetch and add để làm đồng các vi xử lý trên nhớ chia xẻ và đây, nó mô tả cách ngắn gọn Ở việc truy cập song song, hàng đợi các tiến trình sẵn sàng (ready queue) hoạt động nhờ hệ thống đa vi xử lý, mà hệ thống này đã tạo các tính chất kết nối FIFO: Trường hợp các tác vụ kết nối làm kết thúc Job p trước bắt đầu Job q; sau đó, cái đó hết điều kiện và tác vụ lấy Job q kết thúc trước tác vụ lấy Job p Thuật toán sau đây dẫn tới đệm hình xuyến có chiều dài N trên hình 2.25: Hình 2.25 Các biến toàn cục InSlot và OutSlot biểu thị các rãnh (Slot) đệm hình xuyến, mà đó, Job treo vào, thế, Job cũ có thể lấy Bộ đệm có ba vùng: vùng điền vào, vùng lấy và vùng cố định (fix), vùng cố định không có hoạt động nào Đầu tiên, đệm trống, các biến có giá trị InSlot = OutSlot=0 Tiếp theo, khoảng cố định dịch chuyển cách chậm chạp theo hướng kim đồng hộ đệm hình xuyến, mà đó, các biến InSlot, OutSlot bảo đảm các biến sơ khai add và fetch Vì vấn đề giải phóng đệm cần phải quan tâm đến biến Full:= TRUE đệm trống cần lưu ý biến Empty :=TRUE, đó, vấn đề quản lý hàng đợi trở nên khó khăn Vì thời điểm đầu tiên là việc treo tiến trình vào hàng đợi thì biến InSlot gia tăng, còn thời điểm (60) thứ hai là việc bứt tiến trình khỏi hàng đợi thì biến OutSlot gia tăng, đáng tiếc, điều đó không còn đúng nữa: Thật vậy, ta nhận Full=(InSlot = OutSlot=N) hay Empty=(InSlot = OutSlot=0), vì đó, nó có thể đem lại dãy các khe vừa điền đầy chưa hoàn hảo Từ lý này, trường hợp Full (làm đầy) thì điều kiện đặt InUse = N dò kiểm tra, còn trường hợp Empty (làm vơi) thì điều kiện Fix=0 dò kiểm tra Số lượng các vi xử lý làm việc hàng đợi phân phối nhờ các biến InUse và Fix Hình 2.26 -Mã hình 2.26 có độ tinh vi khác Trong thực tế, không có cờ hiệu nào phù hợp với việc thực thi các tác vụ cờ hiệu đã ví dụ với tác vụ fetch and add; nó dùng để bảo vệ khoảng tới hạn, bảo vệ việc treo vào hay bứt các liệu đệm tổng cộng để đạt lối dẫn vào đã điều khiển Trước bước kiểm tra lần thứ hai quay trở lại với thông báo lỗi cho các trường hợp Full và Empty, cái đó cần thiết các điều nhắc tới ví dụ này Điều có ý nghĩa là, tiến trình gọi phải định: cái gì phải làm các trường hợp miển giảm này Hai cờ hiệu vừa nói trên có thể cùng thực thi nhờ các tác vụ fetch and add và nó là thảo đầu tiên (1983) tác giả A Gottlieb Ngoài ra, tồn chúng còn có ý nghĩa khác Thật vậy, hai tác vụ đầu tiên làm đầy danh sách còn trống, thì đó, vi xử lý thứ hai hoàn thành công việc trước Bấy giờ, tác vụ bứt chuyển mức 1, mà không cần phải ghi nhớ rằng, cái đó không tồn cách hành và các liệu bị báo lỗi sử dụng tiếp tục Do đó, không số lượng các sản sinh (tiến trình treo vào hàng đợi) điều chỉnh, mà với cái đó, vấn đề đệm nhảy (bounded buffer) điều chỉnh Chẳng thế, rãnh riêng lẻ đệm hình xuyến bố trí cho cờ hiệu Do đó, nó dẫn tới kết quả: là treo vào, là bứt thực trên rảnh, hai không đồng thời Việc sử dụng hai cờ hiệu này phải đảm bảo các điều kiện ban đầu InSem[1]:=1 và OutSem :=0, để rảnh trước tiên xảy điền đầy, sau đó xảy bứt ra, nghĩa là có chuyển đổi liên tục 2.3.6 Khoảng tới hạn và việc dò kiểm tra Việc đưa vào các cờ hiệu đã làm giảm nhẹ cách đáng kể việc đồng các tiến trình Cho nên, cách sử dụng các cờ hiệu này không có vấn đề gì Thật vậy, chúng ta thay đổi dãy các tác vụ tới V(mutex); critical duration ; P(mutex); thì đó, kết đảo ngược tới điều mong muốn: Tất thì phép khoảng tới hạn Còn lỗi các tác vụ V(mutex); critical duration ; hay loại bỏ hai tác vụ dẫn tới vấn đề lớn Về cái đó, chương trình con(subtile) đạt thay đổi không đáng kể (61) các chương trình lớn, để sinh các lỗi chẳng mong muốn., mà nó xuất cách phiến diện Việc trao đổi các tác vụ giải pháp vấn đề sản sinh và tiêu dùng biểu thị các hàm đây: + cho sản sinh: P(free), P(mutex), putInBuffer(item), V(mutex), V(belegt) + cho tiêu dùng: P(mutex), P(free), putInBuffer(item), V(mutex), V(belegt) Do đó, người ta đã đề nghị (1972), việc sản sinh và xếp các tác vụ cờ hiệu đúng đã phó mặc cho việc biên dịch , và vì vậy, cấu trúc ngôn ngữ thực cho khoảng tới hạn Cú pháp ngôn ngữ biến nào đó (thí dụ cờ hiệu) kiểu là: region s <tuyên bố> và kết thích hợp cho cái gì đó là: P(s); <statement>; V(s); Nếu có nhiều tiến trình thì chúng dẫm lên khoảng tới hạn với biến s, đó, các cấu đồng ( biên dịch sinh ra) đảm bảo rằng, luôn luôn có tiến trình Nếu có hai tiến trình xảy song song: region s s1 và region s s2 thì chúng sinh dãy có dạng s1, s2…hay s2, s1…, đó, dãy các lệnh s1 và s2 là bất kỳ, đồng thời việc thực thi các lệnh này không pha trộn Nếu người ta còn dẫn thêm điều kiện B, thì nó điều chỉnh lối dẫn vào khoảng tới hạn vậy, có dạng: region s when B <statement> đó, chúng ta nhận khoảng tới hạn có điều kiện (conditional critical region) Sơ đồ khoảng tới hạn có điều kiện cấu trúc này dự đoán rằng, tiến trình sau xác nhận biến s thì có thể dẫm lên khoảng tới hạn, điều kiện B làm đầy Nếu điều đó không xảy ra, thì biến s gởi trở lại và đó tiến trình lại nằm ngủ điều kiện làm đầy Sau đó, tiến trình tiếp tục thử nghiệm để xác nhận s Bản phác thảo còn mở rộng phương pháp hướng đối tượng để bảo vệ các liệu thụ động Do đó, B.Hansen đã đề xướng kiểu liệu trừu tượng (1973), mà nó đã đảm nhận nhiệm vụ: bảo vệ tất các thủ tục có thể nhạy bén từ bên ngoài (gọi là phương pháp kiểu liệu trừu tượng), bảo vệ cách tự động các liệu và các biến cục (được sử dụng) nhờ đồng sơ khai và đảm bảo loại trừ lẫn các tiến trình Các kiểu này gọi là dò kiểm tra Cấu trúc dò kiểm tra (monitor) dẫn với sơ đồ cú pháp sau: MONITOR <name> (*các liệu địa phương và các thủ tục*) PUBLIC (*các thủ tục giao diện theo bên ngoài *) BEGIN (*lấy các giá trị ban đầu*) … (62) ENDMONITOR Việc gọi các thủ tuc bảo vệ và các thủ tục nhạy cảm xảy nhờ việc thử trước các tên thủ tục Thí dụ sản sinh và tiêu dùng: MONITOR TYPE VAR Buffer; Item = ARRAY [1 M] of BYTE; RingBuf: ARRAY [1 N] of Item; InSlot, (*vị trí trống thứ 1*) OutSlot, (*vị trí điền đầy thứ 1*) used: INTEGER; PUBLIC PROCEDURE putInBuffer(item:Item); BEGIN … END putInBuffer; PROCEDURE getFromBuffer(VAR item: Item); BEGIN…END getFromBuffer; BEGIN used :=0; InSlot:=1; OutSlot :=1; ENDMONITOR; Nhu cầu dò kiểm tra trình bày trên hình 2.27 Hình 2.27 Tuy nhiên, việc thảo mã chưa hoàn tất Trong ví dụ hình 2.24, chúng ta nhận thấy rằng, điều cần thiết là phải dự đoán điều kiện chờ đợi phụ ( đây: để điều khiển dòng chảy) khoảng tới hạn Ở dò kiểm tra, điều đó đã thấy trước nhờ các biến chuyên dụng có dạng CONDITION Những tác vụ riêng lẻ đã tiếp nhận các biến này, thì chúng thuộc hai tác vụ sau đây: + signal(s) Nếu tín hiệu s gởi khoảng dò kiểm tra tới tất cả, thì các tác vụ nói trên phải chờ đợi cách độc lập + wait(s) Nếu chờ đợi quá lâu, tín hiệu s gởi đi, sau đó, thực các lệnh Do đó, chúng ta mở rộng việc dò kiểm tra tới các biến điều kiện: VAR free, belegt: CONDITION Những biến điều kiện này cần thiết cho việc điều khiển dòng chảy Cả hai tác vụ truy cập dò kiểm tra bảo vệ có dạng sau: PROCEDURE putInBuffer(item:Item); BEGIN IF used = N THEN wait(free) END; RingBuf[InSlot]:= item; (63) used := used +1; InSlot := (InSlot +1) MOD N; signal (belegt); END putInBuffer; PROCEDURE getFromBuffer(VAR ITEM: Item); BEGIN IF used = THEN wait(belegt) END; item:= RingBuf[OutSlot] used := used -1; OutSlot := (OutSlot +1) MOD N; signal (free); END getFromBuffer; Việc thực thi này giúp chúng ta hồi tưởng lại đoạn chương trình nguyên sơ trình bày hình 2.23 Trong khác biệt với đoạn chương trình này, bây chúng ta đã phòng tránh đọc chọn việc điều khiển dòng chảy với chuyển đổi tương hỗ, đó, không có các điều kiện chạy đua (race condition) có thể thiết lập Việc sử dụng cấu trúc dò kiểm tra hệ điều hành thì chẳng có vấn đề gì Những điểm phê phán thực chất đó là thu xếp không cần thiết và không mong đợi các tiến trình hệ điều hành Với các cấu trúc các tiến trình và các tín hiệu, người ta có thể tránh vấn đề đã nêu lập trình thích ứng Một vấn đề thực tiển đó là: Các tác vụ cờ hiệu có thể mô tả đơn thể bổ sung thư viện người sử dụng (thí dụ với các lệnh máy đặc biệt) và có thể sử dụng cách dễ dàng hầu hết các ngôn ngữ lập trình Đối lập với cái đó, việc biên dịch phải mở rộng khoảng tới hạn và việc dò kiểm tra Thí dụ ngôn ngữ lập trình JAVA: Một ấn quan trọng ngôn ngữ lập trình C và C++ đó là ngôn ngữ lập trình JAVA Những đơn thể ứng dụng (applets) chúng thì tiện lợi: chúng có thể tác dụng đơn thể phần mềm hệ thống nhỏ, chúng có thể thực các chức chuyên dụng phận trang WEB (World- Wide-Web) Thuộc cái đó, mã nguồn (bao gồm mã ký tự, mã biên dịch) nạp trên mạng máy tính, và đó, nó thông dịch trình thông dịch JAVA: nó có thể là phận trình đọc lướt (browser) hay hệ điều hành (như OS/2) Mã JAVA đem lại kết giống trên các hệ máy tính khác nhau, nhờ thế, các tiến trình threads có thể làm việc cách song song Sự phối hợp nhiều tiến trình trọng lượng nhẹ việc truy cập trên đối tượng (64) chung thì đạt với trợ giúp từ khoá synchronized Để làm đồng khoảng tới hạn, cú pháp viết: Synchronized (<expression>) <statement> Một xâu tiến trình có thể thực lệnh (hay dãy lệnh) biểu thị <statement>, trước đó, đối tượng (object) hay trường (fild) biểu thị <expression> đã ghi vào danh sách và đã bảo vệ nhờ cờ hiệu Nếu đối tượng đã ghi vào danh sách rồi, thì đó nó bị hãm, xâu tiến trình khác lại rời khỏi khoảng tới hạn Trong khoảng động bộ, với phương pháp, người ta có thể chờ đợi thêm tín hiệu lệnh wait(), mà nó gởi lệnh notify() 2.3.6 Những vướng mắc Ngay hệ điều hành đã làm đồng hoàn mỹ, thì có thể xuất các tình trạng mà đó, các tiến trình bị ngăn cản hay bị hãm, đó, các chương trình có thể không thực Tại vậy? Chúng ta quan sát tình trạng sau đây: Tiến trình thu lượm các liệu, xếp chúng thành file và chép chúng lên máy in Bây tiến trình thứ bắt đầu, nó cần phải phô bày file đã thu lượm đó Hai phương tiện điều hành là máy in và file phải bảo vệ chuyển đổi tương hỗ, đó, đã tránh trật tự viết và đọc Bấy việc xảy sau: Sau thu lượm liệu, tiến trình ngăn file lại, thể khoảng đánh dấu và nó muốn in khoảng đánh dấu thứ này trước thể khoảng đánh dấu thứ Trong đó, tiến trình thứ đã ngăn cản máy in, nó đã in nhan đề và thỉnh cầu file Vì file này sử dụng ngay, cho nên tiến trình thứ nằm ngủ có cờ hiệu Nhưng tiến trình thứ nằm ngủ thời điểm thử nghiệm để nhằm nhận máy in Bấy giờ, hai tiến trình nằm ngủ mãi mãi: hệ thống các tiến trình, người ta nói đó đã xuất khoá tử (deadlock) Chúng ta có tình khác: Một tiến trình che phủ phương tiện điều hành A (chẳng hạn file) và muốn có phương tiện điều hành B khác (thí dụ máy in), mà phía nó, phương tiện điều hành này bị che phủ tiến trình khác Ngược lại, tiến trình khác này muốn có phương tiện điều hành A Từ thí dụ này, vài tính chất E.G.Coffman đoán (1971): đó là điều kiện cần thiết sau đây: (1) Điều kiện ngăn chặn lẫn (mutual exclusion): Mỗi phương tiện điều hành chứa đựng thì là che phủ lẫn là tự (2) Điều kiện ngăn chặn và chờ đợi(hold and wait): Các tiến trình đã sẵn sàng ngăn chặn phương tiện điều hành, muốn chặn thêm các phương tiện điều hành và chờ đợi chúng tự Và, các phương tiện điều hành cần thiết yêu cầu không phải lần (3) Điều kiện không có ưu tiên trước(no preemption): Những phương tiện điều hành có thể không đơn giản các tiến trình chiếm trở lại, chúng giống (65) việc định thời có ưu tiên trước CPU, các phương tiện điều hành này phải các tiến trình tự đưa trả lại cách rõ ràng (4) Điều kiện chờ đợi luân chuyển (circulare wait): phải tồn chuỗi khép kín gồm hai hay nhiều tiến trình, mà đó, phương tiện điều hành có tiếp theo, thì đã bị tiến trình che phủ, và đó các tiến trình chưa tự Một tình không xảy các phương tiện điều hành máy in, máy quét và các thiết bị ngoại vi, mà các khối logic với các thứ các cờ hiệu…Nếu chúng ta khảo sát thí dụ sản sinh và tiêu dùng hình 2.24: người ta thiết lập biến belegt =0 thực tác vụ và biến free =0 thoát khỏi việc thực tác vụ Bây chúng ta có tình huống: Sản sinh Tiêu dùng … … wait (free) wait(belegt) … … send (belegt) send(free) Cả hai chờ đợi trả lại tự cờ hiệu: nó trả lại tự tiến trình khác đã chiếm chỗ và mong muốn chúng thoả mãn Đối với cách mô tả khoá tử thì có chiến lược hiệu nghiệm sau đây: + Chiến lược bỏ qua khoá tử + Chiến lược nhận dạng và loại bỏ khoá tử + Chiến lược phòng tránh khoá tử + Chiến lược làm khả khoá tử Sau đây chúng ta trình bày chiến lược kể trên Chiến lược bỏ qua khoá tử (bypass deaddlock): Đầu tiên, chiến lược này ra: việc bỏ qua khoá tử thì giống việc tháo gỡ khoá tử, nghĩa là tuyệt đối không tiếp nhận Điều đó có ý nghĩa nhà toán học Nếu chúng ta quan tâm đến kiện, hệ thống lớn xảy nhiều khả biến động, đó chúng ta thấy, biến động ảnh hưởng đến sống và làm cho sống khó khăn Chúng ta bắt đầu các vấn đề phần cứng (thí dụ các chỗ tiếp xúc xấu, các tổn thất chip IC, các dây cáp bị ọp ẹp, độ ổn định lưới điện kém …) các vấn đề phần mềm (thí dụ các lỗi hệ điều hành, các phiên biên dịch quá mới, không rõ cấu hình các phần mềm ứng dụng, việc nhập sai liệu…), đó chúng có thể dẫn tới các trường hợp: hai tiến trình bị mắc kẹt, đời sống thường nhật có thể đó là phân cấp thiếu ý nghĩa, giống việc chất chứa đầy tràn bảng tiến trình hay việc vượt qua giới hạn lớn việc các file cùng mở đồng thời Nhà vật lý phải khảo sát cái đó trước người ta loại bỏ hiệu xấu, kéo dài nó không còn rối loạn nhiều Những người quản lý việc phát triển máy tính (EDV) nhìn thấy cần phòng ngừa các khoá (66) tử trước làm chệch hướng nhiệm vụ quan trọng Do đó, hệ điều hành Unix, không có biện pháp đặc biệt các khoá tử Điều đó thì độc lập với thường xuyên xuất các khoá tử Tuy nhiên, tốt hơn, các khoá tử hệ điều hành phải chạy chữa cách tự động, để việc phòng tránh làm cho tai biến giảm xuống mức thấp Chiến lược nhận dạng và loại bỏ khoá tử: Một chiến lược để chạy chữa các khoá tử thì bao gồm việc kiểm tra các chức hệ điều hành và việc tiến hành thuật toán cho xuất triệu chứng nghi ngờ Thuật toán này nghiên cứu và phát cách hệ thống tình trạng tồn khoá tử Những triệu chừng nghi ngờ có thể là: + Khi nhiều tiến trình chờ đợi và vi xử lý không làm việc (idle task) Khái niệm “rất nhiều” hiểu chính xác đó là giới hạn trên, mà người ta gọi là giá trị ngưỡng cửa + Khi tối thiểu có hai tiến trình phải chờ đợi quá lâu các phương tiện điều hành, đây khái niệm “quá lâu” hiểu là giới hạn trên Tình hình diển biến các tiến trình và các phương tiện điều hành minh hoạ sơ đồ hình 2.28 đây Hình 2.28 -Ở đây, tiến trình vòng tròn (P1,P2…), các phương tiện điều hành hay cá tài nguyên các hình vuông (B1,B2…), còn phân bổ mũi tên Hướng mũi tên tử P-> B có ý nghĩa tiến trình muốn có phương tiện điều hành Hướng mũi tên từ P<- B có ý nói tiến trình có chắn phương tiện điều hành Bốn điều kiện khoá tử nói trên có ý nghĩa sơ đồ cấp phát phương tiện điều hành Trong thí dụ trên, chúng ta nhận thấy có số khoá tử đã tạo thành vòng tuần hoàn, cụ thể là các nút P4,B3,P5 và B4 Điều đó có thể kiểm tra lại các sơ đồ lớn nhờ các thuật toán đồ thị thích hợp R C Holt đã giới thiệu thuật toán (1872) cho trường hợp có nhiều phương tiện điều hành loại vừa lấy thí dụ trên A.V Hebermann đưa thuật toán khác (1969) đơn giản hơn, dùng để kiểm tra lại đã nói Nếu gọi As là số lượng đạt các phương tiện điều hành ứng với kiểu biến s để tạo điều kiện cho các dòng chảy khoá tử tự Chúng ta phải xét xem, liệu tiến trình có tồn tại, nó khỏi phương tiện điều hành Nếu tiến trình tìm thấy, thì nó nhận rằng, nó phải trả lại phương tiện điều hành đã chiếm sau nó kết thúc và số lượng As các phương tiện điều hành gia tăng Khi đó, tiến trình này đánh dấu và giữ chặt (tức là không có khoá tử nào tồn tại), là, còn tồn nhiều tiến trình chưa đánh dấu (tức là chúng bị hãm cách tương hổ với các yêu cầu chúng) Tất nhiên, chúng ta xuất phát từ đó: Tại các phương tiện điều hành (67) chưa che phủ hoàn toàn, tiến trình đã có đủ phương tiện điều hành để sử dụng, và đó, chúng có thể hoàn toàn làm việc mình Chúng ta có thể mô thuật toán cách chính xác các ký hiệu sau: Es: số lượng các phương tiện điều hành tồn kiểu s; thí dụ E2 =5 tức là có phương tiện điều hành tồn kiểu s=2 (chẳng hạn kiểu máy in); Bks: số lượng các phương tiện điều hành tồn kiểu s mà tiến trình thứ k đã chiếm; Cks: số lượng các phương tiện điều hành tồn kiểu s mà tiến trình thứ k yêu cầu thêm Ở đây, chúng ta nhận tổng các ma trận hàng Bks chính là tổng các phương tiện điều hành đã bị che phủ ∑Bks Do đó, số lượng As các phương tiện điều hành còn tự kiểu s là: As = Es - ∑Bks (2.19) k Các bước riêng lẻ thuật toán diễn sau: (0) Xem xét tất các tiến trình chưa đánh dấu; (1) Tìm tiến trình k chưa đánh dấu, mà đó, tất các phương tiện điều hành s phải thoả mãn điều kiện: As >= Cks; (2) Trường hợp tiến trình (1) tồn tại, người ta đánh dấu nó và thiết lập: As := As + Bks (3) Nếu có tiến trình (2) tồn tại, thì STOP Nếu không người ta thực bước (1) và (2) Ở mã giả, thì điều đó thực sau: FOR k:=1 TO N unmark Process(k) END; d:= 0; (*bước 0*) REPEAT k:= satifiedProcess(); (*bước 1*) IF k # THEN d:=d+1; markProcess(k); (*bước 2*) FOR s :=1 TO M DO As := A[s] + B[k,s] END; END; UNTIL k=0; (*bước 3*) IF d < N THEN Error(‘Deadlock exists’) END; Nếu thuật toán dẫn tới kết thúc mà không có thông báo lỗi, đó, điều cần khẳng định rằng, các tình trạng không có lối thoát không thể tồn được; thật vậy, đã nói, sau thử trắc nghiệm, các tình trạng này phát triển Ngược lại, chúng ta nhận thông báo lỗi, thì đó, điều rằng, khoá tử tồn trên thực tế giống việc chúng ta đã đánh dấu tiến trình dãy kết hợp nào đó Cở sở độc lập thực tế dãy đánh dấu là gia tăng liên tục các phương tiện điều hành Thí dụ các khoá tử: (68) Hình 2.29 -Ở đây, Bij và Cij là hai ma trận đã nói trên Chúng có các biến cột là A: dãi băng, B: các thiết bị vẽ, C: các máy in, D: các ổ CD ROM và các biến hàng là các tiến trình P1, P2…P5 Khi ta có E= (6 2) thì hai ma trận Bij và Cij xác định hình 2.29 trên Nếu phân bổ tổng cộng là (5 2) thì đó còn lại A = (1 0) Trong tất các tiến trình có P4 phủ thêm (0 0), công việc nó thực hoàn tất và tổng các phương tiện điều hành giảm xuống còn (1 1 ) Với điều đó, chúng ta nhận A = (2 1 1) Bây giờ, các tiến trình P1 và P5 có thể kết thúc công việc, đó, chúng ta nhận A = (5 2) và cuối cùng, với P2 và P3 thì A = (6 2) Người ta lưu ý rằng, dãy P4, P1 , P5 ,P2 , P3 thì không bị di chuyển cưỡng bức, nó có thể theo P4, P5 , P1 ,P2 , P3 Bây giờ, chúng ta loại bỏ khoá tử xuất nào? Từ thuật toán nói trên, chúng ta nhìn thấy dễ dàng phương tiện điều hành và tiến trình nào bị kẹp chặt Sau đây chúng ta nêu cách thực việc loại bỏ khoá tử sau: Bẻ gãy các tiến trình: Đây là phương pháp đơn giản để mong muốn hay để bẻ gãy tiến trình bị kẹp chặt và sau đó chúng tự xếp trở lại Những tiến trình nào có thể bẻ gãy cách có mục đích thì phải người xác định Thuật toán nói trên dẫn tới trợ giúp, nó cung cấp kết định thời cho các tiến trình đánh dấu Đặt tiến trình trở lại: Ở các hệ thống ngân hàng liệu, từ lý bảo vệ, có hầu hết thời điểm đặn, đó, trạng thái chung hệ thống lưu trữ Bây xuất khoá tử, thì đó, người ta có thể đặt nhiều tiến trình trở lại trên trạng thái, mà đáng lẽ chúng bị bẽ gãy cách không thương tiếc Khi đó, chúng chưa che phủ các phương tiện điều hành và đó việc thực thi tiến trình bị trì hoãn thật lâu các phương tiện điều hành giải phóng khỏi các tiến trình bị khoá tử Chiếm lấy các phương tiện điều hành: Trong trường hợp vậy, thì có thể, tiến trình muốn chiếm lấy phương tiện điều hành, phương tiện điều hành đã bị các tiến trình khác sử dụng Cho đến nó trả tự do, thì tiến trình này có thể thỉnh cầu trở lại và thiết lập trở lại vị trí chương trình bị bẻ gãy Chiến lược này thì không phải luôn luôn có khả năng, thí dụ việc diễn tả file Hay nói cách khác, việc sử dụng giao thức này để giải vấn đề đem lại tiêu phí lớn Yếu điểm các phương pháp vừa trình bày thì đã rõ: Nếu chúng ta bẻ gãy tiến trình cách đơn giản, thì đó dẫn tới các công việc bị tuyệt vọng Ngoài ra, có nhiều vấn đề cần bổ khuyết: tiến trình bị bẻ gãy (69) tiến trình đặt trở lại có thể đã viết các liệu hay đã gởi các thông tin, mà chúng không đón nhận trở lại và các tình trạng này có thể dẫn tới các files bất kiên định Việc lựa chọn tiến trình phù hợp cần thiết uốn nắn theo tiêu chuẩn việc tính toán các hư hỏng thu hẹp Chiến lược phòng tránh khoá tử: Một các chiến lược đơn giản để tránh khỏi khoá tử trình bày sau Khi xuất lỗi: phương tiện điều hành che phủ tiến trình ready(sẵn sàng), thì lỗi này cho người sử dụng và đó yêu cầu người sử dụng tự có phản ứng đúng lỗi đó Ở các máy tính đơn (personalcomputer), với hầu hết trường hợp, người sử dụng có thể nhìn bao quát, chiếm toàn quyền truy cập và đó, thực tránh khỏi các khoá tử cách dễ dàng Ở hệ thống đa người sử dụng (như mạng LAN, mạng WAN… ), thì chiến lược này không thể sử dụng Khi đó, các kỷ thuật viên giàu kinh nghiệm dùng nó với ý tưởng: cần phân biệt các trạng thái bị đe doạ khoá tử và các trạng thái bảo vệ, và phải luôn luôn thu nạp tiến trình che phủ mà hệ thống tạo nó thành các trạng thái bảo vệ Trạng thái bảo vệ là cái gì? Trạng thái bảo vệ là trạng thái mà đó luôn luôn có đường (tức là có chiến lược định thời) cho các Job tồn và kết thúc cách suôn sẻ Ngược lại, trạng thái không bảo vệ là trạng thái mà nó không bị cưỡng dẫn tới có thể dẫn tới các khoá tử Đến đây, chúng ta đã nghiên cứu thuật toán để kiểm tra các trạng thái, nó gọi là thuật toán nhận biết các khoá tử Về điều đó, chúng ta khảo sát yêu cầu phương tiện điều hành các tiến trình thuật toán này với tư cách là yêu cầu tối đa mà tất chúng có thể xuất lần, không bắt buộc Sự đoán các khoá tử thuật toán trắc nghiệm này có ý nghĩa rằng, khoá tử có thể xuất không phải bắt buộc phải xuất Nếu có xuất hiện, thì các phương tiện điều hành còn lại các tiến trình khác yêu cầu cách riêng lẻ và đưa trả lại Trong khác biệt với việc che phủ giai đoạn trước đó, che phủ đưa trở lại và thực lần, đó không có khoá tử xuất Tiếp theo thì đã rõ: Trạng thái bị khoá tử đe doạ, và tất nhiên, đó phương tiện điều hành từ chối tiến trình Trong thí dụ hình 2.29, tiến trình P2 có thể nhận lại máy in, mà in hệ thống không bị khoá tử đe doạ và hệ thống không tử bỏ trạng thái bảo vệ Nếu chúng ta trao cho các tiến trình P5 máy in cuối cùng, thì đó, tiến trình P4 không thể làm việc cách đầy đủ nữa: Hệ thống bị khoá tử đe doạ và quá độ chuyển thành trạng thái không bảo vệ Do đó, khoá tử cuối cùng (được mô tả trên) đã tránh khỏi Bây giờ, hệ thống không bị khoá chặt, mà bị đe doạ: Thí dụ, trước kết thúc, tiến trình P1 trả lại máy in nó (đã chiếm), thì đó, không có mối nguy hiểm nào đe doạ Thuật toán trắc nghiệm E.W Dijkstra đưa đầu tiên (1965) và gọi là thuật toán chủ nhà băng, vì nó phản ảnh quan điểm chủ nhà băng: (70) thử nghiệm với nguồn vốn (tức phương tiện điều hành) hạn hẹp, mà thoả mãn mong muốn vay tín dụng khách hàng Chiến lược chủ nhà băng là: kiểm tra mong muốn vay khách hàng, quan tâm đến mong muốn khách hàng khác khuôn khổ cho vay tín dụng đầy đủ và nhiều nhất, đó, với việc giao trả kết nối, chủ nhà băng đã đáp ứng và thoả mãn mong muốn tiếp nối khách hàng Việc sử dụng thuật toán này để tránh khỏi khoá tử, cần thiết lưu ý vấn đề sau đây: + Ở các ứng dụng, số lượng các phương tiện điều hành cần thiết lớn là chưa rõ + Số lượng các tiến trình hệ thống là động và luôn thay đổi + Số lượng các phương tiện điều hành thì thay đổi tương tự + Thuật toán là lưu trữ cấp tốc và diễn biến cấp tốc Chiến lược làm khả khoá tử: Ý tưởng giao thức chạy chữa khoá tử này là chỗ: bốn điều kiện nói phần đầu mục 2.3.7 thì chưa đủ, mà bốn là điều kiện đủ và cần thiết khoá tử Ở điều kiện thì việc làm khả các khoá tử thực khác (1) Đối với điều kiện ngăn hãm lẫn (matual exclusion): Cuộc tranh giành phương tiện điều hành tạo ra, để người ta chuyển giao nó cho tiến trình có quyền chiếm dụng và để người ta biến đổi các thăm dò phương tiện điều hành này, biến đổi việc dịch vụ tới tiến trình Lấy máy in làm thí dụ: Một tiến trình đặc biệt (gọi là printer demon) nhận máy in cách chắn; còn các tiến trình khác hàng đợi để chuyển giao các liệu cần in cho tiến trình này Tiến trình printer demon đại diện cho các tiến trình thăm dò cuộn các hàng đợi lại (spooling), thật lâu công việc in xong xuôi và sau đó nằm ngủ hàng đợi trống Do đó, đầu tiên khoá tử tránh khỏi Chiến lược này thì không có vấn đề gì: Đối với tiến trình này thì không phải tất các phương tiện điều hành có điều kiện, còn tiến trình khác, thì nó chiếm dụng trước (vì gọi tương hỗ, thì các cờ hiệu luôn luôn sẵn sàng) Ở thí dụ này, chuyển đổi tương hỗ máy in chuyển biến thông qua đệm máy in (printer buffer) nhớ chính, mà nó bày không gian hạn hẹp tương tự phương tiện điều hành Nếu chúng ta có hai tiến trình, mà nhu cầu đệm chúng vượt quá không gian có thể sử dụng, thì đó, đây, vấn đề tương tự lại đặt trước đây Mỗi tiến trình viết liệu nó vào đệm hết không gian Vì công việc in sau thông báo đầy đủ treo vào hàng đợi và hàng đợi nhiệm vụ in trống thì hai tiến trình phải chờ đợi, không (71) gian đệm sử dụng trở lại để kết thúc chuyển giao, tức là chúng bị khoá lại Với lý này, các hệ thống cuộn hàng đợi(spoolingsystem) thường lập trình: file gốc sử dụng để in và trước đó không cần làm Tóm lại, chuyển đổi việc xếp trực tiếp trên hệ thống client- server là có điều kiện sử dụng (2) Đối với điều kiện giữ lại và chờ đợi (holt and wait): Nếu các tiến trình yêu cầu các tài nguyên bổ sung, thì đó, chúng ta phải ngăn ngừa các khoá tử Một khả xảy điều đó là phải thực hiện: tiến trình cung cấp phương tiện điều hành đơn lẻ Nhưng, điều không thể chấp nhận: tức là tiến trình bị cấm, tiến trình này vừa đọc các liệu file và vừa in chúng Một khả khác nói tới: các phương tiện điều hành mà cần thiết cho Job, thì bắt đầu Job, nó lần yêu cầu tới Tuy nhiên, điều này đòi hỏi tiêu phí cho việc lập trình bổ sung thêm, tức là tiêu phí này không phải dành cho Job dành cho phương tiện điều hành, mà đặc biệt cho người lập trình Nhược điểm phương pháp này là chỗ: tất các phương tiện điều hành sử dụng để che phủ suốt thời gian diễn biến Job, và hoàn toàn không có Job khác chiếm dụng Thí dụ, chương trình tính toán cho tiếng đồng hồ và sau đó thực ấn tượng ngắn, chương trình này để ngăn ngừa kéo dại tiếng đồng hồ cho ấn tượng, mà ấn tượng là tính chất không thể chấp nhận phạm vi nhiều người sử dụng (trong mạng máy tính) và nó là khả quá tải phương tiện điều hành Một phương án thú vị khác ra: việc che phủ các phương tiện điều hành bổ sung thì tất các phương tiện điều hành trạng thái sẵn sàng đưa trở lại lần và sau đó, nghi vấn thì tất các phương tiện điều hành yêu cầu để sử dụng cho giai đoạn Nhờ tiếp, nó nâng cao tiêu chí che phủ và ngăn chặn khoá tử (3).Đối với điều kiện không có ưu tiên trước (no preemption): Một chiếm sớm phương tiện điều hành thì không thể đơn giản, vì thay đổi nào đó có thể sẵn sàng thực hiện, thí dụ: viết các liệu hay in vào giấy Một chiếm sớm các phương tiện điệu hành nhờ việc cảnh giới theo thời gian chương trình thực thi, và đó, chương trình này có thể xảy cách tự động và thông suốt (4) Đối với điều kiện chờ đợi luân chuyển (circular wait): Một khả bẻ gãy vòng chờ đợi luẩn quẩn là chỗ: yêu cầu ngăn chặn bước đầu tiên vòng đợi này, đó, cần phải định nghĩa khái niệm bậc tương đối yêu cầu phương tiện điều hành, tức là phải dẫn tới việc tuyến tính hoá các yêu cầu phương tiện điều hành: (72) + Tất các phương tiện điều hành phải đánh số và cho phép tiến trình chiếm dụng phương tiện điều hành có số hiệu cao Nhờ đó, có tiến trình nào đó chờ đợi phương tiện điều hành có số hiệu nhỏ hơn, mà phương tiện điều hành này đã bị tiến trình khác chiếm sớm hơn: cách nguyên tắc, điều đó không thể xảy Bằng chấp nhận này, bây chúng ta khảo sát vòng chờ đợi luẩn quẩn Nếu sơ đồ các phương tiện điều hành, chúng ta mô tả số hiệu ứng với ô chữ nhật biểu thị phương tiện điều hành, chúng ta mô tả số hiệu ứng với ô chữ nhật biểu thị phương tiện điều hành, mà nó diễn biến vòng chờ Ở giới hạn trên thì nó không thể đạt từ phương tiện điều hành giữ chặt này tới phương tiện yêu cầu khác, nó đạt có số hiệu cao Bất kỳ nào, vòng chờ này khoá lại và sau đó, ký hiệu số hiệu nhỏ tiếp diễn là yêu cầu tới ký hiệu số hiệu lớn Nhưng điều đó thì không phù hợp với giả thiết ban đầu Nhờ vậy, không thể có vòng chờ luẩn quẩn nào tạo thành Yếu điểm phương pháp tuyến tính hoá này là chỗ: Không có bậc nào tìm thấy cách dễ dàng cho các ứng dụng Nếu dãy các yêu cầu mong muốn xác định, thì không thể có tiến trình phải yêu cầu các nguồn tài nguyên lần nữa, điều đó cho thấy khả chịu tải tài nguyên đã bị suy giảm + Một khả để đem lại phân bổ các phương tiện điều hành, mà với phân bổ này, các phương tiện điều hành xếp theo cấu trúc bậc và bị các tiến trình chiếm dụng Các tiến trình này thoả mãn các yêu cầu người sử dụng và lưu ý tới tự các khoá tử chỗ mà nhiệm vụ người sử dụng giới hạn theo thời gian Tổng các phương tiện điều hành (thí dụ tất các Files) có thể phân phối và có thể chuyển giao việc quản lý chúng cho các tiến trình Vì điều đó có giá trị các tiến trình con, đó xuất cấu trúc bậc hình cây để biểu diễn che phủ Thí dụ quản lý files: Hình 2.30 -Trên hình 2.30, record sở hữu tiến trình riêng lẻ Các nhiẹm vụ (như viết- đọc) dẫn rộng từ rễ cây tới các tiến trình Cấu trúc cây đảm bảo rằng, dãy để gia tăng các nhiệm vụ thì khắp nơi Nhờ thế, các trạng thái các record tồn cách bền vững 2.4 Trao đổi thông tin tiến trình (process- communication) Một phương tiện quan trọng để kết hợp các hoạt động nhiều tiến trình hệ điều hành và để đạt mục đích công việc chung, đó là (73) trao đổi thông tin Ở các hệ điều hành cổ điển thì điều đó bị lảng quên Ở hệ điều hành Unix thì khác, có chương trình coi là hòn đá tảng, mà với tương tác kết hợp chúng có thể đem lại chương trình Ở các ấn cũ Unix, các phương tiện cho cái đó bị giới hạn Trước hết cấp thiết đã dẫn tới: cần kết hợp các công việc mạng máy tính (tức là bỏ qua giới hạn máy đơn) và cần tạo điều kiện trao đổi với các tiến trình bên ngoài việc dịch vụ hệ điều hành trên máy tính riêng lẻ Do đó phần này, suy nghĩ giới thiệu, ví dụ, chúng kết nối nào mạng máy tính với hệ thống đơn vi xử lý với hệ thống đa vi xử lý Những quan điểm hệ điều hành có tác động mạnh mẽ mạng máy tính trình bày cách kỹ càng chương Việc trao đổi thông tin các tiến trình đã dẫn tới suy nghĩ chắn trình bày sau đây 2.4.1 Trao đổi thông tin Ở trao đổi thông tin, người phân biệt ba kiểu kết nối khác nhau: + Kiểu kết nối unicast: là kiểu kết nối từ tiến trình riêng lẻ này tới tiến trình riêng lẻ khác (tức là diểm nối điểm); + Kiểu kết nối multicast: là kiểu kết nối từ tiến trình này tới nhóm các tiến trình khác; + Kiểu kết nối broadcast: là kiểu kết nối từ tiến trình tới nhiều tiến trình riêng lẻ Các kiểu kết nối này mô tả hình 2.31 đây, với các ký hiệu P1,P2,…, Pk và Pn là các tiến trình riêng lẻ Hình 2.31 -Ở đây, kiểu kết nối thực thi nhờ kiểu kết nối khác Thí dụ, người ta có thể thực kiểu kết nối broadcast hay kiểu multicast nhờ kiểu kết nối unicast hay nhờ kiểu kết nối mà đó, danh sách các người nhận gởi theo địa xác định và danh sách này người nhận sử dụng để tạo lập kết nối Ngược lại, người ta có thể gởi thông tin tới tất các người nhận, mà đây cần người nhận trao thông tin, còn người nhận khác thì nhìn theo hay lờ Vì thế, người ta có thể trao đổi thông tin cách khác Theo cách truyền thống, trao đổi thông tin đặc trưng giống kết nối điện thoại, vì nó gọi là trao đổi thông tin đặc trưng giống kết nối điện thoại, vì nó gọi là trao đổi thông tin kết nối định hướng và trên hình 2.32 sau đây Hình 2.32 (74) Sự tiêu phí cho việc tạo lập và cho việc giữ gìn kết nối (canal) thì 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 và 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ế, nó thì không còn dám rằng, thông tin có thật đã tới chưa (vì truyền đạt và 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 nào đó không có thông tin truyền tới xuất hiện, thì đó, 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, thì đó, người nhận nhận thông tin tương tự Để có thể phân biệt thông tin với thông tin cũ, trường hợp này, các thông tin thực các số hiệu liên tục Một thông tin có thể 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ị là gói thông tin (message header) và nó 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 các thông tin chuyển tới cho ta thấy: thực ra, các thông tin thực cá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 và người nhận, giống việc thông dịch các trường thông tin Đồng thời người ta lưu ý tới các vấn đề quan trọng khác: kiểu liệu (thí dụ kiểu tMsgTyp), dãy các trường thông tin và thông dịch các số liệu (nó thường dẫn tới kiểu INTEGER với đầu tiên là 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 các máy tính (khác kiểu nhau), thì đầu tiên mô tả liệu và sau đó là các liệu gởi Việc quản lý bên ngoài các thông tin có chiều dài khác thì không đơn giản Các gói thông tin luôn luôn có chiều dài giống nhau, chiều dài các liệu truyền đạt trường Data thì cho phép không cần cố định Tại bên người nhận, đầu tiên gói thông tin đọc và tiếp đến phải cấp phát không gian lưu trữ cho các 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, thì là, người gởi bị làm trì hoãn thật lâu, thông báo trả lời xảy (gọi là gởi đồng hay gởi có kìm hãm), (75) là, hệ thống thực đệm lại thông tin (giống hay trực tiếp), hay có thể hệ thống quan tâm đến giao chuyển hợp cảnh và cuối cùng hệ thống người gởi tiếp tục thực việc chuyển gởi mình (tức là 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ì thông tin báo lỗi chuyển trở lại, đệm hệ thống ngoài bị tràn, trường hợp này người gởi phải làm chậm lại Đối với việc nhận hay việc đọc các thông tin (cũng vậy) có ấn có hãm và không có hãm: là người nhận bị làm trễ thông tin bày ra, là 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 thì 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, có thể đó là 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ự các 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 các tiến trình các máy tính, mà danh sách này có thể gởi tới cùng với thông tin Tuy nhiên, kiểu định vị địa thì 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 và chưa biết tên danh định (process-ID) Thí dụ, chương trình muốn gởi các liệu cho máy in để in lên trang giấy Trường hợp không biết tên danh định máy in, có biết máy in tồn tại, thì cách tốt hơn: định nghĩa tên logic người nhận là 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 và 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 có thể mở rộng nguyên tắc việc định vị tên logic và tên phi vật lý này phạm vi trao đổi thông tin trên mạng máy tính Vì thông tin đầy đủ các tiến trình, các máy tính và các công sở không cố định trên máy tính mạng, đó, có máy tính đặc biệt (gọi là name server) chuyên dùng cho việc xếp địa xa, gọi là đị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à với các kiểu kết nối này, nhiều tiến trình và các máy tính có thể thu tóm lại thành các nhóm và có thể định vị tên nhóm chúng (76) Một kiểu định vị đặc biệt khác nữa, đó là việc định vị nhờ địa tên gọi Ở đây, người ta dẫn kiểu tên gọi logic, mà nó phụ thuộc vào điều kiện logic, thí dụ, nó phụ thuộc vào kiểu máy tính hay kiểu CPU, vào nhớ RAM, vào các thiết bị ngoại vi… Người nhận định vị việc chọn đọc theo giao thức IF, kết là WAHR, đó, cảm nhận cách nhạy bén, kết là FALL, thì (người nhận) không có câu hỏi nào và đó thông tin bị thất lạc Điều đó có thể làm tốt hơn, đó là phải phân bổ công việc động và phải sử dụng thiết bị ngoại vi còn 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), vì người nhận chưa đọc thông tin này Những đệm thông tin này có thể 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 các thông tin cho nó Ngay việc quản lý hệ thống bị thay đổi, đáng lẽ phải thực việc xếp tên logic các tiến trình tới các tiến trình vật lý, thì lại thực việc xếp tên logic các đệm tới địa vật lý các đệm Kiểu đệm thông tin có thể cấu tạo là hàng đợi, mà đó, các thông tin treo vào và người nhận đọc Nếu chúng ta thấy trước hàng đợi các tiến trình nhận nhóm tiến trình, thì chúng ta xem xét: trường hợp không có thông tin sử dụng, ví hàng đợi các tiến trình gởi; trường hợp dòng thông tin đã đầy, đó, chúng ta 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 trên các hàng đợi (với các hàm Treo vào (Msg) và Bứt (Msg)) phải bảo vệ nhờ các tác vụ cờ hiệu, đó, cờ hiệu phải nhìn thấy trên hộp thoại Ta thấy biến MsgNumber dịch vụ là đếm để điều khiển dòng chảy khoảng tới hạn hai hàm Treovào(Msg) và 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, thì đó, tiến trình gởi treo vào hàng đợi và nằm ngủ; ngược lại, biến MsgNumber =0 thì đó là trường hợp người nhận Nếu MsgNumber =N thông tin đọc, đó, người nhậ còn phải thực thêm hàm wakeup(SendQueue) để đánh thức cờ hiệu gởi tồn Khi MsgNumber =0 thì cờ hiệu phải đánh thức người nhận nằm chờ (77) Đối với kết hợp các tiến trình gởi và các tiến trình nhận phải đạt mục đích, để tiếp nhận các thủ tục treo vào hay bứt tờ khai hộp thoại và cho phép lối vào hộp thoại qua các tác vụ đã kiểm tra Cấu trúc liệu chung là 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 và che dấu hộp thoại, vậy, chúng ta 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 các tiến trình với các kênh Unix Ở các ấn đầu tiên Unix, trao đổi thông tin các tiến trình đã sử dụng kênh đệm chuyên dụng Trong thí dụ đầu chương 2, chúng ta thấy rằng, nhiều chương trình Unix (ở trường hợp này đó là các tiến trình) có thể 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 các liệu chương trình tới chương trình kế cạnh, mà chế này 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 đó, các tác vụ đọc và viết, dòng lệnh đây có thể 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 chính (ở đây là vỏ hệ thống người sử dụng) mở kênh (pipe) riêng lẻ và truyền tiếp kênh này với văn cảnh tiến trình tiến trình con; các 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 này để đọc Vì nhận biết các files là số (số hiệu) các 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 và tiến trình hệ điều hành Unix tạo thành nhờ các 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 là 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 các 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 thì không định hướng; việc trao đổi thông tin hai tiến trình thì hai pipe sử dụng Bình thường thì 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 nào bày ra; còn không, số lượng các Byte để đọc lưu trữ biến đệm (78) Sự trao đổi thông tin các tiến trình và bỏ qua giới hạn các kiểu máy tính thì khả đầu tiên các ấn Unix, thì chúng bỏ qua pipe, ví bỏ qua cấu trúc socket 2.4.3 Trao đổi thông tin các tiến trình với các kênh Windows NT Ở Windows NT có trao đổi thông tin các tiến trình với các kênh Chúng đạt nhờ gọi hệ thống CreadPipe() Sau đó, người ta có thể nhận hàm WriteFile() và ReadFile() nhờ các tác vụ đọc viết Với hàm gọi CloseHandle() thì chúng kết nối Vì đây, việc chiếm dụng các kênh này (pipes) thì không tồn nhận biết bên ngoài, đó, giống thế, nó bị giới hạn các nhóm tiến trình cha và tiến trình Tuy nhiên, theo đó, trao đổi thông tin tương hỗ luôn luôn có khả năng, pipe là hai hướng Thật vậy, để thay đổi tình trạng có hãm và 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 chúng ta thấy, các cờ hiệu là kiểu động nguyên thuỷ sơ đẳng và các kiểm tra không sử dụng Cả hai vấn đề này 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 đó, chúng ta sử dụng kiểu đồng nguyên thuỷ, mà kiểu đồng này dùng các hệ thống phân bổ Trước hết, điều đó có thể đạt nhờ việc trao đổi thông tin với thông tin ngắn và nhờ chờ đợi việc gởi thông tin Có thể nói cách chính 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 và phần đọc thông tin Ở các thông tin dài, đồng mức không Các hàm send(Message) và receive(Message) thì giống hệt với các tác vụ send(Signal) và waitFor(Signal) các thông tin Chúng ta xuất phát từ hai trường hợp này, các thông tin truyền lưu trữ trung gian và trước đọc không biến Một đồng khiết có thể mở rộng cách dễ dàng tới việc trao đổi các thông tin và ngược lại, trao đổi thông tin dùng để làm đồng khiết Tiếp theo, chúng ta khảo sát đồng tín hiệu Sự đồng tín hiệu: Một các sở quan trọng để nhận thông tin là xuất các biến cố Đó là báo động các lỗi xuất hệ thống (thí dụ lỗi liệu, các địa lưu trữ không rõ ràng…), các cách sửa chữa ngoại lệ (thí dụ chia cho zero…) và các tín hiệu các tiến trình khác Do đó, tiến trình biên nhận có thể là chờ đợi đồng trên biến cố có xuất hiện, là thiết lập việc xử (79) lý các 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 thì đặc biệt hữu ích việc sửa chữa ngoại lệ Bằng các tiến trình riêng biệt, người ta có thể sửa chữa các 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 các 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 và biên soạn các chương trình bên ngoà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 các tín hiệu, mà với nó, tồn biến cố có thể thông báo cho tiến trình Thuộc điều đó, tín hiệu (POSIX) liệt kê đây đị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: không có người nhận tồn liệu pipe segmentation violation: địa nhớ không thể 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ừ các 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ụ này còn có tên kill() Việc sử dụng các tín hiệu nói trên suy cho công việc xác định, để ghi nhận nào đó phạm vi ảnh hưởng chúng Nhưng với các trường hợp này, thủ tục (tự định nghĩa) có thể kết nối khoảng các gọi hệ thống sigaction(), mà thủ tục này 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, các tín hiệu sử dụng để trao đổi thông tin Với các 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, các hệ điều hành khác có các dịch vụ (80) khác nhau, mà đó với hàm logic AND và OR, người ta thiết đặt các điều kiện cho hoạt động tiến trình nhờ các biến cố hay các tín hiệu nói trên 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 có thể trông chờ vào các chương trình tương tác, ví dụ chương trình điều hành các hệ thống cửa sổ, chương trình điều hành các biến cố truy nhập…Vì thế, chúng đạt tới gọi hệ thống, gọi là chờ đợi đa biến cố (wait-multi-event) Chẳng hạn, chúng chờ đời để kích mouse hay ấn nút ký tự ASCII, thì đó, 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 các nút bấm SHIFT và nhấp hai lần mouse đáp ứng 16 tín hiệu Unix có thể sử dụng để tạo lập đồng tiến trình Với trợ giúp các hàm send(Signal) và wait(Signal), các 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 đây cho thấy đồng tiến trình thiết lập trên 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 các tiến trình còn lại để các tác vụ P() và V() trở thành các nhân tử Điều đó có thể đạt được: máy tính MODULA-2, nó có thể thực là nhờ chuyển giao ưu tiên khai đơn thể; còn ngôn ngữ lập trình khác thì nó 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 và khởi xướng nhờ việc gọi thủ tục sau: (81) 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: nó hoạt động các tiến trình trên các vi xử lý giống nhau, mà đó, gia tăng ưu tiên trước có thể loại bỏ ngắt Như vậy, hệ thống đa vi xử lý các 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 các 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, thì điều đó thật khó khăn cho người gởi để quản lý trao đổi thông tin đúng đắn và để đảm bảo sở liệu phù hợp thống cho các thông tin mình Để thu hẹp các chi phí phụ và để đảm bảo đúng mức kết thúc hoàn toàn truy cập ngân hàng liệu, thì đ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 các yêu cầu sau đây: + Thời gian truyền đạt thông tin là có hạn; + Tất người nhận thông tin, không nhận được; + Dãy các thông tin tất người nhận là Dãy thông tin tất người nhận sử dụng là cấu không có hãm thể liệu bền vững Nếu dãy và nội dung thông tin khắp nơi là nhau, đó, các trạng thái liệu biến toàn cục và các files dẫn M Dalcin và R.Brause (1987) nhe ỏ hình 2.35 Hình 2.35 -Người ta nhận thấy rằng, dãy các thời gian 1,4,3 giữ chặt trạng thái các biến toàn cục, vậy, điều đó độc lập với số hiệu các thông tin, tức là thông tin phụ thuộc vào việc đếm người gởi Nếu người gởi là thành viên nhóm, thì tất nhiên, người gởi chuyển thông tin cho chính nó để lưu thông tin liệu nhóm và sau nhận thông tin, người gởi phép thay đổi các biến toàn cục Nếu trước đó, làm điều này, thì cái có thể là: các 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ỗ thì khác với hiệu lực (82) tất các 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ủ các tiến trình khác phương tiện điều hành Do đó, mong muốn các 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 các biến che phủ Phương pháp trên đây sử dụng cho dãy liên kết chặt chẽ các thông tin, không cần đánh số hiển thị toàn các thông tin và loại trừ nhiều vấn đề trao đổi thông tin các nhóm thay đổi cục Đồng các chương trình: Đối với việc gởi và nhận các 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 là điều đó dẫn tới đồng người gởi và người nhận, mà nó mong muốn hệ thống tiến trình vậy, và nó 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 và nó tạo điều kiện để chạy chương trình các tiến trình trao đổi thông tin tất các hệ thống, mà đó, chương trình biên dịch ADA tạo lập Hình 2.36 quá trình đồng Hình 2.36 Một ý tưởng quan trọng khác đó là việc thực song song các chương trình nhờ các tiến trình trao đổi thông tin Nhiều chương trình có thể tạo lập cách đơn giản hơn, có thể mở rộng và chờ đợi niềm nở hơn, người ta diễn đạt trạng thái giống nhiệm vụ, mà nó hoàn tất thực thể chuyên dụng (tách biệt và nhỏ) dùng để trao đổi thông tin với Nếu chúng ta 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 này 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ì thật đơn giản người lập trình để tránh các lỗi và để 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 các tiến trình trao đổi thông tin (communicating sequential process: CSP) Ở các tiến trình CSP có cá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 và người nhận phải chờ đợi việc trao đổi thông tin lẫn Điều này phù hợp với kiểu đồng Rendez-vous-Concept (cùng hẹn chờ), tức là 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, đó (83) data1 và data2 phải cùng kiểu liệu, thí dụ kiểu INTEGER hay kiểu REAL Người gởi và người nhận có cái tên cắt nghĩa rõ ràng chương trình Việc thực song song các chương trình tác dụng với trợ giúp các dấu hiệu sau đây việc lựa chọn các lệnh: B1 → S1 []B2 → S2 … []Bn → Sn Tất các điều kiện Boolean B1 → Bn kiểm tra: Nếu có các điều kiện Bi thoả mãn, thì đó, lệnh tương ứng Si thực Nếu có nhiều điều kiện thoả mãn, thì đó phép chọn số các điều kiện đó Một dấu ngoặc vuông 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 nào thoả mãn Sau đó, tiếp tục việc thực các lệnh chương trình khác Cấu trúc này E.W.Dijktra phát mình để cảnh giới các lệnh, nó đảm bảo phần là 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 có thể bao gồm vài lệnh trên 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 là 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ỳ, còn ký hiệu SEQ để dãy xác định, mà nó xác định việc thực các dòng lệnh Vì có việc nhập vào các điều kiện mới kiểm tra, đó, tín hiệu bổ sung more người sử dụng thì cần thiết để gọi thông tin tiếp từ đệm (84) 2.4.5 Trao đổi thông tin ẩn và Trong thí dụ kiểu sản sinh- sử dụng mục 2.3.5, các 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 này xử lý các liệu vừa chuyển tới Sự chuyển giao thông tin này gọi là trao đổi thông tin ẩn, sử dụng putInBuffer(item); còn gọi là trao đổi thông tin hiển thị sử dụng send(consumer, item) và 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à nó làm đầy nhờ hai tác vụ P() và 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 và bảo vệ nhờ các tác vụ P() và V() Nếu không có item nào sử dụng, thì 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 này có thể thực thi với cấu đồng trao đổi thông tin và hoạt động bỏ qua giới hạn các kiểu máy tính Chúng ta đã tiết kiệm số tác vụ cờ hiệu, mà đây, chúng ta giả thiết mục đích xác định thích hợp các thủ tục trao đổi thông tin send(Msg) và receive(Msg) Cụ thể, điều này thực thi trên hệ thống đơn vi xử lý nhờ các tác vụ cờ hiệu cục Trong trường hợp này, phạm vi đệm là hộp thoại (mainbox), mà đó thông tin treo vào Nói chung, hầu hết các cấu trao đổi thông tin hoạt động các tiến trình với trợ giúp các 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 trên hệ thống đơn vi xử lý, mà hệ phân bổ Ở đây, người ta có thể chuyển đổi cách dễ dàng từ trao đổi thông tin các tiến trình này với trao đổi thông tin các tiến trình khác, vì cùng giao diện, việc thực thi các chức send() và receive() sử dụng là thư viện 2.5 Các bài tập chương 2.5.1.Các bài tập các trạng thái tiến trình Bài tập 2.1 Về các dạng điều hành (operating-typs) Bạn hãy 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 này Bài tập 2.2 Về các tiến trình (85) a) Bạn hãy giải thích khác thực chất các khái niệm chương trình, tiến trình và 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) và các cấu trúc người sử dụng xem xét nào? Bạn hãy kiểm tra các tệp tin /include/sys/proc.h và /include/sys/user.h, đồng thời bạn hãy biểu thị các điền vào đó theo nhận thức mình Bài tập 2.3 Về các 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 và biến cố là gì? c) Bạn hãy thay đổi quá độ trạng thái sơ đồ trạng thái hình 2.2 sơ đồ khác tương tự Bạn hãy lý giải các thay đổi bạn Bài tập 2.4 Về các 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 đó là thủ tục với trợ giúp các gọi hệ thống fork() và waitpid() Bài tập 2.5 Về các tiến trình threads Bạn hãy thực hai thủ tục là cá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 bài 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 và thời gian Job là gì? b) Bạn hãy lý giải khác giải thuật định thời kiểu phản hồi đa mức (multilevel- feedback) và 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ụ cùng 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 và phút; theo đó, chúng có quyền ưu tiên theo thứ tự 3, 5, 2, và 4; đây, số là có quyền ưu tiên cao và số là có quyền ưu tiên thấp Bạn hãy cho biết thời gian thực thi trung bình cho giải thuật định thời đây (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; (86) 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 và nhiệm vụ nhận phần xác định thời gian vi xử lý Đối với các kiểu (b), (c) và (d), bạn thấy đấy, các 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 có thể thay đổi sơ đồ Gantt hình 2.12 nào để thời gian sử dụng là ít hơn? 2.5.1 Các bài tập đồng tiến trình Bài tập 2.9 Cái gì xảy ra, mục 2.3.1, tiến trình A nhận điều khiển và sau bước xảy đổi chiều? Có còn các khả tạo lỗi không? Bài tập 2.10 Về ngăn hãm lẫn Bạn hãy diễn giải các thủ tục: Entering_area(Process: INTEGER) và leaving_area(Process: INTEGER), mà chúng chứa đựng giải pháp Peterson vấn đề ngăn hãm lẫn Cho cái đó, hạn hãy định nghĩa hai biến toàn cục Interesse[1 2] và dran Một khái quát có thể tồn trên n tiến trình không? Nếu có, thì nào? Bài tập 2.11 Về cờ hiệu a) Các tác vụ cờ hiệu P và V diễn đạt nào, s chứa đựng số lượng các tiến trình chờ đợi? b) Giải pháp mô tả quan hệ nhà sản xuất và 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 (87) Việc đồng các phương tiện điều hành theo hình 2.11 dẫn nào 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 các khái niệm khoá tử, ngăn hãm và làm đói các tiến trình là gì? b) Sự khác hai khái niệm chờ đợi tích cực và chờ đợi thụ động là chỗ nào? c) Bạn hãy dẫn ví dụ thực tế khái niệm khoá tử Bài tập 2.14 Về khoá tử và 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 này Quyển sách B sinh viên s2 đã mượn, anh này tìm thấy sách B hướng dẫn nằm sách A; vì thế, thử mượn sách A Tình này cần phải thiết đặt khoá tử,một ngăn hãm hay không có hai? Bạn hãy lý giải ý kiến bạn Bài tập 2.15 Về vấn đề kiểm tra a) Bạn hãy thực thi vấn đề đọc/ viết là giải pháp kiểm tra b) Ưu nhược điểm giải pháp kiểm tra là gì? Bài tập 2.16 Về giải thuật nhà băng(ngân hàng) a) Dãy nào hai dãy là 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ị khoá 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 và n tiến trình; đó tiến trình cần dùng hai ổ đĩa Hỏi n phải bao nhiêu để đả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 và n tiến trình thì số lượng các tác vụ tỷ lệ với biểu thức manb Hỏi a và b bao nhiêu thì đạt yêu cầu? 2.5.4 Các bài tập trao đổi thông tin Bài tập 2.18 (88) a) Bạn hãy mô tả cách chi tiết dòng lệnh sau đây tác động lên cái gì hệ điều hành Unix? grep deb xyz | wc-1 b) Ở Unix, việc trao đổi thông tin bị bó hẹp các thông tin trên 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 hãy trình bày quá độ các trạng thái tiến trình mục 2.1 với trợ giúp các thông tin và các hộp thư Ai gởi cho các 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 hãy quan sát hệ thống tiến trình, hệ thống này trao đổi thông tin kiểu các đườ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 và đường kênh có đúng tiến trình gởi và tiến trình nhận a) Dưới hoàn cảnh nào, tiến trình chen vào để đợi chờ? b) Bạn hãy sơ đồ hoá chế thích hợp để khẳng định hay để phòng tránh các khoá tử (deadlocks) cho hệ thống c) Với hệ thống này có quy tắc để lựa chọn tiến trình là vật hy sinh, khoá tử còn tồn Nếu đúng, bạn hãy thiết lập quy tắc này! (89) CHƯƠNG QUẢN LÝ BỘ NHỚ 3.0 Quan niệm quản lý nhớ Một các phương tiện điều hành quan trọng là nhớ chính Quản lý tài nguyên nhớ là đề hữu ích và cấp bách, nó định khả hữu hệ thống máy tính Theo đó, chúng ta phân biệt ba phạm vi, mà đó, các chiến lược khác sử dụng để quản lý nhớ Các chương trình người sử dụng: Nhiệm vụ chính là bao gồm: việc quản lý cách tối ưu không gian lưu trữ tiến trình xung quanh các yêu cầu lưu trữ đặc biệt chương trình Điều này thực nhờ các phận chương trình (thí dụ điều hành nhớ) hay nhờ các chương trình thu gom rác Bộ nhớ chính: Vấn đề chủ yếu là phân bổ tối ưu không gian nhớ chính trên các tiến trình riêng lẻ Theo nguyên tắc chung, nhiệm vụ trợ giúp nhờ các đơn vị phần cứng chuyên dụng Đặc biệt, hệ thống đa vi xử lý, điều quan trọng là phải tránh các tranh chấp, có nhiều tiến trình cùng muốn chiếm không gian lưu trữ Trong trường hợp này, các kỹ thuật viên giúp đỡ thêm, việc truy cập nhớ không đồng dạng (NUMA), thí dụ chiếm dụng các vi xử lý, nó tách chia trên nhớ cục hay nhớ toàn cục Bộ nhớ quảng đại: Việc tách khỏi quản lý các files có files chuyên dụng, mà với nó, dung lượng file phân chia và quản lý Thí dụ file swap chuyển dịch trên các tiến trình, mà tiến trình này không chiếm nhiều không gian nhớ chính Đầu tiên, chúng ta nghiên cứu kỷ thuật trực tiếp che phủ nhớ, mà nó tìm thấy việc ứng dụng hầu hết các chương trình người sử dụng các hệ điều hành đơn giản 3.1 Che phủ trực tiếp nhớ Trong buổi đầu việc sử dụng máy tính, công việc cụ thể là chế ngự máy tính với nhớ nó cho Job Nhân hệ điều hành thường bao gồm tổng hợp các thủ tục xuất nhập Đó chính là các thủ tục thư viện mà chúng gắn thêm vào Job Nếu người ta phải đặt Job trở lại, để đầu tiên thực Job khác, thì đó, tất các liệu tiến trình di chuyển trên nhớ quảng đại và phép di chuyển các liệu tiến trình từ nhớ quảng đại tới nhớ chính Tuy nhiên, việc di dịch vào này (swapping) cần phải có thời gian Nếu chúng ta chấp nhận thời gian truy cập trung bình ổ đĩa cứng khoảng 10ms và các liệu chuyển thẳng trực tiếp (DMA-Tranfer) với tỷ lệ vận chuyển khoảng 500kByte/s, đó, chúng ta cần 110 ms cho chương trình có dung lượng 50kB để viết chương trình lên đĩa và cùng thời gian đó để lấy chương trình tương tự từ ổ đĩa, và vậy, hợp lại thành 220ms trôi qua cho công việc bình thường Việc di chuyển tráo đổi này đã hạn chế đổi chiều các tiến trình mạnh Từ sở này, điều cần thiết là, phải bảo vệ các liệu nhiều tiến trình tồn đồng thời nhớ, tức là, nhớ phải tồn cách đầy đủ Tuy nhiên, nó (90) dẫn tới vấn đề, người ta phải phân chia nhớ nào đó, để nhiều tiến trình có điều kiện nhận chỗ (?) Câu hỏi này đặt không nhớ chính, mà tất nhiên không gian lưu trữ ổ đĩa cứng, nó còn gọi là không gian tráo đổi (swap space) 3.1.1 Sắp xếp các bảng cố định Cách tốt là, từ hình ảnh thu nhỏ nhớ, người ta tạo lập thành bảng che phủ nhớ Mỗi đơn vị bảng (thí dụ Bit) xếp cho đơn vị lớn (thí dụ từ 32bit) Nếu từ bị che phủ, thì đó, Bit đạt giá trị hay Hình 3.1 xếp Khi đơn vị nhớ chọn đoạn lơn (thí dụ 4kB), đó, việc xếp các khối liệu A,B,C (là chương trình) các phương tiện điều hành quản lý Một bảng che phủ tự dùng 100 kByte nhớ 3,2 MByte Nếu không gian trống bị che phủ, đó, bảng tổng hợp tìm kiếm trên số lượng phù hợp các số Hình 3.1 3.1.2 Sắp xếp danh sách cụ thể Thực chất không gian trống không gian đã bị che phủ thì dài mô tả chúng đã nói trên Điều đó thì có lợi: đáng lẽ bảng cố định thì phải làm danh sách điền đầy việc che phủ nhớ, đây, chúng liên kết với dãy các địa nhớ (nhờ thị) Do đó, thí dụ minh họa hình 3.1 làm sáng tỏ thêm hình 3.2 đây Hình 3.2 Việc điền vào danh sách bao gồm ba phần: địa bắt đầu nhớ, độ dài và số (dấu hiệu dẫn) cho việc điền thêm Một danh sách che phủ phân thành danh sách: danh sách cho khoảng bị che phủ mà việc điền vào nó khai báo nhờ khối điều khiển tiến trình PCB và danh sách dành cho khoảng chưa che phủ Nếu chúng ta xếp danh sách này theo độ lớn khoảng trống thì đó, cách bình thường, danh sách đầy đủ không cần phải tìm kiếm Tuy nhiên, qua đó, hoà hợp khoảng trống và khoảng giới hạn bị gây trở ngại Việc khai báo hai lần tạo khả tìm kiếm danh sách theo hai hướng Thí dụ quản lý theo xấp (heap management): Việc quản lý nhớ cách dựa vào danh sách là thí dụ có ý nghĩa cho việc quản lý nhớ theo xấp; xấp chương trình người sử dụng quản lý Thí dụ máy tính MODULA-2, điều đó có ý nghĩa để mô tả việc thực thi các thủ tục ALLOCATE()vàDEALLOCATE().Qua việc ghi tên loại, không gian trống quản lý, (91) mà nó kết nối với thành danh sách liên tục và nó dẫn vào nhờ móc treo hay nhờ thị có tên rootPtr: TYPE EntryPtr = POINTER TO EntryHead; EntryHead = RECORD next : EntryPtr; size : CARDINAL; END; VAR rootPtr : EntryPtr; nextStart : EntryPtr; FirstFree, NoOfEntryHeads : CARDINAL; Đầu tiên, không gian trống viết đè lên mục nhập (Entry) Một không gian trống danh sách thì không thể nhỏ chiều dài TSIZE (EntryHead) mục nhập Nếu không gian trống ghi, đó, mục nhập có dạng EntryHead thiết lập và treo vào danh sách trống;nếu không gian trống quá nhỏ, đó, nó bỏ qua Một cách đơn giản và nhanh để dẫn tới danh sách riêng lẻ, đó là danh sách các không gian trống Tuy vậy, nó thì bảo đảm để dẫn tới danh sách che phủ, để có thể kiểm tra tình trạng và độ lớn không gian việc trả lại từ không gian đã bị che phủ và nhờ vậy, để làm sang tỏ việc lập trình thiếu hụt chương trình người sử dụng Đặc biệt giai đoạn gỡ rối, điều đó thì có lợi; sau đó, kiểm tra có thể ngắt khỏi tối ưu thời gian thực các giai đoạn muộn 3.1.3 Các chiến lược che phủ Một cách độc lập với cấu danh sách che phủ nhớ, có chiến lược khác để lựa chọn cách thích hợp từ vùng nhớ chưa bị che phủ Mục đích các chiến lược là chỗ: phải giữ cho vùng trống dù nhỏ, nó có ý nghĩa lớn Sau đây là chiến lược quan trọng: FirstFit (đầu tiên vừa đủ): Trước hết, vùng trống nhớ phải đủ lớn để phù hợp cho việc che phủ Tức là, còn lại phần thừa chưa bị che phủ NextFit (kế cạnh vừa đủ): Chiến lược FirstFit dẫn tới khoảng trống đầu tiên còn thừa lại phần nhỏ, phần còn lại này luôn luôn tìm kiếm trở lại Để loại bỏ điều này, người ta xuất phát giống chiến lược FirstFit, lần kế tiếp, việc tìm kiếm tiếp tục vị trí và đó, người ta ngừng lại BestFit (vừa đủ nhất): Danh sách toàn thể bảng che phủ tìm kiếm, người ta tìm thấy khoảng thích hợp, mà lập tức, nó đủ để tiếp nhận khoảng che phủ WorstFit (đáng vừa đủ): Nếu khoảng trống tồn là khoảng lớn tìm thấy, thì đó, phần còn lại là có khả và đủ lớn QuickFit (vừa đủ để thoát khỏi): (92) Đối với loại che phủ, danh sách đặc biệt nói tới Điều đó cho phép để tìm thấy chỗ trống thích hợp cách nhanh Nếu hệ thống thông tin có độ dại 1kB gởi cách đặn, đó, nó thì có lợi, để dẫn tới danh sách đầy đủ cho việc che phủ 1kB và để hài lòng đạt thăm dò cách nhanh chóng và không có pha trộn Buddy-systems (những hệ thống thân hữu): Bây giờ, người ta có thể mở rộng các quan điểm chiến lược QuickFit, độ lớn bị che phủ, tốt nhất, nhớ dự đoán là danh sách gồm độ lớn là luỹ thừa số và nó trao cho khoảng nhớ độ lớn cố định Tất các yêu cầu phải thiết lập trên luỹ thừa số Nếu có không gian nhớ dài 280 Bytes, tạm diễn giải: 280 Bytes = 256 + 16 + = 28 + 24 + 23 thì nó phải tạo lập trên không gian nhớ 512 = 29 Nếu không có khoảng nhớ trống nào độ lớn 2k tồn tại, đó, đoạn nhớ có độ lớn 2k-1 phải phân thành hai đoạn Cả hai đoạn là đối tác thân hữu, biểu thị cách chính xác: địa bắt đầu chúng thì giống hệt kBit địa chúng Thí dụ …XYZ0000… và XYZ1000 là các địa bắt đầu đối tác Điều đó sử dụng để kiểm tra (từng bước) nhanh, liệu khoảng nhớ có trở nên trống có đối tác bảng che phủ, mà với bảng này, nó có thể làm lan với khoảng lớn gấp đôi Cả hai quá trình, vừa thực việc tìm kiếm khoảng trống thích hợp (cũng tựa việc bẻ gãy riêng lẻ cần thiết đại lượng lớn hơn), thì phải vừa thực việc kết hợp chúng lại thành đại lượng lớn hơn, để đạt cách quy nạp nhiều đối tác (nhiều luỹ thừa số 2) Đánh giá chiến lược Sự mô hình hoá so sánh các chiến lược khác dẫn tới đánh giá chi ly Điều đã nhận rằng, chiến lược FirstFit sử dụng không gian thì tốt các chiến lược NextFit và WorstFit, và cách ngẫu nhiên nào đó có thể tốt chiến lược BestFit, vậy, điều đó còn hướng tới để lại phần nhở chưa bị che phủ Một xếp các nhân tử danh sách theo độ lớn các dải làm giảm thời gian thực các chiến lược BestFit và WorstFit Nếu chúng ta biết nhiều phân bổ các yêu cầu nhớ theo thời gian hay theo độ lớn che phủ, đó, chiến lược QuickFit hay các thuật toán đặc biệt khác có thể đạt các kết cao Khả hữu hiệu hệ thống đối tác thân hữu đánh giá cách ngắn gọn có tính toán sau: Nếu chúng ta chấp nhận rằng, tất các luỹ thừa 2n có độ lớn các khoảng là s, chúng kéo dài với xác xuất 1/2n (tức là có cái gì đó xảy không chắn, mà, người ta có thể đoán với chập nhận thuyết phục) Do đó, yêu cầu nhớ Sa phải đạt tối thiểu: Công thức - (93) m Vì: i i 1 m(m 1) Đối với che phủ thực tế, nó phải thiết lập luỹ thừa số 2, nghĩa là, đáng lẽ che phủ có dạng: 1,2,3,4,5,6,7,8, , 2n Chúng ta sử dụng 1,2,4,4,8,8,8,8, 2n , , 2n Hay 0,21,22,22, 23,23,23,23 2n, ,2n Hay ta nhân tích: 21 nhân với 22 nhân với 2n-1 Vì vậy, che phủ trên thực tế là 2i nhân với 2i+1 Do đó che phủ thực tế trung bình Sb tính: công thức Với điều đó, tỷ lệ tương quan các giá trị trung bình Sa và Sb xác định: Công thức -Kết tính toán đoán chúng ta cho thấy: Một phần tư không gian nhớ kéo dài chưa sử dụng Qua đó, hệ thống đối tác đặc trưng cho phương pháp che phủ; nhiên, phương pháp thì có nhanh, không hiệu Nguyên nhân là chỗ phân đoạn thô việc tăng gấp đôi không gian nhớ Nếu người sửa chữa điều đó, thì đó, hệ số sử dụng nhớ nâng cao, tất nhiên, việc quản lý trở nên phức tạp Việc phân mảnh và mẫu cắt: Tuy rằng, nói chung, danh sách che phủ tạo lập nên xếp tốt đáp ứng mong muốn che phủ tới các khoảng trống nhớ, thì mặc dù, phương pháp che phủ nhớ trực tiếp có khuynh hướng tới việc chia nhỏ nhớ thành nhiều khoảng nhỏ chưa bị che phủ Điều đó xảy cách độc lập, liệu nó có đặt sở cho việc che phủ nhớ mẫu cắt hay đặt sở để phân chia nhớ (đối với chương trình tổng thể nhớ chính) các khoảng trống nằm các chương trình và mẫu cắt bên ngoài Từ lý này, việc làm chảy các khoảng trống là các chức việc quản lý nhớ Đối với vấn đề phân bổ nhớ cho việc nạp các tiến trình các nhớ quảng đại, có nhiều chiến lược Nếu đầu tiên chúng ta che phủ nhớ với các tiến trình lớn để sử dụng các tiến trình nhỏ làm đầy các chỗ trống, thì đó, điều này tổng hợp chiến lược định thời, mà nó có ý nghĩa đối lập với chiến lược định thời Job ngắn nhất- trước và nó đảm bảo thời gian làm việc lâu bền cách đặc biệt Khác biệt với cái đó, người ta có thể đạt định thời độ lớn tiến trình, đó, người ta phân đoạn nhớ tổng cộng thành số lượng cố đinh các khoảng chia có độ lớn khác Mỗi độ lớn khoảng chia chứa đựng hang đợi riên lẻ, đó, các bảng xếp nhớ thì cố định và phân mảnh không xuất Thí dụ, giải pháp đã tồn hệ điều hành IBM (đa lập trình với cố định các số Job): OS/ MFT hệ điều hành OS/360, đó là hệ thống máy tính lớn Dĩ nhiên, hệ (94) thống cố đinh không thay đổi mang lại cho nó khả tải tồi các phương tiện điều hành 3.2 Định vị logic và nhớ ảo Vì lý quản lý nhớ, để loại bỏ việc phải sử dụng xấu nhớ, thì đã có nỗ lực khác để tìm thấy giải pháp cho vấn đề này 3.2.1 Những vấn đề nhớ và các giải pháp Một giải pháp vấn đề phân bổ nhớ thì bao gồm việc làm gọn nhẹ nhớ trống nhờ ghép làm đầy đủ các khoảng trống Tuy nhiên, giải pháp này tiện dụng và kéo dài thời gian sử dụng thực tế phần cứng Sự xử lý các mã chương trình: Cho đến đây, còn số vấn đề chưa diễn giải cách đầy đủ Đó là vấn đề: Định vị tuyệt đối Ở việc kết nối các phần chương trình dịch, nhà tạo lập đã phân bổ cho các lệnh nhảy và các biến tham chiếu địa nhớ tuyệt đối rõ ràng, mà đó, địa sở chương trình đếm tăng dần, thí dụ giá trị Nếu bây người ta muốn sử dụng chương trình khoảng nhớ khác với các địa khác, địa đó đã kết nối,thì đó, các địa tham chiếu phải xử lý trước đó Về điều đó, dẫn tới giải pháp khác nhau: Mã chương trình đã tạo lập cần thiết phải chứa đựng các địa tương đối, thí dụ: Địa = Địa tuyệt đối - Số đếm chương trình máy tính PC Điều này thì không phải luôn luôn có thể các kiểu vi xử lý và các lệnh, mà nó kéo dài địa số hoacj khoảng thời gian thực thi Ở chương trình, trao đổi thông tin lưu trữ trên ổ đĩa Khi nạp nhớ chính, địa tham chiếu phải trù tính lần và sau đó phải ghi chép vị trí thích hợp Điều đó đòi hỏi không gian nhớ tăng gấp đôi trên nhớ quảng đại và việc tráo đổi nhớ, thì điều đó không thích hợp Ở các máy tính nhỏ, thì điều đó là thực thi Ở ghi phần cứng chuyên dụng CPU, trao đổi thông tin tồn với tư cách là địa sở và sử dụng truy cập Để giải vấn đề chi phí gia tăng, bây giải pháp các vấn đề khác, nó phải mở rộng trên bình diện Che phủ bổ sung nhớ: Một thí dụ cho thấy, yêu cầu tiến trình phải giải bày nào, tiến trình này đã nhớ chính nó sử dụng nhớ bổ sung (?) Cho điều này có giải pháp sau: (95) Tiến trình đặt tĩnh tại, dung lượng nó ghi chép và nó nạp lưu trữ Ở lần kế tiếp, nó xếp vào hàng đợi, đó, người ta quan tâm độ lớn này và tạo cho nó không gian để thoả mãn các yêu cầu bổ sung Chiến lược này dùng hệ điều hành Unix với các ấn cũ Các khoảng trống (phần cắt để bên ngoài) các tiến trình nhớ chính cắt nhỏ cho tiến trình Do đó, không gian trống điền đầy từ (với các địa nhỏ) nhờ việc mở rộng các ngăn xếp và lên trên nhờ việc mở rộng xấp(heap) Bảo vệ nhớ: Vấn đề là chỗ, phần xác định nhân hệ điều hành phải lưu trữ bền vững trên không gian nhớ hay các đệm hệ thống Phần này không có thể bị phóng thích, mà còn có thể bị sử dụng cách nhầm lẫn các chương trình người sử dụng Do đó, các hệ điều hành, các địa nhớ chuyên dụng (fences, limits) đã quan tâm phòng ngừa, cấm không vi phạm Nếu vi xử lý có ghi lưu ý điều đó, tức là, việc định vị, điều đó quan tâm, đó các giới hạn không cố định vào các địa logic Đối với các vấn đề đã đề cập, dẫn tới hiểu biết quan trọng: người lập trình để thực việc định vị trên máy tính; các chương trình để đạt chờ đợi thông suốt Do vậy, tổng chi phí cho việc định vị trên máy tính thì cần phải giảm thiểu cách có lợi đáng kể cho kiểu định vị trên nhớ vừa đơn giản vừa rõ ràng, đó là kiểu định vị trên nhớ ảo 3.2.2 Bộ nhớ ảo Hình ảnh mong muốn người lập trình là nhớ (memory), nó bắt đầu với địa không (zero) và tiếp tục vô tận Nhưng đáng tiếc, thực tế thì không vậy: hầu hết, hệ thống ngắt và hệ điều hành bố trí vài phần các khoảng dải nhớ Các khoảng nhớ này thì không liên tục, vì chương trình khác tồn nhớ, tức là, chương trình này thì yêu cầu, thì trả lại không gian nhớ động này Cuối cùng việc này còn có vai trò, nhớ chính thì giá thành cao, lại không thể đáp ứng việc dịch vụ đồng thời nhiều chương trình Từ lý này, phác thảo nhớ ảo phát triển, đó, mong muốn người lập trình ưu tiên việc nhượng mục đích cho hệ thống nhờ vi xử lý phần cứng hay hệ điều hành Trong hầu hết hệ điều hành ngày có hai khả dịch vụ, mà với việc quản lý nhớ, nó phải giữ vững phần cứng và hệ điều hành Nhiều mảnh nhỏ (của khoảng dải nhớ) phải trình bày chương trình, mà liệu chúng xuất phát từ khoảng liên tục bắt đầu với giá trị không (?) Nếu chương trình yêu cầu nhiều nhớ tồn tại, thì đó, nó không phải là chương trình đầy đủ, đặc biệt chúng tráo đổi khoảng dải nhớ không hoạt động trên nhớ thứ cấp (bộ nhớ quảng đại, chẳng hạn đĩa từ tính) và sử dụng các dải nhớ trở nên trống (96) Hình 3.3 cho thấy: bên trái là dải nhớ ảo (được mong muốn), dải này phản ảnh quản lý nhớ chương trình, và bên phải là nhớ vật lý thực Hình 3.3 Để tạo nên địa vật lý hay địa logic, nhiệm vụ đặt là phải tiến hành và thực chạy chương trình tham chiếu nhớ đơn vị phần cứng (thí dụ khối quản lý nhớ MMU: Memory Management Unit) Trong nhiều vi xử lý đại, thí dụ các máy tính MC68040 hảng MOTOROLA, các máy tính Pentium Procesor hảng Intel, thì MMU chứa đựng trên vĩ mạch vi xử lý (processor- chip) Bây có cấu nào cho hình ảnh mong muốn nhớ ảo trên nhớ tồn thực (?) Điều đó nghiên cứu mục đây 3.3 Quản lý trang Một các cấu đơn giản để thực thi không gian địa ảo thì bao gồm việc phân đoạn nhớ thành đơn vị có độ lớn nhau: đơn vị tách chia này gọi là trang (pages) Các độ lớn trang tiện dụng thì khoảng 1kB, 4kB hay 8kB Địa và trạng thái trang dẫn tới bảng trang (pape table), bảng này tồn cho chương trình nhớ chính 3.3.1 Nguyên tắc hoán vị địa chỉ: Để tính toán địa ảo (được sử dụng chương trình) trên địa vật lý thực nhớ chính, địa ảo chia làm hai phần (xem hình 3.4) Phần chứa đựng các Bit ít ý nghĩa (Least Significant Bits: LSB) gọi là độ dịch vị và nó cho thấy khoảng cách tương đối địa hành tới địa sở Người ta nhận giá trị địa sở, mà đó, phần thứ hai (bên trái hình 3.4) với các Bit có giá trị cao sử dụng với tư cách số (trong thí dụ là số 6), nó biểu thị cho việc ghi vào bảng kê các trang Việc ghi vào này chứa đựng địa sở (được tìm thấy) Người ta nhận địa vật lý đầy đủ qua kết nối địa sở với độ lệch offset Hình 3.4 Hình 3.4 cho thấy quá trình chuyển đổi này mô tả thành hai giai đoạn, đó, tiến trình, các bảng trang khác sử dụng Do đó, giới hạn số trang PageNr và độ lệch offset thì khoảng các số nhị phân địa ảo, nó phụ thuộc vào phần cứng sử dụng Người ta lưu ý rằng, nhớ (tồn thực ) có thể phân thành các trang (gọi là phân đoạn nhớ: memory - partition), mà đây, vị trí và độ lớn hữu hiệu trang ảo nhờ cấu định vị thì độc lập với phân chia đó Khoảng phân đoạn nhớ vật lý biểu thi là khung trang (pape frame) Để thực việc chuyển nhanh có thể, hầu hết, địa định rõ tiến trình bảng trang giữ ghi chuyên dụng; tiến trình tổng hợp tồn khối điều khiển nhớ MMU Đối với việc nạp và điền thêm trang, hệ điều (97) hành có hiệu lực mức độ cao Nếu Bit trạng thái trang rằng, không gian nhớ, đầu tiên trang phải chuyển vào nhớ quảng đại, đó, khối điều khiển nhớ MMU phát sinh tín hiệu lỗi trang (pape fault) có hình dạng ngắt chương trình (program interrupt) Ngắt này hệ điều hành quan tâm, cụ thể: lập thức ngắt (interrupt-routine), hệ điều hành chọn trang ít sử dụng, trang này viết trở lại vào ổ đĩa Cho điều đó, trang đã dùng để viết vào và bảng sửa chữa cho phù hợp Tiếp theo, sau nhảy trở lại vào ngắt, lệnh máy nhắc lại với hoán vị địa mà trước đó còn thiếu và sau đó chương trình thực tiếp tục 3.3.2 Phương pháp dịch vị địa Cho đến nay, chúng ta đã lưu ý đến trường hợp ,một địa không gian địa ảo theo cách trực tiếp trên địa giao dịch không gian vật lý Điều đó thì không phải luôn luôn có thể Nếu chúng ta nhận thấy rằng, trang, điền vào bảng trang (page-table) thì cần thiết, đó, nó dẫn tới số lượng các địa điền đầy sau: giả sử bề rộng từ là 16bit và độ lớn trang là 12 bit, thì đó 16-12 =4, tức là ta có 24 =16 lần điền địa vào khác Một bảng thì thật dễ dàng để lưu trữ và điều khiển Và đó, các máy tính bảng Digital, bảng này đã phổ dụng cách rộng rãi Bấy từ có bề rộng 32 Bit (word-wide) thì điều đã trở nên vô cùng khó khăn, lấy bề rộng từ 20Bit đã tương ứng với 220 ~ 106, tức là có tới triệu lần điền địa Ở cấu trúc có bề rộng từ 64Bit, lấy bề rộng từ 52 Bit thì đã phải cần tới 252 ~ 4.1015 lần điền trang! Ở đây vấn đề nêu lên rằng, không gian địa ảo, biểu lộ nhớ vật lý cần thiết phải thực hiện; nhiên, không phải hoàn toàn nhớ nào cho các địa ảo phần lớn Sự tiến thoái lưỡng nan này có thể giải trên các phương pháp khác Việc giới hạn địa chỉ: Ý tưởng đầu tiên mà người ta đưa tới giải pháp cho vấn đề này là chỗ làm giới hạn không gian nhớ ảo trên độ lớn có lợi Thí dụ, chúng ta giới hạn không gian địa 30 Bit, thì cái gì đó phù hợp với nhớ ảo khoảng 1GB trên tiến trình, đó, chúng ta cần dùng 4kB tương ứng 12 Bit cho phân đoạn trang, trang tương ứng khoảng chừng 256 ngàn lần ghi vào cho tiến trình, cái gì đó nằm khoảng có thể Tuy nhiên, độ lớn còn phụ thuộc vào độ lớn thực tiến trình Đối với hầu hết các tiến trình, nó thì quá lớn; không gian bảng không thể đem dùng: tiến trình có độ lớn khoảng 1GB thì bảng trang có độ lớn 1MB có thể đo đạc không đủ cho tiến trình nhỏ với độ lớn 50kB Đối với biên dịch (compiler) thì việc giới hạn địa không có lợi Đối với phát triển các ngăn xếp (stacks) thì có lợi để các ngăn xếp mở rộng từ các địa cao tới các địa thấp và để phòng ngừa chỗ trống lớn ngăn xếp và các địa thấp thiết lập Các bảng đa mức: (98) Từ lý vừa nêu, có điều kiện khác thực Một các ý tưởng quan trọng thực để giữ thông tin không bị chia cắt Vấn đề đặt là: liệu thông tin nói chung có sử dụng khoảng nhớ không (?), hay địa thông tin có bị biến đổi khoảng nhớ nào đó không (?) Do đó, địa tổng hợp phân đoạn thành nhiều phần thí dụ đây Thí dụ phân đoạn địa chỉ: Nếu ta có bề rộng từ 32 Bit, độ lớn trang 8kB tương ứng 13 Bit thì phân đoạn trên hình 3.5 đây Hình 3.5 -Bề rộng từ (wordwide) 32 Bit phân thành 14 Bit cho chưa sử dụng, Bit cho bảng 1(Tab1), Bit cho bảng (Tab2) và 13 Bit cho dịch vị offset Nếu có địa 4148810~1210248 thì người ta phân thành số Index =1 cho bảng 1, số Index =1 cho bảng và độ dịch vị offset = 528 Mỗi thành phần địa nhận bảng riêng lẻ, mà đó, bảng các địa cao (pape base table) lưu ý, liệu địa ảo này nhớ có tồn không (?), có, thì bảng trang việc che phủ đặt đâu (?) Ở hình 3.6, điều đó bảng hai bậc địa phân đoạn, mà đó, tìm kiếm ám bảng với các mũi tên đậm Mỗi phần địa tác dụng là số bảng nào đó, mà chúng ám mũi tên nét đứt đoạn; độ dịch vị offset là số trên trang tồn thực nhớ chính Vì địa có thể thuộc trang, mà nó không nhớ chính, thì đó, địa bảng đầu tiên có thể thuộc trang, mà nó không nhớ chính, thì đó, địa bảng đầu tiên có thể dẫn tới trang lỗi Trong trường hợp này, trang nạp và chứa đựng bảng mong muốn, và sau đó, nó nhắc lại lệnh cách mẻ, trang ảo thực thụ xác định, nó tồn nhớ, địa vật lý xác định, các tế bào nhớ nhạy đáp Hình 2.6 Tương tự, điều kiện có thể tồn loại bảng trang hai bậc (như các máy tính SPARC hảng SUN) và loại bảng bậc (như các máy tính MC68038 hảng MOTOROLA), mà đó, để tìm kiếm địa chỉ, trợ giúp phần cứng kéo dài lâu, và đó, việc thực chương trình bị trì hoãn mạnh, thí dụ máy tính MC68030 khoảng 80% Bảng trang đảo ngược: Điều này dẫn tới điều thực nghiệm khác nhau, để rút ngắn việc tìm kiếm lâu nhờ các bảng chưa sử dụng Con đường dẫn tới là, để thiết lập bảng với tương đối ít các trang nhớ tồn thực nhớ vật lý Đáng lẽ với tư cách là chìa khoá để viết tất địa ảo trên trang bên phải, đó, người ta đã trao đổi bên phải thành trang bên trái và lập danh sách theo dãy tăng dần từ bên trái với các trang tồn đến bên phải với các trang có địa ảo đã xếp, gọi là bảng trang đảo ngược (inverse page table) Để thay đổi (99) việc định vị với bảng đảo ngược và rút ngắn bớt, người ta phải tìm kiếm tất các địa ảo bên phải, khi, người ta tìm thấy trang hành phù hợp, và sau đó, đọc số trang vật lý bên trái Hình 3.7 là đảo ngược thí dụ đơn giản hai tiến trình với các bảng riêng lẻ Chúng ta thấy nào, địa ảo không đạt mình, vì không gian địa thì thí dụ trang ảo – Tuy nhiên, để có thể xếp các địa ảo giống cách rõ ràng cho các trang khác nhớ chính, gọi là các khung trang thì số tiến trình phải lấy thêm số tiến trình Kho chứa các bảng liên kết Ở các bảng đa mức các bảng trang đảo ngược, vấn đề đặt là: việc đánh giá thông tin các bảng để chuyển đổi địa thì tiêu tốn bao nhiêu thời gian (?) Từ lý này, nó trở nên tiện dụng, các việc xếp cuối cùng từ các trang ảo sang các trang thực lưu trữ nhớ nhanh, còn gọi là nhớ truy cập nhanh (cache), thí dụ máy tính MC68030 Đầu tiên nhớ nhanh này tìm kiếm trước các bảng truy cập Bộ nhớ cache tạo lập theo nguyên tắc truy cập định hướng nội dùng, đó cache còn gọi là nhớ liên kết; sau làm xuất địa các bảng ảo thì khoảng thời gian đã bị tiêu phí, liệu chuyển chỗ các địa trang có lưu trữ (?) Nếu có, thì địa vạt lý có ý nghĩa nào (?) Hình 3.8 cho thấy điều đó sơ đồ Các Bít số trang thực kê khai cách tổng thể các số thập phân Để đạt đọc chọn ký tự thị thời gian, thiết bị điện tử tích hợp vào nguồn pin nhớ (còn gọi là tế bào nhớ), để so sánh các Bits địa ảo (ở đây: tiến trình Id=1 và trang ảo =0) với các giá việc điền vào Nếu việc điền vào, tất so sánh với các Bits yêu cầu là mĩ mãn, đó, cờ hiệu đặt cho việc này (dấu X hình vẽ) và giá trị địa vật lý (dùng để giao dịch) lựa chọn Hình 3.8 Một nhớ liên kết kiểu biểu thị là đệm dịch đổi khoảng nhìn Bộ nhớ nhanh Cache góp phần quan trọng việc dịch địa Ở Cache có dung lượng lớn, người ta có thể loại bỏ các phần cứng dư thừa để chọn lọc các bảng trang Thật vậy, người ta tiến hành việc dịch đổi địa các phần mềm có ít biến cố, tức là đó việc dịch đổi không cần tới Cache Tuy nhiên, việc dịch địa theo cách đó không giảm thiểu cách mạnh mẽ hiệu dụng vi xử lý 3.3.3 Bộ nhớ cùng sử dụng (shared memory) Một điều quan trọng là việc cùng sử dụng và điều khiển động các khoảng nhớ nhờ các tiến trình Điều đó đặc biệt có ý nghĩa: các mã dùng trình biên soạn Text hay các chương trình người sử dụng dùng nhiều thư viện (chẳng hạn thư viện ngôn ngữ C) Kể các liệu toàn cục có ý nghĩa việc xác định các thông số cửa sổ các tiến trình khác trên màn hình Để có thể phản ảnh các khoảng nhớ vật lý xác định không gian địa ảo nhiều tiến trình, nhiều biện pháp khác áp dụng Biện pháp đầu tiên là, phải tạo (100) nên các gọi hệ thống để giải thích khoảng nhớ tiến trình mà nó đóng vai trò nhớ cùng chia xẻ Lúc đó, hệ điều hành dùng định danh (call-over) để tham chiếu tới tất các tiến trình Thêm vào đó, điều phải đảm bảo rằng, các trang này thì không dập bỏ, các tiến trình kết thúc, tức là các tiến trình dẫn các trang riêng lẻ vào không gian địa nó Đối với việc đồng truy cập liệu trên nhớ Cache, các tác vụ cờ hiệu hệ điều hành cần phải đặt sẵn sàng Hình 3.9 tình cho ba tiến trình Hình 3.9 3.3.4 Bộ nhớ ảo Unix và Windows NT: Bản phác thảo nhớ ảo thực thi cách khác các hệ điều hành Unix và Windows NT và thany đổi từ ấn này tới ấn khác Không gian địa Unix: Ở hệ điều hành Unix, không gian địa ảo là 32 Bit tương ứng với dung lượng GB Ngoài ra, để đặc trưng cho không gian địa ảo tiến trình có không gian các ghi (register- space) với chiều dài 16 Bit hay 32 Bit Do vậy, địa 32 Bit mở rộng thành các địa dai 48 Bit 64 Bit, mà đây, không gian các ghi có thể quan niệm là thị (pointer) cho các không gian địa ảo với độ lớn 216 Tổng không gian địa ảo khoảng 4GB phân bổ thành khoảng riêng lẻ, gọi là các cung phần tư (quadrant), tuỳ theo loại máy tính, các cung phần tư này có ý nghĩa riêng Trong các khoảng chia này còn tồn cung nhỏ hơn, gọi là các cung logic xác định (segment) hay các khu vực tiến trình (process regions), mà các segment này điều hành để đặt lên địa ảo cố định Đối với segment tồn điền vào, mà nó dẫn tới thông tin quy luật truy cập (đọc / viết) và số lượng các trang Đối với thông tin riêng lẻ các trang với độ lớn kB thì có điền vào cấu trúc liệu nhân hệ điều hành: liệu trang đã hợp thể thức chưa, trang trạng thái nào và liệu trang có ghi chép trở lại không (?)…Tuy nhiên, việc xếp các segment không gian địa ảo người sử dụng thì file liệu mô tả /usr/include/sys/VA s.h và nó hình 3.10 đây Hình 3.10 -Với các điều đã trình bày trên, segment tiến trình người sử dụng xếp theo các địa tăng dẫn sau: Cung phần tư thứ I: Với địa thì các đoạn mã (codesegment) mã chương trình người sử dụng nạp Những mã này có thể tạo lập cách đồng đệ trên địa vật lý, đó, việc cùng sử dụng mã chương trình với các tiến trình khác nhau, thí dụ trình Editor, là có điều kiện (101) Cung phần tư thứ II:Cung này chứa các đoạn liệu (data-segment) các liệu đã bắt đầu chưa bắt đầu Tại đây, các heap- segment (các đoạn xấp) có thể phát triển nhờ các dịch vụ hệ thống cbrk() và malloc() Ngoài ra, đây (user area), ngữ cảnh người sử dụng ghép vào với ngăn xếp nhân và ngăn xếp người sử dụng, vì ngăn xếp có thể phát triển cách động trạng thái người sử dụng khác biệt với ngăn xếp nhân Cung phần tư thứ III: Ở đây tồn các địa chỉ, mà nó tham chiếu tới các khoảng cùng sử dụng các thư viện với các segment mã và segment liệu khoảng các files tạo lập trực tiếp (memory mapped files) Cung phần tư thứ IV: Tại đây tồn các địa chỉ, mà nó chứa đựng các khoảng nhớ với các tiến trình khác Ở Unix, segment nhớ shared memory có cấu gọi, mà segment các tiến trình khác có thể tham chiếu tới cấu này Các gọi hệ thống plock() và shmct1() cho phép giữ cố định các trang nhớ và cho phép loại bỏ phí tổn Điều đó hạn chế khoảng 75% nhớ trống Ở khoảng địa cao tồn khoảng, mà nó phòng ngừa cho việc truy cập đặc biệt nhanh trên các thiết bị vào (I/O map); các đệm và các ghi nó có thể chọn hay mô tả tham chiếu địa chỉ, còn gọi là các thiết bị ánh xạ nhớ (memory mapped devices) Tất nhiên, tiến trình người sử dụng thông thường không thực điều đó với các quy tắc truy cập thông thường, đặc biệt nó thực điều khiển trạng thái nhân hệ điều hành Không gian địa ảo Windows NT: Hệ điều hành Windows NT dự định cho không gian địa ảo 64 Bit; nhiên, không gian này thường dùng 32 Bit ứng với độ lớn GB Độ lớn này phân thành phần: 2GB cho không gian địa tiến trình người sử dụng, và 2GB cho không gian các chức còn lại Sự phân chia này hình 3.11 Nửa trên 2GB để lưu trữ nhân hệ thống và các bảng hệ thống, mà thứ này có đặc điểm bậc là thời gian truy cập ngắn Vì tất các trang nhân hệ thống luôn luôn tồn nhớ chính và vì hệ điều hành thì không dùng cấu bảo vệ việc truy cập, cho nên, việc truy cập đạt trên địa nhân Ở trạng thái nhân, thì Bit cao địa bị nén lại và phần còn lại địa ảo thông dịch thành các địa vật lý Việc thực thi hệ điều hành Windows NT phải khẳng định rằng, nó hiệu Ngược lại, cấu trúc trang hay việc quản lý trang làm cho phần nhớ còn lại lâm vào tình trạng sút kém, lúc đó, việc quản lý trang thực điều hành nhớ ảo (virtual memory manager) Ngoài ra, điều đó trợ giúp các trang (được định nghĩa phần cứng) có độ lớn 4kB tới 64kB, bình thường thì dùng kB Hình 3.11 Việc quản lý nhớ ảo dự định là bảng có bậc Bậc đầu tiên chứa đựng thư mục trang, mà thư mục này chứa đựng địa các bảng có bậc Nếu việc truy cập địa xẩy lỗi trang, đó, trang nạp, mà các bảng còn lỗi thì chứa (102) đựng trang này Ở bảng thứ thì chứa đựng số trang vật lý (pape frame) và kết nối với các thông tin các quy tắc truy cập… Đối với nhớ cùng sử dụng (shared memory) có quy tắc đặc biệt Đối với các số trang vật lý, bảng thứ chứa đựng số bảng đặc biệt, gọi là bảng trang nguyên mẫu (prototype page table) Trong bảng này chứa đựng địa các trang, mà chúng giải thích cho việc sử dụng cùng Sự khái quát sơ đồ định vị yêu cầu việc truy cập lần đầu (còn tham chiếu trực tiếp vào nhớ Cache hợp với lần truy cập tiếp theo) cho phép có tổ chức đơn giản trang Nếu trang giữ trở lại nhớ quảng đại sau nạp, và trước đó, đặt vị trí khác nhớ chính, thì đó, hệ điều hành xem xét tất các bảng các tiến trình và thay đổi địa vật lý cách phù hợp, tìm thấy Điều này loại bỏ điều hành tập trung Hệ điều hành có thể bị giới hạn trên các bảng trang nguyên mẫu Các khoảng nhớ có thể tiến trình là sáng tỏ việc cùng sử dụng các tiến trình khác Do đó, đối tượng đoạn (section object) tạo để file đặc biệt khảo sát và để dẫn các tính chất sau đây: Thuộc tính đối tượng (object attribute): Đó là độ lớn tối đa, bảo vệ trang, file ảnh xạ hay file đánh số trang: Yes/No, địa bắt đầu giống tất các tiến trình: Yes/No Các phương pháp đối tượng (objectmethode): Đó là các phương pháp sản sinh, mở, nới rộng, chọn mặt cắt, xác định trạng thái… Nếu các tiến khác muốn sử dụng khoảng liệu đã làm rõ, đó, chúng phải mở đối tượng section (đoạn) và lựa chọn mặt cắt Mặt cắt này cho thấy không gian địa ảo chúng, liệu nó có phải là mặt cắt nhớ bình thường hay không (?) Để quản lý các trang vật lý (page frames), nhân hệ điều hành Windows NT có cấu trúc liệu đặc biệt, đó là sở liệu trang vật lý (page frame database) Đối với trang tồn tại, chúng chứa đựng điền vào, nghĩa là, số trang các bảng bậc thứ thì phù hợp với số sở liệu khung trang và ngược lại Trong khác biệt với các Bit trạng thái trang ảo, sở liệu khung trang tồn thông tin trạng thái các trang thực, mà chúng chứa đựng các trạng thái sau: valid là trạng thái hợp lệ, nó tồn điền vào thuận lợi các bảng trang; zeroed là trạng thái tự do, nó bắt đầu với giá trị 0; free là trạng thái trống, không có giá trị bắt đầu; standby là trạng thái chuyển tiếp trang thuộc tiến trình chính thức không nhiều có thể giữ trở lại; modified mô tả giống trạng thái standby; bab là trạng thái chứa đựng lỗi vật lý, không thể sử dụng Bằng cấu gọi lần điền vào, lần điền vào kết nối với thành danh sách Bên cạnh trang hợp lệ (valid), còn có năm danh sách còn lại Cơ sở liệu khung trang các tiến trình sử dụng, và vậy, hệ thống đa vi xử lý, nó đảm bảo cờ hiệu spinlock (103) Tuy vậy, vì cờ hiệu cho cấu trúc liệu sử dụng, đó, tần số đánh số trang cao, thì sở liệu khung trang có thể thu nhỏ hiệu suất hệ thống Một ấn song hành với nhiều mặt cắt thì việc điều hành song song nhanh việc điều hành đơn điệu, nhiên, nó chưa thực thi 3.3.5 Chiến lược thay trang: Sau dịch địa chỉ, dẫn tới trang cần dùng bị thiếu, đó, chúng phải nhớ quảng đại đọc và nạp nhớ chính vật lý Bởi vậy, câu hỏi đặt là: chỗ nào và trang tồn nào viết chồng lên (?) Nếu chúng ta cần thay tới trang bình thường hay dùng, thì chúng ta phải đòi trang này đến ngay, và vậy, thời gian chạy chương trình gia tăng Vì vậy, nhiệm vụ chiến lược tốt phải là: Việc tìm trang để có thể thay nó, thì người ta không cần để ý tới vấn đề này Người ta có thể tìm thấy chiến lược thích hợp thế, đó là chiến lược định thời vi xử lý trao đổi trang, vì vi xử lý này chứa đựng yêu cầu các trang cần dùng hàng đợi Điều đó cho thấy, chiến lược này thì tốt để thoả mãn nhanh yêu cầu trang Do đó, công việc đến với chúng ta là, hầu hết các tham chiếu xảy cách cục chương trình, đó, các trang thì không có kết Dãy các trang tham chiếu cần dùng còn gọi tắt là dãy tham chiếu (reference string), có còn đặc trưng cho đường dòng liệu và dòng điều khiển trang thực chương trình Nếu chúng ta mong muốn dãy tham chiếu này chương trình, đó, chúng ta có thể điều chỉnh việc thay trang Đó là sở chiến lược tối ưu để thay đổi trang Chiến lược tối ưu: L.A.Belady đã (1966) rằng, thay ít đón nhận người ta chọn trang, mà muộn nhất, nó dùng sau này Ở hiình3.12 dãy tham chiếu 0,1,2,4,0,1,5,6,0,1,2,3,4… cho nhớ chính trang có điều kiện Hình 3.12 -Do đó, bảng đọc sau: Mỗi cột trạng thái hệ thống thời điểm, mà đó, số thời điểm cột tăng lên từ trái sang phải bảng Mỗi cột chia làm phần: Phần trên là số trang các trang nằm nhớ chính (RAM), còn phần là số trang các trang nạp trên nhớ quảng đại (ổ đĩa cứng và ổ đĩa mềm) Trang cần dùng ghi vào hang đầu tiên khoảng nhớ RAM; còn trang cần thay đổi ghi vào hàng đầu tiên khoảng nhớ quảng đại Nếu trang dời chỗ lên hang thứ dãy, đó, tất các số trang khác di dịch xuống phía còn gọi là chế ngăn xếp (stack mechanicmus) các chỗ trống điền đầy RAM Những trang thay đổi viết khoanh tròn tron hình 3.12 trên Chiến lược tối ưu này (optimal strategy) sử dụng chương trình xác định, mà các chương trình này thì các yêu cầu trang đã rõ Tuy nhiên, chương trình (104) không có thực tế, cho nên, chiến lược sử dụnh với tư cách là tham chiếu để so sánh với các chiến lược khác khả hiệu dụng chúng Với lý trên, các phép thống kê thời gian (được chi tiết hoá nhiều ít hơn) lập nên qua các trang cần dùng và dùng làm sở cho việc thay trang trên sở đánh giá việc thống kê Một các phép đánh giá đơn giản trợ giúp các Bits trạng thái, mà chúng tồn bên cạnh thông tin địa với việc điền vào cho các bảng trang Người ta ký hiệu: với R (referenced) là Bit trang tham chiếu hay sử dụng, còn M (modified) là Bit trang điều chỉnh, tức là trang thay đổi và viết trở lại Nếu khoảng thời gian đặn, Bit R đặt lui nhờ đếm thời gian (tức là vượt lên ngăn xếp thời gian), đó, R=1 rằng, trang phù hợp sử dụng chốc lát (nhưng chưa vượt lên ngăn xếp thời gian), và vì vậy, nó thì chưa cần thiết phải thay Nếu trang tham chiếu, đó, đếm thời gian đặt trở lại giá trị không Vì thế, trang, đếm sử dụng Phương pháp này thì đắt, đó, người ta có thể áp dụng cách làm gần đúng là dùng đếm cho tất các Bits này với chu ký mộ lần Vì không có khoảng thời gian tuyệt đối, mà có khác trang khoảng là cần thiết, vậy, việc đặt lại các Bits R các biến cố đặc biệt, thí dụ có thể dẫn tới lỗi trang Việc sử dụng thông tin cần dùng cho các trang dẫn chúng ta tới chiến lược sau đây để thay đổi trang Chiến lược FIFO: Những trang tới xếp vào dãy bảng phù hợp cho sau này chúng Nếu chúng ta chọn trang đầu danh sách đại diện cho vieecej thay thế, đó, chúng ta có trang cũ Nếu chúng ta đoán rằng, thay chúng chứa đựng chương trình chính Cho nên, trang cũ thì còn phải lưu ý thêm trạng thái các Bits R Nếu R =1, thì trang còn dùng Ở biến đổi chiến lược FIFO khiết, người ta có thể đặt trang này trở lại cuối danh sách và đặt R=0 Và lúc đó, trang vừa tới, người ta nói rằng: Trang nhận dịp may thứ 2, tức là đó trang tuân theo thuật toán dịp may thứ (second chance algorithmus) Thật vậy, R=0 thì trang thay thế, còn M=1 thì trang viết trở lại trước đó Người ta có thể đơn giản hoá phương pháp này, mà đó, người ta kết nối danh sách theo vòng xích Vì số lượng trang xác định tối đa chiếm không gian nhớ chính, độ lớn vòng xích nói trên không thay đổi Chỉ có đánh dấu trang cuối cùng thay đổi thay đổi trang và tiếp diễn điền vào vòng xích với các trang điền vào, là thị giờ, còn gọi là cấu (clock algorithmus) Hình 3.13 chiến lược FIFO đơn giản thí dụ mà chúng ta nêu trên Hình 3.13 Trong so sánh với chiến lược tối ưu hình 3.13 đây (hình 3.13) có thay trang dùng để làm đầy trang RAM Chiến lược NRU: (105) Chiến lược sử dụng ít việc thống kê trang hay hoàn toàn không sử dụng gì Do đó, người ta muốn điều đó làm cách tốt nhờ các công cụ đơn giản Với trợ giúp hai loại Bits R và M, các trang chia làm cấp 1) R=0, M=0 3) R=1, M= 2) R=0, M=1 4) R=1, M=1 Điều rõ ràng là,các trang thuộc cấp với R=0 và M=0 thì ít sử dụng nhất, và đó, chúng thay đầu tiên (trước các trang điều chỉnh không tham chiếu tới cấp 2), mà chúng có thể còn sử dụng lại Quan trọng hơn, đó là các trang cấp 3, tức là các trang tham chiếu thực thụ; thế, R=1 và M=1, các trang này mô tả là trang cấp Do đó, quan trọng hay ưu tiên nào đó trang khẳng định: Các trang có số cấp nhỏ thay đầu tiên Cách thức này gọi là chiến lược NRU, tức là chiến lược tới nơi không sử dụng (Not Recently Used-NRU) Hình 3.14 thí dụ chiến lược NRU Hình 3.14 -Số lượng các thay thì đơn giản chiến lược FIFO, các trang thì khác biệt RAM, đó, thông tin sử dụng qua tham chiếu trước đây Trong hình 3.14, việc thay xảy từ yêu cầu trang 6: Đáng lẽ trang choáng chỗ, thì trang sử dụng ít lại choáng chỗ, đó, các yêu cầu tiếp theo, các trang choáng chỗ nhiều hơn, trừ các trang và Chiến lược LRU: Một cách chính xác là danh sách FIFO hay tồn định lượng thời gian thì nó đã mang trang tới nhớ cách không cần thiết Do đó, nhiều trang với R=0 thì trang già xác định và thay thế, gọi là chiến lược gần đó là ít sử dụng (Least Recently Used: LRU) Một giải pháp phần cứng có thể mô tả: đó là đếm chạy nhanh, thí dụ đếm thời gian để và ngày tháng năm Tại tiếng tích- tắc thì bậc thời gian đảm nhận cách tự động việc điền vào bảng trang hoạt động Tất các trang không hoạt động thì trì trạng thái cũ Bấy giờ, trang cũ tìm thấy, đó, số thời gian nhỏ tìm thấy việc điền vào các bảng Nếu không có phần cứng nào sử dụng, đó, người ta có thể mô trang cũ cách áng chừng nhờ ghi di dịch trên trang Do đó, Bit R trang với tư cách là Bit cao ghi đặt vào khoảng thời gian đặn và toàn sức chứa ghi đặt vào khoảng thời gian đặn và toàn sức chứa ghi dịch chuyển Bit sang phải (shift right) Hình 3.15 là thí dụ cho di dịch sang phải trang Thanh ghi di dịch tác dụng là cửa sổ thời gian hoạt động trang, thí dụ với ghi Bit thì nó cách phiên thời gian Sự di dịch sang phải làm ảnh hưởng thông tin các trang cũ Nếu người ta quan niệm trạng thái ghi di dịch là số, đó, giá trị số này là lớn nhất, giá trị này đã ghi lại (106) tất hoạt động thời gian cuối cùng, giá trị hoạt động này giảm dần theo khoảng thời gian gia tăng Hình 3.15 Trang để thay theo chiến lược LRU số nhỏ ghi di dịch Hình 3.16 thí dụ chiến lược LRU trình bày trên Hình 3.16 -Tuy nhiên, sơ đồ hình 3.16 chưa phản ảnh cách đầy đủ sở định vấn để: Khi tham chiếu trang thì nó chưa rõ ràng là kiện thông thường việc thay trang, đó, sau đây nghiên cứu chiến lược NRU Chiến lược NFU (Not Frequently Used): Để thay trang, chiến lược cho thấy, nó thường hay sử dụng Ở đây nó không đo đạt thời điểm chiến lược LRU, thời điểm đó, trang không nằm nhớ, mà đặc biệt trang dùng khoảnh khắc Thật vậy, trang, đếm dẫn ra, mà nó gia tăng cách chu kỳ sử dụng (r=1) Sau đó, trang đặt với giá trị nhỏ Đối với chiến lược này, vấn đề là chỗ, các trang sử dụng mạnh mẽ trước đây, bây khó khăn choáng chỗ nhớ chính, vì giá trị số chúng thì cao Do đó, điều có ý nghĩa là, người ta dự định dùng thêm cấu làm già để phòng tránh biến cố (olding mechanismus) Việc áp dụng các chiến lược khác khác Việc lựa chọn chiến lược tốt và việc thiết kế theo kỷ thuật viên trở nên hoàn hảo, chúng ta nhìn nhận cách sâu sắc các cấu thay 3.3.6 Mô hình hoá và việc phân tích thay trang Trong mục này, chúng ta khảo sát thực nghiệm, để từ việc nghiên cứu tìm thấy mô hình các chiến lược và đặc điểm các thuật toán Do đó, đầu tiên, chúng ta lưu ý đến câu hỏi: Thực trang cần thiết phải lớn bao nhiêu (?) Sau đây chi tiết trình bày để giải câu hỏi vừa nêu Chiều dài trang tối ưu: Nếu K là dùng lượng (size) nhớ chính và s là kích cở trang Ở đây, s không phải nói kích cở phần cứng trang, mà đặc biệt, s biểu thị kích cở hệ điều hành trang; vì thế, nó áp dụng nhiều trang phần cứng (hardware pages) cho trang phần mềm (software pages) Chúng ta nhận thấy rằng: (107) + Chiều dài liệu phân chia cách ngẫn nhiên, đó, tất các giá trị lát cắt (mỗi đoạn phân chia) nằm khoảng [0,s] Thông thường, lát cắt trung bình là s/2 đơn vị nhớ, thí dụ các từ (word) trên tiến trình + Mỗi bảng trang bậc biểu thị điền vào trên tiến trình là [K/s], mà đó, điền vào yêu cầu đơn vị nhớ (thí dụ word) Do đó, tổn thất (V) các đơn vị nhớ xuất trên tiến trình với hệ số tổn thất fv biểu thị biểu thức sau: V = (K/s + s/2) ~ K fv Ở các trang lớn thì mặt các bảng trang trở nên nhỏ hơn, mặt khác các lát cắt lại trở nên lớn Ngược lại, các trang nhỏ thì lát cắt trở nên nhỏ hơn, độ lớn bảng lại tăng lên Vì vậy, hai thái cực, có tối thiểu cục Khi s-> thì chúng ta nhận tối thiểu tổn thất, tức là xảy điều kiện sau đây: Công thức với fv =2/sopt Trong đó, K và s có thứ nguyên [kByte], fv có thứ nguyên [%] Thí dụ: Nếu không = 5000kB, thì đó ta xác định sopt = 100kB với hệ số tổn thất nhớ chính là fv=2% Độ lớn trang dùng thực chất hệ điều hành còn tạo nhiều tiêu chuẩn Các trang lớn có ý nghĩa lát cắt thời gian, nó không có lợi vì đòi hỏi nhớ bổ sung bị thu hẹp.Nghĩa là, lát cắt thời gian lớn thì không thoả mãn với mô hình yêu cầu nhớ phân chia đồng trên trang Từ lý vừa nêu, các độ lớn trang thường phân chia nhỏ Đối với độ lớn trang còn có nhiều nhân tố khác, đó là thời gian dùng để nạp trang trên nhớ quảng đại và lát cắt nhớ quảng đại độ lớn file trung bình Nếu giả sử các files có độ lớn chừng 1kB, đó, áp dụng hữu hiệu các nhớ quảng đại, độ lớn trang sử dụng phải nằm khoảng đó Nếu độ lớn file trung bình 1kB, chúng ta muốn khẳng định độ lớn trang khoảng 100kB, đó, trung bình file có khoảng 99kB chưa sử dụng Đó là khả chịu tải quá kém Để đáp ứng hai yêu cầu vừa có đơn vị nhớ nhỏ và vừa có số lượng chuyển đổi trang lớn, có nhiều hệ điều hành đã thử nghiệm để quan tâm tới: file có nhiều trang thì độ lớn trang phải nhỏ Số lượng trang tối ưu: Một công việc quan trọng lôi các nhà quản lý hệ thống, đó là câu trả lời cho câu hỏi: Nhiều tiến trình cần thiết phải nạp vào nhớ chính nào (?) Điều đó phù hợp với câu hỏi: Nhiều trang trên tiến trình phải đặt chỗ nào nhớ chính (?) Bây chúng ta khảo sát thí dụ Chúng ta so sánh thuật toán FIFO hệ thống có trang RAM (bảng phía trái) và hệ thống có trang RAM (bảng phía phải) (108) Hình 3.17 Chúng ta nhìn thấy nguyên cớ ngẫu nhiên: Ở hệ thống có trang RAM thì có lần thay sử dụng, còn hệ thống trang RAM có lần thay trang sử dụng, mà nhớ chính còn có thể dùng nhiều Nguyên cớ này làm xuất thuật toán mang tên nhà phát minh L.A.Balady, mà nó có tên gọi là thuật toán các kỳ dị Balady Ngược lại chúng ta khảo sát thuật toán LFU hình 3.18 đây Hình 3.18 -Việc sử dụng bổ sung nhớ nhờ trang RAM không làm thay đổi các trang (khác với thuật toán FIFO) nằm nhớ chính Điều đó thì logic: Ở chiến lược LFU, các trang thường dùng thì luôn luôn đứng phía trên danh sách ưu tiên, luôn luôn độc lập với việc chúng nạp hay chúng trang RAM, và đồng thời, chúng độc lập với giới hạn RAM và các ổ đĩa (cứng và mềm) Danh sách ưu tiên chiến lược LFU thực thi với trợ giúp cấu ngăn xếp: Các trang có ưu tiên cao đứng hoàn toàn trên và các trang khác di dịch xuống phía Trang nào di dịch khỏi giới hạn RAM và các ổ đĩa thì nạp trên nhớ quảng đại Các kiểu thuật toán tác dụng lên m trang nhớ thì độc lập với việc chúng trả lại tham chiếu với m hay m+1 trang RAM Chúng có tên là các giải thuật ngăn xếp (stack- algorithsmen) Điều đó rằng, giải thuật các kỳ dị Balady không thuộc các thuật toán ngăn xếp vừa nêu Tập hợp các trang tham chiếu W(t,∆t) thì quan trọng (ở đây: t là thời điểm nào đó, ∆t là nhịp thời gian), nó còn chứa đựng thêm trang đặc biệt hay dùng phía Nếu không có đúng, tiến trình làm việc kém hiệu quả; đó, W(t,∆t) biểu thị là tập hợp công tác (working set) Tập hợp trung bình working set (W(t,∆t))t đặc trưng cho diễn biến tiến trình Người ta lưu ý rằng, định nghĩa này thì khác xa với định nghĩa gốc P.J Denning nêu (1980), mà với điều đó, người ta xác định số lượng tối thiểu các trang, mà việc thực tiến trình thì các trang này cần thiết Thí dụ Tập hợp công tác P.J Denning: Nếu chương trình chúng ta có các lệnh này: MOVE A,B MOVE C,D Trong đó: A,B,C,D là các biến các trang khác nhau, đó, tiến trình có thể làm việc, bên cạnh các trang mã (codepages) tiến trình còn có trang tham chiếu địa sử dụng Khi tiến trình cần dùng tối thiểu trang, đó theo P.J.Denning, tạp hợp công tác có giá trị w=5 trang, nó thì độc lập các trang sử dụng Trong các bảng nêu trên, việc điền đầy các cột đầu tiên (để sử dụng các trang RAM) thì không cái gì đặc biệt, vì đây, không có trang nào thay Tuy nhiên, điều đó có thể xảy với trợ giúp ngắt lỗi trang (page fault interrupt), không còn cái gì khác thì hệ điều hành đảm nhận phòng ngừa Việc nạp vào hay việc thay các trang biểu thị là yêu cầu thiết đặt trang (demand paging) Ngược lại, người ta có thể (109) nạp cách ngẫu nhiên các trang tập hợp working set hay nạp các trang tiến trình ngủ trước tiến trình hoạt động trở lại (preparing) Phân tích hiệu ứng thrashing (thrashing effect) và tập công tác (working set) Nếu k là số trang tồn nhớ chính và m là số trang có điều kiện tiến trình và thoả mãn điều kiện m<k, đó, tiến trình không bị làm chậm lại nhờ việc trao đổi trang Và khoảng thời gian xử lý tiến trình có giá trị B1, giờ, chúng ta có thể khởi động các tiến trình này tiếp tục Nếu n là số trang tiến trình theo tổng nhu cầu nhớ, thì n-m>k phải lớn số trang nhớ cung cấp, đó, tổng các khoảng thời gian xử lý B G gia tăng cách tuyết tính, nghĩa là: BG+ ~ nB1 Với biểu thức trên, trao đổi các trang cần thiết cho thấy không tiêu tốn thời gian Tại vậy? Nếu chúng ta quan sát các trạng thái, mà đó, các trang tồn thời gian trì trang với giá ts, nó gọi là trạng thái chạy (running phase) Còn trạng thái gọi là trạng thái hãm (blocked phase), đó trang phải chờ đợi với thời gian chờ trung bình là tw Tổng thời gian này gọi là thời gian tiêu phí hệ điều hành cho việc định thời (scheduling) và cho việc khai khẩn (dispatching) Hình 3.19 cho thấy quá trình diễn biến trạng thái tiến trình Hình 3.19 Người ta thấy gì, thời gian chờ đợi nhỏ thời gian trao đổi trang t w < ts, đó là, tiến trình bị chặn luôn luôn sẵn sàng tìm thấy Mặc dù tiến trình sau trạng thái trì trang có xuất thời gian chờ tw điều đó không có tác dụng gì cả, nhiên nó xảy không mĩ mãn các tiến trình nào đó Bây giờ, chúng ta nạp cho máy tính thêm nhiều tiến trình nữa, đó, chúng ta quan sát thấy hiệu kỳ dị: Với lượng các tiến trình tin cậy nào đó, thì khoảng thời hạn xử lý các tiến trình riêng lẻ xảy với nhịp độ đột ngột cao Người ta nói: Những tiến trình này đã quấy rầy (quallen) việc xử lý Do đó, hiệu ứng kỳ dị này còn gọi là hiệu ứng thrashing Điều đó đặt cho chúng ta câu hỏi: Hiệu ứn thrashing đâu và người ta có thể phòng tránh nào? Bây chúng ta khảo sát tình trạng sau đây cách chính xác hơn: Với chịu tải bổ sung các tiến trình, phía nào đó, số trang có thể sử dụng nhớ nên tiến trình thì giảm xuống (trong khoảng thời gian tw) Vì hai tiến trình trao đổi trang không thể xảy đồng thời, đó, tw < ts, thời điểm các phương tiện điều hành là vi xử lý chính (CPU) ít sử dụng thì xuất các phương tiện điều hành là vi xử lý trao đổi trang Hình 3.20 tình trao đổi này phải chờ đợi tình trao đổi khác nào đó để tổng khoảng thời gian xử lý G lớn tích số n.B (tức là G> n.B) Hình 3.20 - (110) Nói cách chính xác: Khi nào thì hiệu ứng thrashing xảy ra? Khi nào thì t w = ts? Bây giờ, chúng ta mô hình hoá hệ thống Ta gọi: tT là khoảng thời gian xử lý trung bình, ρ là mức độ trao đổi trang (cũng gọi là xác xuất trao đổi trang), lúc đó ta có: tw = ρtT (3.1) Khi xếp các số trang, chúng ta thấy, các trang thường tham chiếu nhận số nhỏ Tại trang, chúng ta quan tâm tới tỷ số số lượng các trang tham chiếu và tổng số các tham chiếu trang thực chương trình thời điểm xác định Do đó, cho trang thứ i, chúng ta nhận xác suất tham chiếu pi Điều đó minh hoạ hình 3.21 và phân tích kỹ đây Tổng các xác suất thay đổi trang thì 1, nó là diện tích đường cong và các trục toạ độ, nó chính là tích phân hàm xác suất p(i) với cận I nằm khoảng i= [1,m] Hình 3.21 -Đối với thay đổi trang thì điều định là, hàm xác suất p(i) không phải là số, mà có tất các trang tham chiếu với xác suất (ngay pi=pc), đặc biệt, các tham chiếu địa xảy cách cục dạng mã Và đến thời điểm nào đó, hàm xác suất p(i) luôn luôn đặt ít trang xác định Nguyên tắc định vị này dẫn tới suy giảm mạnh mẽ hàm p(i) số i quá lớn, và đó đã tạo nên sở thực thi mô hình nhớ ảo Nếu tất các trang ảo tiến trình tham chiếu với xác suất nhau, đó, các bảng đa bậc không cần tới nhớ kết hợp, chúng nằm trên dư thừa các trang không tồn Để tiến hành công việc khảo sát tiếp theo, chúng ta mô hình hoá các trang (có khả năng) tiến trình với hai tập hợp: tập M1 là tập các trang với số i< iM tham chiếu với xác suất p1 (nó thuộc tập working set) và tập M2 là tập các trang bên phải với số iM<i<m có xác suất p2 Ta có: ρ là xác suất thay đổi trang; k là số trang nhớ chính; m là số trang có thể có tiến trình và σ là hệ số khả nhớ, nó xác định tỷ số: σ = k/m Nếu tất các trang tham chiếu với xác suất nhau, đó, chúng ta nhận quan hệ: Ρ = (số trang thay đổi)/ (tổng số trang) Hay ρ = (m-k) / m = –σ Khi xác suất xuất trang đạt α = 1-ρ thì trang thứ i tồn dãy k trang nhớ, nó phụ thuộc vào xác suất tham chiếu pi Nếu chúng ta áp dụng chiến lược thay trang, mà nó thay cách ít các trang thường hay tham chiếu nhiều nhất, đó, xác suất tham chiếu pi và xác suất có mặt α liên kết với Nếu trang với số k có mặt, đó, xác suất trang xác định: Tất các trang với số i<k có mặt, mô hình hai tập hợp trang nói trên (M1 và M2), chúng ta nhận được: α1(k) = pi (i<=k) = k i p1 = kp1 với 1< = k< = I M (3.2) (111) α2(k) = α1(iM) + k p2 = iM.p1 + (k- iM) p2 với iM <= k<= m (3.3) i iM 1 Nếu có tham chiếu tới tập cần quan tâm M1, 1<=i<=iM thì xác suất xuất trạng v gán: v:= p (với 1<=i<iM ) và iM<=i<=m thì xác suất xuất trang dẫn tới: p(iM <= i<=m) = 1=v Kết hợp với các biểu thức (3.2) và (3.3), ta có: v: = α1(iM) = iM.pi ↔ p1 = v/iM m 1-v = p2 = (m-iM) p2 ↔ p2= (1-v)/ (m-iM) i iM 1 Hệ số trao đổi trang lạ ρ kết hợp từ biểu thức (3.1) với trợ giu[psp các quan hệ (3.2) và (3.3) Từ hàm ρ này, ta xác định hàm ρ1 và ρ2 cho tập hợp trang: ρ1 = - α1 = – kp1 =1 – kv/iM với 1<= k<=iM ρ2 = – α2 = – v – (1-v) (k- iM)/ (m-iM) với iM <= k <= m Nếu chúng ta chuyển từ hệ số khả nhớ tuyệt đối k tới hệ số khả nhớ tương đối trên tiến trình σ, đó, chúng ta mở rộng các biểu thức với 1/m và nhân các quan hệ trên tất các trang với 1/m, đó, với quan hệ σ1 = iM/m dẫn tới các biểu thức sau; ρ1=1 – kv/iM = 1-k.m.v/m IM =1 v.σ/σT với 1/m <= σ=k/m <=σT (3.4) ρ2 =(1-v) [1- (k/m- iM/m)/(1- iM/m)] = (1-v).(1-σ)/(1-σT) với σT<= σ<= (3.5) Khi σ=σT thì hai hàm trạng thái quá độ, lúc đó dẫn tới ρ1(σ) =ρ2σ) =ρT = ρ(σT) Ở đây ta xác định được: ρT = ρ1(σT) = 1-v (3.6) Đối với mô hình thô phân bổ trang hai tập M1 và M2, chúng ta tìm thấy quan hệ hệ số trao đổi trang ρ và hệ số khả nhớ σ Hình 3.22 điều đó Thật vậy, tham chiếu trang với xác suất nhau, thì hàm ρ =1- σ biểu diễn là đường thẳng Với mở rộng σ = 0, giá trị hàm này đạt ρ =1 Các quan hệ (3.4) và (3.5) thì là các đường thẳng, và chúng gặp điểm Người ta nhận thấy rằng, thu hẹp hệ số khả trang σ, gặp tập hợp trang working set sau quá độ chuyển biến các hàm ρ1 và ρ2, thì hàm hoạt động trao đổi trang trở thành đường dốc đột ngột, lưu ý trường hợp này: ta thấy hiệu thrashing effect xuất Khi hàm ρ có phụ thuộc thích ứng, đường thẳng này biến thành điểm trên đường cong Hình 3.22.******************* Nếu tw > ts, đó, thời gian chờ đợi xác định tổng thời gian xử lý BG Với n tiến trình thì BG=n B1, có kể tới ảnh hưởng thời gian chờ đợi tw và thời gian thay trang ts thì BG=n B1(tw / ts) Do chúng ta quan tâm tới trình bày chất lượng độc lập với khoảng thời gian xử lý thông thường B1, đó, người ta đưa khái niệm thời gian xử lý tương đối G: BG/ B1 thông qua quan hệ biểu thức (3.1), ta có: G=n với tw<= ts (112) G= n(tw / ts) =n.p(tw / ts) với tw >= ts Khi tw = ts thì các tiến trình thời kỳ quá độ Trong trường hợp này thì ρ.tT =ts với số ρ =ts /tT = ρw Với hệ số khả thích hợp σw, thì dẫn tới ρ(σw) = ρw Khi đó, biểu thức thứ hai (3.7) trở thành: G=nρ/ρw với tw / ts (3.8) Chúng ta có thể phân biệt thông số quan trọng: Hệ số chuyển biến ρT tập hợp trang M1 và M2, và hệ thống chuyển biến ρw khoảng thời gian xử lý ts, và khoảng thời gian chờ đợi tw Bây chúng ta xem xét, tính chất hệ thống phụ thuộc nào vào hai thông số này ? Chúng ta khảo sát trường hợp ρT <=ρw với σT >= σw Chúng ta phân chia khoảng tổng cộng σ (xem hình 3.22) thành khoảng (A và B) hình 3.23 đây Hình 3.23******************* Khoảng A: Với σw <= σ thì có ρ <=ρw và tw<= ts Tức là khoảng (a) thì biểu thức (3.7) trở nên: GA =n với σw <= σ Đây là khoảng tuyến tính Khoảng B: Từ biểu thức (3.8) và biểu thức (3.4) dẫn tới ký hiệu: σ = k/(n.m) ~ s/n Với hệ số khả nhớ tương σ (n-m) trang yêu cầu nhó qua n tiến trình thì thời gian xử lý tương đối GB khoảng này viết: GB = n –ρ1/ ρw = (n/ρw)(1-σ.v/σT) = n/ ρw- s.v/ ρwσT Khoảng B là khoảng tuyến tính mạnh mẽ Câu hỏi đặt ra: Tại n0 tiến trình nào thì xuất quá độ chuyển biến từ khoảng A tới khoảng B? Điều kiện để xảy chuyển biến là: GA(n0) =GB(n0) ↔ n0 = n0 (ρ1/ ρw) ↔ ρw = ρ1 = (1-(s/n0).v/σT) ↔ ρw.σT = σT-s.v/n0 ↔ n0= s.v/σT(1-ρw) (3.9) Thí dụ chịu tải phi tuyến thay trang thấp: Nếu hệ thống có đủ chỗ cho tiến trình (s=2) thuộc tập working set Giả sử có nửa số các tiến trình có hệ số khả nhớ σT =0,5, mà có tới 90% số đó người ta quan tâm, tức là v=0,9 ↔ ρT = 0,1 Vì ρT <=ρw, chúng ta chấp nhận ρw= 0,2 thì với chấp nhận này, chúng ta tính được: n0 = 4,5 và GB (n=6)= 6.5-2.0,9.5.2 = 12 (xem hình 3.24) Hình 3.24***************** Người ta thấy, không gian nhớ chính đủ chỗ cho tiến trình, không có tổn hao, nó có thể thực tiến trình Nếu người ta gia tăng số tiến trình, thí dụ n=6, đó, chịu tải gấp đôi là hiệu (113) Bây giờ, chúng ta khảo sát trường hợp khác, với ρT <=ρw và σT <=σw Chúng ta có thể phân chia khoảng σ làm phần hình 3.25 đây Khoảng C: với σw <=σ thì ρ <=ρw , đó, suy tw<= ts Trong khoảng C phương trình (3.7) trở thành: GC =n với σw <=σ Khoảng C là khoảng tuyến tính Khoảng D: từ phương trình (3.8) và (3.5) ta có: GD = (n/ρw)/ρ2 , với c= 1- σT, người ta nhận được: GD = (n.c/ρw)/(1-s/n) = n.c/ρw- c.s/ρw, hay: GD = (n-s).c/ρw với σT <= σ<=σw Khoảng D còn gọi là khoảng trên tỷ lệ Khoảng E: Khi <= σ <= σT, người ta nhận được: GE =n.ρ1/ρw = (n/ρw) (1-σV /σT ), hay: GE =n/ρw-s.v/ ρw σT Khoảng E còn gọi là khoảng tuyến tính mạnh Những kết luận và các chiến lược: Từ việc nghiên cứu trình bày trên dẫn tới kết luận sau đây: Điều quan trọng là, các trang tập công tác tất các tiến trình phải có đủ chỗ nhớ (khoảng GA và GC) Nếu điều đó không đảm bảo, đó, số lượng các tiến trình bị thu hẹp, các tiến trình có đủ không gian nhớ Tuy nhiên, điều đó không đạt được, đó phải dẫn tới các điều kiện σ>=σw và ρ(σ) <= ρw =ts / tw Khả nhớ phải xác định trên quan hệ thời gian trì trang và khoảng thời gian thay trang Nếu điều đó không xảy ra, đó, chúng ta nhận hiệu thrashing effect; mãi khi, có đủ nhớ cho tập công tác (working set) Bây giờ, chúng ta muốn làm cho ρw lớn và σT nhở để đạt tính chất thuận lợi hệ thống Về điều đó, có biện pháp phần cứng và phần mềm cần thiết sau đây trình bày Những biện pháp phần cứng: Ở gốc độ biện pháp phần cứng, điều phải đạt là thời gian trì trang ts phải đủ lớn, mà đó, người ta cần thiết làm cho trang đủ lớn Điều thuận lợi là, thời gian trì trang thì phụ thuộc mạnh mẽ vào việc làm trễ truy cập ban đầu (đối với ổ đĩa cứng khoảng 10 ms) và không phụ thuộc vào thời gian truyền đạt Tốt là đừng làm trễ nhớ quảng đại truy cập nhanh Tuy nhiên, đó, nhớ quảng đại đảm nhận vai trò nhớ chính, đó, vấn đề khó khăn nói chung thu hẹp Ngoài ra, người ta có thể thu nhỏ thời gian quá độ chuyển đổi tT, cách: người ta phải phòng ngừa nhiều nhớ song hành nạp trang Phương pháp này gọi là phương pháp dùng nhiều ổ đĩa đổi tráo Với σT nhỏ hay v lớn đạt hiệu chỉnh mã chương trình trên bình diện lập trình Điều đó thực nhờ việc chép các thủ tục, mà chúng xếp theo bậc gọi thủ tục Một thí dụ điều đó cho thấy, đó là thiết lập thành hàng các procedure thay (114) việc gọi thủ tục (procedure call) Điều đó làm lưu ý tới vòng lặp lớn Tốt hơn, vòng lặp này cần thiết phân chia thành nhiều vòng lặp nhỏ Thuật toán có thể thay đổi cách thích hợp, thí dụ, phép nhân các ma trận có thể phân chia, đầu tiên, nhân theo hàng, đó, ma trận lưu trữ theo hàng Khi nhân theo cột, thì các trang thay đổi theo cột Tập working set và mô hình tần suất thay đổi trang: Hệ điều hành cần thực cái gì đó để phòng tránh hiệu thrashing effect Khi đó chiến lược nêu ra: Chúng ta có thể xác định các tập working set tiến trình với trợ giúp phép thống kê thời gian, thí dụ các Bits R và M (nói mục 3.3.5) Khi đó chúng ta phải quan tâm rằng, số lượng các tiến trình thu nạp cho đáp ứng việc nhớ chính tồn vừa đủ cho các tập working set Lúc đó, kiểu làm này gọi là mô hình tập công tác (working set model) Các nhớ BS2000 (của hảng Siemens) và CP37 (của hảng IBM) thích hợp cho trường hợp này Về vấn đề này còn có chiến lược khác quan tâm: Nếu F là số đo các thay trang trên đơn vị thời gian, gọi là tỷ phần tráo đổi trang; thời gian hai lần thay đổi trang vượt lên hay lui lại giá trị F0; lúc đó người ta gọi là tần suất thay đổi trang, đó, các tiến trình đặt yên tĩnh chốc lát Nếu điều đó xảy thì có thể có nhiều tiến trình hoạt động Các mô hình này W.W Chu (1975), cho thấy, nó thì tốt so với mô hình working set modell Mô hình bậc sử dụng: Một ý tưởng khác nêu lên là cần thiết phải điều chỉnh trực tiếp khả hệ thống Về điều này, chúng ta nghiên cứu điều kiện xuất cách bình thường các tiến trình Mỗi chúng ta nhận các tiến trình, lúc đó, sức chịu tải CPU thì cao hơn, kéo dài khi, thời gian đợi tw lớn thời gian trì trang ts Trong trường hợp này, các trang bị ùn đọng tiến hành thiết lập trao đổi trang Chúng ta có thể mô hình hóa điều đó là vi xử lý trao đổi trang CPU và chúng ta có thể mô hình hóa chịu tải hệ thống L(n,t) là tổng hai tải ηCPU và ηPPU L(n,t) = Wt.ηCPU + W2 ηPPU Trong đó, L(n,t) còn gọi bậc sử dụng; W1 W2 là các trọng số Mô hình M Badel đưa (1975), rằng, mô hình này chứa đựng nội dung: Đầu tiên tăng theo đường dốc và sau đó giảm xuống nhanh tới bậc sử dụng L(n,t) vượt qua số lượng các tiến trình tới hạn Khi nghiên cứu biến đổi các thông số tiến trình mục 2.2.2, đây chúng ta thấy L(n,t) xác định từ các đại lượng đo đạc Nếu L(n,t) giảm, đó, số lượng các tiến trình phải bị thu nhỏ;ngược lại, chúng phải gia tăng Ngay phản ứng làm trễ có thể dẫn tới việc phòng tránh thay đổi cực nhanh Chiến lược cục và toàn cục: (115) Một khả là, các tiến trình và nhu cầu nhớ chúng không phải là hai vấn đề cô lập nhau, mà không gian tồn chúng phân chia cách động Thuộc điều đó, người ta không thể phân bổ cho tiến trình không gian nhớ nhau, mà người ta phân bổ theo nguyên tắc: không gian nhớ tỷ lệ với độ lớn tiến trình Để thoả mãn nguyên tắc này, độ lớn ban đầu nhớ không nhỏ quá Như vậy, chiến lược này không lưu ý số lượng sử dụng các trang, mà còn quan tâm tới độ lớn thay đổi đông tập working set Về việc xác định cục độ lớn này cho tiến trình, người ta có thể thực nghiệm, để truy tìm chiến lược các trang các tiến trình, mà nó đem lại hiệu Do đó, các thuật toán LRU và LFU (ở mục 3.2) làm việc trên tập các trang và xác định tập công tác các tiến trình cách động Đối với thuật toán PFF thì có ý nghĩa hơn, hệ điều hành cần thiết phải phân bổ nhớ để cho tần suất thay trang tất các tiến trình là Nhược điểm chiến lược toàn cục là chỗ: tiến trình có thể có tác dụng lên tất các tiến trình khác Nếu tiến trình tồn với yêu cầu nhớ lớn, đó, tất các tiến trình khác bị cưỡng bức: thường phải thay đổi trang hay thường phải chờ đợi Ở chiến lược cục thì ngược lại, có tiến trình lớn phải chờ đợi, còn các tiến trình khác tiếp tục làm việc với không gian trống chúng Tuy nhiên, tất các tiến trình, thì điều đó chưa tối ưu, nó cảm nhận cách thoả đáng các hệ thống đa người sử dụng Chiến lược lazy evaluation: Có ý kiến cho rằng, để thu hẹp tiêu phi công tác cho các trang, người ta thực nguyên tắc lazy evaluation sau: Tất hoạt động xê dịch chừng nào đó thoả mãn Sau đây là vài thí dụ mô tả nguyên tắc này: Copy on write (sao viết): Nếu việc chép trang là cần thiết, đó, trang gốc thi hành lần làm dấu Đầu tiên, trang truy cập để viết, tức là: trước đó gốc đặt lên, và sau đó trang sửa chữa và copy Pape oout Pool (trang khỏi ao): Đáng lẽ trang viết ngay, thì nó lại nạp vào nhớ quảng đại; đó, người ta nạp chúng vào kho chứa (depot); vì vậy, trang trạng thái standby (đứng cạnh) Sau đó, có trang dùng trở lại, mà nó không bị lấy lại ổ đĩa Một chiến lược pape out pool tạo nên việc đặt chỗ cho trang, dù các trang sử dụng khác Nếu có ít trang tự do, đó, người ta dùng chúng trở lại cho trang mới; và còn nhiều không gian trống nữa, đó, người ta đặt chúng lâu tí và khảo sát chúng là nơi đặt chỗ đầy tiềm cho hoạt động trang Vấn đề điều kiện biên: (116) Bên cạnh vấn đề chính giới hạn không gian nhớ phải phân chia có tranh chấp tiến trình, còn nhiều vấn đề khác, mà chúng có quan hệ chặt chẽ với việc điều hành trang Giới hạn lệnh: Ngắt lỗi trang, hoạt động nhờ việc định địa phần cứng, mà nó dẫn tới đình lệnh máy thực hiện, địa đích không nhớ Nếu với chế thay trang, trang mong muốn tồn nhớ chính, đó, lệnh này phải thực cách mẻ Tuy nhiên, điều này, hệ điều hành phải nhận biết: Có đâu lệnh tồn với nhiều Bytes (?), và không vậy, đâu lệnh đã tham chiếu địa không thuật lời (?) Từ lý này, lệnh cần thiết dẫn tới nhân tử, lệnh bị bẻ gãy thì nó không còn tác dụng nào cả, và không, lệnh cần thiết dẫn tới nhân tử khác, đó, địa ban đầu nó nạp vào ghi Nếu trường hợp nói trên không xảy ra, hệ điều hành phải khai khẩn tận lực các liệu cần thiết từ ngăn xếp mã microcode hay các biến khác, đó, thay trang làm trễ là không cần thiết Trang xuất nhập và trang chia xẻ (I/O pages and shared pages) Vấn đề tiếp theo, đó là việc xử lý các trang đặc biệt Nếu tiến trình, trao đổi liệu I/O đụng chạm tới và tiến trình khác nhận vi xử lý, đó, điều có thể là, trang I/O tiến trình chờ đợi nạp vào không gian phân bổ nhớ toàn cục và trang vật lý trao cho cách mẻ Nếu sau thay đổi trang, vi xử lý I/O nhận điều khiển, đó, trang sai (page fault) sử dụng cho I/O; rủi ro, nó sử dụng cho hai tiến trình Trong trường hợp này, việc khắc phục tạo nên dấu hiệu các trang I/O và nó thực việc loại bỏ trang đánh dấu thay trang Một vấn đề các trang, đó là các trang, mà chúng sử dụng nhiều tiến trình (thí dụ: shared pages), trang mã thư viện chung (thí dụ thư viện ngôn ngữ C) Những trang này có ý nghĩa đáng kể, chúng không cho phép nạp cùng với tiến trình hay thời điểm kết thúc chúng phép đan nhau, chúng tiến trình khác tham chiếu Ngay các thuật toán thay trang, điều đó phải quan tâm tới Paging demon (lập trang ma): Công việc các thuật toán thay trang có thể trở nên hiệu suất hơn, người ta xem xét mã (code) là tiến trình lập trang ma (paging demon) và người ta nó xảy trạng thái không tải cách đặn Theo đó, yêu cầu không làm thích hợp, mà còn có thể dọn dẹp cho không gian trống; đó thông tin thống kê trở nên bách và dịch vụ hệ thống thực hiện, thí dụ việc điều hành chiến lược page out pool nói trước đó 3.3.7 Chiến lược thay trang hệ điều hành Unix: Ở Unix, có hai chế trợ giúp Đó là swapping và paging (xếp chồng và lập trang) Việc thu xếp nhớ trực tiếp chế swapping luôn luôn sử dụng, là, nó dùng thời gian truy cập nhanh Vì vậy, việc sản sinh tiến trình, thì đặt (117) chỗ không gian nhớ khoảng swap cho việc nạp tiến trình dự đoán Khoảng swap có thể tự tổ chức cách khác nhau, nó thì có thể là đơn vị vật lý hay là đơn vị logic, nó có thể là phần ổ đĩa hay là phần hệ thống files Những nguồn gốc sinh sản này thực dãy khoảng thời gian truy cập Đối với việc thay trang, hệ điều hành Unix có cạnh tranh hai chế vừa nói, vì chúng thực tiến trình ( background processes) Tiến trình để nạp trang đặt trở lại các Bits R tham chiếu trang với khoảng thời gian đặn Sauk hi đặt trở lại, tiến trình chờ đợi thêm khoảng thời gian ∆t và tiếp tục nạp tất các trang, Bits R đạt giá trị Tuy nhiên, chế này có hiệu lực nhỏ 25% không gian trống nhớ chính sử dụng (điều đó có nghĩa là: dung lượng nhớ chính giảm vì nó phải bao gồm dung lượng nhân hệ điều hành, các tiến trình nền, kích tạo các thiết bị, giao diện người sử dụng…) Vì việc chạy lướt qua tất các trang xảy quá lâu thị, vậy, Unix có thêm thị thứ hai để thực việc kiểm tra lại các Bits R và việc nạp trang, thị này chạy khoảng thời gian ∆t nói trên Thuật toán thị này đảm nhiệm hệ thống Unix V Để chinh phục hoạt động nạp trang mà không có điều gì xảy ra, thì trang nạp chúng lại n lối qua liên tiếp chưa dùng Nếu còn ít không gian nhớ có thể dùng, đó, hoạt động nạp trang giá trị ngưỡng cửa xác định tiến trình swap, nó tác động các tiến trình dài và nó nạp trên nhớ quảng đại, không gian trống nhớ đạt nhỏ nhất.Nếu các hoạt động nạp trang đè lên nhau, đó, các tiến trình hoạt động trở lại Trong hệ thống Unix V, cho cái đó, có hai giá trị max và thực để tránh lưỡng lự khoảng giới hạn Nếu chúng ta khảo sát tiến trình lớn mà nó nạp, đó, không gian trống nhớ gia tăng rõ rệt Bây giờ, tiến trình nhận trở lại, thì không gian trống nhớ giảm cách nhịp nhàng giới hạn can thiệp (chiếm đủ) và tiến trình nạp trở lại Sự dao động trang xuất hay nạp vào có thể hạn chế không gian trống nhớ lớn giá trị (khi tiến trình nạp), mà không lớn giá trị max (khi không có tiến trình nào xuất đi) Nếu không có phương tiện nào để tránh hiệu thrashing effect, đó, phải điều hành hệ thống can thiệp Những biện pháp dùng thiết bị phân cách (swap device) để tách chia hệ thống xấp và hệ thống files, việc phân bổ xếp chồng hay lập trang trên nhiều ổ đĩa, hay việc tạo lập các nhớ chính phụ có thể mang lại giảm nhẹ mong muốn 3.3.8 Chiến lược thay trang Windows NT: Ở các chương trình trước đã nghiên cứu các chiến lược toàn cục và nghiên cứu nhiều thuật toán thay trang Chúng thuận tiện sử dụng để quản lý nhớ, và chúng mang lại nhiều kết khả quan Ngược lại, hệ điều hành Windows NT, chiến lược thay trang bình thường còn liên quan đến chiến lược thay trang cục FIFO Những lý thật đơn giản: Vì chiến lược thay trang toàn cục có tác dụng từ tiến trình này tới tiến trình khác, đó, với tiến trình nào đó, các chế thực thi chọn chiến (118) lược, mà nó giới hạn cục trên tiến trình riêng lẻ, để xác định cách tích cực phê phán người sử dụng hệ điều hành Với tiến trình khác, thuật toán đơn giản để thực thi chế thay trang và thuật toán FIFO có thể thực với tiêu phí thời gian ít nhất, đó, trường hợp bình thường, thời gian thực các chiến lược giảm đáng kể Nhờ thế, lỗi hạn chế; lỗi thường xuất nạp trang; đó, đầu tiên, các trang chuyển chiến lược page out pool nhớ chính; từ đó, chúng dễ dàng nhận trở lại Tuy nhiên, có ít nhớ hệ thống; đó, chế thứ hai có hiệu lực gọi là chế xén tỉa tự động tập công tác Với chế này, tất các tiến trình dẫn qua và kiểm tra, liệu chúng có sử dụng nhiều trang không, mã các trang này là số tối thiểu cố định Số các trang tối thiểu này có thể điều chỉnh khoảng giới hạn xác định người quản lý hệ thống Con số hành các trang sử dụng cho tiến trình thì biểu thị là tập công tác Windows NT (ngược lại với định nghĩa nêu trên) Nếu tiến trình sử dụng quá nhiều trang tập công tác tối thiểu; đó, các trang nạp và tập công tác bị thu hẹp Bây giờ, tiến trình có số tối thiểu các trang, nó phát sinh lỗi trang và không gian nhớ chính lại tồn trở lại (được giải phóng), đó, độ lớn tập working set lại gia tăng và tạo cho tiến trình có nhiều không gian nhớ Ở việc sản sinh tiến trình, phương pháp có tên clustering methode áp dụng: số trang dẫn trước đó và sau đó bổ sung cho các trang còn thiếu, với mục đích tiếp tục làm giảm xác suất lỗi trang Điều đó phù hợp với chiều dài trang có kích cở hiệu cao Một biện pháp là tạo lập việc áp dụng phương pháp copy on write, mà phương pháp này thì đặc biệt hiệu nghiệm sản sinh tiến trình hệ thống POSIX với hàm fork() Vì các trang tiến trình cha làm dấu với Bit theo phương pháp copy on write và sau đó tiến trình thực nhờ hàm gọi hệ thống exec() và chịu tải mã chương trình khác, đó, các trang tiến trình cha không cần thiết phải chép lại và vì thế, tiết kiệm thời gian Ở các files thư viện kết nối động (Dynamic Link Library- DLL), chế tương tự sử dụng, đó các files này đưa tới lần Các liệu tĩnh (static data) chúng bảo nhờ trạng thái copy on write Bây giờ, tiến trình khác truy cập và các liệu thay đổi; đó, các liệu chép trên cung liệu riêng lẻ (private data segment) 3.4 Sự phân cung (segmention) Cho tới bây giờ, nhìn nhậ chúng ta nộ nhớ ảo mô hình hóa là trường liện tục đồng Thực chất, hình dạng nhớ này không người lập trình sử dụng Vì lẽ, có đoạn cung liệu (datasegments) luôn luôn quay trở lại dạng các ngăn xếp hay các xấp (stacks or heaps), nghĩa là chúng thay đổi cách động, và đó, chúng cần dùng với đoạn không gian địa Trong hình 3.28 (a) cách bao quát cấu trúc logic dẫn giải nhớ chương trình Unix Trong hình 3.28 (b) phân chia nhớ trình biên dịch Ở đây, vấn đề dẫn tới là, đoạn cung các liệu công tác có thể thay đổi và thu hẹp phạm vi,mà đó thực (119) chương trình Ví dụ: bảng tượng trưng có thể thay đổi khoảng mã nguồn Do đó, nó dẫn tới chồng chéo các không gian địa Hình 3.28***************** Từ lý này, chúng ta hoàn thiện mô hình đơn giản nhớ ảo với trợ giúp việc phân đoạn logic tới nhớ ảo phân đoạn Để thực thi việc quản lý nhớ kiểu mô hình, vị trí bảng trang, mô hình này sử dụng bảng các địa cung đoạn Bảng cung đoạn thuận tiện cho chương trình hay modun chương trình, bảng này giữ các ghi thích hợp; các ghi cung đoạn với tư cách là copy nhằm tăng tốc độ tính toán các địa ảo và địa vật lý Ở việc chuyển đổi các chương trình hay các modun chương trình, chúng đồng thời nằm nhớ chính và có nhóm các ghi cung đoạn nạp Trong hình 3.29 sau đây thí dụ đơn giản việc định vị cung đoạn vi xử lý 80286 (của hảng Intel), đó hai đoạn cung mã và hai đoạn cung liệu toàn cục Nếu người ta sử dụng các đoạn cung này nhiều chương trình, đó, người ta cần dùng bảng cung đoạn và khoảng liệu toàn cục hay khoảng ngăn xếp hệ thống, thí dụ áp dụng điều này để trao đổi thông tin các chương trình Điều thuận tiện là để cố định các thị (pointer) tới các segment ghi Ở vi xử lý 80286, nó bao gồm ghi cung đoạn mã, ghi cung đoạn liệu, ghi cung đoạn ngăn xếp và ghi cung đoạn liệu nâng cao Hình 3.29******************* Vì các cung đoạn rõ đơn vị nhớ có độ lớn không đặn, đó, nhớ có thể điền đầy giải phóng cung đoạn lớn hay nạp cung đoạn nhỏ Từ lý này, thường xuyên tráo đổi trang, nó có thể dẫn tới việc tách nhỏ nhớ; phần nhỏ còn lại thì có thể không dẫn gi thêm và có thể gom lại Do đó, việc lập trang và việc phân đoạn liên hợp với để dành lại ưu điểm phương pháp: Mỗi cung đoạn phân nhỏ thành nhiều trang đặn Hình 3.30 cách tổng quát vi xử lý 80486 hảng Intel, các cấu trúc liệu phân đoạn thành hai phần: cung đoạn cục mô tả bảng miêu tả cục (local description table), nó tồn cách riêng lẻ tiến trình và nó thực biên dịch các địa cung đoạn ảo khuôn khổ trang vật lý, cung đoạn toàn cục bảng miêu tả toàn cục (global description table), nó tạo khả truy cập các liệu thu gom trên cung đoạn toàn cục tất các tiến trình Trước hết, đó là mã hệ điều hành mà nó tiến trình trả lại trạng thái nhân, các khoảng nhớ (shared memory) hệ thống Trong hình 3.30 vài cung đoạn tiến trình hoạt động B cho thấy: Tiến trình chưa hoạt động A chờ đợi phân bổ vi xử lý nhớ Các cung đoạn biểu thị thành khối, mà đó, chúng thâu tóm các bảng mô tả trang với các khung trang Người ta thấy rằng, chuyển đổi tiến trình quá đọ trên không gian địa ảo tiến (120) trình A thì đơn giản: Ở ghi LDT, người ta phải nạp thị thời gian khác tới bảng LDT tiến trình A, đó là tất Ưu điểm nhớ ảo phân đoạn là chỗ có định vị địa việc quản lý nhớ hiệu nghiệm Các địa sở cung đoạn thì cố định, và với cái đó, các ghi tồn CPU, thì bậc đầu tiên việc chuyển đổi địa xảy nhanh Nếu cung đoạn cấu trúc đồng (tức là không có lỗ hổng địa chỉ), đó, mô hình khảo sát cải tiến: Mỗi cung đoạn nhớ (memory segment) tăng hay giảm, thì các bảng nhiều bậc, việc sản sinh hay loại bỏ các bảng bổ sung xảy động Tuy nhiên, phương cách kết hợp các cung đoạn và các trang thực cần thiết, vì hai thông tin quản lý (về bảng cung đoạn và bảng trang) luôn luôn xuyên suốt, cải tiến và sử dụng Từ lý này, các vi xử lý ngày nay, các ghi địa và các MMU đã tiếp nhận vị trí quan trọng bên cạnh khả tính toán khiết: Chúng định tốc độ xử lý các chương trình 3.5 Bộ nhớ truy cập nhanh (Cache) Ưu điểm cấu trúc CPU tốc độ nhanh dẫn tới cách đúng đắn cho sinh lợi, nhớ chính không có dung lượng lớn mà còn phải có tốc độ nhanh Vì đây, các nhớ truy cập động DRAM (dynamic random acess memory) không thuộc loại nhớ ta muốn đề cập trường hợp này Tuy nhiên, để thay nhớ đắt tiền, người ta có thể sử dụng nhớ giá tương đối lẻ với lưu ý: mã chương trình (programcode) thường quan hệ cục với các liệu và với các chiều rộng bước nhảy Tính chất cục này các chương trình tạo điều kiện để đoạn chương trình nhỏ chép vào nhớ truy cập nhanh (cache) và đó đạt tốc độ xử lý cao Để làm đầy cache, khả đơn giản là, thay vì lựa chọn nội dung địa chỉ, người ta có thể lựa chọn nội dùng nhiều địa tương tự nhớ cache, trước các nội dung yêu cầu hiển thị Việc vận chuyển liệu nhớ DRAM thì tương đối chậm và thực qua lần Ở nhớ cache, việc vận chuyển khối liệu (chẳng hạn Bytes) thì nhanh nhờ bus, gọi là pipline cache bus Loại nhớ cache này làm gia tăng khả vi xử lý lên khoảng 20% Hình 3.31 sơ đồ vị trí sử dụng nhớ cache Hình 3.31.********************* Nếu nhớ cache chứa đựng nhiều liệu, đó điều dễ nhận thấy, lúc đó các liệu không hành hay chưa cần dùng cho trôi qua Một dị tổng hợp cache chứa đựng các chế bổ sung để thực nội dung cache Vì thế, tất việc dò hỏi địa CPU cache xử lý đầu tiên; đó, các lệnh và các liệu, nhớ cache bị tách chia (thành cache lệnh và cache liệu) sử dụng Nếu nội dung địa này tồn cache, đó, cache chọn cách trực tiếp và nhanh chóng, mà không phải chọn nhớ chính Nếu địa không tồn tại, đó, cache phải nạp lại từ nhớ chính Hình 3.32 sơ đồ nguyên lý kết nối cache máy tính (121) Hình 3.32************************* Tuy nhiên, nhớ cache chuẩn bị cho các nhà phát triển hệ điều hành nhiều vấn đề nhức óc Không phạm vi đa vi xử lý, mà máy tính đơn vi xử lý, có đơn vị (units) làm việc song song và độc lập với CPU, thí dụ các thiết bị xuất nhập (đĩa từ…), xem hình 3.33 Nếu các thiết bị này truy cập trực tiếp nhớ để đọc hay viết các khối liệu, đó, việc ngắt đoạn làm ảnh hưởng việc xử lý chương trình Bởi điều đó cho thấy, cache và nhớ chính phải thực độc lập với Hình 3.33********************* Điều dẫn tới kết nối không bền vững các liệu với cache và nhớ chính giải các chiến lược khác Trong trường hợp này, người ta định chọn vi xử lý thứ hai làm nhớ cho việc đọc và viết Trong trường hợp thứ nhất, đáng lẽ các liệu hành cache đọc, thì lại đọc các liệu cũ từ nhớ chính vi xử lý thứ hai Đối với vấn đề này tồn hai giải pháp: Viết qua (write through): Bộ nhớ cache đảm nhiệm là đệm đọc (read buffer); còn vi xử lý dùng để viết nhờ bus hệ thống nhớ chính Lúc đó, các liệu nhớ chính luôn luôn là hành Tuy nhiên, nó thì chậm, vì nó làm trễ vi xử lý Viết lùi (write back): Bộ nhớ cache tự giải việc tiến lùi lại mà không cần tới vi xử lý Đối với vi xử lý, điều đó xảy nhanh hơn, nó đòi hỏi chi phí phụ nhớ cache Cả hai chiến lược vừa nêu chưa loại trừ tình thứ hai, thiết bị khác thay đổi nhớ nhờ việc truy cập nhớ trực tiếp, mà không cần điều đó phản ảnh nhớ cache Để gói gọn vấn đề không ổn định liệu, nhớ cache phải trang bị thêm phần bổ sung, mà nó ghi lại, liệu địa phần này tham chiếu trên bus địa nhớ chính để đọc và viết hay không (!); trường hợp này có giải pháp thứ ba sau: Sao chép lùi (copy back): Nếu nhớ viết, đó, tế bào nhớ thích hợp cache thì Biit đặc biệt thiết lập Nếu CPU đọc tế bào nhớ này, đó, Bit thiết lập này có hội truy cập cache trên nhớ chính và vì thế, xác định tạo cần thiết có nhu cầu Đối với việc đọc nhờ đơn vị truy cập nhớ trực tiếp từ nhớ chính, người ta có thể áp dụng hai chiến lược nói trên, mà chúng có giá trị giải pháp thứ thời gian làm việc nhớ vi xử lý, hay chúng dẫn tới bất định liệu giải pháp thứ hai, việc chuyển tới truy cập nhớ trực tiếp xảy trước chép trở lại nhớ chính Đối với chịu tải xử lý, chi phí gia tăng là thích đáng, đó, không việc viết mà việc đọc nhớ chính các thiết bị phụ giám sát Nếu địa cảm nhận và số liệu nó tồn cache, đó, cache đáp lại và thông báo giá trị đúng tới vi xử lý truy cập trực tiếp Trong hệ điều hành, các chiến lược phần cứng thực khác nhau, thí dụ người ta có thể tiến hành nhờ việc truy cập nhớ không đồng dạng có kết nối cache, phương pháp này có tên là cc-NUMA (cache coherent non uniform memory access) Về điều này, hệ điều hành (122) phải tự điều chỉnh Nghĩa là, muốn nâng cao hiệu dụng cache phải lưu ý tới việc dự kiến các hoạt động cache; vì vậy, ta thấy, các hiệu dụng này không phải là không có điều gì các phần mềm Ví dụ, trạng thái nhớ chia sẻ hệ thống đa vi xử lý không phải các thiết bị viết qua hay chép lùi luôn luôn tồn Bấy trao đổi thông tin (thí dụ trình gỡ rối và tiến trình cảnh giới) nhờ nhớ chia sẻ có quan tâm tới điều đó và sau hoạt động, lập trình, các liệu tiến trình phải tìm kiếm và điều chỉnh Ở đây, các chế thực thi các phần cứng đã tạo nên trợ giúp quan trọng Thí dụ chiến lược MESI hảng Intel: Ở các hệ thống đa vi xử lý đối xứng, việc truy cập đồng thời các vi xử lý, tỷ phần bus hệ thống đắt, vì nó không dùng tới Ở đây, hạn chế này bù đắp cách: nhớ cache có xử lý đặc biệt, các liệu người sử dụng giữ gìn và xử lý cục Đối với các nhớ cache có tồn các liệu toàn cục, chúng giải theo chiến lược MESI hảng Intel sau: Ở cache, đơn vị nhớ có từ trạng thái (statusword), từ này biểu thị cho bậc thuận tiện M (modified), E (execlusive), S (shared) và I (invalid) Mỗi cache chứa đựng cảnh giới (snooper) dùng để kiểm tra số liệu cache, các số liệu vi xử lý khác làm thay đổi nhớ chia sẻ Đầu tiên, các yêu cầu số liệu kiểm tra, liệu số liệu đã điều chỉnh đúng chưa (?) Nếu chưa đúng, nó phải nhớ toàn cục tu chỉnh Nếu đúng rồi, thì thôi Điều quan trọng là, trước hết, phần mềm không nhận theo cái đó, đó, hệ điều hành các chương trình người sử dụng, các nhớ cache toàn cục hoạt động cách tốt đẹp Ngoài ra, còn có số chiến lược nhớ cache mà đây chưa cần thiết phải đề cập Vấn đề nhớ cache tức thời không các hệ thống đa vi xử lý, mà còn cấp bách hệ thống mạng máy tính Ở đó có nhiều đệm (buffer), chúng tác dụng nhớ cache Vì vậy, không quan tâm hệ thống vận chuyển thông tin hay hệ điều hành, chúng dẫn tới không bện vững liệu cách dễ dàng 3.6 Cơ chế bảo vệ nhớ Một các nhiệm vụ quan trọng là làm cô lập các chương trình với để loại trừ các lỗi, các tính chất sai trái và các xung đột cố ý các người sử dụng các tiến trình chúng Ở mô hình nhớ các cung đoạn ảo, chúng ta có tay nhiều phương tiện bảo vệ khác Ưu điểm việc định vị địa nhớ ảo việc định vị địa nhớ vật lý đem lại cho chúng ta nhiều khả để bảo vệ nhớ: Phải đạt cách lý hoàn toàn không gian địa các tiến trình với Vì tiến trình có không gian địa nhớ vật lý thì khác nhau, tức là các tiến trình không chồng chéo lên và không ảnh hưởng lẫn Phải xếp luật truy cập xác định khoảng nhớ (có thể đọc, có thể viết và có thể thực hiện) cách kiên cố và điều đó phải bảo đảm các phần cứng Thí dụ, (123) chương trình thực nghiệm để tự viết đè lên mã chương trình (xảy lỗi nhớ, lỗi lập trình, lỗi biên dịch hay virus), đó, nó dẫn tới tổn thất các luật lệ bảo vệ các segment, và với cái đó, dẫn tới vi phạm việc phân đoạn (segmentation- violation) Ngay việc sử dụng các thị (pointer) giới hạn nó thì có thể kiểm tra Một gây ảnh hưởng có chủ ý hay không có chủ ý tới các chương trình khác và tới hệ điều hành phải ngăn cản lại Phải định nghĩa cách khác luật truy cập đơn giản các người sử dụng khác nhau, và đó, phải thực việc điều khiển lối dẫn vào cách hoàn thiện 3.6.1 Bảo vệ nhớ Unix Ở hệ điều hành Unix có nhiều chế bảo vệ nhớ mô tả và tiện dụng Do đó đây không cần phải nêu thêm phác thảo bảo vệ nhớ Unix 3.6.2 Bảo vệ nhớ Windows NT Các cấu bảo vệ nhớ hệ điều hành Windows NT điền đầy nhiều tính chất thích hợp cho nhớ ảo, chẳng hạn việc cách ly các tiến trình cách khác nhờ tách chia các không gian địa chỉ, nhờ việc dẫn tới trạng thái người sử dụng, mà đó, cho phép người ta truy cập lên tất các khoảng có thể nhớ; cho phép chuyên môn hoá các luật truy cập (Read/Write/No) cho trạng thái người sử dụng và trạng thái nhân hệ điều hành Thêm vào đó, công việc kiểm tra cấu bảo vệ nêu tiến trình tìm kiếm lối vào nhớ dùng riêng hay dùng chung Vấn đề khó khăn là việc thực thi cấu bảo vệ tay, các cấu này có khác biệt lớn, mà khác biệt này tồn hình dạng ổ đĩa cứng khác (thí dụ vi xử lý R4000 khác với vi xử lý Intel Pentium, vì nó Windows NT version trợ giúp): cấu bảo vệ nhớ Windows NT đã trợ giúp phần cứng Với vi xử lý R4000 và trạng thái người sử dụng, người ta có thể truy cập trên 2GB, không xảy lỗi truy cập (access violation) Bấy giờ, nhà điều hành nhớ ảo làm việc trên các cấu phần cứng và tìm lỗi trang Đối với các luật truy cập đơn giản (Read only, Read/Write), chờ đợi các thông tin execute only (chỉ thực thi), guard pape (phòng vệ trang), no access (không truy cập) và copy on write (copy viết); thông tin này có thể đặt vào thủ tục với lệnh VirtualProtect() Sau đây, thông tin này giải thích cặn kẻ sau: Execute only (chỉ thực thi): Để tránh thay đổi và không cho phép việc copy các chương trình nguồn, mã chương trình sử dụng, việc viết và đọc liệu thì quan trọng Vì điều đó không phần cứng trợ giúp, nó giống hệt trường hợp Readonly Guard Page (phòng vệ trang): Khi tiến hành truy cập trang, có trang đánh dấu, đó, tiến trình người sử dụng phát sinh lỗi phân đoạn, còn gọi là ngoại lệ cảnh giới trang (guard page (124) exception) Điều đó tạo cho hệ thống hay cho tiến trình trường động, mà sau trang đánh dấu thì các phần tử trường truy cập Nghĩa là, sau lỗi phân đoạn qua đi, tiến trình truy cập trang trở lại cách bình thường Một thí dụ hay điều đó là cấu để điều chỉnh độ lớn stack Độ lớn này gia tăng với trợ giúp ngoại lệ cảnh giới trang cách động có nhu cầu No access (không truy cập): Việc đánh dấu trang ngăn ngừa, người ta truy cập các trang bị cấm hay các trang tồn tại.Tình trạng này áp dụng hầu hết để nhận trợ giúp hay để thu gom lỗi gỡ rối (debugging) Copy on write (copy viết): Cơ cấu để giải vấn đề copy on write giải thích cuối mục 3.3.6; cấu này có thể sử dụng để bảo vệ các khoảng nhớ Nếu khoảng nhớ dùng chung các tiến trình trở thành khoảng nhớ dùng riêng, đó, xếp gian địa ảo (xem hình 3.9) tiến hành; vậy, các trang ảo tiến trình coi là copy on write Bây giờ, tiến trình tiến hành viết trang thế, đó, đầu tiên việc copy tạo lập (với các luật đọc/ viết mà không cần luật copy on write trên trang) và sau đó, tác vụ thực Bấy giờ, tất việc trang diễn trên copy riêng lẻ và không cần trên gốc Một chế bảo vệ nhớ quan trọng là việc dập bỏ nội dung trang, phương pháp này đòi hỏi cấp bảo vệ đúng yêu cầu, trước trang sử dụng cho tiến trình người sử dụng Ở quá độ trang từ trạng thái free (trống) đến trạng thái zeroed (điền đầy), điều nói trên nhà quản lý nhớ ảo thực 3.6.3 Các cấp bảo vệ Một phác thảo đưa phương pháp bảo vệ nhớ bổ sung để dẫn tới các bước bảo vệ người sử dụng Những trạng thái nói chương trạng thái người sử dụng, trạng thái nhân hệ điều hành là phân chia Chúng bao gồm bậc chính: Bậc đặc quyền: Bậc này dành cho tiến trình làm việc trạng thái nhân hệ điều hành (kernel mode) Trong đó, mã bảo vệ phép tất cả, thí dụ phép truy cập tất địa nhớ Bậc không đặc quyền: Bậc này dành cho tiến trình làm việc trạng thái người sử dụng (used mode) Trong đó, tiến trình không thể truy cập trên hệ điều hành và trên tất các tiến trình khác Mỗi bậc bảo vệ nhớ này còn tiếp tục chia nhỏ nữa, đó, các bậc nhỏ này còn xếp theo độ tin cậy, nó người ta đại diện bậc nhỏ vừa nói Tác dụng nó phụ thuộc mạnh mẽ vào xếp này chúng trợ giúp phần cứng Thí dụ các bậc bảo vệ vi xử lý Intel 80386: (125) Dãy mở rộng các vi xử lý 80x86 chế ngự nhiều bậc bảo vệ các phiên ngày càng đại Nếu vi xử lý đặt trở lại nhờ tín hiệu điện, đó, nó tồn trạng thái thực (read mode) và với điều đó, vi xử lý 8086 hay 80186 thì tương thích Không gian địa hữu ích thì đồng với không gian địa vật lý, đó, các tiến trình có thể quấy nhiễu lẫn Nói chung đó, hệ điều hành điều chỉnh theo phương pháp reset (đặt lại) Hệ điều hành tạo bảng theo kiểu bảo vệ nhớ này Sau đó, nó đặt với các Bit trạng thái ảo (vitual mode-Bit), các Bits này không thể đặt trở lại, đó, cần tới tác động nhớ MMU Tất việc truy cập nhớ sử dụng địa ảo, giờ, đầu tiên chúng phải biên dịch, tức là, tất các tiến trình đã dự kiến cách biệt với không gian địa ảo Với kiểu địa ảo, vi xử lý 80386 có bậc bảo vệ: bậc cho chương trình người sử dụng, bậc cho thư viện dùng chung, bậc cho gọi hệ thống và bậc cho kiểu nhân hệ điều hành Hai Bit để biểu diễn bậc thực với tư cách là thông tin truy cập việc mô tả các trang và các segments, và chúng còn định luật lệ truy cập Nếu việc truy cập bị từ chối, đó, dẫn tới việc bẻ gãy lỗi Các bước nhãy chương trình và việc gọi thủ tục mã bậc khác điểu chỉnh cách mạnh mẽ Để gọi thủ tục bậc khác thì lệnh đặc biệt CALL sử dụng, lệnh này kiểm tra việc truy cập cấu trúc liệu có dạng call gate và sau đó sử dụng các địa bước nhãy tạo trước đó thủ tục Do đó, bước nhãy chưa kiểm tra bị loại trừ 3.7 Các bài tập chương 3.7.1 Các bài tập che phủ nhớ Bài tập 3.1 Các chiến lược che phủ Nếu cho hệ thống tráo đổi (swappingsystem), mà nhớ nó bao gồm các khoảng trống theo thứ tự sau: 10kB, 4kB, 20kB, 18kB, 7kB, 9kB, 12kB, và 15kB Khoảng trống nào chọn đầu tiên cho vừa vặn tốt yêu cầu cần nạp các không gian nhớ là 12kB, 10kB, 9kB Bạn hãy nhắc lại các yêu cầu cho các trường hợp tốt nhất, tồi và tạm (kể vẽ sơ đồ) 3.7.2 Các bài tập nhớ ảo Bài tập 3.2 Xác định địa a) Bạn hãy tính toán các địa vật lý từ các địa ảo 2204H và A226H Độ dịch vị là 13 Bit và số trang là Bit Bạn hãy sử dụng bảng trang sau đây: Trang Khung trang 7 (126) b) Việc quản lý nhớ phải mở rộng nào, mà nhờ đó, trang cập phát? Bài tập 3.3 Về các bảng địa Một thiết bị địa ảo 128 Bit và địa vật lý 32 Bit Các trang có giá trị kilo- từ (kiloword:kW) a) Có bao nhiêu lần điền vào sử dụng cho bảng trang thông thường? b) Có bao nhiêu bậc sử dụng cho bảng trang kiểu nhiều bậc (mức), để tồn với kích cở bảng trang nhỏ mêga-từ (mega-word: mW)? Ở đây, người ta hiểu word = điền vào Bài tập 3.4 Về bảng trang đa bậc Một thiết bị có không gian địa ảo Việc quản lý nhớ sử dụng bảng trang bậc nhớ Cache (được liên kết lại), gọi là đệm dịch chuyển phía nhìn thấy (translation lookside buffer: TLB) với tỷ phần gặp trung bình khoảng 90% Bạn hãy lưu ý rằng, truy cập có thể thực hai cách: sử dụng đệm TLB hay nhờ bảng trang a) Sự tiêu phí thời gian trung bình trên nhớ chính bao nhiêu, thời gian truy cập nhớ là 100ns và thời gian truy cập đệm TLB là 10ns ? Giả sử không có lỗi trang xuất b) Ở câu (a) các lỗi trang bỏ qua Bây giờ, chúng ta muốn nghiên cứu trường hợp đơn giản, mà đó các lỗi trang xuất truy cập nhớ chính Giả sử các bảng trang nhớ chính và không cấp phát ! Khi đó tần suất các lỗi trang là 1:105 và lỗi trang 100ns Vậy thời gian truy cập trung bình trên nhớ chính là nào? Gợi ý: Bạn hãy áp dụng biểu thức quan hệ sau đây: Thời gian truy cập trung bình = Thời gian gặp + Tỷ phần truy cập hỏng x Thời gian truy cập hỏng c) Việc điều hành đa chương trình gây vấn đề gì đệm TLB và nhớ Cache khác ? Trước hết, bạn hãy nghĩ tới nhận dạng các khối 3.7.3 Các bài tập quản lý trang và nhớ Cache Bài tập 3.5 Về các chuỗi tham chiếu Cho chuỗi tham chiếu sau đây: 3 5 Mỗi lần truy cập trang xảy khoảng đơn vị thời gian a) Hỏi có bao nhiêu lỗi trang tập Working set dẫn kích cở cửa sổ h =3 ? b) Nó dẫn tới vấn đề chiến lược mở rộng nào, trang nạp vào tập working set? Bạn hãy suy nghĩ, nào thì có lợi để thiết đặt trang tập Working (127) set, và nào thì có lợi để thêm vào trang và để thay đổi kích cở cửa sổ h cách động; trường hợp kích cở lớn tập Working set chưa đánh giá ! Bài tập 3.6 Về các chiến lược cấp phát Có máy tính chiếm khung trang Tại thời điểm nạp lần truy cập sau cùng, các giá trị M và R (Bit) trang dẫn sau (thời gian tính tiếng kêu tích tắc đồng hồ): a) Trang nào chiến lược NRU thay ? b) Trang nào chiến lược FIFO thay ? c) Trang nào chiến lược LRU thay ? Bài tập 3.7 Về tập Working set a) Dưới khái niệm Working set chương trình, người ta hiểu cái gì ? Nó có thể thay đổi nào ? b) Việc gia tăng số lượng các khung trang nhớ công tác có hiệu nào quan hệ với số lượng các lỗi trang ? Điều đó mang lại hiệu nào trên các bảng trang ? Bài tập 3.8 Về hiệu ứng Thrashing a) Cái gì gây nên hiệu ứng thrashing ? b) Hệ điều hành có thể phát hiệu ứng thrashing nào và nó làm gì để chống lại hiệu ứng này ? c) Một hệ thống có thông số hệ thống sau đây: 1) s =3; v = 14/15, σ1 = 0,5; ρ1 = 1/15; ρw = 1/20 2) s =3; v= 14/15; σ1 = 0,5; ρ1 = 1/15; ρw = 1/10 Khi số lượng các tiến trình gia tăng, tính chất tải nào ? Tại chỗ nào có gia tăng đột biến ? Bài tập 3.9 Về nhớ Cache Bộ nhớ Cache có thời gian truy cập 50ns Trong thời gian này, vi xử lý có thể truy cập trên nhớ Cache không có chu trình chờ đợi và trên nhớ chính với chu trình chờ đợi Tỷ phần gặp việc truy cập trên nhớ Cache là 80% Thời gian chu trình hướng bus vi xử lý là 50ns Bạn hãy tính: a) Thời gian truy cập trung bình ca làm việc ? b) Số lượng trung bình các chu trình chờ đợi cần thiết ? (128) CHƯƠNG 4: QUẢN LÝ TỆP TIN 4.0 Quan niệm quản lý tệp tin (Files Manager) Ở việc bẻ gãy tiến trình hay sau hoàn thành tiến trình, câu hỏi đặt là: Bạn lưu trữ liệu bạn nào, để sau này, bạn có thể làm việc trở lại với cái bạn đã có? Tính chất này liệu gọi là cố định liệu, người ta đạt liệu viết vào nhớ quảng đại trước kết thúc chương trình Tuy nhiên, chúng ta còn vấn đề: Ở phần lớn nhớ quảng đại, danh sách các tệp tin quá dài, người ta muốn thời gian truy cập phải ngắn Do đó, trường hợp này có thể dẫn tới cách thức tổ chức tệp tin để quản lý các tệp liệu hệ thống máy tính 4.1 Hệ thống tệp tin (Files- System) Để phục vụ việc quản lý tệp tin, đầu tiên, chúng ta viết tất các tệp tin vào danh sách và cần lưu ý: chúng ta cần phải biết cái gì đó tệp tin, thí dụ ngày tháng năm tạo lập, dung lượng, vị trí nhớ quảng đại, luật truy cập… Một bảng thì không khác ngân hàng liệu Nếu chúng ta dẫn tới thuộc tính liệu và kể các tác vụ (như các thủ tục, các phương pháp tiến hành…), mà nó xử lý, đó, chúng ta nhận ngân hàng liệu hướng đối tượng Ngoài ra, chúng ta có các đối tượng âm và hình ảnh, mà chúng chương trình sinh hay sử dụng, lúc đó, chúng ta cần dùng ngân hàng liệu đa phương dụng (multimediadatabank), đó, thông tin chứa đựng để làm đồng hai phương dụng Một cách khái quát, không có đối tượng nào thì việc điều hành lưu trữ liệu cố định phát triển; còn các ngân hàng liệu lớn thì hệ thống điều hành sở liệu hướng đối tượng phát triển Chúng ta có thể sử dụng tất các cấu có trên danh mục các tệp tin nhớ quảng đại, các chế này tìm thấy để tổ chức cách hiệu các ngân hang liệu hình cây; với cấu trúc này, người ta có thể tìm kiếm nhanh các tệp tin với dấu hiệu xác định (ngày tháng tạo lập tệp tin, tên tác giả…) Tuy nhiên, chúng ta phải quan tâm tới vấn đề, mà chúng liên quan đến ngân hàng liệu Một vấn đề là cố định liệu: Nếu chúng ta tạo lập, loại bỏ hay thay đổi các liệu tệp tin trên nhớ quảng đại, đó, điều đó phải giải thích bảng danh mục các liệu Nếu tác vụ này bị bẽ gãy, thí dụ vì lý nào đó, tiến trình viết bị bẻ gãy (thí dụ nguồn điện), đó, liệu bảng danh mục thì không còn thích hợp Ở các tác vụ tiếp theo, người ta đã làm quen cấu quan trọng mục 2.3.2, đó là việc kết hợp nhiều tác vụ thành hoạt động nhân tử Để phát sai sót hệ (129) thống tệp tin, tất các tác vụ trên danh mục tệp tin phải thực thi với tư cách là hoạt động nhân tử Việc ký hiệu tên tệp tin với cái tên có ghép thêm chữ số là trợ giúp quan trọng người sử dụng Trong bảng danh mục các tệp tin hình 4.1 có thể tồn tệp tin với các tên giống Teptin1.dat và Teptin2 dat; chúng khác chữ số, đó, việc quản lý tệp tin, chúng khác rõ ràng Hình 4.2 sơ đồ tổ chức quản lý tệp tin Ở đây, tệp tin có thể đứng độc lập (Tệp tin X), có thể thuộc nhóm các tệp tin (Tệp tin 1, Tệp tin m…) Hình 4.2 Các nhóm nhỏ có thể gộp lại thành nhóm lớn tuỳ thuộc vào người sử dụng, cho nó trở thành cấu trúc cây để sử dụng Kiểu tổ chức tệp tin này thì phổ biến Các đại diện nhóm biểu thì là thư mục Một kiểu tổ chức quản lý các tệp tin dùng để tổ chức ngân hàng liệu, mà đó, tất các tệp tin mô tả với các tính chất và các hiển thị nội dung Sự lưu ý các tệp tin thì tồn thư mục liệu Trong hầu hết các hệ điều hành, hệ thống tệp tin có sơ đồ đơn giản dùng Hình 4.3 Một kiểu sơ đồ khác thường dùng, đó là kiểu sơ đồ tổ chức tệp tin kiểu mạng, hãy xem thí dụ hình 4.3 trên đây Ở đó thư mục Ban a và Ban b có thể nối ngang với tệp tin Thongbao dot công ty, vì tệp tin này luôn luôn tồn 4.2 Tên tệp tin (Filesname) Dữ liệu các tiến trình không phải bảo vệ bền vững trên nhớ quảng đại, mà đặc biệt phải tạo khả truy cập qua các tiến trình khác nhau, đó, tệp tin biểu thị từ khoá rõ ràng Vì cách tổ chức hệ thống quản lý tệp tin hầu hết người thực hiện, giống việc lập trình các tiến trình để truy cập các tệp tin, tên tệp tin có thể giống nhau, khác, tệp tin có thêm số, coi biểu thị khoá tượng trưng…, thí dụ Vanban1.doc, Vanban2.doc…Cách làm này có lợi cho việc quản lý nội các tệp tin (vị trí, dung lượng) cách dễ dàng Tệp tin có thể thi hành hay đặt chỗ nào đó tron nhớ mà tệp tin không bị thay đổi 4.2.1 Kiểu tệp tin và tạo tên tệp tin Một cách truyền thống, nói chung tên tệp tin gồm hai phần, chúng ngăn cách dấu chấm: phía trái dấu chấm là tên riêng, còn bên phải là (130) phần mở rộng (extension) Phần mở rộng này cho thấy trợ giúp mục đích sử dụng tệp tin Thí dụ tên tệp tin Vanban.txt, ý nói: tệp tin Vanban có kiểu mở rộng txt là loại tệp tin text cấu thành các ký tự theo chuẩn ASCII Có quy ước khác cho phần mở rộng, thí dụ sau: dat cho liệu việc tạo kiểu dạng phụ thuộc vào chương trình tạo lập; doc cho các văn text việc tạo dạng theo kiểu soạn thảo text; pas cho mã nguồn chương trình viết ngôn ngữ PASCAL; c cho mã nguồn chương trình viết ngôn ngữ C; h các tệp tin khai báo cho các chương trình viết ngôn ngữ C; ps các tệp tin ngôn ngữ lệnh đồ hoạ cho máy in Laser; tar hệ thống tệp tin lưu trữ tệp tin; html tệp tin văn ASCII cho hệ thống text đặc biệt trang WEB; Z ; zip; gz cho các tập tin nén lại; jog; gi; ti; bmp cho các tệp tin ảnh Người ta ghi nhớ rằng, phần mở rộng tệp tin chứa đựng ít ký tự cổ xưa Điều đó lý giải rằng, hệ thống tệp tin thông thường cho phép vài ký tự làm phần mở rộng và mặc khác, nó thuận tiện cho người sử dụng không phải viết quá nhiều Có nhiều kiểu phần mở rộng, mà chúng tạo hệ thống người sử dụng và chúng phục vụ cho việc phân nhóm các tệp tin Vì tên tệp tin nói chung là tuỳ ý và có thể sử dụng thay đổi, đó, người lập trình đã chú ý tới cái đó, nhằm làm cho tệp tin rõ công dụng chúng Ở đầu tệp tin, hay nhiều kiểu chữ số ảo (magic number) viết, mà chúng cho phép đặc tính chính xác nội dung tệp tin Thí dụ tên tệp tin Unix: Tên tệp tin hệ điều hành Unix, có thể có tới 255 ký tự Với Unix version V, số ký tự tên tệp tin có ít 14 ký tự cho phần chính và 10 ký tự cho phần mở rộng Các tệp tin thực thi Unix có cấu trúc sau: TYPE File Header = RECORD a_magic: LONG CARDINAL {số ảo} a_txt: CARDINAL {độ lớn Codesegment} a_data: CARDINAL {độ lớn Segment các liệu khởi xướng} a_bss: CARDINAL{độ lớn Segment các liệu không khởi xướng} a_syms: CARDINAL {độ lớn bảng biểu trưng Symboltable} a_entry: CARDINAL {sự bắt đầu chương trình} … END Tuy nhiên, số ảo đứng đầu tên tệp tin; chúng không dẫn tới giải thích điều đó (cho thấy tệp tin có thể thực thi), mà còn, phương pháp nào tệp tin thực hiện: (131) a_magic= 407B {tạo dạng tất cả: mã không bảo vệ không sử dụng cho tiến trình khác} a_magic= 410B {Text-Segment bảo vệ Data- Segment đặt giới hạn trang cuối cùng (4kB) nhớ} a_magic= 413B {Text- Segment bắt đầu giới hạn 4kB tệp tin; Text và Data-Segment là bội số 4kB} Để phân biệt các loại tệp tin khác nhau, đó là đánh giá khả có thể thực thi khởi động tệp tin Loại phân biệt này thì đặc biệt Sau đây chúng ta khảo sát vài thí dụ kiểu phân biệt tệp tin này Thí dụ kiểu và tên tệp tin: Trong Unix hay Windows NT, kiểu cách tệp tin biểu thị nhờ cái tên Thí dụ tên tệp tin Script.ps.gz có ý nghĩa: đó là tệp tin nguyên (Script), mà ấn nó đã nén lại dạng tái bút (postscript) với chương trình nén zip Để đọc tệp tin này, đầu tiên, người ta phải gọi chương trình gunzip, và sau đó, tệp tin chuyển tới cho máy in Postscript Kết dẫn là cải biên: nó không chứa đựng tệp tin, mà còn chứa đựng kiểu tệp tin nén Đối với tệp tin này, kiểu tệp tin dẫn thư mục, đó, người ta có thể thực tác vụ thứ hai Việc tạo kiểu tệp tin phải cắt nghĩa tệp tin hay nó phải là kiểu xếp nhiều lần các kiểu Điều đó có thể nói gọn là: phải giải thích kiểu lập rõ ràng và phải đưa vào hoạt động thích hợp cho các kiểu đó Thí dụ kiểu tệp tin và các hoạt động chương trình Unix: Ở hệ điều hành Unix có giao diện đồ hoạ người sử dụng, quản lý tệp tin bao hàm giao diện này Điều đó cho thấy, các tệp tin chuyên dụng ứng với phần mở rộng dẫn tới tác động khác chương trình, điều đó là Menu (thực đơn) kích chuột phải Khi kích đôi chuột trái tên tệp tin, thì hoạt động dẫn Menu bắt đầu khởi động Thí dụ kiểu tệp tin và hoạt động chương trình Windows NT: Dưới Windows NT có trình soạn thảo Editor, trình này quản lý ngân hàng liệu riêng tất các ứng dụng, kích tạo hệ điều hành và các cấu hình hệ thống…Tất các chương trình hệ thống các phần mở rộng khai báo đó Khi kích đôi chuột trái trên tệp tin trình quản lý tệp tin thì chương trình gọi Người ta lưu ý rằng, hai thí dụ vừa nêu, thông tin kiểu tệp tin thường không hệ điều hành quản lý, mà nó tồn các tệp tin đặc biệt hay chứa đựng và quản lý với các chương trình đặc biệt Điều đó thì không có vấn đề gì Kiểu tốt cho việc quản lý các tệp tin là tổ chức tất tệp tin thành ngân hàng liệu tổng thể; đó, các tính chất bổ sung các tệp tin thực nhờ các đặc tính bổ sung (132) Một vấn đề khác là việc làm sáng tỏ tham chiếu tệp tin, các tệp tin hệ thống quản lý files thì cho phép tên tệp tin dài; ứng dụng (khi thực thi), tệp tin có thể phép ngắn lại Thí dụ có hai tên tệp tin MethodeForUser.txt và MethodeForEvery.txt cùng tồn hệ thống tệp tin Khi hai tệp tin muốn thực thi, thì ký tự đầu tiên lưu ý Trong trường hợp này, ký tự đầu tiên hai tệp tin giống Do vậy, đây, phương pháp tìm thấy cho phép xếp các tệp tin rõ ràng Thí dụ chuyển đổi tên tệp tin Windows NT: Vì hệ điều hành Windows NT có thể quản lý các hệ thống tệp tin DOS bên cạnh hệ thống tệp tin NTFS (windows NT File System) Cho nên, đây vấn đề đặt là phải chuyển đổi các tệp tin có tên dài hệ thống NTFS thành tên tệp tin rõ ràng hệ thống MS-DOS Điều này đạt các giải thuật sau đây: (1) Tất các ký tự tên tệp tin không hợp lý MS-DOS chuyển đổi thành tên tệp tin hệ thống NTFS cách cắt bỏ: các ký tự trống, 16 ký tự 16 Bit- Unicode, các điểm đầu, cuối và khoảng tên tệp tin (2) Tất ký tự đầu tiên chuỗi ký tự đứng trước dấu chấm phân đoạn phần mở rộng cắt bỏ; và sau đó, ký hiệu ~1 thay vào trước điểm phân đoạn phần mở rộng Chuỗi ký tự sau điểm phân đoạn phần mở rộng để lại ký tự, các ký tự cuối phần này cắt bỏ và chuỗi ký tự còn lại chuyển thành chuỗi các chữ cái lớn (3) Nếu có tệp tin, mà nó giống với tệp tin khác, đó, thay vì ký hiệu ~1, ký hiệu ~2 thay vào chỗ đó Nếu tệp tin này đã tồn tại, thì thay ký hiệu ~3 hay ~4 không tồn giống 4.2.2 Tên đường dẫn Qua sơ đồ xếp các tệp tin, việc biểu diễn tên tệp tin rõ ràng tạo khả để xếp các nút có dạng hình cây, nhờ vậy, đường dẫn tới tệp tin thực thuận tiện Tên đường dẫn tệp tin tạo lập từ chuỗi các tên nút và chứa đựng ký tự tách chia các tên nút Đó là dấu hiệu đặc biệt, nó là biểu tường tiêu biểu cho hệ điều hành Thí dụ hình 4.3, tên tệp tin Vanban1.txt có đường dẫn hệ điều hành Unix: Institut5/Rudi/Vanban1.txt còn hệ điểu hành Windows NT có dạng: Institut5/Rudi/Vanban1.txt Về điều đó, có kết nối ngang, nên có nhiều tên đường dẫn cho tệp tin, thí dụ tệp tin Briefvorlage.dot có các đường dẫn: Institut5/Rudi/briefvorlage.dot và Congty/Dieuhanh/briefvorlage.dot Những nút trên hệ thống cây thư mục tệp tin gọi là gốc, nó biểu thị biểu trưng đặc biệt: dấu xiên trái(/) Unix, dấu xiên phải (\) Windows NT Khi thông dịch tên tệp tin, nó thực bước từ (133) lên trên theo hướng gốc cây thư mục tệp tin Thí dụ hình 4.3, tệp tin Brief.doc thư mục Rudi mà thư mục Hans, tên đường dẫn nó biểu diễn dấu đại diện cho thư mục nào đó: / /Rudi/Brief1.doc Tên đường dẫn tương đối vị trí nào đó cây tới tệp tin Tên đường dẫn tuyệt đối biểu thị từ gốc đến là tên tệp tin Thí dụ hình 4.4 đường dẫn tương đối /Daten/Dat1.a với tệp tin Dat1.a chương trình Prog Hình 4.4 4.2.3 Thí dụ cây thư mục Unix Trong Unix, sơ đồ hệ thống tệp tin thông dụng hình 4.2, nhờ đó không gian tên tệp tin tạo lập Ngoài cấu trúc cây này người ta có thể nối ngang qua các tệp tin lênh “ln” Đối với đặc điểm sơ đồ tên, người ta phải phân biệt, các thư mục đã thu xếp với các tên tệp tin trên ổ đĩa hay chưa (?) Nếu chúng đã thu xếp, đó, nối ngang trực tiếp là có thể Trường hợp này gọi là kết nối vật lý hay kết nối cứng Nếu ngược lại, chúng thu xếp khác trên ổ đĩa, đó, người ta có thể thiết đặt nối ngang logic và dẫn tên đường dẫn chúng Trường hợp này gọi là kết nối tượng trưng (symbol-link) Sự khác các kết nối ngang nói trên là chỗ, việc xoá bỏ tên tệp tin hay thư mục có nhiều tiến trình hay nhiều người sử dụng truy cập chúng Nếu chúng ta lưu ý tới hệ thống cây thư mục hình 4.5, chúng ta thấy không có phân biệt tên tệp tin và tên thư mục Hình 4.5 Nếu các thư mục Gruppe1 và Gruppe2 ghép các ổ đĩa khác nhau, đó, các nối ngang Rudi/Datei2 và Hans/Datei2 thì khác biệt với các nối ngang Gruppe1/Hans/Datei3 và Gruppe2/Datei3: đây cặp thứ là nối vật lý, còn cặp thứ hai là nối logic Nếu bây Unix tệp tin xoá bỏ, đó, nó tồn tối thiểu có kết nối vật lý tồn Ở thí dụ đã nêu, tệp tin có đường dẫn Rudi/Datei2 xoá bỏ, đó, tệp tin còn lại cái tên có đường dẫn Hans/Datei2 và có thể sử dụng Ngược lại tệp tin có đường dẫn Hans/Datei3 xoá bỏ; đó, tệp tin tương ứng bị xoá bỏ; tham chiếu tên (sysbol-link) thư mục Gruppe2 còn tồn tại, truy cập tệp tin thì xuất lỗi tham chiếu tên tệp tin này, tức là tệp tin với cái tên này không còn Điều định hệ điều hành Unix là để tệp tin xoá hoàn toàn, thì phụ thuộc vào đếm để đếm số tham chiếu kết nối vật lý Tuy nhiên, chế (134) này hệ điều hành Unix là phương tiện đơn giản phạm vi đa tiến trình, có thể dẫn tới lỗi Chúng ta nhận thấy rằng, chúng ta thư mục Rudi hình 4.5 và thực kết nối vật lý trên thư mục Gruppe1 Vì việc xóa bỏ thư mục chưa trống thì cấm (để tránh lỗi), đó, chúng ta không thể xoá thư mục Gruppe2 Ngược lại, thư mục Gruppe1: đây có kết nối thứ hai thư mục Rudi, cho nên cho phép xoá bỏ tên tệp tin Điều đó dẫn tới tình huống, bây thư mục Gruppe1 với thư mục và các tệp tin phía còn tồn tại, nhiên thứ đó không còn dùng nữa, vì chúng là thư mục trống, và đó không thể xoá bỏ Điều đó thì khong thể tránh được: kết nối ngang là có thể, việc kiểm tra các vòng nối và việc tách chia các sơ đồ tệp tin tác vụ xoá là không nên làm Từ lý này, ấn Unix cây thư mục thì còn dùng kiểu kết nối logic Đối với việc tạo lập hay xoá bỏ tệp tin, Unix có có chế thông dụng: Nếu tiến trình tạo lập tệp tin và sau đó, nhiều tiến trình mở tệp tin này, đó, tệp tin không bị biến xoá, nhờ người tạo lập Và nó tồn tiến trình cuối cùng gọi thủ tục close() và vậy, đếm tham chiếu trở Hệ thống tệp tin hình cây tổng quát phân chia thành các sơ đồ nhánh khác nhau, mà các tệp tin chúng tồn trên các ổ đĩa khác Khi khởi động hệ thống (bootstrap), hệ thống tệp tin các ổ đĩa khác vào nút gốc (root) hàm gọi hệ thống mount(), mà đó, nút gốc hệ thống tệp tin còn phản ảnh tên thư mục (mount point direction) Hình 4.6 cây thư mục tệp tin Hình 4.6 4.2.4 Cây thư mục Windows NT Cây thư mục hệ điều hành Windows NT mô tả toàn các đối tượng toàn cục; cách độc lập với cái đó, chúng là các tệp tin tuý hay đối tượng khác các kênh trao đổi thông tin (communication-canal hay named pips), các nhớ chia xẻ (shared memory), các cờ hiệu (semaphore), các biến cố hay các tiến trình Các đối tượng với tên gọi toàn cục trao cho các chế bảo vệ tương ứng truy cập Hệ thống cây thư mục bắt đầu với nút gốc dấu xiên phải (\), đó tồn các đối tượng tệp tin hay các đối tượng thư mục Các thư mục đối tượng là các đối tượng chứa đựng tên đối tượng với thuộc tính (biến số, số…), với các phương pháp (tạo lập, mở hay đọc lướt các thư mục) Hệ thống này không bao gồm trạng thái nhân, mà trạng thái người sử dụng, nghĩa là các thư mục không có thể đặt vào nhân hệ điều hành Windows NT, mà còn có thể đặt vào các hệ thống khác OS/2, POSIX…Đối với loại đối tượng (tệp tin, tiến (135) trình…) có ấn chuyên dụng cho phương pháp sử dụng các đơn thể nhân khác (điều hành I/O, điều hành tiến trình…) Tuy nhiên, để tạo lập thư mục toàn cục từ các thư mục đối tượng hay việc thiết đặt các đường dẫn kết nối ngang (như Unix) có thể thực cách thuận lợi Windows NT Ở cây thư mục việc điều hành đối tượng thì tồn nhiều đối tượng khác (xem hình 4.7) Chẳng hạn đối tượng “A:” là kết nối ngang logic với đối tượng hệ thống tệp tin “Floppy” Với đối tượng thì phương pháp dò tìm chuyên môn hoá Nếu trình soạn thảo Editor muốn mở tệp tin có đường dẫn A:\Texte\bs_files.doc, đó, cửa sổ điều hành đối tượng, nó hỏi đối tượng này Bằng phương pháp dò tìm, trình điều hành đối tượng tìm kiếm cây thư mục nó: đối tượng cần tới chỗ nào (?) Nếu nó tới đối tượng “A:”, thì đó, phương pháp kết nối logic áp dụng Hình 4.7 Chuỗi ký tự “A:” thay chuỗi ký tự “\Device\Floppy0” và sau đó, chuyển cho trình điều hành đối tượng Trình này xử lý đường dẫn gặp đối tượng tệp tin “Floppy0” Phương pháp dò tìm này làm việc trên cây thư mục trình điều hành hệ thống các tệp tin, nó dò tìm đường dẫn với các thủ tục đặc biệt, đối tượng tệp tin với bs_files.doc có thể đưa trở lại Với chế này, Windows NT có thể tích hợp cách thống các hệ thống tệp tin khác hệ thống FAT (file allocation table) MS-DOS, hệ thống tệp tin hiệu suất cao OS/2 và hệ thống tệp tin NT Windows Đối với việc xoá tệp tin xoá đối tượng nhiều tiến trình sử dụng, thì các chế dẫn tới tương tự Unix Vì lý thực thi, có hai đếm tham chiếu dẫn tới: để đếm số lượng các chức danh đối tượng, đó chúng đón nhận các tiến trình người sử dụng; và để đếm số lượng que thị, đó chúng đưa vào hệ điều hành (đáng lẽ chúng trao cho các đối tượng truy cập nhanh) Nếu đếm tham chiếu người sử dụng mà tham chiếu tới tên tệp tin bị giảm xuống tới 0, thì đó, đối tượng bị xóa cây thư mục; và vì thế, không có tiến trình nào có thể truy cập Tuy nhiên, nó còn lại nhớ đếm các tham chiếu hệ điều hành giảm xuống Sau đó nhớ giải phóng và dụng trở lại Với chế này đã tránh được: đối tượng nhiều tiến trình xử lý bị xoá cách nhầm lẫn trước các tiến trình khác thực thi xong Một đếm tham chiếu đôi tránh được: thí dụ đối tượng tiến trình sinh tiến trình và sau đó, với kết thúc tiến trình này, nó tới kết thúc; nhiên, còn tiến trình có quan hệ với đối tượng Sự tham chiếu hệ điều hành tới tiến trình thứ hai đảm bảo tồn đối tượng tệp tin quan hệ nói trên không còn (136) 4.3 Thuộc tính tệp tin và chế bảo vệ Trong thư mục có chứa tên tệp tin, thì hầu hết các thông tin tệp tin bảo vệ Bên cạnh độ lớn tệp tin (tính Byte hay các khối trang), ngày tháng tạo lập và ngày tháng điều chỉnh, còn có các thuộc tính khác (còn gọi là các cờ hiệu khác) ẩn khuất (Hidden), hệ thống Một dạng đặc biệt các thông tin trạng thái là các thông tin bảo vệ luật truy cập người và các chương trình tệp tin Tương tự các chế bảo vệ nhớ, người ta đã xem xét để loại bỏ các chức lỗi chương trình các lỗi truy xuất chương trình người sử dụng nhờ biện pháp có mục đích: Những biện pháp Uỷ ban POSI-6 đề nghị có nội dùng sau: + Phải đảm bảo nguyên tắc thu gọn đặc quyền ít (least privilege) việc thực nhiệm vụ + Phải bổ sung việc điều khiển truy cập qua các thông báo rời rạc (discretionary access control) Việc truy xuất cưỡng thì độc lập với người tạo lập Việc truy xuất đối tượng xảy các tiến trình với các đặc quyền lớn + Phải lưu ý các ghi chép trạng thái đối tượng nhằm có thể phát các nguyên nhân và các người làm việc hệ thống sử dụng sai trái Ngược lại, hệ điều hành thực thi giới hạn các yêu cầu kể trên 4.3.1 Các đặc quyền truy cập Unix Ở hệ điều hành Unix có các biến trạng thái (còn gọi là các cờ) khác nhau: đọc (ký hiệu r), viết (w), thực thi (x) Tất các tệp tin và các thư mục có trạng thái Các ký hiệu vừa nói có ý nghĩa sau: r cho phép đọc danh sách tệp tin; w cho phép thay đổi vị trí tệp tin danh sách; x cho phép thực thi hay tìm kiếm tệp tin danh sách Về quyền truy cập, hệ điều hành Unix phân biệt hạng: chủ nhân hệ thống (owner), thành viên nhóm (user group member) và người khác (other) Chỉ dẫn các quyền truy cập Lệnh ls là để xem các tệp tin và các quyền truy cập chúng Lệnh ls-al để xem các tệp tin thư mục, thí dụ với lệnh này, ta nhận đoạn thông báo: drwxr-xr-x brause 512 Ap23 15:55 drwxr-xr-x obene 512 May17 17:53 - rw- r r – brause 44181 Ap23 15:56 data1.txt Ở cột đầu tiên là các quyền truy cập các tệp tin Trong đó: d là thư mục (directory), còn ký tự phân làm cho các người sử dụng owner (chủ nhân), grouper (nhóm trưởng), other (người khác) với r: đọc, w: viết, x: tìm (137) kiếm và dấu gạch ngang (-) để quyền truy cập không chọn Những cột còn lại bảng thông báo này là tên người sử dụng, dung lượng (Byte), ngày tháng tạo lập, thời gian tạo lập và cuối cùng là tên tệp tin Ở dòng đầu tiên cột tên tệp tin, có dấu chấm (.) để tên tệp tin thư mục hành người sử dụng brause có dung lượng 512Byte, tạo lập ngày 23 tháng lúc 15giờ 55 phút Ở dòng thứ cột này có dấu hai chấm ( ) giải thích tương tự Ở hệ điều hành Unix, để thực chương trình, có thể kết nối các quyền truy cập riêng mình chương trình với hàm userId cho người thực và groupId cho người quản lý nhóm Do đó, các chức chương trình hệ thống có thể người sử dụng thực hiện, thiết đặt các trạng thái userId và set groupId Còn thư mục, trạng thái sticky bit thiết đặt, đó, người sử dụng bình thường không thể xoá hay gọi các tệp tin người sử dụng khác thư mục này Chỉ ấn đặc biệt hệ điều hành Unix có các danh sách điều khiển truy xuất với nhiều chế khác Cũng với lý này, hoạt động mạnh mẽ nhóm O/Open đã thống và tạo nhiều tiêu chuẩn bảo vệ hệ thống Unix 4.3.2 Quyền truy cập Windows NT Hệ thống tệp tin hệ điều hành Windows NT quản lý chế định hướng đối tượng Quyền truy cập có giá trị đối tượng cây thư mục Windows NT (như các tiến trình, các cờ hiệu, khoảng nhớ…) Độc lập với các quyền truy cập này còn có tính chất đặc biệt các đối tượng tệp tin: Các thuộc tính: + Tên tệp tin + Kiểu thiết bị mà trên đó tệp tin tồn tại, + Byte offset: là tình trạng hành tệp tin, + Shared mode: là trạng thái (đọc/viết/xoá) tệp tin sử dùng, + Open mode: là kiểu và phương pháp tác vụ tệp tin (đồng bộ/ không đồng bộ, có / không có đệm Cache, truy cập tuần tự/ bất kỳ…) + file disposition: biểu thị tệp tin bền vững hay tuỳ ý Các phương pháp: Các hàm CreateFile(), OpenFile(), ReadFile(), WriteFile(), CloseFile(), dùng để đọc chọn hay thay các thông tin tệp tin, các thuộc tính mở rộng, các độ lớn tệp tin (Byte), các thông tin thiết bị hay để đọc chọn thư mục… Mỗi đối tượng tệp tin là thông tin điều khiển tệp tin; nó có thể dẫn tới nhiều đối tượng, mà chúng tham chiếu chính tệp tin này (138) Do đó, có thông tin toàn cục lưu trữ tệp tin (không phải đối tượng tệp tin) và có thể thay đổi đó Mỗi tệp tin chứa đựng thuộc tính tệp tin khác nhau; thực chúng là dòng liệu biến thiên theo độ lớn tệp tin Trước hết, chúng bao gồm thông tin sau đây: Các thông tin chuẩn: + Ngày tháng và thời gian tạo lập, ngày tháng và thời gian truy xuất gần đây và lần thay cuối cùng; + Dung lượng tệp tin hành; + Thuộc tính logic tệp tin biểu thị giá trị Yes/No Thí dụ: tệp tin hệ thống, tệp tin ẩn, tệp tin lưu trữ, tệp tin điều khiển, tệp tin đọc, tệp tin nén… Tên tệp tin: Trong cây thư mục với kết nối vật lý, tên tệp tin có thể dài; các kết nối khác MS-DOS, tệp tin có tên ngắn Các liệu bảo vệ: Chúng đựơc chứa đựng danh sách điều khiển việc truy xuất chủ nhân tệp tin Nội dung tệp tin: Thuộc tính này chứa đựng các liệu riêng lẻ; các thư mục, cấu trúc số lưu trữ cùng với các tệp tin Điều quan tâm là các liệu thực chất chứa đựng các thuộc tính nêu trên Vì người sử dụng có thể tạo các thuộc tính, cho nên các dòng liệu bổ sung liên tục Khác với tên tệp tin chính, thí dụ MyFile.dat, các liệu phụ người lập trình tham chiếu với cái tên bổ sung; tên này tách làm hai phần ngăn cách dấu hai chấm, thí dụ MyFile.dat:MyCommentar Điều đó đã tạo nên nhiều thông tin bổ sung để treo vào tệp tin (chẳng hạn tên chương trình xử lý hay ngữ cảnh xử lý lần cuối…) mà không thay đổi các liệu chính Do vậy, dòng liệu, thông tin trạng thái dẫn tới, ví độ lớn hành lớn cấp phát, các cờ hiệu các phần tệp tin… Khi thay hay dẫn trở lại, các thuộc tính logic trợ giúp nhờ phương pháp kết hợp Thí dụ tệp tin nén lại cách tự động, tức là tệp tin nhận thuộc tính nén lại Điều đó có giá trị toàn cây thư mục Các chế bảo vệ hệ điều hành Windows NT tách chia cách mạnh mẽ Unix Đối với tệp tin có danh sách truy cập chi tiết hoá; đó, các quyền truy cập người sử dụng thực Việc bổ sung thêm tên tiêu chuẩn Adminitrator (quản lý), System, Creator (tạo lập), Quest (Khách), EveryOne (mọi người)…, người ta có thể chuyên môn hoá (139) người sử dụng và các quyền họ; nghĩa là họ phép hay không phép quyền truy cập nào đó Hệ thống bảo vệ này thì không giới hạn trên các tệp tin, nó áp dụng cách tổng hợp tất các đối tượng toàn cục đây thư mục Windows NT và huy cách thống Tiếp đó, kiểm tra việc truy cập tới tệp tin hay thư mục trợ giúp 4.4 Các chức tệp tin Có nhiều kiểu tác vụ xảy trên các tệp tin Trong mục này, chúng ta khảo sát vài kiểu đặc trưng cho tệp tin trên nhớ quảng đại (các loại ổ đĩa cứng, ổ đĩa mềm, băng nhựa camara…) 4.4.1 Các chức chuẩn Trong hầu hết các hệ điều hành có vài chức bản, mà với chúng, các tệp tin có thể đọc và viết Sau đây là các chức đó Tạo lập tệp tin (Create File): Để thiết đặt tệp tin, các thông số bao gồm chuỗi các ký tự để chuyên môn hoá các kiểu truy cập (viết/ đọc, tuần tự/ tự chọn) Khi gọi chức năng, người ta nhận tham chiếu tệp tin, mà với tham chiếu này, người ta có thể truy cập tới tất các chức tệp tin Một tham chiếu (phân đoạn tệp tin, chức danh tệp tin) có thể là số (chỉ số trường nội việc điền vào tệp tin) hay thị cấu trúc bên tệp tin Mở tệp tin (OpenFiele): Khi mở tệp tin tồn tại, các cấu trúc liệu khác khởi xướng, đó, việc truy cập diễn nhanh Thuộc cái đó có việc kiểm tra các quyền truy cập chế các đệm, chế các cấu trúc truy cập Đóng tệp tin (Close File): Để đóng tệp tin, cần phải mô tả các thông tin quản lý tệp tin nhớ quảng đại và phép nối tiếp việc sử dụng không gian các cấu trúc liệu việc quản lý tệp tin nhớ chính Tương tự vậy, trao đổi thông tin các tiến trình mục 2.4.1, người ta có thể thay đôi lệnh OpenFile() và CloseFile() Thay vì nối cứng vật lý trao đổi thông tin, người ta phép có trao đổi thông tin không cần kết nối vật lý: Tất truy cập thực theo dãy chúng mà không cần dùng lệnh OpenFile() Tuy nhiên, điều đó thì không thật chính thức cách tổ chức liệu cục bộ: Thay vì truy cập tệp tin, người ta xếp đặt lần (thí dụ việc kiểm tra quyền truy cập, việc xem xét các khối tệp tin…) (140) người ta phải thực điều đó lần truy cập, đó dẫn tới chi phí quản lý giảm thiểu đáng kể Đọc và viết tệp tin (Read File/ Write File): Gọi hệ thống là tham số nhận tham chiếu tệp tin và dung lượng đệm để đọc hay viết Nếu có tệp tin mặc định và phù hợp với dung lượng đệm, đó, tệp tin thực Tìm kiếm tệp tin (Seek File): Một tệp tin tổ chức cách đơn giản và chiếm vị trí, mà đó, người ta có thể viết hay đọc Vị trí tệp tin này không mô thông tin quản lý, mà còn có thể thay chương trình các hệ thống các tệp tin Bằng việt xử lý còn gọi là truy cập (sequential access), thí dụ khoảng từ tính ổ đĩa mềm, người ta dẫn tới việc truy cập tuỳ chọn còn gọi là truy cập ngẫu nhiên (random access) Điều đó thì tiện lợi làm việc với ổ đĩa CD ROM Theo quan điểm hệ điều hành, các dịch vụ hệ thống nhận trợ giúp cách khác Điều đó bao hàm câu hỏi, liệu việc đọc/ viết có lưu trữ, hay liệu chương trình người sử dụng phải tự làm điều đó, phản ứng hệ thống đặt lên trạng thái không bình thường (?) Nếu không có liệu nào có thể đọc hay viết, vì hàm Read() không có liệu nào sử dụng, hay hàm Write() không có ổ đĩa nào sẵn sàng làm việc Gần hàm Read() trường hợp này thì ngăn hãm tiến trình người sử dụng, còn hàm Write() thì không Vì lý này, các liệu lưu trữ; đệm tràn hay ổ đĩa có khiếm khuyết, thông báo lỗi đưa trở lại Một cách thuận lợi, đó có nhiều chức nằng bổ sung như: DeleteFile(), RemameFile(), CopyFile(), AppendFile(), FlushBuffer(),…Tất phụ thuộc vào hệ điều hành cách mạnh mẽ 4.4.2 Các chức truy cập Unix Ở hệ điều hành Unix, các gọi hệ thống có dạng fd=creat(name, mode) và fd=open(name, mode) đã cung cấp cho ta số mô tả tệp tin (fd: file discriptor) Nó chính là tham chiếu tất truy cập khác nhau, như: + read (fd, buffer, nbytes) + write (fd, buffer, nbytes) + close (fd) đọc n Bytes đệm; viết n Bytes từ đệm; viết tệp tin Bộ mô tả tệp tin này là số (Index) trường bảng mô tả tệp tin (file descript table) Số lượng các tệp tin và số lượng điền vào (tức số lượng lớn fd) là cố định, nó thông báo có dịch đổi hệ điều hành; đồng thời, nó xác định độ lớn cấu trúc quản lý các tệp tin lưu trữ cấu trúc người sử dụng tiến trình (141) Bộ mô tả tệp tin này đóng vai trò quan trọng hệ điều hành Unix Theo tiêu chuẩn, trước khởi xướng tiến trình (chẳng hạn chương trình), mô tả tệp tin ghi nhớ: fd =0 cho việc nhập số liệu (stdin), fd =1 cho việc xuất số liệu (stdout) và fd=2 cho việc xuất số liệu có lỗi (stderr) Ở Unix, người ta lợi dụng điều này để kết nối các chương trình với nhau, nhằm dẫn tới chức nào đó Ở mục 2.4, chúng ta đã làm quan với cấu trúc trao đổi thông tin pipe, thí dụ: Programm1 | Programm2 | … | ProgrammN Để thực dòng lệnh này, tiến trình cha thiết đặt nhiều tiến trình và tạo kết nối trao đổi thông tin pipe Sau đó, tiến trình cha khởi xướng các mô tả tệp tin (file descriptors) cho tiến trình; đó, chúng dẫn tới: pipe vào với fd =1 tiến trình gởi đi, pipe với fd =0 tiến trình nhận Hình 4.8 mô tả hệ thống pipe Unix Hình 4.8 Việc xếp các mô tả tệp tin là quy ước; tiến trình có thể đạt các xếp các mô tả tệp tin khác qua việc đóng và mở có mục đích các tệp tin: Khi mở, mô tả tệp tin trống với số hệ thống nhỏ sử dụng đầu tiên 4.4.3 Các chức truy cập tệp tin Windows NT Các chức việc truy cập tệp tin tóm lược là phương pháp thiết laap các thuộc tính tệp tin Các phương pháp hiệu nghiệm kể trên còn dẫn tới nhiều chức các tệp tin FlushBuffer() các tác vụ thư mục đặc trưng (đọc, viết, tìm kiếm thư mục…) Nói chung, phác thảo quan tâm đó là: Mọi tác vụ dù có cấu trúc nào có thể thay đổi trên nhớ quảng đại, thì chúng thực thi là biến đổi nhân tử (atomar transaction) Thuộc cái đó còn có dịch vụ đặc biệt gọi là dịch vụ đăng ký tệp tin (log file service: LFS); lần truy cập tệp tin, dịch vụ này gọi nhân hệ điều hành và viết ghi đăng ký cho hệ thống tệp tin Trước các tệp tin riêng lẻ thay đổi trên nhớ quảng đại (nhờ biến cố), đó, các ghi đăng ký (log records) tất các tác vụ (đối với biến cố) viết trên nhớ quảng đại Bản phác thảo trình viết trước luc đăng ký (write ahead logging) đã tạo điều kiện để viết lại hệ thống tệp tin cách hệ thống có cố Nếu cố xảy trước viết vào đệm dùng để đăng ký (log buffer), đó, tất các tác vụ bị lảng quên và vì phải thực mẽ từ đầu Nếu cố xảy khoảng kết thúc đăng ký I/O và kết thúc tệp tin I/O, đó, cần phải kiểm tra cho máy hoạt động trở lại, phải xem xét và hiệu chỉnh chỗ nào đã thực việc ghi chép, chỗ nào chưa (?) Sau tình huống, tác vụ còn sai hỏng biến cố gọi tới và thực tiếp tục (142) Tuy nhiên, phác thảo này có vài giả định quan trọng, chúng không thiết phải thực trường hợp Do vậy, truyền đạt các số liệu đăng ký phải hoàn toàn không có lỗi, tức là, tệp tin đăng ký nên linh động, vì việc chuyển tải liệu thường chứa đựng lỗi, đó tệp tin không sử dụng Nếu giả sử có khiếm khuyết thụ động dẫn hệ thống tới trạng thái an toàn (fail save); nghĩa là lỗi tích cực chưa xoá liệu 4.4.4 Các chức truy cập có cấu trúc Những chức truy cập trình bày là loại đơn giản và chúng có ý nghĩa tách chia các giải thuật truy cập các tệp tin Trong nhiều hệ thống, có các tác vụ để tạo điều kiện thiết lập truy cập có cấu trúc tới tệp tin, mà việc truy cập này hướng tới tổ chức logic liệu tệp tin, sau đây nói tới loại: Các tệp tin (sequential files): Với các máy tính nói trên, người ta đã xử lý các danh sách liệu dài, mà chúng tổ chức là ghi xếp cách Vì bàn ghi tồn tệp tin rộng rãi trên đĩa mềm và xử lý Hình thức tổ chức này đạt thời gian lâu Kiểu tệp tin theo ngôn ngữ Pascal xuất phát từ các tác vụ đọc/ viết toàn các ghi liệu khoảng hai tác vụ put() và get() Tuy nhiên, người ta muốn truy cập trên các liệu dãy khác, đó, điều đó xảy lại càng vô cùng chậm Các tệp tin tuỳ chọn (random access files): Nhược điểm nêu trên nhằm dẫn tới việc khắc phục chế tệp tin, mà nó cho phép truy cập trên ghi số liệu xếp theo dãy Ý tưởng này có thể thực tạo lập hệ thống ổ đĩa cứng Hầu hết các hệ thống tệp tin tạo điều kiện cho kiểu truy cập này nhờ việc biểu thị vị trí truy cập tệp tin Khi truy cập tệp tin tuỳ chọn hay tuần tự, kiểu truy cập này thực nhờ kiểu khác; nhiên, nó không nhằm mục đích từ bỏ loại nào Người ta có thể thực các tệp tin trên nhiều hướng khác ổ đĩa Đối với các tệp tin tuỳ chọn thì điều đó không có lợi Tuy nhiên, có chế nội dung tệp tin đưa ra, thì người ta thấy rằng, tiến hành truy cập hai kiểu chậm kiểu Tóm lại, người ta phải tôn trọng chế tệp tin và phải thực thi cách hiệu nghiệm các phương tiện điều hành có Từ lý này, các hệ thống ngân hàng liệu còn có phương pháp truy cập hiệu nghiệm (143) Các tệp tin số (index sequential files): Loại tệp tin này cấu thành từ các ghi liệu (data records), chúng xếp theo tiêu chuẩn gọi là xếp theo chìa khoá (key) và khởi đầu tệp tin là số Trong thư mục số, các kiểu “đóng/mở” chìa khoá kiến tạo và thực thi (thí dụ kiểu điền vào các tệp tin quản lý nhân sự: họ tên, ngày sinh, quê quán…); người ta có thể truy cập nhanh chóng phần tệp tin; phần này lại trợ cứu khoảng giá trị thích ứng chìa khoá Vì kiểu cấu trúc thì đặc trưng cho tất các hệ thống tệp tin các thư mục Chúng ta có thể nhìn thấy điều này cách chính xác hơn: Hình 4.9 cấu trúc kiểu số với thí dụ tệp tin quản lý nhân Tệp tin này xếp theo chìa khoá, thí dụ theo lứa tuổi Các ghi liệu riêng lẻ tạo lập qua mũi tên xuất phát từ bậc số Hình 4.9**************************** Chìa khoá lớn (con số lớn nhất) tệp tin (ô hình chữ nhật hình 4.9) số bậc số mô tả số bậc số 1; chìa khoá lớn đoạn tệp tin bậc số 1được số bậc số 2… Nếu người ta tìm ghi liệu chìa khoá xác định x, đó, người ta phải xác định khoảng xuất phát số thứ 2, mà khoảng này tồn chìa khoá cần tìm, và xuất phát từ giới hạn trên khoảng này, nhờ bậc xếp, các tệp tin dịch chuyển từ lên người ta tìm thấy số ghi liệu Sau đó, người ta có thể đọc ghi liệu mà nó tạo có mục đích từ tệp tin Nếu người ta thực nghiệm để mô tả cấu trúc logic cho các đối tượng vật lý - vết đường (track), hình trụ (cylinder), hình quạt (sector), đó người ta có thể dễ dàng nhận vấn đề để tái các ghi liệu và để tổ chức ghi cách mẽ Thí dụ, việc tổ chức ghi với chìa khóa số 41 (xem hình 4.9) để tạo nên vấn đề tương đối đầy đủ, vì hộp chữ nhật có khả lớn là chìa khoá và nó luôn luôn chứa đựng sẵn sàng chìa khoá này Do đó, chúng cần tới các cấu trúc trợ giúp cho việc tổ chức các dòng liệu phát sinh thay đổi thường xuyên các liệu và chúng đòi hỏi ghi và đầy đủ tệp tin Đặc biệt, điều đó xuất tổ chức liệu với nhiều chìa khóa và thường hay thay đổi Nếu số thư mục cho ta biết nội dùng thư mục hệ thống các tệp tin và với các chìa khoá này, chúng chứa đựng tham chiếu tệp tin (tên tệp tin, số tệp tin…) nhớ quảng đại Đối với hệ thống tệp tin hiệu nghiệm, nó thì khó thích hợp để tổ chức các chìa khóa thành các số thư mục theo sơ đồ khác nhau, mà sơ đồ này cho phép tìm kiếm nhanh là việc bổ sung vào hay lấy linh hoạt các chìa khóa Thêm vào đó, chúng ta thực thay đổi Đầu tiên chúng tag hi chép chìa khoá vào nút cây thư mục lần; điều này tiết kiệm không (144) gian nhớ và thời gian tìm kiếm Sau đó, chúng ta đem lại ý nghĩa khác cho kiểu này: Trong hình 4.9, đầu tiên, chúng ta phải định trên bậc, chìa khóa cần tìm để xếp thì chỗ nào (?) Nếu chúng ta tìm thấy, thí dụ chìa khoá số 60, đó, chúng ta nhận biết nó thuộc số bậc số 2, tức là chìa khoá này thì lớn 48 và nhỏ 99, và cho nên nó là loại tiếp tục dẫn tới số 99 Tác vụ so sánh các chìa khoá có tính nguyên tắc này chúng ta sử dụng để khảo sát kết khoảng giới hạn này (60 tới 99) và không nối các cành vào khoảng giới hạn này, mà vào khoảng tự tạo Bây giờ, cành này là khoảng sơ đồ cây trung gian kết nối các chìa khoá và dẫn tới các chìa khoá mà chúng nằm giá trị khoá nói trên Mỗi nút chứa đựng nhiều m tách nhánh và với m-1 chìa khóa Chúng ta nhận thấy các lá cây (hay các ghi liệu riêng lẻ) hình không thuộc cây lúc đầu Hình 4.10 là cây thế, với nhiều chìa khóa trên hộp chìa khóa, mà đó kết nối tới các lá cây biểu thị các mũi tên Hình 4.10****************************** Chúng ta có thể tạo lập cách dễ dàng cây thư mục Chúng ta xuất phát từ hộp chìa khóa bậc số và điền đầy hộp đầu tiên này đầy tràn Chìa khóa (thí dụ số 37) dịch lên phía trên với số bậc số Hộp chìa khóa lại làm đầy và đó chìa khóa (thí dụ chìa khóa số 56) lại dịch lên phía trên Điều đó thực cuối ghi chìa khóa Nếu chìa khóa cuối cùng là chìa khóa thứ m, đó, nó không dịch lên bậc số cao hơn, đó, chúng ta tách chia m chìa khóa thành hộp chìa khóa khác nhau, theo hướng nhìn xuống Bây trên mặt kế cạnh cao hơn, hộp chìa khóa đầu tiên đã đầy tràn, đó, tương tự bậc thấp hơn, đây sử trí: chìa khóa đếm đầu tiên tới hộp có số bậc đó Với cấu trúc cây này, chúng ta đã đạt ưu điểm để truy cập nhanh hơn: chúng ta có thể kết hợp cách dễ dàng các chìa khoá bổ sung Ở đây, chúng xuất phát từ phía trên qua cây và tìm khoảng nào mà chìa khóa tồn Nếu chìa khóa chưa tồn tại, thì, chúng ta dừng lại lá cây Sauk hi định lá cây thế, bây chúng ta kết hợp với chìa khóa đã có mình Nếu hộp chìa khoá đã theo qua, vậy, chúng ta có thể thử nghiệm lần, di chuyển các chìa khoá dư hộp theo hướng từ trái qua phải, mà đó, tất nhiên, chìa khoá bậc kế cạnh dự kiến dịch chuyển tới Tuy nhiên, độc lập với điều đó, giải thuật kết hợp thiết lập sau: + Người ata phân chia hộp chìa khóa có m chìa khóa thành hộp với các chìa khóa S1,…,S[m/2]-1, S[m/2]+1,…,Sm +Người ta di chuyển chìa khoá S[m/2] lên trên bậc gần đó + Trường hợp đó hộp chìa khóa đã chạy qua, thì người ta xử lý đây Tác vụ xoá bỏ các chìa khóa thì phân tích ngược lại: (145) Bây giờ, chúng ta lưu ý rằng, chúng ta đã tạo cây mà lá cây trên bình diện và số lượng các nhánh bị tách là Do đó, chúng ta nhận thấy rằng, các hộp chìa khoá điền đầy cách thoả mãn với tối đa m nhánh và m-1 chìa khóa thì các nhánh [m/2] thực chất sử dụng Khi đó, gốc cây có thể xảy trường hợp: tồn chìa khóa với nhánh, số thực chất là m nhánh Một loại cây cho cấu trúc liệu có tên gọi là cây B (B-Tree) D.Comer đề xướng (1979) Xem hình 4.10 trên, ta nhận thấy: Về hình thức, cây B là cây diễn giải sau: (1) Mỗi cành nút (tới gốc và lá ) toả tối thiểu k = [m/2] và tối đa k=m cành (2) Mỗi nút chứa đựng k-1 chìa khoá (hay số) (3) Tất các lá trên bình diện Chúng ta lưu ý rằng, là nào không chứa đựng chìa khóa thì không quan tâm Một cây gọi là cây bậc m Người ta lưu ý rằng, với tổng số chìa khóa trên cây là N thì chúng ta có N+1 lá bậc thấp (Vì sao? giải thích đây) Cây B có thể qua cách nhanh chóng: Gốc cây có tối thiểu hai cành và cành bậc kế cạnh lại có tối thiểu [m/2] cành, vậy, bậc kế n tồn tối thiểu số cành là: 2.[m/2].[m/2]…= 2.[m/2]n-1 (4.1) Cho nên, số lượng các bậc cần dùng (gọi là dãy tìm kiếm) với N chìa khoá và N+1 lá cây thì dẫn tới điều kiện sau đây: N+1≥ [m/2]n-1 (4.2) Hay: log[m/2](N+1)/2 ≥ n-1 (4.3) Trong đó, người ta gọi N: số chìa khoá hay số lá cây; n: số bậc; m: số cành cây Điều đó đã đem lại tiết kiệm thời gian nhiều, thí dụ: m=200 và N=1,98.106 thì theo điều kiện (4.3) chúng ta cần tới: n-1 <= log100(0,99.106) = log100(0,99) +log100(1003)< Hay : 3≥ n-1 Để thoả mãn bất phương trình cuối cùng, người ta nhận thấy vế trái nó có thể là n-1 =2; đó bậc tối đa cây B cho ví dụ này là n=3 Tóm lại, với chìa khóa đã cho và bậc tối đa cây đã xác định, tệp tin tìm thấy cách dễ dàng! Điều đó cho thấy các cây B có khuynh hướng tự làm thật thấp xuống số lượng điều vào các liệu gia tăng lớn lên Có nhiều hình thái khác cây B, cách, người ta có thể chọn cho bậc giá trị m khác Về nguyên tắc, điều đó không làm thay đổi thuật toán, mà nó là vấn đề dẫn xuất cấu trúc cây Sau đây, chúng ta muốn khảo sát khả quan trọng khác, để làm gia tăng ý nghĩa thực tiễn: nó các hệ điều hành và các ngân hàng liệu áp dụng cách rộng rãi Ý tưởng để cải tiến cấu trúc cây đơn giản nhờ lý thuyết cây B là chỗ: không sử dụng các hộp đầy chìa khóa (còn gọi là các phân đoạn), mà còn chia nhỏ phân đoạn thành hai phân đoạn có các ghi liệu bổ sung, và còn phản ảnh các thay đổi số bậc kế cạnh Các phân đoạn (146) liên kết động với qua thị Sự điền đầy hai hộp chìa khóa có thể hạn hẹp Để cải thiện điều này, người ta có thể xem xét tới các chìa khóa có ý nghĩa phía trên các nút kế cạnh đã điều đầy hơn, đó, chúng ta đạt cân và làm đầy hộp chìa khóa cách hoàn hảo Ý tưởng này trình bày giải thuật sau: Người ta thâu tóm hộp chìa khóa có m-1 chìa khóa, hộp chìa khóa kế cạnh có m chìa khoá các chìa khóa khác thuộc bậc kế cạnh cao tới hộp Bấy giờ, hộp này chứa đựng các chìa khóa S1, S2, ,S2n Người ta phân chia các chìa khóa hộp với số các chìa khóa cho hộp [(2m-2)/3],[(2m-1)/3] và [2m/3] Khi đó, hai chìa khóa SA và SB với các số A và B lên phía trên với bậc có số cao A và B biểu diễn các biểu thức: A = [(2m-2)/3] +1 (4.4) B = [(2m-1)/3] +1 + [(2m-1)/3] +1 (4.5) Bấy giờ, phân đoạn thì không phải nửa mà khoảng 2/3 làm đầy các chìa khóa; đó, đối diện với cây B, người ta nhận cây cải tiến hơn; cây này biểu thị là cây B * (B*- tree) Hình 4.11 cho thấy kết việc sử dụng chìa khóa số 41 đây hình 4.10 trên: hình 4.11 (a) là cây B, còn hình 4.11(b) là cây B* Hình 4.11*********************************** Một cách hình thức, theo định nghĩa cây B và cây B* pahan biệt qua điều kiện thay đổi (điều kiện nêu trên) sau: 1) Mỗi nhánh nút (tới gốc và lá) lẻ nhánh thêm tối thiểu k= (2m-1)/3 và tối đa m cành 2) Gốc có tối thiểu và tối đa 2[(2m-1)/3]+1 phân nhánh Do đó, gốc cây có thể phân chia thành hộp chìa khóa với số chìa khóa hộp [(2m2)/3] (với lưu ý cộng thêm chìa cho gốc ) Theo D.Comer (1979), còn có nhiều dạng khác cây B; với giáo trình nguyên lý hệ điều hành, trình bày cây B là vừa đủ Tệp tin đảo ngược (inverted files) và đa danh sách (multi- liste): Ở chế tệp tin này, thông tin các ghi liệu đã xếp (một cách tuần từ) xếp lại theo các chìa khóa khác Đối với chìa khóa, các tham chiếu tới các ghi liệu viết thành số đầu tệp tin; chìa khóa chứa đựng các ghi này Hình 4.12 tệp tin với đa danh sách Hình 4.12******************************* (147) Khi việc điền vào bắt đầu, các danh sách xếp theo số ghi, xem chìa khóa và (hình 4.12 trên) Tuy nhiên, người ta có thể xếp theo số các giá trị tăng hay giảm các chìa khóa, đó, cấu trúc phân nhánh hình 4.12 thực chưa rõ ràng Điều đó với danh sách các ghi chìa khóa m (thí dụ hình 4.12 là 1, 3, 2, 6, 5, 8) Nếu chúng ta kết hợp tất các thị chìa khóa số bắt đàu tệp tin và không viết chúng vào các ghi liệu, đó, điều này biểu thị là tệp tin đảo ngược: Khái niệm đảo ngược rút từ viện chứng, rằng, chúng ta không khai thác giá trị chìa khóa từ ghi, ngược lại, ghi khai thác từ chìa khóa Các tệp tin đảo ngược thích hợp đặc biệt tốt việc đọc chọn có quan hệ với chìa khóa xác định Một thực thi hiệu nghiệm cách tổ chức tệp tin cấu trúc vừa nêu trên thực hệ điều hành các máy tính lớn Từ lý này, hệ điều hành Unix với tư cách là hệ điều hành máy tính đứng vững lâu dài các áp dụng ngân hàng liệu; vì các chương trình ứng dụng, người ta không cần thiết phải tạo lập trên tác vụ cao Các lớp trung gian các tác vụ liên hiệp (complex) và chế đơn giản các hàm tuỳ chọn ReadFile() và WriteFile() hệ điều hành phải người sử dụng tự viết lấy, mà với điều đó, cảnh giới ngân hàng liệu che phủ lên hệ điều hành Unix với mức độ cao Trong đó, tư kiểu này còn có vai trò đáng kể nhiều áp dụng đặc biệt, vì vi xử lý với ấn có tốc độ truy cập nhanh và vì các ổ đĩa đời đã làm cân tổn hao lớp trung gian nhiều 4.4.5 Các tệp tin ảnh xạ nhớ (memory mapping files) Các tệp tin với việc truy cập tuỳ chọn thường làm việc mạnh mẽ trên nhớ chính (RAM) Người ta có thể nghiên cứu tiếp phân tích sau: Người ta có thể xem xét các tệp tin trên nhớ quảng đại là kế tục nhớ chính trên nhớ quảng đại Cho nên, điều đó đặt ra, phải thực bước tiếp theo, và cách đúng mức (trước sau một) phải tái tạo kết nối trực tiếp tệp tin với khoảng nhớ chính, mà tệp tin tách chia thành khoảng có chiều dài trang Khi đó, người ta gọi là tệp tin ảnh xạ nhớ; tương tự, nhớ phân chia thành các trang Một kiểu kết nối đạt gọi hệ thống; đó, các trang tệp tin ảnh xạ là thay các trang nhớ chính không gian địa ảo tiến trình Hình 4.13 minh hoạ điều này cách đầy đủ Việc thực thi chế thì tương đối đơn giản: Khi miền mà trên đó các trang tiến trình nạp, đó, miền tệp tin trên nhớ quảng đại Điều đó, mang lại lợi khác sau: + Độ nhanh nhạy: (148) Trang tệp tin đọc, nó sử dụng; việc chép không cần thiết loại bỏ + Ghi vào đệm tự động: Ở hầu hết các chương trình sử dụng các tệp tin, đệm logic viết để cần thiết thực vài tác vụ đọc/ viết Điều đó thì khác biệt với ảnh xạ nhớ: Với chế trang (paging mechanismus), việc ghi vào đệm thực cách tự động và hiệu nghiệm hệ điều hành Hình 4.13***************************** Các tác vụ cờ hiệu cho phép sử dụng cùng các khoảng nhớ với nhiều tiến trình Từ lý này, có chế hệ điều hành Tuy nhiên, chế này còn tồn giới hạn, đó, tệp tin tồn không đọc và viết, mà còn thay đổi chiều dài nó Khi đó, với ảnh xạ nhớ, vấn đề vừa nói đã giải Thí dụ tệp tin ảnh xạ nhớ Unix: Để tạo các tệp tin ảnh xạ, hệ điều hành Unix có các gọi hệ thống quan trọng: mmap() để thiết đặt ảnh xạ không gian địa ảo phạm vi tệp tin; munmap() để kết thúc ảnh xạ Nếu nội dùng nhớ bị thay đổi, đó các trang đã thay đổi viết trở lại trên tệp tin; msync() để thực tệp tin từ nhớ Thêm vào đó, còn có vài gọi hệ thống khác thường hay dùng: msem_init() msem_lock() msem_unlock() msem_remove() để tạo lập các cờ hiệu cho phạm vi nhớ; để giải phóng các khoảng nhớ; để giải phóng các khoảng nhớ; để rời khỏi nhớ Tệp tin ảnh xạ nhớ Windows NT: Đối với việc ảnh xạ nhớ và hệ thống các tệp tin, thì điều hành I/O và điều hành cấu ảo coi là cùng tác dụng với Nhờ hàm gọi CreateFileMapping(), đối tượng (object) tạo lập; đối tượng này có thể mở các tiến trình khác cái tên đã biết OpenFileMapping() Theo đó, khoảng nhớ tuỳ ý (vài Byte đến GBytes) chuẩn bị Các khoảng nhớ riêng rẻ có thể ảnh xạ với hàm MapViewOfFile() không gian địa ảo Với hàm gọi hệ thống FlushViewOfFile(), phạm vị tệp tin thực và với hàm UnmapViewOfFile() nó đóng lại Cơ chế này sử dụng để trao đổi thông tin các tiến trình; đó, người ta chọn tệp tin làm việc trên phạm vi nhớ chia xẻ Với cấu ảnh xạ fie, (149) tệp tin này còn có thể xử lý cách trực tiếp nhiều tiến trình Đối với việc làm đồng các kiểu truy cập này, không có chức đặc biệt xem xét, mà có việc sử dụng bình thường các cờ hiệu 4.4.6 Các tệp tin đặc biệt (special files) Có chế khác hệ điều hành, mà với trợ giúp hệ thống tệp tin, các chế này có thể chuyển đổi cách hài hoà; mà không cần phải lý giải hay tạo lập tệp tin đích thực Một phương pháp mở rộng tiếng hệ điều hành Unix là việc mô hình hóa các thiết bị vật lý tệp tin đặc biệt Mỗi cái tên tệp tin thu xếp là thiết bị vật lý; dĩ nhiên, các tệp tin này biểu thị với trạng thái tệp tin đặc biệt Tất các việc truy cập và các thay đổi trạng thái tệp tin biểu trưng này (symbol file) có tác dụng trực tiếp lên thiết bị, không phải tác dụng lên tệp tin Nếu tệp tin viết lên thiết bị thế, đó, thực hiện, tệp tin dịch chuyển tới thiết bị (chẳng hạn tới thiết bị đầu cuối nào đó) và đó, chúng thể trên màn hình Nếu tiến trình mở tệp tin đặc biệt thiết bị đầu cuối để đọc, đó, nó cảm nhận tất các ký tự viết trên bàn phím Lợi ích việc mô hình hóa nằm điều có thật, mặt, nó đã tạo khả cho người sử dụng truy cập trực tiếp và hiệu lên các tính chất vật lý thiết bị; mặt khác, các chế quản lý và bảo vệ hệ điều hành hoạt động hiệu quả; và đó, việc truy cập điều chỉnh và điều khiển cách hợp lý Tệp tin đặc biệt Unix: Trong hệ điều hành Unix, có thư mục tồn với đường dẫn /dev; đó, các tệp tin tồn với các thiết bị khác Có hai kiểu tệp tin thiết bị: Loại thứ là các tệp tin tuần tự, gọi cách đầy đủ là các tệp tin đặc biệt hướng ký tự (character oriented special files); chúng bổ sung cho tất các thiết bị hướng ký tự các thiết bị đầu cuối, các ổ đĩa từ tính, máy in… Loại thứ hai là các tệp tin tuỳ chọn, gọi đầy đủ là các tệp tin đặc biệt hướng tổng thể (block oriented special files ); đó, khoảng nhớ kỳ (block) có thể xem là các tuỳ chọn, thí dụ các ổ đĩa cứng, các đĩa mềm…Mỗi loại tệp tn đặc biệt tạo trợ giúp gọi hệ thống mknod() và các gọi hệ thống close(), read(), write() tệp tin này thích hợp cho các thủ tục đặc biệt, mà các thủ tục này lại các kích thích thiết bị hệ điều hành sử dụng Thí dụ, với đường dẫn /dev/tty, các ký tự xuất và đọc trên thiết bị đầu cuối Người ta lưu ý rằng, với chế vừa nêu, thiết bị có thể vay mượn tên tệp tin đặc biệt khác Thí dụ, ổ đĩa từ tính có thể coi tệp tin đặc biệt, chẳng hạn tệp tin liên tục Hoặc giả, cái tên khác, người ta có thể coi thiết bị này là tệp tin đặc biệt (150) hướng tổng thể (khối) và với cái đó, để truy cập trực tiếp trên các khối lưu trữ tuần tự; chẳng hạn, khối với số 15 đọc trước khối số Với tác vụ này, các lệnh định vị bổ sung kích thích thiết bị phải sử dụng Ở vài thiết bi máy in và thiết bị đầu cuối thì không thể lẫn lộn với thiết bị khối (tổng thể), đó, nó thì có điều kiện để tất các thiết bị có thể xưng hô là tệp tin đặc biệt hướng ký tự tệp tin đặc biệt hướng tổng thể (khối) Vì giao diện để truy cập trên các liệu khiết thì cho phép không có cấu trúc và không cần thông tin quản lý, đó, các tệp tin đặc biệt này còn biểu thị là thiết bị nguyên sơ Để sử dụng hệ thống tệp tin tồn trên ổ đĩa, với lệnh mount(), nút gốc cây phải ảnh xạ trên thư mục hệ thống tệp tin tồn Tất các tệp tin trước đó đã thư mục thì nạp lần đầu tiên vào hệ thống tệp tin Trong hệ điều hành Unix, tệp tin đặc biệt phô bày khả phi thường quan điểm người sử dụng truy cập trên thiết bị vật lý Tất thay đổi trạng thái (như thay đổi tốc độ truyền đạt, thay đổi kiểu chịu tải nối tiếp…) phải thực nhờ hàm gọi hệ thống đặc biệt IOCTL() với biểu thị thích hợp tệp tin đặc biệt Nếu người ta muốn sử dụng tính chất phần cứng đặc biệt, thí dụ: mật độ cao viết vào các đĩa mềm hay cuộn lại tự động theo gọi hệ thống close(), đó, người quản lý hệ điều hành Unix tạo tệp tin đặc biệt gọi hệ thống mknod(); đồng thời chuyển giao cho kích thích hệ điều hành thông số thích hợp gọi hệ thống Tệp tin đặc biệt Windows NT: Các nhà thiết kế hệ điều hành Windows NT đã học tập từ các hệ điều hành đương thời và đã đảm nhận chế các tệp tin đặc biệt hệ điều hành Unix Thêm vào đó, họ đã phân bổ việc quản lý cây thư mục cho người quản lý khác Việc điều hành các đối tượng tệp tin đặc biệt cho phép người quản lý đối tượng có toàn quyền trên các hệ thống tệp tin và bắt buộc phải quan tâm tới việc quản lý tệp tin và quản lý I/O nhân hệ điều hành Mỗi thiết bị phải phù hợp cho tệp tin ảo (virtual file), tệp tin này đã xác định các đối tượng và có phương pháp đã khẳng định Những phương pháp này người ta nói tới và làm việc nhiều trên các thủ tục kích thích thiết bị chương sau 4.5 Việc thực thi chế tệp tin 4.5.1 Biểu diễn nhớ liên tục Cấu trúc phương pháp thì tương đối đơn giản: Bắt đầu không gian nhớ là số hay thư mục, mà đó các tệp tin (151) liệt kê vào; và không gian còn lại để ghi tiếp các tệp tin Một tệp tin thì viết liên tục với đoạn Ý tưởng vừa nêu trên phát triển theo thời gian, đó tệp tin chiếm vị trí đĩa từ và các thư mục là khái quát các ngăn xếp với các dãy đĩa từ Vì ý tưởng này thì quá cứng nhắc để thay đổi tệp tin, đó, nó sử dụng để thu xếp chỗ cho nhiều tệp tin nhỏ (gọi là các đối tượng) tệp tin lớn (gọi là thư viện các tệp tin) 4.5.2 Biểu diễn nhớ kiểu danh sách Việc định cho khoảng nhớ liên tục là chỗ: nhớ phải phân khoảng có độ lớn (block) và tất các block tệp tin phải kết nối danh sách Ưu điểm phương pháp này là chỗ, thư mục hỏng (bị xoá nhầm lẫn…) biểu thị gấp đôi và các thông tin tệp tin (tên, các quyền truy cập…) chứa đựng đầu tệp tin Nhược điểm phương pháp này là việc truy cập tệp tin kém hiệu nghiệm: Nếu người ta muốn đọc block số 123, đó, người ta phải đọc trước đó tất 123 blocks để có thể lướt qua danh sách block số 123 Hình 4.14 phương pháp Hình 4.14************************* 4.5.3 Biểu diễn nhớ biểu thị qua số tập trung Người ta có thể tránh bất lợi kiểu danh sách tệp tin, cách, người ta không phân bổ môi trường nhớ các thông tin dãy số khối danh sách các khối liên tục với nhau, mà người ta kết hợp chúng khối tập trung Phương pháp này gọi là cấu trúc số tập trung, nó chính là danh sách, mà đó, điền vào chứa đựng số khối tiếp tục trên đó Hình 4.15***************************** Bảng cấp phát các tệp tin (FAT) MS-DOS: Với hệ điều hành MS-DOS, đĩa từ phân chia thành nhiều cung đoạn (sectors), sectors có độ lớn khoảng 512 Byte Bắt đầu là sector số bố trí cho cung đoạn khởi động (bootstrap-sector), còn bảng cấp phát tệp tin (file allocation table: FAT) bố trí các sector số đến số 5; các bảo vệ tồn các sector số đến số 10 Bảng FAT thì bao gồm các điền vào với chiều dài 12 bits hay số thập lục phân với các giá trị 000H tới FFFH, cho nên, bảng FAT có không gian lớn 512*5 = 2560 Byte ứng với khoảng 1706 điền vào Mỗi điền vào thì tương ứng đơn vị nhớ đĩa từ Mỗi đơn vị nhớ gọi là sluster (tức cụm sector) ứng với 1024 Byte, đó, (152) đĩa từ MS-DOS có thể đạt nhiều dung lượng khoảng 1,7 MB và tệp tin đạt tối thiểu 1kByte Mỗi điền vào bảng FAT có ý nghĩa sau: 000H các cluster (cụm) còn trống; 001H…FF0H cluster đã đầy; điền vào biểu thị số cluster tệp tin; FF1H…FF7H các cluster bị khuyết tật không thể sử dụng lỗi bề mặt vật liệu; FF8H…FFFH các cluster cuối cùng tệp tin Vì hai điền vào đầu tiên sử dụng cho việc quản lý, còn các tệp tin bắt đầu với sector số 18, đó, số sector đầu tiên cluster dẫn biểu thức: (số sector) = (chỉ số điền vào cluster -2)*2 +18 (4.6) Bình thường việc điền vào bảng FAT tạo điều kiện để xác định cluster tệp tin cách độc lập với việc che phủ, đó, việc biểu thị cluster khởi động đủ để đọc tệp tin đĩa từ cách đầy đủ Nó thì cần thiết, phải kết nối việc điền vào với thông tin đã phủ tĩnh lại Tuy nhiên, việc mã hoá này giới hạn số lượng các cluster đã quản lý; các bảng FAT có độ lớn tuỳ ý kéo dài quá sector, mà đó, người ta có thể quản lý 163 = 212 = 4096 cluster ứng với khoảng MB Trên sở này, ổ đĩa cứng, kích cỡ bảng FAT MS-DOS thay đổi: số cluster là số dài 16bit Điều đó có nghĩa rằng, với 16 = 65536 cluster, thì không gian đĩa từ phải che phủ Khi ổ đĩa từ có dung lượng GB- đó là độ lớn tiện lợi cho các máy tính, điều đó có nghĩa cluster có độ lớn 231/216 = 215 = 32168 Byte Vì hầu hết các tệp tin thì khoảng 1kByte, nghĩa là phải biếu 31 đến 32 kByte cho việc quản lý hệ thống, đó hiệu suất sử dụng quá thấp Cho nên MS-DOS, ổ đĩa từ vật lý phân làm nhiều ổ đĩa logic, mà với hệ thống tệp tin riêng lẻ, đó, chúng cần độ lớn cluster nhỏ thôi Ngược lại, phương pháp này còn tồn vấn đề, các hệ thống tệp tin lớn thì danh sách tập trung lớn Vì thư mục chung phải nhớ chính để có thể nhìn lướt qua, đó, không gian nhớ chính chắn che phủ… Thí dụ: Giả thử ổ đĩa cứng có dung lượng GByte = 231 Byte và block có dung lượng kByte = 210 Byte; danh sách số thư mục có tối thiểu 231 / 210 = 2.106 lần điền vào dẫn Mỗi lần điền vào phải đón nhận tối thiểu số tuỳ ý 0…220, đó, tối thiểu 20 bit hay Byte cho lần điền vào sử dụng Điều đó, có nghĩa rằng, danh sách số tập trung, có khoảng MByte nhớ chính luôn luôn phải dự trữ, và lưu ý rằng, không phải có điền vào sử dụng hết dung lượng đó! (153) 4.5.4 Biểu diễn nhớ biểu thị số phân bổ Một định quan trọng để lựa chọn tệp tin số tập trung nhớ quảng đại thì bao gồm việc dẫn danh sách số riêng lẻ tệp tin và danh sách này phải lưu trữ block, hãy so sánh hình 4.16 Nếu có số tệp tin phù hợp làm hài lòng thực thụ, đó, khối số (index block) nó phải hoàn trả lại Hình 4.16******************** Tất nhiên, các danh sách số dài hơn, đó, các tệp tin thuộc danh sách đó dài Bấy giờ, các hệ thống tệp tin tồn tại, người ta lưu ý rằng, có nhiều tệp tin tồn với vài block và có ít tệp tin tồn nhiều block Với lý này, người ta có thể dẫn giải block số chính, mà hầu hết các tệp tin, block này đã đạt yêu cầu Đối với vài tệp tin cần tới nhiều không gian cho số, chúng ta phải đặt vào block số tiếp theo,mà địa logic nó đứng cuối danh sách số Nếu các tệp tin quá lớn, thì điều xẩy chậm, vì đó, tất các block số phải đọc cách vào đĩa từ để tìm kiếm địa vật lý block cần tìm Điều đó nhằm mục đích để tổ chức cách hệ thống các danh sách số đã dẫn ra, và đó, nhằm tăng tốc độ chuyển đổi (speed of translation) các địa logic tệp tin tới các địa vật lý thiết bị Hình 4.17 đây làm sáng tỏ nguyên tắc đã trình bày mục 3.3 chương trước chuyển đổi nhiều bậc từ không gian địa ảo thành không gian địa vật lý Hình 4.17**************************** 4.5.5 Thực thi hệ thống tệp tin Unix Hệ điều hành tiếng tăm sử dụng phương pháp vừa trình bày trên, đó là hệ điều hành Unix Ở đây, ứng dụng, biến đổi đặc biệt thử nghiệm để giữ cố địn thông tin xác đáng các tệp tin ngắn dài block số Về điều này, thì nút số đầu tiên (first index-node) tạo phần khái quát, mà đó chứa đựng các tên, các địa đầu tiên các block liệu, và các địa cây chuyển đổi gián tiếp bậc, hai bậc và ba bậc Hình 4.18 thí dụ tổng quát điều đó Nội dùng trên nút số đã tu chỉnh các hệ thống cụ thể và mở rộng các biểu thị thực chất bên trong, thí dụ Unix System V, với các thông tin cờ hiệu để ngăn hãm tệp tin, chúng đã mở rộng không gian cho thị (khi không gian nhớ còn trống, nút số đầu tiên treo vào danh sách bậc hai kết hợp), các điền vào bảng FAT với hàm mount() và các thông tin trạng thái việc truy cập mạng máy (154) tính… Ở Unix System V không tồn bảng FAT gián tiếp hai bậc và ba bậc; nhiên, nút số có thể tồn các block Mỗi tệp tin thu xếp cách chính xác nút số; tương tự, thư mục tệp tin tự thu xếp là tệp tin lưu trữ Các số nút số trao cách tuần tự; còn vị trí giao dịch hành trên nhớ quảng đại (số block vật lý) kết hợp thành block đặc biệt, còn gọi là nút đặc biệt (super node) Nếu super node này bị phá hỏng, đó, hệ thống tệp tin không sử dụng Hình 4.18****************************** Tham chiếu chìa khóa tệp tin là số nút số, còn có nhiều tham chiếu (nhiều tên tệp tin) tệp tin này thì chúng tồn các thư mục khác Một thư mục tạo lập cách đơn giản: Nó chứa đựng số nút số tệp tin và tên (như chiều dài tên, chiều dài điền vào…), ngoài không cần gì thêm Tất cái khác quyền truy cập…thì lưu trữ block đầu tiên tệp tin Vì thư mục chiếm khoảng nhớ, mà khoảng này là đa bậc độ lớn block (tức là đơn vị nhớ chuyển đổi nhanh), đó, các thư mục có thể đọc hay lưu trữ nhanh và hiệu Việc biểu diễn bổ sung chiều dài tên hay độ lớn điền vào (tức chiều dài tên mở rộng trên giới hạn từ) thì cho phép lưu trữ điền vào tên ngắn thư mục 4.5.6 Thực thi hệ thống tệp tin Windows NT: Ở hệ điều hành Windows NT, đơn vị để quản lý tệp tin là volume (dung lượng) Đó là đơn vị nhớ logic (ở trên nhớ quảng đại), nó có thể bao gồm hay nhiều đĩa từ riêng lẻ, mà trên đó còn tồn khoảng nhớ liên kết đơn vị logic Mỗi volume thì bao gồm xếp theo nguyên tắc nào đó các liệu hay các tệp tin đã đánh số Mỗi tệp tin có số tham chiếu, gọi là số tham chiếu tệp tin (file reference number) với khoảng 64 Bit, tức là nó bao gồm 48bit cho số tệp tin và 16bit cho số Số gia tăng theo xoá tệp tin thuộc số tệp tin, đó, người ta có thể phân biệt tham chiếu tới các số tệp tin trung gian đã bị xoá và tệp tin hành, chúng tham chiếu tới các số tệp tin tương tự Ưu điểm ý tưởng này là cung cấp cho người ta tương đối đầy đủ tất các thông tin tệp tin: + Cơ cấu truy cập tệp tin thì kiên đình và đơn giản, kể các thông tin khởi động hệ thống; + Các thông tin bảo vệ tách bạch theo các thành phần quản lý, và với điều này, nó thì có thể thích hợp các ứng dụng; (155) + Khi các phần đĩa từ không thể sử dụng được, đó, các thông tin quản lý (mà người sử dụng không thể nhìn thấy…) có thể nạp trở lại trên các phần khác đĩa từ Mỗi volume chứa đựng bảng trung tâm gọi là bảng tệp tin chủ (master file table: MFT), mà đó, các tệp tin hệ thống ghi chép đầy đủ Hình 4.19 đây cho thấy, chính nó là tệp tin bao gồm tất các liệu các thư mục các thông tin việc tự khởi động hệ thống (bootstrap) Tất 16 tệp tin đầu tiên này giữ chặt và tạo thành các tệp tin hệ thống hệ điều hành Windows NT (NT file-system: NTFS) Tệp tin Tệp tin Tệp tin Tệp tin Tệp tin Tệp tin Tệp tin Tệp tin Tệp tin Tệp tin Tệp tin 16 Bảng tệp tin chủ (MFT) Bản bảo vệ bảng MFT các tệp tin hệ thống, định vị đĩa từ Tệp tin logic: Các tác vụ thay đổi cấu trúc NTFS, biểu thị đây và đảm bảo các hoạt động chuyển đổi nhân tử Tệp tin volume: Các thông tin trạng thái volume tên, ấn bản… Nếu Bit corrupted đặt thì chương trình chkdsk phải thực hiện; chương trình này kiểm tra hệ thống tệp tin thường trú và sửa chữa lỗi đã khẳng định Bảng định nghĩa thuộc tính: Ở đây biểu thị tất các kiểu thuộc tính tồn volume, trạng thái Thư mục gốc: Tên thư mục gốc, thí dụ ký tự “\” Tệp tin bitmap: Bảng che phủ đơn vị nhớ volume (sluster), xem thư mục 3.1.1 Tệp tin boot: Tệp tin khởi động này tạo nhờ chương trình format và chứa đựng mã bootstrap Windows NT và địa vật lý tệp tin MFT Tệp tin bad cluster: Thư mục colume cluster không thể sử dụng … … Các tệp tin người sử dụng bình thường và các thư mục Hình 4.19 Dãy 16 tệp tin đầu tiên hệ thống các tệp tin (NTFS) Windows NT Cấu trúc logic volume tạo thành sau: Cấu trúc liệu trung tâm hệ thống tệp tin là bảng tệp tin chủ (master file table: MFT); bảng này đóng vai trò nút đặc biệt Unix Bảng MFT chứa đựng điền vào tệp tin và thư mục Sự điền vào này bao gồm dãy các thuộc tính tệp tin Mỗi thuộc tính có thể tồn cách đầy đủ, gọi là thuộc tính thường trú (resident atribute), là, thuộc tính này quá dài (thí dụ các liệu riêng lẻ tồn là thuộc tính bình thường), thêm vào đó, tham chiếu tới các block nhớ (còn gọi là các cluster) biểu thị là “runs” Mỗi thuộc tính có kéo căng hai đầu (header); bên cạnh biểu thị “resident” (thường trú ) hay “nonresident” (không thường trú), kéo căng này còn chứa đựng bắt đầu và chiều dài thuộc tính điền vào tệp tin Nếu thuộc tính là không thường trú, đó, nó chứa đựng bắt đầu và chứa đựng chiều dài các khối bổ sung Thêm vào đó, số tương đối các khối 0…N, gọi là số các cluster ảo (virtual cluster number: VCN), biểu diễn tệp tin là việc xếp chúng từ số cluster ảo thành số (156) cluster logic (logic cluster number: LCN) Hình 4.20 biểu diễn điền vào Những thuộc tính tệp tin giải thích cách đầy đủ mục 4.3.2 trên Nếu theo đó các block nhớ tồn toàn số 0, và thuộc tính chuẩn biểu thị compress (nén lại) tệp tin, đó, các block trống nhớ không lưu trữ Đáng lẽ là vậy, đếm các cluster ảo, các khối cluster thích hợp nhãy qua cách đơn giản, đó, dãy VCN, các lỗ trống tồn Hình 4.20************************************ Khi đọc các tệp tin, thì điều đó các tệp tin hệ thống Windows NT nhận biết và đưa trở lại với các block khởi xướng là các số Nếu các block tệp tin nén không chứa đựng các số 0, đó, giải thuật nén tổng quát đáp ứng; nhiên, giải thuật này đạt nén nhanh không đạt nén hiệu suất Ở thư mục, dòng liệu bao gồm số với tên tệp tin, mà đệm nó tổ chức thành dạng cây B* (thí dụ các tệp tin hệ thống hệ điều hành OS/2), xem mục 4.4.4 trên Chỉ số này bao gồm thành phần: phần thứ là các tên đánh số dãy từ điển (gọi là số gốc: index root) và các dẫn chúng; phần thứ hai là các bảng xếp (VCN -> LCN) các đệm để cấp phát số (index allocation) cho các liệu không thường trú; phần thứ ba là các bảng che phủ các đệm còn gọi là các bit ảnh xạ Mỗi điền vào bao gồm số tham chiếu tệp tin, tên tệp tin, thời gian tạo lập và chiều dài tệp tin; tất cái đó bảng MFT chép lại đây Tuy nhiên, chi phí cho việc đồng bổ sung; chi phí này có lợi nhờ thời gian tìm kiếm ngắn các thư mục Tên tệp tin đánh số dãy từ điển Mỗi tên tệp tin dẫn trên đệm số và chứa đựng các điền vào với số nhỏ Một cây B* thường phát triển theo chiều rộng tốt chiều sâu, vì nó cho phép các tác vụ tìm kiếm nhanh Các đệm bổ sung chứa đựng dẫn tệp tin dạng đóng gói; lần sử dụng đầu tiên (mount) tệp tin, cấu trúc liệu phải đóng gói nhớ Nhờ đó, lưu trữ với khoáng 15 tên tệp trên đệm với 2kB hay cluster (khoảng 512 Byte cho cluster) là có thể 4.6 Các bài tập quản lý tệp tin 4.6.1.Các bài tập tệp tin Bài tập 4.1 Về các thư mục cô lập Giả sử thư mục Test là thư mục gốc Bạn hãy lập thư mục thư mục Test Trên thư mục vừa thiết lập, bạn hãy tạo kết nối cứng (hard link) Bấy (157) giờ, nó tồn kết nối quay vòng Bạn hãy thử nghiệm xoá thư mục Test từ đường dẫn gốc Bạn đạt cái gì ? 4.6.2 Các bài tập tên tệp tin và thư mục Bài tập 4.2 Về đổi tên tệp tin Ở ví dụ đổi tên file, giải thuật cho Windows NT mô tả để đổi tên tệp tin dài thành tên ngắn và rõ ràng a) Tên các tệp tin có kích cỡ bao nhiêu để có thể mã hóa thành tên ngắn và rõ ràng với ký tự ? Với lưu ý: các ký tự phần tên chính không ít b) Bạn có thể thay đổi sơ đồ nào để mã hóa số lượng lớn các tên tệp tin dài thành tên tệp tin rõ ràng với ký tự theo mã ASCII ? Bạn hãy suy nghĩ vì các việc thực thi đã không chọn khả này ? Bài tập 4.3 Về tên đường dẫn Nhược điểm và ưu điểm tên đường dẫn tương tên đường dẫn tuyệt đối là gì ? Ở đâu và nào người ta có thể thay tên đường dẫn nào cho phù hợp ? Bạn hãy lý giải điều này với trợ giúp hệ thống biên dịch! Bài tập 4.4 Về quản lý tệp tin hướng đối tượng Giả sử người ta cho phép việc quản lý tệp tin Unix cách hướng đối tượng Những phương pháp và thuộc tính nào là cần thiết đối tượng thư mục và đối tượng tệp tin hệ điều hành Unix ? Bài tập 4.5 Về danh sách điều khiển truy cập Nhược điểm và ưu điểm danh sách điều khiển truy cập là gì ? Khi điều đó người sử dụng thiết đặt cho tất các tệp tin 4.6.3 Các bài tập các chức tệp tin Bài tập 4.6 Về file mở Một hệ điều hành có thể thực các tác vụ tệp tin trên hai loại khác nhau: + Bình thường để truy cập tệp tin, trước hết người sử dụng phải mở tệp tin; + Hoặc điều này xảy cách tự động truy cập tệp tin Ở trường hợp thứ nhất, truy cập tệp tin mô tả sau: open() read() I/O-Ops Close() (158) Trong trường hợp thứ hai, người ta việc truy cập tệp tin (I/O- Ops); sau đó, tệp tin đóng lại chương trình kết thúc Với hai cách nói trên, tồn ưu điểm và nhược điểm nào ? Bài tập 4.7 Lệnh copy Mỗi hệ điều hành thông thạo số lệnh để quản lý các tệp tin Bạn hãy đặt mình vào vị trí nhà thiết kế hệ thống để viết lệnhh copy a) Bạn hãy thực thi lệnh copy để tệp tin hệ điều hành với các chức thư viện quản lý tệp tin (read, write ) b) Những thay đổi nào phải lựa chọn lệnh move ? Nếu đầu tiên đạt việc copy, thì đó, tệp tin thư mục nguồn có bị xóa không ? Xin lưu ý: Bạn hãy suy nghĩ tới chế bảo vệ ! c) Lệnh copy phải mô tả nào để chép toàn thư mục kể các thư mục ? Bạn hãy thực thi lệnh này xem ! Bài tập 4.8 Về xuất- nhập Tại Unix có khác xuất chuẩn và xuất lỗi chuẩn, hai dẫn tới mặc định trên màn hình ? Bài tập 4.9 Thực lệnh echo thiết bị đặc biệt Cái gì xảy ra, Unix bạn xuất bài text với chương trình echo (dội lại) theo các đường dẫn dev/tty hay dev/null ? 4.6.4 Thực thi việc tổ chức tệp tin Bài tập 4.10 Về i-node Trong hệ điều hành Unix, các i-node chứa đựng 20 địa các block liệu, các địa block vô hướng bậc đầu tiên, bậc và bậc Nếu các block chứa đựng 256 địa ổ đĩa, thì tệp tin có thể sử dụng lớn là bao nhiêu ? Với kích cỡ block ổ đĩa là KB Bài tập 4.11 Về quản lý việc lưu trữ các tệp tin Việc lưu trữ các tệp tin dẫn tới việc phân mảnh nhỏ ổ đĩa từ Bạn hãy trình bày việc phân mảnh nhỏ các vòng xuyến ngoài và gần tâm đĩa từ ? (159) CHƯƠNG QUẢN LÝ VÀO RA 5.0 Mở đầu Khả hiệu suất hệ thống máy tính không phụ thuộc vào kiểu vi xử lý và bề rộng từ (16, 32 hay 64 Bit), đặt biệt còn phụ thuộc cách thực chất vào tốc độ, mà với nó, các liệu có thể dịch chuyển các thiết bị vào - (kiểu nhớ quảng đại, kiểu kết nối mạng ) và hệ thống nhớ chính vi xử lý Ở các ứng dụng khoa học tuý, khả tính toán có thể đạt tới hàng triệu phép tính dấu phẩy động Trong khác biệt với điều đó, các yêu cầu các thiết bị tính toán thông thường thì bao gồm pha trộn muôn màu muôn vẻ các kiểu chương trình khác nhau: các thành phần tính toán, các ứng dụng ngân hàng liệu, các nhiệm vụ quản lý Cho nên, tỷ suất các chương trình (benchmark programms) áp dụng nhiệm vụ mà việc sửa chữa lỗi chúng xác định cách mạnh mẽ hệ thống gồm vi xử lý, nhớ chính, nhớ quảng đại và cấu trúc vận chuyển liệu Theo đó, việc đưa vào-ra các liệu đóng vai trò quan trọng Từ đó, chúng ta coi trọng và quan tâm tới cấu trúc vào-ra các hệ điều hành Cụ thể, vấn đề này đã nghiên cứu các chương trước; chương này, chúng ta tiếp tục khảo sát điều này cách kỷ lưỡng 5.1 Phân loại nhiệm vụ Trước đây, các hệ điều hành, quan hệ qua lại chương trình người sử dụng và các thiết bị xuất-nhập là khăng khít; người lập trình ứng dụng đã biên soạn cho mình hệ thống tệp tin hiệu để gia tăng dòng liệu các ứng dụng và các thiết bị ngoại vi Tuy nhiên, phương pháp này không dẫn tới dòng liệu có chương trình hướng thiết bị riêng, mà còn dẫn tới các lỗi và các lẫn lộn nhiều chương trình muốn truy cập lên thiết bị Vì có điều đó xảy ra, nên hệ thống đa người sử dụng làm việc ì ạch; để giải vấn đề này, đó, các thành phần chương trình kiểu thiết bị tách chia hay tích hợp lại thành các đơn thể riêng lẻ, gọi là các kích tạo hệ điều hành (operating-system-driver) Điều này không yêu cầu di chuyển chương trình khỏi các cấu trúc máy tính khác và trợ giúp để phòng tránh các lỗi, mà đặt biệt còn tiết kiệm sức lực cho người lập trình ứng dụng Nhiệm vụ bán kích tạo (driver) là chỗ phải bao quát tất các bước khởi xướng thiết bị và các chế chuyển đổi liệu trước chương trình ứng dụng (sau giao diện hệ điều hành) Với các quan niệm đã đề cập chương 1, kích tạo chính là máy ảo; nó dùng làm cầu nối trung gian hệ điều hành máy vật lý, (160) Các nhiệm vụ kích tạo thì bị giới hạn việc khởi xướng các cấu trúc liệu và các thiết bị việc viết hay đọc các liệu Thêm vào đó, còn có nhiêmh vụ mà chúng có thể thực cùng với hệ điều hành, đó là: Việc chuyển đổi mô hình lập trình logic tới các yêu cầu thiết bị chuyên dụng; Việc chỉnh lý các tiến trình đọc hay viết thiết bị; Việc phối hợp các thiết bị khác thành các kiểu giống nhau; Việc ghi chéo các liệu dự trữ vào buffer Người ta có thể tổng hợp các nhiệm vụ bổ sung vào lớp phần mềm, đó, nói chung, nhiều lớp các máy ảo hay kích tạo nằm tiến trình người sử dụng và máy vật lý Hình 5.1 minh hoạ điều này Trạng thái NSD Trạng thái nhân Tiến trình NSD Bộ phân bổ nhân Quản lý dãy Ghi vào đệm Bộ kích tạo Bộ điều khiển Thiết bị Hình 5.1 Các lớp quản lý thiết bị Việc giới thiệu các phân lớp cho phép dẫn vào nhiệm vụ bổ sung cho việc sử lý liệu dạng các lớp đặc biệt thành dãy trình tự xử lý Thí dụ, kích tạo ổ đĩa coi ổ đĩa là thiết bị nhớ mà địa nhớ nó xác định nhờ nhiều thông số khác ổ đĩa, số sector, số đĩa từ Nó chuyển đổi các yêu cầu đọc /viết thành các địa logic nhớ ổ đĩa, các yêu cầu này xuất phát từ kiểu tuyến tính đơn giản [0 N] địa nhớ Bấy giờ, người ta đặt thêm kích tạo cho việc chuyển đổi địa logic thành địa vậ lý Tức là đó, kích tạo tệp tin thực việc chuyển đổi địa logic tương đối tệp tin thành địa logic tuyệt đối thiết bị nhớ, mà trên đó tệp tin tồn (161) 5.1.1 Các lớp xử lý I/O Unix Nguyên tắc phân lớp nhã hệ điều hành Unix trình bày trên hình 1.6 chương đầu Ơ đây, với các lớp bổ sungm hệ thống lưu thông hệ điều hành Unix ấn System V có điều kiện để kết hợp các bước xử lý khác thành quá trình xử lý; chức này hệ điều hành gọi là kích tạo (driver) hệ điều hành Hình 5.2 hệ thống lưu thông tín hiệu hệ điều hành Unix Hình 5.2 trang 184 Ở hình 5.2(a) cho thấy, thiết bị là hướng ký tự , thì kích tạo nhận dạng ký tự đặc biệt bị đẩy vào lộ trình xử lý (processing route); lộ trình này nhận biết các chữ cái đặc biệt; các chữ cái này dịch vụ với tư cách là các lệnh (thí dụ: FEL để xoá chữ cái cuối cùng, Control-C để bẻ gãy tiến trình xảy ); ngoài ra, lộ trình này còn nhận biết các ký hiệu đặc biệt (thí dụ: 6ký tự trống cho TAB ký tự ) và tạo hoạt động thích hợp Một giao diện nguyên sơ (raw interface) cho phép gởi hay đón nhận các ký tự cách trực tiếp mà không cần xử lý cao dòng ký tự (tức là không cần tới các lệnh ECHO hay Control-C) Lộ trình này còn đặc biệt hữu ích việc kết nối các liệu máy tính với mục đíchtrao đổi liệu, vì đây, tất các ký tự bao hàm các liệu, mà không phải là các chữ cái hay tín hiệu điều khiển 5.1.2 Các lớp xử lý I/O Windows NT Việc phân lớp Windows NT thì động và phụ thuộc vào việc dịch vụ hệ thống Hình 5.3 ra: bên trái là phân lớp đơn giản cho các thiết bị nối tiếp, còn bên phải là đa lớp cho nhớ quảng đại Bộ kích tạo hệ thống tệp tin (file-system-driver): Tất các gọi hệ thống việc xuất-nhập bó gói và chuyển tới quản lý I/O để chuyển đổi thành dạng gói yêu cầu I/O (I/O reagest package:IRP) Mỗi các gói chuyển đổi này chứa đựng các địa người nhận này chứa đựng các địa người nhận không gian liệu (dataspace);cho nên, thông tin lớp dịch chuyển từ trên xuống tới tiến trình người sử dụng và thông báo kết trở lại Vì thế, nhiều trạng thái và nhiều lớp qua Ngoài ra, tồn kích tạo thật là động: Trong khác biệt cới hệ điều hành Unix, đây, điều hành, người ta có thể đưa vào hay lấy kích tạo theo ý muốn để điền đầy nhiêmh vụ xác định (162) Trạng thái NSD Tiến trình NSD Tiến trình NSD Trạng thái nhân Bộ phân bổ nhân Bộ phân bổ nhân Cache/Điều hành I/O Điều hành I/O Bộ kích tạo Bộ kích tạo HT tệp tin Các thiết bị Monitor, Printer, Keyboard, Mouse Cache/Điều hành I/O Bộ kích tạo thiết bị Các thiết bị CD-Rom, đĩa cứng,đĩa mềm, băng từ Hình 5.3 Sự phân lớp đơn giản và đa cấp hệ điều hành Windows NT Bộ kích tạo với ảnh xạ các cluster hư hỏng Vì việc quản lý tệp tin tự kích tạo điều khiển, đó, hệ thống Windows NT nhiều hệ thống tệp tin có thể tồn song song với nhiều kích tạo Thật vật, người ta thấy rằng, hệ thống các tệp tin cho các hệ điều hành khác (Windows NT, OS/2 hay MS-DOS) có kích tạo riêng Tất các tác vụ truy cập các hệ thống tệp tin thì thực thi phương pháp kích tạo hệ thống tệp tin Chúng phân biệt không các cấu trúc liệu và hiệu suất dịch vụ (nghĩa là chúng tạo cái đó với trợ giúp kích tạo thiết bị trên nhớ quảng đại), mà còn phản ứng trước các lỗi xuất thí dụ bảng FAT MS-DOS hay hệ thống tệp tin OS/2 xuất các lỗi không thể sửa vì các đơn vị nhớ sai hỏng (tức là các block hay các cluster bị sai hỏng), thì đó, có lỗi, Bit hư hỏng (corrupted-bit) thiết lập Muốn sử dụng các tệp tin trên clucter hư hỏng này, người ta phải tiến hành kiểm tra sửa chữa chương trình trợ giúp (check disk) gọi với lệnh chkdsk: với chương trình này, các tệp tin nói trên điền vào hệ thống tệp tin nhứo quảng đại, cụ thể các đơn vị nhớ phù hợp điền vào bảng bad clucter mapping, và đó, cluster hư hỏng bị lloại khỏi các ứng dụng Ngược lại, hệ thống tệp tin Windows, điều này thực cách động Thật vậy, việc xếp các cluster ảo thành các cluster logic điều chỉnh thích hợp; các loại cluter này đã nói tới mục 4.5 trên Bây giờ, chúng ta khảo sát thí dụ hình 5.4, đây cluter đã bị khuyết tật,nó không có thể kích tạo thiết bị kiến lập thành đơn vị lưu trữ (reservedunit) hình 5.4 trang 186 (163) Cuối cùng, không còn phần dư thừa nhớ quảng đại và không thể có bảo vệ tồn tại, đó, thông báo lỗi “Read/Write Error” đưa trên màn hình Đối với hệ thống tệp tin Windows NT, không có cluster còn trống có thể sử dụng được, đó, nguyên tắc, Bit bị hỏng đĩa từ kiến lập; và thực hiện, chương trình kiểm tra sửa chữa (chkdsk) tiến hành cách tự động Nếu các liệu cluster hỏng không thể phục hồi và không còn cluster thay thế, đó, ngoài ra, lần vào-ra trên cluster này, thông báo lỗi “Warning Eorror” đưa tới người điều hành hay người sử dụng, giờ, vì không còn liệu khả dụng nên độ lệch lỗi không tồn và nội dung cluster hư hỏng phải khai khẩn đọc từ 5.2 Các mô hình thiết bị Sự phát triển kích tạo (driver) hệ điều hành định tính chất các thiết bị vật lý, tức là chúng phải tạo lập nên các tính chất mà hệ điều hành mong đợi Điều đó cần thiết, nó làm cho người lập trình hiểu nhiều thiết bị Vì nhiều thiết bị vó đặc điểm giống nhau, đó, nó có lợi cho việc nghiên cứu các kiểu dáng để hiểu sâu sắc các thông số đặc trưng Thật vậy, chúng ta có thể phân biệt cách thô thiển hai loại thiết bị: các thiết bị sử dụng các thông tin định vị với việc truy cập tuỳ chọn và thiết bị với chuyển đổi liệu nối tiếp mà không cần thông tin địa Bây giờ, chúng ta nghiên cứu nhớ ổ đĩa từ là đại diện cho nhóm thiết bị tuỳ chọn 5.2.1 Bộ nhớ ổ đĩa từ Bộ nhớ đĩa từ bao gồm đĩa nhôm phủ lớp mỏng bột ôxyt sắt Trên kim loại mảnh có gắn đầu từ để đọc/viết, và đĩa quay tròn quanh trục Đầu từ có thể làm nhiễm bột từ trên các vòng hình xuyến (track) đĩa, đó gọi là quá trình viết Ngược lại, trượt qua đầu tự cách khác nhau, lớp bột từ làm kích thích cảm ứng cuộn dây đầu từ, đó gọi là quá trình đọc Khi đọc, các thông tin định hình từ tính, thay đổi cảm biến thông dịch thành các Bit, đó, trên vòng xuyến đĩa từ, dãy các Bit lưu trữ Vì vòng xuyến có thể lưu trữ nhiều thồng tin, vì vật, người ta chia nhỏ vòng xuyến thành nhiều phần có độ lớn khác nhau, phần gọi là sector Bây giờ, người ta còn điều khiển kim loại có gắn đầu từ di chuyển trên đĩa từ (đĩa cứng) từ tâm mép biên hay ngược lại: để đọc và viết trên nhiều vòng xuyến khác Mô hình nhớ đĩa từ thì bao giừo giống Ngoài việc phủ trên bề mặt đĩa lớp bột ôxyt sắt (đĩa cứng), người ta còn phủ lớp (164) bột ôxyt crôm (đĩa CD-ROM) hay tráng lớp môi trường quang hoạt tính (đĩa ĐV), và người ta còn chế tạo đĩa từ chất dẻo có phủ bột từ (đĩa mềm) Tất nhiên, người ta có thể xếp nhiều đĩa từ với từ trên xuống với mặt đĩa có bố trí đầu từ đọc/viết (read/write head) hình 5.6 trang187 Nếu nhiều đĩa từ lắp chồng lên cùng theo trục quay, đó, kết cấu khí, các đầu từ chuyển động theo mong muốn Ở trên các đĩa từ khác hệ , tất các đầu từ luôn luôn cùng trên vòng xuyến có số nhóm giống thì trên và tạo thành vỏ hình trụ ảnh ảo (xem hình 5.6) Các vòng xuyến có số điều khiển giống biểu thị nhóm hình trụ (cylinder group) Ở phần cấu tạo, đầu từ phải dịch chuyển cách học để đọc hết trọn vòng xuyến Nếu người ta muốn đặt chính xác hình xuyến để nhận biết điểm bắt đầu vòng xuyến và các khoảng chia vòng xuyến, đó, ngoài còn có thông tin trợ giúp các kích thích đặn hay các thông tin hiệu chuẩn đặt biệt thì cần thiết Đối với người lập trình, các thông số sau đây mô hình cấu tạo đĩa từ là quan trọng: Thời gian truy cập trung bình ts còn gọi là thời gian tòm kiếm trung bình (averrage seek time) cho vòng xuyến: khoảng 810ms cho ổ đĩa cứng, khoảng 100ms cho ổ đĩa CD-ROM, khoảng 250ms cho ổ đĩa mềm Khi tốc độ quay là cố định, người ta phải chờ đợi trên vòng xuyến khoảng thời gian xác định tD, gọi là thời gian quay trễ (rotational delay time), đạt sector mong muốn xuất đầu từ Trong trường hợp xấu nhất, đó là thời gian trễ cho vòng quay tR Tốc độ vận chuyển lớn còn gọi là tỷ phần vận chuyển liệu H, nó phụ thuộc vào mật độ từ tính đĩa từ trên đơn vị chiều dài vòng xuyến (thứ nguyên mật độ từ tính: Bit/mm) Do vậy, các nhớ đĩa từ gia tăng dung lượng lưu trữ cách tuyến tính thời gian truy cập Ngược lại, các vòng xuyến gia tăng dung lượng, người ta nhận thấy: để truy cập dung lượng nhau, với vòng xuyến có bán kính nhỏ thì đầu từ truy cập thời gian ít truy cập trên vòng xuyến có bán kính lớn Trường hợp đặc biệt, trên vòng xuyến có đầu từ, đó không có chuyển động đầu từ xảy (fixed head disk) Mô hình nói trên việc truy cập đĩa cứng đòi hỏi phải đáp ứng nhu cầu thiết yếu sau đây: nhu cầu thời gian truy cập trung bình ts là thời gian để đầu từ chuyển động tới đúng vòng xuyến (track) cần tìm; nhu cầu thời gian quay trễ tD là thời gian để đầu từ tìm thấy đúng sector cần tìm; và nhu cầu thời gian tT để vận chuyển liệu (data tranfer time) Việc làm trễ quá trình truy cập trên đĩa từ có nguyên nhân chủ yếu: (165) - Do chất lượng cấu khí đầu từ; - Do tốc độ quay đĩa từ và chiều dài (đường kính) khác track; - Do dung lượng mật độ thông tin trên track (thí dụ track cùng nạp dung lượng m Byte) Nếu gọi k là dung lượng liệu cần truy cập và giả sử thời gian quay trễ để tìn đúng sector ts nửa thời gian quay trọn vòng xuyến tR: TD= tR/2 (5.1) Khi đó thời gian truy cập tổng cộng T thiết lập biểu thức: T= tS + tR/2 + (k/m).tR (5.2) Từ biểu thức (5.2), ta nhận thấy T biến thiên tuyến tính theo k Khi đó tỷ phần vận chuyển liệu H xác định: H= k/tT (5.3) Với biểu thức (5.3), ta có nhận xét: H và tT là đại lượng phụ thuộc vào k; tuỳ theo cấu hình hệ thống mà tT và k có quan hệ nào đó; đó, H là hàm phi tuyến, nó không biến thiên tỷ lệ thuận với k Để giải vấn đề này hệ điều hành, đơn vị nhớ (có thể có độ lớn sector, block hay page) trợ giúp để chuyển dịch tới bước hoạt động nhân tử, mà điều đó yêu cầu tối ưu hoá khả sử dụng nhớ chính qua các bảng trang (xem mục 3.3.6) Đáng tiếc, độ lớn tệp tin trung bình nằm giá trị 1kByte Do đó việc sử dụng dung lượng nhớ bị giảm xuống cách mạnh mẽ, độ lớn trang thay đổi quá độ lớn 1kByte tệp tin; vì thế, người ta phải từ bỏ việc gia tăng tốc độ chuyển vận liệu qua việc gia tăng độ lớn trang Ngoài còn tồn vấn đề mữa mô hình đĩa từ, đó là: tất các track (vòng xuyến) đĩa từ có chiều dài khác Nếu bây giờ, mật độ từ tính và số Bit trên đơn vị mm2 bề mặt đĩa từ là khắp nơi, đó, track có số lượng Bit khác nhau: số Bit track có bán kính nhỏ thì ít số Bit track có bán kính lớn Nhưng vì thời gian quay vòng các track có bán kính khác là Cho nên, track, chúng ta có tỷ phần liệu khác (Bist/sec) Đối với nghành công nghệ thông tin, điều này mô thêm vấn đề: vì nhịp Bit track phần mềm kích tạo (driver) phải định nghĩa cách khác thường, lẽ, số lượng các đơn vị nhớ (sector) trên track là khác Đề phòng tránh các tiêu chí phần mềm và phần cứng, tất các track đĩa từ phân chia thành số lượng các sector Do đó, các track gần trung tâm quay có thể dược mô tả tới giứoi hạn dung lượng chúng Sự không đặn cách phân lớp này tồn dẫn đến lỗi Do đó các track cùng (gần tâm quay) thường ít sử dụng (thí dụ trên thực tế đĩa mềm sử dụng 80 track, đáng lẽ 82); thêm vào đó, đa số các track có bảo vệ biến động cao Tối ưu việc truy cập ổ đĩa cứng các Unix (166) Để tối ưu khả hệ thống tệp tin, người ta có thể thực việc sử dụng các biện pháp: mọt cấu định vị kết hợp, tất các đầu từ truy cập nhanh trên track hay trên các đơn vị nhỏ block các track trụ ảo (virtual cylinder), các đầu từ đồng thời trên cylinder này Ở hệ điều hành Unix, nhóm track (các vòng xuyến cùng bán kính) cylinder chứa đựng nút đặt biệt (của cây B) và quản lý đặt biệt Cho nên, nút số (new index node) và các block cấp phát tệp tin, đó, điều này xảy cách tự động trên nhóm cylinder Qua đó, việc đọc/viết các tệp tin tăng tốc nhanh, vì sau truy cập trên nuýt số (i-node), tất các tác vụ không cần dùng thời gian để định vị đầu từ đọc/viết Giao diện thiết bị (device interface): Khác với trước đây, cấu trúc máy tính định hướng bus hệ thống thì không có các kênh phần cứng đặc biệt và đó, không có các lênh dự kiến trước vi xử lý Đặc biệt, tất các thiết bị có thể làm đáp ứng cách hệ thống nhớ mộtđịa không gian nhớ chính (memory mapped I/O) Hình 5.7 trang 190 Ở máy tính, các khoảng nhớ bên (của ghi, đệm ) điều khiển thiết bị tạo lập để điều khiển thiết bị trên khoảng địa nhớ chính Sau đây, cái đó giới thiệu Thanh ghi điều khiển (control-register): Nội dung lưu trữ tệp tin (data-word) điều khiển đọc và thực nó phục vụ ghi trạng thái; Bit có ý nghĩa đặc biệt Thí dụ: Bit 4=1 kết thúc việc đọc; Bit 8=1 xuất lỗi đọc Thanh ghi lệnh (command-register): Ở loại ghi này, mã viết cho lệnh (đọc/viết; tạo dạng/định vị ), thì lệnh này cần thiết phải thực việc viết vào mã lệnh ghi này thông dịch là việc gọi thủ tục; đó, các thông số trên này bao gồm nội dung các ghi khác Thanh ghi địa (address-register): Thanh ghi địa chứa đựng địa trên thiết bị (bao hàm: device, track, trackgroup, ector, disk, read/write-head) và số dung lượng vận chuyển (Byte) Bộ đệm liệu (data-buffer): (167) Hầu hết các đệm xuất-nhập tách chia để cho đệm đọc và đệm khác viết Hệ thống ngắt (interupt-system): Sau thực lệnh, ngắt hệ thống có thể phát động ngắt khác Nếu thiết bị chiếm nhiều thông số, mà người ta có thể điều chỉnh chúng, đó, người ta dùng nhiều ghi, và đó xảy trường hợp nhiều không gian địa bị loại bỏ Ở các không gian địa nhỏ, thông thường có địa tồn tại, đó, người ta phải viết địa tới gói tin nhiệm vụ hay các gói tin liệu với kích cỡ đã khẳng định chính xác Một chế quan trọng việc trao đổi thông tin với thiết bị là việc di dịch toàn khối liệu đệm thiết bị điều khiển với nhớ chính Điều này thực cách phụ thuộc vào vi xử lý (với các cíp vĩ mạch chuyên dụng); đó, người ta gọi trường hợp này là truy cập trực tiếp (directmemory access: DMA) Các nhịp DMA tồn không hệ thống nhớ, đặc biệt còn tồn trên card điều khiển (Control-card) Vì vậy, chúng có thể làm việc cách độc lập với nhờ có các kênh DMA 5.2.2 Bộ nhớ đa ổ đĩa từ Một phương pháp mở rộng để nâng cao dung lượng đĩa từ là chỗ quản lý kết hợp nhiều đĩa từ dung lượng nhỏ thành ổ đĩa ảo có dung lượng lớn Thật vậy, đĩa từ, chúng ta có ổ đĩăcngs với dung lượng hạn hẹp, đó, nhiệm vụ chúng là biến ổ đĩa có dung lượng nhỏ này thành ổ đĩa có giá trị Một hệ thống để giải vấn đề này biểu thị là RAID (redundal array of inexpensive disk) Hệ thống này ưu chuộng cách tuyệt các ngân hàng liệu lớn và với nhiều mục đích khác Đối với hệ điều hành, biến thể phần cứng có ý nghĩa: Bộ kích tạo hệ điều hành cho chúng ta thấy, người ta có thể tạo nên ổ đĩa ảo động và đem lại dung lượng lớn Khi ố Đối với giao diện để dẫn tới các lớp cao hệ điều hành, thì việc thực tập hợp các đĩa từ là chẳng có vấn đề gì Một lợi hệ thống đa nhớ đĩa cứng có thể sử dụng mạnh mẽ hơn, hệ điều hành tồn nhiều tiến trình độc lập hay các tiến trình threads (xem chương 2) Sự độc lập chúng, và với cái đó, loại bỏ lẫn nhanh chóng phòng tránh, các liệu độc lập thu gom trên nhớ kết hợp Nếu bây chúng ta thay nhiều ổ đĩa cứng ổ đĩa với các đầu từ nối cứng (xem hình 5.6), đó, các liệu các tiến trình độc lập có thể đặt trên các nhớ đĩa từ độc lập, và vậy, việc truy cập liệu xảy nhanh đáng kể Ở hình 5.8, phân chia các liệu thì nhìn thấy trên hệ thống đa ổ đĩa từ Do đó, không gian tổng nhớ logic phân chia thành các khoảng; cách tương ứng, (168) các khoảng lớn ổ đĩa từ khác kích tạo coi là khoảng nhớ liên kết và lập thành khoảng nhớ thống cho nhóm tiến trình Bộ kích tạo hệ điều hành có nhiệm vụ: phải định việc phân bổ và kết hợp các liệu và phải thực việc tạo lập các đơn vị nhớ ảo trên các đơn vị nhớ logic các ổ đĩa từ khác Tổ chức ổ đĩa từ Windows NT: Ơ hệ điều hành Windows NT, tạo khuôn dạng lần đầu cho các khoảng nhớ logic, lựa chọn cho trước để tổ chức thành các dải băng Một lựa chọn tương tự hay khác là chỗ, phải liên kết nhiều đoạn có độ lớn các đĩa từ khác tới dung lượng ổ đĩa logic Không gian địa ổ đĩa ảo có thể phân bổ không đặn trên các đĩa từ khác hình 5.8 trang 192 Nếu chúng ta làm cho dải băng mỏng, thí dụ khoảng Byte hay tạo thành klock lớn hơn, đó, nhớ đệm liệu này phân chia thành khoảng có chiều dài Byte và cho nên các liệu đọc và viết nhanh trên ổ đĩa từ Một hệ thống có cấu hình truy cập nhanh không có tổn thất vừa nêu biểu thị là hệ thống RAID-0 Bên cạnh khả truy cập nhanh cao và dung lượng nhớ lớn, các hệ thống đa ổ đĩa từ còn có ưu điểm quan trọng là: với hệ thống này, người ta có thể loại bỏ các tổn hao đĩa từ Đối với kiểu sai số lỗi hay sai số tổn hao, người ta nhận thấy với các liệu ổ đĩa từ có (copy) chính xác trên đĩa từ ổ đĩa khác; còn đĩa từ khác thì tạo thành ảnh xạ các đĩa từ quan hệ với các liệu chúng Hình 5.9 sơ đồ cấu hình ảnh xạ đĩa từ Tuy nhiên, copy này phải luôn thường xuyên thực kích tạo có thể dịch vụ theo cấu hình vậy; quá trình viết lên đĩa Disk1, nó phải tác dụng copy trên đĩa Disk2; tức là, có cái gì đó đã tạo khả chịu tải hệ điều hành và phần cứng I/O Trong trường hợp hệ thống đa ổ đĩa từ có tổn thất thì cấu hình ảnh xạ ổ đĩa từ gọi là DAID-1 Nếu chúng ta thực ý tưởng ảnh xạ ổ đĩa từ ổ cấu hình dãi băng (stripes) hình 5.8, đó, chúng ta nhận hệ thống nhanh có tổn hao, gọi là RAID-0/1 Tóm lại, người ta phải tiến hành thực nghiệm để điều hoà tổn hao thời gian quá trình đọc ảnh xạ đĩa từ hình 5.9 trang 193 Bộ kích tạo sử dụng trạng thái tồn chốc lát các đĩa từ để nó có thể lựa chọn việc đọc đĩa từ, mà các đầu đọc các track mong muốn cạnh (169) đó; còn đầu từ có thể sẵn sàng định vị cho lần đọc hay có thể đọc/viết các cung đoạn khác chưa ảnh xạ Nhờ khéo trí này, người ta đã gia tăng cách đặc sắc nhu cầu không gian nhớ lớn hệ thống RAID-0/1 Thật vậy, Bit từ liệu viết lên đĩa tà; từ 32 Bit, người ta cần dùng tới 32 ổ đĩa từ Sau đó, từ dự kiến với ký hiệu chuyên dụng, thí dụ: phần bổ sung Bit; đó, hiệu suất cuối cùng từ liệu điều khiển phân bổ trên 38 ổ đĩa từ Điều đó không có ý nghĩa dòng liệu đồ sộ, mà còn tạo khả có độ chính xác kết cao Vì liên hiêpk Bit từ liệu 38 Bit là không thể có khả năng; cho nê, các đĩa từ có hư hỏng hay khiếm khuyết, người ta chốt lại mã hợp lý 32 Bit Sữa chữa lỗi nhờ hình thành tính chẵn lẻ: Ơ đây yêu cầu, chúng ta muốn lưu trữ n Bit cách độc lập với Cách tiến hành sau: Khi có thông tin điều khiển, chúng ta tạo lập Bit thứ n+1, Bit này có tính chẵn lẻ p Vì thế, người ta gọi p là hàm khác dấu (hàm XOR hay hàm logic cộng modul 2) hai biến số a và b Hàm này biểu diễn biểưthcs: p=a b (5.4) Theo đại số Boole, hàm này có bảng chân lý: a 0 1 b 1 p=a b 1 Đồng thời hàm XOR có các tính chất: a 0=a a a=0 (5.5) Từ bảng chân lý và các tính chất (5.5), ta suy ra: pb=abb=a0 Hay p b = a (5.6) Với biểu thức (5.6), bây ta hiểu rằng, tính chẵn lẻ p đã biêt, thì kết Bit a có thể cho qua, vì chúng ta có thể phục hồi a trực tiếp từ p và b Tất nhiên, điều đó dẫn tới, biến b tự tồn trở lại từ nhiều số hạng, chẳng hạn: b = b1 b2 bn (5.7) Từ biểu thức (5.7) này chúng ta có nhận xét: n biến nhị phân, mà từ đó chúng ta thiết lập tính chẵn lẻ hệ thống, thì ta thấy các biến với (170) trợ giúp tính chẵn lẻ các biến khai khẩn và phục hồi trở lại Nếu bây giờ, chúng ta bình luận biến nhị phân (chúng kết hợp với Byte) song song nhau, đó, điều dẫn đến Bit Byte này hay các Byte khác: Nếu chúng ta nạp Bit (hay vả dãy Bit) trên nhớ khác, đó, nhớ hư hỏng, chúng ta có thể phục hồi trực tiếp Bit lỗi từ n Bit chưa thay đổi Khi đó, chúng ta tạo nhiều Bit sữa chữa lỗi, đó, chúng ta khắc phục khiếm khuyết nhiều ổ đĩa từ Hệ thống sữa chữa lỗi RAID-2 giới thiệu hình 5.10 Các từ liệu (data Word) biểu thị thành các cột; cột lại chia các Bit O điều khiển, dòng Bit mội đĩa từ lại chia nhỏ thành Byte, vậy, các đĩa từ thương mại thông thường có thể trở thành các hệ thống nhớ hình 5.10 trang 194 Nếu chúng ta liên kết các Bit đã sữa chữa lỗi thành khoảng ngắn và nạp chúng vào đĩa từ, đó, chúng ta nhận hệ thống sữa chữa lỗi đĩa từ RAID-3 Vì đây, thông tin sai số lỗi đãi tà tất các block thì đựơc nạp trên ổ đĩa từ nhất, đó, đây có đĩa từ này không tính tới Bất chúng ta gộp các Bit liệu thành các khoảng riêng lẻ (thí dụ thành các block), và hệ thống RAID-0, chúng ta nạp khoảng này lên đĩa từ riêng biệt; đó, hệ thống sữa chữa lỗi này biểu thị là RAID-4 Sự định cho cái đó là chỗ, phải bảo đảm các thông tin sai số lỗi (fault information) thừơng xuyên đọc block nhớ trên ổ đĩa từ khác, và đó, phải phân bổ cách cân xứng sức chịu tải I/O hệ thống tất các đĩa từ Khi đó, người ta nhận hệ thống sữa lỗi RAID-5 Hình 5.11 sơ đồ hệ thống này hình 5.11 trang 195 Đối với kiến trúc hệ điều hành, nhiệm vụ chủ yếu là, phải vận chuyển toàn kể các diễn biến lỗi cách điều hoà vào các hệ thống RAID, và phải làm cho hệ điều hành độc lập với hệ thống nhớ Đối với hệ điều hành, hệ thống nhớ ảo và đơn giản là hệ thống an toàn và tiện lợi Hạn chế lỡi nhờ đĩa ánh xạ và hệ thống RAID Windows NT Ơ hệ điều hành Windows NT, việc quản lý tệp tin có sai số lỗi có kích tạo đặc biệt (special driver), gọi là kích tạo FtDisk Bộ này chuyển đỏi hai bộ: kích tạo hệ thống NT và kích tạo thiết bih; kích tạo FtDisk tạo máy ảo là lớp trung gian (middle class); máy ảo vừa tạo cần phải tự mình đón bắt tất ác lỗi xuất hiện, mà các lớp cao không thể nhìn thấy và chưa nhận biết Nếu bây có lỗi xuất (chẳng hạn bad sector), đó, các liệu block chứa đựng lỗi ổ đĩa ánh (171) xạ đọc hay phục vụ với trợ giúp thông tin sữa lỗi (dải chẵ lẻ) Sau đó, sector yêu cầu cho sector chứa đựng lỗi, gọi là ảnh xạ sector lỗi(bad sector mapping) và các liệu viết lên sector này Với cái đó, hệ thống lại tồn tượng dư thừa liệu Nếu không còn các sector trống (free space sectors) hay thiết bị không có sector ảnh xạ, đó, block (có các liệu phục hồi) đưa trở lại kích tạo hệ thống tệp tin Nếu việc tổ chức ổ đĩa sai số lỗi không tạo lập, đó, kích tạo FtDisk thông báo lỗi, chẳng hạn lỗi đọc/viết nhằm cho hệ thống tệp tin hay người sử dụng có phản ứng lại điều đó 5.2.3 Tạo các ổ đĩa RAM (RAM-Disk) Ở hệ điều hành, các tính chất đĩa cứng, có kích tạo có đầy đủ chức trách để tạo máy ảo Cho nên, người ta có thể sử dụng khoảng nhớ chính RAM là ổ đĩa ảo vị trí nhớ thực đĩa cứng, mà không cần lưu ý điều đó hệ điều hành Cách làm này gọi là phương pháp tạo ổ đĩa hay phương pháp tạo ổ đĩa RAM Tất nhiên, việc truy cập trên ổ đĩa RAM nhanh vì các tệp tin trên ổ đĩa này thì tkhông có thời gian trễ học đọc/viết Trước tắt máy tính, người ta cần phải làm sáng tỏ phần nhỏ nhớ chính là thiết bị nhớ đĩa cứng(?) Đó là vì: Các chiến lược hiệu nghiệm nhớ Cache và việc phân trang mà trước đây đã minh hoạ nhiều hình vẽ các khoảng tệp tin trên không gian địa ảo, đã làm giảm đáng kể thời gian truy cập và làm cho việc quản lý nhớ chính động Vì thế, câu trả lời cho câu hỏi trên phụ thuộc mạnh mẽ vào hệ thống sử dụng Việc tạo ổ đĩa RAM với mục đích: người ta phải làm việc với phần mềm cho trước xác định, thì phì mềm này tạo tệp tin trên ổ đĩa này, mà chúng sử dụng bình thường trên các ổ đĩa khác Một ví dụ điều đó là trình biên dịch (compiler): Nếu các tệp tin trung gian quá trình biên dịch nằm trên ổ đĩa RAM, đó, nâng cao cách đáng kể tốc độ biên dịch Một tình khác thuộc các hệ thống này, hệ điều hành không thể phù hợp các khoảng địa lớn, qua nhớ chính, thì nó phải có dung lượng m lớn giới hạn bắt buộc 640kByte, đó, người ta có thể sử dụng trình biên dịch qua ổ đĩa RAM Ở kích tạo ổ đĩa RAM, người ta có thể vượt qua rào cản nhờ thủ thuật định vị thích hợp 5.2.4 Các thiết bị nối tiếp Chúng ta nhớ lại chương 4, hầu hết các thiêt bị, liệu có thể truy cập cách hay tuỳ chọn; tới trên thiết bị (như bàn phím,máy (172) in ) thì điều đó không còn có thể bình thường Mối liên hệ các thiết bị nối tiếp biểu thị là phương pháp để các liệu phải và đưa chuyển nào(?): Đó là phương pháp vận chuyển ký tự mà không cần thông tin địa thiết bị Tất nhiên, phương pháp này xảy với tốc độ hạn chế (khoảng vài kByte/sec) Đó là các điều kiện biên kinh điển: thiết bị đầu cuối, máy in chạy chậm, tốc độ gỏ bàn phím Tuy nhiên, các quan hệ mối liên kết nối tiếp mang lại kết nhanh; các kiểu này không cần dịch vụ kích tạo; đây, các khối liệu chuyển vận nhờ việc truy cập trực tiếp nhớ Việc điều khiển mối liên hệ này thực với trơk giúp các kỷ thuật viên cách pha trộn hợp lý kích tạo các thiết bị định hưởng khối và định hướng ký tự Giao diện thiết bị: Giao diện để dẫn tới điều khiển các thiết bị nối tiếp (cũng giống các thiết bị tuỳ chọn) khoảng các địa nhớ chính sách thể thích hợp qua điểm sau đây: Thanh ghi điều khiển quan tâm tới các thông báo trạng thái, tốc độ vận chuyển (thí dụ 1200,2400,4800,9600 Baud= Bit/sec vận chuyển liệu và điều khiển) và phương pháp vận chuyển đồng hay không đồng Khi vận chuyển không đồng bộ, các liệu truyền đạt các khoảng cách khôngđều đặn; vận chuyển đồng bộ, tất các ký tự xảy khoảng thời gian cố định Một ghi nhập (dữ liệu) chứa đựng ký tự nhận đầu tiên, nó kích tạo đọc đó Ở ghi xuất (dữ liệu), ký tự gởi kích tạo viết; nó điều khiển trực tiếp gới Hệ thống ngắt thoát ngắt sau ký tự nhận hay gởi Ngoài ra, hầu hết các thiết bị nối tiếp làm việc có dòng điều khiển đặt trên ghi điều khiển Thông thường, việc điều khiển phần cứng thực qua các dây mảnh kim loại (chuẩn RS 232), đó, các ký tự (XON,XOFF ) gởi để điều khiển Nếu nhận, đệm nhận bị đe doạ đầy tràn, đó, nó gởi dòng ký tự XOFF, và tạo thời cho người gởi dừng lại việc gởi Nếy đêmh còn trống, thì người nhận gới dòng ký tự XON và báo cho người gởi tiếp tục gởi Tuy nhiên, chế này hoạt động, người nhận gởi tín hiệu kịp thời, đó, người gởi có đủ thời gian để tiếp nhận và thông dịch ký tự điều khiển, và chuyển vào kích tạo trước đệm bên bị tràn (173) 5.3 Mô hình hoá và việc thực thi kích tạo Một cách truyền thống, muốn viết kích tạo thiết bị đòi hỏi phải có hiểu biết cao người lập trình thiết bị và điều khiển các chi tiết đặc sắc sống lao động hệ điều hành Do đó, hầu hết các lỗi các hệ điều hành đúc kết lại thành các kích tạo mới; kích tạo này đã dàn xếp với các thiết bị ngoại vi hệ điều hành và có thể hạn chế các lỗi không tránh trạng thái nhân Để giải vấn đề này, điều quan trọng là các nhà sản xuất hệ điều hành đã đưa giao diện hiển thị rõ ràng kích tạo thiết bị Ngay sư tồn các kích tạo cao đã trợ giúp nhiều tạo lập các kích tạo khác Các kích tạo này làm thoả mãn tất các nhiêmh vụ quản lý các thiết bị độc lập (như dẫn các danh sách gói tin, quản lý đệm Cache ) Một lợ là: người ta treo kích tạo trực tiếp vào hệ điều hành, thì không cần phải gắn vào nhân hệ điều hành Vấn đề là đàm luận các lỗi Sau đây, chúng ta nói tới vài giao diện công tác cùng các chức chúng 5.3.1 Giao diện kích tạo Unix Một cách quen thuộc, các kích tạo Unix không thể chất tải thêm, mà chúng có thể chuyển đổi hay có thể kết nối với nhân cách tính Mỗi kích tạo thực thi dãy nhiều hay ít các thủ tục đã khẳng định; các thủ tục này liên kết thành bảng Vì các thủ tục này viết ngôn ngữ C, cho nên, các kích tạo tiến trình người sử dụng gọi các lệnh open(), close(), read(), và write() Với các thủ tục này, các việc điền vào để xác định cấu trúc người sử dụng (u.u_offset, u.u_count, u.u_error ) sử dụng chứng để thông báo lỗi trở lại Các thủ tục kích tạo thiết bị có dạng là XX, thí dụ: XX=mt cho thiết bị băng từ; XX=rk cho ổ đĩa cứng Sau đây giới thiệu vài thủ tục thông dụng: XX_init là thủ tục để thực thi kích tạo và thực thi thiết bị Điều đó thực khởi động hệ thống XX_read, XX write là thủ tục để đọc/viết trực tiếp các liệu (thí dụ các block nhớ) theo kiểu nguyên sơ (raw modus) XX_open, XX_close là các thủ tục, mà nó gọi cá hệ thống open() và close() Những thủ tục này dịch vụ chủ yếu để khởi động thiết bị sử dụng, và có ý nghĩa đặc biệt thiết bị Thí dụ, với thủ tục mt_close, băng từ tính (magnet band) bắt đầu quấn lại, với cái đó, người ta có thể lấy băng (174) XX_ioctl là gọi hệ thống, nó nhận các thông số, mà người ta đã đưa lại gọi hệ thống ioctl(), nó dùng để điều chỉnh thiết bị, điều chỉnh tốc độ vận chuyển và đìều chỉnh phương pháp thiết bị liên kết nối tiếp XX_strategy là thủ tục dùng để đọc/viết các block riêng lẻ (block device), và bên cạnh việc chuyển đổi số logic các block tới địa nhớ vật lý, nó còn quan tâm thêm chiến lược đọc/viết để cải thiện cú pháp (xem mục 5.4 dưới) Các thông tin ghi nhớ đầu các block nhớ Vì thủ tục strategy gọi cách không đồng từ điều khiển ngắt để chuyển bllock cho thiết bị, tất các thông báo lỗi chứa đựng đầu cấu trúc block, vì kích tạo có thể truy cập trên tiến trình người sử dụng để nhận thấy các tham số XX_intr là lập thức dịch vụ ngắt (interrup service routine) Ở Unix, nó thuộc kích tạo và viết ngôn ngữ C Lập thức này dùng để sẵn sàng cứu thoát các ghik đó nó gọi là các lập thức ngôn ngữ máy (assemblerroutine), dùng để vận chuyển liệu để thiết đặt chuyển đổi truy cập trực tiếp DMA với trợ giúp danh sách chuỗi các nhiệm vụ Ngoài ra, còn có các thủ tục khác, mà chúng thì phụ thuộc vào các ấn Unix và làm đầy các chức đặc biệt Tất các thue tục các kích tạo định nghĩa là địa cấu trúc ghi (với tệp tin conf.h) trên thiết bị và xếp thành bảng trung tâm (với tệp tin conf.c); bảng này có thể tạo chương trình config Mỗi thiết bị hay điều khiển thu xếp số rõ ràng, gọi là số thiết bị chuyên dụng (major device number) Nếu các thủ tục gọi,do đó, điều đó xảy trên các bảng trung tâm Mõi lần điền vào bảng thì bao gồm mộtcấu trúc ghi, mà đó, các địa các thủ tục kích tạo thiết bị dẫn tới Chỉ số lần điền vào thì kết nối với gọi hệ thống tới các kích tạo; chúng xếp thành giai đoạn: theo thiết bị hướng khối(block device switch:bdevsw) và theo thiết bị hướng ký tự (character device switch: cdevsw) Trích dẫn từ tệp tin conf.c hệ điều hành OS/2: struck bdevsw bdevsw[ ] = { { tmopen, tmclose, tmstrategy, tmdump, 0, B_TAPE }, { nodev, nodev, nodev, nodev, 0,B_TAPE }, {xyopen, nulldev, xystrategy, xydump, xysize, 0} }; struct cdevsw cdevsw[ ] = { {cnopen, cnclose, cnread, cnwrite, cnioctl, nullev, cnselect, 0, 0, 0, }, { nodev, nodev, nodev, nodev, /*0*/ /*1*/ /*2*/ /*0*/ /*1*/ (175) nodev, nodev, nodev, 0, swcinfo, 0, }, { syopen, nulldev, suread, sywrite, syioctl, nulldev, syselect, 0, 0, 0, }, }; /*2*/ Ở đây, các thiết bị hướng block có các gọi hệ thống đồng bộ: open, close, strategy, dump, psize, và flage; các thiết bị hướng ký tự có các gọi hệ thống: open, close, read, write, ioctl, reset, select, mmap, stream, segmap Các lập thức dịch vụ ngắt không đồng thì không điền vào đây, mà điền vào đơn thể assembler bị tách biệt Mỗi thiết bị logic không có thực thi các thủ tục kích tạo: Nếu không tồn việc thực thi, đó, điều này dẫn với gọi hệ thống nodev và nó dẫn tới thông báo lỗi gọi hệ thống; đơn giản điều đó không xảy ra, đó, nó bắt đầu với gọi với gọi hệ thống nulldev Nếu thiết bị thích hợp hướng ký tự hướng block, đó, các thủ tục các kích tạo thich hợp thiết bị nhận biết hai bảng Khi xuất các lỗi (máy không mở, track bị hỏng, có các lỗi đọc ) thì số lỗi thích hợp viết vào cấu trúc người sử dụng tiến trình người sử dụng Nếu kích tạo nhận biết trạng thái, mà kích tạo không còn thống trị trạng thái này nữa(địa đệm lỗi) và vì trạng thái này không thể đếm xỉa tới, đó, còn lại khả cuối cùng để gọi thủ tục panic; thủ tục này in text lỗi và dừng toàn hệ điều hành 5.3.2 Giao diện kích tạo Windows NT Các kích tạo Windows NT phải chứa đựng công dụng xác định Theo R.Nigar (1997), thuộc điều đó có thủ tục sau đây: Thủ tục khởi động (load driver) Thủ tục này thực nhờ điềuhành I/O, kích tạo hệ thống nạp, đó nó tạo lập đối tượng, mà với đối tượng này, trình điều hành I/O nhận biết thiết bị và trên thiết bị này, thủ tục nó đây tham chiếu Thủ tục để khởi động vận chuyển liệu(start I/O) Như vậy, phải có tối thiểu thủ tục để thoát vận chuyển liệu (cancel I/O) Việc thực và việc lựa chọn thủ tục này thì phụ thuộc chắn vào kích cỡ dịch vụ vận chuyển liệu Lập thức dịch vụ ngắt (interrupt service rountine: ISR): Hệ thống ngắt Windows NT giúp việc điều khiển hệ thống có ngắt thiết bị yêu cầu tới thủ tục này Vì ngắt này xảy với ưu tiên cao, nó lập thức ISR chờ đợi, đó, có gọi ISR xuất hiện, lập thức này biến đổi thành gọi thủ tục DPC (deferred procedure call: DPC), và gọi này giống là gói tin công tác (job package) treo vào hàng đợi các DPC Nếu các DPC tiến hành với ưu tiên thấp thì ngắt khác bẻ gãy chúng (176) Thủ tục DPC bao gồm lập thức ISR: Các thủ tục DPC gọi, ưu tiên các tiến trình diễn rơi vào ưu tiên định nghĩa DPC Thủ tục DPC hoàn thiện công việc chính lập thức ISR, đặc biệt làm hoàn thiện chuyển vận liệu và phân bổ nhiệm vụ từ hàng đợi Thủ tục để thoát vận chuyển liệu (completion rountine) Thủ tục này có thể dẫn tới nhờ kích tạo các gói yêu cầu I/O, đó, nó gọi sau kích tạo sâu kết thúc hoạt động nó Thủ tục này tiếp tục dẫn tới thông tin kết quả, các lỗi xuất hay bẻ gãy các kích tạo cao (thí dụ kích tạo hệ thống tệp tin); đồng thời, nó tạo khả cho kích tạo này kết thúc nhiệm vụ cách thích ứng Thủ tục ghi chép lỗi (error logging): Thủ tục này dẫn tiếp các thông tin điều hành I/O, mà nó đã viết các lỗi này thành tệp tin các lỗi Khi tải kích tạo thì không tạo đối tượng kích tạo (driver object) cho việc truy cập trình điều hành I/O, mà nó tạo đối tượng thiết bị (device object) cho thiết bị cho chức thiết bị Các đối tượn thiết bị cho thấy điểm quan hệ để sử dụng kích tạo Thí dụ mở tệp tin \Device\Floppy0\Text\bs_file.doc (xem hình 4.7), tên đường dẫn \Device\Floppy0\ bị tách chia: tên này chính là tên đối tượng thiết bị mà nó có quan hệ với trình điều hành I/O Trình điều hành I/O hệ thống tệp tin trao nhiệm vụ nhằm đạt các gói tin yêu cầu I/O qua đối tượng thiết bị kích tạo có thẩm quyền cái đó Cho nên, tất các đối tượng thiêts bị thiết bị vật lý, thiết bị logic, và thiết bị ảo kết nối với kích tạo thiết bị nhờ thị trên đối tượng kích tạo thiết bị chúng; ngược lại, chúng là thành phần danh sách đối tượng kúch tạo, mà với vái đó, trình điều hành I/O có thể kiểm tra lại thoát khỏi kích tạo (unload driver), mà các đối tượng thiết bị nào đó gặp lại Hình 5.12 minh hoạ kiểu kết nối đó hình 5.12 trang 202 Ngoài các chức kích tạo thiết bị, người ta còn lưu ý tới điều kiện phụ khác chúng Một các nhân tố quan trọng là việc mà hệ thống có thể thực nào trên các vi xử lý khác hệ thống đa vi xử lý Khi truy cập trên các liệu, điều này cưỡng xếp để có thể sử dụng các liệu toàn cục hay các liệu chia sẻ khác Điều đó có ý nghĩa kích tạo mã nó làm việc đồng thời trên nhiều vi xử lý, cho nên phải lưu ý việc truy cập nó trên các ghi thiết bị tất nhiên, việc truy cập trên cấu trúc liệu kích tạo (với danh sách các nhiệm vụ) phải chú ý trước Khác với các hệ thống điưn vi xử lý, hệ thống ngắt, cần phải tôn trọng viẹc truy cập trên cấu trúc dự liệu kích tạo Lập thức dịch vụ ngát làm việc (177) có ưutiên cao nhất, nó có thể không xuất phát từ đó để có vài lối dẫn vào ghi thiết bị, danh sách nhiệm vụ Một coppy kích tạo trên vi xử lý khác có ưu tiên thấp có thể đồng thời truy cập trên các liệu/ cho nên, nhân hệ điều hành có các thủ tục đồng nhân đặc biệt để dẫn tới các thủ tục như: các thủ tục bận chờ (busy wait), thủ tục khoá vòng (spin lock) Một nhiệm vụ kích tạo là việc phản ứng lại sụt áp nguồn điện (power failure) Ở đây, nó lưới điện dự kiến, nó có thể nhận cung cấp sai tín hiệu nguồn điện khoảng vài mili giây Khi đó, các liệu quan trọng bảo vệ Một kích tạo để phân biệt các phần nhân tử hoạt động nó; các phần này khôngđược phép phá hỏng liệu để nhằm đảm bảo việc tích hợp các liệu Ngoài ra, giai đoạn này phải đảm bảo không để xảy tình trạng nguồn điện lâu hơn; sau ngăn cản việc ngắt nguồn điện, các liệu riêng lẻ chép lại và tiếp đến ngắt trả tự Ngược lại, nguồn điện, thiết bị phải đặt vào trnạg thái điều khiển quen thuộc trước nguồn điện đựơc đóng lại Nếu hệ thống cung cấp khoảng RAM có nuôi pin, thì đó, có thể tất các liệu tiến trình quan trọng (ngữ cảnh tiến trình) cứu, đó, nó có thể phải tiếp tục thực chương trình sau tái phục hồi điện áp nguồn 5.4 Các chiến lước tối ưu các thiết bị nhờ kích tạo Nếu chúng ta viết kích tạo cho thiết bị, thì đó, chúng ta phải làm thoả mãn các Bit điều khiển thiết bị Với các tài liệu ít ỏi nhà sản xuất, các kích tạo này phải đựoc thông dịch cách sáng tạo.bằng các chiến lược nghiên cứu dưỡi đây, chúng ta có điều kiện để thực thi các kích tạo và để tối ưu việc truy cập thiết bị Cụ thể, khả chúng ta, đó là việc thiết kế chiến lược định thời cho việc truy cập ổ đĩa 5.4.1 Các chiến lược định thời cho truy cập ổ đĩa Bộ kích tạo thiết bị có địa xác định thì nó gần thực liên tục dãy các nhiệm vụ Đối với thiết bị, chẳng hạn ổ đĩa từ tính, có thơhì gian trễ học, đó, nhiệm vụ đựơc kết nối theo thời gian chờ Thời gian chờ này thì phụ thuộc vào trạng thái thiết bị phân bổ nhiệm vụ Khi truy cập ổ đĩa thì đó là trạng thái đọc/viết đầu từ, tức là đó track (có số nào đó) mà trên đó chứa đựng các block (gồm nhiều sector) tồn kế cạnh cần đọc và viết Nếu kích tạo thiết bị có mặt các hàng chờ đợi nhiệm vụ, dó đó, nó có thể thử tìm kiếm để tăng tốc độ công việc nhờ xếp theo lớp các nhiệm vụ danh sách Điều này thì thích hợp với chiến lựơc định thời giiống chiến lược phân bổ các tiến trình vi xử lý đã nghiên cứu chương (178) Đối với chiến lược định thời, đến có nhiều phương pháp khác Hình 5.13 giới thiệu phương pháp tiếng thịnh hành trên giới Phương pháp này quy tụ các chiến lược sau: hình 5.13 trang 204 Chiến lược đến trước dịch vụ trước (first come first serve: FCFS): Chiến lược này là đơn giản mỹ mãn nhất; vì nó thực theo nguyên tắc công xã hội: tất nhiệm vụ thực theo dãy mà đó chúng xuất Thí dụ: Giả sử đĩa cứng có 20 track và chứa đựng danh sách các nhiêmh vụ Đầu từ vị trí track số 6, dãy nhiệm vụ nó xác định: nó phải chuyển vị đến làm việc các track theo thứ tự 8, 19, 3, 14, 2, 15, Nếu lấu bề rộng track làm đơn vị tình thì đoạn đường mà đầu từ phải dịch chuyển học là: 2+11+16+11+12+13+8 = 73 track Chiến lược thời gian tìm kiếm ngắn trước (shortest seek time first:SSTF): Nội dung chiến lược này là, đầu từ có thể chuyển đổi từ track này tới track mà không cần phải lưu ý khoảng cách chúng Điều đó có ý nghĩa, đầu tiên, người ta có thể hoàn thành các nhiệm vụ có phạm vi gần nhằm tránh đầu từ phải di chuyển nhiều Để lựa chọn nhiệm vụ kế cạnh, mà địa track nó khoảng cách nhỏ tới trạng thái địa hành, thì chiến lược này thích hợp với trường hợp chuyển động tìm kiếm track đầu từ là ngắn Thí dụ: Danh sách nhiệm vụ đầu từ có dãy với các số track: 7, 8, 3, 2, 14, 15, 19 Theo chiến lược này, quỹ đạo đầu từ hình 5.13 và đoạn đường nó xác định: 1+1+5+12+1+14 = 25 track Người ta có thể so sánh chiến lược này với chiến lược Job ngắn trước phương pháp định thời đã nói mục 2.2 trước Còn vấn đề cần nói: Khi dãy các nhiệm vụ không thuận tiện, tức là nhiệm vụ nằm cuối đĩa từ (hay cuối khoảng đĩa chỉ) có thể bị thiêtj thòi và dẫn đến trạng thái chết đói (hurry-status) Chiến lược quét ổ đĩa (Scan, C-Scan) Ý tưởng có chiến lược này là chỗ, các track rà (SCAN) cách hệ thống và trên đường này tất các nhiệm vụ thực Thí dụ: Việc xử lý công việc SCAN có danh sách các nhiệm vụ thiết lập; chẳng hạn đầu từ vị trí track số 6, khởi hành theo hướng các track có số lớn dần, với dãy tuần tự:7, 8, 14, 15, 19, 3, Do vậy, tổng quảng đường mà đầu từ phải qua là; 1+1+6+1+4+16+1 = 30 track (179) Thông thường kết thúc chu trình làm việc, đầu từ vị trí có địa track thấp hay cao nhất; đó, hướng tìm kiếm và hướng làm việc ít bị thay đổi, làm giảm thiếu đáng kể thời gian học Chúng ta nhận thấy rằng, xác suất nhiệm vụ qua các track là nhau; đó, thay đổi hướng chuyển động đầu từ cuối hành trình (thí dụ track có số lớn nhất), thì độ tập trung cao các nhiệm vụ là đầu hành trình (tại các track có số nhỏ nhất) Điều đó thì giống trường hợp quét lá đa đình làng: Khi người ta vừa quét xong đường chổi cuối cùng cuối sân đình, thì phí đầu sânn đình là đa đã rụng đầy(!) Cho nên điều có lợi là: dãy công việc điểm dừng dãy công việc lần trước, không cần phải quay lại hướng làm việc lúc đầu Trong hệ điều hành, trạng thái này quen thuộc và nó gọi là quét tuần hoàn (cirular scan: C-SCAN) Lấy ví dụ cho trường hợp với dãy các nhiệm vụ: 7, 8, 14, 15, 19, 2, Hành trình làm việc đầu từ xuất từ track số và trên hình 5.13 trên Bây giờ, chúng ta không theo đường vừa nêu nữa, mà chuyển hướng làm việc tới nhiệm vụ cuối cùng Phương pháp này gọi là giải thuật nhìn theo(look algorithmus: LOOK) hay còn gọi giải thuật nhìn quay vòng (circular look algorithmus:C-LOOK) Các chiến lược này đã trình bày thích hợp, vì thời gian chuyển động đầu từ (seek time) để tìm kiếm track thì rõ ràng lớn thời gian trễ trên track tièm kiếm sector Nếu điều đó xảy ra, tức là đĩa cứng trên track có đầu từ lắp cứng (fix head disk); đó, danh sách các nhiệm vụ xếp theo các tiêu chuẩn khác Khi đó các chiến lược định thời phải nhận thức sau: - Chiến lược FCFS dùng các công việc đơn giản theo danh sách dãy các nhiệm vụ xuất - Chiến lược xếp hàng các sector: Các nhiệm vụ xếp theo số sector tăng dần, để nhằm đạt mộtquá trình xử lý liên tục Vì điều này xảy đồng thời với tất các track, đó, số sector phải có hàng đợi xác định Điều chúng ta cần đặt câu hỏi là: Các chiến lược dẫn đánh giá nào? Cụ thể là: các chiến lược SSTF và SCAN làm cho các tiến trình đọc/viết các block riêng lẻ có thể bị chết đói cách lý thuyết Tuy nhiên, phân bổ nhiệm vụ thì điều đó không phải ngẫu nhiên, mà nó có thể tránh nhờ số thay đổi nhỏ các giải thuật thiết Nhưng còn câu hỏi khác: Việc sử dụng các giải thuật định thời phức tạp hoá dẫn tới ích lợi gì? Việc mô hình hoá đã rằng: tất các nhiệm vụnặng nề đồi với các giải thuật SCAN và C-SCAN, thì kết cho thấy tốt Tuy nhiên, điều đó đòi hỏi công việc quản lý bổ sung, mà nó có lợi tải các nhiệm vụ nặng nề Bấy giờ, nhiều công trình nghiên cứu rằng, (180) công việc diễn biến bình thường danh sách chứa đựng nhiệm vụ Trong trường hợp này, tất các chiến lược tốt, là chiến lược FCFS vừa đơn giản vừa tốt Các chiến lược để xử lý danh sách nhiệm vụ block thì không phải là khả để tối ưu thời gian truy cập Điều định để có thể thực việc truy cập nhanh là: Nếu chúng ta mô block logic với số trung tâm (central index) không phải trên sector hay track cuối đĩa từ; đó, hành trình trung bình đầu từ truy cập tới tất các track thì nhỏ cuối và việc truy cập rõ ràng nhanh Ngược lại, số trung tâm giữ lại photocopy nhở chính, đó, có dãy các lệnh định vị trí là định không phải vị trí số trung tâm 5.4.2 Kểu bố trí đĩa từ xen kẽ (interleaving) Một khả tối ưu dẫn cho trường hợp: Khi các blocks ổ đĩa chuyển cho điều khiển nhanh chúng có thể chuyển vận nhờ đầu từ Trong trường hợp này, block số không đọc sau block số 3; vì đĩa từ đã quay tiếp vận chuyển block số3; và nó đọc block số chưa không đọc block số đó, điều khiển chờ đợi vòng quay đĩa từ để cuối cùng có thể đọc block số Bây giờ, chúng ta đổi việc đánh số các block, chẳng hạn block số nhận số 4, nhờ vậy, chúng ta có thể tiếp tục đọc mà không cần thời gian chờ đợi Trong trường họp này, block vật lý thứ chọn để đánh số logic, đó, cần dành nhiều thời gian cho việc xác định các block và gia tăng lưu lượng liệu Hình 5.14 (a) cho thấy việc đánh số vật lý ghi chép ngời ổ đĩa Trên các cung đĩa từ (semgent) phần bên trong, việc đánh số logic thích hợp ghi nhận Kiểu dông nghệ này gọi là phép bố trí xen kẻ (interleaving) đĩa từ; số lượng các block (bị bỏ sót lần đầu đánh số) là yếu tố xen kẽ Hình 5.14 (b) là cách đánh số yếu tố xen kẻ và đặt đối diện Yếu tố này phải phận kích tạo thông báo việc tạo kiểu dáng cho điều khiển và nó phụ thuộc vào tốc độ vận chuyển hệ thông I/O hệ điều hành hình 5.14 trang 207 Những chế đàm luận để gia tăng hiệu suất kích tạo cần phải xem xét cách toàn diện ngữ cảnh điều khiển Một cách nguyên tắc, trường hợp có thể xuất cách dễ dàng: tất các biện pháp tối ưu các kích tạo trang bị với vi xử lý độc đáo Thí dụ, các điều khiển có khả thay các block bị hư hỏng đĩa từ nhờ các block dự trữ trên các track (chuyên dụng bình thường không dễ xen vào) Hình thái đặc biệt luôn luôn có hiệu lực, có block hư hỏng nhận biết và thuyên chuyển đo khỏi, có thể không kích tạo nhận thấy Với cái đó, tất nổ lực kích tạo cho thấy, cần phải hạn chế (181) chuyển động đầu từ; cụ thể là: các chuyển động trung gian tới các track thay cho phép không cần tối ưu từ bên ngoài Do đó, mục đích chúng ta là: Giao diện kích tạo và điều khiển phải nhà sản xuất hệ thống lo toan và có kế hoạch trước Thí dụ, người ta có thể dẫn tới tối ưu các phụ thuộc thiết bị chuyển động đầu từ và tìm kiếm sector cho điều khiển Như vậy, với việc lưu trữ các block các địa logic đã làm cho hiệu suất nói chung gia tăng rõ ràng 5.4.3 Kiểu đệm thêm (bufferring) Người ta có thể đạt tối ưu hiệu suất quan trọng cho các nhớ đĩa từ nhờ đệm, còn gọi là đệm liệu (data-cache), nó tạo nên trên bình diện khác Trên bình diện kích tạo hệ thống tệp tin, điều tiện lợi là: nó dùng để đệm thêm hầu hết các block sử dụng cho tệp tin; đó, người ta có thể phân nó thành hai loại khác nhau, đó là buffer đọc và buffer viết với quản lý chặt chẽ Trên bình diện kích tạo thấp nhất, người ta có thể đệm thêm đơn vị đọc/viết, thí dụ đệm thêm toàn track Hầu hết các tác vụ đọc/viết theo có quan hệ với trên các số sector tương ứng và có thể thực track đệm thêm cách nhanh thực thụ Tuy nhiên, đây, việc đệm thêm có vấn đề tương tự đã mô tả mục 3.5 chương trước Khib quản lý, cần phải đảm bảo: block và sector mô tả áp dụng cho việc thăm dò các tiến trình khác để đảm bảo độ bền vững liệu Điều quan trọng là việc làm đồng nội dung buffer với nhớ đĩa từ trước hệ thống máy tính ngắt khỏi nguồn điện lưới Khi nguồn điện lưới cung cấp Điều đó dẫn vào nhờ các kích tạo đệm thêm Ơ đây, người ta phait lưu ý cách trù tính giao diện với điều khiển Những điều khiển thường tích hợp bên Cache; đây, chẳng có mục đích gì ngoài việc thiết đặt Cache trên bình dìnn kích tạo Thí dụ kiểu đệm thêm Unix: Việc đệm thêm dược thực cho các tập tin đặc trưng nối tiếp Từ lý này, dãy ký tự RETURN sử dụng để đọc vào bài text từ bàn phím Đặc biệt, các Bit trạng thái tệp tin đặc biệt này cho phép đọc ký tự lần nhập ký tự khiết mà không cần đệm hay để nén lại âm hưởng cục ký tự trên màn hình Hệ thống đệm các thiết bị block sử dụng các block đơn vị nhớ Đối với kích tạo có danh sách các nhiệm vụ cho các block, (182) mà các block này cần đọc/viết Danh sách các block trống bị làm trễ gấp đôi và liên kết lại thành vùng nhớ tập trung Ngoài ra, có đường dẫn tới các thiết bị block: đường thứ qua tên tệp tin và đó, qua hệ thống tệp tin nguyên sơ, tức là qua thủ tục XX_stragety và đường thư qua tệp tin đặc biệt là thiết bị nguyên sơ, tức là qua thủ tục XX_read/XX_write Vì nhờ việc đệm thêm nút số (index node), mà có tổn thất mạng, hệ thống tệp tin hay bị làm tổn hại; đó, nhịp độ đặn (khoảng 30 giây) thủ tục sync(), tất các đệm viết lên đĩa từ và qua đó, chúng định dạng các liệu Điều đó thực thoát khỏi hệ thống (shut down) Thí dụ đệm thêm windows NT: Để quản lý đệm Cache cho việc xuất-nhập có trình điều hành Cache đặc biệt Trình điều hành này cấp phát các trang cách động nhớ chính và tạo ảnh xạ nhớ các trang nhớ chính và tệp tin Số lượng các đối tượng đoạn (section object) là động: nó phụ thuộc vào nhớ chính đựơc sử dụng phụ thuộc vào thường xuyên truy cập trên các phần tệp tin Điều đó xảy ra: các trang trình điều hành đệm Cache giống các trang tiến trình xẽ trình điều hành nhớ ảo quản lý Số lượng các trang tồn nhớ chính điều chỉnh qua chế tập công tác (working set) hay chế ảnh xạ (mapping mechanismus), xem mục 3.3 trên Đối với việc đệm thêm xuất-nhập nối tiếp, các chế đặc biệt phải phát triển để nhằm nhận đựơc các kết các chương trình từ đa tác vụ không có chặn trước Windows 3.1 (16 Bit) đến đa tác vụ có chặn trước Windows NT Đối với thiết bị, Windows 3.1, có hàng đợi I/O và các thiết bị nối tiếp Nếu cửa sổ khác nhau, các việc nhập cào (nhập ký tự, kích chuột ) dẫn ra, đó, chúng đặt đơn vị nhập vào đệm nhập Một cách tiện lợi, tiến trình đọc/viết đưới Windows 3.1 kép dài (không có chặn trước), nó hoàn thành công việc nhập vào và bị hãm lại đọc trên đệm nhập, công việc không còn chúng Tiến trình thuộc cửa sổ này hoạt động điều hành cửa sổ và đọc vào phần đệm nó Bây giờ, chúng ta qua giứoi hạn chặn trước, đó, tiến trình có thể cùng hoạt động ngay, khoảng thời gian (time slice) nó đã trôi qua, đó, điều đó dẫn tới vấn đề nhớ đệm nhập: tiến trình (mới tăng cường) này đọc các liệu đã xác định Đó là trường hợp, tiến trình dựng lại và kết nối đầu cuối mà trước đó còn chứa đựng lỗi Từ lý này, Windows NT, tiến trình thread có hàng đợi nhập riêng lẻ; việc nhập vào chưa đọc này tiến trình thread giữ lại tiến trình này và không đọc thực thụ bới tiến trình thread kế cạnh; đó là hệ thống mạnh mẽ đối diện với các tiến trình chứa đựng lỗi Chúng ta có thể tích hợp hệ thống khác Windows 3.1 và Windows NT nào? Tính logic các tiến trình không chặn trước Windows 3.1 (183) dự đoán tính logic tiến trình trọng lượng nhẹ (thread), Bây giừo, ý tưởng này ra, cần phải sử dụng chế tiến trình thread Windows NT Do đó, nhà thiết kế hệ điều hành Windớ NT đã lý giải Windows 3.1 hệ thống 16 Bit Hệ thống này đã cho xuất phát các tác vụ 16 Bit các tiến trình threads riêng lẻ Tuy nhiên, cách đúng mức, vi xử lý đã cứu thoát tiến trình này (cùng tiến trình NT khác); trả lại vi xử lý, tiến trình thread (xuất sau cùng) nhận lại việc điều khiển cách tự động; đó, coi không xảy việc thay đổi tiến trình Do đó, hệ thống Windows/DOS cũ, số đặc điểm đạt cách tiện dụng Tuy nhiên, nó còn có thể thế: không gian địa bị tách chía, các ứng dụng 16 Bit diễn biến tiến trình độc đáo Trong trường hợp này chúng tỏ không còn ép buộc trước đây Windows 3.1; cho nên, điều này không còn có ý nghĩa tất các áp dụng cũ 5.4.4 Đồng và không đồng việc vào-ra Việc vào-ra chương trình thì cần thiết phải chờ đợi gọi hệ thống kết thúc cách mỹ mãn Khi đó, người ta gọii quá trình này là làm đồng việc vào-ra (I/O synchrone) Bấy giườ, nó cần khoảng thời gian cố định nào đó, việc vao-ra thực thời gian này có thể chương trình sử dụng cách tốt cho các công việc khác Ngay các chương trình tồn tiến trình thread, thì không thể nhận ra: tất các tiến trình thread chờ đợi việc vào-ra(!) Một khả để loại bỏ việc hãm chặn vừa nói là việc thừa nhận các tiến trình threads là tiến trình trọng lượng nhẹ nhờ hệ điều hành Windows NT Khi đó, cách phổ biến, có thread bị hãm, còn các threads khác tiến trình thì không Tuy nhiên, điều này không phải xảy hệ điều hành Một khả khác cho vấn đề này là vấn đề không đồng tiến trình vào-ra (I/O asynchrone) Khi đó, gọi hệ thống dẫn tới tác vụ xuất-nhập; kết tiến trình thread đón nhận cách muộn nhờ lệnh đặc biệt Kiểu gọi hệ thống này đặt cho hệ điều hành yêu cầu đặc biệt; vì đây, nhiệm vụ kết phải quản lý và phải lưu trữ trung gian thì phụ thuộc vào tiến trình uỷ nhiệm Không đồng I/O Unix: Ở các ấn thông thường Unix, các gọi hệ thống cho phép chuyển đổi đọc/viết không bị ngăn hãm Khi nhảy lui khỏi các thủ tục đọc/viết, số lượng các Bytes đọc/viết hoàn trở lại Nếu nó thì quá trình đọc/viết không xảy Việc dẫn tới quá trình không đồng I/O tiến trình thì bình thường là không thể Tuy nhiên với khéo léo, chúng ta có thể đạt (184) điều này Cho cái đó, chúng ta sử dụng chế fork() theo mục 2.1.1 (với hình minh hoạ 2.4) để nhận copy tiến trình Tại quá trình I/O, copy bị hãm lại cách đại diện Sau đó, copy chúng ta dự định chế exit(), đó tiến trình chính có thể tiếp tục làm việc, khi, với chế wait(), nó có thể đón nhận kết tác vụ I/O Tuy nhiên, khả này là không thể thực tiến: để tạo lập tiến trình vậy, phải tốn quá nhiều thời gian; vì rằng, kiểu vào-ra không đồng này thì không mang lại lợi nào Một định cho cái đó là kết nối nhanh chóng việc trao đổi thông tin với tiến trình (thí dụ qua nhớ chia sẽ) Tiến trình tạo lần và sử dụng móc nối I/O và đới với tiến trình này tạo lần và sử dụng móc nối I/O và tiến trình chính, nó chờ đợi cách đại diện Cả hai chế vừa nêu là phận thay không thể thiếu với các khả không đồng I/O Unix Không đồng I/O Windows NT: Trong hệ điều hành Windows NT, việc vao-ra thực thì nó phụ thuộc vào tham số, mà tham số này dẫn bới các chế WriteFile(), ReadFile(), CreateFile() Trong trường hợp bình thường, gọi hệ thống dẫn qua tất các lớp (dịch vụ hệ thống, trình điều hành I/O, kích tạo thiết bị, ngắt chuyển đổi, nhảy lui) và dừng tiến trình gọi hệ thống ReadFile(), các liệu mong muốn trải Ngược lại, thông số overlapped (bị chồng lên nhau), đó, dòng điều khiển tới việc hoãn lại và dẫn chuyển đổi liệu trở lại gọi hệ thống Tiến trình có thể tiếp tục làm việc, làm công việc khác Để nhận các số liệu mong muốn, gọi hệ thống Wait (fileHandle) thay thế, nó hãm chặn tiến trình thread, số liệu mong muốn đưa Đối tượng fileHandle thuyên chuyển thành trạng thái báo trước và đó, tiến trình đánh thức Bây giờ, nó có thể thực gọi hệ thống ReadFile() và cuối cùng nó đọc các liệu Tuy nhiên, người ta phải lưu ý, không sử dụng tiến trình thread thứ hai (chẳng hạn fileHandle) để dẫn tới hay chờ đợi mộttiến trình I/O không đồng bộ; tức là, với đối tượng fileHandle, tín hiệu đánh thức hai tiến trình threads, mà hai nó đón nhận sai, đó, xuất nhập các liệu đã cho thấy tiến trình đã chuyển đổi Một lối thoát khỏi tình trạng này là sử dụng các đối tượng biến cố riêng lẻ hay sử dụng các gọi thủ tục không đồng (asynchronous procedủe calls:APCs) cho tiến trình thread Một cách độc lấp với cái đó, tiến trình thread (vừa gọi) nhận điều khiển trở lại và có thể tiếp tục làm việc Sau đó, tiến trình thread này phải tự dẫn vào trạng thái chờ đợi, thí dụ nhờ các gọi hệ thống SleepEx(), WaitForSingleObjectEx() hay WaitForMultipleObjectEx() Nếu việc đọc/viết kết thúc cách không đồng bộ, đó, tiến trình thread lại đánh thức (185) và đó, thủ tục kết thúc gọi, thủ tục này có thể tạo thời có cho bước 5.5 Các bài tập chương Bài tập 5.1 Về định thời truy cập ổ đĩa Trong chương này, bạn đã nghiên cứu các chiến lược định thời việc truy cập ổ đĩa FCFS, SSTF, LOOK, và SCAN a) Việc dò tìm truy cập ổ đĩa có thể bị làm đói nào? b) Các chiến lựơc riêng lẻ biến hoá nào, mà với điều này, khả làm đói không còn nữa? Bài tập 5.2 Về phân bố đan chen trên ổ đĩa từ a) Sự phân bố đan chen trên ổ đĩa từ dùng để làm gì? b) Một ổ đĩa từ có hệ số đan chen Ổ đĩa chứa trên vòng xuyến khoảng 80 sector, sector có 256 Byte và quay với tốc độ 3600 vòng/phút Để đọc thông tin trên tất các sector vòng xuyến cách thì cần bao nhiêu thời gian? Giả thiết rằng, đầu từ đọc/viết luôn luôn định vị đúng và vòng quay sử dụng kho sectors số nằm đầu từ c) bạn hãy nhắc lại vấn đề ổ đĩa tương tự, không có hệ số đan chen, và ổ đĩa với hệ số đanchen Hỏi tỷ phần liệu tăng gat giảm nào Bài tập 5.3 Lưu trữ trên nhớ đệm Bạn hãy quan sát mô hình các lớp sau đây: Hệ thống tệp tin Bộ kích tạo đao thiết bị Bộ kích tạo đơn thiết bị Bộ điều khiển Thiết bị Những ưu điểm và khuyết điểm nào đã dẫn ra, lưu trữ đệm vào các lớp thực hiện? cho cái đó, bạn hãy phân biệt thành trường hợhp Bạn hãy lưu ý cách đặc biệt liệu linh động (186) CHƯƠNG 6: Các dịch vụ mạng máy tính 6.0 Những quan niệm dịch vụ mạng máy tính (computer network) Ngày nay, có máy tính cở lớn có thể phục vụ đến vài ngàn người và có máy tính phục vụ cho vài người sử dụng Nhưng, để có thể sử dụng dịch vụ hệ thống rộng rãi và để có thể dùng chung các nguồn tài nguyên nhu cầu các công ty, các trường học, các xí nghiệp và nói chung nhu cầu trao đổi thông tin rộng rãi toàn xã hội, các máy tính nói trên kết nối thành mạng Đến nay, kiểu phân bổ chức khách-chủ là tiện lợi nhất: Những máy tính chuyên dụng chứa đựng nguồn tài nguyên phong phí gọi là các máy chủ (file server) và tạo nên các chức bổ sung cho các thành viên nhóm công tác (Working group) Với các mạng máy tính hành, máy chủ đã tạo cho người sử dụng chức sau đây: Chia tệp tin (file sharingo): Mọi người sử dụng (chủ và khách) có thể cùng tạo lập và cùng sử dụng các tài liệu và các liệu Thư điện từ (elctronic mail): các thông tin điện tử gọi là thư điện tử dịch vụ phương tiện thong tin, cụ thể đó là các phiếu cập nhập toán ghi chép các người dụng trên mạng vi tính Chia máy in (printerscharing): Cả nhóm công tác có thể dùng chung máy in, đó, việc in ấn các vẽ hay các tài liệu thực trên loại máy in nào đó mạng, phương pháp này gọi là cách quảng (remote priting), đã tạo điều kiện giảm thiểu đáng kể phí tổn phải trang bị nhiều máy in Điều hành công việc (job management): Qua việc phân bổ các nhiệm vụ riêng lẻ trên các máy tính, thành viên khác nhóm có thể xử lý công việc nhanh hơn, rút ngắn thời gian tính toán và thời gian thực chương trình Sự khác nhay các máy tính riêng lẻ và mạng máy tính người sử dụng thì khó nhìn thấy, chúng ta nói hệ thống máy tính phân bổ Các chức kể trên đạt nhờ trình diễn có mục đích nhiều thành phần hệ điều hành trên các máy tính khác Do đó, việc mở rộng mạng máy tính có thể coi việc mở rộng hệ điều hành Những ưu điểm mô tả trên là có thể thực trên mạng máy tính; mặc dù vậy, chúng tồn nhiều khó khă trở ngại nhiều kiể máy tính lắp đặt vào mạng, nhiều loại hệ điều hành và nhiều loại ngôn ngữ lập trình: hợp tác máy tính cho phép tiêu chuẩn mạng khác nhau; tiêu chuẩn này tồn phần cứng và phần mềm Vì vậy, chúng ta mong muốn đón nhận chương này vai trò quan trọng hệ điều hành; đồng thời, chúng ta tiếp tục nghiên cứu các nhiệm vụ , các kiểu chức cà các giải pháp cách đầy đủ hơn, mà kết nối mạng mang chúng lại cho hệ điều hành (187) Để thống hoá phạm vi rộng lớn, liên hiệp các nhà sản xuất máy tính đã giới thiệu thử nghiêmh quan trọng môi trường máy tính phân bổ (distributed compting environment: DCE;) nó là sở các phần mềm mở (open software fundation:OSF) chứa đựng các giải pháp khác quản lý công việc vủa hệ thống client/server (khách/ chủ) và quản lý tệp tin các chế bảo vệ 6.1 Kết nối mạng máy tính Với phương hướng thưa để các máy tính làm việc độc lập với mạng, có điều khiển dẫn vào cho việc nối mạng, giống móc thiết bị phải lắp vào nhờ kích tạo nhân hệ điều hành Đối vớikiểu kết nối logic các thông tin, chúng ta có thể áp dụng trở lại các sơ đồ nêu mục 2.4.1 đầu chương 2: Đầu tiên, chúng ta tạo kết nối; là, chúng ta sử dụng địa người nhận để gởi thông tin, và đó, chúng ta đạt trao đổi thông tin không kết nối Đối với việc thực trao đổi hướng kết nối logic, ngưới ta có thể áp dụng hai ý kiến: Một cách vật lý, chúng ta có thể tạo sưk liên kết cố đinh; sau đó, chúng ta có thể gởi thông tin qua đường dây điện thoại cố định;hay chúng ta có thể bắt đầu cách nối tiếp vật lý nhờ các thông tin đặc biệt qua mạng máy tính, tiếp đến, gởi các thông tin trên đường vừa chuẩn bị Việc kết nốicác máy tính tới vavs máy tính riêng lẻ thì không tồn dạng vật lý; thực ra, nhiều kết nối có thể sử dụng đường dây dẫn, mà không có trở ngại gì Đối với việc thực hai ý kiến trên mạng máy tính thì có thể đạt việc phân xẻ thông tin thành các gói tin (daten package) và việc chuyển liên tục các gói tin tới các địa người nhận mạng Một cách bình thường, kết nối mạng máy tính, thì không tồn kiểu kết nối vật lý điểm tới điểm, mà nhiều máy tính kết nối với cáp đồng trục Để thích hợp cho máy xác định, trên cáp này, không phải có các liệu, mà thông tin địa truyền tải Những thông tin quản lý này (chẳng hạn chiều dài thông tin, tổng ngang để kiểm tra lỗi truyền đat ) liên kết với các liệu gói tin Nhiệm vụ điều khiển địên tử là thực việc chuyển đổi các tín hiệu điện tử cá và khuôn khổ logic các gói tin việc đọc nhận, và việc viết gởi Với kiểu dịch vụ này, chức việc điều khiển gơie thông tin, tạo lập môtn kết nối thông tin logic với các máy tính khác phải tạo lập trợ giúp dãy các gói tin Kết các bước trao đổi thông tin để đạt mục đích định trước gọi là giao thức (protocol), nó chính là sơ lược các quy tắc trao đổi thông tin (communicatin) 6.1.1 Các lớp công việc (188) Việc thiết lập các dịch vụ cao phù hợp với cấu trúc hữu nhờ các cấu ảo nối chương và nó tiêu chuển hoá kiểu các lớp OSI, gọi là hệ thống mở kết nối với (Open Sytem Interconnect) tổ chức tiêu chuẩn hoá quốc tế ISO (Internetional Standards Oganization), xem hình 6.1 đây hçnh 6.1 trang 215 Các lớp khác đánh số từ tới 1, có các nhiệm vụ sau đây: Tại lớp áp dụng, các dịch vụ người sử dụng dẫn các ứng dụng đồ hoạ, kiểm tra an toàn, trao đổi thông tin (như E-mail) Tại lớp trình báo, các liệu tạo dạng và khẳng định việc mã hóa hay khuôn dạng nén việc phân nhóm các liệu, thí dụ kiểu tạo dạng ghi thù phụ thuộc người sử dụng trên lớp toạ đàm, nó khẳng định: là người gởi và là người nhận; các lỗi xem xét nào trao đổi thông tin Nói chung, lớp này thường bỏ qua Lớp chuyển vận làm thay đổi các dong liệu các gói tin, nó lưu ý đánh số và nhận thì nhận đúng gói tin Ở đây, lần đầu tiên, lưu ý đã chấp nhận trên phần cứng thuộc cái đó Các yêu cầu khác sai số lỗi lựa chọn đó Một đại diện kiểu giao thức này là giao thức TCP Trên lớp mạng, tất cẩ các câu hỏi và các vấn đề còn tồn trao đổi có lưu ý tới các quan hệ địa hình và khoảng cách mạng máy tính Sự chuyển hướng thông tin trạng thái chuyển vận trên đoạn đường xác định, cấu hình thiết bị giới hạn bề rộng băng từ và chiều dài cáp đồng trục, tóm lại, tất các điều kiện ký luật mạng máy tính xem xét kỹ càng đây việc trao đổi thông tin không có kết nối, giao thức IP (internet protocol) hay ấn khác loại đó UDP (uniform datagram protocol) sử dụng; nhiên, với cái đó, dãy các gói tin trên đường đến người nhận có thể tự mình tu chỉnh Ngược lại với cái đó, giao thức tiếng X.25 đã đảm bảo dãy tuần tự, vì giao thức định hướng kết nối này sử dụng kiểu kết nối tạo lập trước đó cho tất các gói tin cách chặt chẽ Lớp liên kết liệu đã làm phân đoạn các tập liệu thông tin (có đọ lớn không đặn) thành các gói tin nhỏ riêng lẻ có độ lớn xác định, gởi chúng và lặp lại việc gởi, không có thông báo trở lại hay việc tổng kiểm tra lỗi bên nhận không có vấn đề gì Bởi lẻ, nó làm đầy chức bảo vệ liệu Các gói liệu biến đổi dẫn tới việc gởi trên lớp kết nối vật lý thành các Bit nhị phân, mà Bit nhị phân này mang theo các xung điện hay các xung quang trên môi trường chuyển vận Việc thực và áp dụng kiểu phân lớp này còn có khác các nhad chuyên môn, và đó, vấn đề này còn tiếp tục trãi qua thực nghiệm (189) Trong trường hợp đơn giản, người ta có thể tạo lập kết nối kiểu điểm tới điểm hai máy tính; đó, người ta kết nối chúng dây cáp đồng trục; kết nối này thích hợp với thiết bị tốc độ chậm máy in Khi đó, các chíp vi mạch với các giao diện nối tiếp thực các chức lớp kết nối liệu; kích tạo lối thì bước thứ Đối với trao đổi thông tin, người ta có thể áp dụng chương trính KERMIT thông thường Chương trình này trường Đại học Columbia đề xướng, nó chứa đựng nội dung các lệnh để gởi liệu (lớp 7) là chế mã hoá thành các gói tin thông tin (lớp 6) Ở đây, các lớp 5,4 và bỏ qua bên, vì nó là kiểu kết nối tận hiến điểm tới điểm Ở các mạng máy tính với các yêu cầu cao E-mail và cùng sử dụng các tệp tin, các lớp còn phức tạp nhiều Do vậy, điều đó đã đảm bảo rằng, điều khiển không chứa các chíp, mà chúng thiên luận các lớp và lớp 2; đặc biệt, hệ thống vi xử lý riêng lẻ với nhớ và chương trình cố định ROM làm giảm tải với môi trường truyền tải đặc biệt (thí dụ Ethenet) hay với giao thức đặc biệt (thí dụ kết hợp đặc biệt các giao thức TCP/IP) Những điều khiển thông minh này có thể cùng làm việc với các kích tạo hệ điều hành trên mức đọ cao Đối với hệ điều hành, điều quan trọng cần phải hiểu là, lớp nào và dịch vụ nào tồn điều khiển và cần xem xét tốt Các lớp trao đổi thông tin Unix: Ở hệ điều hành Unix, các lớp riêng lẻ thay thì khác Thực ra, lúc đầu Unix không phải thiết kế cho mạng Vì ngày từ đầu, mã nguồn hệ điều hành này dụng không tiền các trường đại học, cho nên, nó đã nhận tham gia rộng rãi và đem lại các ấn phát triển các ấn thiết kế quan trọng mạng máy tính và đã thực nghiêmh thành công mỹ mãn trên hệ điều hành Uinx Một thiết kế mong mỏi với Unix System V đã dẫn tới việc xếp các kích tạo thiết bị các lớp Ý tưởng thiết kế này là tạo dòng lư thông (stream) các liệu xuất-nhập kết nối nhờ các bậc xủ lý khác kích tạo, xem hình 5.2 trên Hệ thông sdòng lưu thông này tạo trên giao diện đã chuẩn hoá, để di dịch các bậc xử lý hay để đón nhận dòng lưu thông Do đó, nó có thể giảm nhẹ việc trao đổi các lớp giao thức và việc lựa chọn liên hiệp các giao thức TCP/IP Hình 6.2 lớp chứa đựng các dịch vụ nhắc đến mục 6.2.2 đây Ap dụng Trình báo Toạ đàm Chuyển vận Named pipes, rlogin, XDS Giao diện HĐH: socket Ports, IP address TCP/IP (190) Mạng Liên kết liệu Kết nối vật lý Ethnet Hình 6.2 Các lớp các giao thức thường hay sử dụng Unix Gọi hệ thống các dịch vụ vận chuyển nhân hệ điều hành xảy nhờ các gọi hệ thống đặc biệt Một áp dụng có thể là sử dụng trên lớp cao named pipes; là nó có thể thiết đặt trên các dịch vụ hệ điều hành socket() cách sâu sắc, đó đạt trao đổi thông tin trên mạng Các lớp trao đổi thông tin Windows NT: Ở hệ điều hành Windows NT, nhiều dịch vụ mạng khác đem lại Những dịch vụ này cho phép tương thích với nhiều giao thức mạng riêng biệt thuộc hệ điều hành MS-DOS; thí dụ giao thức khối thông điệp máy chủ SMB (server message block), giao thức hệ thống mạng xuất-nhập NetBIOS (Network Báic Inpit-Output System) tương thích với các giao thức dịch vụ các nhà sản xuất hệ thống khác Cấu trúc này sơ đồ hoá hình 6.3 cho chúng ta thấy rằng, việc phân lớp theo kiểu IOS-OSI dẫn tương đối đầy đủ Ap dụng Đề xuất Toạ đàm Chuyển vận Mạng Liên kết liệu Giao thức NDIS File, Named pipes, mail slots Hệ thống Dịch vụ lặp NetBIOS Net BEUI NBT IPX/ SPX Windows-socket TCP/IP Bộ kích tạo NDIS Kết nối vật lý Hình 6.3 Mô hình OSI và các thành phần mạng Windows NT Lớp chuyển vận che phủ gia thức đầy định NetBEUI, gọi là giao thức liên hiệp giao diện người sử dụng nânng cao kiểu hệ thống xuấtnhập trên mạng (NetBIOS extended user interface) hau liên hiệp các giao thức IPX/SPX công ty Novell hay giao thức thông dụng TCP/IP Ngoài ra, các lớp này còn mang trên mình giao diện chuẩn cho điều khiển mạng NDIS (Network driver interface specification) hãng Microsoft Các lớp cao 5,6,7 đã che phủ lớp SMB, mà lớp này tạo cách trực tiếp vào các trạng thái sockets theo giao thức NBT và NetBIOS, đó đạt trao đổi thông tin (191) 6.1.2 Các hệ điều hành phân bổ Một hệ điều hành kết nối mạng và tồn cách toàn vẹn thì biểu thị là hệ điều hành mạng máy tính Bây giờ, người ta có thể phân bổ nhiêmh vụ, chẳng hạn dẫn các tệp tin tới các máy tính mạng Liên quan tới nhiệm vụ này, người ta nói hệ phân bổ, cụ thể đó là hệ thống tệp tin phân bổ Các chức hệ thống phân bổ bị giới hạn trường hợp hệ điều hành mạng máy tính trên các dịch vụ cao và trên các hệ thống chương trình chuyên môn hoá cao người sử dụng hçnh 6.4 trang 218 Ngược lại, thành phần hệ điều hành phân bổ tồn lần riêng lẻ trên máy tính Do đó, tất các thành phssn máy tính phải làm việc cùng nhau; tất nhiên, có hệ điều hành là chung cho toàn mạng Một hệ điều hành sử dụng lớp thấp giao thức chuyển vận, đó, nó có thể thích ứng với các máy tính khác với dịch vụ phân bổ nhanh nhạy Hình 6.4 việc phân lớp nhân hệ thống Phần nhân hệ điều hành tồn trên máy là phần nhân tối thiểu (microkernel) Phần nhân tối thiếu này chứa đựng dịch vụ cần thiết để thực việc trao đối thông tin và các dịch vụ cho việc quản lý nhớ và chuyển đổi tiến trình Tất các dịch vụ khác quản lý hệ thống tệp tin (file server), quản lý in ấn (printer server), xây dựng cây thư mục (director server), điều hành công việc (process server) định vị trên các máy tính chuyên môn hoá Kiểu hệ điều hành này có ưu điểm sau đây: Tính linh hoạt: Các dịch vụ (như dịch vụ tính toán ) có thể lấy hay đưa thêm vào yêu cầu máy tính hoạt động; hệ thông smáy tính có thể mở rộng tăng dần Tính biểu trưng: Với tính biểu trưng hệ điều hành, các dịch vụ mạng mang lại mà không cần người sử dụng biết điều đó xảy đâu Độ sai số lỗi: Một cách nguyên tắc, sai số lỗi là điều có thể; đó, hệ thống máy tính có thể tái tạo dạng bên mà không cần người sử dụng biết điều đó Việc gia tăng hiệu suất: Vì tất các dịch vụ có thể dẫn tới sang hành; đó, nhờ các máy tính bổ sung, người ta có thể đạt việc thực thi cao (192) Tuy nhiên, nói đúng ra, người ta nhận thấy rằng, các hệ điều hành phân bổ có nhược điểm vì chi phí phần cứng lớn, thí dụ, dịch vụ tồn có lần và sau đó, loại khỏi máy tính Tóm lại có thể nói rằng, hoạt động toàn mạng thì quan hệ với hiệu suất dịch vụ Vẫn đề nhân hệ điều hành phân bổ là tổn hao thời lượng số dịch vụ qua trao đổi thông tin Đối với hệ thống hiệu suất, nó thì có lợi để xử lý gói tin lớn ngoài khả năng; đa số các hoạt động nhỏ tồn nhân hệ điều hành thực nhanh trên hệ thống vi xử lý tương ứng Đối với các dịch vụ mạng, người ta còn lưu ý vấn đề, các nhân hệ điều hành đoạn hay tái tạo, mà chúng có thể nhận các chức hệ điều hành cách tự chủ, đó đem lại dịch vụ chuyên dụng cao (thí dụ việc điều khiển truy cập mạng), mà chức chúng phân bổ Vì các dịch vụ này tính toán phần thuộc hệ điều hành và nó chứa đựng phạm vi cung cấp hệ điều hành; đó, nó nói các hệ điều hành phân bổ nhiều hay ít mà không cần phải làm chủ nhân tối thiểu Trên sở này, điều cần thiết là phải xem xét hoài nghi, liệu, hệ điều hành tập trung (main frame) hay hệ điều hành phân bổ (client server) thì tốt hơn: Hầu hết các hệ điều hành là pha trộn từ hệ điều hành mạng khiết, mà hệ điều hành này tự làm tất hay kết nối cách rời rạc với hệ thống các máy tính khác nhau, chẳng hạn với hệ điều hành phân bổ khiết, nó dẫn tới tất các dịch vụ trên máy tính chuyên môn hoá Phạm vi nhân trạng thái quá độ hai điểm cực trị Ở mục 6.4.2, chủ đề này nhắc tới lần thì dụ máy trên mạng 6.2 Trao đổi thông tin trên mạng Nếu chúng ta mở kết nối trao đổi thống tin điểm tới điểm và máy tính quan hệ với máy tính khác; đó, kết nối có mục đích tới máy riêng lẻ, người ta phải làm thích hợp máy tính này với cái tên hay địa 6.2.1 Tên mở rộng trọng mạng Có quy ước tên mở rộng khác mạng; các quy ước này thay đổi thêm sử dụng Do đó, chúng ta có thể phân biệt cách thô thiển tên sử dụng rộng rãi mạng lớn (đặc biệt trọng mạng Internet) và các tên các mạng cục diện hẹp (193) Các tên mạng diện rộng: Trong lưu thông máy tính diện rộng mạng Internet, quy ước tên công nhận; nó phát triển theo lịch sử Do đó, tất các cách tổ chức Hoa Kỳ phân chia thành các nhóm khác nhau: Com cho các công ty Edu cho các trường đại học và trường phổ thông; Gov và mit cho chính phủ và quân đội; Net cho người công tác trên mạng; Ong cho tất các tổ chức cùng sử dụng Trong nhóm (top level domain), thành viên nhóm (domain) phân bổ cái tên; thí dụ trường đại học Berkeley với nhóm top lever domain thì tên edu bổ túc thêm berkeley Tên đầy đủ cho mảy tính trường đại học cấu thành tên vùng (domain name) và tên máy tính (computername), các tên tách biệt dấu chấm Thí dụ tên máy tính: Tên đầy đủ máy tính Okeeffe trường đại học Bekeley gọi là: okeeffe.berkeley.de Ở đây, việc viết chữ lớn hay chữ nhỏ không cần lưu ý Đối với phần mở rộng, có thoả thuận khác đưa Thay vì viết tên nhóm, có thể dẫn tên viết tắt quốc gia Thí dụ máy tính môn có tên là diokles, nó xác định địa chỉ: diokles.informatic.uni-danang.vn Một địa tượng trưng thì quá dài Do đó, nó tồn mỡi máy tính số logic; số này bao gồm số đứng liền kề (địa Internet là 32 Bit) Thí dụ địa trên mạng Internet: Một máy tính nói trên có địa số: 141.2.1.2 Hai số đầu (141.2) phù hợp với nhóm vùng (domain), đó là uni-danang.vn; và nó quan (ở Mỹ trung tâm thông tin mạng NIC) trao cho chính xác tên vùng (domain name); đây, các số khác cho thấy: số thứ (.1.) mạng (subnet) và số thứ (.2.) máy tính riêng lẻ tổ chức vùng nào đó kết nối vào mạng Internet Từ các số logic, người ta chọn điều khiển giao thức TCP/IP có số cố định tương ứng, đó là số đối vơi sbộ điều khiển này, nó tạo lập cách cố định và không thể thay đổi (khác với các số logic địa IP) Khi tạo lập kết nối; đầu tiên, số vật lú này thạm chiếu, tiếp đến tham chiếu các đặcđiểm logic (194) Sự xếp địa logic tới địc ảo bẳng các chữ cái phải giữ lại với trợ giúp bảng Trong các hệ thống Unix, chúng tìm thấy đường dẫn /ect/hosts; các hệ thống khác nó là ngân hàng liệu thực thụ Một cái tên mạg Internet có thể sử dụng để yêu cầu dịch vụ trên máy tính Thí dụ các dịch vụ trên mạng Internet: Trên trang WEB (worrd wide web:WWW), để có dịch vụ trình diễn text (hypertext presentserive), giao thức URL (uniform resource locator) cấu thành là địa ba thành phần :tên giao thức dịch vụ (thí dụ:http://), tên nối mạng máy tính và tên tệp tin cục Đối với dịch vụ chép tệp tin, giao thức URL dẫn tới cho máy tính vùng với uni-danang.vn và cho tệp tin với /public/Text.dat Như vậy, ta có đường dẫn đầy đủ: ftp://ftp.infomatic.uni-danang.vn/public/Text.dat Người ta lưu ý rằng, việc mô tả tên chữ cái boá hay chữ cái thường mạng Internet thì không quan trọn; tên tệp tin hay đường dẫn mạng cục thì điều đò không thể Máy tính vùng uni-danang.vn có thể tìm thấy theo cách viết Uni-Danang.VN , tệp tin public/Text.dat thì không thể viết Public/ext.dat Việc xếp tên theo địa IP logic thì không thực tự động, mà nó phải cho phép theo danh sách tên Ở mạng cục bộ, điều này hoàn thiện máy tính chủ quản lý cây thư mục; máy tính này dừng lại địa mong muốn trực tiếp danh sách tất các máy tính nó quản lý; nó phải hỏi lại máy tính khác Tên máy tính và các dịch vụ toàn cùng chúng (all domain) dẫn máy chủ (domain name server) quản lý hệ thống tệp tin toàn vùng; khiđó, máy tính quản lý vùng này nhận biết các máy tính kết nối trực tiếp các máy tính kết nối trực tiếp các máy tính quản lý vùng tiếp theo; đây, nó dẫn tiếp các thăm dò tới các máy tình còn chưa biết rõ Cây thư mục mạng cục bộ: Ơ mạng Internet, chúng ta đã biết cách tìm tên máy tính Ở mạng cục Lan (local area network), thí dụ với nhiều máy tính tồn tai phòng lớn hay phân bổ thành nhiều phòng theo nhóm công tác; việc quy ứoc tên rõ ràng thì thật khó khăn Để chuyển vận tệp tin từ máy tính tới máy tính khác, người ta phải hai tên máy tính đường dẫn hệ thống tệp tin cục Tính mềm dẻo này thực không cần người sử dụng quan tâm; vì nhóm công tác luôn luôn tồn Do đó, mục đích là, để thiết đặt các chế cho hệ điều hành Mà với chế này, có thể cho phép truy cập lên hệ thống tệp tin máy tính khác cách thông suốt Nếu có nhiều máy tính cùng làm việc đồng thời mạng cục (195) bộ; đó, người ta có thể liên kết với các hệ thống tệp tin các máy tính (thí dụ hình 6.5, đó là các máy tính vùng Hera và Cronos) thành cây thư mục Người ta ký hiệu dấu hhai sọc chéo “//” cho thư mục gốc nối ảo hệ thống tệp tin; nó phục vụ là khoá cho việc dò hỏi tệp tin hçnh 6.5 trang 223 Một phương pháp đã dấn tới hệ thống tệp tin trên hai máy tính tương tự nhau; tất các người sử dụng các máy tính có thể tham chiếu cây thư mục Tuy nhiên, còn có phương pháp khác nữa; thật vậy, chúng ta nhận thấy rằng, việc tạo kết nối phía; đó, ví dụ chúng ta, máy tình Cronos đã kết nối với thư mục NewDepartment Tất việc dò hỏi trên máy tính Hera dẫn tới máy tính Cronos, xử lý đó hay đưa trở lại máy tính Hera Đối với người sử dụng máy tính chủ Hera thì dâng hiến toàn cảnh hệ thống tệp tin, đã hình 6.6 đây hçnh 6.6 trang 223 Đối với người sử dụng máy chủ Cronos thì không có gì thay đổi; không cần ghi nhớ dịch vụ bổ sung việc máy tính Cronos thình cầu máy chủ Hera; cần lưu ý tới hệ thống tệp tin giới hạn; kiểu kết nối không đồng các hệ thống tệp tin mạng cục Thí dụ hệ thống tệp tin phân bổ Unix: Hệ thống tệp tin kiểu AFS (anderew file system), trường đại học AcrnegieMellon đề xướng, đã trợ giúp hình dạng tệp tin đồng toàn cục và bổ trợ hệ thống tệp tin phan bổ DFFS (distribute gile system) cho ccs gói tin DCE Đối với tệp tin, điều định là; liệu nó tồn cách cục hay khoảng cách (?) và sau đó, nó tổ chức truy cập nào (?) Do vậy, các cờ hiệu thay sử dụng để trao đổi liệu và trao đổi giao thức các máy tính (xem hình 6.17) Thí dụ hệ thống tệp tin mạng Unix: Hệ thống tệp tin mạng NFT (network file system) công ty máy tính SUN phát triển cho hệ điều hành Unix và phổ biến rộng rãi các ấn khác nhay Unix, phần mở rộng nó khẳng định hướng theo kiểu không đồng Xuất phát điểm là, hay nhiều máy tính chủ dịch vụ tệp tin tồn mạng, chúng dùng chung hệ thống tệp tin Nếu máy tính muốn sử dụng lệnh đặc biệt muont() để phân tán cây thư mục máy chủ cới thư mục xác định (196) Vì điều đó có thể xẩy máy tính,do đó, cây thư mục thì có thể khác trên máy Cách phô diễn này hệ thống NFS thì cần thiết cho việc bố trí cây thư mục Thí dụ cây thư mục mạng Windows NT: Ở hệ điều hành Windows NT,có hai chế khác để truy cập các tệp tin các máy tính khác Cơ chế thứ dùng dịch vụ kết nối ảo (symbilic links), mà điều này đã trình bày mục 4.2.2 trên Trong cây thư mục có các thiết bị có đường dẫn \Device, kích tạo đặc biệt treo vào cho loại tệp tin mạng (thí dụ: hệ thống tệp tin kiểu giao thức lặp MS, hệ thống tệp tin mạng Novell ); mà phương pháp phân tích chúng (parse methode) dẫn tới việc tạo lập kết nối mạng hay dẫn tới việc đọc chọn hệ thống tệp tin mạng Nếu bây giờ, người ta tạo lập tên gọi cho thiết bị (chảng hạn V: ) trên kích tạo mạng này; đó, nó làm thích ứng cách tự động mở tệp tin Ơ hình 6.7, người ta nhìn thấy kết tên tệp tin chuyển hướng kiểu hçnh 6.7 trang 224 Cơ chế thứ hau sử dụng khuôn khổ cây thư mục Microsoft UNC (Universal naming convention); đó, tất các tên thư mục mạng bắt đầu ký tự hai dấu gạch xiên phải “\\” Nếu hệ thống Windows32 nhận biết rằng, cái tên sử dụng; đó, nhờ thiết bị DOS, thư mục “\\” đã thay thư mục “UNC:” cách tự động Do đó, kết nối ảo /9symbolic link) dẫn tới cho kích tạo tên MUP, gọi là đa lo liệu (multi provide) Bây này dò hỏi với giao thức IRP quản lý đăng ký tệp tin mạng, tiệu tên đường dẫn phù hợp đã nhận biết chưẳ) Nếu đó là trường hợp nhận thấy khắp nơi, thì đó, dãy định cho việc đăng ký quản lý tệp tin ngân hàng liệu đăng ký Giải pháp tên tệp tin với thư mục UNC: Đầu tiên, chúng ta muốn mở tên tệp tin \textserver\public\text.doc Sau đó, việc dò hỏi này chuyển tới UNC:\textserver\public\text.doc Bây giờ, từ kích tạo thiết bị MUP, chuỗi ký tự tin textserver\public\text.doc chuyển tiếp tục tới kích tạo vầ gởi lặp (redirector) hệ thống tệp tin mạng và phương pháp phân tích giao dịch thông điệp gọi tới Mỗi kích tạo dò hỏi việc kết nối mạng nó máy chủ quản lý tệp tin, liệu tệp tin này có còn tồn không? Nếu có nó xẽ mở cho cái đó kết nối Ở cây thư mục Windows NT hệ thống tệp tin NFS, không có hình dạng thống đảm bảo các hệ thống tệp tin Đầu tiên, các việc (197) kết nối mạng tạo lập giống hệ thống NFS và chúng bảo đảm mối quan hệ máy chủ và máy khách 6.2.2 Kết nối trao đổi thông tin Để thực thi việc trao đổi thông tin mạng, các kiểu quy ước tên mạng phải sử dụng tới nhiều chế khác Sau đây chúng ta khảo sát các chế đó Trao đổi thông tin kiểu nối cổng (ports) Ở đây ý tưởng các điểm trao đổi thông tin đã chấp nhận: máy tính chiếm điểm cuối trao đổi thông tin mạng hệ thống có nhiều kết nối trao đổi thông tin Ở giao diện tới lớp TCP/IP, đó là cổng (ports) kết nối; cổng này đã đáng số, gọi là địa số Vài các số cổng 16 Bit xếp cho kết nối dịch vụ đặc biệt, gọi là Well known oprt number, mà người ta có thể chuyển thông tin tới đó Hình 6.8 danh sách số cổng các dịch vụ, với xếp này, người ta tìm thấy Unix các dịch vụ tệp tin /ect/services Người ta có thể so sánh điểm trao đổi thông tin với hộp thư (mailbox), nó giống việc trao đổi thông tin dẫn mục 2.4.1 trên Đối với dịch vụ hộp thư, hệ điều hành phải tạo nên hai hàng đợi: cho các thông tin kết nối và cho các thông tin gởi tới Ngoài ra, hàng đợi phải đảm bảo với cờ hiệu Sự tổng hợp các thư mục này và các cấu trúc liệu tạo thành lớp, mà lớp này ghi lại trên các cổng và nó có thể xem xét là điểm cuối việc trao đổi thông tin các tiến trình Một kết nối trao đổi thông tin tiến trình A và tiến trình B mô tả sau: hình 6.8 trang 226 Thí dụ trao đổi thông tin kiểu kết nối TLI: Với hệ điều hành Unix System V, ấn số dẫn giao diện TLI (transport layer interface) Giao diện này bao gồm tệp tin thư viện (libnsl.a), gọi là thư viện dịch vụ mạng (network service library:libnsl); đồng thời, nó phủ lên lớp vận chuyển Một kiểu dễ dàng và tốt uỷe ban tiêu chuẩn hoá X/Open chấp nhận là giao diện chuyển vận nâng cao ETI (extended transport interface) Hình 6.9 mô tả trao đổi thông tin kiểu này Trong giao diện TLI, tiến trình có thể trao đổi thông tin đồng hay không đồng tuỳ theo cách chọn; giao diện này, việc trao đổi thông tin có thể là đồng Vì lớp chuyển vận xảy thật rõ ràng, cho nên, người ta có thể không cần (198) gây ảnh hưởng lên các tham số khác nhau, thí dụ lên giao thức TCP/IP Điều này có thể gây nên bất lợi mà sau này người ta cần phải xem xét tới hình 6.9 trang 226 Trao đổi thông tin kiểu hốc (socket’s communication): Một kiểu trao đổi thông tin dạng logic gọi trao đổi thông tin kiểu hốc (socket model) Kiểu này tổ chức kiểu trao đổi thông tin định hướng điểm theo hàng đợi Nó có khác máy chủ (server) và máy khác (client): máy chủ thính cầu trao đổi thông tin với khả mình và chờ đợi khách hàng; còn khách hàng muốn tạo trao đổi thông tin vơí máy chủ Đầu tiên, hai muốn tạo trao đổi socket với gọi hệ thống socket() Các thủ tục cho phép kết nối trao đổi thông tin tới cổng Tên tiến trình gọi ghi với gọi hệ thống bind() vào hệ thống Khi đó, tiến trình server chờ đợi với gọi hệ thống listen(), khi, với gọi hệ thống connet(), tiến trình client yêu cầu kết nối tới nó Nếu client đáp ứng, đó, tiến trình server làm việc kết nối với gọi hệ thống accep() và trao đổi thông tin thực bắt đầu Hình 6.10 lad diễn biến giao thức trao đổi thông tin kiểu socket hçnh 6.10 trang 227 Kết thúc trao đổi thông tin kiểu socket với gọi hệ thống thông dụng close(), điều có thể dẫn tới là, liệu các sữ liệu gới theo hàng đợi hay dập tắt(?) Những kết nối trao đổi thông tin kiểu socket các tiến trình trên các máy tính mạng cục là có thể, và đó, chúng đem lại khả trao đổi thông tin các tiến trình; quá trình trao đổi này thì độc lập vơi slai lịch tạo lập tiến trình Trao đổi thông tin kiểu định tên đường ống (named pipe): Một kiểu trao đổi thông tin quan trọng dẫn tới; đó là kiểu định tên đường ống (named pipe), còn gọi kiểu đường ống (pipesline): Trong Unix, MS-DOS và các hệ điều hành tương ứng, mọt đường ống kiểu xây hai hay nhiều tệp tin có thể đọc viế lại với nhau, mà trên đó, nhóm các tiến trình có thể truy cập đựơc Thật vậy, tệp tin kiểu tạo nên máy tính kết nối mạng, đó, người ta có thể truy cập hệ thống tệp tin mạng, và vì vậy, trao đổi thông tin các tiến trình các máy mạng thực Thí dụ trao đổi thông tin kiểu định tên đường ống Unix: (199) Khả trao đỏi thông tin kiểu pipesline mạng máy tính thì không dẫn tới với tệp tin NFS (network file system), vì các xâu tệp tin kiểu pipesline Unix tạo nên là thiết bị đặc biệt gọi hệ thống mknode() Thuộc vào các tệp tin kiểu pipesline có kích tạo, mà thay vì sử dụng nhớ đĩa cứng, nó sử dụng đệm hệ điều hành để lưu trữ trung gian và tạo lập các hàng đợi liệu kiểu FIFO Hầu hết các xâu tệp tin liêut pipesline sử dụng để trao đổi thông tin các tiến trình, đó, tất các tiến trình tham gia thì trên cùng máy tính khác với điều này, Unix system V, dòng lưu trữ thông tin các xâu tệp tin kiểu pipesline cho phép kết nối trao đổi thông tin tới tiến trình trên máy tính khác Thí dụ trao đổi thông tin kiểu đường ống (pipeslien) Windows NT) Ở hệ điều hành Windows NT, gọi hệ thống CrêâtNmePipe() dùng để tạo lập kết nối trao đổi thông tin kiểu pipesline nhờ kích tạo đặc biệt Khác với hệ thống tệp tin NFS, việc truy cập trên đối tượng phân bổ theo cây thư mục toàn cục trên mạng thì có thể được, vì rằng, các tiến trình có thể trao đổi trên các máy tình khác nhờ các tệp tin kiểu pipesline với các gọi hệ thống Readfile () và WriteFile() Nếu xâu tệp tin kiểu pipesline tạo trên máy chủ, đó, tất các khách hàng có thể sử dụng nó cho dịch vụ nào đó Một xâu các tệp tin pipéline mở tệp tin bình thường; nhiên, đó, đường dẫn kiểu UNC phải sử dụng có dạng: \\ComputerName\PIPE\PipeName Các pipes cục sử dụng ký tự dấu chấm “.” Thay cho tên máy tính (Computer name) Cấu trúc xâu pipes hệ điều hành Windows NT thì phụ thuộc vào giao thức chuyển vận cụ thể áp dụng Tuy nhiên, điều này đúng điều kiện các máy tính với hệ điều hành Windows NT hay OS/2; khác với cấu trúc socket, cấu trúc này tương thích với kiểu socket Unix Đối với kiểu kết nốipipes thuộc hệ điều hành Unix, đó, tiến trình đặc biệt (thí dụ: điều hành Unix cho mạng LAN) tạo lập Các dịch vụ hộp thư (mailbox): Khác với kiểu trao đổi thông tin hai chiều điểm tới điểm đã đươc nghiên cứu nay, các dịch vụ hộp thư nói chung cho phép gởi thông tin tiến trình tới nhiều tiến trình khác, gọi là phương pháp đa tung (mutlicast), hay phương pháp tung rộng (brroadcast) Kiểu trao đổi thông tin này phù hợp cho việc gởi thư tín (kể các tệp tin âm và hình ảnh chuyển đi) tới người nhận: vấn đề việc nhận là tồn hộp thư bên nhận; bên gởi không nhân đáp thư nào gởi tới thì điều đó chứng tỏ, thư đã chuyển tới hộp thư người nhận Tuy nhiên, việc nhận thông tin máy (200) chủ bị trói buộc nhiều giới hạn, mà các giới hạn này thì phụ thuộc mạnh mẽ vào giao thức chuyển vận (tranaport protocol), các lẻ sau đây: Dãy các tông tin bên gởi thì không giống bên nhận Việc nhận thông tin thì chưa hoàn toàn đảm bảo Thí dụ các lô thư (mails lots) Winsdows NT: Ở đây, hộp thư thích hợp cho lô thư máy chủ, máy chủ tạo gọi hệ thống CreateMailslot() Việc gởi các thông tin chuyển các máy khách có gọi hệ thống Writèile() và việc trao đổi thông tin kết thúc gọi hệ thống CloseFlie() Do đó, tên lô thư tín với gọi hệ thống Crềatile() có đường dẫn: \\ComputerName\mailslot\MailboxName Nếu kí tự dấu chấm dùng cho tên máy tính (ComputerName), đó, lô thư tín cục trên máy tính thích hợp với tên MailboxName; còn nếu, tên máy tính thay cái tên khác, đó, máy tính này viết tên trực tiếp Nếu tên máy tính là tên máy tỉnh vùng (domâinNme), đó, các thông tin gởi đến tất các máy tính vùng, dùng ký tự “” cho tên máy tính, thì có trao đỏi thông tin kiểu broadcast (tung rộng) thực trên mạng; đó, tất các máy tính cảm ứng, chúng có lô thư tín với tên MailboxName Còn lại, đó là tên dịch vụ; dịch vụ trống đầu tiên thông báo tiếp đó Vì Windows NT, các dịch vụ biểu đồ lưu thông liệu (data flow diagram) không đích xác sử dụng cho trao đổi thông tin kiểu lô thư, đó, các giới hạn nói trên hộp thư có giá trị Ngoài ra, Windows NT, chiều dài lớn thông tin thì phụ thuộc mạnh mã vào giao thức chuyển vận sử dụng Chiều dài này xác định các gọi hệ thống SendFile() và ReadFile() Ở giao thức NetDEUI, chiều dài thông tin trao đổi kiểu điểm tới điểm đạt giá trị lớn 64 kByte, còn kiểu brroadcast đạt giá trị max khoảng 400 Byte Nói chung, kiểu mailbox khó đạt việc trao đổi thông tin thiết kể Dĩ nhiê, người ta giả định có lớp chuỷên vận định hướng kết nối bền vững và có các dịch vụ kiểu biểu đồ lưu thông liệu (data flow diagram) đảm bảo cho giao thức chuyển vận; đó, người ta phải dẫn tới các quy tắc bổ sung, gọi là các giao thức bổ sung: Thông tin có ý nghĩa gì? Lúc nào có hộp thư có thể xoá? Và, với các thông tin chưa trả lời cần giải nào? Từ lý này, người ta có thể xem các dịch vụ hộp thư là trung gian các dịch vụ cao Các gọi thủ tục cách quảng (remote procedure calls: RPC) Trong mạng máy tính, có các dịch vụ mạng diện rộng khác thư điện tử in ấn các tệp tin mạng Một các dịch vụ quan trọng (201) nhiều chương trình trợ giúp, đó là dịch vụ gọi thủ tục từ máy chủ qua máy khách Kiểu gọi tủ tục cách quảng hay kiểu gọi hàm cách quảng (remote procedure calls: RPC) hoạt động gọi thủ tục cục đơn giản tiến trình gọi; việc thực thi nhiệm vụ thực đó, nhiệm vụ này qua mạng tới máy tính khác và các kết qủa nó trở lại qua mạng tới tiến trình gọi và tiếp tục quay vòng Việc thiết kế gọi thủ tục quan trọng; nhờ mức độ tư cao, kiểu này có thể bổ sung cách độc lập với cấu trúc và thiết bị, nó đảm bảo là ché vạn cho ứng dụng hệ thống client/server; chế này hoạt động các mạng không Việc thực thi gọi hệ thống RPC sử dụng thủ tục có tên giống tên gốc, gọi là thủ tục gốc (stubprocedure), và vì vậy, các thông tin bó lại và gởi tới máy chủ qua lớp chuyển vận Ngoài ra, việc thực thi này, đường gọi RPC thì tên thủ tục mong muốn sử dụng cho nó giống tham số Tại server, các thông tin gộp lại và chuyển cho các thủ tục với gọi thủ tục bình thường Các kết di chuyển qua các trạm theo hướng ngược lại Hình 6.11 sơ đồ cho gọi RPC hçnh 6.11 trang 230 Cũng các thủ tục gọi thông thường, gọi RPC có hai ấn bản: các gọi RPC ngăn hãm tiến trình gọi, kết mong muốn đem lại; còn các gọi RPC không đồng thông báo tiến trình gọi các kết RPC dược bày Hình 6.12 mô tả quá trình gọi RPC đồng hçnh 6.12 trang 231 Tại thủ tục, các khuôn dnạg số liệu phần mềm và phàn cứng khác tạo vấn đề cần quan tâm; khuôn dạng này sử dụng các hệ thống máy tính khác Nếu chúng ta bắt đầu với phần cứng, giả sử có số nguyên 32 Bit (bao gồm Byte), chúng ta thực kiểu với các Byte giá trị cao thì bố trí địa Byte thấp, còn kiểu với các Byte giá trị thấp thì bố trí địa Byte cao Hình 6.13 dãy các Byte trên cấu trúc vi xử lý khác hçnh 6.13 trang 231 Kích cỡ các số dấu phẩy trôi (theo chuẩn IEEE 1985: phần định trị 23 Bit, số mũ Bit, ký hiệu Bit) khác nhau, nó giống việc mã hoá các chữ cái (mã ASCII và mã EBCDIC) Lớp để dẫn tới ccs gói tin xuất/nhập và kết phải trù tính các nghivấn và phải biến há ccs liệu hình thái lệ thuộc hình dạng ổ đĩa và đại diện nó trao đổi thông tin qua lại (202) Một nhiệm vụ là làm thích hợp các liệu xếp hàng để tạo trình biên dịch trên địa nhớ, các vi xử lý từ chối việc truy cập lên số, số này không bắt đầu địa đúng hay không bắt đàu các chu trình cần thiết Từ lý này, các trình biên dịch xử lý, chúng muốn lưu trữ số ghi theo chữ cái trước ký tự trống Thí dụ gọi thủ tục cách quảng Unix: Kiểu gọi RPC Unix thực với trợ giúo các thư viện đặc biệt và nó bao gồm lớp: lớp thứ là chế gọi RPC các thủ tục gốc (stubprrocedure), lớp thứ hai bao gồm việc đóng gói/tháo gói các thông tin với trợ giúp lớp đại diện liệu nâng cao (extended data representive layer) Các thủ tục RPC gởi trở lại các gọi hệ thống cao hay thấp Lớp cao thì bao gồm gọi hệ thống registerrpc(), mà với gọi hệ thống này, server, dịch vụ (chẳng hạn thủ tục) thông báo: cho thủ tục svr_run(), mà với thủ tục này, tiến trình server bị hãm và chờ đợi gọi hệ thống RPC; cho thủ tục callrpe(), mà với thủ tục này, tiến trình client gọi thủ tục mong muốn server Lớp tạo lập các thủ tục client và server, nhằm điều chỉnh các thông số giao thức chuyển vận hay điều chỉnh các quyền hạn cho phép Gọi hệ thống RPC thực Unix nhờ hệ thống tệp tin mạng; nhiều dịch vụ NFC sử dụng gọi RPC cho việc thực thi các dịch vụ này Trong các gói phần mềm DCE, hệ thống gọi RPC đã đen lại phương hướng giải khác; các gói tin này, các dịch vụ ngông ngữ giao diện (interface defintion language: IDL) mô tả cách trừu tượng Một trình biên dịch chuyển đổi các gọi thủ tục thành các gọi thủ tục gốc và cùng điều chỉnh nhiệm vụ dịch vụ bổ sung tất các server đưa vào sử dụng; đó, khách hàng hay người lập trình không phải biết trước đó máy tính nào, các dịch vụ cần thiết sử dụng mạng (dịch vụ các tệp tin hay dịch vụ toán ) Thí dụ gọi thủ thủ tục Windows NT: A.Sinha cho nhận xét (1996): hệ điều hành Windows NT, luôn luôn cần tới mọt công cụ rộng rãi các gọi đồng và không đồng RPCs Bởi lẻ, các gọi RPCs có thể truy cập tới tiến trình trên máy tramh hay trên máy chủ xác định; lúc đó, hệ thống này gọi là hệ thống định hướng thiết bị; ngời ra, chúng có thể truy cập tới thiết bịi xác định trên máy chủ nào đó; lúc đó, hệ thống này gọi là hệ thống không có kết nối Do đó, các chế mức thấp và các giao thức chuyển vận khác sử dụng (xem hình 6.41) hình 6.14 trang 233 (203) Việc tạo dạng việc đóng gói thông tin gọi RPC đảm bảo các thủ tục gốc; các thủ tục này chuyển vận liệu theo kiểu đại diện liệu mạng (network data representation) Các thủ tục gốc không phải người lập trình tự tạo nên; trình biên dịch MIDL (Microsoft RPC IDL computer) tạo mã bổ sung từ cấu hình các tệp tin; mã này biên dịch và kết nối với chương trình máy chủ máy khách; và thích ứng với các thư viện chuyên dụng thời gian xảy Nhờ đó, việc kết nối mạng người lập trình thông suốt đầy đủ Những giao thức đặc biệt có thể lựa chọn qua tiền tố trước tên đường dẫn các dịch vụ mong muốn Thí dụ để yêu cầu dịch vụ máy tính Myerver cổng (port) 2004, giao thức TPC/IP sử dụng với dòng lệnh: ncacn_ip_cp: Myerver[2004] 6.3 Hệ thống các tệp tin trên mạng : (Network Files System: NFS) Việc truy cập lên các tệp tin dùng chung với trợ giúp mạng là sở quan trọng nhóm công tác và vậy, đó là các chức thiết yếu kết nối mạng Do đó, các phần đem lại cáci nhìn tổng quát các vấn đề hệ thống các tệp tin phân bổ và kể các quan hệ chúng nghiên cứu hệ điều hành Unix và Windows NT Các hệ thống tệp tin khác không trình bày đây 6.3.1 Ngữ cảnh truy cập (access sematic) Nếu chúng ta khảo sát tiến trình đơn lẻ mạng, chúng ta thấy hệ thống tệp tin mạng tương đối đơn giản: để đọc/viết hay để đặt tệp tin trên hệ thống tệp tin cục bộ; đó, điều này đặt dạng các nhiêmh vụ hệ thống khác, đó nó thực các nhiệm vụ Và tiếp tục tiếp diễn tốt đẹp Mặt khác, điều này cho thấy, chúng ta cho phép nhiều tiến trình hệ thống làm việc trên cùng tệp tin: sau đó, cái gì xảy ra? Với trường hợp này có nhiều phương cách để thực thi các hệ thống tệp tin mạng khác và biểu thị là ngữ cảnh truy cập/ chúng ta có thể phân biệt các trường hợp sau đây: Tệp tin đọc: Tệp tin có thể đọc mạng Trường hợp, tất các tiến trình chứa đựng các tệp tin; các này có thể nạp vào đệm hay lưu trữ vào nhớ cách tuỳ ý, mà không có vấn đề gì Ngữ cảnh tác vụ (operation sematic) (204) Các tác vụ để thực các tiến trình tệp tin làm thay đổi dãy các tác vụ đã thực cách Nếu gọi hệ thống read() tiến trình A là gọi hệ thống Write() tiến trình B; và đồng thời, gọi hệ thống read() tiến trình A bắt đầu, đó, tiến trình A trải qua thay đổi gọi hệ thống thứ hai, mà thay đổi này đã tiến trình tiếp nhận trên tệp tin Vì vậy, hệ điều hành Unix, điều này đã thực thi, tức là chúng đã tham chiếu là ngữ cảnh Unix Ngữ cảnh hội đàm (session sematic): Nhiều tiến trình làm việc trên tệp tin, đó, đầu tiên, tất các tiến trình nhận copy tệp tin, mà này có thể các tiến trùnh làm thay đổi Đầu tiên, tiến trình đóng lại tệp tin, đó, các viết trở lại Điều này có ý nghĩa rằng, ấn tiến trình sau cùng (tức tiến trình đóng tệp tin lại) xoá và đè lên tất ấn khác Ngữ cảnh biến động (trấnction sematic): Bán phát thảo hoạt động (mà không thể phân nhỏ nữa) sử dụng đây, nó có thể tồn cách đầy đủ dãy chuyên dungnjn hoàn tàon không tồn (xem biến cố nhân tử mục 2.4) Nếu chúng ta mở và tu chỉnh tệp tin, đó, hệ thống tệp tin mạng đảm bảo rằng, điều đó xảy cách độc lập với tất các tiến trình khác quá trình làm việc riêng lẻ Trong các quá trình này, tệp tin ngăn hãm việc truy cập nhờ tiến trình khác Quá trình làm việc cụ thể nhóm ngữ cảnh thì phụ thuộc mạnh mẽ vào kiểu nào đem thực thi Do đó, dẫn tới đề, tác dụng cụ thể kiểu nào đó còn phụ thuộc vào các đệm và giao thức thực thi Nếu chúng ta khảo sát thí dụ ngữ cảnh tác vụ; chúng ta thấy rằng, tiến trình B viết cái gì đó lên tệp tin, còn tiến trình A đọc tệp tin Tại thời điểm hai nhiệm vụ đạt máy chủ (quản lý files) theo dãy tuần tự, mà dãy này phụ thuộc vào kiểu mạng sử dụng,vào giao thức mạng và vào chịu tải ca máy tínhâthm gia Giả sử, tiến trình A đọc các liệu hành viết tiến trình B hay phụ thuộc vào việc thực thi, mà không phụ thuộc vào ngữ cảnh hội đàm này Vấn đề còn lại là, ngữ cảnh này thực thi cách cục hệ điều hành, thì ngữ cảnh khác thực thi mạng Nếu ccs tiến trình tham gia khoanh vùng phần lên các máy tính này và phần lên các máy tính khác mạng và chúng làm việc trên các tệp tin, đó, người ta phải đặt kế hoạch liên hợp các tiến trình hệ thống cách thận trọng để loại trừ các chức lỗi (205) 6.3.2 Máy chủ có trạng thái và không có trạng thái Nói cách rộng ra, các kết nối trao đổi thông tin, chúng ta phải phân biệt, chúng dẫn tới nhờ giao thức kết nối (gọi là trao đổi thông tin không có kết nối) Chúng ta có thể tạo phân biệt truy cập lên hệ thống tệp tin mạng Nếu têph tin mở, nhằm truy cập lên nó, thì đó, các cấu trúc tệp tin đặt biệt tạo trao đổi thông tin định hướng kết nối máy chủ, các quyền truy cập kiểm tra và việc truy cập đăng ký Đối với khách hàng, nhận biết này chuyển giao, vậy, tất các tác vụ read() và write() với nhậnbiết này có thể xử lý Qua đó, máy chủ đã tạo nên trạng thái xác định; đầu tiên, kết thúc việc truy cập với close() có tác dụng xoá thông tin quản lý và có tác dụng trả lại tự cho nhớ đã bị chiếm chỗ Một diến biến chứa đựng trạng thái có các ưu điểm sau đây: Truy cập nhanh hơn: Việc truy cập lên các tệp tin xảy nhanh, vì không có các dẫn địa người sử dụng tới các nhiệm vụ để đọc/viết, cho nên, chúng sảy ngắn và nhanh để chuyển vận qua mạng, và cần thiết phải kiểm tra các dẫn tới các nhiệm vụ khác, trước có thể tiến hành truy cập tệp tin Bộ đệm Cache hiệu nghiệm hơn: Vì tất các dẫn trạng thái truy cập lên máy chủ dẫn ra, cho nên, các chiến lược nhớ đệm Cache hiệu nghiệm tệp tin nhằm tăng tốc độ việc truy cập Tránh các nhiệm vụ: Nhờ việc dẫn tới số thống tin tệp tin, các nhiệm vụ có thể thu xếp, mà các này tạo các náy tính trung gian Điều kiện ngăn hãm tệp tin: Đối với ngữ cảnh biến động, các tệp tin có thể chấp nhận trạng thái ngăn hãm Đối với ngân hàng liệu, điều đó quan trọng (206) Tuy nhiên, các máy chủ có bao hàm trạng thái còn tồn nhiều vấn đề, mà đề này trường hợp máy chủ không bao hàm trạng thái lại cho phép: Rụng máy tính (client crash) Nếu náy khách bị rụng và với cái đó, chìa khoá truy cập tệp tin bị lác quên, vậy, tệp tin luôn luôn bỏ nhỏ và các thông tin quản lý chiếm chỗ không cần thiết Rụng máy chủ (server crash): Nếu máy chủ từ chối, tức là, trạng thái chung việc xử lý tệp tin bị xoá Như vậy, máy khách phải nhận biết, tệp tin trạng thái nào và phải thực tiếp công việc xử lý vị trí nào? Điều đó, đòi hỏi chế khác phía máy khách và đòi hỏi chi phí bổ sung Số lượng các tệp tin sử dụng đồng thời hay bị giới hạn: Việc che phủ nhớ máy chủ các thông tin trạng thái đã làm hạn chế số lượng các têph tin mở đồng thời Một máy chủ không có trạng thái là dựa theo nguyên tắc dung thứ lỗi và không đòi hỏi chi phí để tạo tập kết nối trao đổi thông tin; các dịch vụ định hướng trạng thái, nó còn tồn nhiều vấn đề việc ngăn hãm tệp tin hay việc loại bỏ các nhiệm vụ Thí dụ máy chủ quản lý hệ thống tệp tin mangnj và điều hành khoá mạng Unix: Máy chủ quản lý hệ thống tập tin NFS thường hay sử dụng, là máy chủ không trnạg thái, mà nó có thể vừa làm nhiệm vụ máy chủ vừa đồng thời làm máy khác Gọi open() để mở têph tin mạng dịch lênh lookup()ở trên máychủ; lệnh này chọn tham chiếu 32 Byte nhằm giảm nhẹ việc truy cập tệp tin và nạp trên máy khách Tất các trạng thái (như trạng thái hành tệp tin ) nạp trên máy khách Thật vậy, bên cạnh các dự liệu, các gọi hệ thống read() và write() còn gới tham chiếu tệp tin máy chủ, trạng thái tệp tin Đối với việc thực thi ngữ cảnh biến cố, khả ngăn hãm tệp tin phải tồn (looking), và cài gì không tồn máy chủ không trạng thái nữẳ) Cho nên, công ty SUN đã định, sau xuất hệ thống NFS, năm lại dẫn raviệc khoá tệp tin cho hệ thống NFS Vì giao thức NFS là kiểu không trạng tháu (unstate), nên dịch vụ này làm đầy dịch vụ RPC, và gọi chung là đìều hành khoá mạng NML (network looking manager), dịch vụ này đòi hỏi tác dụng tổng hợp với nhiều giao thức và nhiều dịch (207) vụ Việc cùng tác dụng này phân biệt trên các hệ thống Unix khác nhau, vì các chế khoá cục tồn Ở hệ điều hành Unix Berkeley, tiến trình lookd đảm nhận phẩm quyền tiến trình file looking (khoá tệp tin) tiến trình này tồn máy tính và thực các dịch vụ nhờ việc trao đổi thông tin Hình 6.15 quá trình hình 6.15 trang 237 Quá trình này bao gồm các bước sau đây : (1) Chương trình này sử dụng trên máy tính A làm trì hoãn gọi hệ thống để ngăn hãm phạm vi tệp tin (2) Khoá trình diển máy tính A nhận môđun nhân (của hệ điều hành NFS Client ) nhiệm vụ khoá cho máy tính B (3) Khoá trình diển máy tính A đăng ký miệm vụ kiểm tra trạng thái máy tính A thủ tục RPC (gọi thủ tuc cách quãng) (4) Bộ kiểm tra trạng thái máy A báo cho kiểm tra trạng thái giao dịch máy tính B Máy này nạp tên máy A vào tệp tin /etc/sm (5) Bây ,nhiệm vụ thực thụ các khoá trình diễn máy B chuyển thủ tục RPC (6) Khoá trình diễn máy B đăng kí ngăn hãm kiểm tra máy B (7).Cuối cùng khoá trình diễn B ngăn hãm tẹp tin mong muốn Tiếp theo, việc thực thi cho cảm biến nhiệm vụ Việc đăng kí bổ sung nhiệm vụ khoá trạng thái kiểm tra trạng thái đã tránh khỏi nguy hiểm :khi sụp hệ thống, tệp tin tồn trang thái tự khoá Taị thời điểm sụp serve, dịch vụ khoá thử ngiệm cách nguyên tắc:phải tạo lập trở lại các bảng tồn trước đó và dĩ nhiên trên Client và Server cùng biện pháp Một tình khác cần đề cập, nhiều client muốn ngăn hãm tẹp tin, lúc đó, có client là đạt mỹ mãn Bây giờ, máy client này bị sụp, thì nhờ việc che phủ tẹp tin nó, nó tự hãm cho nó và hãm giúp client quan tâm khác Ở đây, chức các kiểm tra bổ sung thêm :Khi dò hỏi hãm, chúng kiểm tra, liệu tiến trình hãm đây có còn tồn không? Nếu kiểm tra cục viết tiến trình ngăn hãm đã “chết”, đó, việc ngăn hãm trước đó đã bị thủ tiêu và tiến trình dò hỏi nhận tẹp tin dẫn tới hãm Người ta lưu ý rằng, giao thức này thì không bảo vệ các hư hỏng mạng.Tuy nhiên, dịch vụ phòng ngừa trên bình điện các máy cục thì có thể đạt được, song chi phí để làm cái đó mạng máy tính đơn giản cao, đó, phương pháp này không dùng 6.3.3 Vấn đề nhớ Cache (208) Khi nghiên cứu các tẹp tin ảnh xạ nhớ (xem mục 4.4)và việc quản lý xuất nhập (xem mục 5.4), chúng ta nhớ rằng, đây, các chiến lược đệm hiệu nghiệm có thể tăng tốc dòng lưu thông liệu cách đáng kể, còn số vấn đề có thể tạo trở ngại Đó là các hệ thống tệp tin mạng thì khác Thí dụ, chúng ta lập đệm trên hệ thống máy tính với tiến trình A, đó, tất việc dò hỏi các tiến trình trên các liệu này có thể trả lời cách nhanh chóng, vì chúng không chất tải lên mạng Tuy nhiên, các thay đổi tiến trình B gốc không quan tâm trên hệ thống máy tính khác Ở đây, xuất các vấn đề kiểu nhớ Cachê, mà chúng ta đã tìm hiểu chúng mục 3.5 và 5.4 Hình 6.16 1ộ cách nhìn tổng quan hình ảnh các lớp tham gia truyền đạt thông tin Trên lớp có thể có đệm thực thi; đương nhiên, lớp có thể có vấn đề riêng nó hình 6.16 trang 238 Người ta lưu ý rằng, làm việc tần số cao, cáp nối mạng chất trữ thông tin: với tần số f = 300Hz thì tương ứng tỷ suất truyền đạt 3.108 Bit/sec hay tốc độ là hoàn hảo xng điện đạt 3.108 m/sec; giả thiết lưu lượng thông tin Bit/sec, bây người ta muốn 256 Bit liên tục nạp trên cáp mạng thì đó khoảng cách tối đa hai máy tính có thể đạt 256 mét Chiến lược để giải vấn đề (được trình bày trên) là việc áp dụng pha trộn các phác thảo đã quen thuộc: Viết lưới (write through): Nếu các tệp tin thay đổi, đó, nhiệm vụ thay đổi chuyển tới nhớ Cache và tới gốc máy chủ để đáp ứng ngữ cảnh tác vụ Viết trễ (deleyed write): Tuy nhiên, thực chất vấn đề là chỗ, ưu điểm nhớ đêmh Cache thì không phải tồn việc lưu thông mạng Điều làm tốt là, người ta thu gom tất các nhiệm vụ write() thành gói tin và chuyển tới máy chủ, thì điều đó gọi là viết trễ, lúc đó, ngữ cảnh việc hợp tác thay đổi thêm cái gì đó Điều khiển trung tâm (central control): Để thay đổi các trên các máy tính khác cách hiệu nghiệm, hệ thống nhớ Cache cục phải cùng làm việc với máy tính chủ trung tâm Điều đó, xảy sau thay đổi gốc, sử dụng tệp tin Trong trường hợp này, lần đọc, điều hành Cache so sánh các liệu tệp (209) tin (số ấn bản, tổng ngang đệm ) với các liệu tệp tin server Nếu liệu này giống thì việc đọc dẫn từ đệm Cache; không, thì nhiệm vụ đọc đưa tiếp tới server Viết đóng (write on close): Một định để tới ngữ cảnh tác vụ là ngữ cảnh họp đàm (sesion sematic) Điều đó đạt được, gởi trở lại đã thay đổi tẹp tin sau xảy tiến trình close() máy chủ quản lý tệp tin và đồng thời thực thi gốc Nhiều tệp tin gốc có thể tồn trên các máy tính khác nhau; vấn đề này phải quan tâm ngữ cảnh họp đàm, không cần quan tam nhiều nhớ Cache Nói chung, điều đó nói lên rằng, việc dẫn vào nhớ Cache trên máy tính Server quản lý tệp tin không đã tăng gia suất, mà còn không hê gây cho cái đó điều gì Ngược lại, việc sẵn sàng thiết đặt nhớ Cache trên hệ thống Client/Server có hiệu nghiệm hơn, mặc dù nó còn mang lại vài vướng mắc xảy trạng thái thay đổi tệp tin Từ lý này, ngân hàng liệu phân bổ tồn giao thức ngăn hãm đặt biệt Thí dụ chiến lược nhớ Cache hệ thống tệp tin mạng: Ở hệ điều hành Unix, chế đệm cho việc xuất-nhập các tệp tin mở khả ứng dụng ơt hệ thống tệp tin mạng, để thiết đặt xuất-nhập các gọi hệ thống RPCs trình diễn xuất-nhập sở biod (basic Input-Output Demotration), mà nó yêu cầu bổ sung các khối liệu kế cạnh, gọi là quá trình đọc trước (read ahead) Nếu tiến trình ngừơi sử dụng đòi hỏi tới khối liệu kế cạnh, đó, nó sẵn sàng nhớ đệm và có thể đọc Ngược lại, các liệu tiến trình write() chuyển toéi đệm trước tiên và chúng gộp lại các gọi hệ thống flush() (3 trang các liệu, 30 trang các thư mục) gọi hệ thống sync() (nếu không có đệm nào còn trống) và viết lên ổ đĩa, gọi là viết trễ (delayed write) Nếu tệp tin bị hãm, thì các khối nhớ nó hông đệm thêm: Sau viết, chúng gởi tới Server, gọi là viết qua (write through) Từ việc lý giả này, thành phần lớn mã tiến trình biod tồn nhân hệ điều hành 6.3.4 Các ý tưởng thực thi: Có nhiều ý tưởng khác việc người ta có thể thực thi các hệ thống tệp tinmạng nào đó! Đến có hai khả phổ biến hay nói tới, đói là các dịch vụ tệp tin là các tiến trình đứng riêng lẻ, hay các dịch vụ tệp tin tạo lập khích tạo đặc biệt nhân hệ điều hành Hình 6.17 cấu hình khiểu thứ nhất:Ở đây, tiến hình tồn trên hai phía Client và (210) phía Server Người ta lươi ý rằng, các lớp hệ điều hành là đối xứng; khác tư tưởng biểu lộ loại tiến trình nhận và gởi hình6.17 trang 240 Khác với chế vùanêu, chế này dộng chạm tới trao đổi thông tin giử các tiến trình; hình 6.18.chỉ đồ chế thực thi khác.Đó là chế thực thi trên bình diện độ kích tạo hệ điều hành Ở đây, phía máy Client thì cho phép làm đúng y vậy; ngược lại, trên phía máy Server không có tiến trình điều hành tồn Viêc dò hỏi quản lý trực tiếp nhân hệ điều hành và chuyển hướng trên hệ thống tệp tin cục Phương pháp này thực thi hệ thống tệp tin mạng Server trên kích tạo và tránh các tệp tin từ gọi hệ thống khong khoảng địa tiến tạo Server và quay trở lại đệm hệ thống để viết vào hệ thống tệp tin cục Server hình 6.18 trang 241 Tuy nhiên, cấu hình này thì không đối xứng Hệ thống tệp tin mạng thì không còn mang theo tiến trình đại diện, còn trao đổi thông tin các tiến trình xảu trôi chảy; tức là, hệ thống tệp tin mạng mang theo các lớp đặc biệt (tức kích tạo) nhân hệ điều hành Cả hai ý tưởng thực khác Thí dụ hệ thống tệp tin mạng Unix: Ở hệ thống tệp tin Unix có hai giao thức: giao thức dùng để điều chỉnh việc móc nối hệ thống tệp tin server tới thư mục client, và giao thức dùng để xúc tiến quá trình lưu thông đọc/viết Giao thức thứ thực hai tiến trình: tiến trình dò hỏi client (khi khởi động hệ thống tệp tin) và tiến trình diễn mountd (mountd demontration) server Theo đó, tiến trình mountd client gởi thông tin tới mountd server; đó, với hệ thống getfh(), máy chủ lấy tệp tin quản lý (file handle) lớp hệ thống tệp tin mạng server và đưa trở lại tiến trình client Bây giờ, tiến trình này thực hệ thống mount() và kẹp chặt hệ thống tệp tin server lớp NFSclient nhân hệ điều hành Giao thức thứ hai quá trình đọc/viết trên các tệp tin thay đổi các nhân hệ điều hành Tuy nhiên, trên server, chương trình nfsd khởi động là tiến trình, diễn gọi hệ thống nfs_svc() trạng thái nhân, từ đó, nó không còn quay trở lại Phương pháp này thực thi hệ thống tệp tin mạng trên bình diện kích tạo Hình 6.19 cho thấy cấu trúc này Lớp bổ sung hệ thống tệp tin ảo đóng vai trò quan trọng, hệ thống này đã thấy trước các tác vụ hệ thống tệp tin Tất các tác vụ hệ thống (211) tệp tin là các phương pháp đối tượng nút số ảo và chúng thực thi sau đối tượng Do đó, đổi chiều các tệp tin MS-DOS, các tệp tin Unix và các tệp tin NFS thì hoàn toàn không có vấn đề gì hình 6.19 trang 242 Việc thực thi các dịch vụ, hệ thống tệp tin mạng Windows NT thì xuất phát từ các sở gống việc thu xếp hệ thống tệp tin mạng nhân hệ điều hành và tạo nên kiểu kích tạo; hình 6.20 cho thấy cái nhìn tổng quan điều đó Ở mạng, kích tạo gởi lặp (redirector driver) có nhiệm vụ dò hỏi hệ thống tệp tin mạng: xem thử loại tệp tin mong muốn có tồn hay không và cái gì xảy các nhiệm vụ tệp tin cục bộ? Do đó, kích tạo phải tạo lại kết nối mạng qua lớp chuyển vận (transport layer) Và vậy, các thông tin trạng thái (thí dụ: tệp tin nào mở ) gởi lặp (redirector) quản lý và thực hình 6.20 trang 242 Sự trợ giúp việc xuất-nhập không đòng đòi hỏi phải có chế riêng lẻ, thì sau thực không đồng nhiệm vụ, tiến trình nhận điều khiển và đánh thức; tiếp đến, hệ điều hành Windows NT sử dụng vùng các tiến trình thread (pool of threads) để thực các thủ tục kết thúc cho gói tin yêu cầu xuất-nhập Bộ gởi lặp phát triển các thông tin mạng nó qua giao diện kích tạo chuyển vận (transport driver interface), mà các kênh chuyển vận mạch áo nó (virtual circuit) thực nhờ hệ thống chuyển vận thiết đặt cho cái đó Lớp máy chủ quản lý tệp tin tạo lập là kích tạo; nó tương thích với các giao thức khối thông điệp máy chủ SMB (server message block protocol) mạng Novell hay các phần mềm điều hành mạng LAN 6.3.5 Vấn đề an toàn Điều rõ ràng là, mạng, an toàn để bảo vệ các tệp tin không có hệ thống tệp tin mạng tự bảo vệ cho mình, mà tất việc kiểm tra an toàn phải tạo lập và thực cách riêng biệt Cái khó khăn là việc kết nối lại với các hệ thống tệp tin với các chế bảo vệ tệp tin và các mức báo vệ tệp tin khác Thí dụ, điều đó gây nên khó khăn cho việc mô các tệp tin có tên dài các server với các hệ điều hành Unix và Windows NT các hệ thống tệp tin mạng với hệ thống tệp tin MS-DOS có tên ngắn (nhiều là ký tự); ngoài ra, các quyền truy cập danh sách điều khiển truy cập ACL access control list) hệ điều hành Windows (212) NT mô vô cùng khó khăn trên các quyền truy cập đơn giản hệ điều hành Unix, vì đó, các kiểu ACL không tồn Sự quá độ hệ thống an toàn này hệ thống khác hệ thống tệp tin mạng thì tạo nhiều bất định và mâu thuẩn Hệ thống an toàn các tệp tin mạng Unix: Ở hệ thống tệp tin mạng hệ điều hành Unix, tất người sử dụng hệ thống dẫn danh sách đặc biệt; công nghệ máy tính, danh sách này gọi là danh bạ mậu dịch hay các trang vàng (yellow papes); tức là nó giống việc người dân dẫn vào các trang sổ điện thoại thành phố Danh sách này quản lý tiến trình đặc biệt, gọi là hệ thống thông tin mạng NIS (network information system); ngoài các trường thông tin tên người sử dụng (user name) và mật lệnh (password), danh sách còn chứa đựng các điền vào chìa khoá mã hành cho việc trao đổi liệu client và server, các nhóm người sử dụng và các chế khác an toàn toàn hệ thống tệp tin mạng Hệ thống các tệp tin mạng sử dụng cho các yêu cầu dịch vụ gọi hệ thống RPC Nếu người ta coi các môđun quyền Unix là giấy chứng an toàn, đó giấy chứng an toàn gọi thủ tục cách quảng RCL chứa đựng hiểu biết truy cập hệ điều hành Unix định ngiã giao diện người sử dụng và định nghĩa giao diện nhóm công tác Nếu hai hệ thống Client và Server có các chế an toàn giống nhau, thì đây có thể tồn các lỗ khuyết an toàn Thí dụ, người quản lý client thì không thể tự động thay đổi các tệp tin người quản lý server, định nghĩa giao diện trên hai hệ thống giống Từ lý này, tất việc dò hỏi trên Server phải quy định cho người quản lý nhóm công tác, phải tuân thủ chế an toàn thông thường Ngoài ra, hệ thống thông tin mạng tạo điều kiện để điều chỉnh tương ứng người sử dụng trên hệ thống tệp tin Server, để cho không xuất cắt ngắn và không ổn định các tệp tin các người sử dụng khác Mặc dù đã có nổ lực khác nhau, hệ thống an toàn cho hệ thống tệp tin mạng còn chứa đựng vài lỗ hỏng Do đó, các yêu cầu tiếp theo, việc dẫn giải đầy đủ trình bày chương An toàn hệ thống tệp tin Windows NT: Các tệp tin Windows NT trình bày mục 4.3; đó, chúng thực thi các danh sách điều khiển truy cập ACL; nhờ đó, các quyền truy cập người sử dụng và nhóm công tác điều chỉnh Những chế an toàn luôn luôn thiết đặt sẵn trên Fileserver Theo đó, người sử dụng có thể mở tệp tin; đó, phải đăng ký vào tệp tin người sử dụng điều hành tài khoản bảo an (security account manager: SAM) trên máy tính Client (213) trên máy tính Server Nếu việc đăng lý có lỗi hay các mật lệnh khoá trên Client và Server không đồng nhất, đó, việc truy cập lên các tệp tin bị từ chối cách nguyên tắc Nhưng mà, lần đăng ký đúng, thì các giới hạn truy câpn danh sách điều khiển truy cập luôn luôn có giá trị hệ thống tệp tin cục Người ta lưu ý, phác thảo này chưa mang lại điều khiển tự động người quản lý Client Server, hai còn sử dụng mật lệnh khác 6.4 Các kiểu làm việc mạng Chúng ta đã biết, các hệ thống đa vi xử lý tạo phân bổ công việc cách dễ dàng nhờ mã thực thi song song và các vi xử lý có cùng kiểu Ngược lại với điều đó, các máy tính mạng, ngườ ta cần phải lưu ý thêm các đề khác sau đây: Việc chuyển đạt các liệu qua mạng cần tiêu tốn thời gian, đó, các đoạn mã có lợi cho việc loại bỏ hai trường hợp không có hay có ít thông tin Nếu việc chuyển dịch mật mã nhằm mục đích cần tới gói thông tin lớn hơn, đó, chi phí và suất có quan hệ mật thiết với Hầu hết các mạng máy tính tạo lập từ các máy tính không đồng các nhà sản xuất khác và các hệ điều hành khác Do đó, chương trình thực thi trên máy tính thì không phải thực thi trên tất các máy tính khác mạng Qua đó, người ta nhận thấy: hệ thống điều hành Job phải giải thoả đáng các vấn đề đã nêu trên; vì hệ thống này không phải là các máy tính đơn mà nó là mạng các máy tính 6.4.1 Điều hành Job (Job management) Ngày nay, công nghệ máy tính có hệ thống điều hành Job khác (xem mục2.2), mà chúng cho phép sử dụng thời gian nhàn rỗi tập hợp các máy trạm Loại hệ thống này sử dụng nhiều lĩnh vực nghiên cứu và phát triển đó cần dùng tới máy tính siêu hạng Những yêu cầu hệ thống các phương tiện dùng chung tải (load sharing facility system) thì bao gồm điểm chính sau đây: Việc phân bổ tải tất các loại Job và các cấp công suất cần phải thuyên chuyển qua lại Đối với các yêu cầu khác phương tiện điều hành thời gian tính toán và nhu cầu nhớ, thì các hành đợi tập trung khác cần thiết dẫn Thời gian thực Job cần thiết phải tối ưu (214) Các quyền các chương trình cần phải điều hành cách thấu suốt Mặc dù có tải bổ sung, việc quản lý các trạm máy (workstations) phải không có biến động xảy Trong việc liên kết tải, các máy trạm phải sắn sàng phục vụ với khả cao nhất, dù là ban đêm, ngày cuối tuần hay ngày lễ Cấu hình chung phải rõ ràng và việc quản lý phải thuận lợi Thực yêu cầu này không phải đơn giản, vì hệ thống điều hành Job không gây ảnh hưởng lên tất các nhân tố Tuy nhiên, nó có thể đơn giản hoá việc quản lý hệ thống giao diện người sử dụng tốt và các chế cấu hình đơn giản; nó có thể sử dụng nhiều liền vào ngày lễ nhờ việc xử lý theo đợt (batch processing) và nó có thể di chuyển Job trên các máy tính thông qua việc trao đổi thống tin mạng; nhiên, việc thu xếp các Job trên các máy tính thì không phải tuỳ tiện Do đó, người ta không lưu ý tới các vấn đề nhu cầu nhớ, kiểu vi xử lý, kiểu hệ điều hành và nhu cầu ổ đĩa cục các tệp tin; người ta còn lưu ý tới quyền số chương trình Mà chúng kết nối với các máy tính các định (gọi là kiểu khoá nut: node locking) số lượng xác định các máy tính nhóm có thể thực đồng thời (gọi là kiểu quyền nổi: floating license) Sự ưu tiên các Job phải lựa chọn cho người sử dụng máy tính thực thụ luôn luôn có bước trước và vì thế, sử dụng máy tính này, không cần phải lưu ý gì 6.4.2 Máy tính mạng hai chức (netcomputer) Một phát thảo đầy đủ khác các hệ thống mạng phân bổ, đó là phát thảo máy tính mạng các công ty máy tính nôi tiếng phát triển (Oracle, Sun, IBM, Apple ) Nếu máy tính bình thường tự chứa đựng tất các thành phần hệ điều hành để có thể làm việc với các ổ đĩa, máy in cách tự chủ; đó, các hệ thống với hệ điều hành phân bổ, các chức hệ điều hành khác giống các dịch vụ chuyên dụng (như dịch vụ file, dịch vụ tiến trình ) nạp lên máy tính, chuyên môn hoá Bản phác thảo máy tính vừa làm hai nhiệm vụ Client/Server này hệ điều hành phân bổ vận hành mạnh mẽ các máy tính mạng Ngoài nhớ chính, vi xử lý, card kết nối mạng và màn hình, máy tính này không còn chứa đựng gì thêm Cũng các phần mềm hệ điều hành (bao gồm các chương trình dịch vụ, nhân hệ điều hành ), máy tính mạng hai chức này, chúng thu gọn thành vi nhân (microkernel); vi nhân là nhân hệ điều hành thu tóm từ các lớp kết nối mạng các chức nạp chương trình Tất các chương trình nằm trên ổ đĩa cứng cục và dẫn tới từ mạng Và giống chức hệ điều hành, máy tính này, vi nhân có thể nạp cho tải tự khởi động ROM đóng nguồn điện (215) cho máy mạng Tất dung lượng lưu trữ các tệp tin, các dịch vụ in ấn đảm nhiệm dịch vụ chuyên dụng Đối lập với mạng các máy tính dùng, việc điều hành vi nhân mang lại cho chúng ta ưu điểm sau đây: Các tệp tin thực thi: Nhờ việc quản lý tập trung các liệu sử dụng, các tệp tin này thì luôn luôn thực thi ổn định Đồng thời, chúng quan hệ với các thành phần hệ điều hành (mà các thành phần này đã nạp vào mạng kích tạo, các chương trình dịch vụ ), với các chương trình và các tệp tin người sử dụng Các phần cứng lẻ tiền hơn: Máy tính mạng hiai chức thường sử dụng ít phần cứng hơn, vì các thành phần hệ điều hành xác định và không gian ổ đĩa cục loại bỏ các chương trình dịch vụ Điều đó làm cho máy mạng này lẻ mua sắm Việc quản lý tốn kém hơn: Việc chăm sóc các phần mềm hệ thống, việc chuyển giao quyền và cấu hình các máy mạng hai chức thực và chăm sóc lần Điều đó cho thấy, việc quản lý máy mạng hai chức đem lại hao tốn ít hơn, tức là điều đó đã đem lại cái gì đó không phải là không đáng kể: Người ta tính toàn chi phí năm cho việc chăm sóc bảo dưỡng cho phần mềm và cấu hành hệ thống cho máy tính đúng trị giá mua sắm thiết bị đó Ngoài ra, việc sửa chữa các phần cứng đơn giản hơn, vì các thành phần máy tính có thể trao đổi cách tuỳ ý Tất các tệp tin và các giao diện người sử dụng nằm trên máy tính trung tâm và không bị đánh An toàn liệu cao hơn: Nhờ việc đảm bảo liệu tập trung, máy bị sụp, công việc nhân viên khác mạng tiến hành tiếp tục Kể việc đánh cắp thông tin đảm bảo nhờ cấu ngoại vi Sử dụng tốt các nguồn tài nguyên Bên cạnh việc sử dụng tốt các máy in, các thiết bị FAX, người ta có thể đạt nhờ các kết nối mạng; thật vậy, máy tính mạng hai chức năng, người ta có thể sử dụng cách tốt các nhớ quảng đại (ổ đĩa cứng, ổ đĩa mềm, băng từ ), vì chúng tồn vùng quản lý tập trung Ngoài ra, việc mở rộng cần thiết máy tính này có thể định hướng tốt tới nhu cầu mong muốn (216) Tuy nhiên, phát thảo này còn tồn định Sau đây, chúng ta phân tích thêm vài điểm để thấy rõ phạm vi sử dụng nó tương lai: Chi phí mạng có gia tăng: Nếu tất các trình tiện dụng chạy trên mạng, đó, mạng nội hạt (intranet) và các dịch vụ sử dụng làm gia tăng đáng kể công suất nó (lưu lượng thông tin, dung lượng nhớ ) Tức là phải tăng chi phí thêm cho cái đó Chi phí đệm có gia tăng: Ở loại máy tính này, ngừơi ta còn thay các phần cứng (như nhớ chính, nhớ quảng đại) để lưu trữ các liệu hay các chương trình lớn để có thời gian nạp và tải mạng nhanh hơn, điều này cần thiết các thiết bị đầu cuối hệ điều hành Unix; và đó, lợi giá loại này không thể giảm nhhiều Chi phí người sử dụng có gia tăng: Do việc quản lý tập trung các phần mềm và việc điều hành các phần cứng Trung tâm EDV, người sử dụng cảm thâyd phải trả thêm chi phí thời gian sử dụng trên mạng: Vì có trung tâm định, chương trình này có thể sử dụng và khoảng bao nhiêu không gian nhớ phân bổ cho riêng chương trình? Khoảng thời gian này, trung tân tính bảng toán hàng tháng Cho đến (1999) đón nhận loại máy tính mạng hai chức này chưa dùng phổ biến; tương lai, nó là hệ thống dùng động lĩnh vực đời sống người Một điều quan trọng máy tính mạng hai chức là nó cho phép chỗ làm việc có cấu hành riêng lẻ; nhờ việc quản lý tập trung cácn chương trình chuẩn (standarprogramms) mà hầu hết vấn đề cấu hình loại trừ chỗ làm việc và nó quan tâm đầy đủ các tệp tin cần thiết Do đó, có thể phân biệt chúng thành loại vấn đề: Thực thi tập trung: Một cách tổng quát, người điều hành mangnj có quyền hạn thay đổi cách tích cực cấu hình máy tính nối mạng Điều này đòi hỏi hiểu biết tối thiểu thay đói này, thí dụ, phải nắm rõ các liệu cần thiết cho máy tính riêng biệt Tuy nhiên, hệ thống mạng không đồng với các phần cứng và phần mềm khác là trở ngại lớn người sử dụng (217) Thực thi phân tán: Vì lý vừa nêu, bên cạnh các chương trình đặc biệt và các khả dịch vụ tiêu chuẩn mình, các máy tính làm việc riêng lẻ (trong mangnj) có thể chứa đựng thêm phần hệ thống tệp tin mà không làm ảnh hưởng tới người sử dụng; phần này đựoc hiệu chuân cách đặn cấu hình các trữ lượng liệu hay nhiều dịch vụ chuyên dụng mạng Nếu trữ lượng các tệp tin cần thiết và các dich vụ (dịch vụ chương trình, dịch vụ đối tượng ) gắn cách sáng tạo vào các công cụ máy tình Như vậy, máy tính này làm việc là máy tính mạng hai chức năng; vì, nó có các thành phần hệ điều hành và các chương trình tiện dụng cần thiết đệm Cache nhờ giảm thời gian truy cập Do đó, tiến trình đại diện việc thực thi phải có chức cảnh giới và chức này đựơc tồn trên Cache (xem mục 3.5) Phạm vi ứng dụng ngôn ngư JAVA: Vấn đề sáng tỏ phác thảo máy mạng hai chức năng-đó là không tương thích các phần cứng và phần mềm các máy tính khác các nhà sản xuất khác Để giải vấn đề này, ngôn ngữ lập trình thống sử dụng, gọi là ngôn ngữ lập trình JAVA Đó là ngôn ngữ lập trình hướng đối tượng, là sản phẩm phần mềm hãng máy tính SUN (1997) Về mặt cú pháp, ngôn ngữ này tương tự ngôn ngữ lập trình C++; nhưng, nó có đơn giản vì không cần thị (pointer), không viết chồng nhiều lần và thiết kế giao diện tốt Khi thực chương trình, các máy mạng trợ giúp kết các lệnh máy tính ảo; máy ảo này gọi là máy ảo JAVA Nhiệm vụ vi xử lý máy mạng hai chức (cũng các thiết bị khác cần thực mã JAVA) là để quy mô phóng máy ảo này Khi đó, nhiệm vụ hệ điều hành máy mạng này bao gồm việc thiết lập vùng diễn biến các chương trình JAVA nạp trên mạng Sau đây là vài đặc điểm đặc biệt cần lưu ý: Việc quản lý nhớ chính đựơc thực cách tự động để dành không gian nhớ cho các đối tượng thực việc dẫn đường loại bỏ các đối tượng không sử dụng gọi là sưu tập rác (garbarge collection) Thực việc cách ly các chương trình chạy đồng thời với hay với hệ thống còn lại Để tạo điều kiện cho việc thực thi nhanh chóng và đơn giản, JAVA, không có thị (pointer) địa chỉ, và đó, có khả hoạt động các chương trình mạng và các ứng dụng trên máy tình bị hạn chế Sự thông dịch các mãByte máy ảo JAVA không mô tả trực tiếp Đặc biệt, các kiểu liệu JAVA phải đựơc phù hợp với chiều dài máy tính đích Việc thiết lập các chức tiêu chuẩn đồ hoạ hay việc xuấtnhập thì có thể cho phép chương trình mạng hay các chương trình tiện (218) dụng Một cách phổ dụng, các chương trình mạng không truy cập lên các ổ đĩa cục hay máy in Sự cần thiết ngôn ngữ lập trình đơn giản và an toàn mạng máy tính đã dẫn tới việc hoàn thiện các ứng dụng các hệ thống siêu text trên trang WEB mạng internet Chức trang text đơn giản không đem lại đựoc nhiều mời chào Để luôn luôn gia tăng các chức các chương trình mô tả siêu text (WEB browser), điều tốt là, nạp trực tiếp mã chức đặc biệt người yêu cầu, hay thực cách cục nhờ trình thông dịch JAVA tích hợp chương trình WEB browser Mã JAVA thực yêu cầu này nhờ đặc điểm lệnh máy đã thiết đặt theo tiêu chuẩn và nhờ thư viện thời gian chạy đã thực cách linh hoạt các chức chúng, tức là, các giao thức và các chức có thể tạo lập nhờ việc nạp các chương trình JAVA hoàn hảo (content handlers), mà không cần viết trình đọc lướt browser Nhược điểm phương pháp này là chỗ, không có nhiệm vụ nào to tát có thể làm hoàn hảo vì lý điều kiện giới hạn ứng dụng Xuất phát từ lý an toàn, việc truy cập các tệp tin các tệp tin tạm thời và các nguồn tài nguyên cục khác thì không phép, và đó, các ứng dụng giới hạn trên phạm vi nó không có các chức trợ giúp trình browser 6.5.Các chế an toàn và các thao tác trên mạng Những câu hỏi an toàn các hệ thống máy tính không phải là vấn đề kỷ thuật mà là vấn đề người Một máy tính hoạt động không có thiết bị an toàn thì mặt kỹ thuật không có vấn đề gì Nhưng nếu, máy tính chưa đựoc làm cô lập và lại điều khiển người sử dụng ít chuyên môn, đặt biệt, mạng máy tính phân bổ có nhiều người sử dụng đăng ký là khách (tức không biết rõ địa nó), đó, vấn đề an toàn cần đàm luận và cần phải tính tới Một các nhiêmh vụ quan trọng việc quản lý hệ thống là bao gồm việc nắm vững các hệ thống này, việc chi dùng thời gian và tiền bạc, nhằm nâng cao chúng hay tối thiểu để lựa chọn biện pháp thích hợp Những xoay chuyển cần thiết đã đụng chạm tới các chế an toàn hệ điều hành Từ lý đã nêu, mục này, chúng ta đề cập tới cố có thể xảy và biện pháp khắc phục 6.5.1 Lịch sử cận đại an toàn trên mạng máy tính Từ sau tháng 11 năm 1988, chương trình (làm nhiệm vụ tái tạo) nạp phần lớn các máy tính kết nối mạng internet hệ điều hành Unix trường đại học Carnergie-Mellon (Mỹ); đó, nhóm đáp ứng khẩn cấp CERT (conputer emergency response team) thành lập; nhóm này thực nghiệm cách hệ (219) thống để phát hiện, cung cấp các tài liệu khảo cứu và trừng sai sót an toàn hệ thống máy tính tính năm 1997, nhóm CERT đã tổng kết có khoảng 4.000 vụ tử nghiêmh bẻ khoá đột nhập, với khoảng 30.000 đến 40.000 người công (hacker); người nhóm này luôn luôn phát sai sót an toàn các hệ thống, họ làm điều đó nhanh người quản lý hệ thống muốn có thể trừng chúng Tuy chiên, Hội đồng nghiên cứu quốc gia Mỹ đưa nhwnj định: “Bọn kẻ cắp hiệnđại máy tính, chúng có thể ăn cắp nhiều các vũ khí lợi hại khác” Hội đống này còn cảnh cáo: “Kẻ khúng bố ngày mai không đặt nhiều bom, mà chúng ấn nút bàn phím và nó tạo vô vàn thiệt hại” Cho đến nay, công việc làm đựơc ít để có thể kiến trúc hệ thống máy tính an toàn Trong quan hệ với cải đó, điều cần đựoc quan tâm là, Bộ quốc phòng Mỹ đã điều hành các nhóm công tác để chuẩn bị tiến hành chiến trnah hạn chế tổn thất lớn hệ thống máy tính kẻ thù gây nên Điều đó, không có nghĩa bao vây các vụ ăn trộm bẻ khoá mật lệnh máy tính kết nối mạng với việc lôi kéo hay tẩy bỏ các tệp tin quan trọng, đặc biệt, còn bao vây các vụ khống chế phần cứng các máy tính mạng Thí dụ, nhờ việc thực lặp các định hướng xác định, bọn chúng có thể hun nóng các thành phần xác định vi xử lý Dự đoán cho công này trên các hệ thống máy tính là xâm nhập vào các liệu máy tính nối mạng Điều này có thể xảy trên nhiều phương cách khác nhau, sau đây chúng ta đề cập tới vấn đề này 6.5.2 Đột nhập qua mạng Một các khả dễ dàng để đột nhập vào các mạng máy tính là việc sử dụng máy tính qua mạng, thí dụ, chương trình chạy trên mạng điện thoại thông thường Telnet Để dẫn tới việc điều khiển lối vào mạng qua mật lệnh (password), vấn đề này đựoc các tên trộm giải các phương pháp khác sau: Giải mật lệnh (password guessing): Một các kiểu lỗi đựơc dẫn tới là việc không đựơc thay đổi các mật lệnh chuẩn (standardpassword) nhà sản xuất hệ đìều hành công việc quản lý hệ thống; vì nếu, mật lệnh bị quên thì phải đọc lại hướng dẫn dài dòng Nếu các mật lệnh đã trở nên phổ biến, thì điều chẳng có gì lạ, từ bên ngoài kẻ trộm dễ dàng xâm nhập vào hệ thống Một lỗi người sử dụng hợp pháp thường hay xảy ra, đó là việc sử dụng từ thông thường để làm mật lệnh (như tên người, tên thành phố, tên quốc gia hay loại cây cối, loại động vật ) Nếu mật lệnh khoá tệp tin có thể đọc dễ dàng (thí dụ các hệ thống Unix với mật lệnh /etd/passwd) đó, du (220) khách quỷ quái (tìm cách đăng ký vào mục guest dành cho khách nhập) có thể chép tệp tin, và với chế khoá mật lệnh, ta có thể bẻ khóa các điền vào sổ từ (nếu cần 250.000 lần điền vào và giả sử miligiây cho lần điền vào, thì công việc bẻ khoá cần khoảng hoăn phút!) Ngoài ra, số phòng ngủ hay số điện thoại dùng làm mật lệnh giải cách dễ dàng Những phương tiện đối phó dùng các mật lệnh không có quy luật, phương pháp cưỡng hay ngẫu nhiên không trợ giúp đựoc; vì người sử dụng quên hay viết chúng vào trang cuối sổ ghi chép thì có thể thấy rõ ràng dẫn tới thất lạc Ngay việc thay đổi thường xuyên đặn mật lậnh không trợ giúp mấy; có người sử dụng phải phòng chống cách luyện tập thường xuyên mật lệnh và đánh lừa hệ thống là dùng mật lệnh cũ Một khả để loại trừ mật lệnh quá đơn giản, đó là nhập vào, ngườ sử dụng phải kiểm tra mật lệnh mới, liệu nó có bị giải cách dễ dàng không? Dò thám mật lệnh (passwordspying): Nếu có kẻ đột nhập giành điều khiển qua máy tính chuyển giao mạng, đó, có thể theo dõi và ghi chép việc vận chuyển thông tin người sử dụng hợp pháp truy cập vào mạng Do đó, sau đó ta có thể truy cập vào, mật lệnh người sử dụng đã bị ta giải Ở đây, có thể có trợ giúp tốt, đó là tạo nên mật lệnh người sử dụng đã khoá lệ thuộc theo thời gian, giả, tạo nên giao thức an toàn các máy tính người sử dụng và các máy tính mangnj và các tham số này phải luôn luôn thay đổi Quấy phá các dịch vụ mạng (netservice interference): Qua câu chuyện thần thoại Hy Lạp ngựa thành Tơ-roa, chúng ta nhận biết rằng, thành Tơ-roa không bị kẻ giặc xâm chiếm là nhờ chế ngự các thành luỹ vững nó và đặc biệt nhờ người dân thành Tơ-roa mưu trí; vì vậy, đêm tối, ngựa gỗ nghi binh, họ đã đánh cho bọn xâm lược đòn tơi bời thành Nói chính xác, chiến lược mà người dân thành Tơ-roa dùng để đánh bại kẻ xâm lược chúng đột nhập vào thành giống chiến lược chống bọn quấy phá hệ thống mạng máy tính thật vậy, các khiếm khuyết tồn các dịch vụ mạng đã dùng để điều hành chương trình đơn lẻ máy tính Ở mạng máy tính có nhiều kiểu khiếm khuyết tồn các dịch vụ sau đây: Các chương trinh thư điện tử (e-mail programm): Một thông điệp gởi người lạ có thể chứa đựng tất cả, kể các ký tự trống; điều này thường không biểu lộ nội dung text; mà đặc biệt, tạo thời cho thiết bị đầu cuối để nạp các lệnh chưc bàn phím (221) Nếu điều đó xảy đến người quản lý hệ thống (super user) hệ điều hành Unix, đó, lần khởi động nút ấn chức năng, các lệnh gởi với hiệu lực lệnh super user Nếu lệnh cuối cùng xoá dòng hồi âm và xoá che phủ nút chức năng; vậy, người quản lý hệ thống không nhận biết hướng dẫn đã phân phát; thí dụ quyền truy cập xác định đã bị thau đổi; tức là sau đó, có kẻ đột nhập đóng vai trò người khách có thể thao tác các tệp tin này mà không có gì ngăn cản đựơc Một biện pháp đối phó với cái đó là, phải lọc cách triệt để tất các ký tự trống các liệu e-mail Các dịch vụ trang WEB: Các trình đọc lượt browser hệ thống siêu text trang WEB hầu hết sử dụng các chương trình trợ giúp khác nhau, để thực các dịch vụ đặc biệt Thí dụ cho cái đó là các chương trình đêmô âm và hình ảnh cho các khuôn khổ tệp tin khác Nếu có tệp tin tái bút (postscript-file) tồn mạng và người sử dụng muốn nhìn thấy nó, đó, tệp tin nạp lên mặng và trao quyền cho chương trình đặc biệt ghostview, chương trình mô tả bài text chứa đựng cái đó và hình ảnh lên màn hình Đáng tiếc, tái bút này không là ngôn ngữ mô tả trang, mà còn là ngôn ngữ lập trình; đó, nó có thể chứa đựng chương trình khả thi, và cho nên chúng thực thi trình ghostview thư mục người sử dụng mà không cần biết gì thêm chúng Tính chất này người ta đưa vào cấu hình hệ thống nó còn là mối lo ngại và người quản lý hệ thống nắm vững các tài liệu khảo cứu Một khả xâm nhập khác nhóm Action-X-Technologie hàng Microsoft đề cập Theo nhóm này, các đối tượng mạp vào mặng có chứa đựng mã và nhờ chúng có thể truy cập lên máy tính Các dịch vụ chuyển vận tệp tin FTP: Trên máy tính kết nối vào mạng có tồn dich vụ chuyển vận tệp tin fftp; dịch vụ này có thể gọi từ bên ngoài Cái đó có thể chiếm giữ là điểm lèo vào Khi đó tiến trình ftp trên máy tính thực có ít quyền hạn Tuy nhiên, các quyền hạn đựoc điều chỉnh sai hay các quyền truy cập các tệp tin các người sử dụng khác bị thiết đặt sai; đó, ke công từ bên ngoài có thể chép các tệp tin chủ lực tệp tin mật lệnh đăng ký vào máy tính, và vì thế, ta có thể thực công rộng Từ lý này, thực tế tiến trình ftp không có quyền hạn truy cập nào và điều kiện hoạt động nó phải bị giới hạn trên cây thư mục (với các tệp tin bị chúng chặt nhỏ cách chính xác) 6.5.3 Việc đảm nhận điều khiển trên máy tính: Nếu có kẻ đột nhập đã tìm lần đầu tiên lối dẫn vào hệ thống máy tính; đó, ta có thể thử nghiêmh nhiều cách khác để đạt quyền (222) quản lý hệ thống mạng máy tính Ngay các máy tính có hệ điều hành Unix chưa thông thạo các quyền quản lý mạng; việc đảm nhận chương trình hệ thống quan trọng thì có ý nghĩa việc đảm nhận điều khiển chung qua máy tính Bấy giờ, nó có điều kiện nào để đạt trạng thái người sử dụng bình thường các quyền quản lý mạng? Thuộc cái đó, có nhiều phương pháp khác nhau; các phương pháp này sử dụng điểm chủ yếu sau đây: Quyền truy cập hệ thống tệp tin: Nếu các quyền hạn đọc/viết các tệp tin hệ thống đặt sai vị trí; đó, kẻ đột nhập có thể dễ dàng sử dụng các tệp tin Thí dụ vê đường dẫn lệnh: Nói chung, các lệnh Unix che đậy; đó, người ta có thể tìm kiếm các vị trí khác thư mục các tệp tin khả thi với tên lệnh nó tìm thấy; đó chính là chương trình đựơc thực thi Dãy các vị trí thì nạp vào chuỗi ký tự với tên đường dẫn nó Nếu người ta muốn cho lệnh cmd thực hiện, đó, người ta phải tìm kiếm theo các đường dẫn /bin/cmd, /usr/bin/cmd, usr/local/bin/cmd và /cmd Nếu người có các quyền truy cập trên các thư mục cây thư mục, đó, có thể điều chỉnh ấn lênh chính thức đó, thí dụ ấn các lệnh rlogin, si hay ls để hiển thị các tệp tin Bấy giờ, người ta thực chương trình vậy, đó, nó có thể cung cấp các kết mong muốn và có thể nạp bổ sung thêm (với các lệnh rlogin và su) các mật lệnh tệp tin kẻ đột nhập (thí dụ chiến lược giữ thành Tơroa nói trên) Một chương trình đăng ký vào mạng login có thể nghĩ tới, đó là việc nhận biết mật lệnh chuẩn kẻ đột nhập mà không cần biết ta có mời hay không Quyền truy cập các chương trình hệ thống: Có nhiều chương trình dịch vụ các công việc hệ điều hành có cấc quyền hạn rộng rãi Thí dụ, trình soạn thảo phải đọc/viết trên tất các tệp tin người sử dụng; chương trình thư điện tử e-mail phải phép viết các tệp tin thư điện tử cho tất các người sử dụng hộp thư họ và kiểm tra trạng thái tiến trình có thể truy cập trên các bảng nhân hệ điều hành Nếu nó đòi hỏi sử dụng các hoạt động chương trình hệ thống, thì điều đó tác động là công việc đã dự định, đó, kẻ công co cum hệ thống Thí dụ lỗi Emacs: (223) Emacs là trình soạn thảo e-mail thông thường Trong trình soạn thảo này, người ta có thể viết e-mail vào thư mục (với cửa sổ movemail) Tuy nhiên, trình Editor này đã không kiểm tra xem, liệu thư mục đích đã thuộc người sử dụng hành chưa (?), và đó, đã tạo điều kiện viết đè các tệp tin hệ thống khác Điều này đã là các kẻ hở để kẻ công người Đức sử dụng và xâm nhập vào các nhiệm vụ bảo vệ an ninh các máy tính quân Mỹ và nghiên cứu các bí mật quân (1988) Về vấn đề này, ấn các chương trình hệ thống tạo lập chưa giải hoàn chính Các gói thông tin dạng COPS CERT đã cho hệ điều hành Unix nhiệm vụ an toàn quyền truy cập và điểm yếu khác các mật lênh quá đơn giản, các mật lệnh không có hiệu lực hay còn chứa đựng các lỗi Những thông tin tìm thấy SAT 1997 các công cụ đối phó Santan, DFN 1997 các miếng vá an toàn (safe patches) Tạo Virus Một kiểu công quấy phá hệ thống khác nói tới, nó không thực tay mà chương trình để tạo virus Nếu có khả nào đó mà nó chứa đựng các chương trình gọi là “bẻ khoá ăn trộm”, đó, chương trình này có thể lan truyền “một bệnh” từ máy tính này tới máy tính khác Ngoài ra, nó còn sử dụng số lượng lớn các chương trình khác (thí dụ các chương trình hệ thống, các chương trình mạng ) đóng vai trò kẻ chuyển giao bệnh, vì vậy, kiểu các chương trình này gọi là virus Có nhiều loại virus khác nhay Các Virus lây lan các hệ thống MS-DOS (khoảng 80%) là loại virus di cư các chương trình khởi động (bootstrap), chúng hoạt động hệ thống khởi động, gọi là virus khởi động (bootstrapvirus) Về nguyên tắc, loại này truyền qua đĩa mềm, thường nhiễm vào các sector khởi động (sector số đĩa mềm) và tiếp tục truyền lan sang ổ đĩa cứng Từ lý này, các cấu hình bootstrap (BIOS-EPROM) tạo cho người chủ sơe hữu phương tiện phương pháp ngăn hãm việc mô tả sector số ổ đĩa cứng Một kiểu virus tồn máy tính, nó không truyền đường khởi động đĩa mềm (thí dụ các máy tính với hệ điều hành Unix), mà nó lây lan qua các tệp tin thực thi người sử dung Khi đó, virus hợp gộp phận mã kết thúc chương trình, phận này chứa đựng virus Hình 6.21 nguyên tắc tạo virus theo kiểu này Hình 6.21 trang 255 Virus chốt lại dãy khởi động, để khởi động, nó thực trước nhất, đó, nó dẫn tới quá trình làm việc mập mờ, đồng thời nó cúng còn gây ảnh hưởng tới việc điều khiển chương trình góc Trong quá trình ấy, (224) người sử dụng không nhận biết cái gì các công việc khác nhau, chính virus đã gây nên cái đó cho hoạt động chương trình Nếu virus lây lan lên hệ thống tệp tin chậm chạp và đặn, đó, người ta có thể nói rằng, không cái gì có thể nhận biết điều đó Loại virus thứ ba thường tồn các thủ tục; các thủ tục này pha trộn thêm đối tượng, mà người sử dụng không nhận biết điều đó Một thí dụ tượng trưng cho cái đó là các tệp tin text; các tệp tin này nạp thêm các chức phù hợp với định nghĩa người sử dụng, thí dụ các chức viết ngôn ngữ bậc cao (không phụ thuộc vào phần cứng), gọi là ngôn ngữ Macro trình soạn thảo Word Microsoft Nếu người ta nhận tệp tin viết trên Word từ máy tính bên ngoài, đó, nó có thể chứa đựng virus viết ngôn ngữ Macro, gọi là Macrovirus; nội dung bài text, người ta không nhìn thấy virus này Khác với loại vius nói trên, loại virus này không khởi động trực tiếp với chương trình chủ; đặc biệt, nó xuất nạp các liệu Nhờ độc lập nó với phạm vi hệ điều hành và phạm vi máy tính, mà Macrvirus là loại lây lan và di truyền mạnh mẽ Những tệp tin text chưa quen biết, đầu tiên, phải thu gom lại trình quét virus (virusscan) lên các chức quen biết và tiếp đến việc dời chúng khỏi tệp tin Phát virus: Điều kiện để phát virus là phải tạo tổng ngang, gọi là tổng kiểm tra tất các tệp tin có thể thực thi và phải nạp chúng vào các tệp tin đặc biệt Nếu khuôn dạng tệp tin tổng kiểm tra đặn các tổng ngang có thể dẫn tới việc phát virus Để phát virus còn có phương pháp khác, đó là phương pháp tạo lập tệp tin trắc nghiệm định nghĩa chính xác và phải kiểm tra thường xuyên Nếu chúng bị virus làm thay đổi, đó, người ta không thể khẳng định có tồn virus không (!), đó, người ta có thể tách chia mã và có thể tìm kiếm virus hệ thống máy tính và tẩy xoá chúng Diệt virus: Phương cách có khả diệt virus là phải đảm bảo yên tĩnh (don’t panic) Nếu chúng ta có máy tính PC, đó, chiến lược diệt virus nêu sau: Trước hết chúng ta phải có đĩa mềm hệ thống kèm theo chương trình chông virus hữu hiệu, mà chương trình này nhận biết nghi vấn có virus; thì người ta đạt việc trừng virus máy, và diệt virus khỏi nhớ chính Sau đó bật điện và khởi động hệ thống, cho chạy lại chương trình diệt virus, đó, nhớ ổ đĩa cứng hoàn toàn Nếu chương trình tìm kiếm virus không tìm thấy virus chúng ta hoàn toàn không có chương trình diệt virus thích ứng, đó, chúng ta phải tiến hành phương cách khác Đầu tiên, tất các chương trình khả thi người sử (225) dụng không cần thiết xoá Sau đó, chuỗi logic các biện pháp hữu hiệu, chúng ta phải thay tất các chương trình hệ thống Thuộc cái đó, chúng ta khới động hệ thống với hệ điều hành và tạo lập tất các chương trình hệ thống quan trọng Tiếp đến chúng ta sử dụng các chương trình gốc đĩa mềm hệ thống (cũng các phương tiện tiện dụng gốc copy lại), tất trở lại trước đây Cuối cùng, tất các chương trình người sử dụng biên dịch phục hồi lại Với hệ thống máy tính lớn, thì thật tiếc, người ta không thể tiến hành theo cách vừa nêu, vì việc điều hành hệ thống còn tiếp diễn Ở đây, với chương trình scaner trợ giúp, chương trình này kiểm tra virus cách hệ thống tất các chương trình có nghi vấn và đồng thời diệt virus Tuy nhiên, kết phương pháp vừa nêu chưa hoàn thiện: Nếu chương trình diệt virus chạy chậm quá trình diệt virus lây lan, thì không kết nào dẫn tới Khi đó, người ta có thể viết cách có phân tích chương trình chống virus đặc biệt để phòng thủ cách sinh động Phòng ngừa virus: Trước hết, chúng ta khảo cứu các tệp tin mã nguồn (quellcode files) với các hoạt động virus; và tiếp đến, chúng ta biên dịch (compile) các chương trình hệ thống là các chương trình sử dụng cách mẽ Nếu chúng ta nói rằng, không còn virus hệ thống (!), thì điều đó chẳng có (!) Theo K.Thompson, ông là người cha đẻ hệ điều hành Unix, cho (1984), virus có thể tụ lại lâu dài, thì mã thực thi trình biên dịch bị nhiễm bệnh Mã này phân biệt thành hai trường hợp: Trường hợp thứ xuất chương trình logic biên dịch Khi đó mã bị bệnh hợp lại và người sử dụng thả vào chương trình hướng đối tượng đến cái tên xác định Trường hợp thứ hai xuất trình biên dịch từ mã nguồn cách mẽ; vậy, mã bị bệnh tụ họp lại mã trình biên dịch Với chu trình này, virus tồn mà ngừơi sử dụng không thể đọc thấy; nó có thể len lỏi hệ thống; biên dịch với text nguồn các chương trình Cho nên, mục đích là phải kiến tạo lại cho các tệp tin nhị phân Hệ thống chương trình tái phục hồi nói trên thực hoàn toàn không đơn giản, có thể làm Người ta thử nghiệm lần cách viết chương trình nhỏ khoảng vài dòng, mà chương trình này biểu lộ text nguồn chạy (không phải mở tệp tin nguồn) Dưới đây, người ta nói tới chế an toàn các hệ điều hành Unix và Windows Sự nhận dạng Unix: (226) Việc điều khiển đăng ký vào mạng hệ điều hành Unix dẫn với tên người sử dụng và mật lệnh cá nhân ngừơi sử dụng Hình 6.22 quá trình logic người sử dụng hình 6.22 trang 258 Cũng mục 4.3.1 đã mô tả, đây, người sử dụng thu xếp nhận dạng người sử dụng uid và nhận dạng nhóm công tác gid; tệp tin, các quyền truy cập định nhhĩa cho các nhận dạng này Ngoài ra, các nhận dạng này tồn mật lệnh để khoá vào tên người sử dung (chúng tách biệt “:”) tệp tin/etc/passwd; điền vào chúng dẫn thí dụ sau: Brause:ntkgblickh3j:105:12:&Brause:/user/user2/NIPS:/bin/csh Dòng lệnh trên giải thích sau: brause là tên người sử dụng ntkgblickh3j là mật lệnh; 105 là nhận dạng người sử dụng uid 12 là nhận dạng nhóm công tác gid; &Brause là tên người sử dụng; :/user/user2/NIPS là thư mục hành người sử dụng; /bin/csh là tên tiến trình khởi động shell Tên nhóm định nghĩa tệp tin /etc/group, thí dụ: Staff::12:boris,peter,brause Dòng lệnh trên giải thích: staff là tên nhóm; là mật lệnh (để khoá) nhóm; 12 là nhận dạng nhóm; boris, peter, brause là tên người sử dụng tạo lập cùng với nhóm Ở đây cần lưu ý, người sử dụng có thể tồn đồng thời các nhóm công tác khác Phân quyền Unix: Mỗi tiến trình Unix có hai quyền hạn truy cập khác nhau: quyền truy cập người tạo lập, gọi là quyền có thực ruid và rgid; và đó, các quyền này người sử dụng thì giống các quyền hiệu nghiệm euid và egid Nếu chương trình thực hiện, mà nó tạo người sử dụng hay nhóm công tác; đo, các dẫn tệp tin không cần phải lưu y,nó thay các phép gán euid:=ruid egid:=rgid Nếu chương trình tạo người quản lý(super user), đó, thuộc chương trình, còn có các quyền truy cập người sử dụng (227) Những chương trình các chương trình e-mails phải viết lên các tệp tin người sử dụng khác Để trao cho chương trình các quyền hạn mạnh mẽ thư mục root; bây giờ, người ta có thể nhận thấy tệp tin rằng, các quyền hạn truy cập chúng(uid và gid) chuyển tới trên tiến trình (tức trên euid và egid) và không cần phải lưu ý tới các lệnh ruid và rgid (tức thay các thuộc tính set user id và set group id) Nhận dạng mạng Unix: Ở các mạng cục với điều hành Unix, người ta có thể điền vào máy tính với lệnh rlogin ( romote login) hay rsh (remote shell) Để phòng ngừa, người ta phải luôn luôn thay đổi mật lệnh; đó, trên máy tính có tệp tin etc/hosts.equiv tồn tại; đó, tất các máy tính nhận biết điều đó; vì vậy, tạo nên tin cậy Nếu người sử dụng hệ thống láng giềng đăng kí vào; điều đó rõ, mật lệnh sẵn sàng đọc chọn, và người sử dụng đặt vào với các quyền truy cập nó mà không cần xem xét gì Đó là chỗ yếu kẻ đột nhập ưa chuộng; ngờ điểm yếu này kẻ đột nhập đảm nhiệm quản lý các máy tính mạng LAN với hiệu ứng domino Nhận dạng người sử dụng Windows NT: Đối với chức máy chủ, Windows NT có các phác thảo khác thực Về danh sách điều khiển truy cập ACL các hệ thống tệp tin cục bộ, điều khiển các nhóm người sử dụng cục hay toàn cục đan chéo tạo lập Do đó, nói chung có ba điều kiện khác đôí với người sử dụng phải thông báo vào hệ thống máy tính: Trình báo cục bộ, tức là buộc người sử dụng phải trình báo tên người sử dụng cục mình trên máy tính Trình báo mạng là công việc nhằm đảm bảo cho người sử dụng có thể truy cập lên các tệp tin dich vụ tệp tin trên mạng Trình bóa vùng tức là trình báo với máy vùng, nơi người sử dụng tồn nhằm đảm bảo việc điều chỉnh truy cập lên máy tính và các dịch vụ máy chủ địa phương (domain server ) cho người sử dụng Tuy nhiên, máy trạm (workstation )của hệ điều hành Windows NT có thể tác dụng server nhỏ, máy vùng có chức máy chủ đặt biệt Nó là máy chủ kiểu windows NTserver(NTS) và tác dụng điều khiển vùng DC(domain controler) Để nâng cao hiệu suất và khả dịch vụ, vùng lớn hơn; đó không có mà có nhiêu DCs Nhưng số đó, có DC chính, gọi là điều khiển vùng quan trọng PDC(primary domain controller), còn có các DCs khác đóng vai trò DC dự phòng (backup domain controller: BDC), chúng hoạt động nhờ DC chính Do đó, nhận dạng người sử dụng trên BDC là có thể, không (228) điều chỉnh trực tiếp các liệu đã đăng ký Điều này có thể đạt cách gián tiếp từ các người quản lý hệ thống, họ điều hành các liệu máy vùng(DS) Do đó, mô hình các BDC và PDC là đồng Sự trao đổi người sử dụng và các liệu các máy vùng DSs khác có thể làm giảm nhẹ nhừ thiết bị quan hệ tin cẩn (trust relationship device) các máy vùng; đó, người sử dụng nhận cách tự động các quyền truy cập xác định từ máy vùng này tới máy vùng khác Đó là quyền khẳng định cách rõ ràng thu xếp các quan hệ tin cẩn Cấu trúc này đã giảm nhẹ hợp tác các công ty; đó, không cần phải dẫn tới quyền ưu tiên lớn 6.5.4 Cấu hình tường lửa(fire wall configuration): Một phác thảo quan trọng để ngăn chặn lan tràn lửa trên nhiều nóc nhà là phải làm cách ly các ngôi nhà hay phân đoạn ngôi nhà nhờ tường chống cháy và cửa chống cháy Bản phác thảo này là bảo bối để đạt mong muốn, nó giới hạn nhữnh lo âu các vụ bẻ khóa trộm hệ thống lĩnh vực nào đó mạng máy tính Bức tường chống cháy (fire wall) trường hợp này là bao gồm máy tính trung chuan đặc biệt, gọi là thiết bị dẫn lộ trình (router); nó hoạt động là khâu nối mạng cục với giới bên ngoài (đầy thù địch!), thí dụ với mạng internet Với thiết bị firewall-router này, người ta đã giải nhiều nhiệm vụ; đó là nghiên cứu tất các gói liệu (screening), đẽo gọt và tiểu trừ các gói thông tin với các địa internet hay địa bưu cục không mong muốn Điều đó xẩy nhanh, vì phải tránh giao lưu thông tin cần thiết; đó, việc nghiên cứu và gói thông tin thực là kết hợp biện pháp phần cứng và biên pháp phần mềm Tuy nhiên, chúng ta còn tồn vấn đề: Thiết bị fire -wall-router phải nhận biết các vấn đề xuất phát từ dâu tới và địa bưu cục dịch vụ nào là có nghi vấn? Hầu hết, đó là vấn đề phụ thuộc ngữ cảnh và thuộc người sử dụng Từ lí vưa nêu, thuộc thiết bị tường lửa này, người ta còn đặt thêm máy tính thứ hai làm nhiệm vụ tiếp đón và truyền (relay host).Máy này tồn ngoài mạng LAN, nó dược kết nối với mạng internet qua thiết bị dẫn lộ trình khác bên ngoài (external router) Hình 26.3 cấu hình tường lửa kiểu Bây giờ, tất các chương trình quan trọng (application relay software) và các dịch vụ mạng (netservice) tồn trên thiết bị relay - host Do đó, việc thực chúng gói gọn theo định hướng xác định; định hướng này luôn luôn kiểm tra theo các danh sách điều khiển truy cập lối vào (ACL) và tùy thuộc chương trình Ở các danh sách nay, người ta không miêu tả người sử dụng mà còn miêu tả các quyền truy cập họ; đặc biệt, người ta cho phép:ai và chức nào chương trình quyền sử (229) dụng!Các chương trình cảnh giới (wrapper) có thể kiểm tra các kết nối trao đổi thông tin và khống chế các gói liệu trên thiết bị relay-host (hình 6.23./261) Các lãnh thổ an toàn các thiết bị relay-host hoàn thiện với các chương trình và các kết nối internet tuyển chọn đảm bảo nó Bấy giờ, người ta có thể truyền thông tin cách dễ dàng qua thiết bị fire-wall-router.Do đó, người ta cho phép mình thiết bị routernayf cho qua các gói liệu các máy tính mạng LAN thiết bị relay-host; tất các kết nối trao đổi thông tin khác tiến hành cách cưỡng qua thiết bị relay-host Trên mạng internet, theo kiểu cấu hình này có hai rào chắn an toàn kẻ đột nhập: đầu tiên là rào chắn external-router và sau đó là rào chắn relay-host Nếu chúng ta giảm bớt thiết bị external-router và kết hợp chức nó với thiết bị relay-host; đó, chúng ta tiết kiệm khá tiền bạc, rào chắn an toàn có giảm đôi chút Ngoài ra, chúng ta còn có khả nữa, tiết kiệm nhiều Đó là kết hợp các chức ba thiết bị thành chức bao quát thiết bị nhất, đó là cấu hình thiết bị kiểm tra và khống chế quay đối ngẩu (dual-homed-host) hình 6.24 đây (hình 6.24 /262) Ở đây, với việc chấp nhận chế an toàn vừa nêu, xảy tượng: Nếu kẻ công đạt việc bẻ gãy khóa hệ thống ứng phó đối ngẫu này, đó, nó bẻ gãy tường chữa cháy Từ lý này có các hệ thống dùng các chế lọc để điều khiển người sử dụng Một các chế quen thuộc là hệ thống canh giữ cerberus 6.5.5 Nhận dạng cerberus Hệ thống an toàn kiểu cerberus là phần dự án nhằm phát triển việc quản lý hệ thống cho mạng với khoảng 1000 máy tính trạm viện nghiên cứu MIT Mỹ Ở mạng thì xuất câu hỏi, liệu tiến trình dò tìm muốn có khả dịch vụ nào đó nó có đạt ưu tiên cho nó không? Khi đó, vấn đề định dạng không giơi hạn thời điểm trình báo người sử dụng, mà còn dẫn tới các khả dịch vụ mạng Vì nó là vấn đề nan giải, để gởi mật lệnh bỏ ngỏ chưa mã hóa trên nhiều máy tính, đó, dự án này, có ba giao thức khác chuyên môn hóa để giải vấn đề an toàn Ý tưởng trung tâm dự án này là chỗ, phải chốt lại việc dò tìm và pahỉ kết nối nội dung người sử dụng vơi nhận dạng mà chìa khóa (kí hiệu s ) đã chứa đựng Khi khóa, hàm khóa (kí hiệu f ) còn gọi là hàm bẩy (trap function) sử dụng, hàm này không dễ dàng bị biến đổi Nội dung đích xác thông (230) tin (kí hiệu y) và hàm khóa f thì không phải xác định cách dễ dàng qua nhận dạng f và y Nói chung, đó có hàm giải mã g(.) sử dụng; hàm này có thể tái phục hồi các thông tin cũ vơi trợ giúp chìa khóa thứ hai (kí hiệu s2).Những quan hệ vừa nói biểu diễn biểu thức sau: Thông tin = g (y,s2 ) = g (f(Thông tin, s1)s2 ) Hay: Thông tin = gs2 (fs1 (Thông tin)) Có hệ thống, mà đó, có thể dẫn tới f = y và s1 = s2; điều đó thì không thiết Sau đây giới thiệu giao thức để giải vấn đề này Giao thức trình báo (single sign on protocol ) Khi người sử dụng trình báo với kiểu nhận dạng cerberus, việc dẫn cách quen thuộc: người sử dụng điền mật lệnh anh ta, đó, việc trinh báo cáo này tiến trình kiểm tra và thu nhận nhận dạng server Thêm vào đó, nhận hai thứ: thứ là các thông tin xác thực C, thứ hai là vé (ticket ) đặc biệt TG, gọi là vé vào cổng Các thông tin xác thực C khóa với mật lệnh P người sử dụng và có thể mở khóa cách dễ dàng Điều đó chứa đựng chìa khóa Sp(SB, TGS, tL, ) (6.2) Chìa khóa này dẫn tới giới hạn cần thiết:Nó hoạt động với thiết bị phân bổ chìa khóa trung tâm, thiết bị này gọi là server phân bổ vé TGS (ticket granting server), và tồn khoảng thời gian tL Khi tuổi thọ chìa khóa đàm luận tồn cách tiện dụng khoảng đồng hồ, người sử dụng có thể đón nhận chìa khóa TGS với trợ giúp vé vào cổng TG cho các truy cập biến động (sao tệp tin,dich vụ in ấn, ) Với vé vào cổng TG, serverTGS, không người sử dụng chứa đựng chìa khóaSB,mà chứa đựng tuổi thọ vé TG, tức là: TG=fST(SB, người sử dụng, tL, ) (6.3) Vé vào cổng khóa lại mật lệnh ST server TGS, vậy, không có trường hợp nào có thể dẫn tới sai sót Do đó, giao thức trình báo kết thúc Giao thức phân bổ chìa khóa (key distribution protocol): Bây giờ, tiến trình người sử dụng muốn thực biến cố, đó, không thể gởi dò tìm bị khóa tới server: Khi đó việc hoàn toàn chưa biết, với chìa khóa nào làm cho thông tin tới bị khóa.Vì vậy, đầu tiên nó hỏi tới thẩm cấp trung tâm chẳng hạn server TGS ticket (vào cổng làm việc)TT(transaction ticket ) Tương tự, trước đó server nhận dạng, người sử dụng gởi dò tìm (về client, server, tuổi thọ, số biến ngẫu nhiên, )trong (231) bài text rõ ràng tới server phân bố vé vào cổng TGS và nhận trở lại giấy chứng nhận đã mã hóa SB vé vào cổng TT Trong giấy chứng nhận, tất điều cần thiết chứa đựng cho biến cố mong muốn: chìa khóa SCSđối với biến cố client và server, số biến cố các dẫn thích hợp chứa đựng vé vào cổng TT, mà vé này đã mã hóa với chìa khóa server SS Giao thức nhận dạng (authentication protocol): Trong khoảng thời gian đã chuyên môn hóa nhờ tồn ngắn ngủi biến cố (khoảng phút ), giờ, client có thể dẫn biến cố với vé vào cổng TT và mã hóa các liệu chúng với chìa khóa client và server: Máy chủ chấp nhận với vé vào cổng này, biến cố (chẳng hạn nhận dạng )và ngoài với chìa khóa chứa đựng cái đó, nó còn có thể mã hóa các liệu Ba giao thức tóm lược trên đã bổ sung cho việc kết nối nhiều mạng LAN với nhiều domainserver (máy chủ khu vực ) làm việc với nhờ bốn yếu tố sau đây:Nếu client muốn sử dụng tài nguyên server mạng LAN khác, đó, đầu tiên, nó gởi dò tìm tới server phân phối ticket vào mạng LAN nó, và qua đó, để có biến cố bảo đảm server phân phối ticket mạng LAN láng giềng Nếu chuyện xảy tốt đẹp, người sử dụng dò hỏi tiếp tới server biến cố cho nó, và đó, máy client này có ticket cho việc xâm nhập server mong muốn Bây giờ, nó có thể trực tiếp sử dụng các tài nguyên mong muốn server với ticket và mật lệnh khóa đã nhận Hệ thống nhận dạng kiểu cerberus thì thực khó; có vài khó khăn cần phải vượt qua: Dịch vụ hoạt động đồng hồ tất các người sử dụng chạy đồng với nhau, và đó, các ngăn xếp thời gian kiểm tra chặt chẽ Điều này yêu cầu hệ thống nhận dạng thời gian các khu vực mà không cân đồng hồ đài phát trung ương Mỹ để tránh việc thao tác đồng hồ, vì điều này phải tạo lập trên dịch vụ tương tự Một ngăn xếp thời gian tạo lập cố định chìa khóa biến cố và chìa khóa đàm luận nảy sinh các vấn đề, biến cố xảy lâu hay người sử dụng làm việc lâu Chìa khóa biến cố và ticket biến cố có đặt các tệp tin; các tệp tin này có thể đọc phạm vi nhiều người sử dụng Do đó, nó là đường chậm để tới hệ thống an toàn, đặc biệt nhiều hệ thống kết nối với với nhiều chế khác Từ nguyên này, các hoạt động nhóm X/Open đã đạt mục đích an toàn mạng với phương hướng an toàn thông nhất, gọi là phương hướng an toàn nhóm X/Open(baseline security specification) (232) 6.6 Các bài tập chương 6.6.1 Các bài tập trao đổi thông tin mạng Bài tập 6.1 Các giao thức xếp lớp Trong nhiêu giao thức xếp lớp, lớp định roc khuôn dạng thích hợp phần đề mục nó bắt đầu thông tin Tại lớp, lần trao đổi, thông tin khảo sát gói liệu, mà các gói này với khuôn dạng và đề mục thông tin thích hợp dẫn tới lớp kế cạnh từ trên xuống dưới.Nó chắn hiệu nghiệm hơn, có đề mục đầu thông tin, mà đề mục này chứa đựng toàn các thông tin điều khiển.Tại điều này không người ta thực hiện? Bài tập 6.2 Bộ vi xử lý SPARC là loại 32 Bit có địa Byte cuối lớn; còn vi xử lý 386 là loại 16 Bit có địa Byte cuối nhỏ Gỉa sử vi xử lý SPARC gởi chữ số hai tới vi xử lý 386 Hỏi vi xử lý 386 giá trị nào?(Bỏ qua lớp chuyên vận, xem hình 6.14) Bài tập 6.3 Về định vị Internet Gỉa sử Internet có địa logic:134.106.21.30 a) Nó là chữ số 32 Bit nào,nếu tất các chữ số địa logic Internet sử dụng số lượng các số lượng các Bit nhau? Nó phù hợp với số thập phân nào? b) Bạn hãy tìm máy tính nào thì đạt địa này? Ghi chú:Bạn hãy sử dụng dịch vụ mạng! c) Cho số 32 Bit có kiểu địa Byte cuối lớn Một số thập phân nào dẫn tới,nếu kiểu địa Byte cuối nhỏ sử dụng? d) Những số cổng nào sử dụng các dịch vụ sau: ftp, telnet và talk trên các máy tính quan bạn?Ghi chú:Bạn hãy xem lại Unix và tệp tin có đường dẫn/etc/services Bài tập 6.4 Gọi thủ tục trở lại Việc thực thi các gọi thủ tục đã trình bày(ở mục 6.2.2.) Cái gì phải dốc làm để thay các RPCS(ở Unix)bằng các thủ tục con, hay để thay các thủ tục các RPCS? Bài tập 6.5 Về an toàn (233) Một phương tiện để đọc chọn các mật lệnh thì chương trình, mà chương trình này thông báo lên màng hình "login:".Khi sử dụng máy tính,người sử dụng phải trình báo tên và mật lệnh anh ta.Nếu chương trình này ghi chép các liệu và biểu thị thông báo, chẳng hạn Password failure, please repeat you!hoặc tương tự và kết thúc Nhưng điều đó không làm người ta sực nhớ lại:ở đây,một mật lệnh đã bị lãng quên!Nếu người là bạn sử dụng hay nhà quản lý mạng, bạn có thể ngăn ngừa nào cho hậu chương trình vậy? Bài tập 6.6 Gỉa sử bạn nhận biết virus xuất máy tính bạn Dưới hoàn cảnh nào, người ta không thể đạt việc làm nhớ ổ đĩa (cứng mềm )với chương trình tìm kiếm virus? Bài tập 6.7 Về tường lửa Những nhược điểm tường lửa là gì nghiên cứu các gói liệu? Bài tập 6.8 Về phương pháp cảnh giới cerberus a) Sự khác hai khái niệm Authorize (ủy quyền) và Authentification (nhận dạng) là gì? b) Trong phương pháp cerberus, hai chìa khóa dùng thay vì chìa để làm gì? Sự khác hai chìa khóa đó là gì? (234) CHƯƠNG GIAO DIỆN NGƯỜI SỬ DỤNG 7.0 Khái niệm giao diện người sử dụng Chương trình người sử dụng không thể nhìn thấy cái gì xảy máy tính.Do đó, điều quan trọng dịch vụ chương trình tương tác là phải thiết kế trình xuất nhập,nhằm làm cho người sử dụng luôn luôn hiểu rằng,cái gì chờ đợi.Kiểu và phương pháp cho phép sử dụng tác động lên các chương trìnhcủa máy tính, gọi là giao diện người sử dụng (user interface) Việc nhập vào bày tỏ và xuất liệu đã sử lý đóng vai trò quan trọng Bên cạnh thiết bị xuất truyền thông máy in, máy vẽ, ngày nay, thay vào đó, tất các hình vẽ và liệu thể len màng hình trước mặt Tuy nhiên, giao diện người sử dụng tương tác đồ họa các máy tính ngày đặt yêu cầu cao các ngườn tài nguyên cuả máy tính,nó phát triển phạm vi mã việc chi tiêu nguồn tài nguyên các phận chính máy tính cá nhân (CPU,bộ nhớ ),các phận này phải gắn chặt hệ điều hành để hoạt động cách có hiệu nghiệm Do đó, trên góc độ phần cứng, các cạc (card) đồ họa dự định với các vi xử lý đồ họa hay với các nhớ lặp lại hình nhanh Ngay vi xử lý chính, các lệnh máy phải trợ giúp cho đồ họa (thí dụ máy tính Intel MMX) để tăng tốc đọ chuan đổi chương trình Sự trợ giúp hệ điều hành cho giao diện người sử dụng tương tác đồ họa là tiếp giáp quan trọng cấu trúc tất các hệ điều hành đại Bởi lẽ đó, chúng ta làm việc chương trình này với các yêu cầu thực tiễn, các ý tưởng thiết kế và các câu hỏi thực thi các giao diện người sử dụng bao quát các phận các hệ điều hành truyền thống và các nguồn tài nguyên máy tính 7.1 Vấn đề thiết kế giao diện người sử dụng Giao diện đồ họa người sử dụng ngày dựa trên công việc tảng nhóm nghiêng cứu Xerox máy tính STAR và dự án mang tên Smalltalk 80 vào đầu thập kỉ 80 Họ thiết kế không máy tính cá nhân với màng hình lưới đồ họa (với tương quan lúc giờ, nó gọi là cách mạng; vậy, máy tính Xerox- STAR và nó đã làm cho hệ thống Apple- Lisa trở nên ít hiệu nghiệm); đặc biệt họ đã phát triển cách có hệ thống ngôn ngữ lập trình hướng đối tượng tổng quát với giao diện người sử dụng đầy tiện dụng.Do đó, họ đã mô hình hóa vấn đề quản lí văn phòng trên màng hình; họ thu xếp đối tượng chẳng hạn trang giấy, giỏ rác, máy in, tủ chứa nơi đật hàng biểu tượng; mà từ đó, người ta nhận biết ý nghĩa chúng Các tác động bình thường (như mở các chiếu đô, thiết đặ (235) tài liệu ) mô hình hóa là các tác động các hình ảnh biểu tượng thực trên giao diện với bàn viết ảo Qua kinh nghiệm thực tiễn, người ta nhận thấy rằng, chúng đặ ý tưởng dẫn dắt sau: Thay vì phải ghi nhớ và phải gỏ nhiều liên hiệp các nút bàn phím cho các tác động lệnh, người sử dụng có thể trực tiếp nhiệm vụ mà muốn hoàn thiện Thuộc cái đó, chúng phát triển thành thiết bị hiển thị, gọi là chuột Số lượng các nút bấm dẫn tối ưu thực lá hai; liên hiệp gồm có ba nút thường dành cho dịch vụ phức tạp; còn nút bấm thì út dùng Thay vì phải ghi nhớ và phải gõ tất các lệnh, chúng có thể dẫn việc áp dụng danh sách lựa chọn, gọi là menu.Mỗi lựa chọn này còn có thể cấu trúc trải menu Kết thúc quá trình lựa chọn là lệnh nào đó Số lượng các lệnh phải ít nhất, vì để đảm bảo tác dụng chúng vừa vạn vừa độc lập với nhau, gọi là tính trực giao (orthogonal) các lệnh Những lệnh sau đây coi là đạt nguyên tắc đó: MOVE (di chuyên), COPY (sao), DELETE (xóa), UNDO (phục hồi), HELP(trợ giúp),và showProperties (các tài nguyên thấy được).Thí dụ, người ta có thể chép dòng text trình Editor toàn tài liệu hay hình với lệnh COPY; nhiên, điều này còn ẩn dụ nhiều chức khác Với lệnh ShowProperties, nó nói mô tả trang liệu có thể thay đổi tương hổ,mà nó cho phép việc xuấtnhập các thông số ngữ cảnh,thí dụ xê dịch đại lượng nào đó, thay đổi cú pháp hay thay đổi loại đối tượng bài text Những lệnh đa đã thu xếp cho các nút bàn phím chức năng, còn gọi là đường tắt(shortcut), chúng trên menu với việc nhấp nút chuột phải Tất các liệu và tài liệu gọi chung là tài nguyên; chúng xuất nhờ thay đổi các liệu tồn và nhờ làm thích ứng các nhiệm vụ đặc biệt nhờ cấu trúc di truyền đối tượng Do đó, không có lệnh CREATE tồn tại; các tác giả cho cái đó quá phức tạp người Người sử dụng cần phải luôn luôn trên bình diện chương trình; mà từ đó, có thể khởi đầu các tác động mình, không phải làm việc cố định trên môdun chương trình, vì đó, không thể biết nhiều về:cấu trúc nhập liệu tồn đâu và chuyện xảy đây nào(?) Hình dáng các tài liệu trên màn hình phải phù hợp với cách biểu lộ thực tế Do đó, màn hình đặt vào tờ giấy, công việc còn lại là chọn font chữ và cỡ chữ Việc lựa chọn kiểu chữ qua việc rê và nhấp chuột để lựa chọn các kiểu chữ lớn nhỏ khác thực đầu tiên (236) Vấn đề còn lại là, hình ảnh thiết bị vật lý cảm nhận trên biểu tượng (icon) nó: cái gì xảy với tài liệu, người ta rê chuột tới biểu tượng? Có phải nó không bị thay đổi trang viết thực chép trên máy in? Điều đó thì không thực chất, nó có bị biến in không? Sau nó bị xóa hay sau in thì cái gì xảy ra? Điều ngạc nhiên là, với lối dẫn vào, ngày người ta đã tìm thấy nhiều phép ẩn dụ cửa sổ soạn thảo, mà không cần phải lưu ý điều gì cả, lợi ích cụ thể chứng minh cách thực nghiệm Đáng le phải xác định việc điều chỉnh tối ưu các cửa sổ và các biểu tượng (thí dụ màu sắc, tính tổ hợp ) trên sở thiết lập, nó cho phép người sử dụng tự giải gì tốt cho mình(thí dụ việc dò tìm giao diện người sử dụng ) Tuy nhiên, vài nguyên tắc thiết kế đã đúc kết,chúng tạo việc hướng đãn tạo dạng, như, chúng cần làm đầy cho giao diện người sử dụng, cụ thể với yếu tố tồn bị thya đổi chất nó, các chức mong muốn đã trợ giúp giao diện Với Windows 95, người ta có thể dãn tới thí dụ sau đây: Người sử dụng với việc điều khiển (user in control): Người sử dụng không đối đáp mà còn phải điều khiển máy tính Điều có nghĩa là, phải thực điều khiển lối vào công tắc cách tự động, mà không cần sử dụng trạng thái giao diện sử dụng Trường hợp không cần thiết phai vòng, thì trạng thái này phải rõ ràng và thoát khỏi cách dễ dàng Sự phản hồi (feedback): Đối với người sử dụng,giao diện người sử dụng phai đặt sẵn sàng hồi âm nhập liệu hay phản ứng nào đó: thí dụ phải rõ cho người sử dụng các phương tiện nhìn thấy hay các phương tiện nghe thấy; để từ đó, người sử dụng có thể thực tác động mong muốn mình Nếu không, chúng ta thấy trống rỗng màn hình chết; tức là, nó không phản ảnh cái gì việc nhập đã thực trước đó Dưới đây chúng ta nêu vài ví dụ: Con trỏ chuột (mouse pointer)có thể thay đổi hình dáng nó cửa sổ hay xử lý Đối tượng có thể thay đổi hình dáng nó cách đặc trưng Việc điền vào menu không thể gì cả, đó nó bị chặn lại Một dòng trạng thái thông báo bước tiến hiển thị số hay hiển thị text Một cửa sổ chuyên dụng mô tả bước thay đổi việc xử lý là hiển thị thay đổi đó (progress indicator) Một cửa sổ thông tin nảy (directness visual): Các chương trình xử lý liệu chứa đựng tương đương trực giác các liệu và các chức cần thiết đã tạo lập Do vậy, mục đích là cần phải sử dụng các phép ẩn dụ phổ biến (popular metaphor) cho người sử dụng Khi đó biểu thị người sử dụng thay đổi cách thuận tiện, hiểu: chờ đợi cái gì giao diện người sử dụng và với giao diện này (237) phải tác động nào(!).Người ta có thể sử dụng các phép ẩn dụ khác nhau, người ta muốn mở rộng hay kiến tạo thêm các giao diện này Thí dụ phép ẩn dụ work book (sổ công tác), các trang cửa sổ này, người ta có thể đánh số trang, đưa thêm vào hay lấy bớt các hình hay các bài text; hay thí dụ phép ẩn dụ pin board (bảng hiệu) dùng để mô tả các thông tin hay các bài texts người Tính cố định(consistency): Giao diện người sử dụng không cần phải phản ứng cách đột ngột trước các tình tương tự đã quen thuộc Các tác vụ tương tự cân thiết phải có mô tương tự và quá trình tương tự Sau đây, người ta nêu lên vài ví dụ: Một menu mà người ta không thể lựa chọn nữa, thì không cần thiết phải loại bỏ; đặc biệt nó cần thiết dẫn thêm việc tạo lập cố định Nếu các vụ lưu an toàn các liệu ứng với tiện dụng, các liệu lưu trữ lập tức; đó; tệp tin phải đưa vào mục chọn lựa tệp tin menu; đó, nó không còn cố định Việc nhấp chuột có thể lựa chọn đối tượng hay tọa độ riêng lẻ tất vả các chương trình Nếu vừa bấm nút chuột vừa rê chuột, đó, khoảng chọn; thí dụ text hay trường đồ họa Tính đơn giản (simplicity): Khi mô tả trực quan, giàn xếp phải luôn luôn tìm thấy, nhằm trình diễn không quá nhiều mà không quá ít Về cái đó, có công nghệ sau đây kể tới: Vài lệnh hay vài thông báo ngắn và súc tích sử dụng Hiển thị tiến (progress dislosure): Khi các thông tin dẫn ra, thông tin này là cần thiết, thì đầu tiên, các hàm tương quan phô bày cách thô kệchớau đó, nhu cầu, nó phô bày cách nhã hay cách chi tiết Tính thẩm mỹ (aesthetic): Một giao diện không đáp ứng đầy đủ các chức tác động; người sử dụng, quan điểm trình bày thẩm mỹ coi trọng:một màn hình màu mè thì nhìn đẹp màn hình xám xịt Tuy nhiên, điều này, người ta phải lưu ý: không từ bỏ tính đơn giản Vì các kiến trúc rườm rãe làm hỗn độn màn hình Các yếu tố đồ họa cần phải tổ chức cách khái quát và có mục đích Vì tất các yếu tố này phải chọn lọc quan tâm người sử dụng, đó, người ta phải suy nghĩ thât tốt: cái gì người ta muốn hướng tới và vậy(?) 7.2 Cấu trúc giao diện người sử dụng Một giao diện đồ họa phức tạp có thể làm cho người sử dụng thực hành cách đơn giản để phục vụ cho chương trình ứng dụng; nó có thể trình bày hàng rào bổ sung hay làm phức tạp thêm việc dịch vụ Trên sở đó, điều (238) quan trọng là phải thiết kế giao diện người sử dụng cách kỹ lưỡng, và mặt khác, không thay đổi giao diện đã dẫn Những yêu cầu này, thực trước nhất, không phải chương trình tạo giao diện lập trình cách tỷ mẩn và độc đáo, cho nó không tiện dụng quá khứ, mà giao diện người sử dụng sẵn sàng sử dụng hệ điều hành Sự tác động cần thiết trợ giúp nhiều ứng dụng; thí dụ bao gồm việc trợ giúp xuất- nhập nói chung các nút bấm chức năng, chuột, cửa sổ, các mặt nạ xuất- nhập Những chức này đúc kết lại giao diện, gọi là giao diện đồ họa người sử dụng ( graphical user interfice:GUI); các giao diện này người lập trình làm phù hợp giao diện chuẩn, gọi là giao diện lập trình ứng dụng (application programming interfice: API ) Ở hình 7.1 sơ đồ khái quát dấu hiệu lớp việc xếp giao diện người sử dụng Hình 7.1.Giao diện người sử dụng và tổng quan cấu trúc hệ thống Một vấn đề đặc biệt đặt ra, người ta muốn giới thiệu giao diện người sử dụng định hướng đồ họa nhờ thiết bị đầu cuối với khả đồ họa giới hạn.Điều này thực nghiệm với dự án trọng điểm các công ty ché tạo thiết bị trên giới; với dự án này, giao diện người sử dụng trợ giúp không vị trí làm việc với màng hình đồ họa màu; ma f còn với thiết bị đàu cuối trắng đen theo tiêu chuẩn ASCII Các điều khiển trình diễn đặt biệt đảm nhận việc mô tả chức xuất (dữ liệu) việc tạo lập hay việc thực dòng trạng thái 7.2.1 Việc nhập (dữ liệu) Để chuyển vận các bài text hay các lệnh máy tính, người ta sử dụng phương pháp chuyển tải qua các nút bàn phím Nói chung, bên cạnh các chữ cái alphabet khiết, còn tồn các nút phím bổ sung để thực chức điều khiển đặc biệt Bên cạnh các nút phím di chuyển ( ) và các điểm lưu ý trỏ (cursor) làm nhiệm vụ nhập liệu, còn có các nút phím để chuyển đổi chữ cái lớn/nhỏ (Shift và Caps LOCK), các phím để di chuyển các dong chữ lui/tới và nút phím khác để thực lệnh nhập liệu Người ta nhận thấy rằng, tổng số liên hiệp các nút phím tạo và đượ mô vi xử lý bàn phím với mã số nội ; mã này chuyển đổi kích tạo thiết bị hệ điều hành thành mã số chuẩn hóa quốc tế chính thức Cõ lẽ nguồn gốc máy tính đầu tiên, cho nên chữ cái máy tínhngày dựa theo alphabet Mỹ, chúng bao gồm 128 kí tự đã chuẩn hóa Bộ mã số mô tả với Bit, nó là mã chuẩn ASCII (American standard Code for Information Inter change), xem hình 7.2 đây (239) Hình 7.2 Bộ mã hóa các kí tự theo chuẩn ASCII Ngoài bảng này ra, còn có mã hóa ssó ghi chép phương pháp mô tả hệ đếm thập lục phân (hexa- decimal) Gía trị Bit đầu tiên điền vào cuối bên trái theo cột thẳng; còn giá trị Bit phía bên trên theo hàng ngang Hai hàng đầu tiên bảng này chứa đựng kí tự điều khiển, kết thúc việc nhập EOT, ghi hàng ngang HT, quay trở lại hàng CR Bây giờ, giới không bao gồm Bắc Mỹ, đó, điều cần thiết là phải kết hợp các kí tự Châu Âu, u,a,x và ê vào mã tồn Điều đó buộc dẫn tới mã Bit với chuẩn ANSI tổ chức ISO (International Standard Organisation) đưa Tuy nhiên, giới không dừng lại châu Âu; điều cần thiết dẫn tới là phải mô ta các gói phần mềm khác cho thị trường châu Á, Việt Nam, Trung Quốc, Ấn Độ, Arập ; đó, người ta phải mở rộng việc mã hóa cacá kí tự nhiều Bit Một thử nghiệm quan trọng theo hướng này là việc phát triển mã đa (unicode), đó chứa đựng toàn các kí tự các thứ tiếng các quốc gia trên giới, goi là UNI1997 Ở bảng này còn chừa các chỗ trống, đó tiện lợi cho việc mở rộng Hình 7.3 dẫn giải mã đa này: bắt đầu với mã 16 Bit 000H và kết thúc với FFFFH Hình 7.3 Sự dẫn giải mã đa năng(UNI- code) Người ta nhận thấy rằng, mã đa đã thiết kế là mở rộng mã ASCII, nhằm tạo nên hài hòa với các hệ thông chuẩn tồn Tuy nhiên, có nhiều kiểu chữ (fonts); cho nên, mã đa 16 Bit, người ta có thể đảm bảo đầy đủ các font chữ, vì các thông tin tách chia cách mạnh mẽ, bất kì nào và cách sử dụng nào chứa đựng mã này Tất các thông tin tạo dạng (font chữ, kiểu trình bày, đậm/nghiêng ) mã kí tự quản lí cách tách biệt; chúng là các kiểu dùng cho trình soạn thảo Bộ mã đa đã chuẩn hóa(ISO 10646) và không ngừng phát triển Bộ mã quan trọng là mã Unix nâng cao 32 Bit (Extended Unix Code: EUC);nó giới thiệu mở rộng kiểu kí tự theo chuẩn ASCII dùng cho hệ điều hành Unix Các kí tự châu Á và các kiểu phức hợp khác dẫn là kết nhiều chữ cái alphabet theo chuẩn ASCII trên bàn phím thông thường và chúng lưu trữ chuẩn EUC các nước đặt biệt Thí dụ mã kí tự nhập Unix: (240) Từ buổi đầu, hệ điều hành Unix POSIX, kiểu kí tự chuẩn USASCII dùng cách rộng rãi Gần đây, các ấn bảng hơn, các kiểu này đã bao hàm các đặt điểm riêng biệt quốc gia Thí dụ, công ty Hewlett- Packard đã tạo lập đặt biệt, gọi là trợ giúp ngôn ngữ thiểu số(native language support:NLS) Nó bao gồm dãy các biến số ngoại vi (LANG, LC_XX), chúng tôn taịi phạm vi tiến trình người sử dụng và chúng thiết đặt cách hợp lí; đó, chúng điều khiển phần cục các lập thức thư viện (library routine)và các lệnh cảu hệ điều hành(ed,grep ).Ở đây, chúng không bao hàm các đặc điểm ngôn ngữ đặt biệt việc sử dụng đúng đắn mã 32 Bit so sánh chuỗi có tự hay nhận dạng mã chữ cái(chữ cái lớn/nhỏ, chữ số, kí tự điều khiển ), mà còn bao hàm việc ưngs dụng hợp lí quốc gia cho điểm và dấu phẩy biểu diễn số đăc điểm tiền tệ nước(thí dụ biễu diễn đồng đô-la tiền tệ Mỹ:1.568,74US$) Thí dụ mã kí tự Windows NT: Ngược với hệ điều hành Unix, Windows NT, thiết kế mã kí tự nhiều quốc gia trên giới, hệ điều hành, người ta khẳng định rằng, đó là mã đa Điều này có nghĩa là tất các chuỗi kí tự,tên đối tượng, tên đường dẫn phải dùng mã kí tự đa Các đăc trưng quốc gia múi giờ, ký hiệu tiền tệ, tiếng nói khẳng định cách đọc lập với cái đó tạo lập hệ thống và lưu trữ tập trung Bên cạnh bàn phím dùng để nhập các kí tự, ngày còn có nhiều khả nhập khác Sau đây, người ta nêu vài phương pháp Các phím chức (function key ): Việc mở rộng đơn giản dẫn tới khả năng, để sử dụng các nút phím cho các chức đăc biệt Đó là bước quan trọngđối với việc thiết kế giao diện người sử dụng, vì đây, bên cạnh việc nhập các liệu số và chữ cái, việc làm thích ứng các chức tạo điều kiện Do đó, cách lôgic, điều quan trọng là phải giữ vững các liệu và các chức tách biệt chương trình môi trường nhập, và phải tránh nhầm lẫn Chỉ có giao diện người sử dụng tồi pha tạp hai chức năng, thí dụ việc ngừng xuất liệu phải ấn hai phím CTRL+S, nhiều còn tệ hơn, phải điều khiển chương trình nhiều phím kí tự riêng lẽ Thiết bị thị(pointer device): Có bước quan trọng để nhập tương tự, đó là việc dẫn vào các thiết bị thị chuột, banh dò (track ball) Ở đay, vị trí trỏ thị trên màn hình có thể điều khiển cách nhe nhàng ấn các nút phím chức (cursortaste) (241) Các mâm đò họa (graphic tablet): Một trợ giúp to lớn đem lại việc xác định vị trí bút chì trên bảng nhập điện tử đăc biệt Tuy nhiên, chức nó là thiết bị thị, đó, người ta có thể truyền đạt các hình dạng vào máy tính cách trực tiếp; thí dụ các liệu cảu các dự án kiến tạo hay các mẫu y khoa, các hàm chức và các biểu đồ hay có thể sử dụng các chữ kí để kiểm duyệt ngân phiếu Thiết bị quét hình: Trong vài năm lại đây, các bảng đồ họa có nhờ việc áp dụng các thiết bị dò quang điện với độ phân giải cao, thiết bị này gọi là máy quét (scaner) hình hay đồ họa Tuy nhiên, cùng với các khuynh hướng tân tiến khác, các kết quét đồ họa không lưu trữ trên giấy, chúng còn biến đổi thành tín hiệu điện để phục vụ yêu cầu nghành công nghệ thông tin và các lĩnh vực khoa học khác 7.2.2 Mành đồ họa và phân giải Đối với việc xuất bảng phác thảo đồ họa thường sử dụng mô hình đặt biệt, gọi là mô hình mành đồ họa Người ta sử dụng hệ thông tọa đọ cho các dấu vẽ phác; chúng xuất mành màn hình Thật vậy, người ta gọi điểm ra(0,0) tọa độ(x, y) là góc trên bên trái; đó các dấu vết các điểm ảnh thu xếp giống ma trận điểm Đối với màn hình có kích cỡ 1024x786 điểm, thì ma trận tọa độ các điểm dẫn hình 7.4 đây Hình 7.4 Tọa độ các điểm mành đồ họa Mô hình mành đò hạo thì khác với phương pháp vec-tơ đồ họa; phương pháp vec-tơ đồ họa quan tâm tới các tọa độ các điểm hình học ( thí dụ điểm đầu và điểm cuối đường thẳng) Ngược lại, phương pháp mành đồ họa phân bổ điểm giá trị màu đã định nghĩa, các giá trị này lưu trữ số Khi nhớ lặp lại hình kiểu đồ họa mành phải dự định trước đơn vị nhớ; còn trương hợp vec-tơ đồ hạo cần nhớ điểm ảnh màn hình đồ họa Cho nên trước đây, người ta ưa chuộng phương pháp vec-tơ đồ họa, vì phương pháp này sử dụng it không gian nhớ Tuy nhiên, việc làm tươi (refresh) các đồ họa phức tạp, phương pháp vec-tơ phải làm tươi tất các phần tử đồ họa tong danh sách, đó, quá trình này xảy chậm; ngoài nó còn dẫn tới điểm lổ chỗ trên đồ họa vừa làm tươi Công nghệ đại các màn hình mành kết nối với kiểu dáng màn hình người lập trình tự kiến tạo, đã tạo nên chỗ đứng vững vàng cho công nghệ thiết kế các phần mềm dồ họa Ở đây, điểm ảnh mô tả thành các màu sắc và (242) biểu diễn giá trị màu từ các Bit, gọi là các Bit màu(b0,b1, ,bn) Đại đa số các Bit có thể kết hợp với số giông điều khiển trình diễn (display controler) tới ảnh đồ họa Một ảnh vậyđược biểu thị mức bình diện nào đó Thí dụ các mức màn hình: Người ta thấy rằng, điểm ảnh đồ họa thường chứa đựng Bit (ứng với byte) Nếu chúng ta phân đoàn Bit này thành 6+2 Bit; với chủ định, phần mềm đồ họa, điều cần thiết là phải thiết đặt mặt trước (front) khoảng màu (cho hình ảnh), còn mặt nền(underground) koảng 22màu Về các lệnh phần cứng, chúng ta có thể di chuan các liệu mức (đối với mặt trước); cho nên, hình(figure) đồ họa có thể xuất và di dich trên phía sau cố định(tương tự phong cảnh: xe cộ chuan động, núi non đứng yên) Khi trình diễn các phần mềm trò chơi (gamé) trên máy tính, người ta thấy các hình ảnh chuan động chính là hình vuông nhỏ tạo dạng điều hưởng trên màn hình Các màu sắc pha trộn từ ba màu là đỏ (rose), xanh lá cây(Green) và xanh da trời (Blue) Vì cự kết hợp cường độ ba màu (mmỗi màu có Bit)thành tổng (24 Bit) thì cần dùng quá nhiều Bit; cho nên, điểm ảnh cần số lượng đề cường độ ba màu (R,G,B) thì không cần thiết; mà người ta viết số ba màu, gọi là địa màu(color address) vào bảng đăc biệt, gọi là bảng chiếu màu(color lookup table:CLUT) Sơ đồ truy cập các giá tị màu điểm ảnh phô diễn thì chuan thành địa mức, tương tự đã trình bày mục 3.3 chương trước Ở hình 7.5 là ví dụ, nó dngf liệu cho điểm ảnh có màu tím sáng(bright violet) với giá trị màu (R, G, B) = (215,175,240) vị ttrí (x, y), Người ta lưu ý, điểm ảnh dùng Bit không gian nhớ; độ chính xác mau phải dùng tới 24 Bit Sự hạn chế việc mô tả các điểm ảnh trên Bit không tác đông tới độ chính xác màu(color accuracy), mà còn tác đông tới số lớn bảng chiếu màu CLUT; vì vậy, nó ảnh hưởng tới số lượng các màu có thể trình bày đông thời Để trình bày các giá trị màu (R, G, B) dạng số thành các giá trị màu tương đương dạng tương tự; đó, người ta dùng biến đổi điển tử số/ tương tự (D/A converter); thí dụ các giá trị màu .255 tương ứng với các mức điện áp 0,0 1,0 volt; với các giá trị này, các nguồn tạo màu(thí dụ nguồn điện quang) điều hưởng Hình 7.5 Xác định giá trị màu nhờ bảng chiếu màu Tuy nhiên , ý tưởng này vẩn còn nhược điểm các vùng điểm ảnh Những ảnh hưởng các chức thì phụ thuộc nhiều vào phần cứng( tức là phân giải cụ thể màn hình) Ở đây, các ô hình vuông nhỏ và các cửa sổ nói (243) chung đươch phân giải cách phù hợp với kích thước màn hình; cụ thể, nó không phải là cac nét vẽ liên tục đầy đủ, kà nó là khối điểm ảnh xác định theo mong muôn người lập trình Bây giờ, chúng ta pha lẫn đồ họa và bài text (bao gồm các kí tự); đó, vị trí bài text tong cửa sổ đồ họa phụ thuộc vào độ phân giải màn hình; đó có thể dẫn tới các hiệu bảng thiết kế nói chung không cân đối và đẹp đẽ; đồng thời, nó gây trở ngại cho giao diện người sử dụng sau này Hình 7.6 Mô tả cách thực bảng đồ họa Một định quan trọng để dẩn tới các nét vẽ định hướng điểm ảnh là nét vẽ phân giải Ở các net vẽ này, chẳng hạn chữ cái thì không đăc trưng các điểm ảnh nó, mà nó đăc trưng hình biên và màu sắc cung cấu trúc(texture) diện tích chứa đựng các điểm ảnh Điều này thì trước hết là bất tiện và không hiệu nghệ lưu trưx và trình bày; nhên, khác với trường các điểm ảnh, việc mô tả đương biên phóng to hay thu nhỏ cách bất kì Hình7.6 cho thấy: bên trái mô tả định hướng các điểm ảnh (a); bên phải mô tả mức độ phân bổ cho chữ A (b) Do đó, điểm ảnh mà người ta nhìn thấy, nó còn thô kệch 7.2.3 Hệ thống cửa sổ và quản lý trình diễn Một các phương tiện trình bày quan trọng hệ thống các máy tính Xerox-START đảm nhiệm, đó là biểu thị các liệu các mặt cắt hình vuông màn hình hay các cửa sổ Ngày nay, kỷ thuật này đã trở nên phổ dung tất các máy tính; nó dẫn tới khẳ phải xác định địa nhớ lập ảnh đơn vị biểu thị (thí dụ thiết bị đầu cuối, màn hình đồ họa ); đó, cần phải lái việc xuất cấu trúc tế vi tiến trình trên phần dịch vụ xác định màn hình Nếu trước đây các chuỗi ký tự dẫn ký tự đặc biệt (thí dụ ESC ) thì đồng thời chúng đạt lệnh cho vi xử lý trình diễn; đó, điều này đã thay các hệ thống cửa sổ nhờ các chức tổng hợp; đó, các số liệu cửa sổ (kích thước, vị trí, mặt cắt ) có thể thay cách tương tác nhờ các thiết bị nhập (chuột, cần lái ) Cấu trúc tiến trình ứng dung đồ họa đã biến đổi không ngừng Nếu trước đây, chương trình ứng dung còn chứa đựng tất các thủ tục xuất đồ họa là thư viện (xem hình 7.7); đó, ngày điều này đã tách biệt Hình 7.7.******************* Công việc trình diễn xác định vị trí chuột, kích chuột, dẫn bài text quản lý tiến trình xác thực hay cửa sổ điều hành (Window manager), (xem hình 7.8) Cả hai tiến trình sau đây kết nối với (244) theo kiểu quan hệ client/ server: tiến trình người sử dung đại diện cho client, còn tiến trình cửa sổ điều hành đại diện cho server với trình diễn các đồ họa mong muốn Do đó, việc quản lý thiết kế cách chương trình lặp lặp lại; mà đó, các hoạt động thực phản ứng trình diễn người sử dung InitProcess LOOP WaitForEvent (Mouseclick, KeyBoard, DisplayUser Programms, ) ExecuteNecessaryProcedure; END (*LOOP*) Hình 7.8************************* Hệ thống các tiến trình cửa sổ gần điều khiển cách biến đổi, mà đó, giống các biến cố không đồng bộ, không các việc trình diễn thực từ bên ngoài (nhấp chuột ), mà các công việc đồ họa chương trình ứng dung thực từ bên ngoài Ơ đây, hệ thống các biến cố trao đổi thông tin nhận trợ giúp, cho nên nó đã đem lại trình diễn và các nhiệm vụ tạo dựng thông tin; và đó, nó móc nối vào hàng đợi trung tâm cửa sổ quản lý Việc phân bổ các chức chương trình người sử dung và cửa sổ quản lý làm yêu cầu thêm việc tách chia các nhiệm vụ cách rõ ràng; đó các nhiệm vụ chuẩn cửa sổ quản lý (các nhiệm vụ giao diện người sử dụng) và các yếu tố đồ họa đặc biệt chương trình người sử dung phân biệt với nhau, tức chúng có ưu điểm khác sau: Các kết nhiều tiến trình độc lập có thể đúc kết hệ thống cưả sổ nói chung; đó, chúng làm sáng tỏ từ hai ví dụ sau đây: Kết các cảm biến (sensors) khác điều khiển công nghiệp thì khác Việc mô tả song song các kết nhiều chương trình với chức giống thì độ chính xác lỗi phần mềm muôn màu muôn vẽ Hệ thống trình diễn đồ họa có thể chuan dịch trên các máy tính khác mạng máy tính, xem mục 7.2.5 đây Điều này tạo chức sau đây: Kiểm tra mạng: trên máy tính tồn tiến trình đại diện (agent); độc lập với chương trình trung tâm, tiến trình đại diện này biểu thị trạng thái máy tính cửa sổ riêng lẻ (245) Quản lý mạng: việc phân bổ và quản lý các phần mềm có thể tổ chức không gian làm việc tập trung; đó, cụ thể trên máy tính có tiến trình làm cân thiết bị đầu cuối tồn tiến trình đại diện; mà tiến trình này phô bày việc xuất liệu trên màn hình trình diễn trung tâm Việc quản lý cửa sổ điều chỉnh tập trung; còn áp dung, việc nhìn thấy và cảm nhận (look and feel) thì giống Việc sử lý các biến cố có thể chuan giao cho hệ thống (chẳng hạn cho server); và đó, nó làm giảm phụ tải cho vi xử lý cuả các ứng dung cách thực thụ Ý tưởng này có nghĩa rằng, trạng thái hành cửa sổ thì không quen thuộc chương trình người sử dung; mà còn cho thấy, các giá trị các biến trạng thái (như vị trí cửa sổ, kích thước cửa sổ ) phải đượctạo lập cách rõ ràng server Các cửa sổ có thể xếp chồng lên có thể bị che phủ phần Đối với các phần không biểu thị các cửa sổ , có hai ý kiến: Một là, cưả sổ server lưu trữ, đó, kể từ cửa sổ mở phần cưả sổ bị che phủ (thí dụ mở rộng cửa sổ, hay di chuỷen cửa sổ chồng lên trên) thì nội dung cửa sổ điền vào cách tự động Điều này đòi hỏi nhiều dung lượng nhớ tíên trình server; nhưng, nó tránh các thủ tục bổ sung để điền vào nội dung cửa sổ còn thiếu chương trình người sử dung Hai là, trường hợp có nhu cầu, chương trình ứng dung phải biểu thị các phần cửa sổ còn thiếu cách mẻ Điều này đòi hỏi dung lượng nhớ ít hơn, vì vậy, người ta có thể sử dung các thủ tục chuyên dung chương trình người sử dung Cho nên, nó dẫn tới sức chịu tải động học cao cho vi sử lý người sử dung Việc thực thi cụ thể thì phụ thuộc vào hệ thông cửa sổ sử dung Nếu người ta phó mặc định này cho cấu hình tồn thời gian làm việc server(tạo lập việc lưu trữ) hay cho người lập trình người ứng dung; đó, có thể xuất trường hợp, lập trình ứng dung lưu trữ trên server, nó giảm thiểu và đó, việc ứng dung xảy lỗi vùng cửa sổ thiết lập; việc lập trình chanửg có lỗi gì Do đó, mục đích là phải quy định các quy ước chặt chẽ cho phô diễn (246) 7.2.4 Hiện thực ảo Mới đây, để mô hoàn toàn các cảnh chuyển động thì cần phải dẫn xen vào thiết bị xuất nhập đặc biệt; thiết bị này tạo không gian chiều (3 demension: 3D) giao diện người sử dụng Cụ thể, bao gồm các thứ tự chuột, các thị…; thứ này cho phép điểu chỉnh vị trí theo chiều; ngoài còn có các thiết bị nhập, mà vị trí đầu dò nó (tracker) xác định Những hệ thống tân tiến còn xác định trạng thái biểu lộ người nhờ hệ thống các camera và các sensor cảm biến khoảng cách Nhờ đó, các kiểu trình diễn động tác khoa chân múa tay (gestic) hay động tác bắt chước (mimic) là có thể thực cách dễ dàng Ngay kỷ thuật trình diễn đồ hoạ bổ sung thêm nhờ các hệ thống kính đặc biệt hay các thiết bị trình diễn khác; vì người ta có thể điểu hưởng việc trình diễn nào theo ý muốn mắt, để có không gian đầy ấn tượng xuất trước mặt khán giả Ngoài các khả này chưa làm đầy và ngoài chi phí kinh tế và kỷ thuật còn quá cao; nhiên, kỷ thuật thực ảo không gian mang lại suy nghĩ cho giao diện người sử dụng, mà chúng làm hoàn hảo thêm và tạo điều kiện cho áp dụng mới, mà với điều kiện này, việc cần thiết phải dẫn tới vấn đề bổ sung thêm cho trường hợp điều khiển từ xa Tất các khả và các vấn đề mô tả các mục trước chuyển tải cách trực tiếp ngữ cảnh ba chiểu (3D); đó, giao diện 3D, việc phân loại hệ thống nêu trên coi là hoàn mỹ cấu trúc client/ server 7.2.5 Quản lý giao diện người sử dụng Vai trò đặc biệt giao diện đồ hoạ là chiếm lĩnh việc quản lý các đối tượng, mà người gọi là hệ thống quản lý giao diện người sử dụng (user interface management system:UIMS) Việc quản lý này chính là quản lý các gói thông tin phần mềm Với trợ giúp việc xuất nhập các thiết bị khác (như chuột, bảng đồ hoạ, loa âm thanh…), người ta có thể phân đoạn các thủ tục đồ họa khiết để nhằm dễ dàng quản lý biến cố nhập và mong muốn xuất Hình ảnh thông thường giao diện người sử dụng chính là trình bày hình thái các đối tượng đồ hoạ (thí dụ thu hẹp cửa sổ hay sử dụng các biểu tượng…), điều này đạt có bước quản lý này Giao diện này thì độc lập với giao diện đồ họa người sử dụng (graphical user interface: GUI) Giao diện đồ họa người sử dụng mô tả nhờ danh sách gồm các thủ tục, các đối tượng và các giao thức Để thiết lập quản lý có nhiều phương pháp khác Đó là việc trình bày các quy tắc cho các biến cố và thiết lập việc quản lý lập trình hệ thống quản lý giao diện người sử dụng (247) Thí dụ cách biểu lộ: Nếu biểu tượng (icon) dùng cho tài liệu, nó chọn (bằng cách nhấp nút chuột), lôi và sau đó buông vị trí mong muốn Việc lôi và thả này (drap and drop) tác dụng lên hệ thống quản lý giao diện người sử dụng; đó, tài liệu chi tiết di trượt và biểu thị tới vị trí muốn thiết đặt người sử dụng Kết gọi hệ thống kết các hình vẽ đồ hoạ biểu tượng (thí dụ biểu tượng các tài liệu văn thì dấu mình cửa sổ chủ đề printing, biểu tượng máy in printer thì dẫn tới trạng thái in, máy in làm việc tờ giấy in tài liệu dẫn chậm chạp…) đảm nhiệm hệ thống quản lý giao diện người sử dụng và chúng thì giống các chương trình người sử dụng Cách làm vừa nói có thể viết các ngôn ngữ lập trình hay ngôn ngữ logic tả thực Ưu điểm hệ thống quản lý giao diện người sử dụng là chỗ, nó có thể thay đổi cách dễ dàng và tập trung Cho nên, việc làm thích hợp các chức cần thiết các việc sửa lỗi… có tác dụng cố định giống tất các chương trình người sử dụng Khác với các thành phần giao diện người sử dụng chuẩn, các chương trình ứng dụng, các giao diện chuẩn này giống và chúng phân loại các nhà thiết kế hệ điều hành; đó, tình trạng này có vẻ khác các thành phần đồ họa chuyên dụng Ở đây, nỗ lực người lập trình là cần thiết, nó tận dụng chương trình Đồng thời, để đơn giản hóa công việc lập trình này và phép việc lập trình tương tác mà không cần biểu thị các chức giao diện người sử dụng, người ta nhận nhiều phương pháp khác nhau: Tạo lập các tệp tin đặc biệt (recource files): Trong trình soạn thảo đồ họa hay hộp dụng cụ kết cấu tài nguyên hệ thống quản lý giao diện người sử dụng, người ta có thể kết hợp với cách phù hợp các yếu tố menu, biểu tượng (icon), các nút chọn (select button), các biến cố chuột, các chuỗi âm (tone sequence)… Các biến cố dẫn tới các cấu trúc tệp tin các tệp tin nguồn và nạp hay sử dụng thời gian vận hành hệ thống quản lý giao diện người sử dụng Các tên (được quy định các trình soạn thảo )của các đối tượng hình thành nên các chương trình người sử dụng, nhằm áp dụng các đối tượng thích hợp có trợ giúp giao diện đồ họa người sử dụng Tạo lập mã chương trình (programm code): Song song với việc tạo lập các tác động đồ họa (tương tác trực quan) và các phản ứng với trợ giúp trình soạn thảo đồ hoạ, điều cần thiết là phải mô tả cách đầy đủ các gọi chương trình (program call) cho giao diện đồ họa người sử dụng ngôn ngữ lập trình nào đó thành tệp tin Nếu tệp tin biên dịch, chúng ta nhận ảnh đồ họa hệ thống quản lý (248) giao diện người sử dụng Một thí dụ đặc trưng cho hệ thống lập trình, lập trình kiểu này là ngôn ngữ lập trình DELPHI hãng Borland; hệ thống này tạo lập mã chương trình lập trình hướng đối tượng PASCAL 7.3 Hệ thống cửa sổ và hoạ tiết Unix Giao diện người sử dụng Unix đã tiêu chuẩn hoá môi trường soạn thảo sở (Common Desktop Envionment: CDE) UNIX-98 và UNIX99 Việc thực thi có ý nghĩa các hệ thống Unix này liên quan đến hệ thống các cửa sổ đặc biệt, gọi là hệ thống X-Windows Sau đây chúng ta nghiên cứu hệ thống cửa sổ này tác dụng nào (?) Một các dự án quan trọng năm 80 là dự án ANTHENA viện công nghệ Bossten; đây, người ta bắt đầu thử nghiệm nhằm thiết đặc phạm vi công việc cho các máy tính nối mạng với Một phần quan trọng dự án đã nhận tài trợ hảng Intel; đó là việc thiết lập giao diện người sử dụng; giao diện này tồn mạng cách phân bổ và độc lập với máy tính dùng Người ta gọi phần này là kế tục hệ thống cửa sổ trước đó (Window System) phát triển cách đơn giản để trở thành hệ thống có tên X-Window-System Trong các mục sau đây, chúng ta muốn xem xét hệ thống này cách kỹ càng Khi đó, chúng ta đạt việc làm sáng tỏ các mô hình phác thảo đồ họa 7.3.1 Phác thảo đồ họa kiểu client/ server với hệ thống X-Window Hệ thống X-Window thì bao gồm thư viện đồ hoạ Xlip; thư viện này trình tiện dụng các tiến trình server sử dụng; tiến trình server chứa đựng cửa sổ quản lý và các công cụ thực thi xuất nhập trên giao diện người sử dụng Hình 7.9******************** Bản phác thảo đồ họa kiểu client/server thực cách đơn giản thư viện Xlib Để tạo kết nối với server để mở đầu trao đổi, client phải thực gọi hệ thống XOpenDiskplay(); gọi hệ thống này chứa đựng tên máy tính và số liệu màn hình là đối số; tất các nhiệm vụ tiến hành cách tự động địa này Nếu nhiều tiến trình cùng thực gọi hệ thống này trên các máy tính khác nhau, đó, nhiệm vụ các tiến trình này xảy trên và server mà thôi Những thông tin có lợi mạng có thể rõ trên màn hình nói chung, mà trước đó không cần phải tu chỉnh chương trình người sử dụng Các thông tin vị trí và kích cở cửa sổ người sử dụng xếp cách tương tác trên màn hình, các thông tin này thì quen thuộc server (249) Một tiện dụng muốn cho thấy các liệu và cửa sổ nó, trước heet, nó phải bắt đầu dò tìm với lệnh XGetWindow() 7.3.2 Phác thảo cửa sổ với hệ thống X-Window Thư viện Xlip chứa đựng chức đồ họa đơn giản với các hình thức trình diễn khác Đối với cửa sổ tổng hợp với trượt, xem hình 7.10, người sử dụng số lượng lớn các gọi hệ thống các chức sơ cấp này Bản phác thảo logic việc tạo lập và đặt tên cửa sổ hệ thống XWindows là rõ ràng và đơn giản Xuất phát từ cửa sổ sở, tất các cửa sổ (được định nghĩa theo đó) biểu thị hình chữ nhật cửa sổ sở này; và đã nói, cái đó trở nên mẫu bài báo tách biệt (clipping) Dưới khái niệm cửa sổ, người ta hiểu đó là hình chữ nhật sơ cấp Hình chữ nhật này chiếm đường biên và mẫu nền, nó định nghĩa trên bình diện thư viện Xlip Hình 7.11 hệ thống các cửa sổ khác nhau; đây, cửa sổ biểu thị chữ cái Mỗi cửa sổ có thể chứa đựng hay nhiều cửa sổ (subwindow), kiểu cấu trúc này biểu thị qua cây, mà điểm gốc là cửa sổ sở (root window) Cửa sổ sở là toàn cửa sổ màn hình 7.3.3 Mở rộng kiểu dáng đồ họa Trên sở các chức đơn giản thư viện Xlib, các lớp cao phải thiết lập với các chức cao Lớp trung gian các gọi hệ thống chương trình người sử dụng và các chức chi tiết hoá thư viện Xlib gọi là Xtoolkit (hộp công cụ) và nó có thể thực khác Các đối tượng đồ họa lớp này gọi là Dialogobjects (các đối tượng hội thoại), chúng tạo lập khác và tuỳ thuộc vào người lập trình Để giữ vững các ưu điểm giao diện người sử dụng thống trên bình diện cao và để tiêu chuẩn hóa các họa tiết (motif) và các tính chất (look and feel) các đối tượng hội thoại, giao diện người sử dụng thống cho Unix để cập Đó là sở phần mềm đồ họa mở rộng (open software foundation), chúng dẫn giải theo hiệp định các nhà sản xuất Bên cạnh hướng dẫn tạo kiểu dáng (motif style guide), còn có mô tả việc quản lý cửa sổ cần thiết (motif window manager), chúng bao gồm đối tượng hội thoại nhằm mở rộng kiểu dáng (motif widget) lập trình hay thiết kế đồ họa Tuy nhiên, các mô hình tạo màu và tạo ảnh mành đồ họa có khuynh hướng loại bỏ cách trực tiếp các chức thư viện Xlib Mành đồ họa này làm việc với các fonts điểm ánh (pixelfonts) chưa xử lý Từ lý này, hãng máy tính SUN đã thiết đặt hệ thống cửa sổ mạng máy tính (network-windowsystem: NEWS) Hệ thống này là sở để mở rộng ngôn ngữ mô tả trang (postscript) để sử dụng các fonts và các đối tượng đồ họa đã xử lý (250) Ở hệ thống X-Window, với các đối tượng hội thoại, người ta nhận các đặc điểm sau đây: + Các nút bấm mô có thể ấn lên xuống (XmPushButton) + Các bài texts (cố định) có thể trình diễn (XmText) + Các trượt có thể làm dịch chuyển nội dùng trên cửa sổ (XmScrollBar) + Các trường nhập đồ họa có thể di chuyển (XmDrawingArea) + Các tồn cửa sổ chọn tệp tin (XmFileSelectionBox) Độc lập với các tác động họa tiết đồ họa, hảng máy tính SUN còn tạo thêm hộp công cụ Xview, còn hảng máy tính AT&T tạo thêm hộp công cụ Xt+, hai biên soạn thư viện Xlib Giao diện dùng lập trình ứng dụng mô tả các họa tiết nhờ ngôn ngữ đã chuẩn hoá, gọi là ngôn ngữ giao diện người sử dụng (user interface language: UIL) Trong ngôn ngữ này, các yếu tố giao diện người sử dụng cần thiết có thể tiếp nhận để mở rộng hàm số và hình học Hình 7.13 phân lớp phần mềm đồ họa mở rộng Hình 7.13************************* Đối với nhiệm vụ khác nhau, hộp công cụ có công dụng sau đây: + Việc tạo hay xóa các họa tiết thiết kế đồ họa mở rộng có thể thực cách động + Việc thay đổi các họa tiết mở rộng có thể thực nào thời gian quản lý cửa sổ + Việc xuất- nhập hay việc tạo lập trình diễn quay hồi quản lý tập trung + Các chế trao đổi thông tin các ứng dụng các cửa sổ chúng luôn luôn thiết đặc sẵn sàng Điều này tạo thiết bị đệm tập trung, còn gọi là cấu bảng kẹp để cắt và dán (clipboard- mechanismus ò cut-and-paste) Các nhiệm vụ này giải hộp công cụ các họa tiết với các phương tiện lập trình hướng đối tượng Hộp công cụ chứa đựng các cấu di truyền lại và các kiểu xếp tổng hợp, mà người lập trình có thể sử dụng cách thuận lợi Người ta nhận thấy rằng, với các nhiệm vụ lập trình đồ họa thông thường, người ta đạt chức Xlib cho ứng dụng cách tiện lợi, không đòi hỏi nhiểu công việc phức tạp Mỗi mở rộng họa tiết đồ họa thì biểu thị số thuộc tính nào đó; tức là, nó đặc trưng cho tính nào đó; mà với tính này, không gian nhớ phân bổ Người ta có thể đọc thấy che phủ nhớ này khởi xướng đối tượng từ tệp tin nguồn Có hai kiểu mở rộng họa tiết đồ họa Đó là kiểu đơn giản và kiểu kết hợp Sau đây, chúng ta nói hai kiểu này: (251) Kiểu mở rộng đồ họa đơn giản: Đó là kiểu đồ họa nguyên sơ; chúng dẫn xuất từ cấp hạng XmPrimitives (nguyên sơ) và biểu thị sát cạnh trên màn hình Người ta lưu ý rằng, lớp dẫn có ý nghĩa đặc biệt lớp phía trên nhờ các thuộc tính (với các biến) và các phương pháp (với các thủ tục) Kiểu mở rộng đồ họa kết hợp: Kiểu mở rộng này có tác dụng thùng đựng đa (container), chúng chứa đựng nhiểu kiểu đồ họa mở rộng khác nhau, gọi là các đồ họa khởi thuỷ (primitives) Các thùng đựng đa xác định cách bố trí hình học các kiểu đồ họa mở rộng chứa đựng Hình 7.15 là thí dụ dáng vẻ bên ngoài cửa sổ; cửa sổ này làm nhiệm vụ xuất các thông tin tới người sử dụng Kiểu mở rộng đồ họa kết hợp với thùng đựng đa này còn gọi là kiểu mở rộng hổn hợp hay kiểu mở rộng xếp Hình 7.15********************* Bên phải hình 7.15 là cấu trúc các đối tượng kiểu mở rộng kết hợp; cấu trúc này có liên quan tới quan hệ đã chứa đựng Kiểu đồ họa mở rộng hỗn hợp biểu thị là kiểu mở rộng cha (parent widget) Kiểu xếp kết nối cách trực tiếp với việc xếp các cửa sổ Bình thường, kiểu mở rộng có cửa sổ hình chữ nhật khép kín Nhờ đó, xếp cửa sổ xuất quan hệ chứa đựng xếp mở rộng Cửa sổ cha thuộc kiểu mở rộng cha, nó chứa đựng cửa sổ con; cửa sổ chứa đựng kiểu mở rộng tiếp theo… Cửa sổ cao (top- level-window) xếp các kiểu mở rộng định nghĩa công dụng gọi là kiểu mở rộng vỏ (shell-widget) Nói cách chính xác, nó chứa đựng kiểu mở rộng hỗn hợp, đó, tất các kiểu mở rộng khác chứa đựng, và nó dịch vụ cho việc trao đổi thông tin cửa sổ quản lý và xếp các kiểu mở rộng hổn hợp Nhưng, nó có thể chứa đựng kiểu mở rộng vỏ tiếp theo; đó chính là nút (pop-up) Nút mở các cửa sổ (để hướng dẫn, quản lý hay thông báo lỗi…), các cửa sổ này có thể thình lình xuất và lại biến mất… 7.3.4 Phương pháp diễn tả các kiện Tiến trình server hệ thống X-Window bao gồm vấn đề tương tự đã đề cập thư mục 7.2.3; vòng lặp với gọi hệ thống XtMainLoop(), chúng ta kích chuột trên đối tượng hội thoại, thì cái gì xảy ? Cửa sổ điều hành hệ thống X-Window phân bổ tất trình diễn cho đối tượng hội thoại; đó trỏ chuột đứng trên đối tượng này và nó kích hoạt ( vị trí phía trên danh sách trình diễn) Nếu cửa sổ không quan tâm (252) tới biến cố này, thì đó, nó đạt xếp từ lên trên, tới cửa sổ cha và tiếp tục khi: là nó đạt tới cửa sổ gốc, là nó làm ngơ không hay biết gì Bổ sung thêm khả này, người ta có thể điểu chỉnh nhờ việc gắn chặt các yếu tố muốn quan tâm (như việc thảo mặt nạ chứa đựng các kiện – eventsmask-của cửa sổ) Điều cần thiết cửa sổ là phải dẫn tới các yếu tố các cửa sổ kế cạnh (sắp xếp theo phương ngang) nhờ che phủ (grabbing) đã nói Điều này thì có lợi, người ta muốn lôi đường thẳng vào phần che phủ cửa sổ; đó, chương trình để lôi các đường thẳng cần dùng điểm thứ hai cửa sổ che phủ nó để kết thúc việc trình diễn Bây chúng ta có thể định nghĩa nào phương pháp diễn tả biến cố cho ứng dụng cụ thể? Về điều này, phản ứng mong muốn phải lập trình thủ tục tác động hay lập thức gọi trở lại (callback-routine) và móc nối với thủ tục đặc biệt XtCallBack() thời gian chạy (runtime) Nếu biến cố xuất XtMainLoop(); đó, biến cố kéo dài tiếp tục đạt biến cố đại diện các cửa sổ Một đại diện biến cố có thể là nó tự biểu thị biến cố, là nó nhìn lui bảng chuyển đổi; đó, thủ tục nào đó gọi Bấy giờ, vị trí này, đầu tiên, lập thức gọi callback gọi tới Vấn đề biểu thị sơ đồ là chỗ, lỗi lập thức callback, sửa chữa lỗi tay người sử dụng là không thể Mỗi trình diễn có thể được xảy XtMainLoop(), nghĩa là có cái gì đó hạn chế tiếp diễn lập thức callback Một khả là phải ghi chép lỗi và phải kết thúc lập thức callback Ở vị trí thích hợp chương trình, người ta phải đọc chọn trên các lỗi xuất lần cuối 7.4 Hệ thống cửa sổ Windows NT Giao diện người sử dụng Windows NT phát triển từ giao diện cũ Windows 3.1 Điều đặc biệt là, giao diện 16 Bit cũ để lập trình xuất/ nhập đồ họa (application programming interface: API) mở rộng thành 32 Bit, gọi là Win 32 API và trang bị thêm các chức hệ điều hành Thí dụ, người lập trình có thể truy cập trên hệ điều hành đa nhiệm, đa tiến trình, có ưu tiên và an toàn Hệ điều hành này sử dụng hệ thống nhớ 32 Bit tuyến tính Tuy nhiên, tất các tên (tên các tệp tin, tên các chức năng…) giữ nguyên theo hệ thống cũ, có các thị và các thủ tục thì không có quan hệ gì với mô hình nhớ dựa trên dãy tuần tự, mà có quan hệ với mô hình nhớ ảo tuyến tính Các chức bổ sung cho việc đồng bộ, cho các chế an toàn đối tượng và cho việc quản lý nhớ thì cho truy cập trên phần lớn nhân hệ điều hành Windows-NT-Executive (253) Hệ thống giao diện mở rộng Win32-API đã tạo các hệ thống (xem hình 1.7) Do đó, tính chất look-and-feel giao diện đã làm thích hợp cách mạnh mẽ hình dáng bên ngoài Windows 3.1 quen thuộc, nhằm đơn giản hóa quá độ từ Windows NT tới người sử dụng Ở version of Windows NT, phương pháp hợp lý không làm thay đổi giao diện hệ thống Win32-API các nhân hệ điều hành, mà còn làm thích hợp các đặc trưng look-and-feel Windows 95, nó là phần kế tục Windows 3.1 Tuy nhiên, Windows NT là hệ thống đa nhiệm, không phải là hệ thống đa người sử dụng Điều đó có nghĩa rằng, nhiều người sử dụng không có thể làm việc đồng thời trên máy tính Với điều này, phương pháp hợp lý là, tồn các tiến trình đại diện phải là các người sử dụng xác định Khác với hệ thống X-Window, Windows NT, không có giao diện người sử dụng phân bổ trợ giúp Mỗi ứng dụng dự kiến thực nhiệm vụ đồ họa, nó phải thực nhiệm vụ này trên máy tính cục bộ, không thể thực trên máy tính khác, gọi là displaycomputer Nhưng, người ta muốn đạt nhiệm vụ thiết kế đồ họa với các tiến trình khác trên các máy tính khác nhau, đó, trên máy tính này, tiến trình phô diễn người sử dụng lập trình phải khởi động; tiến trình này đón nhận các liệu (dùng cho ứng dụng) qua mạng máy tính (xem chương các cấu trúc trao đổi thông tin khác nhau) Khi đó, nhiệm vụ chuyển giao trên displaycomputer hệ thống đồ họa 7.4.1 Các cấu trúc sở Hệ thống Win32 phân thành phận, các phận này thì phù hợp với hệ thống giao diện Win32-API Giao diện Win32-API bao gồm các thành phần riêng lẻ sau đây: + Cửa sổ quản lý (windows manager); + Giao diện thiết bị đồ họa (graphic device interface: GDI); + Bộ kích tạo thiết bị đồ họa (graphic device driver: GDD); + Các chức hệ điều hành (với tệp tin kernel 132.dll); + Các chức khuyên giải (console function) việc xuất/ nhập text Các phận này chứa đựng các thư viện, gọi là thư viện kết nối động (dynamic link library: DLL); khởi động, chúng nạp hệ thống Giao diện thiết bị đồ họa GDI cho phép vẽ phác thảo và thao tác các đối tượng đồ họa tổng thể đơn giản, điểm, đường (thẳng và cong), vòng tròn, cửa sổ, các trượt…Các chức đồ họa soạn thảo trên các chức kích tạo đồ họa; các kích tạo này lại gọi tới kích tạo nhân hệ điều hành và đó, các phần cứng điều khiển thích ứng Vì lần gọi các gọi các chức đồ họa chương trình người sử dụng thiết lập chuỗi các nhân hệ điều hành bao gồm giao diện thiết bị đồ họa GDI, kích tạo thiết bị đồ (254) họa GDD,…và đó vô cùng thời gian! Vì thế, để gia tăng hiệu suất, công nghệ có tên arttribute caching (sự trữ dấu thuộc tính) điền thêm: Người ta thấy có nhiều gọi hệ thống chương trình người sử dụng gặp với đối tượng tương tự; cho nên, chúng thu gom chương trình người sử dụng và dẫn tiếp là thông tin riêng lẻ tới giao diện thiết bị đồ họa GDI Đối với thư viện GDI quan tâm công nghệ tương tự Đó là công nghệ batching (sự phân đợt) cho các phản ứng nhanh Tất việc gọi hàm chức nạp vào hàng đợi, hàng đợi đầy hay nhập các liệu Tiếp đó, đệm tổng thể chuyển giao cho hệ thống Win32 thông tin Cơ chế này xảy nhanh, không có hiệu ứng lùi xuất trình diễn đồ họa trên máy tính chuẩn Trình điều hành cửa sổ tạo đặc tính look-and-feel, đó, nó dịch vụ các cấu cửa sổ ví các nút ấn để mở rộng hay thu nhỏ cửa sổ, tạo các trượt, kể việc quản lý danh sách trình diễn (thí dụ cửa sổ nào che phủ tên cửa sổ nào); … ngoài ra, nó thiết đặt việc nhập liẹu cho cửa sổ chương trình tương ứng Vì vậy, nó còn sử dụng các thủ tục xuất/ nhập, để thực chương trình ứng dụng độc lập với các thiết bị phần cứng tồn (thí dụ kiểu chuột) Vì MS-Windows coi là hệ thống chiếm ít nhớ, đó, cửa sổ quản lý không lưu trữ phần cửa sổ không nhìn thấy, mà nó đảm nhiệm vụ để báo hiệu cho ứng dụng, cửa sổ phải phác họa cách mẻ; vì trước đó các phần cửa sổ không thể nhìn thấy thì đã nhìn thấy Ngay cả, việc quản lý nhớ trung gian (ở hệ thống mở rộng) các đối tượng (thí fuj clipboard) nó thực Các chức khuyên giải là các chức tập trung để xuất/nhập các ký tự và các hệ thống sử dụng (POSIX, OS/2, MS-Windows…) Việc xuấtnhập các bài text các chương trình bao gồm các giao diện người sử dụng hướng ký tự không có trợ giúp đồ họa, chúng thực cách có mục đích các cửa sổ đặc biệt, gọi là cửa sổ khuyên giải (consolewindow); cửa sổ này hệ thống mở cách tự động 7.4.2 Vài nét thiết kế giao diện người sử dụng Ngược lại với hệ thống mở rộng X-Window, hệ thống cửa sổ Windows NT cần người ta nắm vài loại cửa sổ tổng hợp Thực ra, đây phân biệt có hai loại cửa sổ: cửa sổ chính và cửa sổ phụ Sau đây, chúng ta muốn khảo sát vài kỷ thuật tương tác bản, chúng trợ giúp hệ thống giao diện Win32- API với các đối tượng và các phương pháp phù hợp Mỗi cửa sổ chính Windows NT (cũng giống cửa sổ họa tiết hệ thống X-Windows) có phần chính sau đây: (255) + Khung cửa sổ (frame): nó có thể sử dụng kích chuột để thu nhỏ hay phóng to; + Thanh ghi tiêu đề (title bar): đó người ta có thể nhìn thấy tên ứng dụng; + Biểu tượng (icon): nó là biểu trưng ứng dụng; + Thanh cuộn (scroll bar): người ta dùng muốn xem các phần nội dùng chưa thể cửa sổ; + Thanh menu (menu bar): các trường khác mà người ta cần tới; + Các nút ấn điều khiển (control pop-up): dùng để thu nhỏ, phóng to hay đóng cửa sổ lại; + Thanh trạng thái (status bar): trên đó, các thông tin trạng thái dẫn Các cửa sổ có thể xếp chồng lên hay che phủ; đây, cửa sổ hoạt động là cửa sổ không bị cửa sổ khác che phủ, nó biểu thị là cửa sổ lên phía trước các cửa sổ thể trên màn hình Thanh cuộn dùng làm dịch chuyển thích ứng để thể khoảng tài liệu lên cửa sổ soạn thảo Khoảng tài liệu nhìn thấy trên màn hình này là phần liệu toàn tài liệu chứa đựng cửa sổ này Cửa sổ chính này còn có nhiều tính chất cần lưu ý Thật vậy, người ta có thể định nghĩa sử dụng các cửa sổ phía với nhiều cách khác Khác với hệ thống mở X-Window, loại này có vài khả Vì Windows NT cách thể các liệu tập trung dùng phổ biến, đó tệp tin, người ta có thể mở cửa sổ riêng lẻ; đó, trên tiêu đề, không còn thấy biểu tượng chương trình tiện dụng, mà xuất các liệu Bản chất cửa sổ liệu cửa sổ chính chương trình ứng dụng điều chỉnh nhờ giao diện đa tài liệu Giao diện này cho thấy rằng, cửa sổ liệu còn gọi là cửa sổ mở rộng phù hợp với mức độ bên ngoài và bên cửa sổ tiện dụng Ngoài ra, tiêu đề cửa sổ liệu bỏ đi; tên thì làm lan rộng cùng với tên ứng dụng dạng vừa có tên tệp tin vừa có tên ứng dụng; còn biểu tượng và nút điều khiển tiêu đề liệu xuất menu ứng dụng Hình 1.18 cho thấy: bên trái thì cửa sổ liệu là phần thu nhỏ trên cửa sổ ứng dụng; còn bên phải thì cửa sổ liệu nới rộng trùng khít với cửa sổ ứng dụng Cửa sổ liệu kết nối trực tiếp với cửa sổ ứng dụng Khi cửa sổ ứng dụng đóng lại, đó, cửa sổ liệu đóng lại cách tự động Nếu các cửa sổ liệu thuộc tệp tin riêng lẻ, đó, khả này phải sử dụng sớm để chia xẻ cửa sổ chính thành các cửa sổ thành phần Do đó, người ta có thể dự định nút nẩy đồ họa cho cuộn, công việc này làm xuất tách Việc mô tả các liệu cửa sổ là nhiệm vụ ứng dụng cụ thể nào đó Khác với cửa sổ chính, các cửa sổ phụ có kích cở cố định và sử dụng để thông báo hay để mô tả các thông số bên đó nó gọi là cửa sổ đặc tính tờ biểu Các cửa sổ phụ lưu ý tới vị trí tương đối chúng cửa (256) sổ chính và kết nối chặt chẽ cửa sổ chính Chẳng hạn, cửa sổ chính là cửa sổ hoạt động và có thể nhìn thấy cách đầy đủ, đó, cửa sổ phụ lộ cách tự động để nhìn thấy Thí dụ, cửa sổ phụ có thể vừa gọi xong thì trở thành hộp thoại để tìm và thay thể, hộp thoại in ấn, hộp thoại chọn font, hộp thoại chọn màu, các cửa sổ trộn màu và cửa sổ thông báo Qua cửa sổ chính và cửa sổ phụ, hệ thống giao diện Win32-API còn tạo số lượng lớn các đối tượng hội thoại khác nút nẩy điều khiển, các nút tuỳ chọn, các nút kiểm tra, hộp các danh sách chọn tĩnh động, các danh sách này làm việc menu đầy vơi hay các tệp tin bày trình quản lý các tệp tin với các biểu tượng và các bài text Ngoài còn có các ô với các bài text đã có sẵn hay có thể soạn thảo thêm vào và các dụng cụ 7.5 Các bài tập chương Bài tập 7.1 Về giao diện người sử dụng và lập trình trực quan Nếu chế giải pháp tập trung vấn đề kiểu tương tự thực tế thì đã rõ, người ta có thể mô hình hoá nó hình vẽ giao diện người sử dụng a) Bên cạnh các quan hệ cố định đơn giản mô hình và giải thuật tạo lập Sự mô này thiết lập cách đơn giản, nghĩa là đó, tránh phiền phức, thí dụ nhờ việc sử dụng các biểu tượng b) Nếu người sử dụng phải nhận thức logic bên chương trình, đó, điều này thiết kế cho việc học tập sáng tạo; đó, đầu tiên tính tổng hợp cô đúc và thuận tiện quá trình sử dụng Bạn hãy thực các nguyên tắc này cho ví dụ đơn giản Đối với việc quản lý các liệu, người ta có thể sử dụng các công việc nhà kho lưu trữ các hình ảnh người lập trình Ở đây, việc cung cấp, việc xếp các bao gói, việc chất kho và phân loại thì đã rõ, chúng tồn tham chiếu người sử dụng Cho cái đó bạn hãy thiết kế sơ đồ, mà đó, các đối tượng tệp tin (các thuộc tính và các phương pháp) thu xếp cho các đối tượng trực quan Bài tập 7.2 Bảng phân ảnh màu Bạn hãy trình bày vấn đề sau đây cách chặt chẽ quan điểm cá nhân bạn: (257) a).Giả sử, chúng ta mô tả cách trực tiếp màu sắc điểm ảnh cho đồ họa đúng theo yêu cầu mà không cần CLUT với độ chính xác 24 Bit, gọi là độ sâu màu Bộ nhớ nhắc lại ảnh cho ảnh có kích cở 1024x768 (điểm ảnh) tối thiểu phải bao nhiêu? Và, bao nhiêu, nó phải lưu trữ ảnh này trên không gian chiều ? b) Bộ nhớ nhắc lại ảnh tối thiểu phải bao nhiêu, 16 Bit màu có thể đồng thời nhìn thấy và chuyển chỗ bước với CLUT là có thể? c) Bạn hãy khái quát và thiết lập công thức cho nhu cầu nhớ s không có CLUT độ sâu màu khoảng f Bit/một điểm ảnh và số lượng điểm ảnh là N nhu cầu nhớ là sCLUT/s và bạn hãy rằng, giả sử quan hệ đó thì nhỏ với điều kiện N>n Bài tập 7.3.Giao diện người sử dụng hệ điều hành phân bổ Trong mục 7.2.3, phác thảo server trình diễn dẫn Quyết định cho cái đó có chương trình, mà chúng có thể nạp hay biểu thị bài text và ảnh trên Internet; đó là các trình đọc lướt siêu text Netscape và Internet Explorer Các chương trình này bổ sung trên máy tính Dataserver Internet đảm nhiệm công việc đó; các việc dò tìm các nhiệm vụ tương tự có thể thực cách cấp tốc trình Browser Vì vậy, người ta có thể hoàn thành nhiều công việc với hệ thống Application client và Display server a) Bạn hãy so sánh các quan hệ client/ server hai hệ thống b) Những kiểu trao đổi thông tin nào thống lĩnh client và server? Bài tập 7.4 Cấu trúc client/ server Bản phác thảo cục hệ điều hành Windows NT có ưu điểm và nhược điểm nào so sánh với hệ thống phân bổ X-Window? Bạn hãy suy nghĩ và tiến hành với các ứng dụng như: + Điều khiển các tiến trình nhà máy thép mạng máy tính + Đánh giá các số liệu các phòng ban khác qua mạng cục các máy tính nhà máy + Thiết lập phần mềm quản lý cho nhóm máy tính kết nối mạng (258) (259)