Tính đến năm 2014 thì Linux đã ra đời được 23 năm, một hệ điều hành hoàn thiện với sự hỗ trợ cho một loạt các mô hình sử dụng.Linux không chỉ là một hệ điều hành - nhân mô đun và tính
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Trang 21.1 Giới thiệu Linux 4
1.2 Hệ thống thiết kế của Linux 5
1.3 Lập trình trên Linux 8
1.4 Các mảng ứng dụng của Linux 9
1.4.1 Máy tính để bàn và netbook 9
1.4.2 Máy chủ, MainFrames và các siêu máy tính 10
1.4.3 Các thiết bị nhúng 11
1.5 Nền tảng ảo hóa 12
1.6 Nền tảng thử nghiệm 12
1.7 Hiệu suất và ứng dụng 13
CHƯƠNG 2: PHÂN TÍCH CÁC NGUYÊN TẮC SÁNG TẠO VẬN DỤNG TRONG LINUX 15
2.1 Nguyên tắc sao chép (copy) 15
2.2 Nguyên tắc đảo ngược 15
2.3 Nguyên tắc vạn năng 16
2.4 Nguyên tắc rẻ thay cho đắt 17
2.5 Nguyên tắc phân nhỏ 17
2.6 Nguyên tắc đồng nhất 19
2.7 Nguyên tắc kết hợp 20
2.8 Nguyên tắc chứa trong 20
Tài liệu tham khảo: 22
Trang 3Hình 1.1: Cấu trúc Linux nhìn bề ngoài 5
Hình 1.2: Sự tách biệt giữa các Userland và không gian hạt nhân qua các lớp 6
Hình 1.3 Các thuộc tính và các phân khúc của Linux 9
Hình 1.4: Thành phần phần mềm của máy tính Desktop Linux 10
Hình 1.5: Gói phần mềm LAMP, hiển thị cùng với Squid 11
Hình 2.1: Các phân khúc ứng dụng của Linux 16
Hình 2.2: Các thành phần của hệ điều hành Linux 17
Hình 2.3: Kiến trúc Linux 19
Trang 4CHƯƠNG 1: HỆ ĐIỀU HÀNH LINUX
Linux® đang ở thời điểm phát triển mạnh Tính đến năm 2014 thì Linux đã ra đời được
23 năm, một hệ điều hành hoàn thiện với sự hỗ trợ cho một loạt các mô hình sử dụng.Linux không chỉ là một hệ điều hành - nhân mô đun và tính linh hoạt của nó có thể xử lýtrong nhiều mô hình sử dụng (từ siêu máy tính lớn nhất đến các thiết bị nhúng nhỏ nhất).Trong thực tế, Linux là một nền tảng Nó là một công nghệ then chốt cho phép tạo ra cácsản phẩm mới, mà một vài trong số các sản phẩm đó mới chỉ được giới thiệu gần đây
1.1 Giới thiệu Linux
Linux là được phát triển tựa Unix và tuân thủ chuẩn POSIX Linux được xem là hệ điềuhành dưới mô hình phát triển phần mềm mã nguồn mở miễn phí và phân phối Thànhphần xác định của Linux là hạt nhân Linux, được phát hành vào ngày 05 tháng 10 năm
1991 bởi Linus Torvalds
Bên cạnh đó, Linux được phát triển như một hệ điều hành miễn phí cho máy tính cánhân của Intel x86 Linux sau đó được dùng trên nhiều nền tảng phần cứng máy tính hơnbất kỳ hệ điều hành khác Nó là một hệ điều hành hàng đầu trên các máy chủ và hệ thốngmáy tính lớn.Tính đến tháng 6 năm 2013 , hơn 95% của 500 siêu máy tính nhanh nhất thếgiới chạy trên nền của Linux Linux cũng chạy trên hệ thống nhúng, đó là các thiết bị có
hệ điều hành được xây dựng vào phần mềm và rất phù hợp với hệ thống, bao gồm điệnthoại di động , máy tính bảng , thiết bị định tuyến mạng, điều khiển tự động hóa cơ sở ,
TV và video game console Android là một hệ điều hành sử dụng rộng rãi cho các thiết bị
di động, được xây dựng trên nhân Linux
Sự phát triển của Linux gắn liền với một trong những đặc điểm nổi bật nhất là phầnmềm mã nguồn mở Mã nguồn cơ bản có thể được sử dụng , thay đổi, và phân phối -thương mại hoặc phi thương mại - bởi bất cứ ai theo giấy phép như giấy phép GNUGeneral Public Thông thường, Linux được đóng gói trong một định dạng được gọi là
Trang 5một bản phân phối Linux cho máy tính để bàn và máy chủ sử dụng Một số bản phânphối Linux phổ biến chính bao gồm Debian , Ubuntu, Linux Mint , Fedora, Arch Linux ,
và thương mại Red Hat Enterprise Linux và SUSE Linux Enterprise Server Bản phânphối Linux bao gồm hạt nhân Linux, tiện ích hỗ trợ, các thư viện và một số lượng lớn cácphần mềm ứng dụng
1.2 Hệ thống thiết kế của Linux
Một hệ thống dựa trên Linux là một hệ điều hành theo mô hình Unix Linux phát triểnphần lớn các thiết kế cơ bản từ các nguyên lý của Unix trong những năm 1970 và 1980.Hạt nhân Linux xử lý điều khiển quá trình mạng và thiết bị ngoại vi và hệ thống tập tintruy cập Các thiết bị điều khiển hoặc là tích hợp trực tiếp với các hạt nhân hoặc thêm vàonhư là các mô-đun được nạp trong khi hệ thống đang chạy
Linux gồm có một nhân kernel (mã cốt lõi quản lý các tài nguyên phần cứng và phầnmềm) và một bộ sưu tập các ứng dụng của người dùng (chẳng hạn như các thư viện, cáctrình quản lý cửa sổ và các ứng dụng)
Hình 1.1: Cấu trúc Linux nhìn bề ngoài
Trang 6Sơ đồ trên chỉ ra các thành phần quan trọng Tầng cuối cùng chính là một tập hợp mãkiến trúc giúp Linux có thể hỗ trợ đa nền tảng phần cứng (ARM, PowerPC, Tilera TILE
v.v ) Tất nhiên, chức năng này được đăng ký theo giấy phép GNU, tạo nên tính di
động của Linux.
Một phần riêng biệt là giao diện kết với các hạt nhân cung cấp nhiều chức năng caocấp của hệ thống GNU Userland là một phần quan trọng của hầu hết các hệ thống dựatrên Linux, cung cấp các chức năng thực thi phổ biến nhất của thư viện C, một shell phổbiến, và rất nhiều các công cụ Unix thực hiện nhiều nhiệm vụ cơ bản của hệ điều hành.Giao diện đồ họa người dùng (hoặc GUI) được sử dụng bởi hầu hết các hệ thống Linuxđược xây dựng bên trên của hệ thống Window X
Hình 1.2: Sự tách biệt giữa các Userland và không gian hạt nhân qua các lớp
Một số thành phần của một hệ thống Linux cài đặt gồm:
Một bootloader: GNU GRUB và LILO Đây là một chương trình được thực hiệnbởi máy tính khi nó lần đầu tiên được bật , và tải hạt nhân Linux vào bộ nhớ
Trang 7 Một chương trình init: là quá trình đầu tiên được thực hiện bởi hạt nhân Linux đểthiết lập các chương trình Nó bắt đầu quá trình như là một hệ thống dịch vụ và nhắc nhởđăng nhập (cho dù là đồ họa hay trong chế độ thiết bị đầu cuối )
Thư viện phần mềm: có chứa mã có thể được sử dụng bởi tiến trình đang chạy Trên các hệ thống Linux sử dụng định dạng tập tin thực thi ELF, các liên kết động trong
đó quản lý sử dụng các thư viện động là " ld-linux.so " Thư viện phần mềm thườngđược sử dụng trên các hệ thống Linux là GNU C Library
Chương trình giao diện người dùng: lệnh qua shell hoặc môi trường cửa sổ
Linux theo phong cách riêng của mình trong lĩnh vực về tính di động Hệ thống con
của trình điều khiển (là rất lớn về khả năng của nó) hỗ trợ động các mô đun được nạp mà
không ảnh hưởng đến hiệu năng, tạo nên tính mô đun (thêm vào một nền tảng động hơn) Linux cũng bảo mật ở mức nhân kernel tạo nên một nền tảng bảo mật Trong miền hệ
thống tệp bên ngoài, Linux tạo nên một mảng lớn nhất về hỗ trợ hệ thống tệp của bất kỳ
hệ điều hành nào, tạo nên tính linh hoạt thông qua tính mô đun thiết kế Linux thực hiện không chỉ các tính năng lên lịch trình tiêu chuẩn mà còn lên lịch trình thời gian thực bao
gồm các bảo đảm về độ trễ ngắt
Cuối cùng, Linux là mở, có nghĩa là trên thực tế bất cứ ai cũng có thể xem và cải
thiện dựa vào nguồn gốc của nó Tính mở này cũng giảm thiểu các cơ hội bị lợi dụng, tạo
ra một nền tảng an toàn hơn Nhiều công ty đóng góp cho Linux, bảo đảm rằng nó sẽ tiếp
tục giải quyết một loạt các mô hình sử dụng trong khi vẫn duy trì các đặc tính cốt lõi củamình
Các nguyên tắc quan trọng này chắc chắn không phải là các thuộc tính duy nhất màLinux cung cấp, nhưng chúng cho phép Linux dùng như một nền tảng đa năng trên rấtnhiều các mô hình sử dụng Hơn nữa, Linux là như nhau trên các mô hình sử dụng này—không chỉ các nguyên tắc thiết kế mà còn bản thân mã của nó nữa Người ta không thểnói điều này về các hệ điều hành khác (như Windows®—máy tính để bàn, máy chủ, hoặc
Trang 8thiết bị nhúng—hoặc Mac OS X hoặc Apple iOS), chúng có phân khúc dịch vụ và môhình sử dụng khác.
1.3 Lập trình trên Linux
Hầu hết các bản phân phối Linux hỗ trợ hàng chục ngôn ngữ lập trình Các công cụ pháttriển ban đầu được sử dụng để xây dựng cả các ứng dụng Linux và các chương trình hệđiều hành được tìm thấy trong chuỗi công cụ GNU , trong đó bao gồm Bộ biên dịch GNU(GCC ) và xây dựng hệ thống GNU GCC cung cấp trình biên dịch cho Ada, C, C + +,Java, và Fortran Đầu tiên phát hành vào năm 2003, dự án LLVM cung cấp một trìnhbiên dịch mã nguồn mở thay thế cho nhiều ngôn ngữ Trình biên dịch độc quyền choLinux bao gồm Intel C + + Compiler, Sun Studio , và IBM XL C / C + + Compiler.BASIC trong các hình thức của Visual Basic được hỗ trợ trong các hình thức nhưGambas , FreeBASIC , và XBasic , và về lập trình thiết bị đầu cuối hoặc QuickBASIChoặc lập trình Turbo BASIC trong các hình thức QB64
Một tính năng phổ biến của các hệ thống Unix, Linux bao gồm ngôn ngữ truyềnthống cụ thể mục đích lập trình nhắm vào kịch bản, xử lý văn bản và cấu hình hệ thống
và quản lý nói chung Bản phân phối Linux hỗ trợ các shell script, awk , sed, make, grep,soạn thảo văn bản tiên tiến GNU Emacs có một Lisp thông dịch viên hoàn toàn được xâydựng bên trong
Hầu hết các bản phân phối cũng bao gồm hỗ trợ cho PHP , Perl, Ruby, Python và cácngôn ngữ động khác Trong khi không phải là phổ biến , Linux cũng hỗ trợ C # ( quaMono) , Vala , và Scheme Một số máy ảo Java và bộ dụng cụ phát triển chạy trên Linux ,bao gồm cả bản gốc Sun Microsystems JVM ( HotSpot ) , và IBM J2SE RE , cũng nhưnhiều dự án mã nguồn mở như Kaffe và JikesRVM
Gnome và KDE là môi trường máy tính desktop phổ biến và cung cấp mộtframework cho phát triển ứng dụng Các ứng dụng này dựa trên GTK + và bộ công cụtiện ích Qt , tương ứng và cũng có thể được sử dụng độc lập trong khuôn khổ lớn hơn Cảhai hỗ trợ nhiều ngôn ngữ Có một số môi trường phát triển tích hợp sẵn bao gồm cả
Trang 9Anjuta , Code :: Blocks , CodeLite , Eclipse, Geany , ActiveState Komodo , KDevelop ,Lazarus , MonoDevelop , NetBeans, và Qt Creator , trong khi các biên tập viên lâu đờiVim, nano và Emacs vẫn phổ biến
1.4 Các mảng ứng dụng của Linux
Với khả năng biến đổi nhanh và mở rộng quy mô của mình, có thể tìm thấy Linux trongtất cả các phân khúc máy tính (và thậm chí một số phân khúc vẫn chưa được định nghĩađầy đủ) Một số các phân khúc điện toán quan trọng, bao gồm máy tính để bàn/netbook,máy chủ, cluster, máy tính lớn Mainframe, siêu máy tính, thiết bị cầm tay/máy tính bảng,thiết bị nhúng, ảo hóa và các máy thử nghiệm
Hình 1.3 Các thuộc tính và các phân khúc của Linux
1.4.1 Máy tính để bàn và netbook
Các máy tính để bàn và các netbook, nơi có nhiều người sử dụng Linux đã bắt đầu như làmột hệ điều hành thử nghiệm đơn giản và với việc giới thiệu XFree86 vào năm 1994, mộttrình quản lý cửa sổ đã cho thấy sự hứa hẹn của một hệ điều hành máy tính để bàn Ngàynay, một số trình quản lý cửa sổ có sẵn cho Linux cho phép người dùng biến phong cách
Trang 10riêng của nó thành các nhu cầu của họ Hơn nữa, Linux thay đổi quy mô tự động với cáckhả năng xử lý (như là đa luồng đối xứng và đa lõi), lập lịch trình hiệu quả.
Hình 1.4: Thành phần phần mềm của máy tính Desktop Linux
Sự phổ biến của Linux trên máy tính để bàn tiêu chuẩn và máy tính xách tay ngàycàng tăng trong những năm qua Hiện nay hầu hết các bản phân phối bao gồm một môitrường người dùng đồ họa, với hai môi trường phổ biến nhất là GNOME (có thể sử dụngshell bổ sung như mặc định GNOME Shell và Ubuntu Unity), và Plasma Desktop KDE
1.4.2 Máy chủ, MainFrames và các siêu máy tính
Bản phân phối Linux từ lâu đã được sử dụng như là hệ điều hành máy chủ, và đã tăng lênđáng kể trong khu vực đó ; Netcraft báo cáo trong tháng 9 năm 2006 rằng tám trong mườicông ty lưu trữ internet đáng tin cậy nhất chạy bản phân phối Linux trên máy chủ webcủa họ Bản phân phối Linux là nền tảng của LAMP server- phần mềm kết hợp ( Linux,Apache, MariaDB / MySQL, Perl / PHP / Python) đã đạt được phổ biến trong số các nhàphát triển , và đó là một trong những nền tảng phổ biến hơn cho trang web lưu trữ
Bản phân phối Linux đã trở nên ngày càng phổ biến trên máy tính lớn trong thập kỷqua một phần là do giá cả và mô hình mã nguồn mở Trong tháng 12 năm 2009 , máy
Trang 11tính khổng lồ IBM thông báo rằng thị trường và máy tính lớn chủ yếu dựa trên EnterpriseLinux máy chủ.
Hình 1.5: Gói phần mềm LAMP, hiển thị cùng với Squid
Linux thống trị thị trường máy chủ (bao gồm các máy chủ web, máy chủ thư điện tử,máy chủ Hệ thống tên miền - DNS và các thiết bị tầng sau khác) Các khảo sát gần đâycho thấy rằng hơn 60% tất cả các máy chủ chạy Linux Ngoài các dịch vụ web truyềnthống, Linux cung cấp cho nhiều tài sản Internet lớn nhất (Facebook, eBay, Twitter vàAmazon v.v ), với các yêu cầu và các mô hình sử dụng khác nhau Ngoài các tùy chọntruyền thống (chẳng hạn như web hoặc thư điện tử), Linux còn cung cấp các mảng lớnnhất về các dịch vụ web (và các tùy chọn khác nhau cho các dịch vụ đó)
1.4.3 Các thiết bị nhúng
Các thiết bị nhúng, với các mức ràng buộc khác nhau (hiệu năng của bộ xử lý, các tàinguyên như bộ nhớ và v.v) Linux là lý tưởng trong hầu hết các trường hợp này vì khảnăng thu hẹp quy mô của nó và sử dụng bất kỳ các bộ vi xử lý nhúng nào có sẵn trên thịtrường Tính linh hoạt này làm cho Linux trở thành một nền tảng được sử dụng rất nhiềutrong truyền hình, giải trí trong xe hơi, các hệ thống định vị và nhiều kiểu thiết bị khác
Trang 12Linux có khả năng tùy chỉnh cao và tập trung vào mức tiêu thụ điện năng thấp Đểbảo đảm sự tập trung vào điện năng, sáng kiến Less Watts (Wát thấp hơn) theo dõi sựtiêu thụ điện năng của các bản phát hành nhân Linux Dự án này chủ yếu tập trung vàocác nền tảng của Intel, nhưng cũng có thể có ích với các bộ xử lý khác.
Linux là một đề xuất khá chuẩn cho các thiết bị nhúng và có thể xác định sự thànhcông hay thất bại của thiết bị (hỗ trợ phát triển và xuất hiện nhanh) Một thiết bị thú vịgần đây được gọi là Raspberry Pi, một máy tính có kích thước bằng thẻ tín dụng dựa trênARM, chạy Linux và được dự định làm một thiết bị học tập để dạy lập trình
1.5 Nền tảng ảo hóa
Một trong những lĩnh vực thú vị nhất trong đó Linux hướng tới sự đổi mới là trong lĩnhvực ảo hóa Linux là ngôi nhà của hệ điều hành cho tất cả các loại giải pháp ảo hóa cósẵn, cho dù nền tảng hoặc ảo hóa song song, ảo hóa hệ điều hành hay nhiều ý tưởng mơhồ hơn như ảo hóa cộng tác Linux là một hệ điều hành có thể biến mình thành một trìnhsiêu giám sát - hypervisor (chẳng hạn như KVM - Máy tính ảo dựa vào nhân) cũng nhưlưu trữ trên máy chủ một số trình siêu giám sát nghiên cứu Để mang lại hiệu quả hơn cho
ảo hóa, Linux thực hiện Kernel SamePage Merging (Kết hợp trang giống nhau của nhân)
để loại bỏ có hiệu quả các trang bộ nhớ dư thừa
Linux cũng đang hướng tới kỹ nghệ cao về một sự tiến bộ mới trong ảo hóa được gọi
là ảo hóa lồng nhau.Việc lồng nhau cho phép một trình siêu giám sát lưu trữ trên máy
chủ một trình siêu giám sát khách, rồi trình khách này lần lượt lưu trữ một tập hợp cácmáy ảo khách trên máy chủ Mặc dù thoáng nhìn như là một trường hợp sử dụng cũ,nhưng ảo hóa lồng nhau sẽ thay đổi điện toán đám mây và mở rộng các kiểu của các ứngdụng có thể được lưu trữ trên máy chủ ở đó Hiện nay, KVM của Linux hỗ trợ ảo hóalồng nhau
1.6 Nền tảng thử nghiệm
Trang 13Cuối cùng nhưng không kém quan trọng là nền tảng của chính Linux—một nền tảng thửnghiệm mà qua đó đang khám phá ra nhiều ý tưởng mới Năm 1991, Linux đã được giớithiệu như là một hệ điều hành đồ chơi, 20 năm sau bản phát hành đầu tiên của UNIX®.Hiện nay, Linux dùng làm một nền tảng để thử nghiệm trong nghiên cứu hệ thống tệp,điện toán cụm, những đám mây, sự tiến bộ ảo hóa và mở rộng các hạn chế theo đó mộtnhân của hệ điều hành đơn lẻ có thể được áp dụng cho rất nhiều mô hình sử dụng Linuxnhư là một nền tảng cho phép thử nghiệm tăng tốc thông qua việc sử dụng cả Linux lẫnmột loạt các thành phần nguồn mở to lớn Kết quả là một loạt các công nghệ thú vị đượcxây dựng từ Linux, gồm có HP webOS (Hệ điều hành web của HP), Google Chrome OS(Hệ điều hành web của Google) và Android.
Một thay đổi thú vị được Linux giới thiệu là sự không phù hợp của các nền tảng phầncứng cơ bản ngày càng tăng Linux trình bày một trải nghiệm người dùng tương tự bất kểkiến trúc phần cứng cơ bản nào Vì vậy, cho dù một đám mây có được lấp đầy bằng cácmáy chủ x86 của AMD hoặc các dịch vụ dựa trên ARM điện năng thấp hay không, cácứng dụng chạy trên Linux đều được trừu tượng hóa từ các kiến trúc vật lý Sự trừu tượnghóa này cho phép những người dùng ra các quyết định trên nền tảng dựa vào các yêu cầucủa họ chứ không bị buộc chặt vào kiến trúc chung nhưng cổ xưa và không hiệu quả.Linux cân bằng sự lựa chọn
Linux cũng là một môi trường phát triển tích hợp (IDE) độc lập Ngoài việc lưu trữtrên máy chủ một chuỗi công cụ của trình biên dịch tầm cỡ thế giới (GNC CompilerCollection – Bộ sưu tập trình biên dịch GNC), nó còn lưu trữ trên máy chủ một loạt cáccông cụ trải rộng từ các trình gỡ lỗi, các trình soạn thảo, các hệ thống kiểm soát phiênbản, các công cụ tệp và các trình vỏ và các trình thông dịch để giúp tự động hóa cácnhiệm vụ phát triển Trong khả năng này Linux làm cho nó trở thành một môi trường lýtưởng để phát triển phần mềm và nghiên cứu phần mềm
1.7 Hiệu suất và ứng dụng