Bài giảng Nguyên lý hệ điều hànhHệ điều hành là phần mềm hệ thống đặc biệt có khả năng tự động đưa hệ thống máytính vào trạng thái hoạt động. Nếu trên hệ thống máy tính không có Hệ điều hành thì nó chỉ là các linh kiện điện và điện tử được kết nối với nhau theo một kiến trúc nào đó mà không sử dụng được. Nhưng nếu trên hệ thống máy tính có một Hệ điều hành thì nó trở thành hệ thống tính toán, xử lý và tổ chức lưu trữ thông tin (dữ liệu). Hệ điều hành cung cấp một tập lệnh với giao diện thuận lợi để người sử dụng khaithác hệ thống máy tính có hiệu quả. Hệ điều hành quản lý toàn bộ tài nguyên của hệ thống (hệ thống tệp, các thiết bị vào ra, các thành phần khác của hệ thống…).
Trang 1HỆ ĐIỀU HÀNH
BỐ CỤC GỒM HAI PHẦN PHẦN 1: HỆ ĐIỀU HÀNH CHUNG
Chương 1: Một số khái niệm cơ bản
Chương 2: Hệ thống tệp và cài đặt
Chương 3: Các thiết bị vào/ra
Chương 4: Hệ điều hành quản lý bộ nhớ
PHẦN 2: HỆ ĐIỀU HÀNH MS-DOS
Chương 1: Hệ điều hành MS-DOS quản lý hệ thống tệp
Chương 2: Khái niệm ngắt, xử lý ngắt, ví dụ về ngắt và lập trình ngắt
TÀI LIỆU THAM KHẢO:
[1] Andrew S Tanenbaum, Modern Operating System, Printice-Hall Inter., Inc.,1992.
[2] Lê Ngọc Xuân, Hệ điều hành, Tủ sách Đại học Sư Phạm Vinh, 2000.
[3] Quách Tuấn Ngọc, Đỗ Tiến Dũng, Nguyễn Quang Khải, Ngôn ngữ lập trình Assembly và máy vi this IBM-PC, T 1, 2 (bản dịch), NXB Giáo Dục, 1995.
[4] Ngô Trung Việt, MS C Turbo C, MS-DOS, hướng dẫn khai thác và sử dụng, Viện khoa học Tính toán và Điều khiển, Hà Nội, 1988.
Trang 2Chương 1 Các khái niệm cơ bản của HĐH
1.1 Chức năng, vị trí của Hệ điều hành trong hệ thống
1 Chức năng
- Hệ điều hành là phần mềm hệ thống đặc biệt có khả năng tự động đưa hệ thống máy tính vào trạng thái hoạt động Nếu trên hệ thống máy tính không có Hệ điều hành thì
nó chỉ là các linh kiện điện và điện tử được kết nối với nhau theo một kiến trúc nào đó
mà không sử dụng được Nhưng nếu trên hệ thống máy tính có một Hệ điều hành thì
nó trở thành hệ thống tính toán, xử lý và tổ chức lưu trữ thông tin (dữ liệu).
- Hệ điều hành cung cấp một tập lệnh với giao diện thuận lợi để người sử dụng khai thác hệ thống máy tính có hiệu quả.
- Hệ điều hành quản lý toàn bộ tài nguyên của hệ thống (hệ thống tệp, các thiết bị vào
ra, các thành phần khác của hệ thống…).
2 Phân tầng hệ thống
Hệ thống máy tính có thể được phân thành 6 tầng như sau:
- Sơ đồ phân tầng hệ thống
Trang 3- Tầng vật lý (tầng 0): Chứa các thiết bị vật lý bao gồm các vỉ mạch, chíp, nguồn điện, mạch điện v v Tầng này làm nhiệm vụ vận chuyển tín hiệu (dữ liệu) vào ra
- Tầng ngôn ngữ máy (tầng 2): Ngôn ngữ máy thường có 50-300 lệnh máy, số
lệnh máy phụ thuộc vào các kiến trúc máy tính Các lệnh máy chủ yếu dùng để di Chuyển dữ liệu, thực hiện các phép toán số học, logic và so sánh giá trị.
Trang 4- Tầng Hệ điều hành (tầng 3): Chức năng của Hệ điều hành là che kín sự phức tạp của tầng dưới, tổ chức thực hiện chương trình và cung cấp tập lệnh và giao diện để người sử dụng khai thác hệ thống.
- Tầng các tiện ích (tầng 4): Tầng này chứa các tiện ích hỗ trợ người sử dụng khai thác hệ thống có hiệu quả Trên tầng này chứa các lệnh thông dịch, các bộ biên
dịch, các bộ thông dịch và lớp các chương trình ứng dụng độc lập, các chương trình này không phải là một phần của hệ điều hành mặc dầu vậy chúng được các hẵng máy tính sử dụng (như các tiện ích)
- Tầng các chương trình ứng dụng (tầng 5): Tầng này bao gồm các chương trình do ngườI sử dụng viết để giải quyết các vấn đề cụ thể của mình, ví dụ như: xử lý số liệu kế toán, thương mại, các tính toán kỹ thuật và khoa học, các trò chơi v v.
1.2 Các khái niệm của hệ điều hành
1 Tiến trình: Các tiến trình là nền cơ bản để thực hiện một chương trình Một ứng
dụng thực hiện trên máy tính, thông thường cả hệ điều hành, được thiết lập bằng số các tiến trình tuần tự (hay các tiến trình) Tiến trình thực chất là chương trình thực hiện trong đó gồm các giá trị chương trình đếm, các thanh ghi, các biến Có thể quan niệm mỗi tiến trình có bộ vi xử lý (CPU) ảo của riêng mình Tất nhiên trong thực tế CPU chuyển đổi qua lại (switch) giữa các tiến trình và có thể xem rằng tập các tiến trình thực hiện song song Sự tiến lui, tiến tới của CPU giữa các chương trình gọi là đa chương Hệ điêuh hành quản lý các tiến trình như: khởi tạo mới, hủy
bỏ, dừng một tiến trình Một tiến trình khi thực hiện có thể yêu cầu một tiến trình khác (gọi là tiến trình con), đến lượt nó tiến trình con có thể lại yêu cầu một tiến trình con khác v v, vì vậy tập các tiến trình có cấu trúc cây.
Trang 52 Lời gọi hệ thống: Các chương trình của người dùng kết nối với hệ thống (hệ điều
hành) và yêu cầu dịch vụ từ nó bằng cách tạo các lời gọi hệ thống Tương ứng với từng lời gọi hệ thống có một thủ tục dịch vụ của hệ điều hành mà lời gọi hệ thống của người dùng có thể gọi đến Thủ tục này tiết lập các tham số của lời gọi hệ thống vào một địa chỉ xác định (có thể là thanh ghi) và sau đó dùng lệnh bẩy (trap instruction) để khởi động hệ điều hành Khi hệ điều hành nhân lệnh nó xem xét các tham số kiểm tra đúng sai và thực hiện yêu cầu (thể hiện qua tham các tham số) Khi công việc kết thúc hệ điều hành thiết lập lại các mã trạng thái thanh ghi thông báo thủ tục đã được thực hiện hay hủy bỏ và trả lại điều khiển cho thủ tục thư viện từ lệnh bẩy Sau đó thủ tục thư viện trả điều khiển về cho chương trình của người dùng bằng cách thông thường, trả lại mã trạng thái như một lời gọi hàm Trong một vài trường hợp các giá trị bổ sung được trả lại theo tham số.
A
D
Hình 1.2
Trang 6Sơ đồ các bước thực hiện lời gọi hệ thống
3 2
4
Hệ điều hành
Chương trình người dùng
Lời gọi hệ thống
4 Chương trình của người dùng (Uer’s Programs)
3 Điều hành vào/ra (Input/Output Management)
2 Kết nối các xử lý toán tử (Operator-process Communications)
1 Điều hành bộ nhớ và trống từ (Memory and Drump Management)
0 Sơ đồ bộ nhớ và đa lập trình (Memory Allocation and Multiprogramming)
Trang 7Lệnh
vào/ra
VM/370Lệnh bẩy
370 Bare Hardware
4 Mô hình khách/chủ (client/sever)
Xu hướng xây dựng hệ điều hành là chuyển mã (code) lên tầng cao chỉ để lại phần
tối thiểu ở phần nhân Trong mô hình này có hai loại
• Mô hình tập trung: trên toàn bộ hệ thống chỉ có một hệ điều hành ở máy chủ, các
máy khách kết nối với máy chủ để khai thác dịch vụ Mọi xử lý thông tin đều thực
hiện trên máy chủ.
Hình 1-6
Client
process
Client process
Process sever
Terminal sever
File
sever
Memory sever
Kernel
Client nhận dịch
vụ bằng cách gửi thông báo
Hình 1-7
Trang 8• Mô hình phân tán:
Trên hệ thống có nhiều hệ điều hành, các hệ điều hành có thể khác nhau nhưng kết nối được với nhau Các máy khách kết nối với máy chủ khi cần khai thác dịch vụ, mọi xử lý thông tin trên máy nào do hệ điều hành ở máy đó đảm nhận Khi không kết nói các máy trong hệ thống có thể làm việc độc lập.
Mạng máy tính Thông báo từ máy khách đến máy chủ
1.4 Phân loại hệ điều hành
1 Phân loại theo tính năng: Để phân loại theo tính năng chúng ta xét mọt số khái niệm sau:
- Đơn chương: Hệ thống hỗ trợ chỉ một người sử dụng tại mỗi thời điểm
- Đa chương: Hệ thống hỗ trợ niều nười sử dụng tại mỗi thời điểm
- Đơn nhiệm: Hệ thống chỉ hỡ trợ thực hiện chương trình tại mỗi thời điểm
- Đa nhiệm: Tại mỗi thời điểm hệ thóng hỗ trợ thực hiện niều chương trình
Từ các khái niệm trên chúng ta phân ra phân lại cho hệ điều hành
+ Hệ điều hành đơn chương/đơn nhiệm
+ Hệ điều hành đơn chương/đa niệm
+ Hệ điều hành đa chương/đa nhiệm
Trang 92 Phân loại theo xử lý thông tin
+ Hệ điều hành tập trung
+ Hệ điều hành phân tán
1.5 Các tính chất và các nguyên lý cơ bản khi thiết kế hệ điều hành
1 Các tính chất cơ bản
a) Độ tin cậy cao: Hệ thống phải hoạt động ổn định và luôn cho kết quả đúng trong
mọi tình huống, nghĩa là khi biết chắc chắn đúng thì HĐH mới cung cấp thông tin cho người sử dụng Để đảm bảo được tính chất này các hệ điều hành phải thiết lập
hệ thống giám sát (Monitor System), kiểm tra, đánh giá tính đúng đắn của mọi xử
lý dữ liệu, trong trường hợp không xử lý được HĐH thông báo lỗi, ngừng xử lý hoặc trao quyền cho người sử dụng.
b) Tính an toàn: Hệ thống phải đảm bảo cho dữ liệu, chương trình không bị xóa
hoặc bị thay đổi trong mọi trường hợp và mọi chế độ hoạt động; phải có cơ chế tự phục hồi trong một số tình huống cụ thể (yêu cầu này đặc biệt quan trọng trong hệ thống đa nhiệm)
c) Tính hiệu quả: Đảm bảo các tài nguyên hệ thống máy tính được khai thác triệt để
sao cho ngay cả khi tài nguyên hạn chế vẫn có thể giải quyết được các vấn đề phức tạp Một trong những yếu tố đảm bảo tính hiệu quả là sự đồng bộ của hệ thống d) Tính tổng quát theo thời gian: Hệ điều hành phải có tính kế thừa đồng thời có khả
năng thích nghi với những thay đổi trong tương lai (tính mở) Tính kế thừa đảm bảo cho các phiên bản phát triển của HĐH tương thích với nhau làm cho người sử dụng yên tâm và không khó khăn khi chuyển từ phiên bản này sang phiên bản khác Tính chất này về mặt tâm lý bảo vệ được khách hàng và chính là điều kiện tiên quyết cho HĐH tồn tại và phát triển
Trang 101.5 Một số nuyên lý cơ bản trong xây dựng HĐH
1 Nguyên lý moodul: Các chức năng của HĐH đều được tổ chức dưới dạng các modul
độc lập về mặt xử lý Các modul trao đổi với nhau thông qua việc dùng tham số hoặc hộp thư tĩnh (địa chỉ cố định) Quan hệ giữa các modul xác lập phân cấp khi kết nối thành một hệ thống nhờ một modul chính.
2 Nguyên lý mở: Các modul có thể được thay thế hoặc bổ sung, sửa đổi dễ dàng và không
được ảnh hưởng đến các modul khác Các modul được xây dựng theo nguyên tắc độc lập về dữ liệu.
3 Nguyên lý sinh: Hệ thống cho phép tạo các phiên bản từ tập các modul bằng cách chọ
lọc các modul cần thiết nhờ một chương trình cài đặt Chương trình cài đặt cung cấp đầy đủ thông tin cho quá trình cài đặt và có hệ thống trợ giúp đầy đủ.
4 Nguyên lý giá trị chuẩn: Lời gọi mỗi modul, câu lệnh có thể có nhiều tham số Việc nhớ
hết các tham số, ý nghĩa, qui cú pháp của chúng gây khó khăn cho người dùng, vì thế
hệ thống luôn có bộ các tham số chuẩn (mặc định) tương ứng với các trường hợp
thường dùng nhất bổ sung khi lời gọi modul hoặc câu lệnh thiếu tham số.
5 Nguyên lý Macro: Hệ thống cho phép xây dựng các phiếu yêu cầu, trong đó liệt kê các
công việc cần thực hiện và có thể tực hiện các công việc trong phiếu tự động như tực hiện một chương trình Các HĐH đều suwqr dụng nguyên tắc này trong đối thoại với người sử dụng, làm cho việc tiếp xúc giauwx hệ thống và người dùng thêm linh hoạt.
6 Nguyên lý tương đối trong định vị: Các modul được viết theo địa chỉ tương đối kể từ đầu
bộ nhớ Khi thực hiện chúng mới được định vị lại trong vùng bộ nhớ cụ thể Nguyên lý này cho phép HĐH sử dụng bộ nhớ một cách linh hoạt.
Trang 11Các nguyên lý xây dựng HĐH (tiếp)
7 Nguyên lý lặp chức năng: Mỗi công việc được tực hiện bởi nhiều cách khác nhau với
những tổ hợp các modul khác nhau Nguyên lý này bảo đảm cho hệ thống luôn sẵn sàng và có độ an toàn cao và tạo cho người dùng linh hoạt hơn khi tiếp xúc với hệ thống.
8 Nguyên lý bảo vệ nhiều mức: Để dảm bảo an toàn hệ thống, dữ liệu và chương trình
các HĐH đều có cơ chế bảo vệ niều mức Bảo vệ nhiều mức làm giảm các rủi ro
do các lỗi không cố ý gây nên Đối với tệp có thể có các mức bảo vệ: Miền
(domain), Máy tính, đĩa từ, thư mục.
Trang 12Chương 2 Hệ thống tệp và cài đặt hệ thống tệp
2.1 Mở đầu:
- Hầu hết các ứng dụng đều có nhu cầu lưu trữ dữ liệu và tìm lại được khi cần thiết
Trong khi các tiến trình đang thực hiện, có thể nó cần lưu trữ một khối lượng dữ liệu vào địa chỉ riêng Các ứng dụng khác nhau có nhu cầu lưu trữ dữ liệu với kích thước khác nhau mặc dầu khả năng lưu trữ bị hạn chế bới không gian địa chỉ ảo Vì thế có những ứng dụng có không gian lưu trữ phù hợp, có những ứng dụng không phù hợp.
- Việc lưu thông tin trong không gian địa chỉ của các tiến trình, thì khi tiến trình kết
thúc dữ liệu sẽ bị mất Đối với các ứng dụng cơ sở dữ liệu, thông tin (dữ liệu) cần phải được lưu trữ hàng tuần, hàng tháng, hành năm vì vậy nếu các tiến trình sử dụng dữ liệu thì khi kết thúc dữ liệu sẽ mất, hoặc khi máy gặp sự cố.
- Có thể nhiều tiến trình cùng truy nhập vào cùng một mục dữ liệu tại một thời điểm
(trong hệ thống phân tán, đa nhiệm/đa chương)
Như vậy có 3 yêu cầu cần thiết cho việc lưu trữ thông tin (dữ liệu):
1 Cần cung cấp khả năng lưu trữ khối lượng thông tin (dữ liệu) lớn
2 Thông tin (dữ liệu) phải giữ lại khi kết thúc tiến trình sử dụng nó
3 Bảo đảm đa tiến trinh truy nhập đồng thời vào một mục dữ liệu tại một thời điểm
Để giải quyết các yêu cầu này các HĐH đều cung cấp cơ chế lưu trữ thông tin (dữ liệu) lên các thiết bị bộ nhớ ngoài theo đơn vị quản lý gọi là tệp Sao cho các tiến trình có thể đọc hoặc tạo ra nó khi cần thiết Thông tin (dữ liệu) lưu trữ trong tệp phải vĩnh cửu không bị ảnh hưởng vào sự khởi tạo hay kết thúc tiến trình.
2.2 Tệp
Tệp là cơ chế trừu tượng, cung cấp phương tiện để lưu trữ thông tin (dữ liệu) lên các thiết bị bộ nhớ ngoài và có thể đọc lại khi cần thiết.
Trang 131 Tên tệp:
- Tên tệp gồm hai thành phần: Tên và đuôi tệp (phần mở rộng) Tên tệp dùng để định danh một nhóm thông tin lưu trữ trên thiết bị bộ nhớ ngoài Qui tắc đặt tên tệp tùy theo từng hệ điều hành trong các hệ điều hành khác nhau qui tắc đặt tên có thể là kacs nhau
Đuôi tệp (phần mở rộng) nhiều khi cũng phản ánh một phần bản chất thông tin lưu trữ trong tệp, ví dụ đuôi txt là tệp văn bản, pas là tệp chương trình nguồn trong ngôn ngữ Pascal, doc là tệp văn bản soan thảo trong ms-word v v Trong một số trường hợp đuôi tệp là mặc định của một số hệ thống phần mềm hoặc các trình biên dịch của các ngôn ngữ Ngoài việc phản ánh mọt phần bản chất thông tin lưu trữ trong tệp đuôi tệp còn giúp cho việc tìm kiếm nhanh và hiệu quả
2 Kiểu tệp:
- Mỗi hệ điều hành hỗ trợ một vài kiểu tệp, ví dụ trong UNIX và MS-DOS có các tệp chính qui, các thư mục, các tệp các ký hiệu hoặc các khối đặc biệt Các tệp chính qui là các tệp của người dùng chứa các thông tin của người dùng Các HĐH quản lý các thư mục như các tệp hệ thống dùng để bảo trì hệ thống tệp Các tệp các ký hiệu hoặc các khối đặc biệt có quan hệ với
hệ thống các thiết bị vào/ra, có thể là tệp mô tả thiết bị hoặc trình điều khiển thiết bị
Các tệp chính qui phổ biến là các loại tệp ASCII (tệp văn bản) hoặc tệp nhị phân, các tệp có cấu trúc văn bản thì có
3 Phân loại theo truy nhập:
Theo phương hức truy nhập vào tệp người ta chia tệp thành 2 loại: Các tệp truy nhập tuần tự là các tệp muốn truy nhập vào một phần tử phải truy nhập qua phần tử trước đó (các tệp tuần tự được tổ chức lưu trữ trên các thiết bị băng từ) Các loại tệp trực truy (truy nhập ngẫu nhiên) là các tệp cho phép truy nhập vào bất kỳ phần tử nào của tệp tại mọi thời điểm (lưu trữ là đĩa từ)
4 Thuộc tính tệp:
- Để quản lý hệ thống tệp được tốt hơn các HĐH ngoài việc lưu trữ dữ liệu còn tổ chức lưu trữ thêm một số thông tin (các thuộc tính-attributes) giúp cho việc quản lý tệp chính xác và có hiệu quả, ví dụ như: ngày tháng, time cập nhật cuối cùng, kích thước tệp, các cờ ẩn, chỉ đọc v v
Trang 14Tên thuộc tính Ý nghĩa Bảo vệ (Protection) Qui định quyền và cách truy nhập
Mật khẩu (Password) Truy nhập theo mật khẩu
Cờ chỉ đọc (read only) bit set 1 tệp chỉ đọc, bit set 0 tệp bình thường
Cờ ẩn (Hidden) bit set 1 tệp ẩn, bit set 0 tệp bình thường
Cờ hệ thống (system) bit set 1 tệp hệ thống, bit set 0 tệp bình thường
Nhãn đĩa (volume label) bit set 1 cho các tệp nếu có nhãn đĩa, còn không bit set 0
Cờ thư mục (directory) bit set 1 là thư mục, bit set 0 là tệp
Cờ lưu trữ (archive) bit set 1 tệp lưu trữ (mặc định)
Cờ ASCII/Nhị phân bit set 1 tệp nhị phân, bit set 0 tệp văn bản
Cờ truy nhập ngẫu nhiên bit set 1 tệp truy nhập ngẫu nhiên, bit set 0 tệp tuần tự
Cờ lưu trữ tạm thời bit set 1 tệp tạm xóa, bit set 0 tệp bình thường
Cờ khóa bit set 0 tệp không khóa, bit set khác 0 tệp khóa
Time, Date
Kích thước hiện thời Kích thước hiện thời của tệp
Kích thước tối đa cảu têp Kích thước tối đa của tệp (bytes)
Địa chỉ khối dữ liệu đầu tiên của tệp Kích thước tối đa của tệp
Trang 15Tất cả các thuộc tính của tệp được lưu trong đầu tệp (header)
5 Thư mục
Thư mục được các hệ điều hành quản lý như một tệp hệ thống Nội dung của thư mục không phải là thông tin (dữ liệu) lưu trữ mỗi phần tử của nó là một đầu vào của một tệp Cấu trúc thư mục giúp cho việc tổ chức lưu trữ tệp được tối ưu và có hiệu quả: Nhóm các tệp có quan hệ vào cùng một thư mục, tìm kiếm nhanh, số tệp quá nhiều trong một thư mục HĐH không quản lý được
- Tên thư mục: Mỗi thư mục có tên, qui tắc đặt tên như đặt tên tệp Thư mục được tổ chức phân
1 Phương pháp lưu trữ liền nhau:
2 Danh sách liên kết:
3 Bảng chỉ số: Để khắc phục nhược điểm của hai phương pháp trên chúng ta sử dụng phương
pháp bảng chỉ số
- Cấu trúc: Mỗi đơn vị đọc ghi trên ổ đĩa được quản lý bằng một đầu vào trong bảng Như vậy
số phần tử trong bảng bằng số đơn vị đọc ghi trên đĩa (nói cách khác mối khối đọc ghi trên đĩa
có tương ứng 1-1 một đại diện trong bảng
- Nội dung các phần tử của bảng: Mỗi phần tử của bảng chứa địa chỉ các khối dữ liệu của các tệp và như vậy địa chỉ các khối dữ liệu củ mỗi tệp tạo thành một liên kết (mắt xich-chain) trong bảng Dựa vào các mắt xích đó hệ thống truy nhập vào hệ thống các tệp
Trang 16Ví dụ: Giả sử trên đĩa từ có 15 khối đọc ghi được địc chỉ hóa (chỉ số) từ 0-15.Giả sử các khối dữ
liệu của tệp A được lưu tại các khối 2, 4, 6, 7, 9 Khi đó mắt xích các khối dữ liệu của tệp A hình thành tron bảng chỉ số như hình 2-8
000 0100
000 0110
000 0111
000 1001 EOF(A)
Tệp A bắt đầu từ đây
Mắt xích của tệp A
Hình 2-8
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Trang 174 I-nút (I-node): Đại chỉ các khối dữ liệu của mỗi tệp được lưu trong một bảng nhỏ I-nút
(giống như bảng chỉ số) và danh sách các thuộc tính Các đia chỉ của khối dữ liệu đầu tiên được chứa trong I-nút cho các tệp nhỏ, khi mà các thông ti cần thiết chứa hết trong một I-nút và chúng được nạp vào bộ nhớ khi mở tệp Nếu các tệp có kích thước lớn, một trong các địa chỉ trong một I-nút là địa chỉ khối của đĩa từ gọi là khối đơn trực tiếp Các khối đơn này chứa các địa chỉ các khối dữ liệu chứa chưa hết trong một I-nút Nếu tệp quá lớn các địa chỉ các khối dữ liệu vẫn chưa chứa đủ thì địa chỉ khác trong i-nút, gọi là khối đôi trực tiếp, chứa địa chỉ của một khối, trong đó chứa danh sách các khối đơn Mỗi mọt khối đơn tực tiếp chứa một vài trăm khối
dữ liệu của tệp Nếu tệp quá lớn thì có thể sử dụng cấu trúc khối ba trực tiếp Hệ điwwù hành UNIX dùng phương pháp này để cài đặt tệp Xem minh họa ở hình 2-9
Các thuộc tính
Địa chỉ trên đĩa
Khối đơn trực tiếp Khối đúp trực tiếp Khối ba trực tiếp
Trang 185 Sự an toàn của hệ thống tệp
Sự an toàn của hệ thống tệp là yêu cầu cao đối với hệ thống Nếu hệ thống tệp bị phá hoại thì
có thể gây tai họa lớn hơn khi bị hỏng phần cứng Đối với những người quản ký hệ thống chương trình, tài liệu, các cơ sở dữ liệu như ngân hàng, kho bạc, kế toán, nếu dữ liệu bị phá hoại thì đối với họ là thảm họa Để bảo đảm an toàn hệ thống tệp chúng ta xét một số phương pháp sau:
a) Quản lý các khối hỏng: Trên các ổ đĩa thường có các khối hỏng, nếu không quản lý được các
khối hỏng nười sử dụng có thể vô tình làm mất dữ liệu khi ghi dữ liệu vào các khối hỏng Có hai phương pháp mà hệ thống có thể kiểm soát các khố hỏng: bằng phần cứng và phần mềm Bằng phần cứng là khi bộ điều khiển đĩa khởi tạo lần đầu tiên nó kiểm tra và ánh xạ chúng sang danh sách các khối hỏng Từ đó về sau các khối hỏng sẽ vĩnh viện không sử dụng để lưu
dữ liệu Bằng phần mềm, mọi hệ thống đều có các tiện ích để kiểm soát các khối hỏng, ví dụ chương trình scan của HĐH Windows, các tiện ích này sẽ được hệ thống tự khởi động hoặc
do nười dùng yêu cầu khi thấy cần thiết
b) Sao lưu: Một trong những biện pháp có hiệu quả nhất là sao lưu dữ liệu ra ngoài hệ thống
Tùy mức độ quan trọng mà nười quản lý hệ thống định chu kỳ sao lưu Sao lưu phải nhiều bản, lưu giữ ở các nơi khác nhau
c) Kiểm soát sự tương thích của hệ thống tệp: Hầu hết các tệp được hệ thống sử dụng bằng
cách đọc các khối, sửa đổi chúng và sau đó ghi lại Nếu hệ thống bị hỏng trước khi các khối
bị sửa đổi được gi vào tệp, hệ thống có tể gặp trạng thái không tương thích Liên quan đến sự tương thích hệ thống tệp hầu hết các HĐH đều có trình tiện ích để kiểm tra sự tương thích Các tiện ích này có thể được thực hiện khi hệ thống khởi động, hoặc, thoog thường sau khi hệ thống bị sự cố Tiện ích này gồm hai bảng bộ đếm cho mỗi khối đọc/ghi trên đĩa: Bộ đếm ghi
số lần mỗi khối dữ liệu xuất hiện trong các tệp, bộ đếm thứ hai đếm số lần mỗi khối xuất hiện trong danh sách tự do, khởi tạo ban đầu cả hai bộ đếm bằng không Nếu hệ thống tệp tương thích, mỗi khối chỉ xuất hiện một lần hoặc trong bộ đếm thứ nhất hoặc trong bộ đếm thứ hai
Trang 19Các trường hợp không tương thích co thể xẩy ra: Một khối nào đó xuất hiện trong cả hai bảng đếm,
trường hợp mất khối Sự mất khối thực tế không có hại gì nhưng nó làm giảm khả năng lưu trữ của ổ đĩa Giải quyết trường hợp này là thêm chúng vào danh sách các khối tự do Trường hợp thứ hai, nếu một khối xuất hiện hai lần trong bảng đếm thứ hai, xây dựng lại bộ đếm thứ hai Trường hợp thứ ba, khi một khối nào đó xuất hiện trong nhiều tệp (dính tệp) Để giải quyết vấn
đề này sao thêm một bản vào một khối tự do và chèn thêm vào cho các tệp bị dính
d) Hiệu năng của hệ thống tệp: Hiệu năng của hệ thống tệp cũng được quan tâm trong quá trình tổ
chức lưu trữ hệ thống tệp Truy nhập đĩa có tốc độ chậm hơn nhiều so với truy nhập bộ nhớ trong Vì thế các hệ thống đều được thiết kế sao cho giảm thiểu thời gian truy ập tệp trên đĩa
Kỹ thuật chung nhất sử dụng để làm giảm thời gian truy nhập đĩa là kỹ thuật tạo vùng đệm (buffer) hoặc Cache trên đĩa khi đọc các tệp vào hệ thống
2.4 Bảo vệ (protection), bảo mật (security) thông tin.
Bảo vệ và bảo mật thông tin là yêu cầu từ phía người sử dụng.
1 Bảo vệ (protection): Bảo vệ là các cơ chế từ bên trong hệ thống dùng để bảo vệ dữ liệu và hệ
thống Các cơ chế bảo vệ thường được thực hiện thông qua: thông báo lỗi (error messages), hiển thị các câu cảnh báo (Warning messages) hoặc thực hiện các mặc định No Các cơ chế bảo vệ được hệ thống thực hiện không phụ thuộc vào người sử dụng, môi trường cụ thể
2 Bảo mật (security): Bảo mật là các cơ chế của hệ thống cho phép người sử dụng chống các
truy nhập bất hợp pháp vào hệ thống và hệ thống tệp Cơ chế bảo mật được thực hiện hay không phụ thuộc vào người sử dụng Hệ thống cho phép người sử dụng thực hiện bảo mật bằng các phần tự phát triển hoặc sử dụng các công cụ cung cấp bởi hệ thống
Trang 20Chương 3 Các thiết bị vào/ra
3.1 Mở đầu: Một trong những chức năng của hệ điều hành là điều quản lý toàn bộ hệ thống
các thiết bị vào ra của máy tính Hệ điều hành nhận bắt các lệnh từ người sử dụng, chuyển các lệnh đến các thiết bị, đón bắt các ngắt và xử lý một số lỗi Hệ điều hành còn cung cấp giao diện đơn giản dễ sử dụng giữa các thiết bị đầu cuối và hệ thống Hầu hết các ứng dụng đều có nhu cầu chuyển dữ liệu vào hệ thống để xử lý đồng thời chiết xuất thông tin đã xử lý ra ngoài hệ thống nhờ hệ thống các thiết bị vào/ra Như vậy các thiết bị vao/ra là phương tiện để thực hiện chuyển dữ liệu vào/ra của hệ thống máy tính.
3.2 Các nguyên tắc phần cứng vào/ra: Theo quan điểm của người sử dụng thì mỗi đối tượng
có thể xem phần cứng vào/ra với các góc độ khác nhau: Các kỹ sư điện tử thì phần cứng của thiết bị vào/ra chỉ là chip, mạch điện, nguồn, motor v v Đối với người lập trình thì quan tâm đến các giao diện, các lệnh để phần cứng tiếp nhận, khuôn dạng
dữ liệu khi thực hiện vào/ra, các chức năng và các lỗi có thể thông báo.
1 Phân loại thiết bị vào/ra: Để phân loại các thiết bị vào/ra người ta dựa vào khuôn
dạng dữ liệu mà thiết bị thực hiện vào/ra với hệ thống Các thiết bị vào/ra có thể chia thành hai loại chủ yếu: Các thiết bị khối và các thiết bị ký tự.
a) Các thiết bị khối: Các thiết bị khối là các thiết bị tực hiện vào/ra hệ thống theo từng
khối dữ liệu, mỗi khối có kích thước cố định, có địa chỉ Kích thước các khối như nhau nếu cùng một thiết bị, ngược lại các thiết bị khác nhau thì chúng có thể thực hiện vào/ra theo khối dữ liệu có kích thước khác nhau Nói chung mỗi khối thường
có kích thước từ 128-1024 bytes Các thiết bị khối đọc/ghi dữ liệu theo khối vì vậy trong quá trình xử lý có thể thực hiện tìm kiếm, lựa chọn Ví dụ: đĩa từ, card mạng (NIC)
b) Các thiết bị ký tự: Các thiết bị là các thiết bị thực hiện vào/ra với hệ thống theo từng
dãy ký tự gối nhau Các dãy ký tự không được địa chỉ hóa vì vậy khi xử lý không thể tìm kiếm hoặc lựa chọn Ví dụ: Màn hình, máy in
Trang 21Tuy nhiên sự phân loại này chưa hoàn chỉnh, một vài thiết bị theo sự phân loại này không xác
định được, ví dụ như đồng hồ, bàn phím, chuột
2 Sự kết nối các thiết bị vào/ra với hệ thống: Các thiết bị không trực tiếp kết nối vào hệ
thống, chúng kết nối với hệ thống thông qua các cổng (port) Mỗi cổng có địa chỉ cố định trên mainboard hoặc là một thanh ghi thiết bị Sơ đồ kết nối chỉ ra trong hình 3-1
CPU Bộ nhớ Bộ điều
khiển đĩa
Bộ điều khiển máy in Bộ điều khiển
thiết bị
Đĩa từ
Đơn busHình 3-1 Mô hình kết nối giữa CPU, RAM và bộ điều khiển thiết bị
Máy in
3 Bộ điều khiển thiết bị (driver, device controller): Mỗi một thiết bị vào/ra đều có bộ điều
khiển của thiết bị đó Mỗi bộ điều khiển có thể điều khiển một vài thiết bị tương thích, tuy nhiên cũng có thể cùng một thiết bị nhưng do hai hãng sản xuất khác nhau thì phải có hai bộ điều khiển khác nhau (bộ điều khiển do các hãng sản xuất phát triển) Hiện nay các hệ điều hành thường tích hợp nhiều bộ điều khiển của các thiết bị, vì thế một số thiết bị chỉ cần cắm vào máy tính, HĐH tự nhận diện và chọn cho thiết bị bộ điều khiển tương thích (hệ thống Plug and Play) Trong đa số các trường hợp các bộ điều khiển đều phải cài đặt
Trang 22a) Chức năng của bộ điều khiển thiết bị: Chức năng chính của bộ điều khiển thiết bị la điều khiển toàn
bộ thiết bị đó, biến đổi các dòng bits lien thiếp thành các khối bytes, kiểm tra và thực hiện sử đổi một số lỗi trong quá trình thực hiện vào ra
b) Sự phối hợp giữa HĐH, CPU và bộ điều khiển thiết bị vào ra: Hê điều hành thực hiện vao/ra bằng
cách ghi các lệnh vào các thanh ghi thiết bị (có cả tham số) sau đó bẩy CPU nhận lệnh, CPU sau khi nhân lệnh, CPU trao quyền điều khiển cho bộ điều khiển thiết bi và CPU rời khỏi thiết bị (CPU rỗi) Khi lệnh đã được hoàn thành bộ điều khiển phát tín hiệu ngắt HĐH kích hoạt CPU kiểm tra kết quả và thiết lập trạng thái ở thanh ghi thiết bị
4 Truy nhập bộ nhớ trực tiếp (kỹ thuật DMA-Direct Memory Access): Một số bộ điều khiển, đặc
biệt là các thiết bị khối được hỗ trợ kỹ thuật truy nhập bộ nhớ trực tiếp-DMA Công nghệ DMA nhằm mục đích tăng hiệu quả hệ thống bằng cách giảm thơi gian các truy nhập bậc thấp với tốc
độ chậm của các thiết bị vào/ra (đặc biệt là các thiết bị khối) nhằm giải phóng thời gian cho CPU
Để làm rõ tác dụng của DMA chúng ta xét quá trình đọc dữ liệu từ đĩa từ của bộ điều khiển đĩa khi không có hỗ trợ cua DMA và khi có hỗ trợ của DMA
a) Quá trình đọc dữ liệu từ đĩa từ khi không có DMA Đầu tiên bộ điều khiển đĩa đọc một khối (có
kích thước một hoặc lớn hơn một cung) từ đĩa từ bit theo bit liên tiếp chuyển vào vùng đệm của
bộ điều khiển Sau khi một khối dữ liệu được đọc hết vào vùng đệm, bộ điều khiển tiến hành kiểm tra, tính toán và sử một số lỗi (nếu có) Tiếp đến bộ điều khiển phát ngắt yêu cầu HĐH chuyển từng khối bytes từ vùng đệm vào bộ nhớ tại địa chỉ chỉ định bởi CPU Khi một từ (word) được chuyển vào bộ nhớ, thanh ghi đếm tăng bằng số bytes đã chuyển Quá trình lặp lại cho đến khi chỉ số trên thanh ghi đếm (count) chỉ ra số bytes cần đọc, bộ điều khiển kích HĐH, HĐH kích CPU kiểm tra kết quả Như vậy trong quá trình đọc đĩa làm mất thời gian của CPU khi tham gia đánh địa chỉ trong bộ nhớ DMA được phát triển để giải phóng CPU khỏi công việc này
Trang 23b) Quá trình đọc dữ liệu từ đĩa từ khi có DMA: Khi có DMA, trên bộ điều khiển có thêm thanh
ghi địa chỉ (chip DMA) dùng để lưu địa chỉ đầu của vùng nhớ sẽ cấp phát, xem sơ đồ ở hình 3-3 và thanh ghi đếm (count) chứa số bytes cần đọc Đầu tiên bộ điều khiển đĩa đọc một khối (có kích thước một hoặc lớn hơn một cung) từ đĩa từ bit theo bit liên tiếp chuyển vào vùng đệm của bộ điều khiển Sau khi một khối dữ liệu được đọc hết vào vùng đệm, bộ điều khiển tiến hành kiểm tra, tính toán và sử một số lỗi (nếu có) Tiếp đến bộ điều khiển phát ngắt yêu cầu HĐH chuyển từng khối bytes từ vùng đệm vào bộ nhớ tại địa chỉ chỉ định trên thanh ghi địa chỉ DMA Khi một từ (word) được chuyển vào bộ nhớ, thanh ghi giảm bằng số bytes đã chuyển và thanh ghi địa chỉ tự tăng lên
1 Quá trình lặp lại cho đến khi chỉ số trên thanh ghi đếm bằng không, bộ điều khiển kích HĐH, HĐH kích CPU kiểm tra kết quả Như vậy khi có DMA CPU không phải đánh địa chỉ trong bộ nhớ
mà nó được giải phóng hoàn toàn quá trình đọc đĩa
Counter
Buffer
Thanh ghi đếm Counter
Bộ điều khiển đĩa
System Bus Hình 3-2 Sơ đồ kết nối khi không có DMA
Đĩa từ
Trang 24CPU RAM
Count
Buffer Thanh ghi đếm (Counter)
Bộ điều khiển đĩa
System Bus Hình 3-3 Sơ đồ kết nối khi có DMA
Thanh ghi địa chỉĐĩa từ
Trang 25Chương 4 Hệ điều hành quản lý bộ nhớ
4.1 Mở đầu: Bộ nhớ là tài nguyên quan trọng cần được tổ chức quản lý một cách thận trọng
và có hiệu quả Bộ nhớ là tài nguyên mà không có nó thì không thể thực hiện được chương trình Trên thực tế tại mọi thời điểm bộ nhớ không trực tiếp tham gia vào việc thực hiện chương trình, mà nó chỉ là nơi lưu trữ tạm thời dữ liệu của chương trình để chờ xử lý Tuy nhiên nếu kích thước bộ nhớ lớn thì tốc độ thực hiện chương trình sẽ được cải thiện Trên thực tế chương trình được lưu ở bộ nhớ ngoài, có kích thước có thể lớn hơn kích thước bộ nhớ vật lý thực của máy tính, và luôn luôn sẵn sàng chờ cấp phát không gian trong bộ nhớ vật lý khi thực hiện Khi kích thước chương trình lớn hơn kích thước bộ nhớ vật lý, tồn tại nhiều kỹ thuật khác nhau cho phép sử dụng một phần không gian của bộ nhớ ngoài như là sự mổ rộng của bộ nhớ trong, tạo ra cảm giác có bộ nhớ trong có kích thước lớn hơn nhiều kích thước bộ nhớ vật lý thực Sự tồn tại tài nguyên
ảo này làm cho việc lập trình trở nên đơn giản và dễ dàng hơn vì người sử dụng khi viết chương trình không cần phải lo tính toán khối lượng bộ nhớ cần sử dụng cho chương trình của mình khi thực hiện Một phần của bộ nhớ trong phải giành để lưu trữ nhân của HĐH, đó là tập các chương trình điều khiển phải thường trú trong bộ nhớ để thực hiện các yêu cầu cấp bách (các thủ tục bậc thấp điều khiển vao/ra, bảng vectơ ngắt, các thủ tục thư viện bậc thấp khác v…v.).
4.2 Các phép ánh xạ bộ nhớ và các cấu trúc cơ bản của modul chương trình
1 Các phép ánh xạ bộ nhớ: Phần lớn các chương trình đều viết dưới ngôn ngữ bậc cao (ngôn ngữ giải thuật), muốn thực hiện được phải dịch sang ngôn ngữ thực hiện được của hệ thống (ngôn ngữ máy) Sơ đồ chuyển dịch đó được minh họa trong hình 4-1.
Chương trình
nguồn
Chương trình đích
Trang 26Các phép ánh xạ có quan hệ đến HĐH:
- Trước tiên hệ thống phải chuyển đổi các tên ngoài (tên biến tên hằng…) thành các tên trong Hay nói cách khác thực hiện ánh xạ các tên ngoài vào các tên trong Từ tên trong hệ thống sẽ cấp phát bộ nhớ logic và thiết lập mối quan hệ đơn trị tên-địa chỉ Bọ nhớ logic là bộ nhớ chưa gắn với chưa gắn với bộ nhớ vật lý cụ thể nào Các phép tính cũng được thay bằng các mã lệnh máy Như vậy modul đích là modul ngôn ngữ máy, nó được xét độc lập không nhúng vào quan hệ chung của toàn hệ thống ngay cả quan hệ giữa các modul trong một chương trình
- Sự khác biệt giữa các ngôn ngữ không để lại dấu vết trên modul đích, hoặc nếu có thì không đáng
kể Chính vì vậy việc kết nối (link) các modul thành một chương trình hoàn thiện được thực hiện theo nguyên tắc chung do một chương trình duy nhất đảm nhận gọi là trình biên tập Trinh biên tập tìm tất cả các modul kể cả các modul liên kết từ các thư viện, lắp ráp chúng lại với nhau, cung cấp địa chỉ cho các biến ngoài của các modul có sử dụng, tạo thành một chương trình hoàn thiện có khả năng tự thực hiện
- Nạp chương trình vào bộ nhớ vật lý cụ thể khi thực hiện – phép định vị chương trình
- Xác định kích thước chương trình: Nếu co ràng buộc về kích thước ngay từ đầu (lập trình bộ nhớ thực) thì trình biên tập phải xác định kích thước chương trình không vượt quá kích thước bộ nhớ vật
lý thực Nếu không có ràng buộc gì về về kích thước bộ nhớ logic (lập trình tương đối-lập trình ảo) thì trình biên tập phải xác định các thời điểm nạp vào bộ nhớ vật lý thực của từng modul
2 Các cấu trúc cơ bản của các modul chương trình:
a) Cấu trúc tuyến tính
b) Cấu trúc động
c) Cấu trúc overlay
d) Bộ nhớ ảo (virtual memory): Những năm trước đây người ta thường đối mặt với vấn đề là kích
thước của chương trình có thể lớn hơn kích thước bộ nhớ của máy tính làm thế nào để thực hiện chương trình? Giải pháp thường dùng là chia nhỏ chương trình thành các modul kích thước nhỏ gọi
là phương pháp overlay Trong đó sơ đồ overlay được lưu trên đĩa từ còn việc chuyển đổi vào/ra bộ nhớ của các modul khi thực hiện là do hệ điều hành