BÁO CÁO BÀI TẬP LỚN HỆ ĐIỀU HÀNH Đề tài: Tìm Hiểu Về Biên Dịch Kernel Cấu Hình Lại Trên Một Hệ Điều Hành Nhân Unix Để Cài Đặt Trên Máy Chưa Có Hệ Điêu Hành Giảng Viên Hướng Dần: TS Phạm Dỗn Tĩnh Nhóm:10 Trần Văn Huyện 20153 Nguyễn Thanh Lộc 20152304 Nguyễn Sĩ Khiêm 2015 Nguyễn Văn Thanh 20153332 Nguyễn Anh Tuấn LỜI NHẬN XÉT CỦA GIẢNG VIÊN Hà Nôi,Ngày tháng năm 2019 Giảng Viên MỤC LỤC DANH MỤC HÌNH ẢNH DANH MỤC BẢNG BÌỂỤ PHAN A LỜI NÓI ĐẦU Hệ điều hành (Operating System-OS) phần mềm chạy máy tính thiết bị di động ,dùng để điều hành,quản lý thiết bị phần cứng tài nguyên phần mềm máy tính thiết bị di động Hệ điều hành quản lý tài nguyên máy tính bao gồm:Các thiết bị đầu vào bàn phím cht, Các thiết bị đầu hình hiển thị, máy in máy quét, Các thiết bị mạng modem, định tuyến kết nối mạng, Các thiết bị lưu trữ ổ đĩa Hệ điều hành cung cấp dịch vụ để tạo thuận lợi cho việc thực quản lý hiệu phân bổ nhớ cho chương trình ứng dụng phần mềm cài đặt bổ sung Hệ điều hành bao gồm nhiều thành phần tính Những tính định nghĩa phần hệ điều hành khác tùy theo hệ điều hành Tuy nhiên, ba thành phần dễ dàng xác định là: > Kernel: Kernel cung cấp điều khiển mức tất thiết bị phần cứng máy tính Các vai trị bao gồm: đọc liệu từ nhớ ghi liệu vào nhớ, xử lý lệnh thực hiện, xác định cách liệu nhận gửi thiết bị hình, bàn phím, chuột xác định cách diễn giải liệu nhận từ mạng > Giao diện người dùng: User Interface cho phép việc tương tác với người dùng thông qua graphical icons desktop thông qua command line > Giao diện lập trình ứng dụng: Application Programming Interfaces cho phép application developers viết modular code Các thành phần hệ điều hành phức tạp , khuôn khổ tập lớn chúng em tập trung vào việc tiềm hiểu nhân kernel thành phần trung tâm hệ điều hành.Vì chúng em lựa chọn đề tài “Tìm Hiểu Biên Dịch Kernel Cấu Hình Lại Trên Một Hệ Điều Hành Nhân Unix Để Cài Đặt Trên Máy Chưa Có Hệ Điêu Hành” Trong thời gian tìm hiểu làm đề tài dựa vào kiến thức học ởtrường, qua số sách, tài liệu có liên quan với giúp đỡ tận tình thầy giáo,các bạn đặc biệt với hướng dẫn tận tình thầy Phạm Dỗn Tĩnh Mặc dù cố gắng hồn thành với kinh nghiệm khả hạn chế nên chúng em khơng thể tránh khỏi sai sót nhầm lẫn, chúng em mong thầy, giáo bạn đóng góp ý kiến q báu để chúng em hồn thiện đề tài Chúng em xin chân thành cảm ơn! PHAN B.NỘI DUNG Chương I.Cơ sở lý thuyết 1.1 Hệ điều hành nhân unix/linux 1.1.1 Hệ điều hành nhân unix Unix hay Unix hệ điều hành tính viết vào năm 1960 1970 số nhân viên công ty AT&T Bell Labs bao gồm Ken Thompson,Dennis Ritchie Douglas Mcllroy.Từ góc nhìn người dùng chun nghiệp lập trình viên,Hệ thống Unix có đặc điểm thiết kế theo module,đơi cịn gọi triết lý Unix,nghĩa hệ điều hành cung cấp tập hợp công cụ đơn giản,mỗi công cụ thực chức giới hạn định nghĩa rõ ràng ,với hệ thống file hợp phương tiện để giao tiếp phần lập trình vỏ ngôn ngữ lệnh để kết hợp công cụ để thực chức phức tập,Ngày hệ điều hành Unix phân thành nhiều nhánh khác nhau,nhánh AT&T,nhánh số nhà phân phối thương mại nhánh tổ chức phi lợi nhuận.Unix chạy nhiều loại máy tính khác nhau,,từ máy tính cá nhân máy chủ dịch vụ.Nó hệ điều hành đa nhiệm hỗ trợ cách lý tưởng ứng dụng nhiều người dùng.Unix viết ngơn ngữ lập trình C,một ngôn ngữ mạnh mềm dẻo.Unix hỗ trợ ứng dụng mạng hỗ trợ nhiều môi trường lập trình khác nhau.Với hàng trăm lệnh số lượng lớn tùy chọn,Unix thực khó khăn người bắt đầu.Với phát triển shell Unix hệ điều hành trở nên phổ dụng lĩnh vực điện tốn Vì Bell Laboratories bị cấm không cho phép tiếp thị Unix lệnh chống độc quyền AT&T nên Unix cung cấp miễn phí cho trường đại học toàn Bắc Mỹ từ năm 1976.Sau ưa thích lĩnh vực cơng nghệ,AT&T giành quyền tiếp thị Unix cho đời System V vào năm 1983.Cho đến Unix sử dụng rộng rãi thị trường máy chủ 1.1.2 Hệ điều hành nhân linux Linux hệ điều hành nguồn mở dựa Unix Nói cách xác, thuật ngữ “Linux” sử dụng để nhân Linux (Linux kernel).Phiên Linux Torvalds viết vào năm 1991,lúc ơng cịn l sinh viên Đại học Helsinki Phần Lan Ông làm việc cách hăng say vòng năm liên tục cho đời phiên Linux 1.0 vào năm 1994 HĐH hoàn chỉnh dựng lên từ Linux Kernel kết hợp với ứng dụng khác làm việc gọi vắn tắt Linux OS, phiên biến thể khác Linux OS cộng đồng xây dựng sẵn gọi Linux distro, Linux distro lại có nhiều version Hệ điều hành Linux có giao diện người dùng đồ họa (GUI) giao diện dòng lệnh (CLI) KDE GNOME môi trường GUI khác HĐH Linux Linux thường phân phối miễn phí, tải xuống miễn phí, có số phân phối Linux có phí Red Hat Linux, chúng thường rẻ Windows Linux hệ điều hành linh hoạt tương thích với hầu hết hệ thống phần cứng Hệ điều hành Linux cài đặt thực thi hầu hết thiết bị có xử lý Vì linh hoạt nhanh nhẹn, Linux cài đặt nhiều loại phần cứng máy tính, từ điện thoại di động, máy tính bảng máy chơi game, đến máy tính lớn siêu máy tính Linux OS HĐH mã nguồn mở, mã nguồn có sẵn miễn phí Do đó, bạn đọc, sửa đổi triển khai máy Tuy nhiên, bạn khơng thể bán thuộc Giấy phép GPL GNU Linux có khả mở rộng cao hỗ trợ tập hợp lớn hệ thống file (file systems) như: xfs, ramfs, nfs, vfat, cramfsm ext3, ext4, ext2, extl, ufs, autofs, devpts, ntfs Việc cài đặt Linux nói chung kinh tế so với Unix khơng u cầu phần cứng đặc biệt để chạy thân hệ điều hành nói, miễn phí rẻ Linux có sơ distro sau: • Redhat • Kali • Slackware • Debian • ArchLinux • Solaris • Ubuntu • CentOS • Fedora HĐH Linux an tồn Linux có khoảng 60 - 100 virus liệt kê nay, nhiên, ngày loại virus tích cực lây lan Linux ban đầu phát triển cho CPU Intel86 x86 Tuy nhiên, support nhiều loại CPU khác bao gồm ARM 1.2.Kernel 1.2.1 Cấu trúc Vào năm 1991, dựa UNIX kernel, Linus Torvalds tạo Linux kernel chạy máy tính ơng Dựa vào chức hệ điều hành, Linux kernel chia làm thành phần /kernel Chứa mã nguồn triển khai nhiệm vụ lập lịch đồng hoạt động tiến trình /mm Chứa mã nguồn triển khai nhiệm vụ quản lý nhớ /net Chứa mã nguồn triển khai nhiệm vụ xử lý gói tin theo mơ hình TCP/IP Bảng Một số thư mục mã nguồn linux kernel 1.2.2 Hoạt động kernel Bộ nhớ RAM chứa lệnh/dữ liệu dạng nhị phân Linux kernel tiến trình RAM chia làm miền • Kernel • User space vùng khơng gian chứa lệnh liệu kernel space vùng không gian chứa lệnh liệu tiến trình Tiễn trình ựoid maĩn() ( int a = + 10; printf(“%d", a); int a = printf(“%d", a); Hình kiến trúc linux kernel đứng góc độ thực thi CPU có chế độ thực thi (hình 1.2): • Khi CPU thực thi lệnh kernel, hoạt động chế độ kernel mode Khi chế độ này, CPU thực lệnh tập lệnh nó, CPU truy cập địa khơng gian địa • Khi CPU thực thi lệnh tiến trình, hoạt động chế độ user mode Khi chế độ này, CPU thực phần tập lệnh nó, CPU phép truy cập phần khơng gian địa Để cho dễ hình dung, ta liên tưởng này: CPU giống bạn, tiến trình giống cơng việc sếp giao cho bạn, cịn kernel giống cơng việc vợ giao cho bạn Khi bạn thực thi việc sếp, bạn thực cho xong, không nỗ lực hết mình, việc mà ảnh hưởng đến quyền lợi bạn bạn khơng làm Thái độ làm việc bạn giống chế độ user mode CPU Khi bạn thực thi việc vợ, bạn thực việc tồn tâm tồn ý, nỗ lực hết mình, việc Thái độ làm việc bạn giống chế độ kernel mode CPU Để hiểu rõ hơn, ta xét tiến trình hình 1.2 Tiến trình gồm nhiều lệnh nhị phân, tương ứng với lệnh C CPU lấy lệnh thực thi Lệnh thứ nhất, "a = + 10", lệnh tính tốn, CPU thực thi chế độ user mode Lệnh thứ hai, "printf("%d", a)", lệnh vào/ra Hàm "printf' gọi system call "write" để yêu cầu Linux kernel in thông tin hình Khi đó, CPU chuyển sang chế độ kernel mode để thực thi lệnh Linux kernel Tiến trình yêu cầu cung cấp dịch vụ Kernel mode (process context) Thực thi tiên trình User mode Hồn thành xử !ý ngắt Thực thi trình phục vụ System cafl Thiết bị gữi tín hiệu ngắt Thiết bị gửi tín hiệu ngăt Hồn thành xử lý ngai Kernel mode (interrupt context) Thực thi trình phục vụ ngắt Hình Các chế độ hoạt động cpu Khi tiến trình cần sử dụng dịch vụ kernel, tiến trình gọi system call System call tương tự hàm bình thường khác (library call) Chỉ có điều, library call cung cấp thư viện user space, system call cung cấp kernel Do đó, tiến trình gọi library call, CPU giữ nguyên chế độ thực thi user mode Cịn tiến trình gọi system call, CPU phải chuyển sang chế độ kernel mode để thực thi lệnh kernel (hình 2.3) Lúc này, ta nói rằng, CPU thực thi chế độ kernel mode, ngữ cảnh process context Sau kernel thực xong yêu cầu, kernel gửi trả kết cho tiến trình Lúc này, CPU lại chuyển sang chế độ user mode để thực thi tiếp lệnh tiến trình Ngồi system call, ngắt nguyên nhân khiến CPU chuyển chế độ thực thi sang kernel mode (hình 5) Khi có thiết bị muốn trao đổi liệu với CPU, gửi tín hiệu ngắt tới CPU cách nâng điện áp chân INT CPU Khi đó, CPU ngừng thực thi lệnh tiến trình lại, chuyển sang chế độ kernel mode thực thi chương trình đặc biệt kernel để xử lý tín hiệu ngắt Lúc này, ta nói CPU đangthực thi chế độ kernel mode, ngữ cảnh interrupt context Sau xử lý xong, CPU trở lại chế độ user mode tiếp tục thực lệnh tiến trình Chương Il.Cài đặt 2.1 Biên dịch cài đặt kernel Kiểm tra phiên kernel dùng: uname -r vanthanh(3)ubuntu: ~ © Kinh nghiệm thu • Hiểu hệ điều hành • Biết cấu trúc hoạt động nhân kernel • Làm quen với hệ điều hành (ubuntu) • Vận dụng tổng hợp nhiều kiến thức học để giải vấn đề.Cơ họi thực hành kiến thức học • Nâng cao khả làm việc nhóm tinh thần trách nhiệm cá nhân công việc chung > Kết đạt • Biên dịch cài đặt kernel thành cơng • Nhóm chưa thể hồn thành việc cài đặt file system Nhóm sinh viên chúng em xin chân thành cảm ơn giảng dạy tận tình giáo, giảng viên, TS.Phạm Dỗn Tĩnh giúp chúng em có kiến thức sở định hướng để hoàn thiện đề tài PHAN D.DANH MỤC TÀI LIỆU THAM KHẢO https://vi.wikipedia.org/wiki/Unix https://quantrimang com/unix-linux-la-gi-156576 https ://vi wikipedia.org/wiki/Linux https://tinhte.vn/threads/phan-biet-giua-unix-va-linux.816063/ ... Kernel Cấu Hình Lại Trên Một Hệ Điều Hành Nhân Unix Để Cài Đặt Trên Máy Chưa Có Hệ Điêu Hành? ?? Trong thời gian tìm hiểu làm đề tài dựa vào kiến thức học ởtrường, qua số sách, tài liệu có liên... Các thành phần hệ điều hành phức tạp , khuôn khổ tập lớn chúng em tập trung vào việc tiềm hiểu nhân kernel thành phần trung tâm hệ điều hành. Vì chúng em lựa chọn đề tài ? ?Tìm Hiểu Biên Dịch Kernel. .. xin chân thành cảm ơn! PHAN B.NỘI DUNG Chương I.Cơ sở lý thuyết 1.1 Hệ điều hành nhân unix/ linux 1.1.1 Hệ điều hành nhân unix Unix hay Unix hệ điều hành tính viết vào năm 1960 1970 số nhân viên