1. Trang chủ
  2. » Giáo án - Bài giảng

Giao Trinh He Dieu Hanh

96 321 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 96
Dung lượng 1,5 MB

Nội dung

1 Khái niệm: Hệ điều hành là một chương trình đóng vai trò trung gian trong việc giao tiếp giữa người sử dụng và phần cứng của máy tính.. Một hệ thống máy tính thường được chia làm 4 ph

Trang 1

User 1 User 2 User 3 User N

Application programs Operating systemComputer hardware

.

CHƯƠNG I

TỔNG QUAN VỀ HỆ ĐIỀU HÀNH

I KHÁI NIỆM VÀ CHỨC NĂNG CỦA HỆ ĐIỀU HÀNH

1) Khái niệm:

Hệ điều hành là một chương trình đóng vai trò trung gian trong việc giao tiếp giữa người sử dụng và phần cứng của máy tính Mục tiêu của hệ điều hành là cung cấp một môi trường để người sử dụng có thể thi hành các chương trình

Nó làm cho máy tính dễ sử dụng hơn, thuận lợi (convenient) hơn và có hiệu quả (efficient) hơn

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 thường được chia làm 4 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

2) Chức năng:

a) Là bộ phân phối tài nguyên: (resource allocator)

Hệ điều hành đóng vai trò là bộ phân phối tài nguyên:

Tài nguyên hệ thống, đặc biệt là các tài nguyên phần cứng như CPU, bộ nhớ, thiết bị ngoại vi,… thường rất giới hạn về số lượng Trong các hệ thống đa nhiệm, nhiều chương trình chạy đồng thời và cùng yêu cầu các tài nguyên hữu hạn Hệ điều hành sẽ giữ vai trò quản lý và phân phối các tài nguyên cho các chương trình Việc phân phối tài nguyên cho các chương trình phải theo một trình tự nào đó để tránh tranh chấp và làm cho máy tính hoạt động có hiệu quả Ngoài

ra, có nhiều trường hợp người dùng cần chia sẻ thông tin với nhau Khi đó, hệ

Trang 2

điều hành phải bảo đảm việc truy xuất đến các thông tin chia sẻ đó là hợp lệ, không xảy ra sai trái hay mất đồng nhất dữ liệu

b) Là một chương trình điều khiển: (control program)

Hệ điều hành đóng vai trò là một chương trình điều khiển:

Một hệ điều hành cũng có thể được xem như là một chương trình kiểm soát việc sử dụng máy tính, đặc biệt là các thiết bị nhập xuất Giúp người dùng ngăn chặn lỗi, tránh lỗi, kiểm soát việc sử dụng máy tính một cách đúng đắn Điều khiển việc thực thi chương trình của người dùng Che giấu đi cấu trúc phức tạp của các phần cứng, tạo ra một giao diện sử dụng phần cứng đơn giản, dễ dùng nhưng đầy đủ chức năng

3) Các nhiệm vụ của hệ điều hành:

a) 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 nó không được CPU thi hành Một tiến trình (process) là một chương trình đang được thi hành Khi một process được khởi tạo, nó phải được cung cấp các tài nguyên để hoạt động, khi không còn dùng tài nguyên, process phải trả lại tài nguyên cho hệ thống để hệ thống tiếp tục cấp cho process khác Có các process của người dùng và có các process của hệ thống Một process được xem như là một đơn vị làm việc của hệ thống Tại cùng một thời điểm trong hệ thống có thể có nhiều process cùng chạy đồng thời Các tài nguyên mà một process có thể cần dùng là: CPU, vùng nhớ, các tập tin, các thiết bị nhập xuất,…

Vai trò của hệ điều hành trong việc quản lý process là:

- Create/Destroy: tạo và hủy các process

- Suspend/Resume: tạm ngưng và thực hiện lại một process

- Synchronization: đồng bộ các process

- Inter-Process Communications: truyền thông giữa các process

b) Quản lý bộ nhớ chính: (main memory management)

Bộ nhớ chính là thiết bị duy nhất mà CPU có thể truy xuất trực tiếp Một chương trình muốn được thi hành, trước hết phải được nạp vào trong bộ nhớ chính, dữ liệu của chương trình cũng được nạp vào trong bộ nhớ chính Khi process kết thúc thì dữ liệu và chương trình vẫn còn trong trong bộ nhớ cho đến khi có một process khác được ghi chồng lên Trong một hệ thống đa nhiệm, để tăng hiệu suất sử dụng CPU thì hệ điều hành cố gắng giữ nhiều process trong bộ nhớ chính tại cùng một thời điểm

Vai trò của hệ điều hành trong việc quản lý bộ nhớ chính:

- Cấp phát và thu hồi vùng nhớ cho các process

- Ghi nhận tình trạng bộ nhớ: phần nào đã được cấp phát, phần nào còn có thể sử dụng được

- Quyết định process nào được nạp vào bộ nhớ chính khi có một vùng trống

Trang 3

c) Quản lý hệ thống tập tin : (file management)

Máy tính có thể lưu trữ thông tin trên nhiều loại thiết bị vật lý khác nhau: đĩa mềm, CD-ROM, đĩa cứng, flash, băng từ… Mỗi loại thiết bị có tính chất và cấu trúc vật lý khác nhau Để thống nhất trong lưu trữ, hệ điều hành định nghĩa một đơn vị lưu trữ logic là tập tin Hệ điều hành tạo một ánh xạ từ tập tin đến đến vùng lưu trữ thông tin trên đĩa và truy xuất thông tin này thông qua thiết bị lưu trữ Hệ điều hành còn tổ chức lưu trữ các tập tin thành các thư mục Để dễ dàng truy xuất, hệ điều hành tổ chức lưu trữ các tập tin một cách có hệ thống gọi là hệ thống tập tin (filesystem) Có nhiều loại hệ thống tập tin khác nhau

Vai trò của hệ điều hành trong việc quản lý tập tin:

- Tạo và xóa một tập tin

- Tạo và xóa một thư mục

- Hỗ trợ thao tác cơ bản trên tập tin và thư mục

- Ánh xạ tập tin trên hệ thống lưu trữ phụ

- Backup tập tin trên các thiết bị lưu trữ

d) Quản lý nhập xuất: (I/O system management)

Một trong những mục tiêu của hệ điều hành là che dấu những chi tiết phức tạp của các thiết bị phần cứng đối với người sử dụng Thay vào đó là một lớp giao diện thân thiện độc lập với thiết bị, giúp cho người dùng dễ thao tác hơn Thường thì các giao diện là các trình điều khiển (driver) Chỉ có các driver mới hiểu đến cấu trúc đặc thù của thiết bị mà nó mô tả Hệ điều hành đảm trách việc điều khiển các thiết bi nhập xuất Nó gởi các lệnh điều khiển đến các thiết

bị, tiếp nhận các ngắt và xử lý các lỗi nhập xuất

Một hệ thống nhập xuất bao gồm:

- Hệ thống buffer caching

- Giao tiếp điều khiển thiết bị (device drivers) tổng quát

- Bộ điều khiển (driver) cho các thiết bị phần cứng

e) Quản lý bộ nhớ phụ : (secondary-storage management)

Muốn thực thi chương trình thì phải đưa chương trình và dữ liệu của chương trình vào trong bộ nhớ chính Nhưng bộ nhớ chính quá nhỏ để lưu trữ mọi dữ liệu và chương trình Mặt khác, bộ nhớ chính chỉ là nơi lưu trữ tạm thời, dữ liệu sẽ bị mất khi không cung cấp điện cho nó Vì vậy cần phải có một hệ thống

lư u trữ phụ như đĩa mềm, đĩa cứng, CD-ROM, flash, băng từ… Hầu như tất các các chương trình, dữ liệu đều được lưu trữ trên bộ nhớ phụ dưới dạng các tập tin Khi cần thiết thì chúng được nạp vào bộ nhớ chính để thực thi Tốc độ của hệ thống phụ thuộc rất nhiều vào tốc độ truy xuất các thiết bị lưu trữ phụ Vì vậy một bộ quản lý hệ thống đĩa rất quan trọng cho hệ thống máy tính

Vai trò của hệ điều hành trong việc quản lý bộ nhớ phụ:

- Quản lý vùng trống trên đĩa

- Định vị lưu trữ đĩa

- Điều phối đĩa (disk scheduling)

Trang 4

f) Nối mạng: (networking)

Một hệ thống phân bố (distributed system) là một tập hợp các bộ xử lý (processor) không cùng chia sẻ bộ nhớ chung Mỗi bộ xử lý có một bộ nhớ riêng độc lập Các bộ xử lý giao tiếp với nhau thông qua mạng truyền thông bằng các đường truyền vật lý như: đường truyền tốc độ cao, đường điện thoại, vệ tinh… Nhờ có nối mạng mà người dùng có thể truy cập đến các tài nguyên khác nhau trong mạng

Việc truy cập các tài nguyên dùng chung cho phép:

- Gia tăng tốc độ tính toán (speedup)

- Gia tăng sự sẵn dùng (available) của dữ liệu

- Tăng độ tin cậy (reliability)

g) Hệ thống bảo vệ: (protection system)

Hệ thống bảo vệ là một cơ chế kiểm soát sự hợp lệ của việc truy xuất các tài nguyên hệ thống và các tài nguyên của người dùng Trong hệ thống có nhiều người sử dụng hoặc có nhiều process diễn ra đồng thời, các process cần phải được bảo vệ để tránh sự xâm phạm vô tình hay cố ý có thể dẫn đến sai lạc cho toàn hệ thống Hệ thống phải cung cấp được cơ chế để đảm bảo rằng tập tin, bộ nhớ, CPU và những tài nguyên khác chỉ được truy xuất bởi những process có quyền Ví dụ: phải bảo đảm rằng một process chỉ được thi hành trong phạm vi vùng nhớ cấp phát cho nó, phải bảo đảm không có process nào độc chiếm CPU, phải bảo vệ các thiết bị ngoại vi như printer… Hệ thống bảo vệ cũng phải làm tăng tốc độ an toàn trong giao tiếp giữa các hệ thống nhỏ bên trong

Một hệ thống bảo vệ cần phải:

- Định rõ được phép dùng và không được phép dùng các tài nguyên

- Định rõ các loại kiểm soát cần phải áp dụng trong hệ thống

- Cung cấp các cơ chế buộc process, người dùng phải thi hành theo

h) Hệ thông dịch lệnh: (command-interpreter system)

Đây là một trong những bộ phận quan trọng nhất của hệ điều hành, đóng vai trò giao diện giữa hệ điều hành và người sử dụng Các lệnh được chuyển đến hệ điều hành dưới dạng phát biểu điều khiển (control statements) Bộ thông dịch lệnh có nhiệm vụ tiếp nhận lệnh và thông dịch lệnh đó để hệ điều hành có xử lý tương ứng Có hai loại giao diện giữa người dùng và bộ thông dịch lệnh:

- Giao diện đồ họa (menu, cửa sổ, chuột )

- Giao diện dòng lệnh (như MS-DOS, shell của Unix)

4) Tiến trình khởi động máy và nạp hệ điều hành:

a) Khởi động máy tính: (starting the computer)

Tiến trình khởi động máy tính được thực hiện khi ta bật điện máy tính lên

Tiến trình này gọi là cold boot Cold boot gồm các bước theo trình tự sau:

- ROM nạp BIOS (basic input/output sysytem – hệ thống nhập xuất cơ bản) vào bộ nhớ máy tính

- BIOS kiểm tra các thiết bị nhập xuất xem có khả năng hoạt động được không Công đoạn này được gọi là POST (Power-on Self-test)

Trang 5

- BIOS xác định xem partition nào là active partition trong Master Boot Record (MBR) Đi đến active partition để nạp kernel vào bộ nhớ chính Kernel là lõi của hệ điều hành, là nơi chứa các thành phần cơ bản nhất của hệ điều hành

- Lúc này hệ điều hành đã nắm được quyền kiểm soát máy tính

b) Cấu hình hệ thống: (configuring the system)

Sau khi nắm quyền điều khiển máy tính, hệ điều hành tiến hành cấu hình lại hệ thống, gồm các bước sau:

- Hệ thống được cấu hình lại dựa trên thông tin từ Registry của hệ điều hành

- Các trình điều khiển (driver) và các chương trình tiện ích (utility program) được nạp vào bộ nhớ Các trình tiện ích như: volume control, antivirus software, file manager,…)

- Chứng thực việc đăng nhập của người dùng

- Giao diện người dùng bắt đầu cho phép người dùng tương tác với máy tính

Chú ý: Một số máy tính lưu trữ toàn bộ hệ điều hành vào trong bộ nhớ

chính Một số máy tính khác thì chỉ nạp phần cơ bản của hệ điều hành vào trong bộ nhớ chính, phần còn lại sẽ nạp vào bộ nhớ khi có nhu cầu Hầu hết các hoạt

động của hệ điều hành diễn ra ở dạng hậu trường (behind the scences)

II PHÂN LOẠI HỆ ĐIỀU HÀNH:

Các loại hệ điều hành:

1) Hệ thống tuần tự: (sequential system)

Các chỉ thị của chương trình được thực hiện tuần tự, hết chỉ thị này đến chỉ thị khác Được dùng cho các máy tính to lớn, cồng kềnh ngày xưa Vào giữa thập niên 1940, xuất hiện các máy tính mainframe cồng kềnh, tốc độ rất chậm, dùng ống chân không Người lập trình cũng chính là người vận hành máy Chương

Trang 6

trình được viết chủ yếu bằng ngôn ngữ máy dưới dạng các bít 0 và 1 Chương trình được đưa bằng tay vào bộ nhớ dung lượng thấp của mainframe thông qua việc đục lỗ trên băng giấy hay thẻ đục lỗ Chương trình được chạy từng lệnh một Người lập trình phải luôn quan sát khi chạy chương trình để phát hiện lỗi Khi có lỗi thì dừng hệ thống lại, sửa lỗi rồi chạy lại từ đầu Dữ liệu xuất được in

ra máy in hay đục lỗ trên thẻ, băng giấy

2) Hệ thống xử lý theo lô: (batch system)

Hệ thống loại này sẽ tập trung tất cả tài nguyên để xử lý một công việc tại một khoảng thời gian Khi công việc chấm dứt, hệ thống sẽ thực hiện công việc kế tiếp mà không cần sự can thiệp của người lập trình, do đó thời gian thực hiện công việc sẽ nhanh hơn

Một chương trình gọi là bộ giám sát (resident monitor) nằm thường trú trong bộ nhớ chính có nhiệm vụ giám sát thường trực việc thực hiện một dãy các

công việc một cách tự động Khi máy tính được khởi động, resident monitor được

gọi, nó chuyển điều khiển cho chương trình đầu tiên Khi chương trình đầu tiên kết thúc, nó sẽ trả điều khiển cho resident monitor Resident monitor sẽ chuyển điều khiển cho chương trình kế tiếp Cứ như vậy mà lần lượt từng công việc khác nhau trong một chuỗi các công việc được thực thi

Để resident monitor biết được chương trình nào là chương trình kế tiếp được thực hiện thì cần phải mô tả ngắn gọn về chương trình Nhờ vậy mà resident monitor tích lũy các tài nguyên cần thiết cho chương trình

3) Hệ thống đa chương theo lô: (multiprogrammed batched system):

Gia tăng khai thác CPU bằng cách tổ chức các công việc sao cho CPU luôn luôn phải trong tình trạng làm việc Ý tưởng như sau: Hệ điều hành lưu giữ một phần các công việc ở trong bộ nhớ CPU sẽ lần lượt thực hiện các công việc này Khi đang thực hiện, nếu có yêu cầu truy xuất thiết bị thì CPU không nghỉ mà thực hiên tiếp công việc thứ hai Vì vậy hệ điều hành loại này phải thực hiện được các vấn đề điều phối (scheduling) công việc, điều phối bộ nhớ và điều phối CPU

4) Hệ thống chia xẻ thời gian: (time-sharing system) :

Còn được gọi là hệ thống đa nhiệm (multitasking) Là sự mở rộng của hệ

thống đa chương Nhiều công việc cùng thực hiện thông qua cơ chế chuyển đổi CPU giống như hệ điều hành đa chương nhưng thời gian chuyển đổi diễn ra rất nhanh Nếu trong quá trình thi hành của một chương trình nó phải thực hiện các thao tác nhập xuất (I/O) thì trong khoảng thời gian đó CPU sẽ thi hành một chương trình khác Hệ điều hành chia xẻ thời gian này dùng việc chuyển đổi CPU (CPU switching) để cung cấp cho mỗi chương trình một lượng thời gian sử dụng CPU rất nhỏ, do thời gian chuyển đổi CPU giữa các chương trình rất nhanh nên tạo ra cảm giác các chương trình được thực thi cùng một lúc

5) Hệ thống song song: (parallel system)

Ngoài các hệ thống máy tính chỉ có một bộ xử lý (single-processor system) còn có hệ thống máy tính có nhiều bộ xử lý bên trong nó Chúng cùng

Trang 7

chia xẻ các đường truyền dữ liệu (bus), đồng hồ hệ thống (clock), bộ nhớ và các thiết bị ngoại vi (peripheral devices) Với sự gia tăng số lượng bộ xử lý mà công việc được thực hiện nhanh chóng hơn, tối ưu hơn các máy có một bộ xử lý Nhưng không có nghĩa cứ n bộ xử lý là giảm thời gian thực thi chương trình xuống n lần (vì còn tốn phần thời gian cho việc chia xẻ các phần của chương trình lên các CPU) Hệ thống loại này có độ tin cậy cao vì sự hỏng hóc của một bộ xử lý sẽ không làm ảnh hưởng đến toàn bộ hệ thống

6) Hệ thống phân bố: (distributed system)

Tương tự như hệ thống song song nhưng hệ thống này không chia sẻ đồng hồ hệ thống và bộ nhớ chung Thay vào đó mỗi bộ xử lý có một bộ nhớ cục bộ riêng Giữa các bộ xử lý có sự truyền thông (communication) với nhau thông qua các đường truyền Các bộ xử lý không nhất thiết giống nhau mà có thể khác nhau về tốc độ và chức năng Có thể chia sẻ tài nguyên như: máy in, tập tin Làm gia tăng tốc độ tính toán bằng cách chia công việc thành các phần nhỏ giao cho các bộ xử lý thực hiện đồng thời Nếu một bộ xử lý hỏng hóc thì các bộ xử lý khác vẫn tiếp tục làm việc Giữa các bộ xử lý có sự truyền thông giúp cho việc truyền và chia sẻ dữ liệu được thực hiện dễ dàng

7) Hệ thống thời gian thực:

Có những bài toán (problem) đòi hỏi hệ thống máy tính thực thi và cho kết quả chính xác trong một khoảng thời gian cụ thể (bị thúc ép về thời gian) như: hệ thống điều khiển vũ khí, điều khiển các thí nghiệm khoa học, dự báo thời tiết

Hệ thống xử lý thời gian thực được sử dụng khi có những đòi hỏi khắt khe về thời gian trên các thao tác của bộ xử lý hoặc dòng dữ liệu Máy tính phân tích dữ liệu và có thể điều chỉnh thứ tự thực hiện của các điều khiển nhằm giải quyết kịp thời cho dữ liệu nhập

Chia 2 loại:

- Hệ thống thời gian thực cứng (hard real-time system): công việc được hoàn tất đúng lúc, dữ liệu được lưu trong bộ nhớ ngắn hạn (short-time memory) hay ROM

- Hệ thống thời gian thực mềm (soft real-time system): mỗi công việc có một độ ưu tiên riêng và sẽ được thực thi theo độ ưu tiên

III LỊCH SỬ PHÁT TRIỂN CỦA HỆ ĐIỀU HÀNH:

1) Thế hệ 1: (1945-1955)

Vào khoảng giữa thập niên 1940, Howard Aiken ở Harvard 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 Những máy này rất lớn với hơn 10.000 ống chân không nhưng chậm hơn rất nhiều so với máy rẻ nhất ngày nay

Mỗi máy được thực hiện bởi một nhóm người Họ thực hiện thiết kế, lập trình, thao tác, quản lý máy Chương trình được lập trình bằng ngôn ngữ máy tuyệt đối Chương trình được thực thi bằng cách vận hành bảng điều khiển (control panel) và chỉ thực hiện được các thao tác cơ bản rất đơn giản Ngôn ngữ

Trang 8

lập trình và hệ điều hành đều chưa được biết đến Vào đầu thập niên 1950, phiếu đục lỗ ra đời Nhờ vậy mà chương trình được viết trên phiếu thay cho bảng điều khiển

2) 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 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 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 bằng 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ừ rồi 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 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 được sử dụng trong giai đoạn này chủ yếu là FORTRAN và hợp ngữ

3) 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 tính giảm đáng kể Máy tính ngày càng phổ biến hơn, các thiết bị ngoại vi dành cho máy tính xuất hiện ngày càng nhiều và xuất hiện các thao tác điều khiển 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 tranh chấp thiết bị giữa các yêu cầu 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 khác nhau Khi một công việc chờ thực hiện nhập xuất thì 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 nạp vào bộ nhớ thì nảy sinh một yêu cầu là phải có một cơ chế bảo vệ tránh các công việc ảnh hưởng đến nhau

Giai đoạn này cũng đánh dấu sự ra đời của hệ điều hành chia xẻ 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 máy mini cũng xuất hiện như DEC PDP-1

4) 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 Ngoài ra, 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

Trang 9

IV MỘT SỐ HỆ ĐIỀU HÀNH:

1) MS-DOS: (Microsoft Disk Operating System)

Đầu thập niên 1980, hãng máy tính IBM cho ra đời máy tính cá nhân đầu tiên với bộ xử lý 8088 16 bit và yêu cầu Microsoft xây dựng một hệ điều hành cho nó Năm 1981 version đầu tiên của nó ra đời được viết bằng 4.000 dòng lệnh hợp ngữ và được tổ chức thành 3 tập tin: IBMBIO.COM, IBMMS-DOS, COMMAND.COM Cho đến năm 1993, nó được phát triển thành version 6.0 MS-DOS là một hệ điều hành được sử dụng rộng rãi trước đây, ngày nay người

ta đã hạn chế sử dụng nó

Đặc điểm cơ bản:

- Là hệ điều hành giao tiếp với người dùng theo cơ chế dòng lệnh

- Có khả năng quản lý bộ nhớ, quản lý đĩa, quản lý file và thư mục, quản lý các thiết bị ngoại vi

- Chỉ hoạt động hiệu quả trên máy tính cá nhân

- Yêu cầu máy có cấu hình thấp, bộ nhớ chính 640K, có thể làm việc trên các máy tính có màn hình đen trắng hoặc màu

- Tổ chức các chương trình của MS-DOS bao gồm: chương trình khởi động

(nạp hệ điều hành vào bộ nhớ chính trong quá trình khởi động máy),

chương trình shell (giao tiếp giữa người sử dụng và hệ điều hành), chương trình chứa các chức năng (chứa các thủ tục giúp đỡ và quản lý), chương trình nhập xuất (chứa các thủ tục nhập xuất) và hệ thống các chương trình tiện ích

2) UNIX:

Hệ điều hành Unix được ra đời từ các phòng thí nghiệm của AT&T Bell vào đầu thập niên 1970 và được viết bằng hợp ngữ (assembly) Năm 1973, Ken Thompson viết lại UNIX bằng ngôn ngữ C của Richie và đây là

Hình giao diện dòng lệnh của MS-DOS

Trang 10

một mốc thay đổi quan trọng của UNIX Năm 1975, AT&T cung cấp mã nguồn của UNIX cho các trường đại học và UNIX trở nên phổ biến trong các trường đại học

Hầu hết các hãng máy tính đều phát triển một phiên bản UNIX của riêng mình cho phù hợp với cấu hình phần cứng khác nhau Kết quả của việc phát triển và nâng cấp các phiên bản UNIX riêng lẻ là sự ra đời của 2 dòng UNIX :

SystemV của AT&T và BSD (Berkeley Software Distribution) của trường đại học California tại Berkeley Ngày nay các nhà phát triển UNIX đã hợp nhất những

phiên bản cũ thành một phiên bản chuẩn POSIX-một tiêu chuẩn quốc tế dựa trên System V và BSD Các hệ điều hành thuộc dòng UNIX như: SunOS, Linux, DEC, AIX, HP-UX, Solaris,IRIX, SCO UNIX, MINIX,

Các đặc điểm cơ bản:

- Đa người dùng (multiuser): tại một thời điểm, nó cho phép nhiều người

dùng

- Đa nhiệm (multitasking): tại một thời điểm, người dùng có thể thực hiện

đồng thời nhiều tác vụ

- Kết nối mạng (networking): được thiết kế để cho phép các máy tính nối

mạng lại với nhau, hỗ trợ nhiều giao thức truyền thông

- Bảo mật: UNIX cung cấp nhiều cơ chế bảo mật khác nhau Trong đó

mỗi người dùng có một số quyền nhất định Ngoài ra cơ chế mã hóa và giải mã cũng là những thành phần bảo mật của UNIX

- Độc lập phần cứng: Do UNIX được viết bằng ngôn ngữ cấp cao cho nên

nó dễ dàng cài đặt trên các cấu hình phần cứng khác nhau

- Dùng chung thiết bị: Vì UNIX là môi trường nhiều người dùng, do đó

các thiết bị ngoại vi như ổ đĩa, máy in, modem, v…v… có thể được sử dụng chung bởi nhiều người

Hình giao diện đồ họa của UNIX

Trang 11

- Tổ chức hệ thống file phân cấp: Các file của UNIX được tổ chức theo

dạng hình cây có chung thư mục gốc tên là root, được biểu diễn bởi ký tự ”/” Bên trong một thư mục có thể là các thư mục con hay các file

3) LINUX:

Năm 1991, Linus Torvalds, một sinh viên của Đại học Tổng hợp Helsinki Phần Lan bắt đầu xem xét Minix (một phiên bản của hệ điều hành UNIX) với mục đích nghiên cứu để viết một hệ điều hành của chính mình chạy trên máy PC có bộ vi xử lý Intel 80386 Ngày 25/08/1991, Linus cho ra version 0.01 và đặt tên là hệ điều hành LINUX Ông công bố mã nguồn của mình trên Internet và kêu gọi mọi người cùng viết LINUX với ông Trải qua thời gian, LINUX được nhiều tổ chức và cá nhân tham gia viết, nó càng ngày càng hoàn thiện Trong số những hệ điều hành thông dụng ngày nay, LINUX là hệ điều hành miễn phí được sử dụng rộng rãi nhất

Các đặc điểm cơ bản:

LINUX thuộc dòng hệ điều hành UNIX, LINUX khai thác các khả năng của hệ điều hành UNIX hiện đại với các đặc điểm sau:

- Tính ổn định: LINUX có tính ổn định cao, đây là một trong những ưu

điểm của LINUX Nó ít bị lỗi khi sử dụng so với các hệ điều hành khác

- Tính bảo mật: LINUX là một hệ điều hành đa nhiệm đa người dùng,

LINUX cung cấp các mức bảo mật khác nhau cho người dùng

- Tính hoàn chỉnh: LINUX kèm theo nó rất nhiều trình tiện ích cần thiết

- Tính tương thích: LINUX tương thích với hầu hết các hệ điều hành khác

thuộc họ UNUX Ngoài ra LINUX còn tương tác được với hệ điều hành MS-WINDOWS

- Là hệ điều hành 32-bit đầy đủ

- Dễ dàng cấu hình: cho phép người dùng cấu hình dễ dàng cách làm

việc của hệ thống

Hình giao diện đồ họa của LINUX

Trang 12

- Khả năng chạy trên nhiều loại máy khác nhau: LINUX hỗ trợ hầu hết

các thiết bị phần cứng máy tính LINUX có khả năng chạy trên nhiều dòng máy khác nhau

4) MS-WINDOWS:

MS-WINDOWS là hệ điều hành được thiết kế bởi hãng Microsoft, đâây là hệ điều hành đa nhiệm có giao diện đồ họa Phiên bản đầu tiên của hệ điều hành này ra đời vào năm 1985 và được phổ biến rất nhanh Trải qua quá trình liên tục cải tiến, đến nay các dạng và phiên bản khác nhau của hệ điều hành này đã chiếm một thị phần rộng lớn trên toàn thế giới

Các đặc điểm cơ bản:

- Người dùng dễ dàng sử dụng vì có các thao tác đơn giản và giao diện thân thiện Có nhiều chương trình ứng dụng trên nhiều lĩnh vực

- Người dùng không cần quan tâm nhiều đến cài đặt các thiết bị vì WINDOWS hỗ trợ hầu hết các thiết bị Tương thích dễ dàng với các cấu hình máy khác nhau Tận dụng tối đa khả năng của máy tính

MS Là hệ điều hành có tính ổn định cao, việc cấu hình hệ thống có thể thực hiện dễ dàng và nhanh chóng

- Có khả năng kết nối mạng và bảo mật

- Là hệ điều hành 32 bit đầy đủ

Các phiên bản phổ biến của MS-WINDOWS:

WINDOWS 3.X : Bao gồm Windows 3.0, 3.1, 3.11, và Windows for

Workgroup 3.1 Đây không phải là một hệ điều hành thật sự, chúng được chạy trên nền của hệ điều hành MS-DOS Sử dụng cơ chế đa nhiệm tương tác (cooperative multitasking)

Hình giao diện đồ họa của Windows 3.1

Trang 13

WINDOWS 95: thực sự là một hệ điều hành tách khỏi MS-DOS nhưng

tương thích được với DOS, được xem là hệ điều hành chuyển tiếp từ MS-DOS

lên WINDOWS 98 là phiên bản cải thiện của WINDOWS 95, nó chạy ổn định

hơn WINDOWS 95

WINDOWS NT: được thiết kế cho hệ thống mạng client/server Có hai phiên

bản: Windows NT Workstation và Windows NT server Chúng đều hướng tới phục vụ cho các nhu cầu công nghệ thông tin của các doanh nghiệp Cung cấp các khả năng bảo mật, client/server, dịch vụ thư mục, quản trị từ xa…

WINDOWS 2000: có 2 phiên bản là Microsoft Windows 2000 Professionsal

và Microsoft Windows 2000 server Là các phiên bản có nhiều tính năng và chạy ổn định hơn Windows NT

Hình giao diện đồ họa của Windows 98

Hình giao diện đồ họa của Windows XP

Trang 14

Ngoài ra còn có các phiên bản như WINDOWS ME, WINDOWS XP (Windows XP có 3 phiên bản: Windows XP Home Edition, Windows XP Professinal, Windows XP Server)

5) Một số hệ điều hành khác như:

MAC OS Được xem là hệ điều hành dễ sử dụng nhất cho người mới bắt đầu Được thiết kế giao diện đồ họa vào năm 1984

Hệ điều hành NOVELL NETWARE là hệ điều hành mạng của hãng NOVELL đưa ra vào năm 1983 Đây là một trong những hệ điều hành mạng được sử dụng rộng rãi trong phạm vi cục bộ cũng như trong phạm vi rộng

Hình giao diện đồ họa của Windows 2000

Hình giao diện đồ họa của MAC OS

Trang 15

CHƯƠNG II

HỆ THỐNG QUẢN LÝ TẬP TIN

I KHÁI NIỆM HỆ THỐNG QUẢN LÝ TẬP TIN:

1) Cấu trúc logic của đĩa:

a) Cấu trúc đĩa cứng:

Đĩa cứng được cấu tạo từ nhiều phiến đĩa, mỗi phiến đĩa gồm 2 mặt đĩa Mỗi mặt đĩa được gọi là head hay side Trên mỗi mặt đĩa được cấu tạo gồm nhiều vòng tròn đồng tâm Mỗi vòng tròn được gọi là track Trên mỗi track được chia thành các cung nhỏ hơn Mỗi cung được gọi là sector

- Các head/side được đánh số bắt đầu từ 0

- Các track được đánh số bắt đầu từ 0

- Các sector được đánh số bắt đầu từ 1

- Cylinder: một cylinder là tập hợp các track có cùng bán kính đến trục đĩa trên tất cả các mặt đĩa

Muốn truy cập đến một sector trên đĩa thì phải biết vị trí của sector trên đĩa Có 2 cách đánh địa chỉ cho các sector:

Địa chỉ vật lý: mỗi sector được xác định bởi 3 thành phần là (head, cylinder, sector)

Địa chỉ logic: Các sector được đánh số từ 0, 1, 2, 3,… Quy luật đánh số như sau:

Trang 16

- Trên cùng một cylinder: các sector được đánh số theo chiều kim đồng hồ Hết mặt trên thì xuống mặt dưới, hết phiến trên thì xuống phiến dưới

- Trên toàn bộ đĩa: đi từ cylinder ngoài cùng vào cho đến cylinder cuối cùng ở tâm

b) Định dạng đĩa cứng:

Để một đĩa cứng có thể sử dụng được phải trải qua 3 quá trình:

- Định dạng cấp thấp (low level format): Quá trình này sẽ tiến hành ghi

các track và các sector lên đĩa, đồng thời ghi các thông tin để nhận dạng các sector Quá trình này thường được tiến hành bởi nhà sản xuất ổ cứng

- Chia vùng (partitioning): Phân chia đĩa cứng thành các phân vùng

Mỗi phân vùng được gọi là một partition Về mặt lý thuyết thì mỗi phân vùng có thể cài đặt được một hệ điều hành

-Định dạng cấp cao (high level format): quá trình này sẽ tạo ra các cấu

trúc để lưu trữ dữ liệu gọi là các ổ đĩa logic hay volume

c) Bảng Partition:

Master Boot Record là gì?

Quá trình chia vùng một đĩa cứng sẽ tạo thành các partition trên đĩa cứng Để quản lý các partition người ta dùng cơ chế bảng partition (partition table) Mỗi một partition trên đĩa sẽ tương ứng với một entry trên bảng partition quản lý nó Bảng partition nằm ở sector đầu tiên của đĩa cứng Là sector có địa chỉ vật lý: head 0, cylinder 0, sector 1 Sector này được gọi là Master Boot Record (MBR) Ngoài việc quản lý các partition, MBR còn có vai trò trong việc nạp hệ điều hành vào RAM khi khởi động máy

Phân chia đĩa trong MS-DOS:

Một đĩa cứng có thể chia thành nhiều ổ đĩa logic mà DOS có thể gán tên cho nó từ C Z và được đối xử như một ổ đĩa vật lý Về mặt logic, một parttition có thể coi như một ổ đĩa nên người ta có thể cài một hệ điều hành tùy ý lên nó như: MS-DOS, MS-WINDOWS, UNIX, LINUX, OS/2…

Có 3 loại partition trên đĩa cứng:

- Phân khu DOS chính (primary DOS partition)

- Phân khu DOS mở rộng (extended DOS partition)

- Phân khu không phải là DOS (non-DOS partition)

Cấu trúc của Master Boot Record (MBR):

Chương trình kiểm tra bảng Partition,

nạp và thực hiện BootSector của

partition chủ động

446 bytes

Chỉ dấu kết thúc của bảng Partition 2 bytes

Trang 17

Chi tiết hơn:

+1FE H 2 H 55 AA Chỉ dấu kết thúc

Phân tích nội dung của một Partition entry:

Một partition entry có cấu trúc như sau:

+0 H 1 Boot cờ boot=0:không chủ động, boot=80 hexa: chủ động +1 H 1 Hd Số hiệu head bắt đầu

+2 H 2 Sec và Cyl Số hiệu cylinder và sector bắt đầu

+4 H 1 Sys mã hệ thống (xem tiếp bảng dưới)

+5 H 1 Hd Số hiệu head kết thúc

+6 H 2 Sec và Cyl Số hiệu cylinder và sector kết thúc

+10 H Bắt đầu của partition entry kế tiếp, bằng AA55 Hexa nếu là entry cuối cùng

Mã hệ thống (trong MS-DOS):

00 Không có partition nào trong entry này

2) Khái niệm hệ thống quản lý tập tin:

Tập tin là một đơn vị lưu trữ thông tin ở bộ nhớ ngoài Các tập tin có thể lưu trữ thành nhóm trong các thư mục Hệ điều hành có thể tạo mới, cập nhật, sửa đổi, xóa tập tin khi cần thiết Tập tin và thư mục được hệ điều hành quản lý, tổ chức, sắp xếp có hệ thống theo một cơ chế gọi là hệ thống quản lý tập tin Bao gồm: các yếu tố cấu thành tập tin, cách đặt tên tập tin, cách truy xuất, cách sử dụng, cách bảo vệ tập tin, các thao tác trên tập tin, cách tổ chức thư mục, các

Trang 18

thao tác trên thư mục, cách lưu trữ tập tin trên bộ nhớ ngoài (đĩa cứng, đĩa mềm, đĩa quang, băng từ …)

Người dùng thì quan tâm đến cách đặt tên của tập tin, các thao tác trên tập tin và thư mục… Nhưng ở góc độ hệ điều hành thì ta cần quan tâm đến tập tin và thư mục được lưu trữ như thế nào, các sector trên đĩa được quản lý và phân phối cho các tập tin như thế nào để sao cho toàn bộ hệ thống làm việc hiệu quả và đáng tin cậy Một hệ thống máy tính có một CPU tốc độ nhanh mà nếu hệ thống tập tin được tổ chức không tốt thì kéo theo hiệu suất làm việc của hệ thống giảm theo

II CÁC MÔ HÌNH TỔ CHỨC:

Một đĩa vật lý có thể chia thành nhiều partition Một partition có thể gồm một hoặc nhiều volume Thông thường, mỗi một volume gồm các vùng như sau:

Boot sector: chứa các thông tin về hệ thống file trên volume, chương trình

nạp hệ điều hành

Vùng quản lý: quản lý các sector trong volume, quản lý thông tin về tập

tin hoặc thư mục nằm trên volume

Vùng data: là nơi thật sự lưu trữ dữ liệu của của volume

Đối với hệ điều hành DOS và WINDOWS, một partition không thể có nhiều volume mà một partition chỉ tương đương với một volume, đĩa mềm chỉ là một volume Vùng data được chia thành các block Kích thước mỗi block là 2ksectors (k là số nguyên, k >=0) Một block có một trong các tính chất sau:

Free: block chưa thuộc tập tin nào cả

Used: block thuộc 1 tập tin nào đó

Kích thước của block càng nhỏ thì việc truy xuất càng chậm Nhưng block càng lớn thì gây lãng phí Vùng quản lý là nơi lưu trữ các thông tin về tập tin Căn cứ vào các thông tin này ta có thể biết tập tin này nằm ở những block nào trên đĩa Các phương pháp phân bố các block cho tập tin gồm:

1) Phân bố liền nhau: (contiguous allocation)

Vùng quản lý được phân thành các ô, mỗi ô quản lý cho một tập tin Cấu trúc mỗi ô như sau:

Tên tập tin

Block bắt đầu của tập tin

Kích thước của tập tin

Các block dữ liệu của một tập tin phải nằm liên tiếp nhau Chỉ cần biết số hiệu của block bắt đầu và kích thước của tập tin là ta có thể truy xuất toàn bộ nội dung của tập tin Dễ gây ra hiện tượng phân mãnh vùng data (dữ liệu)

Ví dụ: tập tin BAITAP.TXT kích thước 2040 bytes, bắt đầu ở block số 2

Trang 19

BAITAP.TXT

2

2040 (ghi chú: 4 blocks X 512 bytes = 2048)

2) Phân bố liên kết: (linked allocation)

Theo mô hình này các ô quản lý sẽ có cấu trúc như sau:

Tên tập tin

Block bắt đầu của tập tin

Kích thước của tập tin

Các block dữ liệu ngoài việc chứa nội dung của tập tin còn chứa chỉ số của block dữ liệu kế tiếp Chỉ số này được kết thúc bằng một giá trị đặc biệt để thông báo đó là block cuối cùng Chúng tạo thành một danh sách liên kết các block

3) Phân bố theo chỉ mục: (indexed allocation)

Theo mô hình này, các block dữ liệu của một tập tin không cần liên tiếp nhau Các ô trên vùng quản lý sẽ có cấu trúc như sau:

Tên tập tin

Mảng các số nguyên chứa chỉ số các block của 1 tập tin

Kích thước của tập tin

Khuyết điểm của mô hình này là: kích thước của tập tin bị giới hạn do số phần tử của mảng giới hạn

4) Phân bố theo chỉ mục có liên kết: (Linked Index Allocation)

Theo mô hình này vùng quản lý được chia thành 2 phần: status-block (cho biết trạng thái của block) và DET (Directory Entry Table)

Trang 20

Status-block:

Được phân thành các ô mỗi ô quản lý cho 1 block, ô thứ i quản lý block thứ i Giá trị tại một ô có thể là:

0: free (block còn trống, chưa dùng)

FF7: bad (block hỏng)

FFF: EOF (End Of File – Báo kết thúc tập tin)

Các giá trị khác: cho biết chỉ số của ô/block tiếp theo

Ví dụ: Một volume có 20 block, đang chứa 3 tập tin được quản lý bởi các ô như sau:

A.TXT (1,3,7,11,13) B.TXT (2,5,9,19,8) C.TXT (4,6,12,14)

Chỉ số các block được đánh bắt đầu từ zéro

Tên tập tin

Chỉ số của ô bắt đầu ở vùng status-block

Kích thước tập tin

Khuyết điểm: Mô hình này không sử dụng được block số 0 vì sẽ gây ra nhầm lẫn giữa block 0 và block trống

Ví dụ:

Giả sử có tập tin B.TXT (5,3,0,1)

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Không biết được block do ô số 3 quản lý là trống hay thuộc tập tin B.TXT

III HỆ THỐNG FILE EXT2 CỦA LINUX:

Ext2 (Extended File System Version 2) là một hệ thống file được các hệ điều hành Linux sử dụng phổ biến Các hệ thống file của Linux đều dựa theo các khái niệm hệ thống file của hệ điều hành UNIX File được quản lý bởi Inode, thư mục cũng được xem là một file chứa các entry, còn các thiết bị (devices) thì được xem như là các file đặc biệt

1) Tổ chức đĩa: (Disk Organization)

Hệ thống Ext2 có dùng khái niệm block Một block gồm một hay nhiều sector Kích thước một block tùy thuộc vào kích thước của hệ thống file Ví dụ, trên đĩa mềm 1,44MB thì kích thước một block là 2 sector (1024 bytes) Trên một partition 10 GB thì một block có kích thước bằng 4 KB (hay 8 KB) tương ứng với 8 sector (hay 16 sector)

Trang 21

Ngoài Boot Record, hệ thống file Ext2 được chia thành các block group

Đĩa mềm 1,44MB chỉ là một block group duy nhất Đĩa cứng 10 GB thì có thể chia thành 30 block group Sơ đồ tổng quát như sau:

Trong hình vẽ, một block group lại được chia thành các thành phần: Superblock, Group Descriptor, Block bitmap, Inode bitmap, Inode Table, Data Blocks

a) Superblock:

Không có Superblock thì không thể dùng đĩa được vì Superblock chứa các thông tin cơ bản như: kích thước của một block (block size), tổng số block trên một Block group (blocks per group), tổng số inode trên một Block group,… Nhờ những thông tin này mà ta có thể dự đoán, tính toán các thành phần và cấu trúc trong một Block group

Cấu trúc chi tiết của một Super block như sau:

offset size description

Trang 22

Trong đó, ta sẽ chú ý đến các trường (field) quan trọng sau:

- s_inodes_count: cho biết tổng số i-node trên toàn bộ partition, bao gồm

các inode đã dùng và chưa dùng

- s_blocks_count: cho biết tổng số block trên toàn bộ partition, bao gồm

các block đã dùng và chưa dùng

- s_r_blocks_count: số block để dành cho super user

- s_free_blocks_count: số block còn trống (gồm cả block để dành cho

super user)

- s_free_inodes_count: tổng số inode còn trống

- s_first_data_block: cho biết vị trí của super block đầu tiên (xác định

bằng số thứ tự của khối)

- s_log_block_size: dùng để biết kích thứơc của một block Kích thứơc của

một block được tính như sau:

block_size = 1024 << s_log_block_size

- s_blocks_per_group: tổng số block trên một Block group

- s_inodes_per_group: tổng số inode trên một block group

- s_inode_size: kích thước của một inode ( tính bằng byte)

b) Group Descriptor: Gồm các thành phần như sau:

offset size description

Trang 23

Nội dung của các field như sau:

- bg_block_bitmap: Cho biết số hiệu của block bắt đầu của vùng block bitmap (trong một Block group)

- bg_inode_bitmap: Cho biết số hiệu của block bắt đầu của vùng inode bitmap (trong một Block group)

- bg_inode_table: Cho biết số hiệu của block bắt đầu của vùng inode table (trong một Block group)

- bg_free_blocks_count: Cho biết tổng số khối trống trong một Block group

- bg_free_inodes_count: Cho biết tổng số inode trống trong một Block group

- bg_used_dirs_count: cho biết số lượng inode đã phân bố cho các thư mục

- bg_pad: vùng đệm

- bg_reserved: vùng để dành cho tương lai

c) Block Bitmap:

Vùng này đựơc xác định vị trí bằng cách đọc nội dung của trường bg_block_bitmap trong phần Group descriptor tương ứng Mỗi bit của vùng này cho biết được trạng thái hiện tại của một block tương ứng trong Block group chứa nó Khi bit bằng 1 có nghĩa là block tương ứng đã được sự dụng Khi bit bằng 0 có nghĩa là block tương ứng còn rãnh

Block đầu tiên của Block group thì tương ứng với bít số 0 của byte 0 của vùng Block bitmap Block thứ hai thì tương ứng với bít số 1 của byte 0 Block thứ

8 thì tương ứng với bit số 7 của byte 0 Còn bít số 0 của byte số 1 thì tương ứng với block thứ 9 trong Block group,…

d) Inode Bitmap:

Vùng Inode Bitmap được xác định vị trí bằng cách đọc nội dung của trường bg_inode_bigmap trong phần Group descriptor tương ứng Mỗi bit trong vùng này quản lý một inode tương ứng trong vùng Inode Table Cách tổ chức và làm việc của vùng Inode Bitmap cũng tương tự như vùng Block Bitmap

e) Inode Table:

Vùng Inode Table là tập hợp các Inode Khích thước mỗi Inode được xác

định bởi trường s_inode_size của vùng SuperBlock Mỗi inode lưu các thông tin

cơ bản về một file mà Inode này quản lý, như: vị trí của file, kiểu của file, kích thước file, quyền truy cập… Riêng phần tên file thì không lưu tại Inode mà lưu tại thư mục Dưới đây là hình vẽ cho biết cách truy cập tên file từ thư mục đến inode tương ứng

Trang 24

f) Data Blocks:

Vùng data block gồm các block dữ liệu Được quản lý bởi các bit tương ứng trong vùng Block bitmap Nếu là một file bình thường thì đây là nơi lưu trữ nội dung của file, nhưng nếu file là một thư mục thì nơi đây sẽ chứa các

directory-entry

2) Cấu trúc thư mục: (Directory Structure)

a) Cấu trúc thư mục:

Thư mục là một file đặc biệt mà nội dung của nó (chứa tại vùng Data blocks) gồm toàn các directory-entry Các directory-entry trong Ext2 của Linux có kích thước không bằng nhau (directory-entry còn được gọi là record) Nhưng mỗi directory-entry đều có đủ 5 trường (field) như sau:

offset size description

Nội dung của các trường (field) như sau:

- inode: cho biết vị trí của inode trong vùng inode table, vì mỗi file tương

ứng với một inode Nếu field này chứa giá tri 0, có nghĩa là entry này chưa dùng

- rec_len: kích thước tính bằng byte của một entry-directory

- name_len: cho biết chiều dài (tính bằng byte) của tên file

Trang 25

- file_type: cho biết loại file Sẽ thuộc một trong các giá trị trong bảng sau:

EXT2_FT_REG_FILE 1 File bình thường

EXT2_FT_CHRDEV 3 Thiết bị ký tự (character drvice)

EXT2_FT_BLKDEV 4 Thiết bị khối (block device)

EXT2_FT_SYMLINK 7 Liên kết (link)

- name: tên của tập tin

b) Cấu trúc Inode:

Tên file hay thư mục thì được xác định trong một directory-entry, tại directory-entry ta sẽ lấy ra được số hiệu inode tương ứng của file trên vùng inode table Để tìm kiếm một tập tin hay thư mục, ta luôn bắt đầu tìm từ thư mục

“/” trong Linux Mà inode số 2 trong bảng Inode Table là inode tương ứng với thư mục “/” Tại Inode này, nhờ vào phần địa chỉ trong inode (là vùng direct block, indirect block, double indirect block, triple indirect block như hình trên) ta

Trang 26

xác định được vùng dữ liệu của thư mục “/” Vùng dữ liệu (gồm một hay nhiều data block) này chứa các directory-entry của thư mục “/”

Một inode có kích thước 128 byte với cấu trúc chi tiết bên trong của nó như sau:

offset size description

Trong đó, ta chú ý đến một số trường (field) quan trọng sau:

- i_mode: cho biết loại file và quyền truy cập và các thuộc tính khác của

file Thông tin thêm về phần này được trình bày ở bảng “LOẠI FILE và CÁC QUYỀN TRUY CẬP” ở phía dưới đây

- i_uid: số ID của user là chủ của file này

- i_size: kích thước của file tính bằng byte

- i_atime: thời gian của lần cuối mà file được truy cập (access)

- i_ctime: thời gian lúc file được tạo ra

- i_mtime: thời gian của lần cuối mà file được hiệu chỉnh (modify)

- i_gid: số ID của nhóm là chủ của file này

- i_links_count: số lượng liên kết đến file

- i_blocks: tổng số block dành cho file (kể cả còn trống)

- 15 x 4 i_block: gồm 15 địa chỉ chỉ đến các khối dữ liệu của file trên

vùng data blocks Trong đó, 12 địa chỉ đầu chỉ trực tiếp đến các khối trên vùng data blocks Địa chỉ thứ 13 gọi là địa chỉ gián tiếp (indirect block), mỗi địa chỉ sẽ chỉ đến một khối gồm toàn các địa chỉ trực tiếp trên vùng data blocks Địa chỉ thứ 14 là địa chỉ gián tiếp 2 cấp (double-indirect block) Địa chỉ thứ 15 là địa chỉ gián tiếp 3 cấp (triple-indirectory block)

Trang 27

Bảng: LOẠI FILE và CÁC QUYỀN TRUY CẬP

file format

IV HỆ THỐNG FILE FAT: (File Allocation Table)

Mô hình hình này được hệ điều hành DOS và Windows sử dụng

BS: Boot Sector

RD: Root Directory

Vùng RD: được phân nhỏ thành các entry, được tổ chức như vùng DET

Mỗi entry có vai trò là một ô như vùng DET

Trang 28

Vùng FAT: FAT 2 là bản dự phòng của FAT 1 FAT được phân nhỏ thành

các ô (entry) Mỗi entry quản lý cho một block như trình bày ở phần block Kích thước mỗi entry của FAT có thể là 12 bits (FAT12), 16 bits (FAT16) hay 32 bits (FAT32)

Status-Vùng DATA: là nơi thực sự chứa nội dung của các tập tin

ÁP DỤNG CHO ĐĨA MỀM 1,44MB 3,5 inches:

Cấu trúc logic của đĩa mềm 1,44MB 3,5 inches

1) Boot sector:

Chiếm một sector đầu tiên (sector 1, track 0, side 0)

Boot sector có chứa một chương trình ngắn để khởi động quá trình nạp hệ điều hành từ đĩa mềm vào bộ nhớ trong

Tất cả các đĩa mềm đều có boot sector, dù chúng có chứa hay không chứa hệ điều hành

Ngoài chương trình này, boot sector còn chứa các nội dung khác cho biết các thông tin về đĩa như:

Số bytes/sector

Số sectors/cluster

Số lượng bảng FAT

Số entry tối đa trong thư mục gốc

Tổng số sector trên đĩa

Số sector của một bảng FAT

vân … vân …

2) Vùng root directory (thư mục gốc):

Offset Tên trường (field) Kích thước (bytes)

cấu trúc một root-dir-entry

Trang 29

Có kích thước 14 sectors (bắt đầu từ sector số 19 đến sector số 32)

Được chia nhỏ thành các root-dir-entry Mỗi entry này có kích thước bằng

32 bytes

Mỗi tập tin hay thư mục con thuộc thư mục gốc sẽ được quản lý bởi một entry trên vùng root dir

Tổng số entry là: (14 x 512) / 32 = 224 entries

Một entry mô tả các thông tin cho một tập tin hay một thư mục con mà nó quản lý như bảng trên (bảng cấu trúc một root-dir-entry)

3) Vùng Fat:

Có 2 bảng FAT là FAT 1 và FAT 2 Bảng FAT 2 là dự phòng cho bảng FAT 1 Mỗi bảng FAT có kích thước 9 sectors FAT 1 bắt đầu từ sector số 1 đến số 9, FAT 2 từ sector số 10 đến số 18

Nội dung của một tập tin hay thư mục con được lưu trữ thật sự trên vùng DATA Vùng DATA gồm các khối, mỗi khối có kích thước một sector Tập tin được lưu trữ trên một hay nhiều khối thuộc vùng DATA

Bảng FAT được chia nhỏ thành các fat-entry Mỗi fat-entry quản lý một khối duy nhất duy nhất trên vùng DATA Mỗi fat-entry mang một trong các giá trị sau:

- 000 hex: khối tương ứng trên vùng data là khối trống, chưa được dùng

- FF7: khối bị hư (bad)

- FFF: khối cuối cùng của một tập tin hay thư mục con

- Các giá trị khác: khối đang thuộc một tập tin hay thư mục con

Kích thước một fat-entry là 12 bits nên gọi FAT này là FAT12 Hai entry đầu tiên không dùng vào việc quản lý khối trên vùng DATA Ngoài FAT12, có một số hệ thống file FAT khác là FAT16, FAT32

Do fat-entry số 0 và fat-entry số 1 không tham gia quản lý, nên fat-entry số 2 quản lý khối số 33 trên vùng DATA

Tổng quát: fat-entry số i quản lý khối số 31+i trên vùng DATA

4) Cách thức lưu trữ và quản lý một tập tin (hay thư mục):

Trang 30

Tập tin (thư mục) được lưu trữ trên các khối rời rạc, không nhất thiết liền nhau trên vùng DATA Các khối của tập tin được tổ chức theo dạng danh sách liên kết

-Các fat entry của một tập tin sẽ được tổ chức như thế nào?

+ Đầu xâu: fat entry đầu tiên sẽ được truy cập từ rootdir entry

+ Liên kết: Nội dung của entry trước sẽ chứa số hiệu của entry kế tiếp + Cuối xâu: entry cuối cùng chứa giá trị FFF hexa

5) Giải mã nội dung của một Fat-entry 12 bits:

a)FAT16 và FAT12:

FAT16 dùng 2 bytes cho một entry

2 bytes X 8 bits = 16 bits nên gọi là FAT16

FAT12 dùng 3 bytes cho 2 entries Suy ra 1 entry cĩ kích thước là 12 bits nên gọi là FAT12

Ghi chú:

Hai entries đầu khơng dùng vào việc quản lý các khối trên vùng DATA

Bắt đầu từ entry số 2 dùng cho việc quản lý

b) Giài mã nội dung của một FAT12 entry:

Nhắc lại vấn đề byte thấp byte cao lưu trong bộ nhớ:

giá trị của 1 word = byte cao x 256 + byte thấp Cấp phát một vùng nhớ chứa đủ tồn bộ 9 sectors của vùng FAT1:

unsigned char FatBuffer[512*9];

Đọc FAT1 vào FatBuffer:

absread(0,9,1,FatBuffer);

gọi k là số hiệu của fat entry đang xét, k cĩ thể chẵn hoặc lẻ

gọi pos và pos+1 là vị trí 2 byte tương ứng với entry k trong vùng nhớ

FatBuffer.Thì pos = (3*k/2)

Trường hợp k chẵn:

Trang 31

Phải lấy ra được phần C8 và C4 rồi sắp xếp lại vị trí của C8 và C4 sao cho lấy ra được giá trị của entry k

Dùng 2 biến 2 bytes như sau:

int bytethap = FatBuffer[pos];

int bytecao = FatBuffer[pos+1];

Trường hợp k lẻ:

Phải lấy ra được phần L8 và L4 rồi sắp xếp lại vị trí của L8 và L4 sao cho lấy ra được giá trị của entry k

Dùng 2 biến 2 bytes như sau:

int bytethap = FatBuffer[pos];

int bytecao = FatBuffer[pos+1];

Hàm giải mã một FAT12 entry:

int GetValueFat( int k )

{

int pos = (k*3)/2;

int bytecao = FatBuffer[pos+1];

int bytethap = FatBuffer[pos];

Trang 32

if(k%2 == 0)

return (bytethap | ((bytecao & 0xF)<<8));

else return ((bytecao<<4)|(bytethap>>4));

của volume Một cluster có kích thước là 2 k x 512 byte, với k là số nguyên có giá

trị từ 0 đến 7 Như vậy một cluster trong hệ thông FAT có kích thứơc tối đa là 65.536 byte hay 64 KB

Volume dùng hệ thống file FAT16 thì mỗi Fat-entry có kích thước là 16 bit, sẽ quản lý được tối đa 216 = 65.536 cluster Vậy một volume của FAT16 chỉ có dung lượng tối đa là 65.536 byte x 65.536 cluster = 4 GB Chúng ta không thể dùng FAT16 cho các volume lớn hơn 4 GB Với cách tính tương tự cho FAT32, về mặt lý thuyết thì FAT32 có thể hỗ trợ dung lượng một volume lên đến 2 TB (Terabytes) Do sự gia tăng khả năng hỗ trợ dung lượng như vậy nên các vùng trên một volume FAT32 cũng có sự thay đổi theo

Một số thông số của FAT32 như sau:

Kích thước cluster ngầm định (default) cho FAT32:

Greater than or equal to 32 GB 32 K

Kích thước của một Fat-entry là 32 bit nhưng 4 bit cao thì không dùng

Giá trị chứa trong một fat-entry của FAT32 theo bảng so sánh sau:

Trang 33

FAT12 FAT16 FAT32

Vùng Boot Sector của FAT12 và FAT 16 chỉ có 1 sector Nhưng ở

FAT32 thì vùng này là 2 sector nên lúc này gọi là BootRecord Có cấu trúc như sau:

Trang 34

Diễn giải:

A_BF_BPB_BytesPerSector - The number of bytes per sector

A_BF_BPB_SectorsPerCluster - The Number of sectors per cluster

A_BF_BPB_ReservedSectors - The number of reserved sectors

A_BF_BPB_NumberOfFATs - The number of File Allocation Tables

A_BF_BPB_RootEntries - This field is ignored on FAT32 drives

A_BF_BPB_TotalSectors - The size of the partition, in sectors

A_BF_BPB_MediaDescriptor - The media descriptor F8h = harddisk

A_BF_BPB_SectorsPerFAT - The number of sectors per FAT, 0 with FAT32

A_BF_BPB_SectorsPerTrack - The number of sectors per track

A_BF_BPB_Heads - The number of read/write heads on the drive

A_BF_BPB_HiddenSectors - The number of hidden sectors on the drive

A_BF_BPB_HiddenSectorsHigh - The high word of the hidden sectors value

A_BF_BPB_BigTotalSectors - The total number of sectors on the FAT32 drive

A_BF_BPB_BigTotalSectorsHigh -The high word of the FAT32 total sectors value

A_BF_BPB_BigSectorsPerFat - The number of sectors per FAT on the drive

A_BF_BPB_BigSectorsPerFatHi -The high word of the sectors per FAT value

Cấu trúc một RootDir-entry của FAT32:

Vùng Root Directory:

Vùng Root Directory của volume FAT32 thì không lưu trữ tại một vị trí cố định như trong FAT16 hay FAT12 Nó gồm một chuỗi các cluster, cluster bắt đầu

được xác định bởi giá trị chứa trong trường A_BF_BPB_RootDirStrtClus trong

cấu trúc BPB_FAT32 Structure Điều này cho phép mở rộng Root Directory

khi cần thiết, vì thế trường A_BF_BPB_RootEntries được bỏ qua (ignore)

Trang 35

2) Long File Name (LFN):

Tên file trong MS-Windows 2000 có thể chứa đến 255 ký tự và được phép chứa cả khoảng trắng, dấu chấm (dot), và các ký tự đặc biệt Điều này khác với quy định truyền thống của FAT (tên file phải có dạng là 8.3) Tên file dài như thế (long file name) được tổ chức như sau:

Khi nào ta tạo ra một file có tên dài, MS-Windows sẽ tạo ra một entry theo truyền thống gồm 8 và 3 ký tự Bên cạnh đó, nó sẽ tạo ra các entry phụ mỗi entry chứa 13 ký tự của tên file, các ký tự này sẽ được lưu dưới dạng Unicode 2 byte Như vậy mỗi ký tự sẽ chiếm 2 byte Các entry phụ này được set thuộc tính là volume, read-only, system và ẩn Vì thế, nếu MS-DOS tìm tập tin này, nó sẽ không nhận ra các entry phụ mà chỉ nhận được entry chính mà thôi

RootDir-Hình sau mô tả các RootDir-entry của một tập tin có tên dài là “The quick brown.fox”

Dựa theo cấu trúc của Root-Dir entry phụ sau đây, ta có thể giải thích được các thông tin lưu trữ của tập tin “The quick brown.fox”:

1 BYTE LFN Record Sequence Number

- Bits 5:0 hold a 6-bit LFN sequence number (1 63) Note that this number is based This limits the number of LFN entries per long name to 63 entries or 63 * 13

one-= 819 characters per name

- The longest filename I was able to create using Windows 95 Explorer was 250 characters I managed to use a 251-character name when saving a file in Microsoft Word I don’t know if this is the limitation of the FS driver or if it is limited at the application level.

Trang 36

- Bit 6 is set for the last LFN record in the sequence.

- Bit 7 is set if the LFN record is an erased long name entry or maybe if it is part of

an erased long name?

10 BYTEs 5 UNICODE characters, LFN first part.

1 BYTE Attribute

- This field contains the special value of 0Fh, which indicates an LFN entry.

1 BYTE Reserved (probably just set to zero).

1 BYTE Checksum of short name entry, used to validate that the LFN entry belongs to the

short name entry following.

According to Ralf Brown’s interrupt list, the checksum is computed by adding up all the short name characters and rotating the intermediate value right by one bit position before adding each character.

12 BYTEs 6 UNICODE characters, LFN second part.

1 WORD Initial cluster number, which is always zero for LFN entries.

4 BYTEs 2 UNICODE characters, LFN third part.

Ghi chú: Chưa thấy tài liệu chính thức nào của Microsoft công bố chi tiết về Long File Name

V HỆ THỐNG FILE NTFS: (New Technology File System)

Phần này chỉ giới thiệu hệ thống file NTFS ở mức tổng quát

Giống như FAT, hệ thống file NTFS dùng đơn vị là cluster cho việc phân bố dữ liệu Kích thước một cluster là không đổi (từ 512 byte đến 64 KB)

Trang 37

Khi một volume được format bằng NTFS, MFT và các Metadata được tạo ra

- MFT là một file đặc biệt mà thành phần của nó là các record, mỗi một record tương ứng với một Metadata hoặc một file hay thư mục

- Metadata là các file dùng để hiện thực cấu trúc của hệ thống file Bảng sau đây cho biết các record của MFT Mỗi record trong bảng có một Metadata tương ứng:

Tập tin hệ

thống Tên tập tin MFT Record Cơng dụng của tập tin

Master file table $Mft 0 Thơng tin này chỉ đến chính nĩ (MFT file)

Master file table

2 $MftMirr 1 Đây là bản sao cho bốn record đầu tiên của MFT Dùng để lưu dự phịng cho trường hợp MFT bị hỏng

(transaction) bất kỳ trong hệ thống Nếu một giao tác bị hỏng thì cĩ thể dùng thơng tin trong file này

$AttrDef 4 File này là một bảng chứa các thơng tin về một

thuộc tính như: tên thuộc tính, số hiệu của thuộc tính, các mơ tả thuộc tính

Root file name

Cluster bitmap $Bitmap 6 Cho biết cluster nào trong volume đang được dùng

này chứa chương trình Bootstrap

Bad cluster file $BadClus 8 Cho biết các Bad Cluster trong volume

Security file $Secure 9 Nội dung bộ mơ tả an tồn trong tồn volume

Trang 38

Upcase table $Upcase 10 Bảng các ký tự hoa và thường dùng để chuyên đổi

Các record còn lại là các record tương ứng với các file hay thư mục trong volume NTFS tạo ra các file-record cho các file và các directory-record cho các thư mục Mỗi record cho biết thuộc tính của file hay thư mục Thường thì mỗi record có kích thước là1 KB

Nếu dùng một record mà không đủ thông tin cho một file (hay thư mục) thì có thể dùng kết hợp thêm nhiều record cho một file (hay thư mục) Trong trường hợp này, file-record đầu tiên sẽ lưu giữ vị trí các record còn lại của file Nếu file hay thư mục có kích thước rất nhỏ thì chúng được lưu trực tiếp ngay tại record

Thư mục trong NTFS là một file đặc biệt lưu trữ các truy cập đến các file và thư mục con khác Các cluster của thư mục được chia thành các khối nhỏ Mỗi khối nhỏ chứa các thông tin gồm: tên file (hay thư mục con), các thuộc tính cơ sở, số hiệu của file-record (hay directory-record) của file trong MFT

3) NTFS File Attribute:

Mỗi sector đã được phân phối trong volume NTFS thì phải thuộc một file hay thư mục nào đó NTFS xem mỗi file (hay thư mục) như là một tập hợp các thuộc tính Mỗi thành phần như: tên file, thông tin bảo mật (security information), thậm chí là dữ liệu của file nữa là những thuộc tính của file Mỗi thuộc tính được xác định bởi tên thuộc tính, mã thuộc tính

Khi thuộc tính của một file có thể điền đủ vào trong một record tại MFT thì ta gọi đó là các thuộc tính thường trú (resident attributes) Khi thông tin cho một file quá nhiều, một record không thể chứa hết, thì các thuộc tình còn lại được gọi là các thuộc tính không thường trú (non-resident attributes) Các thuộc tính non-resident được phân bố lên một hoặc nhiều cluster và được lưu trữ thành một chuỗi dữ liệu liên tiếp nhau trong volume

Trang 39

Bảng các thuộc tính file trong NTFS

Tên thuộc tính Mô tả

Standard Information Gồm các thông tin như time stamp và link count

Attribute List Danh sách tất cả các thuộc tính không nằm trong record của MFT

SecurityDescriptor Thông tin về user sở hữu file, ai có quyền truy cập file

Object ID A volume-unique file identifier Được dùng trong các kiểm tra link

Index Root Được dùng hiện thực các thư mục và các chỉ mục

Index Allocation Được dùng hiện thực các thư mục và các chỉ mục

Volume Information Chỉ dùng cho file hệ thống $Volume Cho biết volume version

Volume Name Chỉ dùng cho file hệ thống $Volume Cho biết volume label (nhãn đĩa)

Trang 40

CHƯƠNG III

QUẢN LÝ BỘ NHỚ

I KHÔNG GIAN ĐỊA CHỈ:

Bộ nhớ là thiết bị nhớ mà thông qua nó, CPU có thể liên lạc với môi trường bên ngoài Bộ nhớ vật lý là một mảng các ô nhớ được đánh địa chỉ Một chương trình được lưu trên đĩa như một tập tin nhị phân có thể xử lý được Để thực hiện chương trình, hệ điều hành sẽ nạp chương trình vào bộ nhớ CPU sẽ

lần lượt tìm nạp từng lệnh của chương trình từ bộ nhớ để thực thi Một chương trình khi đã được nạp vào bộ nhớ và thực thi thì được gọi là một process (tiến trình)

1) Kỹ thuật overlay:

Ngày xưa, các máy tính thế hệ đầu có bộ trong nhỏ, mà các kích thước các phần mềm thì phát triển theo thời gian Càng ngày, phần mềm càng lớn hơn bộ nhớ nên thường không đủ bộ nhớ cho chương trình nạp vào Yêu cầu đăït ra là làm sao thực hiện được chương trình có khích thước lớn hơn bộ nhớ

Để đáp ứng, trước đây người lập trình chia chương trình thành nhiều phần nhỏ hơn bộ nhớ Mỗi phần như vậy gọi là một overlay Khi thực hiện chương trình, overlay thứ nhất được nạp vào bộ nhớ để thực hiên Khi kết thúc overlay này sẽ nạp tiếp overlay thứ hai, cứ tiếp tục như vậy cho đến overlay cuối cùng

Kỹ thuật này được gọi là kỹ thuật overlay

Nhận xét: Kỹ thuật overlay đáp ứng được yêu cầu đặt ra Nhưng do mỗi máy có kích thước bộ nhớ khác nhau, do đó kích thứơc của mỗi overlay phụ thuộc rất nhiều vào mỗi máy cụ thể Việc này gây phức tạp cho người lập trình

2) Không gian địa chỉ vật lý và không gian địa chỉ ảo:

Các địa chỉ trong chương trình nguồn là các địa chỉ tượng trưng Khi được nạp vào bộ nhớ vật lý, các địa chỉ tượng trưng phải trải qua các phép biến đổi để chuyển thành địa chỉ vật lý trong bộ nhớ vật lý CPU chỉ hiểu được địa chỉ vật lý, nên nó chỉ thực hiện được chương trình khi chương trình được chuyển vào các ô nhớ vật lý Cùng một chương trình, nhưng ở mỗi thời điểm nạp khác nhau thì vùng địa chỉ vật lý mà chương trình được nạp vào là khác nhau

Tóm lại:

- Không gian địa chỉ vật lý (physical address space): Mỗi ô nhớ trong

bộ nhớ vật lý (còn gọi là bộ nhớ thực) có một địa chỉ vật lý Toàn bộ các địa chỉ vật lý của các ô nhớ vật lý tạo nên không gian địa chỉ vật lý Kích thước không gian địa chỉ vật lý phụ thuộc vào bộ

nhớ thực

Ngày đăng: 18/11/2015, 00:03

TỪ KHÓA LIÊN QUAN

w