1. Trang chủ
  2. » Mẫu Slide

01 overview testing abcs

28 40 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 1,23 MB

Nội dung

LẬP TRÌNH HỆ THỐNG ThS Đỗ Thị Thu Hiền (hiendtt@uit.edu.vn) Giới thiệu nội dung môn học Khảo sát: Lỗi C Tràn số? Segmentation fault? Khảo sát Reverse engineering? Buffer overflow? Inject malicious code chạy chương trình? Thực tế #1: Ints khơng phải số ngun, Float khơng phải số thực  Ví dụ 1: Có x2 ≥ 0? ▪ Float: Đúng! ▪ Int: ▪ ▪  40000 * 40000 = 1.600.000.000 50000 * 50000 = ?? Ví dụ 2: Có (x + y) + z = x + (y + z)? ▪ Unsigned & Signed Int’s: Đúng! ▪ Float: ▪ ▪ (1e20 + -1e20) + 3.14 > 3.14 1e20 + (-1e20 + 3.14) > ?? Tính tốn số học máy tính? Các phép tính tốn số học có tính chất quan trọng  Khơng thể giả định tất tính chất tốn học “thơng thường”  ▪ Do đặc điểm biểu diễn giá trị máy tính ▪ Các phép tính số nguyên thoả mãn tính chất: ▪ Giao hoán, kết hợp, phân phối ▪ Các phép tính số float thoả mãn tính chất: ▪ → → Tính đơn điệu, dấu Cần phải hiểu kiểu áp dụng ngữ cảnh Vấn đề quan trọng lập trình compiler lập trình ứng dụng quan trọng Thực tế #2: Cần phải biết Assembly  Hiểu assembly = hiểu trình thực thi mức máy tính ▪ Hành vi chương trình có bug ▪ Vấn đề xảy với chương trình ngơn ngữ lập trình cấp cao ▪ Tăng hiệu suất thực thi chương trình ▪ Hiểu tối ưu hố mà compiler thực ▪ Hiểu nguyên nhân làm hiệu suất chương trình thấp ▪ Triển khai phần mềm hệ thống ▪ Tạo/chống malware ▪ Assembly x86 lựa chọn hay dùng! Hello program in C Ngôn ngữ Assembly printf.o hello.c Source program (text) Preprocessor (cpp) hello.i Compiler (cc1) Modified source program (text) hello.s Assembler hello.o (as) Assembly program (text) Relocatable object programs (binary) Linker (ld) hello Executable object program (binary) ???? Ngôn ngữ lập trình cấp cao Mã máy Thực tế #3: Ảnh hưởng nhớ: Vấn đề truy cập nhớ?  Bộ nhớ (memory) có giới hạn ▪ Cần cấp phát quản lý hợp lý ▪ Nhiều ứng dụng bị chi phối nhớ  Các bug truy xuất nhớ nguy hiểm ▪ Ảnh hưởng lớn đến thời gian không gian thực thi ứng dụng  Hiệu suất nhớ ▪ Cache nhớ ảo tác động lớn đến hiệu suất chương trình ▪ Chương trình thích nghi với đặc điểm hệ thống nhớ cải thiện đáng kể tốc độ 10 Thực tế #4: Có nhiều thứ ảnh hưởng đến hiệu suất độ phức tạp  Số lượng phép tính tốn chưa dự đoán hiệu suất ▪ Cần tối ưu hoá nhiều mức: giải thuật, biểu diễn liệu, thủ tục (procedure), vòng lặp…  Phải hiểu mức độ hệ thống để tối ưu hiệu suất ▪ Hiểu cách chương trình biên dịch thực thi ▪ Hiểu cách tính tốn hiệu suất xác định thành phần gây giảm hiệu suất ▪ Hiểu cách cải thiện hiệu suất mà không ảnh hưởng đến tính mơ-đun tổng qt code 14 Ví dụ: Hiệu suất nhớ void copyij(int int { int i,j; for (i = 0; i for (j = 0; dst[i][j] } src[2048][2048], dst[2048][2048]) < 2048; i++) j < 2048; j++) = src[i][j]; void copyji(int int { int i,j; for (j = 0; j for (i = 0; dst[i][j] } src[2048][2048], dst[2048][2048]) < 2048; j++) i < 2048; i++) = src[i][j]; 81.8ms 4.3ms 2.0 GHz Intel Core i7 Haswell  Hiệu suất phụ thuộc vào cách truy xuất ▪ Bao gồm cách truy xuất phần tử mảng đa chiều 15 Thực tế #5: Máy tính làm nhiều việc thực thi chương trình  Máy tính cần đọc ghi liệu ▪ Vấn đề I/O ảnh hưởng đến độ tin cậy hiệu suất chương trình  Máy tính kết nối với máy tính khác qua mạng ▪ Nhiều vấn đề cấp hệ thống phát sinh có mạng  Hệ thống lưu trữ có nhiều phân cấp ▪ Kích thước, tốc độ truy xuất, giá thành khác 16 Ví dụ: Xuất “Hello, World” hình 17 Kiến trúc phân cấp nhớ 18 Bộ nhớ Cache 19 Thông tin môn học   Mơn học: Lập trình hệ thống 30 tiết lý thuyết (15 buổi – tiết/buổi) ▪ Tiết – thứ hàng tuần  Giảng viên lý thuyết: ▪ ThS Đỗ Thị Thu Hiền ▪ Email: hiendtt@uit.edu.vn ▪ Kênh trao đổi thông tin: ▪ Microsoft Teams ▪ Courses ▪ Email 20 Mục tiêu Cung cấp kiến thức gồm: ▪ Khái niệm lập trình hệ thống máy tính dạng ngơn ngữ Assembly, cách chuyển đổi ngôn ngữ cấp cao sang mã assembly/mã máy ngược lại ▪ Những khái niệm stack, pointer, cache kiến trúc máy tính ▪ Kiến thức kỹ tối ưu hóa chương trình Nhằm: ▪ Xây dựng chương trình an tồn hơn, hiệu có tầm nhìn hệ thống ▪ Phục vụ cho kỹ thuật dịch ngược, phân tích, debug kiểm lỗi phần mềm 21 Nội dung  Các chủ đề chính: 1) 2) 3) 4) 5) 6) 7)  Biểu diễn kiểu liệu phép tính toán bit Biểu diễn mảng, cấu trúc liệu C Ngôn ngữ assembly Điều khiển luồng C với assembly Các thủ tục (procedure) C mức assembly Phân cấp nhớ, cache Linking biên dịch file thực thi Lab liên quan ▪ Lab 1: Nội dung ▪ Lab 2: Nội dung 1, 2, ▪ Lab 3: Nội dung 1, 2, 3, ▪ Lab 4: Nội dung 1, 2, 3, 4, ▪ Lab 5: Nội dung 1, 2, 3, 4, ▪ Lab 6: Nội dung 1, 2, 3, 4, 22 Giáo trình  Giáo trình Computer Systems: A Programmer’s Perspective ▪ Second Edition (CS:APP2e), Pearson, 2010 ▪ Randal E Bryant, David R O’Hallaron ▪ http://csapp.cs.cmu.edu ▪ Slide: Tiếng Việt (+ Tiếng Anh) ▪ Giáo trình ĐH Carnegie Mellon (Mỹ)  Tài liệu khác ▪ The C Programming Language, Second Edition, Prentice Hall, 1988 Brian Kernighan and Dennis Ritchie ▪ The IDA Pro Book: The Unofficial Guide to the World's Most Popular Disassembler, 1st Edition, 2008 ▪ Chris Eagle ▪ Reversing: Secrets of Reverse Engineering, 1st Edition, 2011 ▪ Eldad Eilam ▪ 23 Môi trường - Công cụ hỗ trợ  Hệ điều hành Linux ▪ Máy ảo/thật Linux ▪ Hệ thống 32/64 bit ▪ (Khuyến khích) Tương tác qua giao diện command  GCC - Trình biên dịch C Linux  Các IDE lập trình  Phần mềm dịch ngược: ▪ IDA Pro (GUI) ▪ GDB (command line) 24 Đánh giá 30% trình/giữa kỳ + 20% thực hành + 50% cuối kỳ ❑ Quá trình/giữa kỳ: ▪ Bài tập assignment lớp ▪ Kiểm tra kỳ ❑ Thực hành: ▪ labs ▪ Vắng từ buổi thực hành trở lên → trừ tối thiểu 1/3 số điểm ❑ Cuối kỳ: ▪ Trắc nghiệm + Tự luận ▪ Có thể cho phép sử dụng 01 tờ A4 viết tay 25 Yêu cầu  Đến lớp  Tìm hiểu trước giảng  Thực đủ Bài tập lớp  Khi làm nhóm: ▪ Khơng ghi nhóm → chép  Sao chép → 26 Đánh giá… thêm :)  Trả lời câu hỏi khó  Điểm tích luỹ tập assignment 27 28

Ngày đăng: 24/04/2021, 00:59

TỪ KHÓA LIÊN QUAN

w