Quản lý bộ nhớ và tập tin
Số trang: 34
Loại file: pdf
Dung lượng: 463.30 KB
Lượt xem: 13
Lượt tải: 0
Xem trước 4 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
QUẢN LÝ BỘ NHỚ VÀ TẬP TINMột tiến trình thông thường được hiểu là một chương trình máy tính đang được thi hành. Quá trình thực thi các tiến trình gắn liền với việc quản lý và sử dụng các tài nguyên trong máy tính, trong đó đáng kể nhất là quản lý bộ nhớ chính và xử lý hệ thống lưu trữ phụ. Trong các hệ thống máy tính hiện đại, bộ nhớ chính là trung tâm của các thao tác, xử lý. Bộ nhớ chính có thể xem như một mảng các phần tử kiểu BYTE hoặc WORD,...
Nội dung trích xuất từ tài liệu:
Quản lý bộ nhớ và tập tin QUẢN LÝ BỘ NHỚ VÀ TẬP TINMỞ ĐẦUMột tiến trình thông thường được hiểu là một chương trình máy tính đang được thi hành.Quá trình thực thi các tiến trình gắn liền với việc quản lý và sử dụng các tài nguyên trongmáy tính, trong đó đáng kể nhất là quản lý bộ nhớ chính và xử lý hệ thống lưu trữ phụ.Trong các hệ thống máy tính hiện đại, bộ nhớ chính là trung tâm của các thao tác, xử lý.Bộ nhớ chính có thể xem như một mảng các phần tử kiểu BYTE hoặc WORD, được xácđịnh thông qua địa chỉ của chúng. Mỗi chương trình được ánh xạ vào bộ nhớ chính trướckhi được thi hành và được hệ điều hành quản lý thông qua tập lệnh xác định.Trong suốt quá trình thi hành, các chương trình với dữ liệu truy xuất của chúng luôn đượcđặt trong bộ nhớ chính. Nhưng bộ nhớ chính thì khá nhỏ để có thể lưu giữ mọi dữ liệu vàchương trình, ngoài ra dữ liệu sẽ mất khi không còn được cung cấp năng lượng. Do đó,cần phải sử dụng hệ thống lưu trữ phụ.Chương này trình bày các vấn đề trên qua hai phần sau : Quản lý bộ nhớ trình bày cáchthức Microsoft® Win32® API quản lý các vùng nhớ thông qua các hàm cấp phát, sửdụng, và giải phóng chúng; cách thức thao tác trên địa chỉ vùng nhớ ảo và các trang nhớ.Xử lý tập tin trình bày các hàm thực hiện các thao tác tạo, xử lý và hủy tập tin, cũng nhưtìm hiểu một số vấn đề liên quan đến tập tin.QUẢN LÝ BỘ NHỚMỗi tiến trình trong Win32 đều có một vùng địa chỉ ảo 32-bit cho phép định vị vùng nhớđến 4 GB. Địa chỉ ảo này không phải là vùng nhớ vật lý thực tế. Windows sử dụng mộtcấu trúc dữ liệu ánh xạ để chuyển đổi địa chỉ ảo thành vùng nhớ vật lý.Vùng địa chỉ ảo của mỗi tiến trình thường lớn hơn rất nhiều so với vùng nhớ vật lý thựcsự trên máy tính. Do đó, để tăng vùng nhớ cho các tiến trình đang thực hiện, hệ thống sửdụng vùng nhớ trống trên đĩa. Vùng nhớ vật lý và vùng địa chỉ ảo của mỗi tiến trình đượctổ chức thành các trang, phụ thuộc vào họ máy tính. Ví dụ, đối với máy tính họ x86, mỗitrang có kích thước là 4 KB.Để tăng khả năng linh động trong việc quản lý bộ nhớ, hệ thống có thể di chuyển cáctrang từ bộ nhớ chính vào đĩa và ngược lại. Các thao tác này được thực hiện chỉ bởi hệthống, các ứng dụng chỉ việc gọi các hàm cấp phát và sử dụng vùng địa chỉ ảo.Thư viện C chuẩn hỗ trợ các hàm cấp phát và giải phóng vùng nhớ như malloc, free, …,hoặc trong C++ là new, delete, …. Thế nhưng trong Windows 16 bits, các hàm này cóthể gây lỗi hệ thống. Trong Win32, ta có thể sử dụng chúng an toàn do hệ thống chỉ quảnlý bộ nhớ qua các trang vật lý mà không ảnh hưởng đến địa chỉ ảo. Hơn nữa, Win32 cũngkhông phân biệt giữa con trỏ gần và con trỏ xa. Mặc dù vậy, các hàm trên không thể hiệnđủ các khả năng hỗ trợ của việc quản lý bộ nhớ trong Win32. Chúng ta sẽ làm quen vớicác hàm Global và Local - sử dụng từ Windows 16 bits, và các hàm quản lý vùng nhớ ảokhác.Các hàm Global và LocalCác hàm toàn cục (global) và địa phương (local) là các hàm heap Windows 16 bits. Tuynhiên, quản lý bộ nhớ trong Win32 cũng hỗ trợ các hàm này để có thể sử dụng cácchương trình, hoặc source code của các chương trình viết cho Windows 16 bits. Các hàmtoàn cục và địa phương xử lý chậm và ít chức năng hơn các hàm quản lý bộ nhớ mới thiếtkế cho Win32. Chúng ta sẽ làm quen các hàm mới ở phần sau.Để cấp phát vùng nhớ cho một tiến trình, ta có thể sử dụng hàm GlobalAlloc hoặcLocalAlloc. Việc quản lý vùng nhớ trong Win32 không phân biệt hàm toàn cục hay cụcbộ như trong Windows 16 bits. Do đó, không có sự phân biệt giữa các đối tượng vùngnhớ được cấp phát bởi hai hàm trên. Thêm vào đó, việc chuyển mô hình đoạn vùng nhớ16 bits sang vùng địa chỉ ảo 32 bits thực hiện một số hàm toàn cục và địa phương với cácchọn lựa (options) không cần thiết hoặc vô nghĩa. Ví dụ, vì cả cấp phát toàn cục và địaphương đều trả về địa chỉ ảo 32 bits, do đó không xác định dạng con trỏ gần hoặc xatrong các hàm trên.Hai hàm này cấp phát một vùng nhớ theo kích thước nBytes trong heap. Có prototypenhư sau :HGLOBAL GlobalAlloc(UINT uFlags, DWORD nBytes);HLOCAL LocalAlloc(UINT uFlags, UINT nBytes);Trong đó uFlags xác định cách thức cấp phát vùng nhớ. Ta có bảng sau : Toàn cục Địa phương Ý nghĩa GMEM_FIXED LMEM_FIXED Cấp phát vùng nhớ cố định. Giá trị trả về là một con trỏ. GMEM_MOVEABLE LMEM_MOVEABLE Cấp phát vùng nhớ không cố định. Trong Win32, khối nhớ không bao giờ di chuyển trong vùng nhớ vật lý, nhưng trong heap mặc định. Hàm trả về handle của một đối tượng bộ nhớ. Ta dùng hàm GlobalLock hoặc LocalLock để chuyển handle sang con trỏ vùng nhớ. GMEM_ZEROINIT ...
Nội dung trích xuất từ tài liệu:
Quản lý bộ nhớ và tập tin QUẢN LÝ BỘ NHỚ VÀ TẬP TINMỞ ĐẦUMột tiến trình thông thường được hiểu là một chương trình máy tính đang được thi hành.Quá trình thực thi các tiến trình gắn liền với việc quản lý và sử dụng các tài nguyên trongmáy tính, trong đó đáng kể nhất là quản lý bộ nhớ chính và xử lý hệ thống lưu trữ phụ.Trong các hệ thống máy tính hiện đại, bộ nhớ chính là trung tâm của các thao tác, xử lý.Bộ nhớ chính có thể xem như một mảng các phần tử kiểu BYTE hoặc WORD, được xácđịnh thông qua địa chỉ của chúng. Mỗi chương trình được ánh xạ vào bộ nhớ chính trướckhi được thi hành và được hệ điều hành quản lý thông qua tập lệnh xác định.Trong suốt quá trình thi hành, các chương trình với dữ liệu truy xuất của chúng luôn đượcđặt trong bộ nhớ chính. Nhưng bộ nhớ chính thì khá nhỏ để có thể lưu giữ mọi dữ liệu vàchương trình, ngoài ra dữ liệu sẽ mất khi không còn được cung cấp năng lượng. Do đó,cần phải sử dụng hệ thống lưu trữ phụ.Chương này trình bày các vấn đề trên qua hai phần sau : Quản lý bộ nhớ trình bày cáchthức Microsoft® Win32® API quản lý các vùng nhớ thông qua các hàm cấp phát, sửdụng, và giải phóng chúng; cách thức thao tác trên địa chỉ vùng nhớ ảo và các trang nhớ.Xử lý tập tin trình bày các hàm thực hiện các thao tác tạo, xử lý và hủy tập tin, cũng nhưtìm hiểu một số vấn đề liên quan đến tập tin.QUẢN LÝ BỘ NHỚMỗi tiến trình trong Win32 đều có một vùng địa chỉ ảo 32-bit cho phép định vị vùng nhớđến 4 GB. Địa chỉ ảo này không phải là vùng nhớ vật lý thực tế. Windows sử dụng mộtcấu trúc dữ liệu ánh xạ để chuyển đổi địa chỉ ảo thành vùng nhớ vật lý.Vùng địa chỉ ảo của mỗi tiến trình thường lớn hơn rất nhiều so với vùng nhớ vật lý thựcsự trên máy tính. Do đó, để tăng vùng nhớ cho các tiến trình đang thực hiện, hệ thống sửdụng vùng nhớ trống trên đĩa. Vùng nhớ vật lý và vùng địa chỉ ảo của mỗi tiến trình đượctổ chức thành các trang, phụ thuộc vào họ máy tính. Ví dụ, đối với máy tính họ x86, mỗitrang có kích thước là 4 KB.Để tăng khả năng linh động trong việc quản lý bộ nhớ, hệ thống có thể di chuyển cáctrang từ bộ nhớ chính vào đĩa và ngược lại. Các thao tác này được thực hiện chỉ bởi hệthống, các ứng dụng chỉ việc gọi các hàm cấp phát và sử dụng vùng địa chỉ ảo.Thư viện C chuẩn hỗ trợ các hàm cấp phát và giải phóng vùng nhớ như malloc, free, …,hoặc trong C++ là new, delete, …. Thế nhưng trong Windows 16 bits, các hàm này cóthể gây lỗi hệ thống. Trong Win32, ta có thể sử dụng chúng an toàn do hệ thống chỉ quảnlý bộ nhớ qua các trang vật lý mà không ảnh hưởng đến địa chỉ ảo. Hơn nữa, Win32 cũngkhông phân biệt giữa con trỏ gần và con trỏ xa. Mặc dù vậy, các hàm trên không thể hiệnđủ các khả năng hỗ trợ của việc quản lý bộ nhớ trong Win32. Chúng ta sẽ làm quen vớicác hàm Global và Local - sử dụng từ Windows 16 bits, và các hàm quản lý vùng nhớ ảokhác.Các hàm Global và LocalCác hàm toàn cục (global) và địa phương (local) là các hàm heap Windows 16 bits. Tuynhiên, quản lý bộ nhớ trong Win32 cũng hỗ trợ các hàm này để có thể sử dụng cácchương trình, hoặc source code của các chương trình viết cho Windows 16 bits. Các hàmtoàn cục và địa phương xử lý chậm và ít chức năng hơn các hàm quản lý bộ nhớ mới thiếtkế cho Win32. Chúng ta sẽ làm quen các hàm mới ở phần sau.Để cấp phát vùng nhớ cho một tiến trình, ta có thể sử dụng hàm GlobalAlloc hoặcLocalAlloc. Việc quản lý vùng nhớ trong Win32 không phân biệt hàm toàn cục hay cụcbộ như trong Windows 16 bits. Do đó, không có sự phân biệt giữa các đối tượng vùngnhớ được cấp phát bởi hai hàm trên. Thêm vào đó, việc chuyển mô hình đoạn vùng nhớ16 bits sang vùng địa chỉ ảo 32 bits thực hiện một số hàm toàn cục và địa phương với cácchọn lựa (options) không cần thiết hoặc vô nghĩa. Ví dụ, vì cả cấp phát toàn cục và địaphương đều trả về địa chỉ ảo 32 bits, do đó không xác định dạng con trỏ gần hoặc xatrong các hàm trên.Hai hàm này cấp phát một vùng nhớ theo kích thước nBytes trong heap. Có prototypenhư sau :HGLOBAL GlobalAlloc(UINT uFlags, DWORD nBytes);HLOCAL LocalAlloc(UINT uFlags, UINT nBytes);Trong đó uFlags xác định cách thức cấp phát vùng nhớ. Ta có bảng sau : Toàn cục Địa phương Ý nghĩa GMEM_FIXED LMEM_FIXED Cấp phát vùng nhớ cố định. Giá trị trả về là một con trỏ. GMEM_MOVEABLE LMEM_MOVEABLE Cấp phát vùng nhớ không cố định. Trong Win32, khối nhớ không bao giờ di chuyển trong vùng nhớ vật lý, nhưng trong heap mặc định. Hàm trả về handle của một đối tượng bộ nhớ. Ta dùng hàm GlobalLock hoặc LocalLock để chuyển handle sang con trỏ vùng nhớ. GMEM_ZEROINIT ...
Tìm kiếm theo từ khóa liên quan:
Công nghệ thông tin kỹ thuật lập trình quản trị mạng tin học máy tính Quản lý bộ nhớ và tập tinGợi ý tài liệu liên quan:
-
52 trang 430 1 0
-
24 trang 354 1 0
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 314 0 0 -
74 trang 296 0 0
-
96 trang 292 0 0
-
Báo cáo thực tập thực tế: Nghiên cứu và xây dựng website bằng Wordpress
24 trang 289 0 0 -
Đồ án tốt nghiệp: Xây dựng ứng dụng di động android quản lý khách hàng cắt tóc
81 trang 280 0 0 -
EBay - Internet và câu chuyện thần kỳ: Phần 1
143 trang 275 0 0 -
Tài liệu dạy học môn Tin học trong chương trình đào tạo trình độ cao đẳng
348 trang 269 1 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 264 0 0