Báo cáo: Kiến thức khái quát về hệ điều hành Linux
lượt xem 20
download
Hệ điều hành là một bộ các chương trình hỗ trợ cho việc điều khiển phần cứng của máy tính, tổ chức làm việc với các tập tin và thực thi sự giao tiếp đối với người dùng
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Báo cáo: Kiến thức khái quát về hệ điều hành Linux
- Kiến trúc tổng quát về hệ điều hành Linux MỤC LỤC Trang Lời mở đầu--------------------------------------------------------------------------- 2 1. Giới thiệu về Hệ điều hành Linux------------------------------------------ 3 1.1. Thế nào là Linux? Apr. 25 1.2. Linux có gì hấp dẫn người dùng? 1.3. Các bản phân phối của Linux 1.4. Yêu cầu đối với máy tính 2. Thành phần của Hệ điều hành Linux--------------------------------------- 7 2.1. Hệ điều phối hoạt động – quản lý tiến trình 2.2. Các thành phần quản lý và phân phối tài nguyên 2.2.1. Quản lý bộ nhớ chính 2.2.2. Quản lý tập tin 2.2.3. Quản lý hệ thống xuất nhập 2.2.4. Quản lý bộ nhớ thứ cấp 2.3. Hoạt động mạng 2.4. Hệ thống bảo vệ 2.5. Hệ thống thông dịch lệnh 3. Nhân của Linux (Linux Kernel)---------------------------------------------- 16 4. Các dịch vụ của Hệ điều hành Linux--------------------------------------- 18 5. Lời gọi hệ thống---------------------------------------------------------------- 20 Tổng kết------------------------------------------------------------------------------ 21 Nhóm 1 – Lớp 1101NWMG0411 1
- Kiến trúc tổng quát về hệ điều hành Linux LỜI MỞ ĐẦU Apr. 25 Ngay từ những ngày mới xuất hiện, Microsoft nhìn th ấy ở Linux kh ả năng c ạnh tranh lớn và nhiều khi coi Linux như là một đ ối thủ không đ ội tr ời chung v ới mình. Nhiều tổ chức chính phủ cũng như phi chính phủ nhìn thấy ở Linux m ột H ệ đi ều hành hứa hẹn và hỗ trợ cho Linux. Những nước còn nghèo tìm thấy ở Linux m ột cách giải quyết cho vấn đề kinh tế. Một số công ty tìm th ấy t ừ H ệ đi ều hành này một nguồn lợi lớn và phát triển công việc kinh doanh của mình t ừ H ệ đi ều hành này. Đối với Linus Torvards, Linux là niềm đam mê và “Just for fun”. Các nhà l ập trình nhân (kernel) tìm thấy ở Linux sự quyến rũ và công vi ệc phát tri ển c ủa h ọ. Ng ười dùng thì tìm thấy ở Linux một hệ thống mạnh, thuận ti ện, có th ể đi ều ch ỉnh theo ý muốn của mình. Linux là Hệ điều hành phát triển mạnh. Nh ững năm đ ầu th ập k ỷ th ứ chín c ủa thế kỷ XX, Linux mới chỉ là đứa con tinh th ần ch ưa bi ết nói c ủa Torvads. Ch ỉ trong vài năm gần đây đã có nhiều bản phân phối Linux chi ếm lĩnh đ ược môi tr ường máy chủ cũng như máy để bàn của người dùng. Trên thị trường máy ch ủ hiện th ời ch ỉ có một vài tên tuổi đang chú ý. Linux cho máy để bàn có ph ần đa d ạng h ơn. M ỗi b ản phân phói thích hợp cho một nhóm người dùng cụ th ể nào đó t ừ ng ười dùng m ới đến người dùng cao cấp (advanced) hay nói đúng h ơn là m ỗi ng ười dùng có quy ền lựa chọn cho mình một bản phân phối thích hợp và chuyển sang s ử d ụng b ản khác khi nào mong muốn. Linux ngay từ ban đầu đã được xây dựng dựa trên c ộng đ ồng, d ựa trên s ự cộng tác. Cộng đồng Linux không chỉ cung cấp cho ng ười dùng máy tính m ột H ệ điều hành thân thiện, dễ sử dụng mà còn luôn luôn s ẵn sàng giúp đ ỡ nh ững ng ười dùng mới, luôn mong muốn có thêm máy tính chạy d ưới Linux. V ới s ự phát tri ển ngày một lớn mạnh của Linux, việc phân tích và tìm hi ểu ho ạt đ ộng c ủa Linux đang trở nên một nhu cầu cấp thiết đối với những người nghiên c ứu công ngh ệ thông tin. Tuy nhiên với đề 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”, nhóm chúng tôi sẽ đi tìm hiểu về Hệ đi ều hành này theo h ướng ti ếp c ận c ủa người mới sử dụng, qua đó tổng kết lại những kiến th ức chung nhất về H ệ đi ều hành cũng như những điểm nhấn của Linux, để t ừ đó có đ ịnh h ướng phát tri ển H ệ điều hành này về sau. Nhóm 1 – Lớp 1101NWMG0411 1
- Kiến trúc tổng quát về hệ điều hành Linux 1. GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH LINUX Apr. 25 Lịch sử luôn là điểm khởi đầu khi nghiên cứu một ngành khoa h ọc nào đó. Không có ngoại lệ với Toán học, Vật lý, Hóa h ọc… và t ất nhiên c ả h ệ đi ều hành Linux. Trong phần đầu tiên của bài trình bày này, nhóm chúng tôi xin đ ược gi ới thi ệu đôi lời về những đặc điểm đặc biệt của Linux, yêu cầu của Linux đ ối v ới phần c ứng, khái niệm bản phân phối của Linux, và cách có được nh ững bản phân ph ối này. 1.1. Thế nào là Hệ điều hành dạng Linux? Hệ điều hành là một bộ các chương trình hỗ trợ cho vi ệc đi ều khi ển ph ần cứng của máy tính, tổ chức làm việc với các tập tin (trong đó có ch ạy và đi ều khi ển việc thực hiện của các chương trình), và đông th ời thực thi s ự giao ti ếp v ới ng ười dùng, tức là dịch các câu lệnh của người dùng và hi ển th ị k ết qu ả làm vi ệc c ủa những câu lệnh này. Không có Hệ điều hành thì máy tính không th ực hi ện đ ược ch ức năng c ủa mình. Trong trường hợp đó máy tính chỉ là một t ập h ợp các thiết b ị đi ện t ử không làm việc, không hiểu là để làm gì. Linux là tên gọi của một hệ điều hành máy tính và cũng là tên h ạt nhân c ủa h ệ điều hành. Nó có lẽ là một ví dụ nổi tiếng nhất c ủa phần m ềm t ự do và c ủa vi ệc phát triển mã nguồn mở. Phiên bản Linux đầu tiên do Linus Torvalds vi ết vào năm 1991, lúc ông còn là một sinh viên của Đại học Helsinki tại Phần Lan. Ông làm vi ệc m ột cách hăng say trong vòng 3 năm liên tục và cho ra đời phiên bản Linux 1.0 vào năm 1994. B ộ ph ận chủ yếu này được phát triển và tung ra trên th ị tr ường d ưới b ản quy ền GNU General Public License. Do đó mà b ất cứ ai cũng có th ể t ải và xem mã ngu ồn c ủa Linux. Một cách chính xác, thuật ngữ "Linux" được sử dụng để chỉ Nhân Linux, nhưng tên này được sử dụng một cách rộng rãi đ ể miêu t ả t ổng th ể m ột h ệ đi ều hành giống Unix (còn được biết đến dưới tên GNU/Linux) đ ược t ạo ra b ởi vi ệc đóng gói nhân Linux cùng với các thư viện và công cụ GNU, cũng nh ư là các b ản phân phối Linux. Thực tế thì đó là tập hợp một số lượng lớn các phần m ềm nh ư máy ch ủ web, các ngôn ngữ lập trình, các hệ quản trị cơ sở dữ li ệu, các môi tr ường làm vi ệc Nhóm 1 – Lớp 1101NWMG0411 1
- Kiến trúc tổng quát về hệ điều hành Linux desktop như GNOME và KDE, và các ứng dụng thích h ợp cho công vi ệc văn phòng như OpenOffice.org. Ban đầu, Linux được phát triển và sử dụng bởi nh ững ng ười say mê. Tuy nhiên, hiện nay Linux đã có được sự hỗ trợ bởi các công ty l ớn nh ư IBM và Hewlett- Apr. 25 Packard, đồng thời nó cũng bắt kịp được các phiên b ản Unix đ ộc quy ền và th ậm chí là một thách thức đối với sự thống trị của Microsoft Windows trong m ột s ố lĩnh v ực. Sở dĩ Linux đạt được những thành công một cách nhanh chóng là nh ờ vào các đ ặc tính nổi bật so với các hệ thống khác: chi phí phần c ứng th ấp, t ốc đ ộ cao (khi so sánh với các phiên bản Unix độc quyền) và khả năng bảo m ật t ốt, đ ộ tin c ậy cao (khi so sánh với Windows) cũng như là các đặc đi ểm v ề giá thành r ẻ, không b ị ph ụ thuộc vào nhà cung cấp. Một đặc tính nổi trội của nó là được phát tri ển b ởi m ột mô hình phát triển phần mềm nguồn mở hiệu quả. Tuy nhiên, hiện tại số lượng phần cứng được h ỗ trợ b ởi Linux v ẫn còn r ất khiêm tốn so với Windows vì các trình điều khiển thi ết b ị t ương thích v ới Windows nhiều hơn là Linux. Nhưng trong tương lai số l ượng ph ần c ứng đ ược h ỗ tr ợ cho Linux sẽ tăng lên. 1.2. Linux có gì hấp dẫn người dùng? Có lẽ bạn đã quá quen với hệ điều hành Windows cũng nh ư quá quen l ập trình trên hệ điều hành này. Windows có thể nói là m ột h ệ đi ều hành khá "hoàn h ảo", d ễ sử dụng, với rất nhiều tiện ích đáp ứng gần nh ư m ọi yêu cầu c ủa ng ười dùng. V ậy thì tại sao chúng ta lại phải tìm đến một hệ đi ều hành m ới nh ư Linux? Đi ều đó li ệu có thực sự cần thiết không? Nhất là đối v ới sinh viên nh ư chúng ta, nh ững ng ười mới chập chững bước vào con đường làm tin học? Câu trả lời là CÓ. Vấn đề bản quyền 1.2.1. Trong bối cảnh nền kinh tế thế giới đang có xu h ướng toàn c ầu hóa nh ư hi ện nay thì đây là một vấn đề nổi cộm. Ở Việt Nam, vấn đề vi ph ạm b ản quy ền ph ần mềm là rất phổ biến (nước ta dẫn đầu thế giới về số lượng phần mềm dùng không có bản quyền). Nếu tình trạng đánh cắp bản quyền ph ần m ềm c ủa Vi ệt Nam là 100 triệu USD mỗi năm thì sẽ có một lượng hàng hóa có giá tr ị tương đương không bán được ở Mỹ và các nước phát triển. Và như vậy người thiệt h ại đ ầu tiên s ẽ chính là người lao động Việt Nam. Trước tình hình đó, việc t ự xây d ựng cho mình nh ững phần mềm thương hiệu Việt Nam đang trở nên một vấn đ ề c ấp bách. Ph ần m ềm mã nguồn mở được xem là một giải pháp hữu hi ệu nhất cho bài toán b ản quy ền ở nước ta hiện nay. Phần mềm mã nguồn mở một mặt có chi phí r ẻ h ơn so v ới các phần mềm truyền thống, mặt khác rất dễ nâng cấp, cải tiến (do cung cấp mã ngu ồn kèm theo). Chính vì thế, phát triển phần mềm mã ngu ồn m ở chúng ta có th ể t ận dụng được những công nghệ tiên tiến có sẵn trên thế gi ới, c ải tiến cho phù h ợp v ới người Việt Nam, tiết kiệm được rất nhiều công sức so với vi ệc phát tri ển t ừ đ ầu. Linux là một hệ điều hành mã nguồn mở như vậy!!! Những ưu điểm kỹ thuật nổi bật của Linux 1.2.2. Kinh tế, đó là một đặc điểm không thể bỏ qua của Linux (ít nh ất là đ ối v ới nước ta hiện nay). Tuy nhiên đối với Linux đó vẫn ch ưa là t ất c ả. H ệ đi ều hành này còn rất nhiều ưu điểm khác mà không một hệ đi ều hành nào có. Chính nh ững đ ặc điểm này mới là nguyên nhân khiến cho Linux ngày càng tr ở nên ph ổ bi ến không chỉ ở Việt Nam mà cả ở trên thế giới. * Linh hoạt, uyển chuyển Như tôi đã trình bày ở trên, Linux là một h ệ đi ều hành mã ngu ồn m ở nên b ạn có thể tùy ý sửa chữa theo như mình thích (miễn là b ạn có đ ủ ki ến th ức). B ạn có Nhóm 1 – Lớp 1101NWMG0411 1
- Kiến trúc tổng quát về hệ điều hành Linux thể chỉnh sửa Linux và các ứng dụng trên đó sao cho phù h ợp v ới mình nh ất. Tính linh hoạt của Linux còn được thể hiện ở chỗ nó t ương thích đ ược v ới r ất nhi ều môi trường. Hiện tại, ngoài Linux dành cho server, máy tính đ ể bàn nhân Linux (Linux kernel) còn được nhúng vào các thiết bị điều khiển như máy tính palm, robot.... Apr. 25 Phạm vi ứng dụng của Linux được xem là rất rộng rãi. * Độ an toàn cao Trước hết, trong Linux có một cơ cấu phân quyền hết sức rõ ràng. Ch ỉ có "root" (người dùng tối cao) mới có quyền cài đặt và thay đ ổi h ệ th ống. Ngoài ra Linux cũng có cơ chế để một người dùng bình thường có th ể chuy ển t ạm th ời chuyển sang quyền "root" để thực hiện một số thao tác. Đi ều này giúp cho h ệ th ống có thể chạy ổn định và tránh phải những sai sót dẫn đến đổ vỡ hệ th ống. Trong những phiên bản Windows gần đây, cơ chế phân quyền này cũng đã b ước đ ầu được áp dụng, nhưng so với Linux thì vẫn kém chặt chẽ hơn. Ngoài ra chính tính chất "mở" cũng tạo nên sự an toàn c ủa Linux. N ếu nh ư một lỗ hổng nào đó trên Linux được phát hiện thì nó s ẽ đ ược cả c ộng đ ồng mã nguồn mở cùng sửa và thường thì chỉ sau 24h s ẽ có th ể cho ra b ản s ửa l ỗi. M ặt khác đối với những hệ điều hành mã nguồn đóng nh ư Windows, b ạn không th ể bi ết được người ta viết gì, và viết ra sao mà chỉ biết đ ược chúng chạy nh ư th ế nào. Trong Linux mọi thứ đều công khai, người quản trị có thể tìm hi ểu t ới m ọi ngõ ngách của hệ điều hành. Điều đó cũng có nghĩa là đ ộ an toàn đ ược nâng cao. * Thích hợp cho quản trị mạng Được thiết kế ngay từ đầu cho chế độ đa người dùng, Linux đ ược xem là m ột hệ điều hành mạng rất giá trị. Nếu như Windows t ỏ ra là m ột h ệ đi ều hành thích hợp với máy tính Desktop thì Linux lại là hệ đi ều hành th ống tr ị đ ối v ới các Server. Đó là do Linux có rất nhiều ưu điểm thỏa mãn đòi h ỏi c ủa m ột hệ đi ều hành m ạng: tính bảo mật cao, chạy ổn định, các cơ chế chia sẻ tài nguyên t ốt… Giao th ức TCP/IP mà chúng ta vẫn thấy ngày nay chính là m ột giao th ức truy ền tin c ủa Linux (sau này mới được đưa vào Windows) * Chạy thống nhất trên các hệ thống phần cứng Dù cho có rất nhiều phiên bản Linux được các nhà phân ph ối khác nhau ban hành nhưng nhìn chung đều chạy khá ổn đ ịnh trên m ọi thi ết b ị ph ần c ứng, t ừ Intel 486 đến những máy Pentium mới nhất, từ những máy có dung l ượng RAM ch ỉ 4MB đến những máy có cấu hình cực mạnh (tất nhiên là t ốc đ ộ s ẽ khác nhau nh ưng v ề nguyên tắc vẫn có thể chạy được). Nguyên nhân là Linux đ ược rất nhi ều l ập trình viên ở nhiều môi trường khác nhau cùng phát tri ển (không nh ư Windows ch ỉ do Microsoft phát triển) và bạn sẽ bắt gặp nhiều người có "cùng cảnh ng ộ" nh ư mình và dễ dàng tìm được các driver tương ứng với thi ết b ị c ủa mình . Tính ch ất này hoàn toàn trái ngược với Windows. Mỗi khi có m ột phiên b ản Windows m ới ra đ ời thì bao giờ kèm theo đó cũng là một cơn khát về ph ần c ứng vì h ệ đi ều hành m ới thường không hỗ trợ các thiết bị quá cũ. 1.3. Các bản phân phối của Linux. Linux hiện nay có nhiều bản phân phối khác nhau, m ột ph ần là b ởi vì tính ch ất nguồn mở của nó. Sau đây là một số bản phân phối ch ủ yếu: Tên bản phân phối Phiên bản Trang web chính thức Các bản tương tự mới nhất Ubuntu 9.04 www.ubuntu.com Kubuntu, Xubuntu, Edubuntu Debian GNU/Linux 4.0 www.debian.org Nhóm 1 – Lớp 1101NWMG0411 1
- Kiến trúc tổng quát về hệ điều hành Linux Ultimate Edition 1.7 Red Hat Enterprise 5.0 www.redhat.com/rhel/ Linux Fedora Core 10.0 www.fedoraproject.org Apr. 25 SUSE Linux 10.1 www.novell.com/Linux/ OpenSUSE 10.3 Enterprise Desktop Mint 6 www.Linuxmint.com Knoppix 5.3.1 www.knoppix.com/ PCLinuxOS 2008 www.pcLinuxos.com/ Mandrake 2007.0 www.madrivaLinux.com Mandriva CentOS www.gentoo.org/ Slackware 12.1 www.slackware.com/ Xandros SLAX Easys Sabayon DreamLinux OpenSolaris 2008 www.opensolaris.org/ Hồng kỳ Linux Puppy Linux Hacao Linux 2.16 http://www.hacao.com/ Vubuntu 1.0 Asianux 2.0 http://www.asianux.com/ Asianux Server 3 1.4. Yêu cầu đối với máy tính. Vì Hệ điều hành Linux sử dụng chế độ bảo vệ của bộ vi x ử lý, nên đ ể cài đ ặt Hệ điều hành này cần ít nhất là một máy tính có b ộ x ử lý 386. Yêu c ầu đ ối v ới ph ần cứng của hệ thống muốn cài đặt Linux còn được xác đ ịnh b ởi l ựa ch ọn ph ần m ềm cảu người dùng (và tức là sẽ phụ thuộc vào phiên bản của các ph ần m ềm và ít nhiều vào bản phân phối). Bảng dưới đây sẽ đưa ra một vài con s ố ch ỉ v ới m ục địch làm quen, những con số này là không chính xác nh ưng không khác bi ệt nhi ều giữa các bản Linux khác nhau. Mong muốn của người dùng Yêu cầu, MB Bộ Đĩa nhớ cứng Yêu cầu nhỏ nhất, chỉ làm việc trong giao diện văn bản v ới dòng 8 200 lệnh của shell, có đủ một số ứng dụng người dùng nh ư vim, emacs, … Dùng được giao diện đồ họa X Window cùng với một số trình quản 32 400 lý cửa sổ nhỏ nhẹ như icewm, fluxbox, windowmaker. Dùng môi trường làm việc đồ họa KDE 128 1000 Chạy các ứng dụng cần nhiều bộ nhớ (như GIMP, các ứng d ụng 256 1500 nằm trong Koffice, OpenOfffice.org Như vậy Linux có một ưu điểm lớn là khả năng làm vi ệc th ậm chí trên nh ững máy rất cũ, mà trước đây chỉ có thể dùng MS-DOS (tất nhiên là trong tr ường h ợp Nhóm 1 – Lớp 1101NWMG0411 1
- Kiến trúc tổng quát về hệ điều hành Linux này chúng ta chỉ có thể thu được chế độ dòng l ệnh). Đ ể b ắt đ ầu h ọc Linux thì ch ỉ cần có một máy tính với bộ vi xử lý 486, 16MB bộ nhớ và ổ cúng khoảng 300MB. Tất nhiên đối với dung lượng bộ nhớ cũng như cấu hình máy nói chung thì càng mạnh, càng nhiều bộ nhớ, ổ cứng càng rộng thì càng tốt. Không có gì là th ừa thãi. Apr. 25 2. CÁC THÀNH PHẦN CỦA HỆ ĐIỀU HÀNH LINUX Sau đây, chúng tôi sẽ đi vào nghiên cứu các thành ph ần c ủa H ệ đi ều hành Linux. Một cách tổng quát về Hệ điều hành chung thì bao g ồm các thành ph ần nh ư sau: a. Điều phối hoạt động: Quản lý tiến trình (Process Management ) b. Thành phần quản lý và phân phối tài nguyên: - Quản lý bộ nhớ chính (Main Memory Management) - Quản lý tập tin (File Management) - Quản lý hệ thống vào-ra (I/O System Management) - Quản lý bộ nhớ thứ cấp (Secondary Storage Management) c. Hoạt động mạng (Networking) d. Hệ thống bảo vệ (Protection System) e. Hệ thống thông dịch lệnh (Command-Interpreter System) 2.1. Hệ điều phối hoạt động: Quản lý tiến trình. Những hệ thống máy tính ban đầu cho phép chỉ một chương trình đ ược th ực thi tại một thời điểm. Chương trình này có toàn quy ền đi ều khi ển h ệ th ống và có truy xuất tới tất cả tài nguyên của hệ thống. Những h ệ th ống máy tính hi ện nay cho phép nhiều chương trình được nạp vào bộ nhớ và đ ược th ực thi đ ồng hành. S ự phát triển này yêu cầu sự điều khiển mạnh mẽ hơn và phân chia nhi ều h ơn gi ữa các quá trình. Yêu cầu này dẫn đến khái niệm quá trình, m ột ch ương trình đang th ực thi. Quá trình là một đơn vị công việc trong một hệ điều hành chia th ời hi ện đ ại. Một hệ điều hành phức tạp hơn được mong đợi nhiều hơn trong vi ệc th ực hi ện các hành vi của người dùng. Mặc dù quan tâm ch ủ y ếu c ủa h ệ đi ều hành là th ực thi chương trình người dùng, nhưng nó cũng quan tâm đ ến các tác v ụ khác nhau bên ngoài nhân. Do đó, một hệ thống chứa tập h ợp các quá trình: quá trình h ệ đi ều hành thực thi mã hệ thống, quá trình người dùng th ực thi mã ng ười dùng. T ất c ả quá trình này có tiềm năng thực thi đ ồng hành, v ới m ột CPU (hay nhi ều CPU) đ ược đa hợp giữa chúng. Bằng cách chuyển đổi CPU gi ữa các quá trình, h ệ đi ều hành có thể làm cho máy tính hoạt động với năng suất cao hơn. Mỗi tiến trình trong Linux được biểu diễn bằng m ột c ấu trúc d ữ li ệu task_struct (task có nghĩa là tiến trình trong Linux). Linux s ử d ụng task vector đ ể qu ản lý các con trỏ đến các task_struct, mặc định là có 512 phần t ử. Khi m ột ti ến trình đ ược t ạo ra, một task_struct mới được cấp phát trong b ộ nh ớ và đ ược thêm vào vector task. Linux hỗ trợ hai loại tiến trình là loại bình th ường và loại th ời gian th ực. C ấu trúc task_struct gồn những trường như 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 gi ữa các ti ến trình, liên k ết, định thời gian, hệ thống tập tin, bộ nhớ ảo, ngữ cảnh. Trong Linux cũng như UNIX, chương trình và lệnh được thực hi ện theo c ơ chế thông dịch. Bộ thông dịch được gọi là shell. Linux h ỗ tr ợ nhi ều lo ại shell nh ư sh, Nhóm 1 – Lớp 1101NWMG0411 1
- Kiến trúc tổng quát về hệ điều hành Linux bash, tcsh. Tập tin thi hành có nhiều dạng, d ạng đ ược s ử d ụng thông d ụng nh ất trong Linux là EFL, ngoài ra Linux cũng có thể hi ểu đ ược nhi ều d ạng t ập tin khác. Các cơ chế thông tin liên lạc giữa các tiến trình đ ược s ử d ụng là tín hi ệu (SIGNALS), đường ống (PIPE), sockets, semaphore và bộ nhớ chia sẻ. Apr. 25 Có một tập hợp các tín hiệu được định nghĩa trước, các tính hi ệu này có th ể được phát sinh bởi hạt nhân hoặc những tiến trình khác trong b ộ nh ớ. Linux cài đ ặt các tín hiệu trong task_struct. Không ph ải m ọi tiến trình trong h ệ th ống có th ể g ửi tín hiệu đến mọi tiến trình khác. Tín hiệu được phát sinh b ằng cách thi ết l ập m ột bit thích hợp trong trường signal của cấu trúc task_struct. Tín hi ệu không xu ất hi ện cho tiến trình ngay khi nó được tạo mà phải chờ đến khi tiến trình đ ược th ực hi ện tr ở l ại. Trong Linux cơ chế đường ống cài đặt sử dụng hai cấu trúc file tr ỏ đ ến cùng inode VFS tạm thời xác định một trang vật lý trong b ộ nh ớ. Khi ti ến trình ghi th ực hiện việc ghi vào đường ống, các byte sẽ được chép vào trang d ữ li ệu chia s ẻ. Linux phải đồng bộ quy trình truy xuất trong đ ường ống. Ti ến trình ghi s ử d ụng các hàm thư viện ghi chuẩn. Các cơ chế socket, semaphores và bộ nhớ chia sẻ của Linux g ần gi ống v ới h ệ thống Unix System V. 2.2. Thành phần quản lý và phân phối tài nguyên Quản lý bộ nhớ chính 2.2.1. Trong hệ thống máy tính, bộ nhớ là một tài nguyên khan hi ếm. Cho dù có bao nhiêu bộ nhớ đi chăng nữa thì vẫn không đáp ứng đ ủ nhu c ầu c ủa ng ười s ử d ụng. Các máy tính cá nhân hiện nay đã trang b ị ít nhất 128Mb b ộ nh ớ. Các máy ch ủ servercos thể lên đến hàng gigabyte bộ nhớ. Th ế nh ưng nhu cầu b ộ nh ớ v ẫn không được thỏa mãn. Linux có cách tiếp cận và quản lý bộ nhớ rất rõ rang. Các ứng d ụng trên linux được phép truy cập trực tiếp vào địa chỉ vật lý của b ộ nh ớ. Linux cung c ấp cho các chương trình chạy dưới HĐH - còn gọi là tiến trình – m ột mô hình đánh giá đ ịa ch ỉ phẳng không phân đoạn segment:offset nh ư DOS. M ỗi ti ến trình ch ỉ th ấy đ ược m ột vùng không gian địa chỉ của riêng nó. Hầu nh ư t ất c ả các phiên b ản c ủa UNIX đ ều cung cấp cách bảo vệ bộ nhớ theo cơ chế bảo đảm không có ti ến trình nào có th ể ghi đè lên vùng nhớ của tiến trình khác đang ho ạt đ ộng ho ặc vùng nh ớ c ủa h ệ thống. Nói chung, bộ nhớ mà hệ thống cấp phát cho m ột ti ến trình không th ể nào đọchoặc ghi bởi một tiến trình khác. Trong hầu hết các hệ thống Linux và UNIX, con trỏ được sử dụng là m ột s ố nguyên 32 bit trỏ đến một ô nhớ cụ thể. Với 32 bit, hệ th ống có th ể đánh đ ịa ch ỉ lên đến 4GB bộ nhớ. Mô hình bộ nhớ phẳng này dễ truy xuất và x ử lý h ơn b ộ nh ớ phân đoạn segment:offset. Ngoài ra, một vài h ệ th ống còn s ư d ụng mô hình đ ịa ch ỉ 64 bit, như vậy không gian địa chỉ có thể mở rộng ra đến terabyte. Để tăng dung lượng bộ nhớ sẵn có, Linux còn cài đặt ch ương trình phân trang đĩa tức là một lượng không gian hoán đ ổi nào đó có th ể phân b ố trên đĩa. Khi h ệ thống yêu cầu nhiều bộ nhớ vật lý, nó sẽ đưa các trang không ho ạt đ ộng ra đĩa, nhờ vậy bạn có thể chạy những ứng dụng lớn hơn và cùng lúc h ỗ tr ợ nhi ều ng ười sử dụng. Tuy vậy, việc hoán đổi không thay đ ược RAM v ật lý, nó ch ậm h ơn vì c ần nhiều thời gian để truy cập đĩa. Kernel cũng cài đ ặt kh ối b ộ nh ớ h ợp nh ất cho các chương trình người sử dụng và bộ đệm đĩa tạm thời (disk cache). Theo cách này, tất cả bộ nhớ trống dành để nhớ tạm và bộ nhớ đệm (cache) sẽ giảm xuống khi b ộ xử lý chạy những chương trình lớn. Nhóm 1 – Lớp 1101NWMG0411 1
- Kiến trúc tổng quát về hệ điều hành Linux Quản lý hệ thống tập tin 2.2.2. Tập tin 2.2.2.1. Máy tính chỉ là công cụ để làm việc với thông tin không h ơn không kém. Mà thông tin trên mỗi Hệ điều hành đưuọc lưu ở d ạng t ập tin trên các đĩa l ưu. T ừ phía Apr. 25 của Hệ điều hành thì tập tin là một chuỗi liên tục các byte v ới chi ều dài xác đ ịnh. Hệ điều hành không quan tâm đến định dạng bên trong c ủa t ập tin, nh ưng nó c ần đặt cho tập tin một cái tên nào đó để người dùng (hay đúng h ơn là ch ương trình ứng dụng) có thể làm việc với tập tin. Làm sao để người dùng có thể làm vi ệc với tập tin, đó là công việc của hệ thống tập tin, người dùng th ường không c ần quan tâm đ ến. Vì thế, đối với người dùng thì hệ thống tập tin là m ột cấu trúc logic c ủa các th ư m ục và tập tin. Một trong những đặc điểm quan trọng của Linux là nó h ỗ trợ nhi ều h ệ th ống tập tin. Điều này làm cho nó rất linh đ ộng và có th ể cùng t ồn t ại v ới nhi ều h ệ đi ều hành khác. Từ những phiên bản đầu tiên, Linux đã h ỗ tr ợ 15 lo ại t ập tin: ext, ext2, xia, minix, msdos, vfat, proc, smb, ncb, iso9660, sysv, hpfs, affs và ufs. Trong Linux, cũng như trong UNIX nói chung, hệ th ống t ập tin đ ược truy xu ất thông qua một cấu trúc cây thừa kế đơn thay vì là các thi ết b ị xác đ ịnh (nh ư tên ổ đĩa hoặc số hiệu của ổ đĩa). Linux thêm nh ững hệ th ống t ập tin đ ược thi ết l ập vào một thư mục và được gọi là thưu mục thiết lập. Khi một đĩa được khởi tạo, trên đĩa được chia thành nhi ều partitions. M ỗi partition có một hệ thống tập tin. Hệ thống tập tin c ủa Linux coi nh ững thi ết b ị kh ối một cách đơn giản như là một tập hợp tuyến tính các khối mà không quan tâm đ ến tổ chức vật lý trên đĩa. Chương trình điều khiển thiết bị khối chịu trách nhiệm ánh xạ khối cần đọc thành vị trí vật lý cụ thể trên đĩa. Trong hệ thống tập tin của Linux, người sử dụng không quan tâm đ ến nh ững khác biệt của chúng trên những thiết bị vật lý khác nhau. H ệ th ống t ập tin không ch ỉ trên hệ thống cục bộ mà còn là những ổ đĩa t ừ xa trên mạng. H ệ th ống t ập tin đ ầu tiên Linux hỗ trợ là Minix cho phép t ập tin có tên t ối đa là 14 ký t ự và kích th ước không vượt quá 64Mb. Hệ thống tập tin đặc thù đầu tiên c ủa Linux là m ột h ệ th ống tập tin mở rộng (EXT) được giới thiệu vào tháng 4/1992, hệ th ống này không hi ệu quả nên sau đó vào năm 1993, một hệ thống t ập tin m ở r ộng th ế h ệ 2 đ ược thêm vào. Cấu trúc của các thư mục 2.2.2.2. Nếu như cấu trúc tập tin không cho phép sử dụng gì khác ngoài tên t ập tin (t ức là tất cả các tập tin nằm trên một danh sách chung gi ống nh ư các h ạt cát trên bãi biển) thì thậm chí cả khi không có giới hạn về đ ộ dài c ủa tên, r ất khó đ ể tìm đ ến tập tin cần thiết. Một hệ thống Linux hoàn chỉnh có s ố l ượng t ập tin l ớn hàng nghìn, vì thế các tập tin được tổ chức vào các thư mục, các thư m ục có th ể nằm trong các thư mục khác, v.v… kết quả là chúng ta thu được một cấu trúc th ưu m ục có phân bậc bắt đầu từ một thư mục gốc. Mỗi thư mục con có thể chứa các t ập tin riêng l ẻ và các thư mục con của nó. Nhóm 1 – Lớp 1101NWMG0411 1
- Kiến trúc tổng quát về hệ điều hành Linux Apr. 25 Cấu trúc phân bậc của thư mục thường được minh họa bằng “cây th ư m ục”, trên đó mỗi thư mục đó là một nút của “cây”, còn tập tin – là các “lá”. Trên MS-DOS hoặc Windows cấu trúc thư mục như vậy có trên mỗi ổ đĩa (t ức là chúng ta có không phải một “cây” mà một “rừng” thư mục) và thư mục gốc của m ỗi c ấu trúc t ập tin được đánh dấu bằng một chữ cái Latinh (và do đó đã có m ột s ố h ạn ch ế). Trên Linux và UNIX nói chung thì chỉ có một cấu trúc th ư m ục duy nh ất cho t ất c ả đĩa lưu, và thư mục duy nhất của cấu trúc này được ký hiệu bằng dấu gạch chéo “/”. Có thể đưa vào thư mục gốc này một số lượng không hạn chế các thư m ục n ằm trên các đĩa lưu khác nhau (thường nói là “gắn hệ thống tập tin” ho ặc “gắn đĩa l ưu”). Tên của thư mục cũng được đặt theo những quy đ ịnh nh ư đ ối v ới tên t ập tin. Và nói chung ngoài cấu trúc bên trong của mình thì th ư m ục không khác gì so v ới những tập tin thông thường, ví dụ tập tin văn bản (text file). Ngoài thư mục hiện thời mỗi người dùng còn có một “thư mục nhà”, ph ương án dịch “thư mục cá nhân” được ưu tiên hơn. Đó là th ư mục trong đó ng ười dùng có toàn quyền: có thể tạo và xóa các t ập tin, thay đ ổi quy ền truy nh ập đ ến chúng. Trong cấu trúc thư mục của Linux những thư mục cá nhân c ủa ng ười dùng th ường nằm trong thư mục /home và thường có tên trùng với tên đăng nh ập c ủa ng ười dùng vào hệ thống. Ví dụ: /home/nhom1 Mỗi người dùng có thể làm việc với thư mục của mình b ằng ký hi ệu ~, t ức là người dùng nhom1 có thể làm việc với thư mục /home/nhom1/cautrucmaytinh bằng ~/cautrucmaytinh. Khi người dùng vào hệ thống, thư mục cá nhân s ẽ tr ở thành thư mục hiện thời của người dùng này. Công dụng của các thư mục chính: 2.2.2.3. Trong Windows, người dùng hoàn toàn có quyền t ổ ch ức c ấu trúc th ư m ục, nhưng một số truyền thống vẫn được tuân theo. Ví d ụ các t ập tin h ệ th ống th ường nằm trong thư mục C:\Windows, các chương trình thường được cái đặt vào C:\Program File… Trong Linux cũng có một cấu trúc thư mục kiểu nh ư vậy và th ậm chí cón nghiêm ngặt hơn. Hơn nữa có một tiêu chuẩn xác đ ịnh cấu trúc th ư m ục cho các H ệ Nhóm 1 – Lớp 1101NWMG0411 1
- Kiến trúc tổng quát về hệ điều hành Linux điều hành dòng UNIX. Tiêu chuẩn này được gọi là Filesystem Hierarchy Standart (FHS). Công dụng của các thư mục chính trong Linux: Thư mục Công dụng Apr. 25 Thư mục này gồm chủ yếu các chương trình, phần lớn trong số chúng /bin cần cho hệ thống trong thời gian khởi động (hoặc trong ch ế đ ộ m ột người dùng khi bảo trì hệ thống). Ở đây có lưu rất nhi ều nh ững câu lệnh thường dùng của Linux. Gồm các tập tin cố định cần cho khởi động hệ thống, trong đó có nhân /boot (kernel). Tập tin trong thư mục này chỉ cần trong thời gian kh ởi đ ộng. Thư mục các tập tin đặc biệt hoặc các tập tin thiết bị phần cứng. /dev Thư mục này và các thư mục con của nó lưu phần ớn những dữ li ệu /etc cần cho quá trình khởi động ban đầu của hệ thống và l ưu nh ững t ập tin cấ hình chính. Thông thường trong thư mục này là các th ư m ục cá nhân c ủa ng ười /home dùng (trừ root). Thư mục này lưu các thư viện chia sẻ của các hàm mà trình biên d ịch /lib C và các mô đun cần. /lost+found Thư mục này sử dụng để phục hồi hệ thống tập tin bằng lệnh fsck. Nếu fsck tìm ra tập tin mà không xác định đ ược th ư m ục m ẹ thì nó s ẽ đưa tập tin đó vào thư mục /lost+found. Đây là điểm gắn những hẹ thống tập tin gắn tạm thời. N ếu nh ư trên /mnt máy tính có đồng thời Linux và Windows (DOS) thì th ư m ục này thường dùng để gắn các hệ thống tập tin FAT. Thư mục này dành cho các tập tin tạm thời. /tmp Đây là thư mục cá nhân của người dùng cao cấp root, nó không n ằm /root cùng chỗ với thư mục cá nhân của những người dùng khác (trong /home) Thư mục này rất lớn và cấu trúc của nó nhìn chung lặp lại c ấu trúc c ủa /usr thư mục gốc. Trong thư mục con của /usr là tất cả các ứng d ụng chính. Trong thư mục này là các tập tin lưu các dữ liệu biến đ ổi (variable). /var Những dữ liệu này xác định cấu hình của một só ch ương trình trong lần chạy sau hoặc là những thông tin lưu tạm thời sẽ sử dụng sau. Quyền truy cập đến các tập tin và thư mục 2.2.2.4. Bởi vì Linux là Hệ điều hành nhiều người dùng, nên yêu c ầu quy đ ịnh truy c ập đến các tập tin và thư mục là một trong nh ững yêu c ầu thi ết y ếu nh ất mà H ệ đi ều hành phải giải quyết. Cơ sở của cơ chế quy định quy ền truy c ập đó là tên ng ười dùng và tên nhóm của người dùng. Trong Linux m ỗi ng ười dùng có m ột tên riêng không lặp lại dùng để đăng nhập vào hệ th ống. Ngoài ra, trên h ệ th ống còn có nhóm người dùng, và Linux cho phép một ng ười dùng có th ể n ằm trong m ột ho ặc nhiều nhóm. Tạo và xóa nhóm là công vi ệc của ng ười dùng cao c ấp root, và root có thể thay đổi thành phần của một nhóm nào đó. Thành viên c ủa các nhóm khác nhau có thể có quyền truy cập khác nhau đ ến t ập tin, ví d ụ nhóm các nhà qu ản tr ị có quyền nhiều hơn so với nhóm các nhà lập trình. Quản lý hệ thống xuất nhập I/O 2.2.3. Như đã đề cập trong bài học tổng quan về Hệ điều hành, m ột trong nh ững mục tiêu chính của hệ điều hành là giúp cho người sử d ụng đ ộc lập v ới thi ết b ị. Trong Linux, các thiết bị phần cứng đều được xem nh ư là các t ập tin thông th ường : Nhóm 1 – Lớp 1101NWMG0411 1
- Kiến trúc tổng quát về hệ điều hành Linux chúng có thể được mở, đóng , đọc , ghi, và sử d ụng cùng nh ững l ời g ọi h ệ th ống đ ể thao tác. Mọi thiết bị trong hệ thống đều được biểu diễn bởi các tập tin thiết b ị, ví dụ đĩa IDE đầu tiên của hệ thống được biểu diễn bởi /dev/hda. Đầu vào và đ ầu ra (I / O) là trung tâm của bất kỳ thiết b ị máy vi tính nào. Cũng nh ư các h ệ đi ều hành Apr. 25 khác, Linux hỗ trợ một loạt các thiết bị I / O. Các loại thiết b ị I / O đ ược h ỗ tr ợ b ởi Linux, hoặc bằng hạt nhân hoặc bởi các ứng dụng người dùng. Linux ánh xạ tập tin thiết bị vào các lời gọi h ệ th ống. Linux h ỗ tr ợ ba lo ại thi ết bị là : ký tự, khối và mạng. Có nhiều chương trình điều khiển thi ết b ị khác nhau trong hạt nhân của Linux nhưng chúng cùng chia x ẻ nh ững thu ộc tính chung : Mã nguồn của hạt nhân : chương trình điều khi ển thi ết b ị là m ột ph ần c ủa h ạt nhân và cũng như những đoạn mã nguồn khác nếu nó bị l ỗi nó có th ể đe d ọa nghiêm trọng đến hệ thống. Chương trình điều khiển thi ết b ị cung cấp m ột giao ti ếp chuẩn với hạt nhân của Linux. Chương sử dụng nh ững d ịch v ụ chu ẩn t ừ h ạt nhân này. Hầu hết các chương trình điều khiển thiết bị của Linux đ ược n ạp nh ư nh ững đơn thể của hạt nhân khi có yêu cầu và được gỡ ra khi nó không còn đ ược s ử d ụng nữa. Khi khởi động hệ thống mỗi chương trình điều khiển thi ết b ị đ ược kh ởi t ạo và nó sẽ tìm thiết bị phần cứng mà nó sẽ điều khi ển. Linux s ử d ụng c ơ ch ế DMA và s ử dụng một vector cấu trúc dma_chan để qu ản lý các kênh DMA (m ỗi kênh có m ột vector). Mỗi lớp điều khiển thiết bị : ký tự, khối, mạng cung cấp nh ững giao ti ếp chung với hạt nhân. Khi một thiết bị được khởi tạo, thanh ghi đi ều khi ển thi ết b ị bên trong hạt nhân của Linux được thêm một entry trong vector chrdevs c ủa c ấu trúc devive_struct. Một định danh (id) được xác đ ịnh cho vector này và là c ố đ ịnh. M ỗi entry trong vector chrdevs, một device_struct g ồm hai ph ần t ử : m ột con tr ỏ đ ến tên của thanh ghi điều khiển thiết bị và một con trỏ tới khối của tập tin thao tác. Kh ối của tập tin thao tác này là địa chỉ của những th ủ t ục trong ch ương trình đi ều khi ển thiết bị mà chúng kiểm soát những thao tác nh ư m ở, đóng, đ ọc, ghi. N ội dung của /proc/devices cho các thiết bị ký tự được lấy từ vector chrdevs. Các thiết bị khối được truy xuất như những tập tin. Linux quản lý các thanh ghi thiết bị khối bằng vector blkdevs, và tương tự nh ư vector chrdevs m ỗi entry c ủa nó là các cấu trúc device_struct nhưng có hai lo ại thi ết b ị kh ối : SCSI và IDE. M ỗi chương trình điều khiển thiết bị khối phải cung c ấp m ột giao ti ếp v ới vùng đ ệm cũng như những thao tác tập tin thôn th ường. Cấu trúc blk_dev_struct bao g ồm đ ịa chỉ của các thủ tục được yêu cầu và một con trỏ đến những cấu trúc d ữ li ệu c ần thiết, mỗi cấu trúc này sẽ đại diện cho một yêu cầu t ừ vùng đệm cho nh ững đi ều khiển đọc hoặc ghi một khối dữ liệu. Trong Linux, mỗi thiết bị mạng là một thực thể có thể nh ận ho ặc g ửi gói d ữ liệu. Mỗi thiết bị mạng được biểu diễn bằng một cấu trúc device. Các ch ương trình điều khiển thiết bị mạng sẽ ghi nhận những thiết bị mà chúng sẽ đi ều khi ển trong quá trình khởi tạo mạng lúc khởi động hệ thống. Cấu trúc device ch ứa nh ững thông tin về các thiết bị và địa chỉ của các hàm h ỗ tr ợ nh ững nghi th ức và d ịch v ụ m ạng khác nhau. Nhữõng hàm này chủ yếu t ập trung vào vi ệc chuy ển d ữ li ệu s ử d ụng các thiết bị mạng. các thiết bị sử dụng các cơ chế hỗ trợ mạng chuẩn để chuyển dữ liệu nhận được cho lớp nghi thức thích h ợp. T ất c ả các gói d ữ li ệu chuy ển và nhận được biểu diễn bởi cấu trúc sk_buff, đây là một cấu trúc linh đ ộng cho pháp các tiêu đề (header) nghi thức mạng có thể dể dàng thêm vào ho ặc loại b ỏ. Cấu trúc device lưu những thông tin về thiết bị mạng : tên, thông tin v ề đ ường truyền, cờ trạng thái giao tiếp(mô tả các thuộc tính và khả năng c ủa các thi ết b ị mạng), thông tin về nghi thức, hàng đợi g ọi tin(đây là hàng đ ợi c ủa các g ọi sk_buff Nhóm 1 – Lớp 1101NWMG0411 1
- Kiến trúc tổng quát về hệ điều hành Linux chờ chuyển dữ liệu trên thiết bị mạng đó), các hàm h ỗ tr ợ (m ỗi thi ết b ị cung c ấp một tập hợp các thủ tục chuẩn được gọi bởi lớp nghi thức). Quản lý bộ nhớ thứ cấp 2.2.4. Vì mỗi từ nhớ trong bộ nhớ chính được truy xuất trực tiếp với thời gian rất Apr. 25 ngắn, giá thành của bộ nhớ chính tương đối cao. Do đó h ầu h ết các máy tính đ ều có thêm các thiết bị lưu trữ (bộ nhớ phụ) tốc độ thấp, rẻ hơn và thường có dung lượng lớn hơn nhiều. Cần hệ thống lưu trữ thứ cấp để lưu trữ bền vững các dữ li ệu, chương trình nên sử dụng bộ nhớ thứ cấp (secondary storage) đ ể back up b ộ nh ớ chính. Hầu hết các hệ thống máy tính hiện đại sử dụng các ổ đĩa nh ư là các phương tiện lưu trữ trực tuyến cơ sở cho các chương trình và d ữ li ệu. 2.3. Hoạt động mạng Nếu say mê Internet, hẳn bạn đã nghe nói đến TCP/IP (Transmission Control Protocol/Internet Protocol), bộ giao thức này cung cấp n ền t ảng ph ần m ềm cho các hệ thống mạng máy tính liên kết với nhau trên kh ắp Internet. Linux s ử d ụng b ộ giao thức chuẩn TCP/IP, bộ giao thức truyền thông Unix-Unix, th ường đ ược g ọi là UUCP (Unix to Unix Copy Protocol) - và nhiều phương th ức truy ền thông qua c ổng tu ần t ự khác. Tính năng mạng của Linux rất linh đ ộng, cho phép c ấu hình h ệ th ống m ạng với quy mô từ mạng SME LAN cho đến mạng cộng tác trải r ộng kh ắp th ế gi ới. B ạn cũng nên biết rằng TCP/IP đã được sử dụng gần 2 thập k ỷ qua và có hàng tri ệu người dùng hiện còn tin tưởng vào bộ giao thức này. Vì th ế, nó r ất thích h ợp v ới môi trường cộng tác và những ứng dụng then chốt. Hơn n ữa, Linux h ỗ tr ợ đ ầy đ ủ cho TCP/IP cùng với những tính năng cao cấp như bức tường lửa, che ch ắn đ ịa ch ỉ IP. Trong môi trường quy mô trung bình, bước đầu đ ến v ới mạng có l ẽ là k ết n ối một máy đơn Linux với Internet. Điều này thực hi ện khá d ễ dàng n ếu b ạn có modem và tài khoản dial-up tới một nhà cung cấp d ịch v ụ Internet (ISP) nào đó: xác lập dịch vụ PPP (Point-to-Point Protocol) và ch ọn tùy ch ọn TCP/IP trong khi c ấu hình phần nhân Linux. Trong một số trường hợp, bộ giao th ức cũ SLIP vẫn đ ược s ử dụng thay vì PPP, nhưng có nhiều nhà cung cấp d ịch v ụ v ẫn đ ưa ra lo ại tài kho ản SLIP được triển khai trên nền phần mềm mô phỏng PPP, vì v ậy, b ạn v ẫn có kh ả năng sử dụng PPP trên máy trạm. Phần khó khăn nh ất có l ẽ là xác l ập PPP ở máy trạm kể cả sửa đổi lại một số tập tin cấu hình trong thư mục /etc/ppp. Còn một cách khác là sử dụng chương trình linuxconf để cấu hình tính năng dial-out c ủa PPP hay SLIP. Chưa hết Linux cón có thể được cấu hình thành trạm gateway Internet trong mạng LAN của bạn. Điều này có nghĩa là cho phép nhi ều máy cùng s ử d ụng và chia sẻ một tài khoản Internet - một ý tưởng rất tuyệt n ếu b ạn d ự đ ịnh s ử d ụng chung truy cập Internet cho 2 hoặc 3 máy. Có thể c ấu hình Linux thành m ột server SLIP hay PPP để truy cập bằng modem, hay thậm chí thành hẳn m ột nút Internet thực sự. Hầu hết người dùng cộng tác đều quan tâm đ ến vi ệc có m ột m ạng LAN, đ ể tập trung và chia sẻ những dữ liệu quan trọng, t ạo đi ều ki ện thu ận l ợi trong truy ền thông nội bộ. Kết nối nhiều máy Linux thành một mạng LAN không khó khăn l ắm: mỗi máy chỉ cần một card Ethernet, dây cáp thích h ợp và m ột vài thi ết b ị m ạng nh ư hub Ethernet. Linux hỗ trợ nhiều card mạng Ethernet (như 3Com, D-Link,...), t ự đ ộng nh ận ra cấu hình của card LAN vào lúc khởi động để khởi tạo lớp phần mềm giao ti ếp mạng theo đúng cấu hình này. Mỗi máy cần có m ột đ ịa ch ỉ IP và tên máy ch ủ (host name) Nhóm 1 – Lớp 1101NWMG0411 1
- Kiến trúc tổng quát về hệ điều hành Linux riêng để giao tiếp với nhau trên mạng (đi ều này cũng gi ống nh ư ki ểu c ấu hình đ ược sử dụng trên những mạng Windows). Apr. 25 2.4. Hệ thống bảo vệ Đối với người dùng bình thường, vấn đề bảo mật hình nh ư không ai quan tâm. Họ chỉ quan tâm đến những chức năng họ có thể sử dụng. Nh ưng s ự nguy hi ểm ở đây là hầu hết máy tính cá nhân khi đ ược cài đ ặt Windows ng ười dùng m ặc đ ịnh thường có quyền Adminisrator và người dùng cũng không nh ận th ức đ ược đi ều đó, với quyền Administrator chúng ta có toàn quy ền đ ối v ới h ệ th ống ch ỉnh s ửa cài đ ặt bất cứ những gì mình thích. Một số người thấy thích đi ều đó vì có th ể tho ải mái khám phá nhưng vô tình họ đã toang cánh c ửa cho m ọi nguy hi ểm bên ngoài có th ể xâm nhập vào máy của mình. Còn với Linux nói chung và Ubuntu nói riêng. Ch ỉ ng ười dùng ban đ ầu đ ược tạo ra có quyền quản lý hệ thống. Tài khoản root mặc đ ịnh đ ược Disable (Các qu ản lý hệ thống có kinh nghiệm rất thận trọng khi sử dụng tài khoản root). Chúng ta chỉ có quyền với thư mục Home của mình hoặc các ổ l ưu tr ữ ngoài, định dạng FAT32 của phân vùng Windows. Nh ưng v ới tài kho ản ban đ ầu đó chúng ta cũng có thể thực hiện được rất nhiều tác vụ quản lý hệ th ống. Tuy nhiên m ỗi thao tác đều yêu cầu xác thực người dùng và Ubuntu cũng t ạo ra các Session gi ống như trên website tự động yêu cầu xác nhận mật kh ẩu sau 1 kho ảng th ời gian nh ất định. Khi đăng nhập trong chế độ dòng lệnh thì password cũng không đ ược hi ển th ị dưới dạng dấu *. Trong bản Ubuntu 8.04 một số thao tác nh ư thay đ ổi đ ịnh d ạng ngày giờ, thông tin tài khoản của người dùng s ẽ không ảnh h ưởng đ ến h ệ th ống s ẽ không cần nhập mật khẩu và nếu muốn thay đổi toàn b ộ hệ th ống ch ỉ c ần b ấm vào nút Unlock. Với cơ chế như thế các loại Virus trong tương lai nếu có l ỡ lây vào máy cũng không thể nào phá huỷ được toàn bộ hệ thống mà ch ỉ m ột phần nh ỏ mà người dùng đó có quyền ảnh hưởng. Đặc biệt các cơ chế lây nhi ễm thông th ường của Windows như lây qua mạng, qua ổ di động lưu tr ữ thậm chí ch ỉ c ần vào website đã bị nhiễm là không có. Đối với các nhà quản trị hệ thống có kinh nghi ệm thì Linux th ật s ự an toàn, những lỗ hổng bảo mật đều được các nhà cung cấp nh ư Canonical, Red Hat c ập nhật sửa lỗi. Linux an toàn ngay từ lớp ban đầu là Kernel. Tuy nhiên với một số người dùng chuyển từ Windows sang rất khó ch ịu v ới các xác thực của Ubuntu, một số xài luôn tài khoản root, m ột s ố thì s ử d ụng l ệnh sudo mọi lúc mọi nơi, cài đặt rất nhiều phần m ềm, s ử d ụng các l ệnh l ấy t ừ Internet... Nếu các phần mềm, tập lệnh được lấy về t ừ ngu ồn không an toàn và người viết có ý đồ xấu chẳng khác nào chúng ta mời trộm vào nhà. Thử nghĩ một ngày nào đó nếu chúng ta tìm thấy một bài vi ết khá h ấp d ẫn trên Google và làm theo ngay lập tức mà không kiểm tra ngu ồn bài vi ết nhé. Ch ỉ c ần một dòng lệnh thì tất cả dữ liệu trên toàn ổ c ứng c ủa b ạn s ẽ b ị xoá th ậm chí c ả những ổ lưu trữ gắn ngoài. Chỉ ở Linux mới có một câu lệnh nguy hi ểm đ ến v ậy. Hoặc chỉ cần vài dòng lệnh nhỏ thôi là có thể Active đ ược ch ức năng đi ều khi ển máy tính từ xa có thể bị lợi dụng để máy bạn làm Zombie. Đ ối v ới các gói cài đ ặt thì nguy hiểm cũng không kém. 2.5. Hệ thống thông dịch lệnh Nhóm 1 – Lớp 1101NWMG0411 1
- Kiến trúc tổng quát về hệ điều hành Linux Trình thông dịch dòng lệnh (tiếng Anh: command line interpreter hay command line shell) là một chương trình máy tính có nhi ệm vụ đ ọc các dòng l ệnh văn b ản người dùng nhập vào và thông dịch nó trong ngữ cảnh c ủa m ột h ệ đi ều hành hay một ngôn ngữ lập trình. Apr. 25 Các trình thông dịch dòng lệnh cho phép người dùng g ọi các l ệnh khác nhau một cách hiệu quả (nhanh hơn sử dụng chuột). Đi ều này đòi h ỏi ng ười dùng bi ết tên lệnh và các tham số, cũng như cú pháp c ủa ngôn ng ữ đ ược thông d ịch. T ừ th ập kỷ 1960 trở đi, tương tác giữa người dùng với máy tính ch ủ y ếu qua các giao di ện dòng lệnh. Từ những năm 1970, giao diện đ ồ h ọa ng ười dùng (GUI) b ắt đ ầu đ ược nghiên cứu để cung cấp một giao diện khác, trong đó các l ệnh đ ược bi ểu di ễn b ằng các hình ảnh thay cho các miêu tả bằng ch ữ. Do d ễ h ọc h ơn các giao di ện dòng lệnh, giao diện đồ họa đã trở thành cách ph ổ thông nh ất đ ể ng ười dùng t ương tác với máy tính. Tuy nhiên, các chương trình thông d ịch dòng l ệnh v ẫn đ ược s ử d ụng rộng rãi cùng với giao diện đồ họa. Đối với một s ố tác v ụ ph ức t ạp, giao di ện đ ồ họa kém hiệu quả hơn do cần đến số lượng lớn trình đ ơn và h ộp h ội tho ại, và b ởi vì khó khăn cố hữu của việc biểu diễn tác vụ đó bằng đồ họa. Tất cả các trình thông dịch dòng lệnh đều là trình thông d ịch c ủa m ột ngôn ngữ lập trình, dù trong nhiều trường hợp ngôn ng ữ đó ch ỉ dùng cho trình thông d ịch đó. Đa số trình thông dịch dòng l ệnh h ỗ tr ợ l ập trình b ằng ngôn ng ữ k ịch b ản (scripting language). Đối với Hệ điều hành Linux, nó sử dụng một trình thông d ịch g ọi là shell. Shell là chương trình giữa bạn và Linux (hay nói chính xác h ơn là gi ữa b ạn v ới nhân Linux). Mỗi lệnh bạn gõ ra sẽ được Shell diễn dịch rồi chuy ển t ới nhân Linux. Nói một cách dễ hiểu Shell là bộ diễn dịch ngôn ngữ lệnh, ngoài ra nó còn t ận d ụng triệt để các trình tiện ích và chương trình ứng dụng có trên h ệ th ống… Vi ệc thao tác trực tiếp tới kernel là rất phức tạp và đòi hỏi ký thu ật cao, đ ể trách s ự ph ức t ạp cho người sử dụng và để bảo vệ kernel từ những sai sót của ng ười sử dụng, shell đã được xây dựng thành lớp bao quanh kernel. Ng ười s ử d ụng g ửi yêu c ầu t ới shell, shell biên dịch chúng và său đó gửi tới kernel. Chúng đơn giản, mạnh mẽ và giúp ích rất nhiều cho lập trình viên khi ti ếp cận với những công cụ phát triển ứng dụng trên hệ điều hành Linux sau này. Ngôn ng ữ của Shell cũng là ngôn ngữ bạn thường xuyên phải sử dụng nh ất đ ể đi ều khi ển Linux. Linux cũng như UNIX tách biệt các ứng dụng hoặc lệnh tri ệu g ọi kernel thành những đơn thể rất nhỏ. Tuy nhiên, nhiều lệnh của Linux có thể k ết h ợp l ại v ới nhau để tọa nên chức năng tổng hợp rất mạnh mẽ. Ví dụ: $ ls -al | more, lệnh này được kết hợp bằng hai lệnh, ls liệt kê toàn bộ danh sách file và directory trên đĩa ra màn hình, nếu danh sách quá dài, ls chuyển dữ liệu kết xuất cho lệnh more xử lý hiển thị kết quả thành từng trang màn hình. Linux có cách k ết h ợp d ữ li ệu k ết xu ất của các lệnh với nhau thông qua cơ chế chuyển ti ếp (redirect), ống d ẫn (pipe). Kết hợp các lệnh với nhau chỉ bằng dòng lệnh không chưa đ ủ. Nếu b ạn mu ốn tổ hợp hơn 20 lệnh của Linux đồng thời với nhau và tùy vào t ừng đi ều ki ện, k ết xu ất của lệnh mà có những ứng xử thích hợp thì sao? Bạn phải dùng đến các c ấu trúc lập trình rẽ nhánh như if, case. Trường hợp bạn muốn thực hiện các thao tác lập trình bạn phải dùng các lệnh như for, while... Shell chính là trình biên dịch cung cấp cho bạn khả năng này. Hầu hết các Shell trong Linux s ử d ụng m ột ngôn ng ữ gần giống với C (điều này cũng dễ hiểu bởi trong thế gi ới Linux và UNIX h ầu nh ư chỉ có C là ngôn ngữ lập trình thống trị. Ngôn ngữ Shell càng gi ống C thì l ập trình viên hay người điều khiển Linux càng cảm thấy thân thiện với HĐH). Nhóm 1 – Lớp 1101NWMG0411 1
- Kiến trúc tổng quát về hệ điều hành Linux Shell dịch các lệnh mà bạn nhập vào thành l ời g ọi hệ th ống, chuy ển các ký hiệu dẫn hướng “>”,” >>” hay “|” thành dữ liệu di chuy ển gi ữa các l ệnh. Đ ọc các biến môi trường để tìm ra thông tin thực thi lệnh. Linux cung c ấp cho b ạn r ất nhi ều chương trình Shell. Mở rộng ngôn ngữ kịch bản dùng lập trình Shell... tuy nhiên Apr. 25 chúng không khác nhau mấy. Một khi đã quen thu ộc v ới m ột Shell và cách ho ạt động của chúng bạn hoàn toàn có thể làm ch ủ được các Shell khác m ột cách d ễ dàng: - Sh (Bourne): Shell nguyên thủy áp dụng cho UNIX. - Csh, tcsh và zsh: Shell sử dụng cấu trúc lệnh của C làm ngôn ng ữ script. Được tạo ra đầu tiên bởi Bill Joy. Là Shell nổi tiếng và thông dụng th ứ hai sau shell bash. - Bash: là Shell chủ yếu của Linux. Ra đời từ dự án GNU. Bash (Vi ết t ắt c ủa Bourne Again Shell) có lợi điểm là mã ngu ồn đ ược công b ố r ộng rãi- RC: Shell m ở rộng của csh với nhiều tương thích với ngôn ngữ C h ơn. RC cũng ra đ ời t ừ d ự án GNU. Chuẩn thường được các nhà phân phối Linux sử dụng hi ện nay là bash Shell. Khi cài đặt Linux, trình cài đặt thường m ặc đ ịnh bash là Shell kh ởi đ ộng. B ạn có th ể tìm thấy chương trình Shell này trong thư mục / bin với tên chương trình là bash (lưu ý chương trình thực thi của Linux không c ần ph ải mang đ ịnh d ạng . exe như DOS). Bash đôi khi là một chương trình nhị phân (binary), đôi khi là m ột script g ọi đến liên kết nhị phân khác. Bạn có thể dùng lệnh file đ ể xem bash là m ột t ập tin nh ị phân hay script như sau: $ file /bin/bash. Nếu kết quả kết xuất là dạng ELF thì có nghĩa là bash là chương trình nhị phân. 3. NHÂN HỆ ĐIỀU HÀNH (KERNEL) 3.1. Nhân của Linux Khái niệm kernel ở đây nói đến những phần mềm, ứng dụng ở mức th ấp (low- level) trong hệ thống, có khả năng thay đổi linh hoạt để phù h ợp v ới ph ần c ứng. Chúng tương tác với tất cả ứng dụng và hoạt đ ộng trong ch ế đ ộ user mode, cho phép các quá trình khác – hay còn gọi là server, nh ận thông tin t ừ các thành ph ần khác qua inter-process communication (IPC). V ề bản ch ất, có nhi ều cách đ ể xây dựng cấu trúc và biên dịch 1 bộ kernel nhất định t ừ đầu. Nhìn chung, v ới h ầu h ết các kernel hiện nay, chúng ta có thể chia ra làm 3 lo ại: monolithic, microkernel, và hybrid. Linux sử dụng kernel monolithic trong khi OS X (XNU) và Windows 7 s ử dụng kernel hybrid. a. Microkernel: Microkernel có đầy đủ các tính năng cần thiết để qu ản lý b ộ vi x ử lý, b ộ nh ớ và IPC. Có rất nhiều thứ khác trong máy tính có thể đ ược nhìn th ấy, ti ếp xúc và quản lý trong chế độ người dùng. Microkernel có tính linh ho ạt khá cao, vì v ậy b ạn không phải lo lắng khi thay đổi 1 thiết bị nào đó, ví d ụ nh ư card màn hình, ổ c ứng lưu trữ... hoặc thậm chí là cả hệ điều hành. Microkernel với nh ững thông s ố liên quan footprint rất nhỏ, tương tự với bộ nhớ và dung lượng lưu tr ữ, chúng còn có tính bảo mật khá cao vì chỉ định rõ ràng những tiến trình nào ho ạt đ ộng trong ch ế đ ộ user mode, mà không được cấp quyền như trong ch ế đ ộ giám sát - supervisor mode. Nhóm 1 – Lớp 1101NWMG0411 1
- Kiến trúc tổng quát về hệ điều hành Linux Ưu điểm: - Tính linh hoạt cao - Bảo mật - Sử dụng ít footprint cài đặt và lưu trữ Apr. 25 Nhược điểm: - Phần cứng đôi khi “khó hiểu” hơn thông qua hệ th ống driver - Phần cứng hoạt động dưới mức hiệu suất thông th ường vì các trình đi ều khiển ở trong chế độ user mode - Các tiến trình phải chờ đợi để được nhận thông tin - Các tiến trình không thể truy cập t ới nh ững ứng d ụng khác mà không ph ải chờ đợi b. Monolithic Kernel: Với Monolithic thì khác, chúng có chức năng bao quát r ộng h ơn so v ới microkernel, không chỉ tham gia quản lý bộ vi xử lý, b ộ nh ớ, IRC, chúng còn can thiệp vào trình điều khiển driver, tính năng đi ều ph ối file h ệ th ống, các giao ti ếp qua lại giữa server... Monolithic tốt hơn khi truy cập t ới ph ần c ứng và đa tác v ụ, b ởi vì nếu 1 chương trình muốn thu thập thông tin từ bộ nhớ và các ti ến trình khác, chúng cần có quyền truy cập trực tiếp và không phải chờ đợi các tác v ụ khác k ết thúc. Nhưng đồng thời, chúng cũng là nguyên nhân gây ra s ự b ất ổn vì nhi ều ch ương trình chạy trong chế độ supervisor mode h ơn, ch ỉ cần 1 s ự c ố nh ỏ cũng khi ến cho cả hệ thống mất ổn định. Ưu điểm: - Truy cập trực tiếp đến các phần cứng - Dễ dàng xử lý các tín hiệu và liên lạc giữa nhiều thành phần v ới nhau - Nếu được hỗ trợ đầy đủ, hệ thống phần cứng sẽ không cần cài đ ặt thêm driver cũng như phần mềm khác - Quá trình xử lý và tương tác nhanh hơn vì không cần phải ch ờ đ ợi Nhược điểm: - Tiêu tốn nhiều footprint cài đặt và lưu trữ - Tính bảo mật kém hơn vì tất cả đều hoạt động trong chế độ giám sát - supervisor mode c. Hybrid Kernel: Khác với 2 loại kernel trên, Hybrid có khả năng ch ọn l ựa và quy ết đ ịnh nh ững ứng dụng nào được phép chạy trong chế độ user hoặc supervisor. Thông th ường, những thứ như driver và file hệ thống I/O sẽ hoạt đ ộng trong ch ế đ ộ user mode trong khi IPC và các gói tín hiệu từ server được gi ữ l ại trong ch ế đ ộ supervisor. Tính năng này thực sự rất có ích vì chúng đảm bảo tính hi ệu qu ả c ủa h ệ th ống, phân phối và điều chỉnh công việc phù hợp, dễ quản lý. Ưu điểm: - Các nhà phát triển có thể chọn và phân loại nh ững ứng d ụng nào s ẽ ch ạy trong chế độ thích hợp - Sử dụng ít footprint hơn so với monolithic kernel - Có tính linh hoạt và cơ động cao nhất Nhược điểm: - Có thể bị bỏ lại trong quá trình gây treo hệ th ống t ương t ự nh ư v ới microkernel - Các trình điều khiển thiết bị phải được quản lý bởi người dùng 3.2. Vậy những file Linux Kernel này ở đâu? Nhóm 1 – Lớp 1101NWMG0411 1
- Kiến trúc tổng quát về hệ điều hành Linux Các file kernel này, trong Ubuntu chúng đ ược l ưu tr ữ t ại th ư m ục /boot và đ ặt tên theo vmlinuz-version. Khi bộ nhớ ảo bắt đầu được phát tri ển để th ực hiện các tác vụ đa luồng, tiền tố vm sẽ được đặt vào đ ầu các file kernel đ ể phân bi ệt kh ả năng hỗ trợ công nghệ ảo hóa. Kể từ đó, Linux kernel đ ược g ọi là vmlinux, nh ưng Apr. 25 hệ thống kernel này đã phát triển với t ốc đ ộ quá nhanh, l ớn h ơn so v ới dung l ượng bộ nhớ boot chuẩn của hệ điều hành, vì vậy những file kernel này đã được nén theo chuẩn zlib – và ký tự z được thêm vào là do nh ư v ậy. Ngoài ra còn 1 s ố đ ịnh d ạng nén thường gặp khác là LZMA hoặc BZIP2, nhưng chúng vẫn đ ược g ọi chung là zImage. Các phiên bản được sắp xếp thứ tự theo định dạng A.B.C.D, trong đó A.B thường là 2.6, C đại diện cho phiên bản, và D là ký hi ệu các b ản vá l ỗi ho ặc patch: Trong thư mục /boot còn có rất nhiều file quan trọng khác như, initrd.img- version, system.map-version, và config-version. File initrd đ ược dùng nh ư 1 ổ đĩa RAM để giải nén và kích hoạt các file kernel th ực s ự, còn file system.map đ ược dùng để quản lý bộ nhớ trước khi kernel được tải đầy đủ, và file config làm nhi ệm vụ thông báo cho kernel biết những l ựa ch ọn ho ặc module nào s ẽ đ ược n ạp vào quá trình hệ thống khởi động. Cấu trúc file Linux Kernel Thực tế, Windows đã có tất cả các trình điều khi ển sẵn có và ng ười s ử d ụng chỉ việc kích hoạt các trình điều khiển tương ứng để s ử d ụng. Và đó cũng chính là nhiệm vụ các module kernel Linux đảm nhiệm, hay còn đ ược g ọi là loadable kernel module (LKM), rất cần thiết để giữ các chức năng đi kèm v ới toàn b ộ h ệ th ống ph ần cứng hoạt động mà không ảnh hưởng đến bộ nhớ. 1 module thông th ường s ẽ gán chức năng cơ bản tới các kernel như điều khiển driver, file h ệ th ống... LKM có ph ần đuôi mở rộng là .ko và được lưu trữ trong thư mục /lib/modules, người sử dụng có thể thiết lập thuộc tính tự khởi động, cho phép t ải ho ặc không trong khi h ệ đi ều hành khởi động, bằng cách dùng lệnh menuconfig, can thiệp vào file /boot/config, hoặc bằng cách sử dụng lệnh modprobe. 4. CÁC DỊCH VỤ CỦA HỆ ĐIỀU HÀNH Nhóm 1 – Lớp 1101NWMG0411 1
- Kiến trúc tổng quát về hệ điều hành Linux Trong hình mô tả các lớp của kernel, cho thấy l ớp kernel nằm ngay bên d ưới lớp các trình ứng dụng của người dùng. Kernel th ực hi ện vô s ố các thao tác c ơ b ản (primitives) thay mặt cho các tập tin của ngu ời dùng đ ể h ỗ tr ợ cho giao di ện ng ười dùng. Các thao tác đó bao hàm các dịch vụ mà kernel c ấp. Đó là các d ịch v ụ: Apr. 25 Quản lý tập tin 4.1. Kiểm soát tập tin gồm có: cho phép tạo t ập tin m ới, kết thúc t ập tin, treo vi ệc thwucj hiện và trao đổi thông điệp giữa các t ập tin. D ịch v ụ này cho phép l ập bi ểu để các tập tin được thực hiện trên CPU. Các tập tin chia sẻ CPU theo ph ương th ức phân chia thời gian, một tập tin sẽ bị treo sau khi th ời gian phân b ổ đã h ết, Kernel lấy tập tin khác đưa vào thực hiện. Sau này Kernel sẽ lại l ựa ch ọn t ập tin b ị treo đ ể đưa vào thực hiện trở lại. Quản lý tài nguyên 4.2. Cấp phát bộ nhớ cho tập tin đang thực hiện, cho phép t ập tin chia s ẻ không gian địa chỉ của tập tin dưới những điều kiện nhất đ ịnh, b ảo v ệ mi ền đ ịa ch ỉ riêng của tập tin đối với các tập tin khác. Nếu hệ th ống ch ạy trong hoàn c ảnh thi ếu b ộ nhớ, kernel sẽ giải phóng bộ nhớ bằng cách ghi l ại các t ập tin t ạm th ời vào b ộ nh ớ dự phòng (còn gọi là thiết bị swap). Nếu toàn b ộ t ập tin đ ược ghi vào swap, thì h ệ Unix gọi là hệ tráo đổi (swapping system); Nếu Kernel ghi các trang c ủa b ộ nh ớ lên swap, thì hệ đó gọi là hệ lưu trang (paging system). Ngoài ra, H ệ đi ều hành Linux còn cấp phát bộ nhớ thứ cấp để cất và tìm lại dữ liệu của ng ười dùng có hi ệu qu ả. Dịch vụ này cấu tạo nên hệ thống tệp. Kernel cấp vùng nh ớ th ứ cấp cho t ệp c ủa người dùng, khôi phục lại vùng nhớ, xây dựng cấu trúc t ệp theo m ột cách th ức hi ểu được, bảo vệ tệp của người dùng trước các truy nhập bất hợp pháp. Quản lý thiết bị truy xuất 4.3. Cho phép các tập tin truy nhập các thiết bị ngoại vi, ví dụ t/b đầu cuối, đĩa, t/b mạng. Kernel cung cấp các dịch vụ một cách thông su ốt, chẳng hạn kernel ghi nhận tệp cần thao tác thuộc loại tệp bình thường hay tệp thi ết b ị, nh ưng ẩn đi ều đó đối với tập tin của người dùng; hay ví dụ, kernel tạo khuôn d ữ li ệu trong t ệp đ ể ghi (đĩa), nhưng lại ẩn khuôn dạng đó đối với tập tin người dùng (user). T ương t ự nh ư vậy đối với các dịch vụ hệ thống cung cấp cho các tập tin user dùng ở m ức đ ộ cấp người dùng. Ví dụ dịch vụ hệ thống mà shell dùng để đóng vai trò là trình thông dịch lệnh: cho phép shell đọc đầu vào từ t/b đầu cuối, phát sinh đ ộng các t ập tin, đồng bộ việc thực hiện các tập tin, tạo pipe, đổi hướng I/O. Người dùng cấu t ạo các phiên bản shell riêng mà không tác động t ới nh ững users khác. Các trình đó cùng dùng các dịch vụ của kernel ở mức shell chuẩn. Xác định và xử lý lỗi 4.4. Hệ điều hành liên tục yêu cầu nhận biết các lỗi có thể phát sinh. Các l ỗi có th ể xảy ra trong CPU và phần cứng bộ nhớ (như lỗi bộ nhớ hay lỗi về điện), trong các thiết bị xuất/nhập (như lỗi chẳn lẻ trên băng từ, lỗi nối kết mạng, hết gi ấy in) và trong chương trình người dùng (như tràn số học, cố gắng truy xuất m ột v ị trí b ộ nh ớ không hợp lệ, dùng quá nhiều thời gian CPU). Đối với m ỗi loại l ỗi, hệ đi ều hành nên thực hiện một hoạt động hợp lý để đảm bảo tính toán đúng và không đ ổi. Do Linux được phát triển bởi hàng ngàn lập trình viên, họ công b ố mã ngu ồn m ột cách r ộng Nhóm 1 – Lớp 1101NWMG0411 1
- Kiến trúc tổng quát về hệ điều hành Linux rãi, do đó bất kì một ai quan tâm cũng có thể xem xét, b ất kì m ột l ỗi gì cũng có th ể nhanh chóng được khắc phục. Việc khắc phục lỗi như sau: Khi gặp lỗi người sử dụng có thể tìm xem có bản sửa lỗi thì tải về, có thể đề nghị sửa l ỗi với tác gi ả, n ếu không mang lại kết quả thì có thể tự sửa lấy. Các lỗi được khắc phục rất nhanh, có Apr. 25 khi chỉ trong vòng vài phút sau khi được thông báo. Có th ể đ ổi hãng cung c ấp linux nếu muốn. Một bản linux thường được rất nhiều chuyên gia ki ểm tra tr ước khi tung ra thị trường. Giao tiếp với người sử dụng 4.5. Mặc dù Linux là Hệ điều hành mạnh và phát tri ển, nh ưng n ếu ch ỉ làm vi ệc qua giao diện dòng lệnh thì lĩnh trở thành khó s ử d ụng và không th ể h ấp d ẫn đ ược nhiều người dùng. Người dùng sẽ phải nhớ một danh sách dài các câu l ệnh. Do đó ngay từ những ngày đầu phát triển Linux đã có m ột giao di ện khác “thân thi ện” v ới người dùng hơn, đó là giao diện đồ họa. Trong giao di ện đ ồ h ọa ng ười dùng có th ể chạy chúng bằng hệ thống trình đơn (menu), hệ th ống các bi ểu t ượng trên màn hình, và ngoài ra còn có khả năng sử dụng chu ột đ ể sắp xếp không gian c ủa màn hình. Hiện nay các môi trường làm việc lớn nh ư KDE, GNOME còn có s ẵn nh ững ứng dụng đi kèm giúp người dùng không mất nhi ều th ời gian lựa ch ọn. M ọi th ứ đã có sẵn. Các dịch vụ hệ thống 4.6. Ngoài ra, một tập chức năng khác của hệ điều hành t ồn t ại không giúp ng ười dùng, nhưng đảm bảo các điều hành hữu hiệu của chính h ệ th ống. Các h ệ th ống với nhiều người dùng có thể đạt tính hữu hiệu b ằng cách chia s ẻ tài nguyên máy tính giữa các người dùng. * Cấp phát tài nguyên: khi nhiều người dùng đăng nh ập vào h ệ th ống hay nhiều công việc đang chạy cùng lúc, tài nguyên phải đ ược c ấp t ới m ỗi ng ười dùng. Nhiều loại tài nguyên khác nhau được quản lý b ởi h ệ đi ều hành. M ột s ố tài nguyên (như chu kỳ CPU, bộ nhớ chính, lưu trữ tập tin) có mã cấp phát đặt bi ệt, trái l ại các tài nguyên khác (như thiết bị xuất/nhập) có mã yêu cầu và gi ải phóng th ường h ơn. Thí dụ, xác định cách tốt nhất để dùng CPU, hệ điều hành có các th ủ t ục đ ịnh th ời biểu CPU. Các thủ tục này xem xét t ốc độ CPU, các công vi ệc ph ải đ ược th ực thi, số thanh ghi sẳn dùng và các yếu tố khác. Cũng có các th ủ t ục c ấp phát ổ băng t ừ để dùng cho một công việc. Một thủ tục như thế định vị ổ băng từ ch ưa đ ược dùng và đánh dấu một bảng bên trong để ghi người dùng m ới c ủa ổ băng t ừ. M ột th ủ t ục khác được dùng để xoá bảng đó. Các thủ tục này cũng có th ể cấp phát các máy v ẽ, modem, các thiết bị ngoại vi khác. * Tính toán: chúng ta muốn giữ vết người dùng nào s ử d ụng bao nhiêu và lo ại tài nguyên máy tính nào. Giữ vết này có th ể đ ược dùng đ ể tính toán (tính ti ền ng ười dùng) hay đơn giản thống kê sử dụng. Thống kê sử d ụng có th ể là công c ụ có giá trị cho người nghiên cứu muốn cấu hình lại h ệ th ống đ ể c ải ti ến các d ịch v ụ tính toán. * Bảo vệ: người sở hữu thông tin được lưu trong hệ thống máy tính đa ng ười dùng muốn điều khiển thông tin này. Khi nhiều quá trình riêng r ẻ th ực thi đ ồng hành, không thể cho một quá trình can thi ệp t ới các quá trình khác hay t ới chính h ệ điều hành. Bảo vệ đảm bảo rằng tất cả truy xuất tài nguyên c ủa h ệ th ống đ ược kiểm soát. An toàn hệ thống từ người dùng bên ngoài cũng là v ấn đ ề quan tr ọng. An toàn bắt đầu với mỗi người dùng có quyền đối với hệ th ống, th ường b ằng m ật khẩu để được phép truy xuất tài nguyên. Mở rộng việc bảo vệ đ ối v ới các thi ết b ị xuất/nhập bên ngoài, bao gồm modem, card mạng t ừ nh ững truy xu ất không h ợp l ệ, Nhóm 1 – Lớp 1101NWMG0411 1
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Tin học đại cương - Đỗ Công Đức
96 p | 114 | 12
-
Giáo trình Mạng máy tính nâng cao: Phần 1 - PGS.TS. Trần Công Hùng
96 p | 60 | 12
-
Khái quát lịch sử phát triển và các yếu tố, nguyên tắc thiết kế cơ bản của đồ họa quảng cáo
7 p | 18 | 6
-
Giáo trình Lập trình CAD/CAM (Nghề: Vẽ và thiết kế trên máy tính - Cao đẳng): Phần 1 - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội
67 p | 21 | 5
-
Giáo trình Cấu trúc dữ liệu và giải thuật - Nghề: Công nghệ thông tin (Cao đẳng) - CĐ Kỹ Thuật Công Nghệ Bà Rịa-Vũng Tàu
86 p | 66 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn