« Home « Kết quả tìm kiếm

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


Tóm tắt Xem thử

- ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ.
- 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Ớ.
- LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN.
- Ngành: Công nghệ thông tin.
- Chuyên ngành: Kỹ thuật phần mềm Mã số: 60480103.
- Các nội dung và kết quả nghiên cứu trong luận văn này là hoàn toàn trung thực..
- Tôi xin chân thành cảm ơn các thầy cô giáo trong Khoa Công nghệ Thông tin, Trƣờng Đại học Công nghệ – Đại học Quốc gia Hà Nội đã tận tình giảng dạy trang bị cho tôi kiến thức, giúp tôi hoàn thành luận văn..
- Nguyễn Trƣờng Thắng, Phó Viện trƣởng, Viện Công nghệ Thông Tin – Viện Hàn lâm Khoa học và Công nghệ Việt Nam.
- Giới thiệu phân tích chƣơng trình tĩnh.
- Điểm mạnh và điểm yếu của phân tích chƣơng trình tĩnh.
- Các kỹ thuật phân tích chƣơng trình tĩnh.
- Nền tảng phân tích ngữ nghĩa của chƣơng trình.
- Các kỹ thuật tăng tốc độ hội tụ widening/narrowing.
- Phân tích con trỏ.
- Phân tích con trỏ liên thủ tục.
- Phân tích hình dạng bộ nhớ heap.
- Kỹ thuật phân tích.
- Biên dịch chƣơng trình với Memcheck.
- Phân tích heap của chƣơng trình trong Valgrind.
- Rò rỉ bộ nhớ.
- Sử dụng bộ nhớ không đƣợc khởi tạo.
- Lỗi sử dụng không đúng giữa malloc/ new/ new[] với free/ delete/ delete.
- Thực nghiệm trên chƣơng trình có mã nguồn lớn.
- Kết quả ví dụ rò rỉ bộ nhớ trong Memcheck.
- Kết quả ví dụ sử dụng bộ nhớ chƣa đƣợc khởi tạo trong Memcheck sử dụng –track-origins.
- Kết quả ví dụ sử dụng bộ nhớ chƣa đƣợc khởi tạo trong Memcheck không sử dụng –track-origins.
- Kết quả ví dụ lỗi sử dụng không đúng giữa malloc/new/new[] với free/delete/delete.
- 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.
- 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) [1].
- 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.
- 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 [6].
- 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