Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 19 kết quả

Đề tài: Bộ nhớ cache dùng để làm gì, con trỏ có lưu được địa chỉ cache không?

  1. #1
    Ngày gia nhập
    07 2011
    Bài viết
    18

    Mặc định Bộ nhớ cache dùng để làm gì, con trỏ có lưu được địa chỉ cache không?

    Con trỏ trong C lưu lại giá trị của ô nhớ của bộ nhớ.Theo em được biết thì bộ nhớ có nhiều loại,có cả bộ nhớ cache và bộ nhớ ram.Theo em học thì CPU 32bit có 32 đường bus dữ liệu nên đánh địa chỉ rộng đến 4gb.Có 2 câu hỏi em muốn hỏi là cái các địa chỉ con trỏ nhận giá trị nó là địa chỉ từng ô nhớ trong RAM,theo từng offset và segment nào đó.Vậy bộ nhớ cache dùng để làm gì,con trỏ có lưu được địa chỉ cache không và hệ điều hành quản lý bộ nhớ từng chương trình bằng cách nào(ví mỗi chương trình có thể xài đến 4GB của bộ nhớ)?

    p/s:em không rõ lắm,nhưng có lẽ vì không gian địa chỉ rộng đến 4gb nên nếu lập trình asm trên thanh ghi 32bit cũng ít quan tâm đến các thanh ghi segment thì phải ?

  2. #2
    Ngày gia nhập
    08 2008
    Bài viết
    8

    bác nói cache của hệ điều hành? cái này lúc trước học môn hđh có giải thích. đại loại là có vài thuật toán quản lý bộ nhớ cấp phát cho từng chương trình. rất phức tạp.

  3. #3
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Nếu lập trình trong dos (real mode, 16 bit ) thì bạn chỉ sử dụng được 1mb bộ nhớ, đó lần vùng đầu tiên trên bộ nhớ vật lý của bạn. Muốn sử dụng hết 32 bit địa chỉ trong dos thì bạn phải switch từ real mode lên protected mode, việc này khá là phức tạp.

    Trong win thì bạn khỏi lo những chuyện ấy vì win đã làm việc đó từ khi nó khởi động lên rồi. Nếu bạn viết 1 chương trình exe bình thường trên win thì nó sẽ được chạy trong chế độ bộ nhớ ảo. Những thanh ghi chọn đoạn mà bạn học trong lý thuyết bạn sẽ ko bao giờ đụng gì tới nó được đâu. Windows đã chọn cho bạn và nó ko cho bạn quyền đụng tới những thanh ghi đó. Địa chỉ mà process của bạn được truy cập là địa chỉ ảo. Mỗi process được sử dụng tối đa 4gb địa chỉ ảo trong win 32 bit. Được cấp tối đa chứ ko có nghĩa là mới vô mỗi process được ngay 4gb. Địa chỉ ảo sẽ được ánh xạ thành địa chỉ vật lý trên bộ nhớ thật, kích thước ô nhớ nhỏ nhất có thể ánh xạ được là 1 page, kích thước 4kb ( cái này mình ko nhớ rõ ), và muốn ánh xạ kích thước lớn hơn thì kích thước đó phải là bội số của 1 page. Khi bộ nhớ vật lý ko còn đủ nữa nó sẽ được mở rộng xuống ổ cứng và 1 phần trên ổ cứng sẽ làm việc như là RAM. Bởi thế windows luôn tạo ra file PageFile.sys, nó là vùng bộ nhớ vật lý mở rộng xuống ổ cứng. Khi đó bộ nhớ vật lý chỉ thực sự hết nếu như ổ cứng ko còn chỗ cho pagefile nữa thôi.

    Chương trình chạy trong chế độ bộ nhớ ảo sẽ ko phân đoạn, nó sẽ dùng bộ nhớ phẳng ( như 1 mảng char ) từ 0->4gb. Con trỏ mà bạn dùng được trong chương trình là con trỏ 32 bit và nó trỏ tới địa chỉ ảo. Nó ko trỏ được vô địa chỉ vật lý và càng ko thể trỏ vô cache của cpu. Cache là một bộ nhớ "lưu hành nội bộ" của cpu, nó có cấu trúc ko giống như bộ nhớ mà bạn gắn vô máy đâu. Và cache chỉ có một mình cpu được xài mà thôi.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  4. #4
    Ngày gia nhập
    04 2008
    Nơi ở
    Bốn bề là nhà
    Bài viết
    703

    Về bộ nhớ cache bạn có thể search trên mạng. Còn bộ nhớ của từng tiến trình có thể tham khảo bài này

  5. #5
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mình nghĩ ko nên đưa bài về PE header, sẽ làm chủ topic rối. Vả lại mình thấy nó ko liên quan nhiều đến cơ chế quản lý bộ nhớ ảo, paging của win. Topic của langman nó về cấu trúc file exe và cơ chế map section trên bộ nhớ ảo chứ ko nói nhiều về bộ nhớ ảo và phân trang.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  6. #6
    Ngày gia nhập
    04 2008
    Nơi ở
    Bốn bề là nhà
    Bài viết
    703

    Mặc định Bộ nhớ cache dùng để làm gì, con trỏ có lưu được địa chỉ cache không?

    BTW, anh Mèo cho hỏi: PageFile có giới hạn dung lượng không? Hay là khi thiếu bộ nhớ mà dung lượng ổ cứng vẫn còn thì nó sẽ tạo thêm?
    P/S: Sorry, vì nó không phải cái chủ topic cần.

  7. #7
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Page là 1 trang bộ nhớ, nó có kích thước bao nhiêu thì mình ko nhớ rõ ( hình như là 4kb ). Có những page có kích thước lớn hơn nhưng phải là bội chẵn của page nhỏ nhất. Bộ nhớ ảo gồm nhiều page khác nhau ghép liên tiếp với nhau. Khi ko còn chỗ cho page trên bộ nhớ vật lý nữa thì page sẽ được mở rộng xuống ổ cứng.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  8. #8
    Ngày gia nhập
    08 2011
    Nơi ở
    /pentest
    Bài viết
    44

    Giờ cái gì chả có cache, nhưng nếu hỏi cache dùng để làm gì thì tóm gọn thế này cache được coi như một vùng nhớ trung gian giữa vùng nhơ chính và bộ vi xử lý, tất cả những gì liên quan đế cái đang được xử lý thì thông thường được lưu vào cache (nghĩa là gọi một thể tất cả các module liên quan luôn) các module tách rời cái đang được sử lý thì sẽ gọi sau(được lưu trong bộ nhớ chính). Với các loại thiết bị khác nhau thì có các cách định nghĩa khác nhau, từ đó dẫn đến cách cài đặt khác nhưng vẫn đảm bảo nguyên tắc chung là vùng nhớ đệm(trung gian), mục đính chính là để tăng hiệu năng xử lý mà thôi.

    còn con trỏ có được lưu trong cache không thì theo t thì hoàn toàn có khả năng vì nó cũng chỉ là một vùng nhớ và được bộ vi xử lý đánh địa chỉ.
    We are oft to blame in this...'Tis too much proved.
    - That with devotion's visage and pious action we do sugar o'er the devil himself.

  9. #9
    Ngày gia nhập
    04 2008
    Nơi ở
    Bốn bề là nhà
    Bài viết
    703

    còn con trỏ có được lưu trong cache không thì theo t thì hoàn toàn có khả năng vì nó cũng chỉ là một vùng nhớ và được bộ vi xử lý đánh địa chỉ.
    Không có chuyện này đâu bạn ah.

  10. #10
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Trích dẫn Nguyên bản được gửi bởi meterpreter Xem bài viết
    Giờ cái gì chả có cache, nhưng nếu hỏi cache dùng để làm gì thì tóm gọn thế này cache được coi như một vùng nhớ trung gian giữa vùng nhơ chính và bộ vi xử lý, tất cả những gì liên quan đế cái đang được xử lý thì thông thường được lưu vào cache (nghĩa là gọi một thể tất cả các module liên quan luôn) các module tách rời cái đang được sử lý thì sẽ gọi sau(được lưu trong bộ nhớ chính). Với các loại thiết bị khác nhau thì có các cách định nghĩa khác nhau, từ đó dẫn đến cách cài đặt khác nhưng vẫn đảm bảo nguyên tắc chung là vùng nhớ đệm(trung gian), mục đính chính là để tăng hiệu năng xử lý mà thôi.

    còn con trỏ có được lưu trong cache không thì theo t thì hoàn toàn có khả năng vì nó cũng chỉ là một vùng nhớ và được bộ vi xử lý đánh địa chỉ.
    Cache mà bạn nói tới là cache logic của hệ điều hành. Nhưng cái cache mà chủ topic nói tới có lẽ là internal cache của cpu, hàng dùng riêng của cpu. Mà ngay cả cache logic của hệ điều hành cũng khó mà động được đến từ mức user. Con trỏ trỏ đi đâu thì cũng quanh quẩn trong không gian nhớ ảo của process mà thôi.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

Các đề tài tương tự

  1. Vấn đề ghi lại lượt xem trang web khi sử dụng cache trong ASP
    Gửi bởi bestforyou2009 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 3
    Bài viết cuối: 12-11-2013, 01:27 PM
  2. Connection giữa objectDB cache và ASP.NET
    Gửi bởi zekun92 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 5
    Bài viết cuối: 14-06-2013, 06:17 PM
  3. Làm sao để lấy đc giá trị trong Cache bằng javacript
    Gửi bởi chuuuduuu trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 1
    Bài viết cuối: 01-04-2012, 04:49 PM
  4. Database Vấn đề Cache dữ liệu khi lập trình Database qua mạng
    Gửi bởi lytrongkhoa trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 29-08-2011, 07:36 AM
  5. Cache trong lập trình C# là như thế nào?
    Gửi bởi manhluc88 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 14-12-2010, 10:36 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn