Với sự phát triểnngà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 đangtrở 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ê
Trang 1MỤ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? 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
Trang 2LỜI MỞ ĐẦU
Ngay từ những ngày mới xuất hiện, Microsoft nhìn thấy ở Linux khả năng cạnhtranh 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ềuhành hứa hẹn và hỗ trợ cho Linux Những nước còn nghèo tìm thấy ở Linux mộtcá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ộtnguồ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 Đốivớ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ủamì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ủathế kỷ XX, Linux mới chỉ là đứa con tinh thần chưa biết nói của Torvads Chỉ trongvà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áychủ 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ảnphâ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ềnlự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áckhi 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ườidù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ểnngà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 đangtrở 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ànhLinux”, 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ủangườ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ềuhà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
Trang 31 GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH LINUX
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ànhLinux 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ứngcủ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ệcthự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âulệ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ủamì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ônglà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áttriể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 saytrong 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ậnchủ yếu này được phát triển và tung ra trên thị trường dưới bản quyền GNU GeneralPublic 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ưngtê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ốngUnix (còn được biết đến dưới tên GNU/Linux) được tạo ra bởi việc đóng gói nhânLinux 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ácngô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 desktopnhư 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
Trang 4Ban đầu, Linux được phát triển và sử dụng bởi những người say mê Tuynhiên, hiện nay Linux đã có được sự hỗ trợ bởi các công ty lớn như IBM và Hewlett-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 đặctí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 sosá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ộcvà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ìnhphá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ấtkhiê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 Windowsnhiều hơn là Linux Nhưng trong tương lai số lượng phần cứng được hỗ trợ choLinux sẽ tăng lên
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à 100triệ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ữngphầ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ầnmề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èmtheo) 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ườiViệ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!!!
1.2.2 Những ưu điểm kỹ thuật nổi bật của Linux
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ấtnhiề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àymới là nguyên nhân khiến cho Linux ngày càng trở nên phổ biến không chỉ ở ViệtNam 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ó 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 linhhoạt của Linux còn được thể hiện ở chỗ nó tương thích được với rất nhiều môitrường Hiện tại, ngoài Linux dành cho server, máy tính để bàn nhân Linux (Linux
Trang 5kernel) còn được nhúng vào các thiết bị điều khiển như máy tính palm, robot Phạm vi ứng dụng của Linux được xem là rất rộng rãi.
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 đốivới những hệ điều hành mã nguồn đóng như Windows, bạn không thể biết đượcngười ta viết gì, và viết ra sao mà chỉ biết được chúng chạy như thế nào TrongLinux 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ợpvớ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ínhbả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àymới được đưa vào Windows)
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àntoàn trái ngược với Windows Mỗi khi có một phiên bản Windows mới ra đời thì baogiờ 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ườngkhô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
mới nhất
Trang web chính thức Các bản tương tự
EdubuntuDebian GNU/Linux 4.0 www.debian.org
Trang 6Asianux 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ầncứ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ềmcả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à ítnhiề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 địchlà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ữacác bản Linux khác nhau
Bộnhớ
ĐĩacứngYêu cầu nhỏ nhất, chỉ làm việc trong giao diện văn bản với dòng
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
lý cửa sổ nhỏ nhẹ như icewm, fluxbox, windowmaker
Chạy các ứng dụng cần nhiều bộ nhớ (như GIMP, các ứng dụng
nằm trong Koffice, OpenOfffice.org
256 1500
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ữngmáy rất cũ, mà trước đây chỉ có thể dùng MS-DOS (tất nhiên là trong trường hợpnà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àngmạ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
2 CÁC THÀNH PHẦN CỦA HỆ ĐIỀU HÀNH LINUX
Trang 7Sau đâ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ànhLinux 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ựcthi 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ó truyxuấ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épnhiều chương trình được nạp vào bộ nhớ và được thực thi đồng hành Sự phát triểnnà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ệncá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 thichươ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ênngoà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ànhthự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ìnhnày có tiềm năng thực thi đồng hành, với một CPU (hay nhiều CPU) được đa hợpgiữ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àmcho 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áccon 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úctask_struct gồn những trường như sau : trạng thái (thi hành, chờ, ngưng, lưngchừ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,bash, tcsh Tập tin thi hành có nhiều dạng, dạng được sử dụng thông dụng nhấttrong 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ẻ
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 đặtcá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ínhiệ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 bitthí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 chotiế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
Trang 8Trong Linux cơ chế đường ống cài đặt sử dụng hai cấu trúc file trỏ đến cùnginode VFS tạm thời xác định một trang vật lý trong bộ nhớ Khi tiến trình ghi thựchiện việc ghi vào đường ống, các byte sẽ được chép vào trang dữ liệu chia sẻ Linuxphải đồng bộ quy trình truy xuất trong đường ống Tiến trình ghi sử dụng các hàmthư 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
2.2.1 Quản lý bộ nhớ chính
Trong hệ thống máy tính, bộ nhớ là một tài nguyên khan hiếm Cho dù có baonhiê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ácchươ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ộtvù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 đềucung 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ầnnhiều thời gian để truy cập đĩa Kernel cũng cài đặt khối bộ nhớ hợp nhất cho cácchươ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
2.2.2 Quản lý hệ thống tập tin
2.2.2.1 Tập tinMá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íacủ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 đặtcho tập tin một cái tên nào đó để người dùng (hay đúng hơn là chương trình ứngdụ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
Trang 9Một trong những đặc điểm quan trọng của Linux là nó hỗ trợ nhiều hệ thốngtậ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ềuhà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ấtthô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àomộ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ỗipartition 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ốimộ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ữngkhá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 đầutiê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ướckhông vượt quá 64Mb Hệ thống tập tin đặc thù đầu tiên của Linux là một hệ thốngtậ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ệuquả nên sau đó vào năm 1993, một hệ thống tập tin mở rộng thế hệ 2 được thêmvào
2.2.2.2 Cấu trúc của các thư mụcNế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ãibiể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ậptin 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ácthư 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ânbậ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ó
Trang 10Cấ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-DOShoặ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ôngphả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ênLinux 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ớinhữ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 Trongcấ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ằmtrong 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/cautrucmaytinhbằ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
2.2.2.3 Công dụng của các thư mục chính:
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ườngnằ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ónnghiê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ệđ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
/bin Thư mục này gồm chủ yếu các chương trình, phần lớn trong số chúng
cần cho hệ thống trong thời gian khởi động (hoặc trong chế độ mộtngười dùng khi bảo trì hệ thống) Ở đây có lưu rất nhiều những câulệnh thường dùng của Linux
/boot Gồm các tập tin cố định cần cho khởi động hệ thống, trong đó có nhân
(kernel) Tập tin trong thư mục này chỉ cần trong thời gian khởi động./dev 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
/etc 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
cần cho quá trình khởi động ban đầu của hệ thống và lưu những tập tin
Trang 11fsck tìm ra tập tin mà không xác định được thư mục mẹ thì nó sẽ đưatập tin đó vào thư mục /lost+found.
/mnt Đâ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
máy tính có đồng thời Linux và Windows (DOS) thì thư mục nàythường dùng để gắn các hệ thống tập tin FAT
/tmp Thư mục này dành cho các tập tin tạm thời
/root Đây là thư mục cá nhân của người dùng cao cấp root, nó không nằm
cùng chỗ với thư mục cá nhân của những người dùng khác (trong/home)
/usr 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
thư mục gốc Trong thư mục con của /usr là tất cả các ứng dụng chính./var Trong thư mục này là các tập tin lưu các dữ liệu biến đổi (variable)
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ầnchạy sau hoặc là những thông tin lưu tạm thời sẽ sử dụng sau
2.2.2.4 Quyền truy cập đến các tập tin và thư mụcBở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ềuhành phải giải quyết Cơ sở của cơ chế quy định quyền truy cập đó là tên ngườidù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êngkhô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ómngười dùng, và Linux cho phép một người dùng có thể nằm trong một hoặc nhiềunhó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ềnnhiều hơn so với nhóm các nhà lập trình
2.2.3 Quản lý hệ thống xuất nhập I/O
Như đã đề cập trong bài học tổng quan về Hệ điều hành, một trong những mụctiê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ị TrongLinux, các thiết bị phần cứng đều được xem như là các tập tin thông thường : chúng
có thể được mở, đóng , đọc , ghi, và sử dụng cùng những lời gọi hệ thống để thaotá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ụ đĩaIDE đầ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 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ặcbằ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 tronghạ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ạtnhâ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ọanghiê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ếpchuẩ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ânnà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ụngnữ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ộtvector)