QUẢN LÝ BỘ NHỚ TRONG WINDOWS 32bit

Một phần của tài liệu Giáo trình môn Hệ Điều Hành PTIT (Trang 130)

Họ Windows 32 như XP, Windows 7 32 bit cho phép tiến trình sử dụng bộ nhớ ảo với không gian nhớ 4GB, trong đó 2GB đầu được dùng riêng cho tiến trình và 2GB sau được dùng chung cho hệ thống.

Bộ nhớ ảo được thực hiện bằng kỹ thuật nạp trang theo nhu cầu và đổi trang. Kích thước trang nhớ bằng 4KB và bảng trang được tổ chức thành hai mức để sử dụng triệt để sự hỗ trợ của vi xử lý Intel x86. Cách tổ chức bảng trang và ánh xạ địa chỉ hoàn toàn giống như mô tả trong phần phân trang của Pentium ở phần trên.

Để tăng hiệu quả nạp trang, Windows XP sử dụng kỹ thuật nạp trang theo cụm. Khi xảy ra thiếu trang, thay vì chỉ nạp trang bị thiếu, hệ điều hành nạp cả cụm, bao gồm một số trang nằm sau trang bị thiếu.

Hệ điều hành kiểm soát số lượng trang mà tiến trình có trong bộ nhớ bằng cách gán cho mỗi tiến trình sốlượng trang tối đatối thiểu. Tiến trình được đảm bảo có số lượng khung không nhỏ hơn số lượng tối thiểu nhưng không được lớn hơn số lượng tối đa. Số lượng khung tối đa và tối thiểu đối với tiến trình ứng dụng thường được đặt tương ứng là 345 và 50.

Trong quá trình thực hiện, số lượng trang tối đa và tối thiểu cấp cho tiến trình được thay đổi tùy vào tình trạng bộ nhớ trống. Hệ điều hành lưu danh sách khung trống, đồng thời sử

dụng một ngưỡng an toàn. Khi số khung trống ít hơn ngưỡng này, hệ điều hành xem xét các tiến trình đang thực hiện. Tiến trình có số trang lớn hơn số lượng tối thiểu sẽ bị giảm số trang cho tới khi đạt tới số lượng tối thiểu của mình.

Tùy vào vi xử lý, Windows XP sử dụng thuật toán đổi trang khác nhau. Khi thực hiện trên hệ thống Intel x86 với một CPU, Windows XP sử dụng thuật toán đồng hồ để chọn trang bị đổi. Trong trường hợp khác, hệ điều hành sử dụng thuật toán FIFO.

3.12. CÂU HỎI VÀ BÀI TẬP CHƯƠNG

1. Hãy nêu điểm khác nhau giữa địa chỉ logic và địa chỉ vật lý. Địa chỉ do CPU sinh ra là địa chỉ logic hay vật lý ?

2. Lợi ích của việc chọn kích thước trang nhớ bằng lũy thừa của 2 là gì?

3. Giả sử không gian nhớ logic của tiến trình gồm 512 trang, mỗi trang có kích thước 1024 B. Bộ nhớ vật lý gồm 64 khung. Hãy cho biết địa chỉ logic dài bao nhiêu bit, trong đó phần số thứ tự trang và phần độ dịch trong trang có độ dài lần lượt là bao nhiêu bit. Hãy cho biết địa chỉ vật lý dài bao nhiêu bit.

4. Một đoạn có thể thuộc về hai tiến trình được không ? Nếu được thì thông tin gì là chung trong cơ chế ánh xạ địa chỉ của hai tiến trình có chung một đoạn ?

5. Cho hai đoạn chương trình sau

char a[128][128];//kiểu char có kích thước 1B Đoạn 1: for( i = 0; i < 128; i++) for( j = 0; j < 128; j++) a[i][j] = 0; Đoạn 2: for(i = 0; i < 128; i++) for(j = 0; j < 128; j++) a[j][i] = 0;

Tiến trình chỉ được cấp 127 khung, mỗi khung có kích thước 128B.

Câu hỏi: đoạn chương trình nào gây đổi trang nhiều hơn? Giải thích tại sao?

6. Cho hệ thống phân trang, kích thước trang = 1024B. Bảng phân trang hiện thời như sau:

3 0 2 4 1 0 1

Hãy tính địa chỉ vật lý cho các địa chỉ lô gic sau: a. 1020

b. 2060

7. Tiến trình được cấp 4 khung. Các trang nhớ của tiến trình được truy cập theo thứ tự PTIT

sau: 0 1 3 2 4 6 1 7 3 6 1 5 6 1.

Hãy xác định quá trình nạp và đổi trang khi sử dụng các chiến lược đổi trang OPT, FIFO, LRU, CLOCK.

CHƯƠNG 4: HỆ THỐNG FILE

Trong các thành phần của hệ điều hành, hệ thống file (file system) là phần mà người dùng thường xuyên tiếp xúc và làm việc một cách trực quan nhất. Tất cả các thao tác chạy chương trình, lưu trữ thông tin ra đĩa, đọc thông tin từ đĩa vào, sao chép, dịch chuyển thông tin đều liên quan đến hệ thống file. Để tổ chức lưu trữ thông tin trên bộ nhớ ngoài, hệ điều hành có thể sử dụng đồng thời một hoặc nhiều hệ thống file khác nhau trong cùng một hệ thống máy tính.

Hệ thống file gồm có các file, các thư mục và cấu trúc dữ liệu đặc thù cho hệ thống file đó, cũng như phần mềm (mô đun của hệ điệu hành) quản lý các file và cấu trúc dữ liệu đó.

Có thể nhìn hệ thống file theo hai cách. Từ phía người dùng, hệ thống file bao gồm tập hợp các file chứa dữ liệu hoặc chương trình và hệ thống thư mục cho phép tổ chức và lưu trữ thông tin về các file đó. Người dùng chỉ quan tâm tới các vấn đề như: cấu trúc thư mục ra sao, giớí hạn kích thước file là bao nhiêu, quy tắc đặt tên file thế nào, có thể thực hiện các thao tác gì với file.v.v. Đây chính là biểu hiện bên ngoài của hệ thống file. Trong khi đó, từ phía hệ điều hành, với vai trò quản lý file và thư mục, các vấn đề được quan tâm là phương pháp ánh xạ file lên các đĩa, tổ chức bên trong của file và thư mục, cấu trúc dữ liệu dùng cho biểu diễn file. Nói cách khác, đối với hệ điều hành, hệ thống file được nhìn từ bên trong.

Trong chương này, hệ thống file sẽ được trình bầy lần lượt theo hai cách nhìn nói trên. Trước hết, các vấn đề liên quan đến file và thư mục theo cách nhìn của người dùng sẽ được xem xét. Sau đó, chúng ta sẽ xem xét các phương pháp tổ chức bên trong hệ thống file: cách ánh xạ file lên các đĩa, tổ chức dữ liệu bên cho thư mục. Cuối cùng, các vấn đề liên quan tới độ tin cậy và bảo mật cho hệ thống file sẽ được đề cập.

Bên cạnh cái khái niệm về hệ thống file, trong chương cũng đề cập tới các khái niệm về vào/ra trong hệ thống máy tính và phân hệ quản lý vào/ra của hệ điều hành. Phần lớn các nội dung về vào/ra được tập trung cho vào/ra với đĩa cứng, nơi lưu trữ chủ yếu của hệ thống file. 4.1. KHÁI NIỆM FILE

4.1.1. File là gì ?

Bộ nhớ ngoài bao gồm các thiết bị khác nhau như đĩa từ, băng từ, đĩa quang, đĩa quang từ, thẻ nhớ dùng cổng USB… Bộ nhớ ngoài có nhiều ưu điểm như dung lượng lớn, giá thành rẻ hơn bộ nhớ trong, nội dung lưu trữ không bị mất ngay cả khi không được cấp điện.

Việc truy cập bộ nhớ ngoài đòi hỏi thông tin chi tiết về đặc điểm của từng loại thiết bị và cách tổ chức lưu trữ dữ liệu trên đó. Chẳng hạn để đọc và ghi lên đĩa cứng cần biết các cồng tương ứng của bộ điều khiển đĩa, cũng như số lượng đầu đọc, số rãnh trên đĩa.v.v. của đĩa đang sử dụng. Việc cần biết những chi tiết này gây khó khăn cho thao tác lưu trữ thông tin trên bộ nhớ ngoài.

Để thuận tiện, giúp người dùng không phải quan tâm đến chi tiết thiết bị nhớ, hệ điều hành tránh những chi tiết cụ thể đó bằng cách trừu tượng hoá các thiết bị nhớ ngoài. Thông tin

lưu trữ trên bộ nhớ ngoài được nhìn một cách thống nhất dưới dạng file. Mỗi file là một phần thông tin lưu trên bộ nhớ, được đặt tên để dễ xác định và phân biệt với các thông tin khác. File là khái niệm lôgic, không phụ thuộc vào thiết bị lưu trữ cụ thể. Hệ điều hành sẽ đảm nhiệm việc ánh xạ lên các thiết bị lưu trữ.

File được định nghĩa như tập hợp các thông tin liên quan đến nhau được đặt tên và được lưu trữ trên bộ nhớ ngoài.

Có thể thấy, định nghĩa này rất tổng quát. Trên thực tế, file có thể chứa chương trình (mã nguồn hoặc mã chạy được), hoặc dữ liệu. Dữ liệu trong file có thể có dạng số, dạng ký tự hay dạng nhị phân, có thể có cấu trúc, có thể không. Nói một cách chung nhất, file là tập hợp các bit, các byte, các dòng văn bản hay các bản ghi. ý nghĩa các đơn vị thành phần này của file hoàn toàn do người tạo ra file và người sử dụng file quy định. Việc định nghĩa file một cách tổng quát, do vậy, là hợp lý và cần thiết.

Nhờ có khái niệm file, người dùng có thể quy định cấu trúc, ý nghĩa, cách sử dụng cho thông tin cần lưu trữ và đặt tên cho tập các thông tin này. Người sử dụng có thể không quan tâm tới việc file được lưu trữ cụ thể ở đâu, ra sao.

4.1.2. Thuộc tính của file

Ngoài thông tin và dữ liệu được lưu trữ trong file, hệ điều hành còn gắn cho file các thông tin có tác dụng mô tả. Các thông tin này gọi là thuộc tính (attribute) của file. Các thuộc tính cụ thể có thể thay đổi ở những hệ điều hành khác nhau. Dưới đây liệt kê một số thuộc tính file có thể gặp trong những hệ điều hành thông dụng:

- Tên file: Là thuộc tính rất quan trọng và thường được người dùng sử dụng khi truy cập file

- Kiểu file: Một số hệ điều hành phân biệt các kiểu file khác nhau. Ví dụ, trong Linux, file có thể là file thông thường chứa dữ liệu hay là file chứa thông tin về thư mục và được dùng cho mục đích quản lý file.

- Kích thước file: Kích thước hiện thời của file. Kích thước này thường tính bằng byte nhưng cũng có thể tính theo đơn vị từ (word) hay bản ghi (record). Kích thước file có thể bao gồm kích thước thực và kích thước mà file chiếm trên đĩa. Do đặc điểm lưu trữ dữ liệu trên đĩa, trong đó mỗi file chiếm một số nguyên các khối hay cung nên kịch thước thực và kích thước mà file được cấp phát trên đĩa có thể khác nhau.

- Người tạo file, người sở hữu file: Chứa tên hoặc số định danh của người đã tạo ra và người đang có quyền sở hữu file. Người tạo file và người sở hữu có thể không trùng nhau. Ví dụ, trong Windows NT và các hệ điều hành sau trong cùng họ này, quản trị hệ thống có thể chiếm quyền sở hữu file từ người tạo file trong trường hợp cần thiết.

- Quyền truy cập file: Chứa thông tin về việc ai có quyền thực hiện đọc, thay đổi nội dung, xoá file.v.v.

- Thời gian tạo file, sửa file, truy cập file lần cuối: Bao gồm thời gian, ngày tháng tạo, ssửa, truy cập lần cuối. Các thông tin này có thể cần thiết cho việc quản lý sao lưu, bảo mật, đồng bộ nội dung file.

- Vị trí file: Cho biết dữ liệu của file được lưu trữ ở đâu trên bộ nhớ ngoài. Thông tin này cần thiết cho hệ điều hành khi truy cập tới file.

Có hai cách lưu trữ thuộc tính file trên đĩa. Theo cách thứ nhất, thuộc tính file được lưu trữ trong khoản mục ứng với file trong thư mục (sẽ đề cập tới trong phần về thư mục). Theo cách thứ hai, thuộc tính được lưu trữ luôn cùng với dữ liệu file, chẳng hạn trong phần tiêu đề (header) nằm ở đầu file.

Để đọc và thay đổi các thông tin về thuộc tính file, hệ điều hành thường cung cấp các lời gọi hệ thống tương ứng. Ví dụ, MS-DOS cho phép đọc và thay đổi thuộc tính file bằng hàm 43h của ngắt 21h, thời gian sửa file lần cuối có thể thay đổi bằng hàm 57h của ngắt 21h.

Đặt tên cho file

Trong số các thuộc tính, tên file là thuộc tính rất quan trọng cho phép xác định file, và là thông tin mà người dùng thường sử dụng nhất khi làm việc với file. Tên tồn tại cùng với file và cho phép truy cập tới file khi cần. Trong quá trình tồn tại của file, tên có thể thay đổi nếu cần thiết. Nói chung không có quy tắc đặt tên file thống nhất cho các hệ điều hành. DOS chỉ hỗ trợ tên file độ dài 8 ký tự cộng 3 ký tự phần mở rộng, không phân biệt chữ hoa với chữ thường (nghĩa là file VIDU.TXT với file vídu.txt được coi là một), trong khi LINUX lại hỗ trợ tên file tới 256 ký tự, có phân biệt chữ hoa với chữ thường.

Các lựa chọn khi quy định việc đặt tên cho file bao gồm độ dài cho phép của tên file, các ký tự có thể dùng trong tên file, có phân biệt chữ hoa và chữ thường không, có sử dụng phần mở rộng không. Ví dụ quy tắc đặt tên cho hệ thống file của MS-DOS phiên bản cũ (FAT), Windows NT (FAT, NTFS) và Linux (EXT3) được cho trong bảng sau:

Bảng 4.1: Quy tắc đặt tên file của một số hệ điều hành Hệ điều

hành

Độ dài tối đa Phân biệt chữ hoa, chữ thường

Cho phép sử dụng dấu cách

Các ký tự cấm

MS-DOS 8 cho tên file 3 cho mở rộng

không không Bắt đầu bằng chữ cái hoặc

số

Không được chứa các ký tự / \ [ ] : ; | = , ^ ? @ Windows NT, Windows 7 FAT32 255 ký tự cho cả tên file và đường dẫn

không có Bắt đầu bằng chữ cái hoặc

số

Không được chứa các ký tự / \ [] : ; | = , ^ ? @

Windows NT, 7, 8 NTFS

255 không có Không được chứa các ký tự

/ \ < > * | : Linux

(EXT3)

256 Có có (nếu tên file

chứa trong ngoặc kép)

Không được chứa các ký tự ! @ # $ % ^ & * ( ) [ ] { } ‘ “ / \ : ; < > `

Rất nhiều hệ điều hành hỗ trợ việc chia tên file thành hai phần, cách nhau bởi dấu chấm (.). Phần sau dấu chấm là phần mở rộng và chứa một số thông tin bổ sung về file (thường là kiểu file). Ví dụ, phần mở rộng của tên file trong FAT phiên bản cũ có độ dài tối đa là 3 và cho biết kiểu file như progrm.c là file chương trình nguồn trên C. UNIX và LINUX hỗ trợ phần mở rộng có số lượng và độ dài tuỳ ý. Tên file có thể có nhiều hơn một phần mở rộng, chẳng hạn myfile.tar.z. Việc gán phần mở rộng cho tên file có thể có ích trong một số trường hợp. Ví dụ, một số chương trình dịch có thể phân biệt file chương trình nguồn với các file khác thông qua phần mở rộng.

4.1.3. Cấu trúc file

File là tập hợp các thông tin do người tạo file định ra. Các thông tin này có thể rất khác nhau: văn bản, mã nguồn chương trình, chương trình đã được dịch và liên kết, hình ảnh từ máy quét, các bản ghi của cơ sở dữ liệu.v.v. Cấu trúc của file do vậy cũng rất khác nhau và phụ thuộc vào thông tin chứa trong file. File văn bản sẽ gồm các ký tự xếp liền nhau trong khi file cơ sở dữ liệu là các bản ghi có cấu trúc nhất định.

Vậy hệ điều hành có cần biết và hỗ trợ các kiểu cấu trúc file hay không?

Việc hỗ trợ cấu trúc file ở mức hệ điều hành có một số ưu điểm sau. Thứ nhất, các thao tác với file sẽ dễ dàng hơn đối với người lập trình ứng dụng. Thứ hai, hệ điều hành có thể kiểm soát được các thao tác với file. Việc kiểm soát được các thao tác với file cho phép hạn chế một số lỗi. Ví dụ, khi ta vô tình in một file chương trình (đã được dịch và lưu trữ dưới dạng nhị phân) ra máy in, hệ điều hành sẽ phát hiện ra rằng file kiểu nhị phân không hỗ trợ in ấn và ngăn chặn việc in ra như vậy.

Tuy nhiên, hỗ trợ cấu trúc file ở mức hệ điều hành có các hạn chế là làm tăng kích thước hệ thống. Có bao nhiêu kiểu cấu trúc file được hệ điều hành hỗ trợ thì phải có bấy nhiêu đoạn chương trình được thêm vào hệ điều hành để thao tác với những kiểu cấu trúc này. Một số lượng lớn cấu trúc file sẽ khiến kích thước hệ điều hành tăng lên đáng kể.

Nhược điểm thứ hai quan trọng hơn là tính mềm dẻo của hệ điều hành bị giảm. Các chương trình chỉ có thể sử dụng các file có cấu trúc do hệ điều hành định sẵn. Việc tạo ra một file có cấu trúc khác với các cấu trúc mà hệ thống hỗ trợ sẽ bị ngăn cản. Ta hãy xem xét ví dụ sau. Giả sử hệ điều hành chỉ hỗ trợ các file văn bản và file chương trình. Do yêu cầu bảo mật, người dùng muốn tạo ra một file văn bản đã được mã hoá. Sau khi mã hoá, file văn bản sẽ có

Một phần của tài liệu Giáo trình môn Hệ Điều Hành PTIT (Trang 130)

Tải bản đầy đủ (PDF)

(183 trang)