Kỹ thuật phân tích chương trình tĩnh cho bài toán phân tích hình dạng bộ nhớ Heap

Ngày nay với sự phát triển vượt bậc của công nghệ thông tin, thì phần mềm có vai trò cốt lõi và ngày càng chiếm vị trí quan trọng không những trong công nghệ thông tin mà còn trong đời sống kinh tế xã hội. Vấn đề chất lượng phần mềm (software quality) chắc chắn là mối quan tâm và thách thức đối với xã hội hiện đại ngày càng phụ thuộc vào các dịch vụ do máy tính đem lại này.

Liên quan tới đảm bảo chất lượng phần mềm, khía cạnh quản lý bộ nhớ cũng rất được quan tâm. Quản lý bộ nhớ được chia làm hai giai đoạn chính là phân bổ bộ nhớ theo yêu cầu, và giải phóng khi chương trình không còn sử dụng. Hiện nay, nhiều hệ thống ngôn ngữ lập trình sử dụng cơ chế quản lý bộ nhớ tự động, tiêu biểu như Java và C#. Trong Java, người lập trình không cần phải chú trọng đến phân bổ và giải phóng bộ nhớ. Khi khối bộ nhớ được phân bổ không còn được sử dụng máy ảo Java (Java Virtual Machine) sẽ tự giải phóng bộ nhớ thông qua cơ chế thu dọn rác tự động (Automatic Garbage Collection). Thu gom rác tự động là quá trình kiểm tra bộ nhớ heap, xác định những đối tượng đang được sử dụng và không được sử dụng, và xóa những đối tượng không được sử dụng. Chức năng cơ bản của GC(Garbage Collection) là gồm hai bước trừu tượng (trong thực tế hai pha này có thể đan xen nhau)

  • Phát hiện rác (tìm đối tượng từ đống rác bằng một cách nào đó)
  • Cải tạo rác (Cải tạo lại ô nhớ của đối tượng rác, khi đó chương trình đang chạy có thể sử dụng ô nhớ này).

Tuy nhiên, một số ngôn ngữ lập trình truyền thống, được sử dụng phổ biến trong thực tế như C, C++ thì vấn đề quản lý bộ nhớ vẫn được đặt hoàn toàn vào lập trình viên. Lập trình viên tự động cấp phát bộ nhớ, nhưng khi một khối không còn cần thiết, họ cần phải trả lại cho hệ thống bằng lời gọi hàm hệ thống như free(). Hậu quả là nếu người lập trình quên hoàn trả các vùng đã cấp phát về cho bộ nhớ và lại tiếp tục dùng các lệnh cấp phát, thì càng lúc càng nhiều các phần của bộ nhớ bị chiếm chỗ. Điều này có thể dẫn tới các lỗi liên quan tới bộ nhớ, đặc biệt là khối bộ nhớ khởi tạo tự động bởi con trỏ hay mắc lỗi rò rỉ bộ nhớ (memory leak). Quản lý bộ nhớ là quan trọng và có nhiều khía cạnh nghiên cứu. Các kỹ thuật thu dọn rác là một hƣớng tiếp cận của vấn đề này.

Mục tiêu của luận văn này là tìm hiểu về kỹ thuật phân tích chương trình tĩnh, cập nhật những xu hướng nghiên cứu trong và ngoài nước về lĩnh vực phân tích chương trình tĩnh, và cải tiến những kỹ thuật này. Cụ thể, luận văn tập trung vào hướng tiếp cận là tìm hiểu kỹ thuật phân tích hình dạng bộ nhớ heap của chương trình. Kết quả của kỹ thuật có thể áp dụng trong khâu loại bỏ các đối tượng là rác. Kỹ thuật dựa trên lý thuyết ngữ nghĩa chương trình theo các con trỏ. Lý thuyết giàn, ngữ nghĩa điểm cố định cũng sẽ được sử dụng như nền tảng của kỹ thuật này.

Luận văn có cấu trúc như sau:

  • Chương 1 giới thiệu tổng quan về phân tích chương trình tĩnh. Trong chương này trình bày định nghĩa kỹ thuật phân tích chƣơng trình tĩnh, ứng dụng, điểm mạnh và điểm yếu của kỹ thuật này. Tiếp đó luận văn trình bày một vài kỹ thuật phân tích chương trình tĩnh phổ biến hiện nay, bài toán và kỹ thuật mà luận văn thực hiện tìm hiểu.
  • Chương 2 trình bày nền tảng ngữ nghĩa của một chương trình
  • Chương 3 trình bày về kỹ thuật phân tích hình dạng bộ nhớ heap. Đưa ra các bài toán, cách giải quyết và đánh giá.
  • Chương 4 thực nghiệm với công cụ Valgrind Cuối cùng là phần kết luận và tài liệu tham khảo.

Link tải tài liệu: https://tii.la/IehrV

Lưu ý: Link tải có chứa quảng cáo được rút gọn bằng Shrinkearn.com

Mật khẩu mở tệp PDF: sharetailieu.net

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Mới Nhất

Cùng Chuyên Mục

Đọc Nhiều Nhất