1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu và phân tích kiến trúc tổng quát của hệ điều hành linux

37 1 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

KHOA CƠNG NGHỆ THƠNG TIN ======***====== Đề tài : TÌM HIỂU VÀ PHÂN TÍCH KIẾN TRÚC TỔNG QUÁT CỦA HỆ ĐIỀU HÀNH LINUX Sinh viên thực hiện: Giáo viên hướng dẫn : HÀ NỘI 3-2011 BÀI TẬP LỚN HỆ ĐIỀU HÀNH ĐỀ TÀI BÀI TẬP LỚN: Tìm hiểu phân tích kiến trúc tổng quát hệ điều hành Linux BÀI LÀM Phần1: Giới thiệu hệ điều hành Linux Phần2: Quản lý người dùng Phần3: Quản lý chương trình Phần4: Quản lý thiết bị Phần5: Shell PHẦN I Giới thiệu hệ điều hành Linux Cấu trúc hệ thống Linus Tovalds đưa phiên cho hệ điều hành Linux vào tháng năm 1991 sở cải tiến phiên UNIX có tên Minix giáo sư Andrew S Tanenbaum xây dựng phổ biến Nhân Linux nhỏ song tự đóng gói Kết hợp với thành phần hệ thống GNU, hệ điều hành linux hình thành Và từ thời điểm đó, theo tư tưởng GNU, hàng nghìn, hàng vạn chuyên gia giới tham gia vào trình phát triển Linux linux ngày đáp ứng nhu cầu người dùng Sau năm nhân Linux đời, đến ngày 14/3/1994, hệ điều hành Linux phiên 1.0 phổ biến Thành công lớn phiên 1.0 hỗ trợ giao thức mạng TCP/IP chuẩn UNIX, sánh với giao thức socket BSD- tương thích cho lập trình mạng Trình điều khiển thiết bị bổ sung để chạy IP mạng Ethernet tuyến đơn modem Hệ thống file Linux 1.0 vượt xa hệ thống file minix thong thường, hỗ trợ điều khiển SCSI truy nhập đĩa tốc độ cao Điều khiển nhớ ảo mở rộng để hỗ trợ điều khiển trang cho file swap ánh xạ nhớ file file đặc quyền Vào tháng 3/1995, nhân 1.2 phổ biến Điều đáng kể Linux 1.2 so với Linux 1.0 chỗ hỗ trợ phạm vi rộng phong phú phần cứng, bao gồm kiến trúc tuyến phần cứng PCI Nhân Linux 1.2 la nhân kết thúc dòng nhân Linux hỗ trợ PC.Tháng 6/1996, nhân Linux 2.0 phổ biến.Có hai đặc trưng dịng nhân Linux 2.0 hỗ trợ kiến trúc phức hợp, bao gồm cổng Alpha 64bit đầy đủ, hỗ trợ kiến trúc đa xử lý Motorola 68000 kiến trúc SPARC SUN Các thi hành Linux dựa vi nhân GNU Mach chạy PC Power Mach Tới năm 2000, nhân Linux 2.4 phổ biến Một đặc điểm quân tâm nhân hỗ trợmax kí tự Unicode 32bit, thuận lợi cho việc xây dựng giải pháp toàn diện triệt để ngôn ngữ tự nhiên tồn giới Unix xem kim tự tháp với chức xếp chồng lên tạo giao diện Phần cứng (hardware) đề cập sau Hệ điều hành tương tác trực tiếp với phần cứng, cung cấp dịch vụ cho chương trình ngăn cách chương trình với phần cứng cụ thể Nếu nhìn hệ thống từ lớp, os thống thường gọi nhân hệ thống(System Kernel), cách ly với chương trình người dung Bởi chương trình ứng dụng nói chung, kể OS, độc lập với phần cứng, nên dễ dàng BÀI TẬP LỚN HỆ ĐIỀU HÀNH chạy phần cứng khác khơng phụ thuộc vào phần cứng cụ thể Chẳng hạn Shell editors(vi,ed) lớp tương tác với kernel cách phát sinh gọi hệ thống (GHT)- system call GHT thị cho kernel làm việc khác mà chương trinh gọi yêu cầu, thực trao đổi liệu(data) kernel chương trình Một vài chương trình có tên có tên hình chương trình chuẩn cấu hình hệ thống biết tên dạng lệnh- command Lớp bao hàm chương trình người dùng với tên a,out,một loại têncho loại tệp chạy dịch C tạo Cịn có loại ứng dụng khác (APPS) xây dựng lớp chương trình có mức thấp diện lớp ngồi mơ hình Mặc dù mơ hình mơ tả hai cấp APPS, người dùng mở rộng cấp thích hợp Rất nhiều hệ thống ứng dụng, chương trình, cho cách nhìn mức cao, song tất dùng dịch vụ cấp thấp cung cấp kernel qua GHT Trong System V chuẩn có 64 GHT, có 32 GHT thường dùng Tập hợp System calls thuật toán bên tạo thành thân (body) kernel Các thành phần tích hợp Hệ điều hành Linux Linux sử dụng nhiều thânhf phần từ dự án phần mềm tự GNU, từ hệ điều hành BSD đại học Berkeley từ hệ thống X-Window Mit Thư viện hệ thống trị Linux bắt nguồn tự dự án GNU, sau nhiều người cộng đồng Linux phát triển tiếp, phát triển vậychur yếu lien quan tới việc giải vấn đề thiếu vắng địa chỉ, thiếu hiệu gỡ rối Một số thành phần khác dự án GNU, chẳng hạn trình biên dịch GNU C (gcc), vốn chất lượng cao nên sử dụng nguyên xy Linux Các tool quản lý mạng bắt nguồn từ mã 4.3BSD song sau cộng đồng Linux phát triển, chẳng hạn htuw toán học đồng xử lý dấu chấm đậm Intel trình điều khiển thiết bị phần cứng âm tahnh PC Các tool quản lý mạng sau lại bổ sung vào hệ thống BSD Hệ thống Linux trì gần mạng khơng chặt chẽ nhà phát triển phần mềm cộng tác với qua Internet, mạng lưới gồm nhóm nhỏ cá nhân chịu trách nhiệm trì tồn vẹn thành phần Một lượng nhỏ site phân cấp ftp Internet cơng cộng đã đóng vai trò nhà kho theo chuẩn de facto để chứa thành phần Tài liệu chuẩn phâncaaps hệ thống file (File System Hierarchy Standard) BÀI TẬP LỚN HỆ ĐIỀU HÀNH cộng đồng Linux trì nhằm giữ tính tương thích xuyên qua khác biệt lớn thành phân hệ thống Một số đặc điểm Linux  Linux tương thích với nhiều hệ điều hành DOS, Microsort Windows…  Cho phép cài đặt Linux với hệ điều hành khác ổ cứng           Linux truy nhập đến file hệ điều hành ổ đĩa Linux cho phép chạy mơ chương trình thuộc hệ điều hành khác Do giữ chuẩn UNIX nên chuyển đổi Linux và hệ UNIX khác dễ dàng Linux hệ điều hành UNIX tiêu biểu với đặc trưng đa người dùng, đa chương trình đa xử lý Linux có giao diện đồ họa (GUI) thừa hưởng hệ thống X-Window Linux hỗ trợ nhiều giao thức mạng, bắt nguonf phát triển từ dịng BSD Them vào đó, Linux cịn hỗ trợ tính tốn thời gian thực Linux mạnh chạy nhanh nhiều trình nhiều cửa sổ Linux cài đặt nhiều chủng loại máy tính khác PC, Mini việc cài đặt thuận lợi Tuy nhiên chưa xuất Linux máy tính lớn (mainframe) Linux hỗ trợ tốt cho tính tốn song song máy tính cụm (PC-cluster) hướng nghiên cứu triển khai ứng dụng nhiều triển vọng Là hệ điều hành với mã nguồn mở, phát triển qua cộng đồng nguồn mở nên Linux phát triển nhanh Linux số hệ điều hành quan tâm nhiều giới Linux hệ điều hành hỗ trợ đa ngơn ngữ cách tồn diện Do Linux cho phép hỗ trợ mã chuẩn từ 16bit trở lên việc địa hóa Linux triệt để hệ điều hành Tuy nhiên tồn số khó khăn làm cho Linunx chưa trở thành hệ điều hành phổ dụng Tuy có cơng cụ hỗ trợ cài đặt, nhiên việc cài Linux tương đối phức tạp khó khăn Khả tương thích Linux với số loại thiết bị phần cứng thấp chưa có trình điều khiển cho nhiều thiết bị Phần mềm ứng dụng chạy Linux phong phú song so với số hệ điều hành khác, đặc biệt so sánh với MS Windows, cịn có khoảng cách Với hỗ trợ nhiều công ty tin học hàng đầu giới (IBM, SUN, HP…) tham gia phát triển hàng vạn chuyên gia toàn giới thuộc cộng đồng Linux, khó khăn Linux nhanh chóng khắc phục.Chính lẽ hình thành số nhà cung cấp Linux có tiếng địa website họ Sơ thành phần Linux Hệ thống Linux ,được thi hành hệ điều hành UNIX truyền thống, gồm Shell ba thành phần sau: -Nhân hệ điều hành chịu trì đối tượng trừu tượng quan trọng hệ điều hành, bao gồm nhớ ảo q trình.Các mơ đun chương trình nhân đặc quyền hệ thống, bao gồm đặc quyền thường trực nhớ -Thư viện hệ thống xác định tập chuẩn để ứng dụng tương tác với nhân, thi hành nhiều chức hệ thống khơng cần có đặc quyền moo đun thuộc nhân Một hệ thống điển hình thi hành dựa thư viện hệ thống hệ thống file Linux BÀI TẬP LỚN HỆ ĐIỀU HÀNH -Tiện ích hệ thống chương trình thi hành nhiệm vụ quản lý riêng rẽ, chuyên biệt.Một số tiện ích hệ thống gọi lần để khởi đọng cấu hình phương tiện hệ thống, số tiện ích khác theo thuật ngữ UNIX gọi trình chạy ngầm (daemon), chạy cách thường xuyên (thường theo chu kỳ),điều khiển toán kết nối mạng đến, tiếp nhận yêu cầu logon, cập nhật file log Sơ nhân Nhân Linux, mơ đun chương trình có vai trị điều khiển thành phần máy tính, phân phối tài nguyên cho người dùng Nhân cầu nối chương trình ứng dụng với phần cứng Người dùng sử dụng bàn phím gõ nội dung u cầu yêu cầu nhận gửi tới shell: Shell phân tích lệnh gọi chương trình tương ứng với lệnh để thực Một chức quan trọng nhân giải toán lập lịch, tức hệ thống cần phân chia CPU cho nhiều trình thời tồn Lionux số lên tới hàng nghìn Với số lượng chương trình đồng thời nhiều vậy, thuật toán lập lịch cần phải đủ hiệu quả: Linux thường lập lịch theo chế độ Round Robin(RR) thực việ luân chuyển CPU theo lượng tử thời gian Thành phần quan trọng thứ hai nhân hệ thống chương trình( gọi lời gọi hệ thống) làm việc với hệ thống file Linux có hai cách thức làm việc với file: làm việc theo byte làm việc theo khối Một đạc điểm đáng ý file Linux nhiều người truy nhập tới nên lời gọi hệ thống làm việc với file cần đảm bảo file truy nhập theo quyền chia xẻ cho người dùng Sơ Shell Shell dịch lệnh hoạt động kết nối trung gian nhân người dùng: Shell nhận dòng lệnh người dùng đưa vào; từ dịng lệnh nói nhân tách phận để nhận hay số lệnh tương ứng với đoạn văn có dòng lệnh Một lệnh bao gồm tên lệnh tham số: từ tên lệnh, từ tham số Tiếp theo, Shell nhân sử dụng nhân để khởi sinh trình sau đó, shell chờ đội q trình tiến hành, hoàn thiện kết thúc Khi shell sẵn sang tiếp nhận dòng lệnh người dùng, dấu nhắc shell xuất hình.Linux có hai loại shell phổ biến là: C-Shell, Bourne-shell số shell phát triển từ shell nối Dấu mời phân biệt shell nói khơng phải hồn tồn Linux cho phép người dùng thay đổi lại dấu nhắc shell nhờ việc thay giá trị biến PS1 PS2 PhầnII: Quản lý người dùng Đa người dùng : BÀI TẬP LỚN HỆ ĐIỀU HÀNH Cho phép chạy đồng thời độc lập nhiều ứng dụng nhiều người dùng -Đồng thời (concurrently): Kích hoạt lúc Cùng yêu cầu tài nguyên hệ thống: CPU,RAM,HDD, -Độc lập (independently): Không quan tâm đến ứng dụng người dùng khác làm • Local System: – Các ứng dụng tài nguyên máy – Nhiều người dùng thực • Network System: – Thực qua môi trường mạng (Networking) – Cho phép người dùng xa truy nhập đến tài nguyên hệ thống (remoteuser) Yêu cầu với hệ thống: • • • Cơ chế mã hóa xác nhận người dùng Cơ chế bảo vệ chống chương trình độc hại thực cơng việc: – Chặn chương trình khác – Có khả lây nhiễm, gián điệp, Cơ chế tài khoản người dùng: – Hạn chế quyền truy cập đến tài nguyên hệ thống người dùng Người dùng (Users) • • • Đăng nhập (login) tài khoản (account) Sở hữu vùng ổ cứng riêng (private) để lưu trữ liệu cá nhân Được gán quyền làm việc định tài nguyên Tài khoản người dùng BÀI TẬP LỚN HỆ ĐIỀU HÀNH • Tài khoản (account) có phần: – Tên đăng nhập (login name): không chứa ký tự đặc biệt: + - * / ~ ` ! ‘ “ ? : – Mật (password): ký tự Đảm bảo an toàn với số ký tự >= Thông tin người dùng lưu trữ file: /etc/passwd Thông tin mật lưu trữ file: /etc/shadow Cấu trúc liệu /etc/passwd • • • • • • • Username: tên đăng ký để login Password: mật login vào hệ thống UID: mã người dùng GID: mã nhóm Comments: thích bổ sung Home directory: thư mục gốc làm việc Default Shell: Shell mặc định sau login Phần III.Quản lý tiến trình Mỗi tiến trình Linux biểu diễn cấu trúc liệu task_struct (task có nghĩa tiến trình Linux) Linux sử dụng task vector để quản lý trỏ đến task_struct, mặc định có 512 phần tử Khi tiến trình tạo ra, task_struct cấp phát nhớ thêm vào vector task Linux hỗ trợ hai loại tiến trình loại bình thường loại thời gian thực Cấu trúc task_struct gồn trường sau : trạng thái (thi hành, chờ, ngưng, lưng chừng), thông tin lập lịch, định danh, thông tin liên lạc tiến trình, liên kết, định thời gian, hệ thống tập tin, nhớ ảo, ngữ cảnh Trong Linux Unix, chương trình lệnh thực theo chế thông dịch Bộ thông dịch gọi shell Linux hỗ trợ nhiều loại shell sh, bash, tcsh Tập tin thi hành có nhiều dạng, dạng sử dụng thơng dụng Linux EFL, ngồi Linux hiểu nhiều dạng tập tin khác Các chế thông tin liên lạc tiến trình sử dụng tín hiệu (SIGNALS), đường ống (PIPE), sockets, semaphore nhớ chia xẻ Có tập hợp tín hiệu định nghĩa trước, tính hiệu phát sinh hạt nhân tiến trình khác nhớ Linux cài đặt tín hiệu task_struct Khơng phải tiến trình hệ thống gửi tín hiệu đến tiến trình khác Tín hiệu phát sinh cách thiết lập bit thích hợp trường signal cấu trúc task_struct Tín hiệu khơng xuất cho tiến trình tạo mà phải chờ đến tiến trình thực trở lại Trong Linux chế đường ống cài đặt sử dụng hai cấu trúc file trỏ đến inode VFS tạm thời xác định trang vật lý nhớ Khi tiến trình ghi thực việc ghi vào BÀI TẬP LỚN HỆ ĐIỀU HÀNH đường ống, byte chép vào trang liệu chia sẻ Linux phải đồng trình truy xuất đường ống Tiến trình ghi sử dụng hàm thư viện ghi chuẩn Các chế socket, semaphores nhớ chia sẻ Linux gần giống với hệ thống Unix System V A Tổng quan tiến trình Tiến trình Unix hệ đa xử lý, tức khả thực thi nhiều tác vụ lúc Một chương trình máy tính chuỗi lệnh (intructions, hay cịn gọi lệnh may) mà theo máy tính phải thực Mặt khác tài nguyên máy tính (CPU, nhớ, tệp, thiết bị ) hữu hạn chương trình chạy chương trình có nhu cầu tài ngun Dễ đáp ứng nhu cầu tài nguyên, cần có sách lược chạy trình thật hiệu để đảm bảo tính đa nhiệm, nhiều người dùng Cách phổ biến cấp tài nguyên cho chương trình lượng thời gian định, cho chương trình có hội thực thời gian thực chương trình, cần kiểm sốt việc thực chặt chẻ Dễ làm điều đó, ta đưa khái niệm gọi tiến trình(process) Vậy tiến trình (TT) thời gian thực (instance of execution) chương trình việc thực hiện xảy khoản thời gian định (gọi slice time)) Tuy nhiên để thực chương trình, TT sử dụng CPU để chạy lệnh nó, nhớ nơi có mã lệnh (code hay text), liệu (data), ngăn xếp (stack) Một TT thực phải làm theo trình tự lệnh vùng code TT không nhảy tới lệnh TT khác; TT đọc/ghi truy nhập data stack nó, khơng thể data stack TT khác TT liên lạc với TT khác phần lại hệ thống Gợi Hệ Thống (GHT, System call) Hệ thống phân chia việc thực hai chế độ, user mode kernel mode nói, cho dù vậy, kernel người thực mã TT (còn gọi "nhân danh TT người dùng") Cần nhận thức rằng, kernel tập tách biệt TT chạy song song với TT người dùng, mà kernel phần môi TT người dùng Môi trường thực 2.1 Chế độ thực Việc thực TT Unix chia làm hai mục: user (người dùng) kernel (nhân hệ thống) Khi TT user thực chức nhân (thông qua gọi hệ thốngfight), chế độ thực TT chuyển từ chế độ người dùng (user mode) sang chế độ nhân hệ thống( kernel mode) Hệ thống thực phục vụ yêu cầu user, trả lại kết Ngay user tạo yêu cầu không tường minh, hệ thực kết tốn có liên quan tới TT user, thao tác ngắt, lập biểu TT, quản 11 nhớ Kernel mode chế độ đặc quyền, khơng có giới hạn kernel: kernel sử dụng tất lệnh CPU, ghi CPU, kiểm soát nhớ, liên lạc trực tiếp với thiết bị ngoại vi Kernel tiếp nhận xử 11 yêu cầu TT user, sau gởi kết đến TT User mode hiểu chế độ thực bình thường tiến trình Trong chế độ này, có nhiều hạn chế áp đặt lên TT: TT truy nhập lệnh liệu nó, khơng thể truy nhập lệnh, liệu kernel TT khác, số ghi CPU cấm Vl dụ: không gian địa ảo TT chia thành miền truy nhập chế độ kernel, miền khác chế độ user, hay TT tương tác với may vật 11, số lệnh CPU khơng sử dụng, bị ngắt lúc BÀI TẬP LỚN HỆ ĐIỀU HÀNH Một TT user mo de muốn truy nhập tài nguyên, phải thực qua gọi hệ thống (GHT) Gọi hệ thống (GHT hay gọi thực chức hệ thống cung cấp) q trình chuyển thơng số (u cầu qua tên hay số dịch vụ hệ thống) mà TT yêu cầu cho kernel thực Trong Unix, việc làm qua bẫy hệ thống (trap), sau kernel thực nhu cầu TT, đơi cịn nói là: kernel thực TT danh nghĩa TT, môi trường TT Kernel tập tách biệt TT chạy song song với TT người dùng, mà phần TT người dùng Văn cảnh trình bày nói "kernel cung cấp tài nguyên" hay "kernel thực " có nghĩa TT chạy kernel mode cấp tài nguyên hay TT thực Bản chất GHT để thực dịch vụ kernel mã thực thi dịch vụ phần mã TT người dùng, khác mã chạy kernel mo de mà Vl dụ: sách đọc đầu vào từ thiết bị đầu cuối GHT, lúc kernel thực nhân danh TT sách, kiểm soát thao tác thiết bị đầu cuối trả lại cho kí tự nhận Sách sau chạy user mode, thơng dịch xâu kí tự thực hành vi định phát sinh GHT 2.2 Mơi trường thực tiến trình Như nói có nhiều TT thực đồng thời hệ thống, kernel cần lậpbiểu để đưa vào thực Mỗi TT có TT bố, có nhiều TT Kernel nhận biết TT qua sơ hiệu cua TT gọi số định danh TT (Procces ID: PID) Khi dịch chương trình nguồn, tệp khả thi (executable) tạo có phần sau: - Tập "headers " mô tả thuộc tính tệp; - Mã chương trình (code hay gọi text); - Một thể nguồn ngữ may liệu khởi động trình bắt đầu thực chi báo vê kích thước (bộ nhớ) mà kernel cấp phát cho liệu chưa khởi động - Và thành phần khác, bảng biểu tượng Ví dụ:chương trình copy tệp #include char buf[1024]; /*là data chưa khởi động*/ int version=1; /*là data khởi động*/ main(argc,argv) int argc ; char*argv[] ; { int fdold,fdnew ; if (argc!=3) { printf(“can doi dau vao cho trinh copy\n); exit(1); } fdold=open(arg[1],OfiRDONLY); if(fdold==-1) { printf(“khong mo duoc tep%s\n”,argv[1]); exit(1); } fdnew =creat(argv[2].0666); BÀI TẬP LỚN HỆ ĐIỀU HÀNH if (fdnew==-1) { printf(“khong tao duoc tep moi%s \n,argv[2]); copy(fdold,fdnew); exit(0); } copy(old,new) int old,new; { Int count; While((count=read(old,buffer,sizeof(buffer)))>0) Write(new,buffer,count); } Trong đó, text mã tạo cho hàm main, liệu khởi động biến version(int version=1) liệu chưa khởi động có kích thước cho trước trường buffer Kernel nạp tệp thực thi (executable) GHT exec (Unix có chức exec (Execl(), execv(), execle(), execve(), execle(), execvp()) TT nạp có ba phần gọi miền (region) : mã lệnh (text hay code xâu liên tục lệnh liệu (dao ngăn xép (stack) Hai miền đầu tương ưng với xác định tệp, cịn stack kernel tạo điều chỉnh động vào thời điểm chạy trình Một TT Unix chạy hai chế độ nói nên có hai stack riêng biệt cho thoại chế độ: user stack kernel stack User stack chưa đối đầu vào, biến cục bộ, khác cho chức chạy chế độ user mode Xem hình dưới, bên trái: Khi TT phát sinh gọi hàm copy() (frame 2) hàm write() (frame 3) hai khung stack liên tục hàm manh), fiamel stack cho mạnh) hệ thống thực exec() để gọi manh); Khi TT thực GHT (writre()), TT thực lệnh đặc biệt (lệnh trao cài vào mã dịch qua hợp ngữ), lệnh tạo "ngắt" chuyển CPU vào chế độ kernel, TT thực lệnh kernel sử dụng kernel stack Kernel stack chưa khung stack cho chức (system calls) thực kernel mo de Các đầu vào hàm liệu kernel stack qui chiếu vào hàm dữliệu bên kernel, hàm dư liệu chương trình người dùng Hình dưới, bên phải biểu diễn TT gọi GHT write() Tuy cách cấu tạo stack hai Kernel stack TT TT thực user mode Phần bàn kĩ đề cập tới bối cảnh (context) TT Mỗi TT có đầu vào (entry) Bang Tiền trinh (Process Table) Mỗi TT lại cấp vùng liệu gọi ufiarea (user area) dùng để lưu liệu riêng TT mà kernel xử 11 Thông tin cấu trúc gồm có: Các ghi CPU Khi có bẩy vào kernel xuất hiện, ghi (kể đơn vị dấu phẩy động) lưu lại đây.registers (including the noating-point ones, ifused) me saved hắc Trạng thái gọi hệ thống: thông tin GHT tại, bao gồm thông số lời gọi kết thực lời gọi Bảng mơ tả tệp TT với fd số trỏ vào bảng để định vị cấu trúc in-core dâm (i-node) tương ưng với tệp Con trỏ tới bảng kết toán thời gian sử dụng CPU TT, giá trị giới hạn hệ thống (max stack size, max page frames, v.v .)

Ngày đăng: 25/09/2023, 10:00

Xem thêm:

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w