Bộ nhớ ảo – Wikipedia tiếng Việt

Related Articles

Chương trình máy tính tưởng rằng nó có một dải dài những địa chỉ liên tục trong bộ nhớ ; nhưng trong trong thực tiễn 1 số ít phần đang được sử dụng nằm rải rác trong RAM, còn những phần trong thời điểm tạm thời không dùng đến được tàng trữ trong một file trên đĩa cứng .

Trong tin học, bộ nhớ ảo là một kĩ thuật quản lý bộ nhớ được thực hiện bởi phần mềm và phần cứng. Nó sẽ liên kết địa chỉ ô nhớ được dùng bởi phần mềm, gọi là địa chỉ ảo, tới địa chỉ vật lý trong bộ nhớ máy tính. Bộ nhớ chính được các tác vụ coi như là những khoảng trống có địa chỉ liên tiếp hoặc tập hợp những vùng liên tiếp. Hệ điều hành quản lý các ô địa chỉ ảo và sự phân vùng từ ổ nhớ thực đến ổ nhớ ảo. Phần cứng phụ trách xử lý địa chỉ nằm trong CPU, thường được gọi tên là MMU (đơn vị quản lý bộ nhớ), sẽ tự động chuyển địa chỉ ảo sang địa chỉ vật lý. Phần mềm nằm trong hệ điều hành có thể tạo ra những vùng địa chỉ ảo nằm mở rộng khả năng lưu trữ vật lý của bộ nhớ và từ đó chương trình sẽ có nhiều bộ nhớ hơn thực tế máy tính có.

Lợi ích quan trọng nhất của bộ nhớ ảo là đảm nhiệm giùm các ứng dụng quản lý vùng bộ nhớ được chia sẻ, tăng độ an toàn cho các vùng nhớ và giúp chương trình sử dụng nhiều bộ nhớ nhiều hơn bộ nhớ vật lý mà phần cứng máy tính có, dựa trên kĩ thuật phân trang

Bộ nhớ ảo khiến cho việc lập trình ứng dụng thuận tiện hơn bởi chúng làm ẩn đi sự phân mảnh bộ nhớ vật lý, bằng cách ủy thác cho kernel hệ điều hành sự quản trị phân cấp bộ nhớ ( vô hiệu việc chương trình máy tính tự giải quyết và xử lý việc sử dụng chồng ô nhớ ). Mỗi khi ứng dụng sử dụng khoảng trống bộ nhớ được chỉ định bởi ứng dụng, bộ nhớ ảo sẽ ngăn ngừa việc phân bổ lại ô nhớ hoặc cho truy vấn ô nhớ có địa chỉ ảo tương ứng .

Sự ảo hóa bộ nhớ có thể được xem như là sự tổng hợp hóa của khái niệm bộ nhớ ảo

Bộ nhớ ảo là một phần không hề thiếu của một kiến trúc máy tính tân tiến, việc sử dụng cần sự tương hỗ của phần cứng, thường thì dưới hình thức của đơn vị chức năng quản trị bộ nhớ được tích hợp trong CPU. Mặc dù không thiết yếu, nhưng giả lập hoặc những máy ảo hoàn toàn có thể được sử dụng để tương hỗ việc tiến hành sử dụng bộ nhớ ảo. Do đó, những hệ quản lý và điều hành cũ, như những mạng lưới hệ thống những năm 1960, và những máy tính ( PC ) của đầu cho tới giữa những năm 1980 s sẽ không có tính năng bộ nhớ ảo, những ngoại lệ gồm có :. Atlas supervisor cho Atlas. MCP cho Burrrough B5000. Multics cho GE 645. Hệ điều hành quản lý Time Sharing cho RCA Model 67. hệ quản lý và điều hành cho Apple Lisa là 1 ví dụ cho hệ điều hành quản lý PC của những năm 80 mà có bộ nhớ ảo. Trong những năm 1960 tới 70, bộ nhớ máy tính rất đắt. Sự Open của bộ nhớ ảo tạo điều kiện kèm theo cho những chương trình với nhu yếu bộ nhớ lớn để chạy trên những máy tính có bộ nhớ thực nhỏ hơn. Những ngân sách tiết kiệm chi phí được đã tạo được động lực để tổng thể hệ quản lý và điều hành sử dụng bộ nhớ ảo. Khả năng sử dụng bộ nhớ ảo của máy tính đã tạo thêm 1 mức độ bảo mật thông tin và đáng an toàn và đáng tin cậy, dẫn đến việc bộ nhớ ảo ngày càng “ hot “ trên thị trường. Hầu hết những hệ quản lý tân tiến có tương hỗ bộ nhớ ảo đều chạy hoặc thực thi những giải quyết và xử lý của mình ở 1 khoảng trống địa chỉ riêng không liên quan gì đến nhau của mình. Vì đó mà từng chương trình có năng lực truy vấn bộ nhớ ảo riêng. Tuy nhiên, có những hệ quản lý và điều hành cũ ( như OS / VS1 và OS / VS2 SVS ) và những ví dụ văn minh hơn ( như IBM ) là hệ quản lý khoảng trống địa chỉ duy nhất mà trong đó toàn bộ những quy trình giải quyết và xử lý được triển khai trong 1 khoảng trống địa chỉ duy nhất, Hệ thống nhúng và những mạng lưới hệ thống có tính năng đặc biệt quan trọng nhu yếu thời hạn giải quyết và xử lý rất nhanh thường chọn không sử dụng bộ nhớ ảo, mạng lưới hệ thống có bộ nhớ ảo thường gây ra những lỗi không mong ước trong quá tình chạy I / O. Điều này xảy ra vì mạng lưới hệ thống nhúng thường giảm thiểu ngân sách phần cứng bằng cách chạy những tác vụ trên bằng chương trình ( 1 kĩ thuật gọi là bit-banging ) thay vì phần cứng .

Vào những năm thập niên bốn mươi, năm mươi thế kỉ 20, toàn bộ những ứng dụng lớn cần phải có những Logic trong việc quản trị những thiết bị tàng trữ cấp 1 và 2, như thể giải pháp Overlaying. Bộ nhớ ảo đã được ra mắt không những làm lan rộng ra bộ nhớ cấp 1, mà còn giúp những lập trình viên thuận tiện trong việc sử dụng. Để đồng ý cho việc chạy đa chương ( multiprogramming ) và đa nhiệm ( multitasking ), nhiều mạng lưới hệ thống tiên phong đã chia bộ nhớ chạy nhiều chương trình mà không cần bộ nhớ ảo, ví dụ như PDP-10 via registers Bản mẫu tiên phong của bộ nhớ ảo được lần tiên phong tăng trưởng bởi nhà vật lý người Đức Fritz-Rudolf Güntsch tại Technische Universität Berlin vào năm 1956 trong bài luận án tiến sỹ của ông, Logical Design of a Digital Computer with Multiple Asynchronous Rotating Drums and Automatic High Speed Memory Operation ; diễn đạt về một cỗ máy với 6 “ 100 khối ” lõi bộ nhớ và một vùng địa chỉ với 1000 “ 100 khối ”, với phần cứng tự động hóa di dời những khối giữa bộ nhớ cấp 1 và bộ nhớ drum cấp 2. Paging đã được thiết lập tại Đại học Manchester như thể một cách để lan rộng ra bộ nhớ thao tác của máy tính Atlas bằng cách hợp 16 ngàn lõi bộ nhớ cấp 1 với 96 ngàn bộ nhớ drum cấp 2. Máy tính Atlas được sử dụng tiên phong vào năm 1962 nhưng nó đã được chạy những nguyên bản của paging vào năm 1959. Vào năm 1961, Tổng công ty Burroughs đã độc lập công bố phiên bản máy tính thương mại tiên phong với bộ nhớ ảo, B5000, với những segments ( hơn paging ). Trước khi bộ nhớ ảo được tạo trong hệ điều hành chính, đã Open nhiều lỗi về địa chỉ bộ nhớ. Bộ dịch địa chỉ động ( Dynamic Address Translation ) có giá rất mắc và rất khó để thiết lập phần cứng, những lần thao tác tiên phong đã làm chậm vận tốc truy vấn bộ nhớ từ từ. Đã có những lo ngại về mạng lưới hệ thống mới với những thuật toán mở để sử dụng tàng trữ cấp 2 sẽ không hiệu suất cao hơn những thuật toán trước đó. Vào năm 1969, những cuộc tranh luận về bộ nhớ ảo phiên bản thương mại chấm hết, một đội nghiên cứu và điều tra IBM của David Sayre đã chỉ ra rằng mạng lưới hệ thống bộ nhớ ảo của họ hoạt động giải trí không thay đổi tốt hơn những mạng lưới hệ thống điều khiển và tinh chỉnh bằng tay khác. Phiên bản máy tính mini tiên phong đã sử dụng bộ nhớ ảo mới với tên là Norwegian NORD-1. Trong suốt những năm 70 thế kỉ 20, nhiều máy tính mini khác cũng trình làng bộ nhớ ảo, đáng quan tâm nhất là đời VAX chạy dưới nền VMS. Bộ nhớ ảo được công bố với kiến trúc x86 dưới chính sách bảo vệ của Bộ vi giải quyết và xử lý Intel 80286. Intel 80386 đã ra mắt công nghệ tiên tiến paging dưới nhiều lớp, mở năng lực hoạt động giải trí những trang lỗi. Tuy nhiên, việc tải những ký tự rất tốn kém, từ đó những nhà phong cách thiết kế Hệ Điều Hành trọn vẹn tin yêu trong việc sử dụng paging tốt hơn một sự phối hợp giữa Paging và Segmentation .

Bộ nhớ ảo phân trang[sửa|sửa mã nguồn]

” Bảng trang ” được dùng để biên dịch địa chỉ ảo, là địa chỉ mà những ứng dụng thấy được, sang địa chỉ thực, địa chỉ mà phần cứng sử dụng để thực thi lệnh ; thiết bị phần cứng điều khiển và tinh chỉnh quy trình biên dịch đặc biệt quan trọng này được gọi là “ đơn vị chức năng quản trị vùng nhớ ” ( Memory Management Unit – MMU ). Mỗi cổng vào của ” trang bảng ” có một “ lá cờ ” cho biết “ trang ” đang được xét có nằm trong vùng nhớ thật ( không ảo ) hay không. Nếu đang nằm trong vùng nhớ thật, cổng vào của ” trang bảng ” sẽ chứa địa chỉ của vùng nhớ thật đó nơi mà trang đó được lưu. Khi mối quan hệ giữa một “ trang ” và thiết bị phần cứng được tạo nên, nếu cổng vào tương ứng trên ” trang bảng ” bộc lộ rằng “ trang ” đó không nằm trong một vùng nhớ thật, thiết bị phần cứng sẽ gây ra một hiện tượng kỳ lạ gọi là “ vô hiệu trang lỗi ”, tạo nên thành phần “ giám sát trang ” của hệ quản lý .Hệ thống hoàn toàn có thể có một ” trang bảng ” cho cả mạng lưới hệ thống, hoặc nhiều ” trang bảng ” riêng không liên quan gì đến nhau cho mỗi ứng dụng và phân vùng, hoặc một cây ” trang bảng ” cho những phân vùng lớn hơn hoặc là những sự phối hợp giữa những loại trên. Trong trường hợp chỉ có một ” trang bảng “, nhiều chương trình cùng chạy đồng thời sẽ sử dụng những phần khác nhau trong độ dài của địa chỉ ảo. Nếu có nhiều ” trang bảng ” hoặc trang vùng, sẽ sống sót nhiều địa chỉ ảo và nhiều chương trình chạy đồng thời với những ” trang bảng ” chuyển hướng tới những địa chỉ thật khác nhau .

Giám sát trang[sửa|sửa mã nguồn]

Đây là thành phần của hệ điều hành quản lý tạo ra và quản trị những ” trang bảng “. Nếu hiện tượng kỳ lạ “ vô hiệu trang lỗi ” Open từ phần cứng, mạng lưới hệ thống giám sát trang sẽ truy vấn vào ổ tàng trữ phụ, trả về một trang có lưu địa chỉ ảo nơi trang lỗi Open, sau đó sẽ update ” trang bảng ” để phản chiếu vị trí vật lý của bộ nhớ ảo và báo bộ biên dịch thực thi lại nhu yếu .Khi mà mọi vùng nhớ vật lý được sử dụng, “ giám sát trang ” bắt buộc phải giải phóng một trang trong bộ nhớ chính để lưu giữ một trang sửa chữa thay thế. Bộ giám sát sử dụng một trong những thuật toán thay thế sửa chữa trang như “ ít sử dụng nhất ” để quyết định hành động trang bị vô hiệu .

Hệ quản lý có những khu vực bộ nhớ được ghim ( không khi nào trao đổi để tàng trữ thứ cấp ). Các thuật ngữ khác được dùng như trang khóa, trang cố định và thắt chặt, hoặc trang liên kết. Ví dụ, chính sách ngắt dựa trên một mảng của những con trỏ chỉ đến lệnh giải quyết và xử lý, ví dụ điển hình như I / O hoàn thành xong và lỗi trang. Nếu những trang có chứa những con trỏ hoặc những mã mà họ gọi là trang, ” gián đoạn – giải quyết và xử lý ” sẽ trở nên phức tạp hơn và tốn thời hạn, đặc biệt quan trọng là trong trường hợp bị gián đoạn do lỗi trang. Do đó, một số ít phần của cấu trúc ” bảng trang ” là không có trang. Một số trang hoàn toàn có thể được gắn trong một thời hạn ngắn, những trang khác hoàn toàn có thể được gắn trong một thời hạn dài, và những trang còn lại hoàn toàn có thể được gắn vĩnh viễn. Ví dụ : Mã giám sát trang và trình điều khiển và tinh chỉnh cho những thiết bị tàng trữ thứ cấp trong những trang phải được gắn vĩnh viễn, nếu không phân trang thậm chí còn sẽ không thao tác vì không có những mã thiết yếu .Các thành phần theo thời hạn hoàn toàn có thể được gắn để tránh sự chậm trễ của những biến trang. Bộ đệm tài liệu được truy vấn trực tiếp bởi những thiết bị ngoại vi mà sử dụng truy vấn bộ nhớ trực tiếp hoặc kênh I / O phải nằm trong những trang ghim khi những lệnh quản lý và vận hành I / O đang được thực thi. Bởi vì những thiết bị ấy và những “ xe ” ( Tiếng Anh : bus ) đến nơi được gắn vào để tìm bộ đệm tài liệu nằm tại những địa chỉ bộ nhớ vật lý ; bất kể những “ xe ” có một đơn vị chức năng quản trị bộ nhớ cho I / O, quy đổi không hề dừng lại nếu một lỗi trang xảy ra và sau đó khởi động lại khi có lỗi trang đã được giải quyết và xử lý .

Trong các hệ thống điều hành của IBM dành cho System/370 và hệ thống kế thừa, thuật ngữ này là “cố định”, và các trang như vậy có thể được cố định dài hạn, hoặc có thể là cố định ngắn hạn, hoặc có thể không cố định. Cấu trúc điều khiển hệ thống này thường cố định dài hạn (đo trong thời gian của đồng hồ treo tường, tức là, thời gian đo bằng giây, chứ không phải là thời gian đo bằng phần trăm một giây) trong khi bộ đệm I/O thường là cố định ngắn hạn (được đo chục mili giây). Thật vậy, hệ điều hành có một nơi đặc biệt cho “sửa chữa nhanh” những bộ đệm dữ liệu được cố định ngắn hạn (sửa chữa được thực hiện mà không đến hướng dẫn Giám sát hàm gọi tốn thời gian).

Multics sử dụng thuật ngữ ” có dây “. OpenVMS và Windows chỉ những trang trong thời điểm tạm thời “ không có trang ” ( như so với bộ đệm I / O ) là ” bị khóa “, và chỉ đơn thuần là ” nonpageable ” cho những cái trọn vẹn không có trang .

Trong OS / VS1 và những hệ điều hành quản lý tựa như, 1 số ít bộ phận của mạng lưới hệ thống bộ nhớ được quản trị theo chính sách ” ảo-thực “, còn gọi là ” V = R “. Trong chính sách này, mỗi địa chỉ ảo tương ứng với cùng địa chỉ thực. Chế độ này được sử dụng cho những chính sách ngắt, cho giám sát trang và bảng trang trong mạng lưới hệ thống cũ, và cho những chương trình sử dụng mạng lưới hệ thống quản trị I / O không đúng tiêu chuẩn. Ví dụ, IBM z / OS có 3 chính sách ( ảo-ảo, ảo-thực và ảo – cố định và thắt chặt ) .

Khi trang và “ cắp ” trang ( Tiếng Anh : page stealing ) đều xảy ra, một yếu tố gọi là ” Thrashing ” hoàn toàn có thể xảy ra, trong đó những máy tính dành một lượng lớn thời hạn không thích hợp khi chuyển trang đến và đi từ một nơi sao lưu, do đó làm chậm việc làm có ích. Một bộ trách nhiệm là một bộ tối thiểu của những trang mà phải ở trong bộ nhớ để nó triển khai những tiến trình hữu dụng. Thrashing xảy ra khi không có đủ bộ nhớ để tàng trữ những bộ thao tác của toàn bộ những chương trình đang hoạt động giải trí. Thêm bộ nhớ thực là phản hồi đơn thuần nhất, nhưng việc nâng cấp cải tiến phong cách thiết kế ứng dụng, lập chương trình, và sử dụng bộ nhớ cũng hoàn toàn có thể giúp. Một giải pháp khác là để giảm số lượng những trách nhiệm đang hoạt động giải trí trên mạng lưới hệ thống. Điều này làm giảm nhu yếu về bộ nhớ thực bằng cách trao đổi những thiết lập hàng loạt hoạt động giải trí của một hoặc nhiều quá trình .

Bộ nhớ ảo phân đoạn[sửa|sửa mã nguồn]

Một số mạng lưới hệ thống, ví dụ điển hình như Burroughs B5500, sử dụng phân đoạn thay vì phân trang, chia những địa chỉ ảo thành những đoạn có độ dài biến. Một địa chỉ ảo gồm có một chỉ số đoạn và một phần bù ( segment + offset ). Intel 80286 tương hỗ một dự án Bất Động Sản tương tự như, nhưng nó hiếm khi được sử dụng. Phân đoạn và phân trang cũng hoàn toàn có thể dung chung với nhau bằng cách chia mỗi đoạn thành những trang ; những mạng lưới hệ thống sử dụng cấu trúc bố nhớ như vậy, ví dụ điển hình như Multics và IBM System / 38, thường là phân trang ưu tiên, phân đoạn và phân phối bảo mật thông tin bộ nhớ .Trong Intel 80386 và những bộ giải quyết và xử lý IA-32 sau này, những đoạn nằm trong một khoảng chừng địa chỉ tuyến tính đã được phân trang. Các đoạn hoàn toàn có thể được chuyển dời vào trong hay ra ngoài khoảng chừng đó ; những trang hoàn toàn có thể ” phân trang ” ra hay vào trong bộ nhớ chính, cung ứng 2 mức độ của bộ nhớ ảo ; 1 số ít ít hệ quản lý sử dụng như vậy thay cho việc chỉ dùng phân trang. Những giải phát cho thiết bị x86 ảo hóa phi phần cứng phối hợp phân trang và phân đoạn do tại việc phân trang cho x86 cần có hai miền bảo vệ, trong khi một VMM / hệ điều hành khách / chương trình khách cần đến ba miền. Sự độc lạ giữa hệ thốn phân trang và phân đoạn thống không chỉ là về sự phân loại bộ nhớ ; phân đoạn hoàn toàn có thể nhìn thấy được trong tiến trình của người dùng, như một phần của quy mô bộ nhớ. Vì vậy, thay vì để bộ nhớ trông như một khoảng chừng không to lớn, nó được cấu trúc lại và phân tách thành nhiều khoảng trống nhỏ hơn .Sự độc lạ này có những hậu quả quan trọng ; một phân đoạn không phải là một trang với chiều dài biến hoặc một cách để tăng độ dài địa chỉ. Phân đoạn hoàn toàn có thể phân phối một quy mô bộ nhớ đơn mà trong nó không có sự phân biệt giữa bộ nhớ giải quyết và xử lý và tập tin mạng lưới hệ thống gồm có duy nhất một list những đoạn ( tập tin ) được ánh xạ vào khoảng trống địa chỉĐiều này không giống như những chính sách được cung ứng bởi những phép gọi như mmap và MapViewOfFile của Win32, chính do những con trỏ trong tập tin không hoạt động giải trí khi ánh xạ những tập tin trong một khoảng chừng tùy ý. Trong Multics, một tập tin ( hay một đoạn trong tập tin gồm nhiều đoạn ) được ánh xạ vào một đoạn trong địa chỉ, cho nên vì thế những tập tin luôn được ánh xa tại một ranh giới phân đoạn. Phần link của một tập tin hoàn toàn có thể chứa con trỏ mà một truy vấn để truyền tài liệu từ con trỏ tới thanh ghi hoặc tạo một tham chiếu gián tiếp qua nó sẽ tạo ra một cái bẫy. Một con trỏ chưa được xử lý chứa một hướng dẫn đến tên đoạn mà con trỏ trỏ tới và một vị trí trong phân đoạn ; bộ giải quyết và xử lý cho cái bẫy ánh xạ phân đoạn vào địa chỉ, đặt chỉ số phân đoạn vào con trỏ, biến hóa thẻ trong con trỏ sao cho nó không còn tạo ra bẫy và trả về đoạn mã đã gây ra bẫy, tái thi hành những hướng dẫn đã gây ra bẫy. Điều này vô hiệu trọn vẹn sự thiết yếu của một link và hoạt động giải trí khi những tiến trình ánh xạ đến cùng một tập tin vào những khoảng chừng khác nhau trong địa chỉ của chúng .

Sự hoán đổi vùng địa chỉ[sửa|sửa mã nguồn]

Một số hệ điều hành cung cấp cho việc hoán đổi hàng loạt vùng địa chỉ, ngoài những với bất kể công cụ họ có để phân trang và phân đoạn. Khi điều này xảy ra, hệ điều hành quản lý viết những trang và phân đoạn hiện đang ở trong bộ nhớ chính để thực thi việc hoán đổi tập tin. Ở sự trao đổi vào, hệ điều hành quản lý sẽ đọc lại những tài liệu từ những tập tin hoán đổi nhưng nó không tự động hóa đọc lại những trang mà được phân trang tại thời gian hoạt động giải trí hoán đổi đang diễn ra .

Nhiều bộ nhớ ảo của IBM, từ OS/VS2 Release 2 tới z/OS, cung cấp cho khả năng đánh dấu một vùng địa chỉ không thể hoán đổi được; làm như vậy để không phải đánh dấu trang nào vào vùng địa chỉ. Điều này có thể được thực hiện trong suốt thời gian của một công việc bằng cách nhập tên của một chương trình chính đủ điều kiện trong bảng đặc tính của chương trình với một lá cờ không hoán đổi được. Thêm vào đó, mã đặc quyền có thể tạm thời làm một vùng địa chỉ không thể hoán đổi được với một lệnh gọi chương trình giám sát SYSEVENT; một vài thay đổi nhất định trong thuộc tính của các vùng địa chỉ đòi hỏi hệ điều hành phải hoán đổi chúng ra rồi lại hoán đổi chúng vào trong lại bằng cách sử dụng SYSEVENT TRANSWAP.

  • John L. Hennessy, David A. Patterson, Computer Architecture, A Quantitative Approach (ISBN 1-55860-724-2)
  • Virtual Memory Secrets by Murali

Liên kết ngoài[sửa|sửa mã nguồn]

Bài này phần lớn được lấy dữ liệu từ Free On-line Dictionary of Computing, đã có giấy phép GFDL.

More on this topic

Comments

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Advertismentspot_img

Popular stories