Câu hỏi “Ngữ cảnh phân bổ” là gì?


Tôi là sinh viên và tôi phải nghiên cứu về phát hiện rò rỉ bộ nhớ. Trong nhiều bài báo họ đang nói về ngữ cảnh phân bổ. Tôi không biết nó có nghĩa là gì. Tôi không thể tìm thấy bất kỳ định nghĩa nào ngữ cảnh phân bổ (hoặc bản dịch, tôi đến từ Đức).

Ví dụ, một trích dẫn từ một bài báo (Phát hiện rò rỉ bộ nhớ thông qua Introspective Dynamic Mô hình hành vi sử dụng Machine Learning):

Ý tưởng chính đằng sau việc sử dụng máy học là một vật thể bị rò rỉ có thể nhận thấy bằng cách quan sát thời gian sống của các vật tương tự khác. Đó là, một vật thể có thể được coi là bị rò rỉ khi nó tích lũy một mức độ cao của sự không ổn định mà không được quan sát từ các vật thể khác được cho là tương tự, tức là, các vật thể có cùng ngữ cảnh phân bổ.

Hoặc là:

Để giải quyết vấn đề này, công trình này lấy cảm hứng từ nghiên cứu trước đây về dự đoán tuổi thọ của đối tượng [4, 20]. Theo các công trình này, tuổi thọ của một đối tượng tương quan chặt chẽ với ngữ cảnh phân bổ của nó. Kể từ khi sự kiên định của một vật thể bị giới hạn bởi sự tồn tại của nó, sự bất ổn đối tượng được tương quan quá mức với ngữ cảnh phân bổ.

Ai đó có thể giải thích cho tôi dễ dàng nhất có thể không?

CHỈNH SỬA:

Trừu tượng:

Bài viết này mở rộng phát hiện rò rỉ bộ nhớ dựa trên độ chính xác   bằng cách trình bày khung máy dựa trên học tập. Các   khung được đề xuất dựa trên ý tưởng rằng đối tượng stal-   eness có thể được tận dụng tốt hơn liên quan đến sự giống nhau của ob-   jects; tức là, một đối tượng có nhiều khả năng bị rò rỉ hơn nếu nó hiển thị   đáng kể độ cứng cao không quan sát thấy từ tương tự khác   đối tượng với cùng ngữ cảnh phân bổ.   Một phần trung tâm của khung được đề xuất là mô hình hóa   đối tượng heap. Để kết thúc này, khuôn khổ quan sát   độ cứng của các vật thể trong quá trình chạy đại diện của một ap-   plication. Từ các dữ liệu quan sát được, khung công tác tạo ra   ví dụ đào tạo, cũng chứa các trường hợp giả thuyết-   rò rỉ ical. Qua học máy, khung được đề xuất   thay thế các biến vị ngữ đáng tin cậy do người dùng dễ bị lỗi   được sử dụng trong nghiên cứu trước đây với dự đoán dựa trên mô hình.   Khung đã được thử nghiệm bằng cách sử dụng cả tổng hợp và thực tế   ví dụ thế giới. Đánh giá với công việc rò rỉ tổng hợp-   tải các điểm chuẩn SPEC2006 cho thấy rằng đề xuất   phương pháp đạt được độ chính xác tối ưu cho phép bởi độ cứng-   phát hiện rò rỉ dựa trên. Hơn nữa, bằng cách kết hợp    ngữ cảnh phân bổ vào mô hình, phương pháp đề xuất đạt được   độ chính xác cao hơn so với khả năng có độ cứng đối tượng một mình.   Đánh giá với rò rỉ bộ nhớ trong thế giới thực chứng tỏ rằng   phương pháp được đề xuất là eective để phát hiện trước đó   lỗi được chuyển với độ chính xác cao.


9
2018-05-30 21:08


gốc


Tôi không biết bất kỳ định nghĩa cụ thể nào của cụm từ "bối cảnh phân bổ". Ví dụ: cụm từ không xuất hiện ở bất kỳ đâu trong tiêu chuẩn C. Tôi nghĩ bạn sẽ phải phỏng đoán ý nghĩa của nó từ ahem bối cảnh trong đó tác giả sử dụng cụm từ. Giấy có định nghĩa thuật ngữ không? - Keith Thompson
Vâng, tôi đã cố gắng tìm hiểu từ bối cảnh bối cảnh phân bổ có thể có nghĩa là gì .. nhưng không thành công .. tác giả không định nghĩa thuật ngữ ..: / Tôi đã thêm phần tóm tắt, trong đó thuật ngữ xuất hiện lần đầu tiên .. có lẽ nó sẽ giúp .. - m.w.
Nó có thể là một thuật ngữ được thiết lập trong lĩnh vực phát hiện rò rỉ bộ nhớ cụ thể. Đào qua các tài liệu tham khảo có thể hữu ích. - molbdnilo
Tiếc là không có. Tôi đã tìm kiếm tất cả các tham chiếu cho ngữ cảnh phân bổ của từ khóa ' - m.w.


Các câu trả lời:


Tôi nhận được phản hồi từ một trong các tác giả. Định nghĩa như sau:

ngữ cảnh phân bổ

Nó đề cập đến nội dung ngăn xếp cuộc gọi tại thời điểm phân bổ.   Ví dụ: nếu trang web phân bổ được chứa trong hàm foo và   hàm được gọi từ chính (trong khi thực thi), ngữ cảnh phân bổ   cho trang web phân bổ là (chính, chính: gọi @ foo, foo: malloc (...)).


7
2018-05-31 20:03



Nghe có vẻ khá giống với những gì tôi viết lol. +1 - Mehrdad


Xem xét C như vậy thí dụ:

#include <stdlib.h>

void function_which_allocates(void) {
    /* allocate an array of 45 floats */
    float *a = malloc(sizeof(float) * 45);

    /* additional code making use of 'a' */

    /* return to main, having forgotten to free the memory we malloc'd */
}

int main(void) {
    function_which_allocates();

    /* the pointer 'a' no longer exists, and therefore cannot be freed,
     but the memory is still allocated. a leak has occurred. */
}

Ngữ cảnh phân bổ của a là function_which_allocates.

Vì vậy, bối cảnh phân bổ của một biến là phạm vi của biến đó.

Nếu bạn nằm ngoài phạm vi, bạn không thể giải phóng bộ nhớ đó, dẫn đến rò rỉ bộ nhớ.


5
2018-05-30 21:22



Lời giải thích của bạn không có ý nghĩa. Ngữ cảnh phân bổ là một thuộc tính của khối bộ nhớ được cấp phát, trong khi phạm vi là thuộc tính của biến trỏ đến nó. Hai là trực giao. - Mehrdad


Tôi tin nó chỉ có nghĩa là "bối cảnh mà nó được phân bổ".
Nói cách khác, bạn có thể coi đó là "trạng thái quan sát của chương trình khi phân bổ xảy ra" - tức là, ngăn xếp cuộc gọi, biến cục bộ, v.v.


0
2018-05-30 21:14



Tôi đồng ý rằng "bối cảnh", đặc biệt là khi nói về kiến ​​trúc máy tính, có nghĩa là rất thường xuyên trạng thái của chương trình, nội dung của sổ đăng ký, bộ nhớ, vv Nhưng tôi nghĩ rằng nó không phải là trường hợp trong văn bản được trích dẫn bởi OP. Câu đầu tiên nói "đối tượng có cùng ngữ cảnh phân bổ". Với định nghĩa ngữ cảnh của bạn, điều đó là không thể. Hai (hoặc nhiều) đối tượng trong thời điểm phân bổ của chúng không thể có cùng ngữ cảnh (trạng thái của chương trình). Bởi vì khi lần đầu tiên được phân bổ, trạng thái đã thay đổi. - Adam Stelmaszczyk
@AdamStelmaszczyk: Lưu ý rằng tôi đã nói "có thể quan sát được Việc phân bổ bộ nhớ thường được coi là một hoạt động thuần túy (tức là tác dụng phụ), bởi vì thường khó quan sát các tác dụng phụ của nó, và bạn thường không muốn. Chỉ có một trạng thái quan sát khác khác sau khi phân bổ là biến phụ trỏ đến khối được phân bổ, trong đó, với mục đích "lấy mẫu", chúng ta có thể bỏ qua ở đây, bởi vì tại đó nó không được sử dụng và không liên quan đến phần còn lại của chương trình. - Mehrdad