1) Ngăn xếp mà hình ảnh này đề cập đến là gì?
stack dùng để phân bổ biến cục bộ và khung gọi chức năng (bao gồm các thông số như tham số chức năng, nơi trả về sau khi hàm đã gọi, v.v.).
2) Phân đoạn ánh xạ bộ nhớ là tham chiếu đến ánh xạ tệp là gì?
Memory mapping segment giữ các thư viện được liên kết. Nó cũng là nơi mà các cuộc gọi mmap
được phân bổ. Nói chung, một tập tin ánh xạ bộ nhớ chỉ đơn giản là một vùng bộ nhớ được hỗ trợ bởi một tập tin.
3) Heap phải làm gì với quy trình. Là heap chỉ được xử lý trong một quá trình hoặc là một cái gì đó heap duy trì bởi hạt nhân hệ điều hành và sau đó không gian bộ nhớ được phân bổ bởi malloc (sử dụng heap) khi bao giờ một ứng dụng không gian người dùng gọi này?
heap là quy trình cụ thể và được quản lý bởi chính quy trình, tuy nhiên phải yêu cầu bộ nhớ từ hệ điều hành bắt đầu (và khi cần). Bạn là chính xác, đây là nơi thường được phân bổ malloc
cuộc gọi. Tuy nhiên, hầu hết các triển khai malloc
đều sử dụng số mmap
để yêu cầu khối bộ nhớ, do đó, thực sự ít phân biệt giữa phân đoạn heap và bộ nhớ ánh xạ. Thực sự, heap có thể được coi là một phần của phân đoạn bộ nhớ được ánh xạ.
4) Điều này có nghĩa là tại một thời điểm chỉ có một chương trình chạy trong bộ nhớ chiếm toàn bộ 4 GB RAM?
Không, đó có nghĩa là số lượng nhớ địa chỉ sẵn cho các chương trình được giới hạn đến 4 GB RAM, những gì đang thực sự chứa trong bộ nhớ tại bất kỳ thời điểm nào là phụ thuộc vào cách hệ điều hành phân bổ bộ nhớ vật lý, và nằm ngoài phạm vi của câu hỏi này.
5) Có phải nó đề cập đến việc ngẫu nhiên chồng trong một quy trình hay nó đề cập đến thứ gì đó còn lại sau khi đếm không gian của tất cả các quy trình?
Tôi chưa bao giờ thấy bất kỳ điều gì gợi ý 4gb không gian "cản trở" hiệu quả của các chiến lược cấp phát bộ nhớ được hệ điều hành sử dụng. Ngoài ra, như các ghi chú @Jason, các vị trí của ngăn xếp, phân đoạn bộ nhớ được ánh xạ và đống được phân ngẫu nhiên "để ngăn chặn các khai thác bảo mật có thể dự đoán được, hoặc ít nhất làm cho chúng khó hơn rất nhiều so với mọi quá trình mà hệ điều hành quản lý chính xác cùng một vị trí bộ nhớ ảo. " Để cụ thể, hệ điều hành sẽ ngẫu nhiên các địa chỉ ảo cho ngăn xếp, vùng được ánh xạ bộ nhớ và vùng heap. Trên ghi chú đó, mọi thứ mà quy trình nhìn thấy là virtual address, sau đó được ánh xạ tới địa chỉ thực trong bộ nhớ, tùy thuộc vào vị trí của trang cụ thể. Bạn có thể tìm thấy thêm thông tin về ánh xạ giữa các địa chỉ ảo và địa chỉ vật lý here.
wikipedia article về phân trang là điểm khởi đầu tốt để tìm hiểu cách hệ điều hành quản lý bộ nhớ giữa các quy trình và là tài nguyên tốt để đọc để trả lời câu hỏi 4 và 5. Tóm lại, bộ nhớ được cấp phát cho các trang , và các trang này hoặc tồn tại trong bộ nhớ chính, hoặc đã được "phân trang" ra đĩa. Khi một địa chỉ bộ nhớ được yêu cầu bởi một tiến trình, nó sẽ chuyển trang từ đĩa sang bộ nhớ chính, thay thế một trang khác nếu cần. Có nhiều chiến lược thay thế trang khác nhau được sử dụng và tôi giới thiệu cho bạn bài viết để tìm hiểu thêm về những lợi thế và bất lợi của mỗi bài viết.
Đó là rất nhiều câu hỏi. –
thực sự nó đã được một tuần và tôi đã không thể hiểu bài viết này thats lý do tại sao tôi đăng ngay cả khi bạn có thể trả lời một phần sẽ giúp một số người khác sẽ trả lời một phần khác và như vậy –