1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Đề cương hệ điều hành

148 195 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 148
Dung lượng 1,68 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hệ thống đa chương trình Trong thực tế, nhìn chung một người dùng không thể làm cho bộ xử lý và các thiết bị vào ra làm việc một cách liên tục được.. Trong quá trình thực hiện, một công

Trang 1

Chương 1

GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH

1 Giới thiệu

1.1 Khái niệm hệ điều hành

Hệ điều hành là một chương trình quản lý phần cứng của máy tính

Nó cũng cung cấp cơ sở cho các chương trình ứng dụng hoạt động và làm việc như thành phần trung gian giữa người sử dụng với phần cứng máy tính

Hệ điều hành là một phần quan trọng của hầu hết các hệ thống máy tính Một hệ thống máy tính có thể chia thành 4 thành phần: phần cứng, hệ điều hành, các chương trình ứng dụng và người sử dụng

Phần cứng bao gồm bộ xử lý trung tâm (CPU), bộ nhớ và các thiết

bị vào ra - cung cấp các tài nguyên tính toán cơ bản Các chương trình ứng dụng như bộ xử lý từ, bảng tính, trình duyệt web - định nghĩa cách

mà tài nguyên sẽ được xử lý để đáp ứng yêu cầu của người sử dụng Hệ điều hành điều khiển và phối hợp sử dụng phần cứng máy tính giữa các chương trình ứng dụng khác nhau cho mỗi người sử dụng khác nhau

Các thành phần của hệ thống máy tính là phần cứng, phần mềm,

dữ liệu Hệ điều hành cung cấp phương thức để sử dụng một cách đúng đắn, hợp lý các tài nguyên đó trong quá trình điều hành hệ thống Hệ điều hành cũng tương tự như một chính phủ Nó không tự mình làm mọi việc mà chỉ đơn giản là tạo ra môi trường để các chương trình ứng dụng khác làm việc một cách có hiệu quả Ta có thể khảo sát hệ điều hành theo hai quan điểm: theo cách nhìn từ phía người sử dụng và theo quan điểm

Trang 2

Giới thiệu về hệ điều hành

(minicomputer), cùng chia sẻ tài nguyên và trao đổi dữ liệu thì hệ điều hành được thiết kế sao cho khai thác được tối đa tài nguyên, đạt hiệu quả cao nhất

Theo quan điểm hệ thống, hệ điều hành là công cụ phân phối tài nguyên Một hệ thống máy tính có nhiều tài nguyên như: thời gian CPU,

bộ nhớ, thiết bị lưu trữ ngoài, thiết bị vào ra, Hệ điều hành đóng vai trò quản lý, phân phối các tài nguyên đó sao cho chúng được sử dụng một cách hợp lý, tránh được các tranh chấp, ngăn ngừa các lỗi phát sinh

Tóm lại, chúng ta chưa có một định nghĩa hoàn chỉnh về hệ điều hành mà chỉ có thể định nghĩa hệ điều hành một cách tương đối theo các quan điểm khác nhau Lý do tồn tại của hệ điều hành là vì đó là cách để giải quyết các vấn đề phát sinh để hệ thống máy tính trở nên hữu dụng Mục tiêu cơ bản của hệ điều hành là thực thi các chương trình của người dùng và giúp người dùng giải quyết các vấn một cách dễ dàng hơn

Các mục tiêu của hệ điều hành: Mục tiêu chính của một số hệ điều hành là sự thuận tiện cho người sử dụng Hệ điều hành tồn tại là vì nó hỗ trợ cho việc tính toán được tiến hành dễ dàng hơn Đây là cách nhìn từ các hệ thống máy tính PCs nhỏ Mục tiêu chính của một số hệ điều hành khác lại là sự điều hành một cách hiệu quả hệ thống máy tính Đây là các

hệ điều hành thiết kế cho các hệ thống lớn, chia sẻ tài nguyên và nhiều người dùng

1.2 Các hệ thống máy tính lớn

Các hệ thống Mainframe là các hệ thống máy tính đầu tiên được sử dụng để giải quyết nhiều bài toán kinh tế, khoa học kỹ thuật

1.2.1 Hệ thống xử lý gói

Đây là những hệ thống ra đời sớm, chúng có kích thước khổng lồ

và được điều khiển từ một bàn giao tiếp người máy (console) Thiết bị vào

cơ bản là các đầu đọc thẻ và ổ băng từ Đầu ra là các máy in dòng, ổ băng từ và thẻ đục lỗ Người sử dụng không tương tác trực tiếp với hệ thống máy tính Người dùng chuẩn bị các chương trình, các nhiệm vụ và chuyển đến người điều hành để nạp vào hệ thống qua băng đục lỗ

Trang 3

Hệ điều hành cho các thế hệ máy này cũng thực sự đơn giản Nhiệm vụ chủ yếu của nó là chuyển đổi các điều khiển một cách tự động

từ công việc này đến công việc kế tiếp Hệ điều hành luôn luôn thường trực trong bộ nhớ

Để tăng tốc độ xử lý, người điều hành thường gom các công việc giống nhau thành nhóm và chạy nó một lượt

Trong môi trường tính toán này, CPU thường nhàn rỗi, bởi vì tốc độ nhập xuất chậm hơn rất nhiều so với tốc độ xử lý của CPU Ngay cả với một CPU chậm nó cũng xử lý khoảng thời gian mini giây (hàng nghìn lệnh được thực hiện trong một giây), trong khi đó, một máy đọc thẻ nhanh cũng chỉ có thể đọc được 1200 thẻ mỗi phút

1.2.2 Hệ thống đa chương trình

Trong thực tế, nhìn chung một người dùng không thể làm cho bộ

xử lý và các thiết bị vào ra làm việc một cách liên tục được Để khỏi lãng phí tài nguyên của hệ thống (thời gian của CPU, thiết bị nhập xuất) ta cần phải sắp xếp sao cho CPU và các thiết bị nhập xuất luôn luôn làm việc Đa chương trình là một giải pháp giúp gia tăng hiệu quả làm việc của máy tính bằng cách tổ chức các công việc một cách hợp lý để CPU luôn luôn có một chương trình thực hiện

Hệ điều hành lưu trữ cùng lúc nhiều chương trình trong bộ nhớ sau

đó lần lượt thực hiện từng công việc Trong khi một công việc được xử lý thì công việc khác tạm chờ đến phiên mình Trong quá trình thực hiện, một công việc có thể tạm dừng để chờ một tác vụ vào ra nào đó được hoàn tất, với các hệ thống không đa chương trình thì khoảng thời gian này CPU sẽ ở trạng thái nhàn rỗi (lãng phí khả năng làm việc của CPU) Với hệ thống đa chương trình, lúc này CPU có thể chuyển sang thực hiện một nhiệm vụ khác, điều đó giúp khai thác tối đa khả năng của CPU hơn

Hoạt động trong chế độ đa chương trình sẽ đặt ra cho hệ điều hành nhiều vấn đề cần phải xử lý như nạp tất cả các chương trình vào bộ nhớ hay phối hợp sử dụng đĩa và bộ nhớ Khi có nhiều chương trình cùng đồng thời tồn tại trong bộ nhớ thì chọn chương trình nào thực hiện Tổ chức quản lý bộ nhớ sao cho các chương trình cùng tồn tại trong bộ nhớ

Trang 4

Giới thiệu về hệ điều hành

không làm ảnh hưởng lẫn nhau các vấn đề này sẽ được phân tích kỹ ở các chương tiếp theo

1.2.3 Hệ thống chia sẻ thời gian

Hệ thống đa chương trình, xử lý gói cung cấp một môi trường mà các tài nguyên như CPU, bộ nhớ, thiết bị ngoại vi được khai thác một cách hiệu quả nhưng lại không hỗ trợ cho người dùng tương tác với hệ thống máy tính Chia sẻ thời gian (hay đa nhiệm) là một sự mở rộng của đa chương trình, ở đó CPU sẽ thực hiện nhiều nhiệm vụ cùng lúc bằng cách chuyển đổi qua lại giữa các chúng Trong quá trình chuyển đổi thực hiện giữa các nhiệm vụ, người dùng có thể tương tác với từng chương trình trong khi nó đang chạy

Một hệ thống máy tính tương tác sẽ cung cấp khả năng trao đổi trực tiếp giữa người dùng và hệ thống Người dùng có thể trực tiếp ra các chỉ thị để điều hành hệ thống hoặc các chương trình bằng cách sử dụng bàn phím hay chuột và chờ kết qủa trả lại

Một hệ thống chia sẻ thời gian cho phép nhiều người dùng cùng chia sẻ một máy tính đồng thời Trong hệ thống chia sẻ thời gian, các câu lệnh thường ngắn, chiếm ít thời gian của CPU Hệ thống chuyển đổi qua lại một cách nhanh chóng giữa những người dùng khác nhau để luân phiên phục vụ Với mỗi người dùng, dường như họ được sở hữu riêng một CPU, mọi yêu cầu đều được đáp ứng

Một hệ điều hành chia sẻ thời gian sẽ sử dụng đa chương trình và

sự lập lịch cho CPU để cung cấp cho mỗi người dùng một khoảng thời gian nhỏ trong thời gian được chia sẻ của máy tính Mỗi người dùng có ít nhất một chương trình trong bộ nhớ Một chương trình được nạp vào bộ nhớ và đang trong quá trình thực hiện được gọi là một tiến trình (process) Khi một tiến trình thực hiện, nó thường chỉ thực thi trong một thời gian ngắn rồi sẽ kết thúc hoặc chờ đợi tác vụ vào ra được hoàn tất Tác vụ vào ra có thể là một sự tương tác, khi đó có thể dữ liệu đang được hiển thị ra màn hình hoặc đang đợi người dùng nhập dữ liệu vào từ bàn phím hay chuột Tác vụ vào ra thường chiếm nhiều thời gian, khi đó CPU sẽ rơi vào trạng

Trang 5

thái nhàn rỗi (idle), để tận dụng thời gian tính toán của CPU, hệ điều hành

sẽ chuyển CPU sang phục vụ cho người dùng khác

1.3 Các hệ thống để bàn

Các máy tính cá nhân xuất hiện vào thập kỷ 70 Trong những thập

kỳ đầu, CPU của các máy tính PCs còn thiếu các tính năng bảo vệ hệ điều hành khỏi các chương trình người dùng Hệ điều hành các máy tính cá nhân lúc đó chưa hỗ trợ đa chương trình hay đa người dùng Mục tiêu của các hệ điều hành cũng đã được thay đổi theo thời gian Thay vì tăng hiệu dụng của CPU và các thiết bị ngoại vi, hệ thống được cải tiến để tăng khả năng đáp ứng và sự tiện lợi cho người dùng như các hệ thống PCs sử dụng hệ điều hành Microsoft Windows và Apple Macintosh

Các hệ điều hành cho các máy tính PCs đã thu được lợi nhuận bằng nhiều cách, từ việc phát triển hệ điều hành cho các máy tính lớn Máy vi tính đã ngay lập tức thích ứng với một số công nghệ được phát triển cho các hệ điều hành lớn Mặt khác, giá của máy vi tính đã giảm, và người ta cũng không cần phải quan tam nhiều đến việc phát huy tối đa hiệu quả làm việc của CPU

Các hệ thống nhiều CPU có 3 ưu điểm chính sau:

- Tăng khả năng thông suốt: bằng cách tăng số lượng CPU, chúng

ta có thể hy vọng sẽ có nhiều công việc được hoàn thành trong một thời gian ngắn hơn nhưng không phải theo đúng tỷ lệ thời gian, nghĩa là không phải có n bộ xử lý thì sẽ thực hiện được nhanh hơn n lần

- Kinh tế hơn: các hệ thống đa CPU sẽ tiết kiệm chi phí hơn so với

hệ thống chỉ có một CPU bởi vì chúng có thể chia sẻ các thiết bị ngoại vi,

Trang 6

Giới thiệu về hệ điều hành

bộ lưu trữ chính, nguồn điện, Nhiều chương trình có thể cùng làm việc trên một tập hợp dữ liệu thay vì phải lưu trữ ở trên đĩa và sao chép cho mỗi chương trình một bản

- Tăng độ tin cậy: các chức năng được chia cho nhiều bộ xử lý, vì vậy nếu có lỗi xảy ra cũng không làm ngưng hệ thống, nó chỉ làm cho hệ thống bị chậm đi Nếu ta có 10 CPU và có một CPU bị lỗi, khi đó các CPU còn lại sẽ chia sẽ phần công việc của CPU bị hỏng Tốc độ của hệ trống lúc này chỉ bị chậm đi 10%, tuy nhiên hệ thống không bị ngưng do lỗi của CPU đó

Xử lý liên tục trong sự có mặt của lỗi đòi hỏi phải có kỹ thuật cho phép phát hiện, chuẩn đoán và thậm chí là khắc phục lỗi Hệ thống Tandom sử dụng cả phần cứng và phần mềm để đảm bảo sự liên tục và

xử lý lỗi Hệ thống bao gồm 2 bộ xử lý, mỗi bộ xử lý làm việc trong một vùng nhớ riêng của nó Các bộ xử lý được kết nối vào cùng một bus Một

bộ xử lý làm việc chính, một bộ xử lý đóng vai trò dự phòng, nó sẽ chứa bản sao của bộ xử lý chính Nếu có lỗi xảy ra, bản sao sẽ được kích hoạt

từ điểm làm việc tốt nhất gần thời điểm xảy ra lỗi

Hầu hết các hệ thống đa CPU hiện nay đều dùng đa xử lý đối xứng (SMP-symetric multiprocessing), trong đó mỗi CPU chạy một bản sao của

hệ điều hành và mỗi bản sao đó có thể giao tiếp với bản sao khác nếu cần Một số hệ thống sử dụng đa xử lý bất đối xứng, trong đó mỗi bộ xử

lý gắn với một nhiệm vụ Một bộ xử lý chính điều khiển hệ thống, các bộ

xử lý còn lại đợi bộ xử lý chính ra lệnh hoặc thực hiện một nhiệm vụ đã được giao sẵn Đây là mô hình làm việc theo kiểu chính phụ (chủ tớ) Bộ

xử lý chính sẽ lập lịch để phân phối công việc cho các bộ xử lý thứ cấp

SMP là tất cả các bộ xử lý có vai trò ngang nhau, không tồn tại mỗi quan hệ chính phụ Mỗi bộ xử lý cùng chạy song song một bản sao của hệ điều hành Phiên bản Encore của Unix viết cho máy Multimax là một ví dụ cho hệ thống xử lý đối xứng Hệ thống này có hàng tá bộ xử lý, tất cả đều chạy các bản sao của Unix Lợi ích của mô hình này là có nhiều tiến trình cùng chạy song song

1.5 Các hệ thống phân tán

Trang 7

Các hệ thống phân tán được xây dựng trên cở sở hạ tầng mạng Các máy tính được kết nối với nhau thông qua hệ thống mạng Các công việc, và dữ liệu có thể được chia thành nhiều phần, mỗi máy tính trong hệ thống đảm nhiệm một phần công việc Kết quả các phần tiêng lẻ được hợp lại để cho một kết quả lớn với hiệu quả làm việc vượt trội so với hệ thông chỉ có một máy tính

Hệ thống này cũng tương tự như hệ thống chia sẻ thời gian nhưng các bộ xử lý không chia sẻ bộ nhớ và đồng hồ, thay vào đó mỗi bộ xử lý

có bộ nhớ cục bộ riêng Các bộ xử lý thông tin với nhau thông qua các đường truyền thông như những bus tốc độ cao hay đường dây điện thoại

Các bộ xử lý trong hệ phân tán thường khác nhau về kích thước và chức năng Nó có thể bao gồm máy vi tính, trạm làm việc, máy mini, và những hệ thống máy lớn Các bộ xử lý thường được gọi với nhiều tên khác nhau như site, node, computer tùy thuộc vào trạng thái làm việc của chúng

Các ưu điểm chính của hệ thống phân tán là:

- Chia sẻ tài nguyên : Một người sử dụng A có thể sử dụng máy

in laser của người sử dụng B và người sử dụng B có thể truy xuất những tập tin của A Tổng quát, chia sẻ tài nguyên trong hệ thống phân tán cung cấp một cơ chế để chia sẻ tập tin ở vị trí xa, xử lý thông tin trong một cơ

sở dữ liệu phân tán, in ấn tại một vị trí xa, sử dụng những thiết bị ở xa để thực hiện các thao tác

- Tăng tốc độ tính toán : Một thao tác tính toán được chia làm nhiều phần nhỏ cùng thực hiện một lúc Hệ thống phân tán cho phép phân chia việc tính toán trên nhiều vị trí khác nhau để tính toán song song

- An toàn : Nếu một vị trí trong hệ thống phân tán bị hỏng, các vị trí khác vẫn tiếp tục làm việc

- Thông tin liên lạc với nhau: Có những lúc , chương trình cần chuyển đổi dữ liệu từ vị trí này sang vị trí khác Ví dụ trong hệ thống Windows, thường có sự chia sẻ và chuyển dữ liệu giữa các cửa sổ Khi các

Trang 8

Giới thiệu về hệ điều hành

vị trí được nối kết với nhau trong một hệ thống mạng, việc trao đổi dữ liệu diễn ra rất dễ Người sử dụng có thể chuyển tập tin hay các E-mail cho nhau từ cùng vị trí hay những vị trí khác

1.6 Các hệ thống Clustered

Tương tự một hệ thống làm việc song song Hệ thống này liên kết nhiều CPU với nhau để cùng làm việc Sức mạnh của hệ thống là sức mạnh tổng hợp của các CPU

Một hệ điều hành xử lý thời gian thực phải được định nghĩa tốt, thời gian xử lý nhanh Hệ thống phải cho kết quả chính xác trong khoảng thời gian bị thúc ép nhanh nhất Có hai hệ thống xử lý thời gian thực là hệ thống thời gian thực cứng và hệ thống thời gian thực mềm

Hệ thống thời gian thực cứng là công việc được hoàn tất đúng lúc Khi đó dữ liệu thường được lưu trong bộ nhớ ngắn hạn hay trong ROM Việc xử lý theo thời gian thực sẽ xung đột với tất cả hệ thống đã nói đến ở trên

Dạng thứ hai là hệ thống thời gian thực mềm, mỗi công việc có một

độ ưu tiên riêng và sẽ được thi hành theo độ ưu tiên đó Có một số lĩnh vực áp dụng hữu hiệu phương pháp này là multimedia hay thực tại ảo

1.8 Các hệ thống cầm tay

Hệ thống cầm tay bao gồm các máy trợ giúp kỹ thuật số cá nhân (PDAs-Personal Digital Assistants) như Palm-Pilots hay cellular telephone với sự kết nối đến một mạng như mạng Internet Sự phát triển của các hệ thống cầm tay và các ứng dụng của nó đang đối mặt với nhiều thách thức, hầu hết đang thực hiện trong sự hạn chế về kích thước của các thiết

Trang 9

bị Vị sự hạn chế về kích thước mà các hệ thống cầm tay thường có bộ nhớ nhỏ, tốc độ của bộ xử lý thấp, màn hình hiển thị nhỏ

Nhiều các thiết bị cầm tay có bộ nhớ chỉ trong khoảng từ 512KB đến 8MB, trong khi đó các máy PCs hay các trạm làm việc có đến hàng trăm MB bộ nhớ Đây là một lý do đò hỏi hệ điều hành cũng như các chương trình ứng dụng phải quản lý và sử dụng bộ nhớ một cách có hiệu quả nhất

Vấn đề thứ hai ảnh hưởng tới sự phát triển của các hệ thống cầm tay là tốc độ của các bộ xử lý trong mỗi thiết bị thường không cao Bộ xử

lý của hầu hết các hệ thống cầm thay chỉ chạy bằng một phần lẻ tốc độ của bộ xử lý trong một máy PC

Vấn đề thứ ba là màn hình hiển thị có kích thước nhỏ Trong khi màn hình cho các máy tính PCs có lên đến 21 inches thì màn hình của các máy cầm tay không vượt quá 3 inches vuông Với các nội dung lớn, thường được thể hiện một cách dễ dàng trên các máy PCs thì giờ đây phải chi ra và thể hiện từng phần trên màn hình của máy cầm tay

Một số máy tính cầm tay sử dụng công nghệ không dây như BlueTooth, cho phép truy cập từ xa tới thư điện tử và duyệt web

1.9 Lịch sử phát triển của hệ điều hành

Thế hệ 1 (1945 – 1955)

Vào khoảng giữa thập niên 1940, Howard Aiken ở Havard và John von Neumann ở Princeton, đã thành công trong việc xây dựng máy tính dùng ống chân không (đèn điện tử) Những máy này rất lớn với hơn

10000 ống chân không nhưng chậm hơn nhiều so với máy rẻ nhất ngày nay

Mỗi máy được một nhóm thực hiện tất cả từ thiết kế, xây dựng lập trình, thao tác đến quản lý Lập trình bằng ngôn ngữ máy tuyệt đối, thường là bằng cách dùng bảng điều khiển để thực hiện các chức năng cơ bản Ngôn ngữ lập trình chưa được biết đến và hệ điều hành cũng chưa nghe đến

Vào đầu thập niên 1950, phiếu đục lổ ra đời và có thể viết chương

Trang 10

Giới thiệu về hệ điều hành

Thế hệ 2 (1955 – 1965)

Sự ra đời của thiết bị bán dẫn vào giữa thập niên 1950 làm thay đổi bức tranh tổng thể Máy tính trở nên đủ tin cậy hơn Nó được sản xuất và cung cấp cho các khách hàng Lần đầu tiên có sự phân chia rõ ràng giữa người thiết kế, người xây dựng, người vận hành, người lập trình, và người bảo trì

Để thực hiện một công việc (một chương trình hay một tập hợp các chương trình), lập trình viên trước hết viết chương trình trên giấy (bằng hợp ngữ hay FORTRAN) sau đó đục lỗ trên phiếu và cuối cùng đưa phiếu vào máy Sau khi thực hiện xong nó sẽ xuất kết quả ra máy in

Hệ thống xử lý theo lô ra đời, nó lưu các yêu cầu cần thực hiện lên băng từ, và hệ thống sẽ đọc và thi hành lần lượt Sau đó, nó sẽ ghi kết quả lên băng từ xuất và cuối cùng người sử dụng sẽ đem băng từ xuất đi

in

Hệ thống xử lý theo lô hoạt động dưới sự điều khiển của một chương trình đặc biệt là tiền thân của hệ điều hành sau này Ngôn ngữ lập trình sử dụng trong giai đoạn này chủ yếu là FORTRAN và hợp ngữ

Thế hệ 3 (1965 – 1980)

Trong giai đoạn này, máy tính được sử dụng rộng rãi trong khoa học cũng như trong thương mại Máy IBM 360 là máy tính đầu tiên sử dụng mạch tích hợp (IC) Từ đó kích thước và giá cả của các hệ thống máy giảm đáng kể và máy tính càng phỗ biến hơn Các thiết bị ngoại vi dành cho máy xuất hiện ngày càng nhiều và thao tác điều khiển bắt đầu phức tạp

Hệ điều hành ra đời nhằm điều phối, kiểm soát hoạt động và giải quyết các yêu cầu tranh chấp thiết bị Chương trình hệ điều hành dài cả triệu dòng hợp ngữ và do hàng ngàn lập trình viên thực hiện

Sau đó, hệ điều hành ra đời khái niệm đa chương CPU không phải chờ thực hiện các thao tác nhập xuất Bộ nhớ được chia làm nhiều phần, mỗi phần có một công việc (job) khác nhau, khi một công việc chờ thực hiện nhập xuất CPU sẽ xử lý các công việc còn lại Tuy nhiên khi có nhiều công việc cùng xuất hiện trong bộ nhớ, vấn đề là phải có một cơ chế bảo

Trang 11

vệ tránh các công việc ảnh hưởng đến nhau Hệ điều hành cũng cài đặt thuộc tính spool

Giai đoạn này cũng đánh dấu sự ra đời của hệ điều hành chia sẻ thời gian như CTSS của MIT Đồng thời các hệ điều hành lớn ra đời như MULTICS, UNIX và hệ thống các máy mini cũng xuất hiện như DEC PDP-1

Thế hệ 4 (từ 1980)

Giai đoạn này đánh dấu sự ra đời của máy tính cá nhân, đặc biệt là

hệ thống IBM PC với hệ điều hành MS-DOS và Windows sau này Bên cạnh đó là sự phát triển mạnh của các hệ điều hành tựa Unix trên nhiều

hệ máy khác nhau như Linux Ngoài ra, từ đầu thập niên 90 cũng đánh dấu sự phát triển mạnh mẽ của hệ điều hành mạng và hệ điều hành phân tán

1.10 Môi trường tính toán

- Môi trường tính toán truyền thống

- Môi trường tính toán dựa trên cở sở Web

- Môi trường tính toán nhúng

1.11 Câu hỏi và bài tập

1 Ba mục tiêu chính của hệ điều hành là gì?

2 Liệt kê 4 bước cần thiết để thực hiện một chương trình trên một

hệ thống riêng biệt hoàn thiện

3 Các ưu điểm chính của đa chương trình là gì?

4 Sự khác nhau cơ bản giữa các hệ điều hành cho các máy tính Mainframe và các máy PCs

5 Hãy chỉ ra các đặc điểm cơ bản của các hệ điều hành sau: Gói (Batch), Tương tác (Interactive), Chia sẻ thời gian (Time sharing), Thời gian thực (Real time), Mạng (Network), Song song (Parallel), Phân tán (Distributed), Cụm (Clustered), cầm tay (HandHeld)

6 Hãy chỉ ra các khó khăn chính trong việc phát hệ điều hành cũng như chương trình ứng dụng cho các hệ thống cầm tay

7 Chỉ ra các ưu điểm chính của hệ thống đa chương trình, hệ thống phân tán và hệ thống có nhiều bộ xử lý

Trang 12

Giới thiệu về hệ điều hành

2 Cấu trúc hệ thống máy tính

2.1 Điều hành hệ thống máy tính

Một máy tính thông thường bao gồm một CPU và một số các trình điều khiển thiết bị kết nối với nhau thông qua một bus chung, nó hỗ trợ cho việc truy nhập đến bộ nhớ được chia sẻ Mỗi trình điều khiển thiết bị tương ứng với một kiểu thiết bị (ví dụ như trình điều khiển đĩa, âm thanh, màn hình) CPU và các trình điều khiển có thể làm việc song song, tính toán trong các vòng bộ nhớ Để đảm bảo cho việc truy cập một cách đúng đắn vào bộ nhớ chia sẻ, một trình điều khiển bộ nhớ sẽ cung cấp chức năng đồng bộ hoá việc truy nhập bộ nhớ

Một máy tính lúc bắt đầu chạy (khi bật công tắc nguồn hoặc khởi động lại), nó cần phải có một chương trình khởi động Chương trình khởi động này (chương trình bootstrap) thông thường được lưu trong ROM hoặc EEPROM trong phần cứng của máy tính Nó khởi động tất cả các bộ phận của hệ thống, từ các thanh ghi, đến các bộ điều khiển thiết bị, đến

bộ nhớ Chương trình khởi động phải biết làm thế nào để nạp hệ điều hành và bắt đầu đưa hệ thống vào hoạt động Để đáp ứng yêu cầu này, chương trình khởi động phải tìm và nạp nhân của hệ điều hành vào bộ nhớ Nhân hệ điều hành sẽ bắt đầu các xử lý của mình và chờ đợi các sự kiện xuất hiện

Các sự kiện thường xuất hiện dưới dạng một tín hiệu ngắt từ phần cứng hoặc phần mềm Phần cứng có thể làm phát sinh một ngắt bằng cách gửi một tín hiệu đến CPU thông qua bus hệ thống Phần mềm phát

sinh ngắt bằng cách thực hiện một điều khiển đặc biệt được gọi là lời gọi

Trang 13

thực hiện xong yêu cầu ngắt, CPU lại thực hiện tiếp công việc đang thực hiện dở tại vị trí gián đoạn bởi ngắt

Ngắt là một phần quan trọng trong kiến trúc của một máy tính Với mỗi máy tính đều được thiết kế sẵn một số ngắt, ngoài ra các ngắt còn được định nghĩa bởi hệ điều hành và các chương trình ứng dụng Khi có ngắt, hệ thống phải ngay lập tức chuyển điều khiển đến chương trình xử

lý ngắt tương ứng càng nhanh càng tốt Để thuận lợi trong quản lý cũng như xác định các chương trình xử lý tương ứng với mỗi ngắt người ta định nghĩa ra một bảng chứa địa chỉ các chương trình xử lý ngắt tương ứng với từng ngắt Bảng này được gọi là bảng vector ngắt (Interrupt table) Bảng vector ngắt gồm nhiều phần tử, mỗi phần tử là một con trỏ, trỏ đến địa chỉ bắt đầu của chương trình xử lý tương ứng với ngắt đó Các ngắt được đại diện bởi một con số (gọi là số hiệu ngắt) Số hiệu ngắt là chỉ số để trỏ đến một phần tử trong bảng vector ngắt Bảng vector ngắt thường được lưu ở vùng nhớ thấp Trong khí đó, các chương trình xử lý tương ứng lại được lưu ở vùng nhớ cao

Khi một ngắt được gọi, chương trình xử lý tương ứng với nó sẽ được thực hiện trong quá trình thực hiện, chương trình này có thể làm thay đổi trạng thái hiện tại của hệ thống (trạng thái của chương trình đang bị gián đoạn) như thay đổi các thanh ghi, ngăn xếp, Để đảm bảo cho chương trình bị ngắt có thể thực hiện tiếp sau khi xử lý ngắt xong, trước khi chương trình xử lý ngắt được thực hiện, trạng thái của hệ thống cần được cất giữ và chúng sẽ được khôi phục lại trước khi thực hiện tiếp chương trình bị gián đoạn

2.2 Kiến trúc vào ra

Như đã đề cập ở phần trước, một máy tính thông thường bao gồm một CPU và các bộ điều khiển thiết bị được kết nối với nhau thông qua một bus chung Mỗi bộ điều khiển thiết bị sẽ đảm nhiệm một thiết bị cụ

Trang 14

Giới thiệu về hệ điều hành

vào Ví dụ một trình điều khiển giao diện máy tính nhỏ SCSI (Small Computer System Interface) có thể có đến 7 hoặc là nhiều hơn nữa các thiết bị nối vào Một trình điều khiển thiết bị duy trì một số vùng lưu trữ trung gian (buffer storage) riêng và một tập các thanh ghi công dụng chung Thiết bị điều khiển này đáp ứng cho việc di chuyển dữ liệu giữa các thiết bị ngoại vi Kích thước bộ nhớ đệm là khác nhau tuỳ thuộc vào thiết bị sẽ được điều khiển Ví dụ kích thước cùng nhớ đệm của thiết bị điều khiển đĩa là một hoặc nhiều vùng nhớ nhỏ nhất được đánh địa chỉ trên đĩa được gọi là sector, thông thướng là 512 byte

Các ngắt vào ra

Để bắt đầu một điều khiển vào ra, CPU nạp các thanh ghi tương ứng với bộ điều khiển thiết bị Bộ điều khiển thiết bị sẽ kiểm tra nội dung các thanh ghi để xác định hành động cần thực hiện

Khi một ngắt xuất hiện, trước hết hệ điều hành xác định xem thiết

bị nào gây ra ngắt Sau đó nó được lập chỉ mục vào trong bảng các ngắt thiết bị vào ra để xác định trạng thái của thiết bị đó và thay đổi điểm truy nhập để phản ánh sự xuất hiện của ngắt Với hầu hết các thiết bị, một tín hiệu ngắt hoàn thiện một yêu cầu vào ra Nếu có thêm các yêu cầu trong hàng đợi cho thiết bị này, hệ điều hành sẽ tiến hành xử lý các yêu cầu kế tiếp

Cấu trúc DMA

Việc chuyển đổi dữ liệu từ các thiết bị vào ra thông thường đều qua

xử lý của CPU, điều này làm cho việc truyền dữ liệu diễn ra chậm vì để truyền dữ liệu cần phải phát sinh ngắt để yêu cầu CPU CPU phải mất nhiều thời gian để thực hiện hết các quy trình trong xử lý ngắt Hơn thế nữa, việc CPU phải dừng lại để chuyển sang phục vụ việc chuyển dữ liệu

sẽ làm giảm hiệu quả tính toán của CPU

Để giải quyết vấn đề này, gải pháp truy nhập trực tiếp bộ nhớ DMA (Direct Memory Access) được sử dụng để tăng tốc độ cho các hoạt động chuyển dữ liệu vào ra, nhất là đối với các thiết bị vào ra tốc độ cao Sau khi thiết lập bộ đệm, con trỏ và bộ đếm cho thiết bị vào ra, bộ điều khiển thiết bị sẽ chuyển một khối dữ liệu trực tiếp đến bộ nhớ mà không ngắt

Trang 15

CPU, không cần tới xử lý của CPU Chỉ một ngắt duy nhất được tạo ra cho mỗi khối chứ không phải cho từng byte hay từng word như ở các thiết bị tốc độ thấp

Các hoạt động cơ bản của CPU cũng tương tự Một chương trình người dùng, hoặc bản thân hệ điều hành có thể yêu cầu truyền dữ liệu

Hệ điều hành phải tìm một bộ đệm (bộ bộ đệm rỗng cho hoạt động vào hoặc đầy cho hoạt động ra) Kế đến, một bộ phận của hệ điều hành được gọi là một bộ điều khiển thiết bị sẽ thiết lập các thanh ghi điều khiển DMA

để sử dụng tương ứng với địa chỉ nguồn, địa chỉ đích và độ dài truyền Tiếp theo bộ điều khiển DMA ra lệnh bắt đầu hoạt động vào ra Trong khi DMA thực hiện việc truyền dữ liệu thì CPU được tự do để thực hiện các nhiệm vụ khác

bộ nhớ chính vào trong các thanh ghi của CPU để thực hiện

Một cách lý tưởng, chúng ta mong muốn chương trình và dữ liệu được nạp cố định vào bộ nhớ chính, nhưng điều này là không khả thi vì các lý do sau:

- Bộ nhớ chính luôn luôn quá nhỏ so với tất cả các chương trình vào dữ liệu cần thiết

- Dữ liệu sẽ bị mất khi ngắt điện

Vì vậy, hầu hết các hệ thống máy tính đều cung cấp thiết bị lưu trữ thứ cấp (Secondary Storage) để mở rộng bộ nhớ chính Yêu cầu chính đối với thiết bị lưu trữ thứ cấp là nó có thể lưu trữ được một khối lượng lớn

dữ liệu lâu dài

Hầu hết các thiết bị lưu trữ thứ cấp là đĩa từ Nó cung cấp khả năng lưu trữ cả chương trình và dữ liệu Hầu hết các chương trình ứng dụng (trình duyệt, chương trình dịch, bộ xử lý từ, bảng tính, ) đều được

Trang 16

Giới thiệu về hệ điều hành

sau đó coi đĩa như là nguồn và đích để nạp và lưu trữ thông tin trong quá trình xử lý

Dù sao đi nữa thì các thiết bị lưu trữ chúng ta vừa mô tả (bao gồm các thanh ghi, bộ nhớ chính, đĩa từ) chỉ là một trong số nhiều hệ thống lưu trữ Các thiết bị lưu trữ này còn có thể là Cache, CD-ROM, băng từ, Mỗi hệ thống lưu trữ đều cung cấp các chức năng lưu trữ dữ liệu cho đến khi chúng được dùng trở lại Sự khác nhau cơ bản giữa chúng là giá thành, tốc độ, kích thước và độ ổn định

Bộ nhớ chính

Bộ nhớ chính và các thanh ghi được thiết kế trong bộ xử lý là thiết

bị lưu trữ chính duy nhất mà bộ xử lý có thể truy nhập trực tiếp đến Các lệnh máy lấy địa chỉ bộ nhớ như các tham số chứ không lấy địa chỉ đĩa Vì vậy, bất cứ câu lệnh nào cần thực hiện cũng như dữ liệu trước khi được

xử lý, chúng phải ở một trong các thiết bị lưu trữ có thể truy nhập trực tiếp này Nếu chúng không ở trong bộ nhớ thì cần phải được nạp vào trước khi CPU cần đến chúng

Trong trường hợp vào ra, mỗi bộ điều khiển thiết bị sẽ có các thanh ghi để chứa các câu lệnh và dữ liệu sẽ được truyền Thông thường, các lệnh vào ra đặc biệt sẽ cho phép chuyển dữ liệu giữa các thanh ghi và bộ nhớ Để tăng hiệu quả truy cập tới các thiết bị vào ra, nhiều kiến trúc máy cung cấp một ánh xạ (bản đồ) vào ra Khi đó, một khoảng địa chỉ sẽ được dành riêng để ánh xạ tới các thành ghi của bộ điều khiển Đọc và ghi vào địa chỉ bộ nhớ đó sẽ khiến cho dữ liệu được truyền đến hoặc đi khỏi các thanh ghi của bộ điều khiển thiết bị Phương pháp này thích hợp cho các thiết bị có thời gian trả lời nhanh như bộ điều khiển màn hình Việc hiển thị văn bản trên màn hình nói chung chỉ đơn giản là ghi văn bản vào vị trí tương ứng trong bộ nhớ

Bộ nhớ ánh xạ vào ra còn mang lại hiệu quả cho nhiều các thiết bị khác như các cổng nối tiếp và song song dùng để kết nối tới modem và máy in với máy tính Để chuyển dữ liệu qua các thiết bị này, CPU tiến hành ghi hay đọc một số thanh ghi được gọi là cổng vào ra

Trang 17

Đĩa từ

Đĩa từ là phương tiện lưu trữ cho phép ta lưu trữ lâu dài một khối lượng lớn thông tin, khi cần có thể đọc lại một cách nhanh chóng nhờ khả năng truy nhập ngẫu nhiên

Đĩa từ có nhiều lợi ích khác nhau thể qua các đặc điểm như: cấu tạo, giá thành, dung lượng, tốc độ ghi đọc, chất liệu,

Băng từ

Là những thiết bị lưu trữ lâu dài dự trên tính chất nhiễm từ của kim loại phủ bề mặt băng Đây là thiết bị có khả năng lưu trữ khối lượng lớn thông tin nhưng tốc độ truy nhập chậm, phải truy nhập tuần tự, khó bảo quản Các bộ điều khiển băng từ thường được phân loại theo độ rộng, bao gồm 4, 8 và 19 milimeters, 1/4 và 1/2 inch

Bộ nhớ Cache

Là bộ nhớ đệm nằm ở vị trí trung gian giữa bộ nhớ chính và CPU Chúng có tốc độ truy nhập cao, dung lượng nhỏ dùng cho mục đích lưu lại những dữ liệu đã được truy nhập để có thể dùng lại ở lần sau mà không cần phải truy nhập bộ nhớ thêm lần nữa Cách tổ chức này làm gia tăng đáng kể tốc thực hiện chương trình

2.4 Phân cấp lưu trữ

Các thiết bị lưu trữ có thể phân cấp theo trật tự dưới đây dựa vào tốc độ và giá cả

Thanh ghi Cache

Bộ nhớ Đĩa quang từ Đĩa từ Đĩa quang Băng từ

Hình 2.1: Kiến trúc thiết bị lưu trữ

Trang 18

Giới thiệu về hệ điều hành

Trình tự và sự nối kết các hệ thống nhớ thể hiện như sau:

Các thế hệ máy tính thời kỳ đầu thiết kế cho một người dùng,

người lập trình và điều hành hệ thống Khi những người lập trình điều

hành máy tính từ một bàn điều khiển (console), họ phải hoàn thành tất cả

các điều khiển thông qua hệ thống Khi hệ điều hành được phát triển,

chúng thay con người điều hành hệ thống Chúng giám sát hoạt động của

hệ thống và thực hiện nhiều các chức năng, đặc biệt là hoạt động vào ra

(là hoạt động vất vả và đầy các khó khăn đối với người lập trình cũng như

người điều khiển hệ thống trước đó)

Thêm vào đó, để cải tiến các tiện ích của hệ thống, hệ điều hành

bắt đầu chia sẻ các tài nguyên hệ thống cho một số các chương trình thực

hiện một cách song song Một chương trình thực hiện việc tính toán, trong

khi chương trình khác lại thực hiện việc vào ra

Việc chia sẻ này vừa là sự cải tiến nhưng cũng đồng thời làm nảy

sinh các vấn đề Khi hệ thống chạy mà không chia sẻ tài nguyên thì một

lỗi phát sinh trong một chương trình chỉ làm ảnh hưởng đến bản thân

chương trình đó Nhưng với sự chia sẻ, nhiều chương trình có thể bị ảnh

hưởng bởi lỗi do một chương trình gây ra

Nếu không có cơ chế bảo vệ chống lại một số lỗi, hệ thống phải

làm việc trong chế độ chỉ một chương trình được thực hiện trong một thời

điểm hoặc tất cả các dữ liệu đầu ra đều không đáng tin cậy Một hệ điều

hành được thiết kế để đảm bảo cho một lỗi của chương trình này không

gây ra các sai sót cho các chương trình khác

Nhiều các lỗi chương trình đã được phát hiện bởi phần cứng Các

lỗi này bình thường được hệ điều hành xử lý Nếu một chương trình của

người sử dụng gây lỗi vì một lý do nào đó - như thực hiện một lệnh sai,

truy nhập đến địa chỉ vùng nhớ không thuộc phạm vi của chương trình -

Trang 19

phần cứng sẽ bẫy lỗi đó và chuyển nó cho hệ điều hành thông qua vector ngắt Khi một chương trình gây lỗi, hệ điều hành phải kết thúc bất thường chương trình đó Vấn đề này được xử lý như một yêu cầu kết thúc bất thường của người dùng Một thông báo lỗi thích hợp sẽ được tạo ra, và vùng nhớ của chương trình được ghi lại (dump) Thông thường được ghi vào một file để người dùng hoặc người lập trình có thể kiểm tra, qua đó

có thể khắc phục và khởi động lại chương trình

Chế độ thực thi kép (Dual Mode Operation)

Để đảm bảo cho các hoạt động bình thường, ta phải bảo vệ hệ điều hành, các chương trình ứng dụng và dữ liệu khỏi bất cứ chương trình bị lỗi nào Hướng giải quyết đưa ra bởi nhiều hệ điều hành là cung cấp các hỗ trợ phần cứng cho phép nhiều chế độ xử lý khác nhau

Ít nhất chúng ta cần 2 chế độ xử lý: chế độ người dùng và chế độ giám sát Một bit được gọi bit chế độ (mode bit) được thêm vào phần cứng để xác định chế độ hiện hành: giám sát (0), người dùng (1) Nhờ vào bit chế độ, chúng ta có thể phân biệt giữa một nhiệm vụ phía người dùng và một nhiệm vụ phía quản trị hệ thống

Ở thời điểm khởi động, phần cứng bắt đầu bằng chế độ giám sát

Hệ điều hành được nạp vào và sau đó khởi động các xử lý của người dùng trong chế độ người dùng Khi một bẫy lỗi hoặc ngắt xuất hiện, hệ thống

sẽ chuyển từ chế độ người dùng sang chế độ giám sát (thay đổi bit chế độ) Vì thế mà hệ điều hành nắm được quyền điều khiển máy tính Hệ điều hành luôn luôn chuyển sang chế độ người dùng trước khi nó trao quyền điều khiển cho một chương trình người dùng

Chế độ thực hiện kép (dual mode of operation) cung cấp khả năng bảo vệ hệ điều hành khỏi những lỗi do người sử dụng gây ra Chúng ta có thể thực hiện được các bảo vệ này bởi việc thiết kế một số lệnh đặc quyền Phần cứng chỉ cho phép các lệnh đặc quyền này được thực hiện trong chế độ giám sát Nếu cố thử thực hiện một lệnh đặc quyền trong chế độ người dùng, phần cứng sẽ không chấp nhận, coi như một lệnh sai

và bẫy nó để chuyển cho hệ điều hành xử lý

Trang 20

Giới thiệu về hệ điều hành

Bảo vệ vào ra

Để tránh cho người dùng thực hiện các lệnh vào ra gây lỗi, chúng

ta phải định nghĩa tất cả các lệnh vào ra đều là những lệnh đặc quyền, chúng phải được thực hiện thông qua hệ điều hành Để hoàn thành được nhiệm vụ bảo vệ vào ra, chúng ta phải đảm bảo người dùng không bao giờ có thể có được quyền điều khiển máy tính trong chế độ giám sát

Khi xem xét một chương trình thực hiện trong chế độ người dùng,

ta thấy nó vẫn có thể chuyển sang chế độ giám sát khi một ngắt hoặc một bẫy lỗi xuất hiện Nếu chương trình người dùng thay đổi địa chỉ vector ngắt để nó trỏ đến phần xử lý của chương trình người dùng thì khi ngắt được đáp ứng, quyền điều khiển sẽ được chuyển cho chương trình người dùng ngay trong chế độ giám sát Trong thực tế, có nhiều cách để chương trình người dùng chiếm được quyền điều khiển hệ thống trong chế độ giám sát Thêm vào đó, nhiều lỗ hổng đã bị phát hiện và chúng có thể là

lý do khiến cho việc bảo vệ hệ thống bị vô hiệu hoá Như vậy, để thực hiện vào ra, một chương trình người dùng phải thực hiện một lời gọi hệ thống để yêu cầu hệ điều hành thực hiện tác vụ vào ra Hệ điều hành thực hiện trong chế độ giám sát, kiểm tra nếu yêu cầu của người dùng là được phép thì sẽ thực hiện Sau đó hệ điều hành sẽ đưa hệ thống trở lại chế độ người dùng

Bảo vệ bộ nhớ

Để các đảm bảo cho các xử lý đúng, chúng ta phải bảo vệ các vector ngắt khỏi sự thay đổi của chương trình người dùng Thêm vào đó, chúng ta cũng phải bảo vệ các dịch vụ ngắt của hệ điều hành khỏi những thay đổi

Chúng ta đều thấy sự cần thiết phải phải bảo vệ bộ nhớ, ít nhất là cho các vector ngắt và các lệnh phục vụ ngắt của hệ điều hành Thông thường thì chúng ta muốn bảo vệ hệ điều hành khỏi các truy nhập của người dùng và bảo vệ chương trình của người dùng khỏi sự sâm phạm của những chương trình khác Sự bảo vệ này phải được hỗ trợ bằng phần cứng Nó có thể được thực hiện bằng nhiều cách (chi tiết sẽ được thảo

Trang 21

luận ở phần sau) Ở đây, chúng ta có thể nêu ra những xử lý cơ bản có thể làm

Để cung cấp không gian nhớ cho chương trình, chúng ta cần có khả năng xác định được phạm vi địa chỉ hợp pháp mà chương trình có thể truy nhập và bảo vệ vùng nhớ còn lại Sự bảo vệ này được thực hiện bằng cách sử dụng 2 thanh ghi cơ sở và thanh ghi giới hạn Thanh ghi cơ sở (base register) lưu địa chị hợp pháp nhỏ nhất; thanh ghi giới hạn (limit register) chứa kích thước của vùng nhớ

Thanh ghi cơ sở và thanh ghi giới hạn chỉ có thể được nạp bởi hệ điều hành bằng việc sử dụng các lệnh đặc quyền đặc biệt Các lệnh đặc quyền chỉ có thể được thực hiện trong chế độ giám sát, và cũng chỉ có hệ điều hành mới được làm việc trong chế độ giám sát nên chỉ hệ điều hành mới có thể nạp các thanh ghi cơ sở và thanh ghi giới hạn

Bảo vệ CPU

Thêm vào việc bảo vệ vào ra và bảo vệ bộ nhớ, chúng ta phải đảm bảo hệ điều hành duy trì được điều khiển Chúng ta cần tránh để chương trình người dùng rơi vào vòng lặp không xác định hoặc không gọi các dịch

vụ hệ thống và không bao giờ trả lại quyền điều khiển cho hệ điều hành

Để đạt được mục tiêu này, chúng ta cần phải sử dụng đến một đồng hồ Chiếc đồng hồ này có thể được thiết lập để ngắt ngang việc xử lý của máy tính sau một khoảng thời gian chỉ định Khoảng thời gian này có thể được xác định (ví dụ 1/60 giây) hoặc thay đổi (ví dụ từ 1 mini giây đến 1 giây)

Hệ điều hành thiết lập bộ đếm Cứ sau mỗi xung nhịp đồng hồ, bộ đếm sẽ

bị giảm đi Khi bộ đếm đạt đến 0 thì một ngắt xuất hiện Trước khi chuyển điều khiển cho người dùng, hệ điều hành cần phải chắc chắn là ngắt đồng

hồ đã được thiết lập Khi đồng hồ phát sinh ngắt, quyền điều khiển hệ thống sẽ phải được chuyển đến cho hệ điều hành

Ta có thể sử dụng đồng hồ này để ngăn cản chương trình người dùng rơi vào tình trạng thực hiện quá lâu Ví dụ, một chương trình chạy với khoảng thời gian giới hạn là 7 phút Bộ đếm của nó có thể khởi đầu từ

420 Cứ sau 1 giây, ngắt đồng hồ sẽ giảm bộ đếm đi 1 đơn vị Trong khi giá trị bộ đếm vẫn dương thì quyền điều khiển được trả lại cho chương

Trang 22

Giới thiệu về hệ điều hành

trình người dùng Khi bộ đếm bắt đầu âm, hệ điều hành sẽ kết thúc chương trình đó do vượt quá thời gian giới hạn

Đồng hồ còn có thể được dùng trong hệ thốg chia sẻ thời gian Ngắt sẽ xuất hiện cứ sau N mini giây Trong khoảng N mini giây là thời gian để một chương trình thực hiện, hết thời gian này, quyền điều khiển

sẽ được chuyển cho chương trình khác Hệ điều hành sẽ chiếm lấy quyền điều khiển sau mỗi khoảng thời gian (trước khi chuyển quyền điều khiển cho chương trình tiếp theo) để nó thực hiện một số công việc “nội trợ” như đếm thời gian thực hiện Hệ điều hành đồng thời cũng lưu lại các thanh ghi, các biến cục bộ, các bộ đệm và thay đổi một số các tham số cho chương trình kế tiếp Thủ tục này được gọi là chuyển ngữ cảnh

2.6 Kiến trúc mạng

Có hai kiểu mạng cơ bản là mạng LAN và mạng WAN Sự khác nhau cơ bản giữa hai loại mạng này ở phạm vi của chúng

Mạng LAN (Local Area Network)

Đây là loại mạng có quy mô nhỏ, xuất hiện đầu tiên vào thập kỷ

70 Mạng này được xây dựng dựa trên các trang thiết bị, phụ kiện mạng đặc trưng cho mạng cục bộ

Mạng WAN (Wide Area Network)

Là mạng diện rộng với phạm vi có thể trong một tỉnh, một quốc gia hoặc liên quốc gia và trên toàn thế giới

Mạng này sử dụng các công nghệ cho phép truyền thông đi xa

3 DMA phát huy tác dụng trong kiểu xử lý nào? Giải thích

4 Câu lệnh nào sau đây có thể là đặc quyền:

- Thiết lập giá trị đồng hồ

- Đọc xung nhịp

Trang 23

- Xoá bộ nhớ

- Huỷ bỏ các ngắt

- Chuyển đổi từ chế độ người dùng sang chế độ giám sát

5 Một số hệ thống máy tính không cung cấp một chế độ đặc quyền trong điều hành của phần cứng Có khả năng xây dựng cơ chế bảo vệ hệ điều hành cho các máy tính đó hay không? Hãy đưa ra các giải thích cho

cả hai trường hợp có thể và không thể

6 Một số máy tính trước đây bảo vệ hệ điều hành bằng cách đặt

nó vào một vùng nhớ mà các nhiệm vụ của người dùng cũng như chính bản thân hệ điều hành cũng không thể thay đổi Hãy mô tả hai khó khăn

có thể xuất hiện theo lược đồ này

7 Bảo vệ hệ điều hành là một vấn đề cốt yếu để đảm bảo cho hệ điều hành làm việc đúng Cung cấp sẵn khả năng bảo vệ là lý do triển khai chế độ thực thi kép, bảo vệ bộ nhớ và đồng hồ kiểm soát chương trình Để tăng tối đa tính linh hoạt, đồng thời chúng ta cũng nên giảm bớt

sự rắc rối cho người dùng

Những chỉ thị lệnh trong danh sách sau đây được bảo vệ một cách bình thường Đâu là tập chỉ thị lệnh tối thiểu phải được bảo vệ?

a Chuyển sang chế độ người dùng

b Chuyển sang chế độ kiểm soát

c Đọc từ bộ nhớ kiểm soát

d Ghi vào bộ nhớ kiểm soát

e Lấy một chỉ thị lệnh từ bộ nhớ kiểm soát

f Bật ngắt đồng hồ

g Tắt ngắt đồng hồ

8 Đưa ra hai lý do giải thích sự hữu dụng của cache

9 Sự khác nhau cơ bản giữa LAN và WAN

10 Cấu hình mạng nào phù hợp nhất cho các môi trường sau:

a Một tầng ký túc xá

b Một trường đại học

c Một bang, tỉnh

d Một quốc gia

Trang 24

Giới thiệu về hệ điều hành

3 Cấu trúc hệ điều hành

Hệ điều hành cung cấp môi trường cho các chương trình ứng dụng hoạt động Thiết kế một hệ điều hành mới là một nhiệm vụ lớn, đòi hỏi mục tiêu của hệ điều hành cần phải được xác định rõ trước khi bắt đầu thiết kế Kiểu hệ thống mong đợi là cơ sở cho việc lựa chọn giải thuật và giải pháp thực hiện

Một hệ điều hành có thể được đánh giá thông qua một số điểm mạnh của nó Thứ nhất là bằng cách kiểm tra các dịch vụ mà nó cung cấp Thứ hai là xem giao diện mà nó cung cấp cho người dùng và các nhà lập trình Thứ ba là sự chia nhỏ thành các module và sựa ghép nối của chúng với nhau Trong phần này chúng ta sẽ khám phá cả ba đặc tính của

hệ điều hành, thể hiện từ góc nhìn của người dùng, các nhà lập trình và những người thiết kế hệ thống Chúng ta sẽ xem xét các dịch vụ mà hệ điều hành cung cấp cũng như cách mà chúng được cung cấp và các phương pháp luận trong thiết kế hệ thống

3.1 Các thành phần hệ thống

Quản lý tiến trình (Process Management)

Một chương trình không thực hiện được gì cả nếu như các lệnh của

nó không được CPU thi hành Một tiến trình là một chương trình đang được thi hành, nhưng ý nghĩa của nó còn rộng hơn Một công việc theo lô

là một tiến trình Một chương trình người dùng chia sẻ thời gian là một tiến trình, một công việc của hệ thống như soopling xuất ra máy in cũng

là một tiến trình

Một tiến trình phải sử dụng tài nguyên như thời gian sử dụng CPU,

bộ nhớ, tập tin, các thiết bị nhập xuất để hoàn tất công việc của nó Các tài nguyên này được cung cấp khi tiến trình được tạo hay trong quá trình thi hành Khi tiến trình được tạo, nó sử dụng rất nhiều tài nguyên vật lý và logic, cũng như một số để khởi tạo dữ liệu nhập Ví dụ , khảo sát tiến trình hiển thị trạng thái của tập tin lên màn hình Đầu vào của tiến trình là tên tập tin, và tiến trình sẽ thực hiện những chỉ thị thích hợp, thực hiện lời gọi hệ thống để nhận được những thông tin mong muốn và hiển thị nó lên

Trang 25

màn hình Khi tiến trình kết thúc, hệ điều hành sẽ tái tạo lại các tài nguyên có thể được dùng lại

Một chương trình tự nó không phải là một tiến trình; một chương trình chỉ là một thực thể thụ động, như nội dung của một file được lưu trên đĩa, trong khi đó, một tiến trình là một thực thể chủ động, với một bộ đếm chương trình chỉ định câu lệnh kế tiếp sẽ được thực hiện Việc thực hiện một tiến trình phải theo một trình tự CPU thực hiện các chỉ thị của tiến trình một cách tuần tự, hết lệnh này đến lệnh khác cho đến khi tiến trình hoàn tất

Một tiến trình là một đơn vị làm việc trong hệ thống Nói khác đi,

hệ thống là một tập hợp các tiến trình Một số trong đó là các tiến trình của hệ điều hành, số còn lại là những tiến trình của người dùng Tất cả các tiến trình này có thể được thực hiện song song bởi việc chia sẻ CPU giữa chúng

Hệ điều hành chịu trách nhiệm về các hoạt động sau đây liên quan đến công tác quản lý tiến trình:

- Tạo và xoá cả tiến trình người dùng và tiến trình hệ thống

- Ngừng và chạy trở lại các tiến trình

- Cung cấp các kỹ thuật cho việc đồng bộ các tiến trình

- Cung cấp các cơ chế giao tiếp giữa các tiến trình

- Cung cấp các cơ chế cho việc xử lý các deadlock

Chúng ta sẽ thảo luận về các kỹ thuật này ở phần sau

Quản lý bộ nhớ chính (Main-Memory Management)

Trong hệ thống máy tính hiện đại, bộ nhớ chính là trung tâm của các thao tác, xử lý Bộ nhớ chính có thể xem như một mảng kiểu byte hay kiểu word Mỗi phần tử đều có địa chỉ Đó là nơi lưu dữ liệu được truy xuất một cách nhanh chóng và được chia sẻ bởi CPU và các thiết bị vào

ra Bộ xử lý trung tâm đọc các chỉ thị lệnh từ bộ nhớ chính theo từng chu

kỳ lệnh, đọc và ghi dữ liệu vào bộ nhớ chính trong mỗi chu kỳ dữ liệu Các hoạt động vào ra được thực hiện thông qua DMA cũng đọc và ghi dữ liệu trong bộ nhớ chính Thông thường bộ nhớ chính là thiết bị lưu trữ lớn nhất mà CPU có thể định vị trực tiếp Ví dụ, để CPU truy xuất được dữ liệu

Trang 26

Giới thiệu về hệ điều hành

trên đĩa, những dữ liệu này phải được chuyển vào bộ nhớ chính qua các lời gọi hệ thống nhập/xuất

Một chương trình muốn thi hành trước hết phải được ánh xạ thành địa chỉ tuyệt đối và nạp vào bộ nhớ chính Khi chương trình thi hành, hệ thống truy xuất các chỉ thị lệnh và dữ liệu của chương trình trong bộ nhớ chính Ngay cả khi tiến trình kết thúc, dữ liệu vẫn còn trong bộ nhớ cho đến khi một tiến trình khác được ghi chồng lên

Để cải tiến cả hai tính năng của CPU và tăng tốc độ đáp ứng yêu cầu người dùng của máy tính, chúng ta cần phải giữ một số chương trình thường trú trong bộ nhớ Có nhiều chính sách quản lý bộ nhớ khác nhau,

và hiệu quả của mỗi giải thuật khác nhau lệ thuộc vào từng tình huống cụ thể Sự lựa chọn một chiến lược quản lý bộ nhớ cho một hệ thống xác định phụ thuộc vào nhiều yếu tố - sự đặc biệt trong thiết kế phần cứng của mỗi hệ thống, mỗi giải thuật cần đến sự hỗ trợ của phần cứng cho nó

Hệ điều hành chịu trách nhiệm cho các hoạt động sau đây trong liên quan đến công tác quản lý bộ nhớ:

- Theo dõi những phần bộ nhớ nào đang được sử dụng và bởi ai

- Quyết định tiến trình nào sẽ được nạp vào bộ nhớ khi bộ nhớ còn trống

- Cấp phát và giải phóng bộ nhớ khi cần thiết

Các kỹ thuật quản lý bộ nhớ sẽ được thảo luận kỹ ở phần sau

Quản lý file (File Management)

Quản lý file là một trong các thành phần có thể thấy rõ nhất của hệ điều hành Máy tính có thể lưu trữ thông tin trên một số kiểu phương tiện lưu trữ khác nhau Băng từ, đĩa từ, và đĩa quang là những phương tiện phổ biến nhất Mỗi thiết bị này đều có những đặc tính và kiến trúc vật lý riêng Mỗi môi trường được điều khiển bởi một thiết bị như bộ điều khiển đĩa, điều khiển băng từ và chúng cũng có những đặc tính riêng biệt Những đặc tính này bao gồm tốc độ truy nhập, dung lượng, tốc độ truyền

dữ liệu và phương pháp truy nhập (tuần tự hay ngẫu nhiên)

Trang 27

Để thuận lợi cho việc sử dụng hệ thống, hệ điều hành cung cấp một cách nhìn logic thống nhất trong việc lưu trữ thông tin Hệ điều hành trừu tượng hoá các thông số vật lý của các thiết bị để định nghĩa ra một đơn vị lưu trữ logic, đó là file Hệ điều hành ánh xạ các file vào các thiết bị vật lý và truy nhập đến các file thông qua các thiết bị điều khiển lưu trữ

Một file bao gồm các thông tin liên quan được định nghĩa bởi người tạo Thông thường, các file biểu diễn một chương trình và dữ liệu File dữ liệu có thể là file số, ký tự, ký tự số File có thể có mẫu tuỳ ý (ví dụ như file text) hoặc theo một định dạng cố định Một file bao gồm một chuỗi các bits, bytes, dòng hoặc bản ghi ý nghĩa của nó được định nghĩa bởi người tạo

Hệ điều hành cài đặt các khái niệm trừu tượng về file bằng việc quản lý các phương tiện lưu trữ, như đĩa, băng từ, và các trình điều khiển chúng Cùng với đó, thông thường các files được tổ chức trong các thư mục để thuận tiện cho sử dụng Cuối cùng, khi có nhiều người dùng truy nhập đến các files, ta mong muốn quản lý được từng người dùng và cách

mà họ truy nhập đến các files (ví dụ như đọc, ghi, bổ sung thêm vào file)

Hệ điều hành chịu trách nhiệm thực hiện các công việc sau trong quản lý file:

- Tạo và xoá các files

- Tạo và xoá các thư mục

- Hỗ trợ các đặc quyền trong quá trình thao tác trên các files và thư mục

- Sao lưu dự phòng các files trên các thiết bị lưu trữ lâu dài

Quản lý hệ thống vào ra (I/O-System Management)

Một trong các mục tiêu của hệ điều hành là che dấu các tính chất đặc trưng của từng thiết bị cụ thể đối với người, tạo sự thuận tiện trong quá trình khai thác các thiết bị Người dùng không phải biết các yêu cầu

kỹ thuật phức tạp của thiết bị Chỉ các trình điều khiển thiết bị mới phải biết và chúng chịu trách nhiệm thực hiện các tác vụ phức tạp thay cho người dùng

Trang 28

Giới thiệu về hệ điều hành

Một hệ thống vào ra con bao gồm:

- Một thành phần quản lý bộ nhớ bao gồm bộ đệm, cache và spolling

- Một giao diện điều khiển thiết bị chung

- Bộ điều khiển cho phần cứng cụ thể

Quản lý các thiết bị lưu trữ thứ cấp (Secondary-Storage Management)

Một trong các mục tiêu chính của hệ điều hành là thực thi các chương trình Những chương trình này, và dữ liệu mà chúng truy nhập tới phải được lưu trữ trong bộ nhớ, hoặc thiết bị lưu trữ chính trong khi thực hiện Vì bộ nhớ chính quá nhỏ để chứa được tất cả dữ liệu và các chương trình và dữ liệu được lưu trữ ở đó sẽ mất khi ngắt điện, hệ điều hành phải

hỗ trợ các thiết bị lưu trữ thứ cấp để lưu trữ dự phòng cho bộ nhớ chính Hầu hết các hệ thống máy tính hiện đại đều sử dụng các đĩa như là phương tiện lưu trữ trực tuyến chủ yếu cho cả dữ liệu và chương trình Hầu hết các chương trình đều được lưu trên đĩa cho đến khi chúng được nạp vào bộ nhớ, và sau đó sử dụng đĩa như là nguồn và đích trong quá trình xử lý của chúng

Hệ điều hành chịu các trách nhiệm sau trong công việc quản lý đĩa:

- Quản lý không gian lưu trữ còn trống

Các bộ xử lý trong hệ thống kết nối thông qua một mạng truyền thông, chúng có thể được cấu hình theo nhiều cách khác nhau Mạng có

Trang 29

thể được kết nối đầy đủ hoặc không đầy đủ Mạng truyền thông khi thiết

kế phải cân nhắc đến việc tìm đường cho các thông điệp và các chiến lược kết nối, và các vấn đề tranh chấp và bảo mật

Hệ thống phân tán cung cấp cho người dùng khả năng truy nhập vào nhiều nguồn tài nguyên Việc truy nhập tới một tài nguyên chia sẻ cho phép tăng tốc độ tính toán, các chức năng được mở rộng và dữ liệu trở lên hữu dụng và tăng độ tin cậy

Hệ thống bảo vệ (Protection System)

Nếu một hệ thống có nhiều người dùng cho phép thực thi nhiều tiến trình song song thì các tiến trình đó phải được bảo vệ khỏi các hoạt động của của các tiến trình khác Để đạt được mục tiêu này, cần có kỹ thuật đảm bảo các file, các đoạn nhớ, CPU, và các nguồn tài nguyên chỉ được các tiến trình truy nhập đến khi chúng được hệ điều hành cho phép

Ví dụ như, việc đánh địa chỉ bộ nhớ phần cứng phải đảm bảo rằng một tiến trình chỉ có thể thực hiện trong không gian địa chỉ của nó Đồng

hồ phải đảm bảo không tiến trình nào chiếm quyền điều khiển CPU mà không trả lại quyền điều khiển

Sự bảo vệ là bất cứ kỹ thuật nào nhằm điều khiển việc truy nhập của một chương trình, một tiến trình, hoặc người sử dụng tới nguồn tài nguyên được xác định bởi một hệ thống máy tính

Hệ thống thông dịch lệnh (Command-Interpreter System)

Một trong những chương trình hệ thống quan trọng cho một hệ điều hành là chương trình thông dịch lệnh (Command-Interpreter System), tạo ra một giao diện giữa người sử dụng và hệ điều hành Một

số hệ điều hành gộp cả hệ thống thông dịch lệnh trong lõi (kernel) Một

số hệ điều hành khác, như DOS và UNIX, coi trình thông dịch lệnh như một chương trình đặc biệt đang chạy khi một công việc đã được tiến hành hoặc khi người sử dụng lần đầu tiên đăng nhập (trong hệ thống chia sẻ thời gian)

Nhiều câu lệnh được chuyển đến hệ điều hành bởi các phát biểu điều khiển Khi một công việc mới được bắt đầu trong hệ thống xử lý bó, hoặc khi người sử dụng đăng nhập vào một hệ thống chia sẻ thời gian,

Trang 30

Giới thiệu về hệ điều hành

một chương trình đọc và thông dịch các phát biểu điều khiển một cách tự động Chương trình này có khi được gọi bộ thông dịch thẻ điều khiển (control-card interpreter) hoặc bộ thông dịch dòng lệnh (command-line interpreter), và nó thường được gọi là hệ vỏ (shell) Chức năng của nó chỉ đơn giản là nhận lệnh kế tiếp và thực thi nó

Các hệ điều hành thường khác nhau về giao diện, với một bộ thông dịch lệnh thân thiện hệ thống sẽ càng có được nhiều sự chấp nhận của người dùng Một kiểu giao diện thân thiện là dựa trên chuột, cửa sổ và hệ thống thực đơn trong Macintosh và Microsoft Windows Chuột được di chuyển để trỏ vào các hình ảnh, hoặc biểu tượng trên màn hình, nơi thể hiện các chương trình, các tệp tin và các chức năng hệ thống Phụ thuộc vào vị trí con trỏ chuột, chỉ cần nhấn vào một phím chuột là có thể thực thi một chương trình, lựa chọn một tệp tin hay thư mục, trải ra một thực đơn, nơi chứa đựng các lệnh Giao diện này tăng hiệu quả sử dụng, giảm bớt các khó khăn cho người dùng Một số giao diện khác khiến người dùng phải nhập lệnh bằng cách gõ phím, kết thúc và yêu cầu thực hiện lệnh bằng phím ENTER Giao diện của hệ điều hành MS-DOS và UNIX là loại giao diện được thực hiện theo cách này

3.2 Các dịch vụ hệ điều hành

Một hệ điều hành cung cấp một môi trường cho việc thực thi các chương trình ứng dụng Nó cung cấp các dịch vụ nào đó cho các chương trình và những người sử dụng chương trình Các dịch vụ cụ thể được cung cấp khác nhau tuỳ thuộc vào từng hệ điều hành, tuy nhiên ta có thể chỉ ra một số lớp cơ bản Những dịch vụ này được cung cấp nhằm tạo sự thuận lợi cho các lập trình viên, để các nhiệm vụ được lập trình một cách dễ dàng hơn

- Sự thực thi chương trình: hệ thống phải cho phép nạp một chương trình vào bộ nhớ và chạy chương trình đó Chương trình phải có khả năng kết thúc quá trình thực hiện một cách bình thường hoặc bất thường (nếu gặp lỗi)

- Thực hiện vào ra: trong quá trình thực hiện, một chương trình có thể cần đến sự vào ra Việc vào ra có thể thực hiện trên một tệp tin hay

Trang 31

một thiết bị vào ra Để tăng hiệu quả bảo vệ, người sử dụng thông thường không thể truy nhập trực tiếp vào các thiết bị vào ra Vì vậy, hệ điều hành phải cung cấp các phương tiện để thực hiện việc vào ra

- Thao tác hệ thống tệp tin: Hệ điều hành cần thiết phải cung cấp các dịch vụ thao tác trên hệ thống các tệp tin Rõ ràng là các chương trình

có nhu cầu đọc và ghi các tệp tin Tất nhiên các chương trình cũng có nhu cầu tạo và xoá các tệp tin bằng tên của chúng

- Sự giao tiếp: Trong rất nhiều tình huống, một tiến trình cần trao đổi thông tin với một tiến khác Sự giao tiếp này có thể xuất hiện dưới hai hình thức Thứ nhất, chúng được tạo ra giữa hai tiến trình cùng thực hiện trên một hệ thống máy tính Trường hợp thứ 2, chúng được tạo ra giữa hai tiến trình được thực thi trên hai hệ thống máy tính khác nhau đã được kết nối với nhau bằng một mạng máy tính Sự giao tiếp này có thể được tiến hành thông qua sự chia sẻ bộ nhớ, hoặc bằng kỹ thuật truyền thông điệp, trong đó các gói tin được chuyển giữa các tiến trình bởi hệ điều hành

- Phát hiện lỗi: hệ điều hành phải có khả năng báo lỗi Lỗi xảy ra có thể do CPU, bộ nhớ, trong thiết bị nhập xuất, … hay trong các chương trình Đối với mỗi dạng lỗi, hệ điều hành sẽ có cách giải quyết tương ứng

Thêm vào đó, một tập hợp các chức năng của hệ điều hành tồn tại không nhằm trợ giúp cho người sử dụng, nhưng để đảm bảo cho việc điều hành một cách có hiệu quả của chính bản thân hệ thống Với những hệ thống nhiều người dùng, hiệu quả sử dụng của hệ thống có thể gia tăng bởi việc chia sẻ tài nguyên giữa những người sử dụng

- Cấp phát tài nguyên: Khi có nhiều người dùng cùng truy cập vào

hệ thống hoặc khi có nhiều công việc được thực hiện song song, tài nguyên phải được cấp phát cho mỗi người dùng hay các công việc đó Việc cấp phát tài nguyên phải đáp ứng đủ và kịp thời và tối đa các yêu cầu, không gây ra tình trạng tắc nghẽn cho hệ thống

- Sự thanh toán: theo dõi xem người dùng đã sử dụng bao nhiêu và những loại tài nguyên nào và ghi chép lại làm cơ sở thanh toán về sau

Trang 32

Giới thiệu về hệ điều hành

- Sự bảo vệ: Trong hệ thống có nhiều người dùng, nhiều tiến trình cùng diễn ra trong một thời điểm, việc truy cập vào các tài nguyên phải được kiểm soát Mỗi người dùng thường được kiểm soát bởi tên nhận biết, mật khẩu và quyền truy cập và khai thác tài nguyên

3.3 Lời gọi hệ thống

Các lời gọi hệ thống (System Calls) cung cấp một giao diện giữa một tiến trình và hệ điều hành Những lời gọi này đã được tạo sẵn dưới dạng các câu lệnh hợp ngữ, và chúng thường được liệt kê trong nhiều sách hướng dẫn dành cho các lập trình viên hợp ngữ

Các hệ thống cũng cho phép lời gọi hệ thống được tạo ra trực tiếp

từ các ngôn ngữ lập trình bậc cao, trong trường hợp các lời gọi bình thường như các hàm đã được định nghĩa từ trước hoặc các lời gọi đến các chương trình con Chúng có thể sinh ra một lời gọi đến một đoạn mã thực thi, từ đó tạo ra các lời gọi hệ thống, hoặc lời gọi hệ thống có thể được tạo ra trực tiếp từ dòng lệnh

Một số ngôn ngữ như C, C++ và Perl có các định nghĩa thay thế cho ngôn ngữ Assembly trong lập trình hệ thống Các ngôn ngữ này cho phép tạo ra trực tiếp các lời gọi hệ thống Ví dụ như lời gọi hệ thống của Unix có thể được tạo ra trực tiếp từ chương trình viết bằng C hay C++ Trong Microsoft Windows, các lời gọi hệ thống có thể được tạo ra thông qua việc sử dụng các hàm API (Application Programmer Interface)

Để hiểu quá trình hoạt động của lời gọi hệ thống chúng ta cùng khảo sát một chương trình nhỏ dùng để đọc dữ liệu từ một tập tin và ghi sang tập tin khác Dữ liệu nhập đầu tiên của của chương trình là tên của hai tập tin: tập tin nhập và tập tin xuất Tên này được mô tả bằng nhiều cách tùy thuộc vào thiết kế hệ điều hành như: chương trình yêu cầu người

sử dụng cho biết tên của hai tập tin, họ cũng có thể cung cấp bằng cách lựa chọn với chuột Khi có tên của hai tập tin, chương trình mở tập tin nhập và tạo tập tin xuất Mỗi thao tác này được thực hiện bởi những lời gọi hệ thống khác nhau Cũng có những trường hợp phát sinh lỗi: Khi chương trình mở tập tin nhập, có thể xảy ra trường hợp không có tập tin

có tên như mô tả hoặc tập tin bị cấm truy cập Trong trường hợp này

Trang 33

chương trình phải xuất thông điệp lên màn hình Nếu tập tin nhập tồn tại, phải tạo tập tin mới Hệ thống phải kiểm tra tiếp xem đã có tập tin xuất tồn tại không và sẽ có những lời gọi hệ thống tương ứng để giải quyết hoặc là hủy tiến trình, hai là xóa tập tin đã tồn tại và tạo tập tin mới Sau khi đã thiết lập xong tập tin, hệ thống tiếp tục tạo vòng lặp đọc dữ liệu từ tập tin nhận và ghi lên tập tin xuất Mỗi bước đều có kiểm tra lỗi Sau khi chép xong, chương trình sẽ đóng hai tập tin lại (dùng một lời gọi hệ thống khác), xuất thông báo lên màn hình (dùng lời gọi hệ thống) cuối cùng chấm dứt chương trình (lời gọi hệ thống cuối cùng)

Trong các ngôn ngữ lập trình cấp cao, người sử dụng không cần quan tâm đến chi tiết mà chỉ cần thông qua các hàm hay các lệnh để thực hiện

Lời gọi hệ thống có thể xuất hiện theo nhiều cách khác nhau, tuỳ thuộc máy tính được sử dụng

Có ba phương pháp được sử dụng để chuyển tham số cho hệ điều hành Cách đơn giản nhất là chuyển tham số vào thanh ghi Nếu có nhiều tham số, chúng sẽ được lưu trữ trong khối hoặc bảng trong bộ nhớ Cách cuối cùng là dùng cơ chế ngăn xếp (stack)

Lời gọi hệ thống có thể được chia thành các loại : kiểm soát tiến trình, thao tác tập tin, thao tác thiết bị, thông tin

Các kiểu lời gọi hệ thống:

- Điều khiển tiến trình:

+ Kết thúc, huỷ bỏ + Nạp, thực thi + Tạo tiến trình, kết thúc tiến trình + Nhận trạng thái tiến trình, thiết lập trạng thái tiến trình + Chờ đợi một thời gian

+ Đợi sự kiện, phát tín hiệu sự kiện + Cấp phát và giải phóng bộ nhớ

Trang 34

Giới thiệu về hệ điều hành

- Quản lý file:

+ Tạo file, xoá file + Mở, đóng

+ Đọc, ghi, xác định vị trí + Lấy và thiết lập các thuộc tính

- Quản lý thiết bị:

+ Yêu cầu thiết bị, giải phóng thiết bị + Ghi, đọc, định vị

+ Đọc, thiết lập các thuộc tính + Kết nối một cách logic hoặc huỷ bỏ kết nối

- Duy trì thông tin:

+ Đọc, thiết lập ngày, giờ + Nhận dữ liệu hệ thống, thiết lập dữ liệu hệ thống + Nhập các thuộc tính của các tiến trình, file hoặc thiết bị + Thiết lập các thuộc tính của các tiến trình, file hoặc thiết bị

- Quản lý file: Các chương trình hỗ trợ việc tạo, xoá, sửa file

- Thông tin trạng thái: Các chương trình xử lý về ngày, giờ, thông tin hệ thống,

- Thay đổi file: các chương trình soạn thảo

- Hỗ trợ ngôn ngữ lập trình: chương trình dịch, thông dịch cho các ngôn ngữ lập trình

Trang 35

- Nạp và thực thi chương trình

- Truyền thông: các chương trình này tạo nên các kết nối ảo giữa các tiến trình, người dùng và các chương trình hệ thống khác

3.5 Kiến trúc hệ thống

Kiến trúc đơn giản

Rất nhiều các hệ thống thương mại không có một kiến trúc tốt Thông thường các hệ điều hành bắt đầu rất nhỏ và đơn giản Sau đó, phát triển dựa trên hệ thống cơ sở đó

MS-DOS là một hệ điều hành có cấu trúc đơn giản, nó cung cấp những chức năng cần thiết nhất trong một không gian nhỏ nhất do sự giới hạn của phần cứng mà nó chạy trên đó và không chia thành những đơn thể rõ rệt

Mặc dù MS-DOS là hệ điều hành có cấu trúc nhưng giữa giao diện

và chức năng không có sự phân chia rõ rệt Các chương trình ứng dụng có thể truy xuất trực tiếp các thủ tục nhập xuất cơ bản và ghi trực tiếp lên màn hình hay bộ điều khiển đĩa

Hình 3.1: Cấu trúc lớp của DOS

Chương trình ứng dụngChương trình hệ thống thường trú

Bộ điều khiển thiết bị của DOS

Bộ điều khiển thiết bị trong ROM BIOS

Trang 36

Giới thiệu về hệ điều hành

Một hệ điều hành cũng có cấu trúc đơn giản là UNIX với những version đầu tiên Cấu trúc của nó chỉ bao gồm hai phần : hạt nhân và các chương trình hệ thống Hạt nhân được chia thành một chuỗi giao tiếp và device driver (bộ điều khiển thiết bị)

Người sử dụng

Hệ vỏ và các lệnh, các trình biên dịch và thông dịch, các

thư viện hệ thống Giao tiếp lời gọi hệ thống với hạt nhân Các tín hiệu đầu

cuối, xử lý ký tự,

hệ thống vào ra, các bộ điều khiển thiết bị đầu cuối

Hệ thống file, hệ thống chuyển đổi vào ra khối, bộ điều khiển đĩa và băng từ

Lập lịch CPU, thay trang, yêu cầu trang trong

Trình điều khiển

bộ nhớ, bộ nhớ vật lý

Hình 3.2: Cấu trúc của hệ thống UNIX

Những gì dưới lời gọi hệ thống và trên phần cứng là hạt nhân Hạt nhân cung cấp hệ thống tập tin, lập lịch CPU, quản trị bộ nhớ và những chức năng hệ điều hành khác thông qua lời gọi hệ thống Tóm lại là toàn

bộ chức năng của hệ thống được kết hợp trong một lớp Những chương trình hệ thống dùng những lời gọi hệ thống được hỗ trợ bởi hạt nhân để cung cấp những chức năng hữu ích như biên dịch và thao tác tập tin Lời gọi hệ thống định nghĩa một giao tiếp lập trình cho UNIX, đó là tập hợp những chương trình hệ thống thông thường trong đó có định nghĩa giao tiếp với người sử dụng

Trang 37

Cấu trúc theo lớp

Hệ điều hành được chia thành nhiều lớp Lớp dưới cùng là phần cứng, lớp trên cùng là giao tiếp với người sử dụng Lớp hệ điều hành được cài đặt thành những đối tượng trừu tượng Thông thường một lớp của hệ điều hành bao gồm một số cấu trúc dữ liệu và các hàm có thể được gọi bởi lớp ở trên và bản thân nó gọi những chức năng của lớp bên dưới Mỗi lớp cài đặt chỉ sử dụng những thao tác do lớp dưới cung cấp Một lớp cũng không cần biết hệ điều hành được cài đặt như thế nào, nó chỉ cần biết những thao tác này làm gì thôi

Hình 3.3: Cấu trúc lớp của OS/2

Microkernels

Với các hệ thống lớn, nhân hệ thống có thể trở lên rất lớn và khó quản lý Để giải quyết vấn đề này người ta tiến hành module hoá nhân hệ thống theo cách tiếp cận microkerrnel Theo cách này, các thành phần không phải là cốt lõi của nhân hệ thống được di chuyển ra bên ngoài nhân

Giao tiếp với chương trình ứng dụng API mở rộng

Hệ thống con Hệ thống con Hệ thống con

Hạt nhân hệ thống

• Quản lý bộ nhớ

• Gửi các tác vụ

• Quản lý thiết bị Trình điều

khiển thiết bị khiển thiết bịTrình điều khiển thiết bịTrình điều

Trang 38

Giới thiệu về hệ điều hành

hệ thống như là các chương trình hệ thống và các chương trình người dùng

có thể sử dụng các lời gọi hệ thống để thực thi các lệnh máy

Một số hệ thống cho phép các chương trình hệ thống có thể được gọi bởi các chương trình người dùng một cách dễ dàng Vì vậy mặc dù các chương trình hệ thống thuộc mức cao hơn so với mức mã máy nhưng các chương trình ứng dụng vẫn có thể nhìn thấy những gì có bên dưới lớp này Cách tiếp cận theo lớp như vậy tạo nên một khái niệm về máy ảo Máy ảo sẽ tạo ra môi trường làm việc với với kiến trúc phần cứng (ảo) thuần nhất để các chương trình ứng dụng có thể chạy được

Bằng cách sử dụng lập lịch cho CPU và kỹ thuật bộ nhớ ảo, một hệ điều hành có thể tạo nhiều tiến trình phức ảo, mỗi tiến trình sẽ thực hiện trên một bộ xử lý và bộ nhớ riêng Những tiến trình này có những đặc điểm riêng như lời gọi hệ thống và hệ thống tập tin không được cung cấp phần cứng trực tiếp

Tài nguyên của hệ thống được chia sẻ để tạo những máy ảo Lập lịch CPU chia sẻ CPU cho các người sử dụng Spooling và hệ thống tập tin được chia thành những card đọc ảo và máy in ảo Một terminal cung cấp các chức năng tạo các thao tác màn hình ảo

Vấn đề phức tạp nhất của máy ảo là hệ thống đĩa Giả sử hệ thống chỉ có ba bộ điều khiển đĩa nhưng có tới bảy máy ảo Như vậy không thể gán cho mỗi máy ảo một bộ điều khiển đĩa và giải pháp là xây dựng hệ thống đĩa ảo

Mặc dù khái niệm máy ảo rất hữu ích nhưng khó cài đặt Máy ảo phải thực hiện ở hai dạng: dạng giám sát (monitor) và dạng người sử dụng Ngoài ra máy ảo còn phải giải quyết các vấn đề về vận chuyển dữ liệu và thời gian

Trang 39

Hạt nhân

Giao tiếp chương trình

Trang 40

Giới thiệu về hệ điều hành

3.7 Câu hỏi và bài tập

1 Năm hoạt động chính của hệ điều hành liên quan đến quản lý tiến trình là gì?

2 Ba hoạt động chính của hệ điều hành liên quan đến quản lý bộ nhớ là gì?

3 Ba hoạt động chính của hệ điều hành liên quan đến quản lý bộ nhớ thứ cấp là gì?

4 Năm hoạt động chính của hệ điều hành liên quan đến quản lý file là gì?

5 Liệt kê các dịch vụ được cung cấp bởi hệ điều hành, giải thích sự thuận tiến mà chúng mang đến cho người dùng

6 Mục tiêu của lời gọi hệ thống là gì?

7 Mục tiêu của chương trình hệ thống là gì?

8 Ưu điểm chính của phương pháp thiết kế hệ thống theo lớp là gì?

9 Ưu điểm chính của phương pháp thiết kế hệ thống theo microkernel?

10 Ưu điểm chính của hệ điều hành được thiết kế cho sử dụng kiến trúc máy ảo là gì?

Ngày đăng: 24/10/2017, 15:50

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w