Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

177 45 0
Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN NGỌC KHẢI HỆ THỐNG KIỂU ĐỂ ƯỚC LƯỢNG TĨNH TÀI NGUYÊN SỬ DỤNG CỦA CHƯƠNG TRÌNH GIAO DỊCH LUẬN ÁN TIẾN SĨ NGÀNH CÔNG NGHỆ THÔNG TIN Hà Nội - 2022 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN NGỌC KHẢI HỆ THỐNG KIỂU ĐỂ ƯỚC LƯỢNG TĨNH TÀI NGUYÊN SỬ DỤNG CỦA CHƯƠNG TRÌNH GIAO DỊCH Chuyên ngành: Kỹ thuật phần mềm Mã số: 9480103.01 LUẬN ÁN TIẾN SĨ NGÀNH CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS TRƯƠNG ANH HOÀNG Hà Nội - 2022 Mục lục Trang Chương GIỚI THIỆU 1.1 Đặt vấn đề 1.2 Mục tiêu, đối tượng phạm vi nghiên cứu 1.2.1 Mục tiêu nghiên cứu 1.2.2 Đối tượng phạm vi nghiên cứu 1.3 Những đóng góp chính, ý nghĩa khoa học thực tiễn 1.4 Bố cục luận án Chương KIẾN THỨC NỀN TẢNG VÀ NGHIÊN CỨU LIÊN QUAN 10 2.1 Giới thiệu 10 2.2 Điều khiển tương tranh dựa khóa 12 2.2.1 Khái niệm khóa 12 2.2.2 Kỹ thuật khóa đơn giản 12 2.2.3 Kỹ thuật khóa đọc, ghi 13 2.2.4 Kỹ thuật Semaphore 13 2.2.5 Một số vấn đề kỹ thuật khóa 14 2.3 Cơ chế nhớ giao dịch phần mềm 15 2.3.1 Khái niệm tính chất giao dịch 15 2.3.2 Đặc điểm chương trình STM 17 2.4 Hệ thống kiểu 18 2.4.1 Khái niệm hệ thống kiểu 19 2.4.2 Một số tính chất hệ thống kiểu 21 2.4.3 Ứng dụng ý nghĩa hệ thống kiểu 22 2.4.4 Hệ thống kiểu hình thức hóa ngơn ngữ 23 2.5 Nghiên cứu liên quan 26 2.5.1 Tài nguyên tiêu thụ chương trình 26 2.5.2 Tài nguyên tiêu thụ chương trình tương tranh 28 2.5.3 Tài nguyên tiêu thụ chương trình STM 31 i 2.5.4 Sử dụng hệ thống kiểu xác định biên tài nguyên tiêu thụ chương trình STM 33 2.6 Tổng kết chương 33 Chương ƯỚC LƯỢNG BIÊN TÀI NGUYÊN CHƯƠNG TRÌNH CỦA NGƠN NGỮ TỐI GIẢN 35 3.1 Xác định số giao dịch tối đa 35 3.1.1 Ví dụ minh họa 35 3.1.2 Ngôn ngữ giao dịch tối giản 37 3.1.2.1 Cú pháp 38 3.1.2.2 Ngữ nghĩa 38 3.1.3 Hệ thống kiểu tính số giao dịch tối đa 42 3.1.3.1 Kiểu 42 3.1.3.2 Quy tắc kiểu 45 3.1.3.3 Định kiểu chương trình ví dụ thảo luận tính sắc biên 47 3.1.3.4 Tính hệ thống kiểu 49 3.2 Xác định biên tài nguyên tiêu thụ chương trình 53 3.2.1 Ví dụ minh họa 53 3.2.2 Ngôn ngữ giao dịch tối giản cải tiến 56 3.2.2.1 Cú pháp 56 3.2.2.2 Ngữ nghĩa 57 3.2.3 Hệ thống kiểu tìm biên tài nguyên tiêu thụ chương trình 60 3.2.3.1 Kiểu 60 3.2.3.2 Quy tắc kiểu 61 3.2.3.3 Định kiểu cho chương trình ví dụ 64 3.2.3.4 Tính hệ thống kiểu 65 3.3 Tổng kết chương 66 Chương TÍNH BỘ NHỚ TỐI ĐA CHO CHƯƠNG TRÌNH CỦA NGƠN NGỮ MỆNH LỆNH 68 4.1 Giới thiệu 68 4.2 Ví dụ minh họa 69 ii 4.3 Ngôn ngữ giao dịch với cấu trúc mệnh lệnh 71 4.3.1 Cú pháp 71 4.3.2 Ngữ nghĩa 73 4.4 Hệ thống kiểu tìm biên nhớ cho biến dùng chung 76 4.4.1 Kiểu 76 4.4.2 Quy tắc kiểu 80 4.4.3 Tính 82 4.4.4 Định kiểu cho chương trình ví dụ 83 4.5 Công cụ suy diễn kiểu 84 4.5.1 Định nghĩa kiểu liệu 84 4.5.2 Hàm 85 4.5.3 Hàm rút gọn 85 4.5.4 Hàm hợp hai chuỗi 86 4.5.5 Hàm đồng kết thúc 88 4.5.6 Hàm chuyển dạng 90 4.5.7 Hàm chọn 90 4.6 Hệ thống kiểu tích hợp xác định biên nhớ cấp phát cho biến dùng chung 91 4.6.1 Kiểu 91 4.6.2 Quy tắc định kiểu 92 4.6.3 Đặc điểm hệ thống kiểu 99 4.6.4 Định kiểu chương trình ví dụ thảo luận tính sắc biên 112 4.7 Tổng kết chương 117 Chương XÁC ĐỊNH BỘ NHỚ GIAO DỊCH TỐI ĐA CHO CHƯƠNG TRÌNH CỦA NGƠN NGỮ HƯỚNG ĐỐI TƯỢNG 118 5.1 Giới thiệu 118 5.2 Ví dụ minh họa 119 5.2.1 Phân tích hành vi chương trình 120 5.2.2 Phân tích nhớ sử dụng chương trình 124 iii 5.3 Ngôn ngữ giao dịch với cấu trúc hướng đối tượng 126 5.3.1 Cú pháp 126 5.3.2 Ngữ nghĩa 127 5.4 Hệ thống kiểu tích hợp tìm biên nhớ giao dịch 133 5.4.1 Kiểu 133 5.4.2 Quy tắc kiểu 134 5.4.3 Định kiểu cho chương trình ví dụ 141 5.4.4 Tính 143 5.5 Tổng kết chương 144 Chương KẾT LUẬN 145 6.1 Những kết đạt 145 6.2 Những hạn chế hướng nghiên cứu 147 Phụ lục: KIỂM THỬ CÔNG CỤ SUY DIỄN KIỂU 159 iv Danh sách hình vẽ 2.1 Sơ đồ trạng thái giao dịch 16 2.2 Hệ thống kiểu liên kết với trình biên dịch 25 3.1 Mô tả hành vi chương trình ví dụ 3.1 36 3.2 Đồng kết thúc luồng 46 3.3 Mô tả hành vi chương trình ví dụ 3.3 54 4.1 Mô tả hành vi hoạt động ví dụ 4.1 71 4.2 Các giao dịch lồng 95 4.3 Đồng kết thúc luồng song song (trường hợp 1) 97 4.4 Đồng kết thúc luồng song song (trường hợp 2) 97 4.5 Cây suy diễn kiểu cho đoạn chương trình e10 29 Đoạn mã 4.10 113 4.6 Hành vi Đoạn chương trình Đoạn mã 4.10 114 4.7 Cây suy diễn kiểu chương trình Đoạn mã 4.10 116 5.1 Mô hành vi chương trình đoạn mã ví dụ 5.1 126 5.2 Giao dịch lồng 138 5.3 Các hành phần 138 5.4 Các luồng song song 139 5.5 Hợp hai luồng song song 139 5.6 Đồng kết thúc luồng song song 140 v Danh sách bảng 3.1 Cú pháp ngôn ngữ STM tối giản 38 3.2 Ngữ nghĩa cục ngôn ngữ STM tối giản 39 3.3 Ngữ nghĩa giao dịch luồng ngôn ngữ STM tối giản 40 3.4 Quy tắc định kiểu cho chương trình STM tối giản 45 3.5 Cú pháp ngôn ngữ giao dịch tối giản cải tiến 57 3.6 Ngữ nghĩa ngôn ngữ giao dịch tối giản cải tiến 58 3.7 Quy tắc định kiểu chương trình STM tối giản cải tiến 62 4.1 Cú pháp ngôn ngữ giao dịch cấu trúc mệnh lệnh 73 4.2 Ngữ nghĩa ngôn ngữ giao dịch cấu trúc mệnh lệnh 74 4.3 Quy tắc kiểu 80 4.4 Quy tắc kiểu hệ thống kiểu tích hợp 92 5.1 Cú pháp ngôn ngữ STM hướng đối tượng 127 5.2 Ngữ nghĩa ngôn ngữ STM hướng đối tượng 129 5.3 Quy tắc định kiểu 135 vi Thuật ngữ từ viết tắt Từ viết tắt Từ gốc Giải nghĩa - Tạm dịch ACID Atomicity, Consistency, Iso- Tính chất giao dịch: tính lation and Durability nguyên tố, tính quán, tính độc lập, tính bền vững CFG Control Flow Graph Luồng điều khiển CPU Central Processing Unit Bộ xử lý trung tâm CR Cost Relations Biểu thức mô tả mối quan hệ chi phí chương trình DAG Directed Acyclic Graph Đồ thị có hướng phi chu trình DFG Distributed Flow Graph Biểu đồ luồng phân tán HTM Hardware Transactional Bộ nhớ giao dịch phần cứng Memory HyTM Hybrid Transactional Mem- Phương pháp lai nhớ giao ory dịch phần cứng phần mềm IoT Internet of Things Internet vạn vật MB Megabyte Đơn vị thông tin ML Machine languague Ngôn ngữ máy SACO Static Analyzer for Concur- Máy phân tích tĩnh cho đối rent Objects tượng tương tranh STAMP Stanford Transactional Một thư viện sử dụng chế Applications for Multi- nhớ giao dịch phần mềm Processing STM Software Transactional Bộ nhớ giao dịch phần mềm Memory TFJ Transactional Featherweight Ngôn ngữ giao dịch Java tối giản Java vii Lời cam đoan Tôi xin cam đoan cơng trình nghiên cứu tơi thực hướng dẫn PGS.TS Trương Anh Hoàng môn Công nghệ phần mềm, khoa Công nghệ thông tin, trường Đại học Công nghệ, Đại học Quốc gia Hà Nội Các số liệu kết trình bày luận án trung thực, chưa công bố tác giả hay cơng trình khác Tác giả Nguyễn Ngọc Khải viii DANH MỤC CÁC CƠNG TRÌNH KHOA HỌC (1) Trương Anh Hồng, Nguyễn Ngọc Khải (2015) "Hệ thống kiểu tính cận số log cho ngôn ngữ giao dịch đa luồng tối giản" Tạp chí Khoa học, Đại học Sư phạm Hà Nội, pp 80-93 (2) Anh-Hoang Truong, Ngoc-Khai Nguyen, Dang Van Hung and Duc-Hanh Dang (2016) "Calculating statically maximum log memory used by multithreaded transactional programs" Theoretical Aspects of Computing - ICTAC - 13th International Colloquium, Taipei, Taiwan, ROC, Proceedings (3) Ngoc-Khai Nguyen, and Anh-Hoang Truong (2017) "A Compositional Type Systems for Finding Log Memory Bounds of Transactional Programs" Proceedings of the Eighth International Symposium on Information and Communication Technology - SOICT, pp 409-416 (4) Nguyễn Ngọc Khải, Trương Anh Hoàng (2018) "Hệ thống kiểu để suy nhớ log chương trình giao dịch từ biến dùng chung" Tạp chí Khoa học Kỹ thuật, Học viện Kỹ thuật quân sự, pp 18-33 (5) Ngoc-Khai Nguyen, Anh-Hoang Truong, and Duc-Hanh Dang (2021) "Estimate the memory bounds required by shared variables in software transactional memory programs" VNU Journal of Science: Computer Science and Communication Engineering (6) Ngoc-Khai Nguyen, Anh-Hoang Truong, and Duc-Hanh Dang (2022) "Finding memory bound of cloned objects in software transactional memory programs" Accepted by International Journal of Software Engineering and Knowledge Engineering Journal (IJSEKE) 149 Tài liệu tham khảo [1] Elvira Albert, Puri Arenas, Jesús Correas Fernández, Samir Genaim, Miguel Gómez-Zamalloa, Enrique Martin-Martin, Germán Puebla, and Guillermo Román-Díez Resource analysis: From sequential to concurrent and distributed programs In FM, 2015 [2] Elvira Albert, Puri Arenas, Jesús Correas Fernández, Samir Genaim, Miguel Gómez-Zamalloa, Germán Puebla, and Guillermo Román-Díez Objectsensitive cost analysis for concurrent objects Softw Test., Verif Reliab., 25(3):218–271, 2015 [3] Elvira Albert, Puri Arenas, Antonio Flores-Montoya, Samir Genaim, Miguel Gómez-Zamalloa, Enrique Martin-Martin, Germán Puebla, and Guillermo Román-Díez Saco: Static analyzer for concurrent objects In TACAS, 2014 [4] Elvira Albert, Puri Arenas, Samir Genaim, and Germán Puebla Closedform upper bounds in static cost analysis Journal of Automated Reasoning, 46:161–203, 2010 [5] Elvira Albert, Puri Arenas, Samir Genaim, Germán Puebla, and Damiano Zanardini Cost analysis of object-oriented bytecode programs Theor Comput Sci., 413:142–159, 2012 [6] Elvira Albert, Jesús Correas Fernández, Einar Broch Johnsen, and Guillermo Román-Díez Parallel cost analysis of distributed systems In SAS, 2015 [7] Elvira Albert, Jesús Correas Fernández, and Guillermo Román-Díez Peak cost analysis of distributed systems In Static Analysis - 21st International Symposium, SAS 2014, pages 18–33, 2014 [8] Elvira Albert, Jesús Correas Fernández, and Guillermo Román-Díez Resource analysis of distributed systems In Theory and Practice of Formal Methods, 2016 [9] Elvira Albert, Samir Genaim, and Miguel Gomez-Zamalloa Heap space analysis for Java bytecode In Proceedings of the 6th International Symposium on Memory Management, ISMM ’07, pages 105–116, New York, NY, USA, 2007 ACM 150 Tài liệu tham khảo 151 [10] Elvira Albert, Samir Genaim, and Miguel Gómez-Zamalloa Heap space analysis for garbage collected languages Sci Comput Program., 78:1427– 1448, 2013 [11] Elvira Albert, Pablo Gordillo, Albert Rubio, and Ilya Sergey Gastap: A gas analyzer for smart contracts ArXiv, abs/1811.10403, 2018 [12] C Amrein and T Markiewicz Software transactional memory for net 2015 [13] C Ananian, K Asanovic, B Kuszmaul, C Leiserson, and S Lie Unbounded transactional memory In HPCA, 2005 [14] David Aspinall, Robert Atkey, Kenneth MacKenzie, and Donald Sannella Symbolic and analytic techniques for resource analysis of Java bytecode In Proceedings of the 5th International Conference on Trustworthly Global Computing, TGC’10, pages 1–22, Berlin, Heidelberg, 2010 Springer-Verlag [15] Alexandro Baldassin, Edson Borin, and Guido Araujo Performance implications of dynamic memory allocators on transactional memory systems In PPOPP, 2015 [16] Alexandro Baldassin, Felipe Klein, Guido Araujo, Rodolfo Azevedo, and Paulo Centoducatte Characterizing the energy consumption of software transactional memory IEEE Computer Architecture Letters, 8:5659, 2009 [17] Luiz Andrộ Barroso and Urs Hăolzle The case for energy-proportional computing Computer, 40, 2007 [18] Marc Bezem, Dag Hovland, and Hoang Truong A type system for counting instances of software components Theor Comput Sci., 458:29–48, 2012 [19] Guy E Blelloch and John Greiner A provable time and space efficient implementation of NESL In Proceedings of the 1996 ACM SIGPLAN International Conference on Functional Programming (ICFP ’96), Philadelphia, Pennsylvania, May 24-26, 1996., pages 213–225, 1996 [20] Guy E Blelloch and Robert Harper Cache and I/O efficent functional algorithms In The 40th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL ’13, Rome, Italy - January 23 - 25, 2013, pages 39–50, 2013 [21] Chandrasekhar Boyapati and M Rinard Safejava: a unified type system for safe programming 2004 151 Tài liệu tham khảo 152 [22] Victor Braberman, Diego Garbervetsky, Samuel Hym, and Sergio Yovine Summary-based inference of quantitative bounds of live heap objects Science of Computer Programming, 92, Part A:56 – 84, 2014 Special issue on Bytecode 2012 [23] Víctor A Braberman, Diego Garbervetsky, and Sergio Yovine A static analysis for synthesizing parametric specifications of dynamic memory consumption Journal of Object Technology, 5(5):31–58, 2006 [24] ESTADUAL DE CAMPINAS, Alexandro Baldassin, Felipe Klein, Paulo Centoducatte, Guido Araujo, and Rodolfo Azevedo A first study on characterizing the energy consumption of software transactional memory 2009 [25] Luca Cardelli Type systems, 1997 [26] B.D Carlstrom and Stanford University Computer Science Department Programming with Transactional Memory Stanford University, 2008 [27] L Ceze, J Tuck, J Torrellas, and C Cascaval Bulk disambiguation of speculative threads in multiprocessors 33rd International Symposium on Computer Architecture (ISCA’06), pages 227–238, 2006 [28] Ting Chen, Xiaoqi Li, Xiapu Luo, and Xiaosong Zhang Under-optimized smart contracts devour your money 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER), pages 442–446, 2017 [29] Wei-Ngan Chin, Huu Hai Nguyen, Shengchao Qin, and Martin Rinard Memory usage verification for OO programs In Proceedings of the 12th International Conference on Static Analysis, SAS’05, pages 70–86, Berlin, Heidelberg, 2005 Springer-Verlag [30] Philippe Clauss Handling memory cache policy with integer points counting In Euro-Par, 1997 [31] V Cortier, Niklas Grimm, Joseph Lallemand, and M Maffei A type system for privacy properties Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security, 2017 [32] G Coulouris Distributed systems : concepts and design / george coulouris [et al.] 2012 152 Tài liệu tham khảo 153 [33] Samuel da Silva Feitosa, Rodrigo Geraldo Ribeiro, and André Rauber Du Bois Towards an extrinsic formalization of featherweight java in agda CLEI Electronic Journal, 2021 [34] Peter Damron, Alexandra Fedorova, Y Lev, Victor Luchangco, M Moir, and D Nussbaum Hybrid transactional memory In ASPLOS XII, 2006 [35] Edsger Dijkstra Over de sequentialiteit van procesbeschrijvingen (EWD35) Center for American History, University of Texas at Austin, undated, 1962 or 1963 [36] Ecma C♯ Language Specification ECMA, 5th edition, December 2017 [37] Thomas Fahringer Efficient symbolic analysis for parallelizing compilers and performance estimators The Journal of Supercomputing, 12:227–252, 1998 [38] Cesare Ferri, Amber Viescas, Tali Moreshet, R Iris Bahar, and Maurice Herlihy Energy efficient synchronization techniques for embedded architectures In ACM Great Lakes Symposium on VLSI, 2008 [39] A Ghosh and R Chaki Implementing software transactional memory using stm haskell In ACSS, 2015 [40] Bhavishya Goel, J Rubén Titos Gil, Anurag Negi, Sally A McKee, and Per Stenstrăom Performance and energy analysis of the restricted transactional memory implementation on haswell 2014 IEEE 28th International Parallel and Distributed Processing Symposium, pages 615–624, 2014 [41] D Goodman, B Khan, Salman Khan, M Luján, and I Watson Software transactional memories for scala J Parallel Distributed Comput., 73:150– 163, 2013 [42] Vincent Gramoli and Rachid Guerraoui Programming with Transactional Memory, pages 165–183 01 2017 [43] Peter Grun, Florin Balasa, and Nikil D Dutt Memory size estimation for multimedia applications In CODES, 1998 [44] T Harris, J Larus, and R Rajwar Transactional memory, 2nd edition In Transactional Memory, 2010 [45] T Harris, S Marlow, S Jones, and M Herlihy Composable memory transactions Commun ACM, 51:91–100, 2008 153 Tài liệu tham khảo 154 [46] Tim Harris, James Larus, and Ravi Rajwar Transactional Memory, 2Nd Edition Morgan and Claypool Publishers, 2nd edition, 2010 [47] Maurice Herlihy and J Eliot B Moss Transactional memory: Architectural support for lock-free data structures In ISCA, 1993 [48] Jan Hoffmann, Ankush Das, and Shu-Chun Weng Towards automatic resource bound analysis for ocaml In POPL, 2017 [49] Jan Hoffmann and Zhong Shao Automatic static cost analysis for parallel programs In Programming Languages and Systems - 24th European Symposium on Programming, ESOP 2015, pages 132–157, 2015 [50] Martin Hofmann and Steffen Jost Static prediction of heap space usage for first-order functional programs volume 38, pages 185–197, New York, NY, USA, January 2003 ACM [51] John Hughes and Lars Pareto Recursion and dynamic data-structures in bounded space: Towards embedded ml programming SIGPLAN Not., 34(9):70–81, September 1999 [52] John Hughes, Lars Pareto, and Amr Sabry Proving the correctness of reactive systems using sized types In Proceedings of the 23rd ACM SIGPLANSIGACT Symposium on Principles of Programming Languages, POPL ’96, pages 410–423, New York, NY, USA, 1996 ACM [53] J Hui, L Dong, Z Xing-yuan, and Xie Xiren Type system in programming languages Journal of Computer Science and Technology, 16:286–292, 2001 [54] Suresh Jagannathan, Jan Vitek, Adam Welc, and Antony Hosking A transactional object calculus Sci Comput Program., 57(2):164–186, August 2005 [55] Felipe Klein, Alexandro Baldassin, Guido Araujo, Paulo Centoducatte, and Rodolfo Azevedo On the energy-efficiency of software transactional memory In SBCCI, 2009 [56] Felipe Klein, Alexandro Baldassin, João Moreira, Paulo Centoducatte, Sandro Rigo, and Rodolfo Azevedo Stm versus lock-based systems: An energy consumption perspective 2010 ACM/IEEE International Symposium on Low-Power Electronics and Design (ISLPED), pages 431–436, 2010 154 Tài liệu tham khảo 155 [57] Felipe Klein, Alexandro Baldassin, Joao Moreira, Paulo Centoducatte, Sandro Rigo, and Rodolfo Azevedo Stm versus lock-based systems: An energy consumption perspective In Proceedings of the 16th ACM/IEEE International Symposium on Low Power Electronics and Design, ISLPED ’10, pages 431–436, New York, NY, USA, 2010 ACM [58] T F Knight An architecture for mostly functional languages In LFP ’86, 1986 [59] James R Larus and Ravi Rajwar Transactional memory Commun ACM, 51:80–88, 2006 [60] Matthew Le, R Yates, and M Fluet Revisiting software transactional memory in haskell Proceedings of the 9th International Symposium on Haskell, 2016 [61] Bjăorn Lisper Fully automatic, parametric worst-case execution time analysis In WCET, 2003 [62] Vincent Loechner, Benoˆit Meister, and Philippe Clauss Precise data locality optimization of nested loops The Journal of Supercomputing, 21:37–76, 2002 [63] A Lumsdaine and R Garcia Static computation and reflection 2008 [64] Casey Marshall Software transactional memory 01 2006 [65] C Minh, M Trautmann, JaeWoong Chung, A McDonald, N Bronson, J Casper, C Kozyrakis, and K Olukotun An effective hybrid transactional memory system with strong isolation guarantees In ISCA ’07, 2007 [66] Chi Cao Minh, JaeWoong Chung, Christoforos E Kozyrakis, and Kunle Olukotun Stamp: Stanford transactional applications for multi-processing 2008 IEEE International Symposium on Workload Characterization, pages 35–46, 2008 [67] Mohamed Mohamedin, B Ravindran, and R Palmieri Bytestm: Virtual machine-level java software transactional memory In COORDINATION, 2013 [68] Tali Moreshet, R Iris Bahar, and Maurice Herlihy Energy reduction in multiprocessor systems using transactional memory ISLPED ’05 Proceedings of the 2005 International Symposium on Low Power Electronics and Design, 2005., pages 331–334, 2005 155 Tài liệu tham khảo 156 [69] Tali Moreshet, R Iris Bahar, and Maurice Herlihy Energy-aware microprocessor synchronization: Transactional memory vs locks 2006 [70] Karl Naden, R Bocchino, J Aldrich, and K Bierhoff A type system for borrowing permissions In POPL ’12, 2012 [71] Flemming NielsonHanne Riis Nielson Formal Methods Springer, Cham, 2019 [72] K Olukotun and L Hammond The future of microprocessors Queue, 3:26 – 29, 2005 [73] David Padua Encyclopedia of Parallel Computing 01 2011 [74] Douglas Pereira Pasqualin, M Diener, A Bois, and M Pilla Thread affinity in software transactional memory 2020 19th International Symposium on Parallel and Distributed Computing (ISPDC), pages 180–187, 2020 [75] Tuan-Hung Pham, Anh-Hoang Truong, Ninh-Thuan Truong, and Wei-Ngan Chin A fast algorithm to compute heap memory bounds of Java Card applets In Antonio Cerone and Stefan Gruner, editors, Sixth IEEE International Conference on Software Engineering and Formal Methods, SEFM 2008, Cape Town, South Africa, 10-14 November 2008, pages 259–267 IEEE Computer Society, 2008 [76] Benjamin C Pierce Types and Programming Languages The MIT Press, 1st edition, 2002 [77] Benjamin C Pierce Type systems, pages 293–307 Springer New York, New York, NY, 2003 [78] Miroslav Popovic, Branislav Kordic, and Ilija Basicevic Estimating transaction execution times for a software transactional memory 2016 Sixth International Conference on Information Science and Technology (ICIST), pages 137–141, 2016 [79] Aleksandar Prokopec Learning Concurrent Programming in Scala 11 2014 [80] R Rajwar, M Herlihy, and K Lai Virtualizing transactional memory 32nd International Symposium on Computer Architecture (ISCA’05), pages 494–505, 2005 [81] G Rosu K: A semantic framework for programming languages and formal analysis tools In Dependable Software Systems Engineering, 2017 156 Tài liệu tham khảo 157 [82] Bratin Saha, Ali-Reza Adl-Tabatabai, R Hudson, C Minh, and Ben Hertzberg Mcrt-stm: a high performance software transactional memory system for a multi-core runtime In PPoPP ’06, 2006 [83] Daniel J Scales, K Gharachorloo, and C Thekkath Shasta: a low overhead, software-only approach for supporting fine-grain shared memory In ASPLOS VII, 1996 [84] William N Scherer and M Scott Advanced contention management for dynamic software transactional memory In PODC ’05, 2005 [85] Nir Shavit and Dan Touitou Software transactional memory In Symposium on Principles of Distributed Computing, pages 204–213, 1995 [86] Arrvindh Shriraman, M Spear, H Hossain, V Marathe, S Dwarkadas, and M Scott An integrated hardware-software approach to flexible transactional memory In ISCA ’07, 2007 [87] Herb Sutter and James R Larus Software and the concurrency revolution ACM Queue, 3:54–62, 2005 [88] Fuad Tabba, M Moir, J Goodman, A W Hay, and C Wang Nztm: nonblocking zero-indirection transactional memory In SPAA ’09, 2009 [89] Mads Tofte and Jean-Pierre Talpin Region-based memory management Inf Comput., 132(2):109–176, February 1997 [90] Antonio J Tomeu, Alberto G Salguero, and M Capel Teaching software transactional memory in concurrency courses with clojure and java In Euro-Par Workshops, 2017 [91] Mai Thuong Tran, Martin Steffen, and Hoang Truong Compositional analysis of resource bounds for software transactions In Uwe Egbert Wolter & Yngve Lamo (ed.), 24th Nordic Workshop on Programming Theory Universitetet i Bergen articel, 2012 [92] Mai Thuong Tran, Martin Steffen, and Hoang Truong Compositional static analysis for implicit join synchronization in a transactional setting volume 8137, pages 212–228, 09 2013 [93] Anh-Hoang Truong, Dang Van Hung, Duc-Hanh Dang, and Xuan-Tung Vu A type system for counting logs of multi-threaded nested transactional programs In Nikolaj Bjørner, Sanjiva Prasad, and Laxmi Parida, editors, Dis157 Tài liệu tham khảo 158 tributed Computing and Internet Technology - 12th International Conference, ICDCIT 2016, Proceedings, volume 9581 of LNCS, pages 157–168 Springer, 2016 [94] Hoang Truong Guaranteeing resource bounds for component software In Martin Steffen and Gianluigi Zavattaro, editors, Formal Methods for Open Object-Based Distributed Systems, pages 179–194, Berlin, Heidelberg, 2005 Springer Berlin Heidelberg [95] Xuan-Tung Vu, Thi Mai Thuong Tran, Anh-Hoang Truong, and Martin Steffen A type system for finding upper resource bounds of multi-threaded programs with nested transactions In Symposium on Information and Communication Technology 2012, SoICT ’12, Halong City, Quang Ninh, Viet Nam, August 23-24, 2012, pages 21–30, 2012 [96] Igor Vurdelja, Zivojin Sustran, Jelica Protic, and Drazen Draskovic Survey of machine learning application in transactional memory 2020 28th Telecommunications Forum (TELFOR), pages 1–4, 2020 [97] Steven Cameron Woo, Moriyoshi Ohara, Evan Torrie, Jaswinder Pal Singh, and Anoop Gupta The splash-2 programs: Characterization and methodological considerations In ISCA, 1995 [98] Ying Zhao and Sharad Malik Exact memory size estimation for array computations without loop unrolling In DAC, 1999 [99] Naweiluo Zhou, Gwenael Delaval, Bogdan Robu, E Rutten, and J Mehaut An autonomic-computing approach on mapping threads to multi-cores for software transactional memory Concurrency and Computation: Practice and Experience, 30, 2018 158 Phụ lục KIỂM THỬ CÔNG CỤ SUY DIỄN KIỂU Để kiểm tra tính thuật tốn suy diễn kiểu trình bày Phần 4.5, luận án đưa số ca kiểm thử bao quát trường hợp xảy thuật tốn vượt qua ca kiểm thử Sau đoạn mã kiểm thử viết ngôn ngữ lập trình F♯ sử dụng thư viện FsUnit open open open open System IO CoreTypeSystem NUnit Framework FsUnit 10 11 12 13 14 15 // Change TagSeq l i s t t o STM s t r i n g l e t r e c T o S t r i n g ( l s t : TagSeq ) : s t r i n g = match l s t with ∣ [ ] −> " " ∣ ( Tag Plus , n1 ) : : xs −> "+" + n1 T o S t r i n g ( ) + T o S t r i n g xs ∣ ( Tag Minus , n1 ) : : xs −> "−" + n1 T o S t r i n g ( ) + T o S t r i n g xs ∣ ( Tag Max , n1 ) : : xs −> "#" + n1 T o S t r i n g ( ) + T o S t r i n g xs ∣ ( Tag Join , n1 ) : : xs −> " : " + n1 T o S t r i n g ( ) + T o S t r i n g xs ∣ ( Tag New , n1 ) : : xs −> "∗" + n1 T o S t r i n g ( ) + T o S t r i n g xs ∣ x : : xs −> x T o S t r i n g ( ) + T o S t r i n g xs 17 18 19 l e t t e s t ast expectedResult = l e t res = i n f e r ast [ ] in ToString r e s ∣ > should equal expectedResult 21 22 23 24 25 26 27 28 29 30 //+0∗1+0∗4−1∗4−1 −> #5 l e t ast14 = [ L e a f ( Tag Plus , ) L e a f ( Tag New , ) L e a f ( Tag Plus , ) L e a f ( Tag New , ) L e a f ( Tag Minus , ) L e a f ( Tag New , ) L e a f ( Tag Minus , ) ] i n t e s t a s t "#5" 32 33 34 35 36 37 //+2∗4−1 −> #6 l e t ast1 = [ L e a f ( Tag Plus , ) L e a f ( Tag New , ) L e a f ( Tag Minus , ) ] i n t e s t a s t "#6" 39 40 //+0∗1+2∗1−1−1 −> #4 l e t ast2 = 159 Phụ lục: Kiểm thử công cụ suy diễn kiểu 41 42 43 44 45 46 47 160 [ L e a f ( Tag Plus , ) L e a f ( Tag New , ) L e a f ( Tag Plus , ) L e a f ( Tag New , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) ] i n t e s t a s t "#4" 49 50 51 52 53 54 // +2(−1)−1 −> #4 l e t ast3 = [ L e a f ( Tag Plus , ) Branch ( [ L e a f ( Tag Minus , ) ] ) L e a f ( Tag Minus , ) ] i n t e s t a s t "#4" 56 57 58 59 60 61 62 63 //+2+3−1(−1)−1 −> #5 l e t ast4 = [ L e a f ( Tag Plus , ) L e a f ( Tag Plus , ) L e a f ( Tag Minus , ) Branch ( [ L e a f ( Tag Minus , ) ] ) L e a f ( Tag Minus , ) ] i n t e s t a s t "#5" 65 66 67 68 69 70 71 72 73 //+2(+3∗1−1−1)−1 −> #8 l e t ast5 = [ L e a f ( Tag Plus , ) Branch ( [ L e a f ( Tag Plus , ) L e a f ( Tag New , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) ] ) L e a f ( Tag Minus , ) ] i n t e s t a s t "#8" 75 76 77 78 79 80 81 //+2(+2−2)−1 −> #6 l e t ast6 = [ L e a f ( Tag Plus , ) Branch ( [ L e a f ( Tag Plus , ) L e a f ( Tag Minus , ) ] ) L e a f ( Tag Minus , ) ] i n t e s t a s t "#6" 83 84 85 86 87 88 89 90 //+2(+1−1−1)−1 −> #5 l e t ast7 = [ L e a f ( Tag Plus , ) Branch ( [ L e a f ( Tag Plus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) ] ) L e a f ( Tag Minus , ) ] i n t e s t a s t "#5" 160 Phụ lục: Kiểm thử công cụ suy diễn kiểu 92 93 94 95 96 97 98 99 161 //+1+2−1(−1)−1 −> #3 l e t ast8 = [ L e a f ( Tag Plus , ) L e a f ( Tag Plus , ) L e a f ( Tag Minus , ) Branch ( [ L e a f ( Tag Minus , ) ] ) L e a f ( Tag Minus , ) ] i n t e s t a s t "#3" 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 //+1+2(+4−1−1−1)+3(+5−1−1−1−1)−1+6−1−1+7−1−1 l e t ast9 = [ L e a f ( Tag Plus , ) L e a f ( Tag Plus , ) Branch ( [ L e a f ( Tag Plus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) ] ) L e a f ( Tag Plus , ) Branch ( [ L e a f ( Tag Plus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) ] ) L e a f ( Tag Minus , ) L e a f ( Tag Plus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) L e a f ( Tag Plus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) ] i n t e s t a s t "#24" 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 //+1+2(+4−1−1−1)+3(+5−1−1−1−1)−1+12−1−1+7−1−1 l e t ast10 = [ L e a f ( Tag Plus , ) L e a f ( Tag Plus , ) Branch ( [ L e a f ( Tag Plus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) ] ) L e a f ( Tag Plus , ) Branch ( [ L e a f ( Tag Plus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) ] ) L e a f ( Tag Minus , ) L e a f ( Tag Plus , ) L e a f ( Tag Minus , ) 161 Phụ lục: Kiểm thử công cụ suy diễn kiểu 141 142 143 144 145 162 L e a f ( Tag Minus , ) L e a f ( Tag Plus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) ] i n t e s t a s t "#25" 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 //+1+2(+1−1−1−1)+3(+1−1−1−1−1)−1+6−1−1+15−1−1 l e t ast11 = [ L e a f ( Tag Plus , ) L e a f ( Tag Plus , ) Branch ( [ L e a f ( Tag Plus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) ] ) L e a f ( Tag Plus , ) Branch ( [ L e a f ( Tag Plus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) ] ) L e a f ( Tag Minus , ) L e a f ( Tag Plus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) L e a f ( Tag Plus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) ] i n t e s t a s t 1 "#18" 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 //+0∗4∗4(+0+0∗4−1−1−1)(+0−1+0−1−1+0∗4∗4∗4−1) −>#20 l e t ast12 = [ L e a f ( Tag Plus , ) L e a f ( Tag New , ) L e a f ( Tag New , ) Branch ( [ L e a f ( Tag Plus , ) L e a f ( Tag Plus , ) L e a f ( Tag New , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) ] ) L e a f ( Tag Plus , ) L e a f ( Tag Minus , ) L e a f ( Tag Plus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) L e a f ( Tag Plus , ) L e a f ( Tag New , ) L e a f ( Tag New , ) L e a f ( Tag New , ) L e a f ( Tag Minus , ) ] i n 162 Phụ lục: Kiểm thử công cụ suy diễn kiểu 191 163 t e s t a s t "#20" 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 // +0∗4(+0∗4∗4−1−1)(+0∗4+0∗4∗4−1−1−1)−>28 l e t ast13 = [ L e a f ( Tag Plus , ) L e a f ( Tag New , ) Branch ( [ L e a f ( Tag Plus , ) L e a f ( Tag New , ) L e a f ( Tag New , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) ] ) L e a f ( Tag Plus , ) L e a f ( Tag New , ) L e a f ( Tag Plus , ) L e a f ( Tag New , ) L e a f ( Tag New , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) L e a f ( Tag Minus , ) ] i n t e s t a s t "#28" 212 213 p r i n t f n " \ n A l l ␣ t e s t s ␣ were ␣ e x e c u t e d ␣ P r e s s ␣a ␣ key ␣ t o ␣ e x i t \ n" System C o n s o l e ReadKey ( t r u e ) > ignore 163 ... tài nguyên mà giao dịch cần sử dụng Đồng thời cải tiến hệ thống kiểu để xác định tài nguyên tối đa mà chương trình cần sử dụng thay xác định số giao dịch tối đa mà chương trình tạo Ngôn ngữ hệ. .. hoạt Hệ thống kiểu có khả định kiểu cho thành phần chương trình mà khơng u cầu chương trình hồn chỉnh Chương 3, sau tích hợp lại để kiểu chương trình Hệ thống kiểu gọi hệ thống kiểu tích hợp - Chương. .. dựng hệ thống kiểu để xác định biên nhớ giao dịch cho chương trình viết ngơn ngữ Ngơn ngữ hệ thống kiểu trình bày chương ngôn ngữ hệ thống kiểu gần với thực tế Chúng ta sử dụng để viết Chương

Ngày đăng: 27/06/2022, 11:32

Hình ảnh liên quan

Luận án bao gồm sáu chương, được bố cục như Hình ??, trong đó Chương 1 giới thiệu tổng quan về bài toán đặt ra, những đóng góp chính, ý nghĩa khoa học, ý nghĩa thực tế của luận án - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

u.

ận án bao gồm sáu chương, được bố cục như Hình ??, trong đó Chương 1 giới thiệu tổng quan về bài toán đặt ra, những đóng góp chính, ý nghĩa khoa học, ý nghĩa thực tế của luận án Xem tại trang 21 của tài liệu.
Hình 2.1. Sơ đồ các trạng thái của giao dịch. - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Hình 2.1..

Sơ đồ các trạng thái của giao dịch Xem tại trang 30 của tài liệu.
Bảng từ tố - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Bảng t.

ừ tố Xem tại trang 39 của tài liệu.
Hành vi của chương trình ví dụ này được minh họa trong Hình 3.1. Lệnh - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

nh.

vi của chương trình ví dụ này được minh họa trong Hình 3.1. Lệnh Xem tại trang 50 của tài liệu.
onacid và lệnh commit được ký hiệu bởi [ và ] tương ứng trong Hình. Lệnh - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

onacid.

và lệnh commit được ký hiệu bởi [ và ] tương ứng trong Hình. Lệnh Xem tại trang 50 của tài liệu.
Cú pháp của ngôn ngữ STM tối giản được thể hiện trong Bảng 3.1. Dòng thứ nhất để biểu diễn các luồng/tiến trình - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

ph.

áp của ngôn ngữ STM tối giản được thể hiện trong Bảng 3.1. Dòng thứ nhất để biểu diễn các luồng/tiến trình Xem tại trang 52 của tài liệu.
Bảng 3.3. Ngữ nghĩa giao dịch và luồng của ngôn ngữ STM tối giản - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Bảng 3.3..

Ngữ nghĩa giao dịch và luồng của ngôn ngữ STM tối giản Xem tại trang 54 của tài liệu.
Bảng 3.4. Quy tắc định kiểu cho chương trình STM tối giản - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Bảng 3.4..

Quy tắc định kiểu cho chương trình STM tối giản Xem tại trang 59 của tài liệu.
Bảng 3.5. Cú pháp của ngôn ngữ giao dịch tối giản cải tiến 1.P ∶∶=0∣P∥P∣p(e) - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Bảng 3.5..

Cú pháp của ngôn ngữ giao dịch tối giản cải tiến 1.P ∶∶=0∣P∥P∣p(e) Xem tại trang 71 của tài liệu.
Bảng 3.6. Ngữ nghĩa của ngôn ngữ giao dịch tối giản cải tiến p′freshspawn (p, p′,Γ) =Γ′ - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Bảng 3.6..

Ngữ nghĩa của ngôn ngữ giao dịch tối giản cải tiến p′freshspawn (p, p′,Γ) =Γ′ Xem tại trang 72 của tài liệu.
Bảng 3.7. Quy tắc định kiểu chương trình STM tối giản cải tiến - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Bảng 3.7..

Quy tắc định kiểu chương trình STM tối giản cải tiến Xem tại trang 76 của tài liệu.
Hình 4.1. Mô tả hành vi hoạt động của ví dụ 4.1. - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Hình 4.1..

Mô tả hành vi hoạt động của ví dụ 4.1 Xem tại trang 85 của tài liệu.
Bảng 4.1. Cú pháp của ngôn ngữ giao dịch cấu trúc mệnh lệnh 1.P ∶∶=ϕ∣P∥P∣p(e)luồng/tiến trình - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Bảng 4.1..

Cú pháp của ngôn ngữ giao dịch cấu trúc mệnh lệnh 1.P ∶∶=ϕ∣P∥P∣p(e)luồng/tiến trình Xem tại trang 87 của tài liệu.
Bảng 4.2. Ngữ nghĩa của ngôn ngữ giao dịch cấu trúc mệnh lệnh - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Bảng 4.2..

Ngữ nghĩa của ngôn ngữ giao dịch cấu trúc mệnh lệnh Xem tại trang 88 của tài liệu.
Bảng 4.3. Quy tắc kiểu x, e ∶int - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Bảng 4.3..

Quy tắc kiểu x, e ∶int Xem tại trang 94 của tài liệu.
Bảng 4.4. Quy tắc kiểu của hệ thống kiểu tích hợp - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Bảng 4.4..

Quy tắc kiểu của hệ thống kiểu tích hợp Xem tại trang 106 của tài liệu.
Hình 4.2. Các giao dịch lồng nhau. - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Hình 4.2..

Các giao dịch lồng nhau Xem tại trang 109 của tài liệu.
Trường hợp này được mô tả trong Hình 4.3., và ta có thể kết hợp chúng với các quy tắc sau. - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

r.

ường hợp này được mô tả trong Hình 4.3., và ta có thể kết hợp chúng với các quy tắc sau Xem tại trang 111 của tài liệu.
Hình 4.3. Đồng kết thúc các luồng song song (trường hợp 1). - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Hình 4.3..

Đồng kết thúc các luồng song song (trường hợp 1) Xem tại trang 111 của tài liệu.
Trong phần này, ta áp dụng các quy tắc trong Bảng 4.4 và các quy tắc trong Phần 4.6.2 để xây dựng cây suy diễn kiểu cho đoạn chương trình từ dòng 10 đến dòng 25 - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

rong.

phần này, ta áp dụng các quy tắc trong Bảng 4.4 và các quy tắc trong Phần 4.6.2 để xây dựng cây suy diễn kiểu cho đoạn chương trình từ dòng 10 đến dòng 25 Xem tại trang 127 của tài liệu.
Áp dụng các quy tắc trong Bảng 4.4, các quy tắc trong Phần 4.6.2, và kế thừa kết quả của cây suy diễn kiểu trong Hình 4.5 để xây dựng cây suy diễn kiểu cho đoạn chương trình trong Đoạn mã 4.10 - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

p.

dụng các quy tắc trong Bảng 4.4, các quy tắc trong Phần 4.6.2, và kế thừa kết quả của cây suy diễn kiểu trong Hình 4.5 để xây dựng cây suy diễn kiểu cho đoạn chương trình trong Đoạn mã 4.10 Xem tại trang 128 của tài liệu.
Hình 4.7. Cây suy diễn kiểu của chương trình trong Đoạn mã 4.10. - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Hình 4.7..

Cây suy diễn kiểu của chương trình trong Đoạn mã 4.10 Xem tại trang 130 của tài liệu.
Hình 5.1. Mô phỏng hành vi của chương trình trong đoạn mã ví dụ 5.1 - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Hình 5.1..

Mô phỏng hành vi của chương trình trong đoạn mã ví dụ 5.1 Xem tại trang 140 của tài liệu.
Bảng 5.1. Cú pháp của ngôn ngữ STM hướng đối tượng 1.P ::=ϕ ∣P∥P∣p(e) luồng/tiến trình 2.L ::= I ∣classC{Ð→f;ÐM→}lớp - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Bảng 5.1..

Cú pháp của ngôn ngữ STM hướng đối tượng 1.P ::=ϕ ∣P∥P∣p(e) luồng/tiến trình 2.L ::= I ∣classC{Ð→f;ÐM→}lớp Xem tại trang 141 của tài liệu.
Bảng 5.2. Ngữ nghĩa của ngôn ngữ STM hướng đối tượng - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Bảng 5.2..

Ngữ nghĩa của ngôn ngữ STM hướng đối tượng Xem tại trang 143 của tài liệu.
Bảng 5.3. Quy tắc định kiểu - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Bảng 5.3..

Quy tắc định kiểu Xem tại trang 149 của tài liệu.
Hình 5.2. Giao dịch lồng nhau (4) Hai thành phần liên tiếp có kiểu s ♯ - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Hình 5.2..

Giao dịch lồng nhau (4) Hai thành phần liên tiếp có kiểu s ♯ Xem tại trang 152 của tài liệu.
Hình 5.4. Các luồng song song. - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Hình 5.4..

Các luồng song song Xem tại trang 153 của tài liệu.
Hình 5.6. Đồng kết thúc các luồng song song. - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

Hình 5.6..

Đồng kết thúc các luồng song song Xem tại trang 154 của tài liệu.
5.4.3. Định kiểu cho chương trình ví dụ - Hệ thống kiểu để ước lượng tĩnh tài nguyên sử dụng của chương trình giao dịch

5.4.3..

Định kiểu cho chương trình ví dụ Xem tại trang 155 của tài liệu.

Mục lục

  • Giới thiệu

    • Đặt vấn đề

    • Mục tiêu, đối tượng và phạm vi nghiên cứu

      • Mục tiêu nghiên cứu

      • Đối tượng và phạm vi nghiên cứu

      • Những đóng góp chính, ý nghĩa khoa học và thực tiễn

      • Bố cục của luận án

      • Kiến thức nền tảng và nghiên cứu liên quan

        • Giới thiệu

        • Điều khiển tương tranh dựa trên khóa

          • Khái niệm khóa

          • Kỹ thuật khóa đơn giản

          • Kỹ thuật khóa đọc, ghi

          • Một số vấn đề trong kỹ thuật khóa

          • Cơ chế bộ nhớ giao dịch phần mềm

            • Khái niệm và tính chất của giao dịch

            • Đặc điểm của chương trình STM

            • Hệ thống kiểu

              • Khái niệm hệ thống kiểu

              • Một số tính chất cơ bản của hệ thống kiểu

              • Ứng dụng và ý nghĩa của hệ thống kiểu

              • Hệ thống kiểu trong hình thức hóa ngôn ngữ

              • Nghiên cứu liên quan

                • Tài nguyên tiêu thụ trong chương trình tuần tự

                • Tài nguyên tiêu thụ trong chương trình tương tranh

                • Tài nguyên tiêu thụ trong chương trình STM

                • Sử dụng hệ thống kiểu xác định biên tài nguyên tiêu thụ bởi chương trình STM

Tài liệu cùng người dùng

Tài liệu liên quan