Những quan niệm về hệ điều hành (operating system), các lớp của hệ điều hành, các giao diện và máy ảo, kiến trúc hệ điều hành, sự giao kết phần cứng và phần mềm, cấu trúc nhiều bộ vi xử lý (multi- processorsystem), các bài tập của chương 1 là những nội dung chính trong Bài giảng Hệ điều hành - Chương 1: Mở đầu. Mời các bạn tham khảo.
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 phần mềm chứa đựng tất chương trình cần thiết để điều hành máy tính thự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 chức ứng dụng xử lý text Các phần mềm hệ điều hành dùng thị trường phần mềm chuẩn hố Tất có chung chức kết nối phần cứng máy tính ( vi xử lý, nhớ thiết bị xuất nhập) phần mềm ứng dụng ( files, chương trình người sử dụng…) Ta định nghĩa cô động: Hệ điều hành tổng hợp chương trình sử dụng phương tiện điều hành để quản lý điều khiển Định nghiax khơng địi hỏi đa hồn mỹ mà thực nghiệm cách uyển chuyển để mô trạng thái tức thời khái niệm thay đổi Sự khác định nghĩa thứ chỗ, chương trình dịch vụ ( biên dịch kết nối) gắn vào hệ điều hành, lại tách rời định nghĩa thứ hai Sau đây, chấp nhận quan điểm trung hoà: Hệ điều hành phần mềm có ứng dụng độc lập 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 cần thiết chủ quan điều tất nhiên 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 mà không cần tới trợ giúp phù hợp với yêu cầu chương trình ứng dụng Sự trợ giúp phụ thuộc vào cấu hình người sử dụng (NSD) định nghĩa biến đổi q trình cơng tác Nếu trước việc quản lý vi xử lý, nhớ việc xuất nhập thuộc hệ điều hành, ngày giao diện người sử dụng đòi hỏi với thành phần độ lớn lớp khá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 phần mềm hữu 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ệ phần mềm 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 thành phần Điều cách chặt chẽ hình 1.2 với mơ hình hệ thống lớp Lớp a Lớp b Lớp c Lớp d User1 User User Compile Editor Các ứng dụng… r Dịch vụ hệ điều hành Phần cứng Hình 1.2 Mơ hình lớp 1.2 Các giao diện máy ảo Ở nói tới mơ hình lớp Sự tương đối việc lớp ( 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 Đó trường hợp việc sử dụng procedure lớp b chương trình lớp a Nếu xuất phát từ đó, tất 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 chương trình tiện ích hay u cầu chương trình tiện ích hệ điều hành yêu cầu hệ điều hành đới với phần cứng 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 xếp cách cạnh Những chức dịch vụ lớp ( procedure, liệu giao thức tiện dụng chúng) người ta tập hợp giao diện Chương trình mà mang lại khả dịch vụ tập hợp thành dãy lệnh, mà dịch vụ sử dụng khả riêng Lớp tạo phần cứng máy tính Vì chức chúng điều chỉnh qua giao diện, người ta coi chúng máy Tuy nhiên, máy khơng tự làm việc được, khơng phải máy thực người ta gọi máy ảo Chức máy ảo tổng thể tạo cộng tác máy ảo riêng lẻ Cho đến có phân biệt máy vật lý máy ảo Bây có thêm loại thứ 3: máy logic Một số người cho máy logic máy ảo, số người khác tách biệt chúng thành máy vật lý máy ảo Một ổ đĩa ảo mơ hình hố trường khối nhớ mà xem đồng nghĩa với số khối Ngược lại, ổ đĩa logic mơ tả cụ thể hơn, hiểu ổ đĩa cứng với nhiều điểm khác biệt thời gian trễ ưu tiên vận chuyển liệu ( data) Hình 1.3 điều Với ý tưởng đó, người ta đưa khái niệm quản lý khối nhớ, chỗ nhớ ổ đĩ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 ổ đĩa ảo Máy ảo (Virtual Machine) Máy logic Drive Drive Máy vật lý Máy vật lý Máy logic Hình 1.3 Minh hoạ máy vật lý, máy logic máy ảo Trong kiểu kết hợp thứ 3, việc khảo sát máy logic cụ thể độ 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 việc che phủ lớp liền kề phía ( 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 đị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ụ cơng 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 độ 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 chức ứng dụng thông thường nạp để làm nhân hệ điều hành ( operating system kernel) 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 Đó phần mềm để quản lý thiết bị, nhớ 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 DIỆN NSD (User 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 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 dẫn tới gọi procedure bình thường theo khn khổ định Vì việc nạp nhân hệ điều hành nhớ thay đổi, chương trình tiện dụng luôn kết nối cách mẻ Ở hầu hết 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 xác procedure Cơ chế gọi bao gồm nhớ tham số ngăn xếp (stack) 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 địa lệnh ( instructionadress) ngăn xếp, đón nhận trạng thái địa lệnh kế sau nhớ tiếp tục thực lệnh địa Ở việc tự khởi động hệ thống máy tính địa đưa vào nhân hệ điều hành mô tả 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 trình gọi hệ thống 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 lệnh khơng thực đồng thời mà vòng lệnh địa nhớ ngừng đột ngột, ngắt phần mềm biểu thị 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 nhằm mở rộng khả truy cập mã cách hữu hiệu Nếu phần lớn máy tính bảo vệ trước chuyển đổi chương trình người sử dụng tất 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ý không cần người sử dụng thực tay Những vi xử lý chế ngự mức độ bảo vệ kế tiếp, nhiên nâng cao chi phí phần cứng vi mạch (chip) Để khắc phục lỗi khối dấu phẩy trơi ( Floating Point Unit: FPU) ngắt phần mềm sử dụng Việc khắc phục lỗi khơng chứa đựng hệ điều hành mà 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 vỏ ( shell) Từ đó, tất chương trình người sử dụng 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 hệ điều hành xảy qua kênh xuất nhập Trường hợp đơn giản, việc nhập ký tự qua bàn phím việc xuất qua thiết bị đầu cuối Sơ đồ sơ lược hình 1.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 phân bổ chức quản lý nhớ Dãy xuất / nhập phô bày TTY máy in Hệ thống file mouse đĩa mạng mềm tiến trình 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 hệ điều hành có nhiều mạnh khác Bởi lẽ, không hệ điều hành trợ giúp đồng thời nhiều người sử dụng, mà cịn 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 truy cập cách dễ dàng 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 cơng việc phải làm là, phải mơ tả lại chương trình hệ điều hành nhân ngôn ngữ C sau biên dịch, chúng chạy máy tính Tuy nhiên, việc chuyển đổi vài vấn đề cần phải hoàn hảo Các phiên Unix phụ thuộc nhiều vào phần cứng, trước hết phụ thuộc vào bề rộng từ (word- width) CPU Trong phiên sau ( Berkeley Unix Systems IV V) tu chỉnh 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 tới thực thi khác có cấu trúc sở khác biệt Unix Do loại số lượng gọi hệ thống đa dạng Việc chuyển đổi chương trình người sử dụng phiên khác thực giảm thiểu Để có trợ giúp, tổ chức khác thành lập Nỗi bậc nhóm X/Open ( bắc Mỹ Châu Âu) Một hiệp định công ty trường đại học đưa vài chuẩn khác Một chuẩn hệ thống chuyển đổi POSIX ( Portable Operating System Interface based on Unix) Unix, mà định nghĩa lượng dịch vụ sử dụng khác Tất nhiên chúng dịch vụ, không định nghĩa trực tiếp 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 buộc mọt thực thi Điều có ý nghĩa rằng, Unix thực chất 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 hệ thống tương đối đại, 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 thực nghiệm, bao gồm ý tưởng sau đây: Một hệ điều hành phải bao hàm chuẩn hữu (MS- DOS, 16 bitWindows, Unix OS/2) thị trường chấp nhận cách rộng rãi Nó phải chắn bền vững Nghĩa chương trình vừa tương hổ vừa không làm tổn hại hệ điều hành, lỗi xuất có hậu giới hạn Nó phải truy cập cách dễ dàng phần cứng có phiên thấp Nó khơng che phủ tất cả, mà phải đáp ứng cách dễ dàng yêu cầu chuyển đổi Điều quan trọng: phải hệ điều hành mạnh Nếu quan sát dự kiến này, người ta thấy, đ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 mạnh) đối lập với nó, MS-DOS tuyệt đối khơng bền vững, khơng mạnh hồn tồn khơng tương thích với Unix Tuy nhiên, tác giả đạt mục đích, sử dụng kinh nghiệm hệ điều hành khác biến điệu cách mạnh mẽ Việc phân lớp quan hệ gọi nhân phác thảo gốc trình bày hình 1.7 Nhân hệ điều hành mang tên Windows NT Executive, phần khối chuyển đổi trạng thái người sử dụng trạng thái hệ điều hành Để giải vấn đề thiết kế, ba tiêu chí quan trọng hệ điều hành nói tới Tính tương thích ( compatible) Đó khả đặc biệt hệ điều hành mà ta truy cập vào hệ điều hành riêng lẻ Với tư cách cấu hệ điều hành ảo, chứa đựng khả dịch vụ Windows NT Executive ( tức gọi hệ thống biểu thị mũi tên vẽ đậm 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 thông tin ( gọi local procedure, xem mũi tên vẽ nhạt hình 1.7) chương trình người sử dụng hay khách hàng Nếu server, chúng có quan hệ client/server Độ bền vững ( strengthen) Nó đạt nhờ phân chia chặt chẽ chương trình với nhờ việc ln ln giữ vững q trình ngoại vi (cơ cấu DOS ảo) chương trình chạy MS-DOS hay Windows Các chức đồng đều, việc truy cập(số liệu) trực tiếp tách phần cứng, với chức chương trình cũ chạy Những biện pháp phụ hệ thống files có độ xác lỗi cấu bảo vệ chuyên dụng để kiểm tra chọn files, mạng chương trình trợ giúp cho mục đích Độ thuận tiện (commodity) Đó khả bảo quản mở rộng, qua đó, hệ điều hành viết ngơn ngữ C, trao đổi mạnh phân lớp từ đầu Với lớp HAL (xem hình 1.7), phần cứng mơ máy ảo việc truy cập tới vi xử lý khác thu hẹp thay đổi cần thiết đơn thể Điều thú vị từ version 4.0 hệ thống Win32 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) hệ điều hành Win NT điều chỉnh 1.4 Sự giao kết phần cứng phần mềm Cấu tạo máy ảo cho phép giữ lại giao diện cách tương tự tới đơn thể thay đổi thực thi Do đó, có điều kiện để thực việc thực thi nhờ giao trộn qua lại từ phần cứng phần mềm Đối với khả dịch vụ đ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ẻ 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ể Hình 1.8 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à giao kết phần mềm qua biên dịch (compiler) thông dịch(interpreter), thực phần cứng qua 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ậ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 phần mềm mã p-code Đối với vấn đề vừa nêu, điều khác cần phải nói, trợ giúp chức mạng Với điều khiển mạng rẻ tiền hầu hết có chứa đựng tập hợp chip theo tiêu chuẩn, cấu nối tín hiệu có thời hạn làm việc định Tất chức giao thức cao để kết hợp gói liệu để tìm thấy lộ trình mạng phải nhớ phần mềm tích hợp thực hiện, điều làm giảm đáng kể khả vi xử lý nhiệm vụ khác(như giao diện người sử dụng, xử lý text…) Trên sở đó, điều khiển mạng giá đắt hơn, chức điều khiển mạng quản lý liệu di chuyển phần cứng, nghĩa 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ó 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 Ngồi ra, ngơn ngữ hình thức sử dụng để thiết kế lệnh cho máy khác hai vấn đề khơng cịn điều để nói Điều định cịn lại cần phải xem xét, giá thành, chất lượng tiêu chuẩn 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ý phương tiện điều hành điều quan trọng phải xem xét tồn quan hệ phụ thuộc 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 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 đơ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) nhớ (main memory) để xây dựng hệ điều hành thực chương trình người sử dụng (xem hình 1.9) Ở đây, thiết bị vào- (như hình, bàn phím, chuột…) khơng hình vẽ Các chương trình liệu Nhân HĐH nhớ Chương trìnhNSD1 … Chương nhớ quảng đại processor Hình 1.9 Hệ thống vi xử lý đơn trìnhNSDn Từ việc nghiên cứu hệ thống đơn vi xử lý vừa nêu, người ta 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 vi xử lý khác nhận cấu trúc hệ thống khác Cấu trúc đơn giản cho thấy, CPU mà 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ý; P 1….Pn vi xử lý đơn M 1…Mn nhớ quảng đại Các đơn thể vi xử lý định vị phía bảng kết nối, cịn phía đơn thể nhớ Đối với việc truy cập mã chương trình hay mã liệu kết nối chúng tạo ra, kết nối tồn suốt thời gian yêu cầu P1 P2 P n 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, bảng kết nối 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, vi xử lý tham chiếu giới hạn hẹp phần chương trình Ở đây, nhớ phân chia dẫn cách dày đặc tới vi xử lý (xem hình 1.11) Tất nhiên, phân chia phải trợ giúp biên dịch để phân chia chương trìng người sử dụng cách thích hợp Nhân HĐH Chương trìnhNSD1 Nhân HĐH Chương trìnhNSDn P P Bảng kết nối M1 M2 Hình 1.11 Hệ thống nhiều máy tính Mạng máy tính tồn kiểu kết nối thứ ba Ở đây, máy tính làm việc độc lập với hệ điều hành riêng lẻ (nghĩa 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 M1 Chương trìnhNSD1 P Nhân HĐH Chương trìnhNSDn P M2 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 máy tính, mà máy tính làm việc máy chủ (server), cung cấp dịch vụ (các tài nguyên) cho máy tính khác (client) người ta gọi cấu trúc có quan hệ khách- chủ (clientserver) Thơng thường, máy chủ có khả dịch vụ 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 có lợi yếu khác Đối với chúng ta, điều quan trọng là, sử dụng cấu để đạt trao đổi thông tin qua vi xử lý để đạt truy cập đồng phương tiện điều hành Đó phương hướng tiếp tục xem xét kỷ lưởng chương sau 1.6 Các 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ổ 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 bạn biết? c) Người sử dụng thỉnh cầu ? (Ở khái niệm người sử dụng khái niệm khái quát) d) Người sử dụng địi hỏi u cầu hệ điều hành? e) Bạn giải thích khái niệm máy ảo giao diện Bài tập 1.2 Về hệ điều hành Unix a) Trên phạm vi máy tính quan bạn, hệ điều hành Unix có 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 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; tệp tin include C (như syscall.h trap.h, proc.h, kernel.h…)sẽ đưa nhiều trợ giúp thú vị ... lưởng chương sau 1.6 Các 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ổ 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 ?... trạng thái hệ điều hành Để giải vấn đề thiết kế, ba tiêu chí quan trọng hệ điều hành nói tới Tính tương thích ( compatible) Đó khả đặc biệt hệ điều hành mà ta truy cập vào hệ điều hành riêng... 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ụ cơng cụ: chương trình tiện dụng Editor… Các chương