Tải bản đầy đủ (.pdf) (23 trang)

Báo cáo kiến thức khái quát về hệ điều hành linux

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (613.45 KB, 23 trang )

Apr. 25

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?
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


Apr. 25

Kiến trúc tổng quát về hệ điều hành Linux

LỜ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ạ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

2


Apr. 25

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
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 desktop

Nhóm 1 – Lớp 1101NWMG0411

3


Apr. 25

Kiến trúc tổng quát về hệ điều hành Linux


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à HewlettPackard, đồ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Ó.
1.2.1.
Vấn đề bản quyền
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!!!
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ấ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ó thể

Nhóm 1 – Lớp 1101NWMG0411

4


Apr. 25

Kiến trúc tổng quát về hệ điều hành Linux


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....
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

5



Kiến trúc tổng quát về hệ điều hành Linux

Apr. 25

Ultimate Edition
1.7
Red Hat Enterprise 5.0
Linux
Fedora Core
10.0
SUSE
Linux 10.1

www.redhat.com/rhel/
www.fedoraproject.org

www.novell.com/Linux/

OpenSUSE 10.3

Enterprise Desktop
Mint
Knoppix
PCLinuxOS
Mandrake
CentOS
Slackware
Xandros
SLAX

Easys
Sabayon
DreamLinux
OpenSolaris
Hồng kỳ Linux
Puppy Linux
Hacao Linux
Vubuntu
Asianux

6

12.1

www.Linuxmint.com
www.knoppix.com/
www.pcLinuxos.com/
www.madrivaLinux.com
www.gentoo.org/
www.slackware.com/

2008

www.opensolaris.org/

2.16
1.0
2.0

/>

5.3.1
2008
2007.0

Mandriva

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

6


Apr. 25

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.

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,
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.

Nhóm 1 – Lớp 1101NWMG0411

7


Apr. 25

Kiến trúc tổng quát về hệ điều hành Linux

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 đặ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
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ó 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.
2.2.2.

Quản lý hệ thống tập tin
2.2.2.1.
Tập tin

Nhóm 1 – Lớp 1101NWMG0411

8


Apr. 25

Kiến trúc tổng quát về hệ điều hành Linux

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
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.
2.2.2.2.
Cấu trúc của các thư mục
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

9



Apr. 25

Kiến trúc tổng quát về hệ điều hành Linux

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.
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ườ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

10


Apr. 25

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
/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ộ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.
/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
cấ hình chính.
/home
Thông thường trong thư mục này là các thư mục cá nhân của người
dùng (trừ root).
/lib
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
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.
/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ày
thườ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ần chạ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ục
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.
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ụ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 : 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

Nhóm 1 – Lớp 1101NWMG0411

11


Apr. 25

Kiến trúc tổng quát về hệ điều hành Linux

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 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
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).

Nhóm 1 – Lớp 1101NWMG0411

12


Apr. 25

Kiến trúc tổng quát về hệ điều hành Linux

2.2.4.
Quản lý bộ nhớ thứ cấp

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
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)
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).

Nhóm 1 – Lớp 1101NWMG0411

13


Apr. 25

Kiến trúc tổng quát về hệ điều hành Linux
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
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.

Nhóm 1 – Lớp 1101NWMG0411

14


Apr. 25

Kiến trúc tổng quát về hệ điều hành Linux

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).
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
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

Nhóm 1 – Lớp 1101NWMG0411

15


Apr. 25

Kiến trúc tổng quát về hệ điều hành Linux

độ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 (lowlevel) 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.
Ư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ữ
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

Nhóm 1 – Lớp 1101NWMG0411

16


Apr. 25

Kiến trúc tổng quát về hệ điều hành Linux

- 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?
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

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

Nhóm 1 – Lớp 1101NWMG0411

17


Apr. 25

Kiến trúc tổng quát về hệ điều hành Linux

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.imgversion, 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
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ụ:

Nhóm 1 – Lớp 1101NWMG0411

18


Apr. 25

Kiến trúc tổng quát về hệ điều hành Linux

4.1.
Quản lý tập tin
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.
4.2.

Quản lý tài nguyên
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.
4.3.
Quản lý thiết bị truy xuất
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.
4.4.
Xác định và xử lý lỗi
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 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ó 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.

Nhóm 1 – Lớp 1101NWMG0411

19


Apr. 25

Kiến trúc tổng quát về hệ điều hành Linux

4.5.
Giao tiếp với người sử dụng
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.
4.6.
Các dịch vụ hệ thống
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ệ, và ghi lại
các nối kết để phát hiện đột nhập vào hệ thống. Nếu hệ thống bảo vệ và bảo mật,
những cảnh báo phải được thiết lập xuyên suốt.

5. LỜI GỌI HỆ THỐNG
Một cuộc gọi hệ thống là một yêu cầu của một tác vụ đang chạy cho hạt nhân
để cung cấp một số loại dịch vụ thay mặt của nó. Nhìn chung, các dịch vụ hạt nhân
gọi bởi các cuộc gọi hệ thống bao gồm một lớp trừu tượng hóa giữa phần cứng và
người sử dụng không gian các chương trình, cho phép một lập trình để thực hiện
một môi trường hoạt động mà không cần phải chỉnh chương trình của mình (s) quá
đặc biệt để thương hiệu duy nhất hoặc kết hợp cụ thể chính xác các thành phần hệ

Nhóm 1 – Lớp 1101NWMG0411

20


Apr. 25

Kiến trúc tổng quát về hệ điều hành Linux

thống phần cứng. Hệ thống các cuộc gọi cũng phục vụ chức năng này khái quát trên
ngôn ngữ lập trình, ví dụ như, các cuộc gọi hệ thống đọc sẽ đọc dữ liệu từ một mô
tả tập tin. Để lập trình viên, điều này có vẻ giống như một chức năng C, nhưng trong
thực tế, mã để đọc được chứa trong hạt nhân.
Các CPU ia32 công nhận hai lớp học của các sự kiện cần chú ý xử lý đặc biệt:
ngắt và ngoại lệ. Cả hai đều gây ra một ngữ cảnh buộc phải chuyển sang một quy
trình mới hoặc công việc.
Ngắt: Gián đoạn có thể xảy ra vào những thời điểm bất ngờ trong quá trình

thực hiện chương trình một và được sử dụng để đáp ứng với các tín hiệu, chúng là
dấu hiệu cho thấy sự quan tâm xử lý là cần thiết từ phần cứng. Khi một thiết bị phần
cứng các vấn đề một ngắt, bộ xử lý ngắt được tìm thấy trong hạt nhân. Tháng tới,
chúng tôi sẽ thảo luận gián đoạn cụ thể hơn. Hai nguồn của các ngắt được công
nhận bởi các ia32: ngắt maskable, trong đó vectơ được xác định bởi phần cứng, và
không maskable ngắt (NMI ngắt, hoặc NMIs).
Ngoại lệ: Ngoại lệ là một trong hai bộ xử lý-phát hiện hoặc phát hành (ném) từ
phần mềm. Khi một thủ tục hoặc phương pháp gặp một tình trạng bất thường (một
điều kiện ngoại lệ) nó không thể xử lý, nó có thể ném ra một ngoại lệ. Ngoại lệ hai
loại này được đánh bắt bởi thói quen xử lý (_exception handlers_) đặt dọc theo đề
thủ tục hay gọi là phương pháp ngăn xếp. Điều này có thể là thủ tục gọi điện thoại
hoặc các phương pháp, hoặc nếu điều đó không bao gồm mã để xử lý các điều kiện
ngoại lệ, gọi thủ tục của mình hoặc các phương pháp và vv. Nếu một trong các chủ
đề của chương trình của bạn ném một ngoại lệ đó không phải là đánh bắt bằng bất
kỳ thủ tục (hay phương pháp), sau đó là đề sẽ hết hạn.
Một ngoại lệ cho một thủ tục gọi là một tình trạng bất thường (mặc dù không
nhất thiết phải hiếm) đã xảy ra, ví dụ, một phương pháp được gọi với một tham số
không hợp lệ. Khi bạn ném một ngoại lệ, bạn đang thực hiện một loại cấu trúc "đi" từ
nơi trong chương trình của bạn, nơi các điều kiện bất thường đã được phát hiện đến
một nơi mà nó có thể được xử lý. xử lý ngoại lệ nên được đóng quân ở các cấp
module chương trình theo cách tổng quát một loạt các lỗi từng có khả năng xử lý
một cách mà khi xử lý vài trường hợp ngoại lệ có thể sẽ trải rộng một loạt các
trường hợp ngoại lệ như là sẽ được gặp phải trong lĩnh vực ứng dụng các chương
trình
Hệ thống Linux giao diện gọi là vector thông qua một stub trong libc (thường
glibc) và là độc quyền "đăng ký-parametered", tức là ngăn xếp không được sử dụng
cho truyền thông số. Mỗi cuộc gọi trong thư viện libc nói chung là một syscall X vĩ
mô, trong đó X là số các tham số được sử dụng bởi các thói quen thực tế. Trong
Linux, việc thực hiện các cuộc gọi hệ thống được gọi bằng một chuyển cấp
maskable ngắt hoặc ngoại lệ (ví dụ, "ném" một đối tượng ngoại lệ), gây ra bởi sự

giảng dạy trong các 0x80. 0x80 Vector được sử dụng để chuyển điều khiển cho hạt
nhân. Điều này vector ngắt được khởi tạo trong quá trình khởi động hệ thống, cùng
với vectơ quan trọng khác như các vector đồng hồ hệ thống.
Trong trường hợp nhiều thông số cần thiết, cơ cấu một số có thể được đặt bất
cứ nơi nào bạn muốn trong không gian địa chỉ của bạn và chỉ đến từ một đăng ký
(không phải là con trỏ chỉ lệnh, và cũng không ngăn xếp con trỏ, các chức năng hạt
nhân, không gian sử dụng ngăn xếp cho các tham số và biến cục bộ) .

Nhóm 1 – Lớp 1101NWMG0411

21


Apr. 25

Kiến trúc tổng quát về hệ điều hành Linux

TỔNG KẾT
Sau khi tìm hiểu về kiến trúc tổng quát của Hệ điều hành Linux, các bạn có thể
sẽ có những cảm nhận khác nhau về Linux. Nhưng nói chung, các vấn đề liên quan
bao gồm những vấn đề sau đây:
Về người dùng, nhiều người nghĩ rằng người dùng được hệ điều hành này
phải là người thành thạo: Về mặt này, ai cũng nghĩ đây là một hạn chế rất lớn,
nhưng xin thưa với các bạn là hoàn toàn không phải như vậy. Linux là một hệ điều
hành có trọng tâm hướng tới cả đối tượng dùng là người phổ thông. Thế nên, không
cần chúng ta phải là người dùng thành thạo thì chúng ta mới có thể sử dụng Linux.
Vấn đề chính là nằm ở chính người dùng, khi mọi người dùng máy vi tính, hầu hết
trong số đều dùng hệ điều hành Windows, vì vậy, họ mang trong mình nặng tư
tưởng của Windows. Thế nên khi có một sự đổi mới khác, mọi người sẽ thích nghi
rất chậm chạp. Nhưng chúng tôi tin là nếu mọi người duy trì dùng hệ điều hành mới

này một thời gian ngắn, khoảng ít hơn 6 tuần nhưng lâu hơn 4 tuần, mọi người sẽ
thấy rằng việc sử dụng hệ điều hành này không quá khó như mọi người từng nghĩ.
Thậm chí dễ hơn cách mọi người dùng Windows trước đây.

Linux hiện nay hố trợ phần cứng khá tốt, và chạy đưuọc hầy hết trên tất cả cấu
trúc máy tinh. Linux có thể chạy trên những chiếc máy tính được sản xuất từ những
năm 1995 đến những máy hiện đại nhất bây giờ. Với một chiếc máy tính cũ kỹ, mọi
người có thể không chạy nổi Windows XP, nhưng xin đừng vứt nó đi, mọi người vẫn
có thể cài Hệ điều hành Linux, và nó sẽ hoạt động tốt và mang lại nhiều giá trị hơn là
một đống sắt vụn!
Chỉ có một vấn đề đáng lưu tâm hiện nay là số người dùng không quá 1%, do
đó Linux không mang tính phổ biến cao. Phần vì mọi người vẫn mang nặng tư
tưởng của Windows nên rất ít muốn thay đổi qua Linux. Vì thế họ không chọn Linux.
Nhưng với xu hướng phát triển hiện nay, Linux sẽ nhnah chóng chiệm thị phần lớn
và thậm chí có thể đánh gục gã khổng lồ Windows. Bằng chứng là hiện nay,
Windows đã nhận xét rằng Linux là đối thủ đáng lo ngai hơn cả Mac OS của Apple.
Với con số 1% cũng xin mọi người đừng lo lắng rằng mình cô đơn, trong vài triệu
người dùng máy tính thì con số đó được gắn kết chặt trong một thứ mà người ta gọi
là “cộng đồng”.
Qua bà trình này này, hy vọng mọi người sẽ có một cách hiểu tổng quát và cơ
bản nhất về Hệ điều hành nói chung và Hệ điều hành Linux nói riêng, từ đó, nếu
thực sự đam mê và có khả năng, mọi người có thể tiếp tục phát triển và hoàn thiện
hơn nữa Hệ điều hành Linux, vẫn được coi là một Hệ điều hành của cộng đồng.

Nhóm 1 – Lớp 1101NWMG0411

22


Apr. 25


Kiến trúc tổng quát về hệ điều hành Linux

NHỮNG TÀI LIỆU THAM KHẢO SỬ DỤNG TRONG BÀI THẢO LUẬN:
1. Ebook Tự học và sử dụng Linux – tác giả Phan Vĩnh Thịnh
2. Kiến trúc UNIX/Linux – đại học dân lập Thăng Long
3. Kiến thức tổng quan về Linux – đại học Công nghệ Thành phố Hồ Chí
Minh
4. Tổng quan về hệ điều hành – đại học Thương mại
5. Kiến thức chung về Hệ điều hành – www.hedieuhanh.forumvi.net
6. www.linuxviet.com
7. www.ddth.com
8. www.hoclinux.net
9. www.nhipsongso.vn
10. www.vn-zoom.com
11. www.ubuntu-vn.org

Nhóm 1 – Lớp 1101NWMG0411

23



×