2. Nội Dung
• Giới thiệu về các HĐH họ Unix
• Các Chức năng chính của 1 HĐH
• Kiến trúc HĐH Linux
• Giao diện người sử dụng Linux
• Chương trình và Tiến Trình trên Linux
• Hệ Điều hành đa nhiệm
• Hệ thống file system, quản lý file trên Linux
• Chỉnh sửa văn bản với Vi
• Quyền và Phân quyền trên Linux
• Các câu lệnh thường dùng trên Linux
• Các bản phân phối Linux hiện nay
1
3. Giới thiệu về các HĐH họ Unix
• Ra đời vào năm 1973
• Áp dụng rất nhiều lý thuyết toán học
để tối ưu hoạt động
• Được thiết kế để mở rộng cho các máy
tính tương lai
• Được kế thừa cho rất nhiều HĐH hiện
nay như Window, MacOS, Linux…
2
4. Các Chức năng chính của OS
• OS là chương trình đầu
tiên được chạy, nó sở hữu
và có toàn quyền quyết
định đối với các thành
phần khác của hệ thống.
Scheduling, memory
management, File system, …
• Chức năng chính của HĐH
là gì?
5. Kiến trúc của Linux OS
• Việc phân chia các lớp
của HĐH phụ thuộc vào
từng góc nhìn.
6.
7. Giao diện người sử dụng
Chế độ Graphic Chế độ Console
• Có 2 chế độ - Graphic và console.
• Các hệ thống embedded chủ yếu sử dụng giao diện
console
• Tại sao cần giao diện console?
8. Chương trình và Tiến trình trên linux
• Chương trình: là các file binary được build từ
source code và nằm trên ổ cứng
• Tiến trình: Là các chương trình đã được load
vào hệ thống.Chúng bắt đầu sử dụng và tiêu
tốn tài nguyên của hẹ thống
• Chương trình và tiến trình khác nhau như thế
nào?
9. Tính Đa Nhiệm của HĐH
• HĐH đa nhiệm có chạy trên hệ thống single
core không?
• Bộ não của con người luôn chậm hơn máy
tính
• HĐH đa nhiệm: Cho phép chuyển đổi giữa các
task vụ, gây cảm giác hệ thống có thể chạy
song song rất nhiều tiến trình.
10. Hệ Thống File System
• Bắt đầu với thư mục
root (giống với
mycomputer trên
window). Từ root sẽ rẽ
nhánh sang các folder
khác.
• Mỗi folder dùng để
chứa các file với các
mục đích khác nhau
12. Chỉnh sửa văn bản với Vi
Tổng quan về vi – chế độ làm việc và cách thức thao tác
• Vi là công cụ chỉnh sửa văn bản lâu đời và phổ
biến nhất trong unix/linux
• Là công cụ chạy trong shell lệnh
• Sử dụng để tạo lập và chỉnh sửa các file văn
bản, file script
• Để tạo mới một file hoặc mở một file:
$vi/path/file
• Để mở một file sau đó nhảy tới phần nội dung
chứa một chuỗi ký tự cụ thể:
$vi +/search_string file
• Để mở vi và nhảy tới một dòng cụ thể
$vi + 10/path/file
13. Chỉnh sửa văn bản với Vi
• Một số lệnh với vi :set nu hiện thị số dòng
:set nonu bỏ hiện thị số dòng
Sử dụng phím mũi tên hoặc các
phím h,l,j,k để dịch trái, phải. lên,
xuống
:1 để nhảy đến dòng đầu tiên của
file
:n nhảy đến dòng n
$ nhảy xuống cuối dòng
:$ nhảy đến dòng cuối của file.
0 nhảy về đầu dòng
:0 nhảy về dòng đầu tiên của file.
dd xóa một dòng hiện tại
ndd xóa n dòng
/ hay ? để tìm kiếm
:w! lưu tập tin
:x! lưu tập tin và thoát
:wq ZZ lưu tập tin và thoát
:q! không lưu và thoát
14. Quyền và phân quyền trên linux
Các nhóm phân quyền
Owner: áp dụng cho chủ
sở hữu của file
Group: áp dụng cho nhóm
đã được gán cho file
Others: cho người dùng
khác không thuộc hai
nhóm trên
15. Quyền và phân quyền trên linux
Các loại phân quyền
• Mỗi file có 3 loại quyền cơ bản:
• read: Quyền cho phép người dùng đọc nội dung của file.
• write: Quyền cho phép người dùng viết hoặc thay đổi nội dung của file.
• *execute *: Quyền cho phép người dùng thực thi file.
16. Quyền và phân quyền trên linux
Cách xem phân quyền của một file
Trong Linux, cách đơn giản nhất để xem phân quyền của một file là sử dụng lệnh
ls -l Output của câu lệnh trên sẽ có dạng như sau: -rwxr-x-r-x 1 user group
• Kí tự - đầu tiên là một cờ đặc biệt để chỉ loại file, - với file thông thường, d với
thư mục, c với thiết bị, l với liên kết (liên kết tới một file khác).
• 3 kí tự rwx đầu tiên là quyền hạn của Owner, ở đây Owner sẽ có mọi quyền với
file
• 3 kí tự r-x ở giữa là quyền hạn của Group, ở đây Group sẽ có quyền đọc và
quyền dùng lệnh cd
• 3 kí tự r-x cuối cùng là quyền hạn của Other, tương tự như Group ở trên sẽ có
quyền đọc và dùng lệnh cd
• Số nguyên đi sau quyền hạn để chỉ số lượng liên kết tới file, ở đây 1 có nghĩa
là file này không có liên kết tượng trưng mà chỉ có một liên kết cứng duy nhất
trỏ tới chính nó.
• Cuối cùng là 2 thông tin nói về chủ sở hữu và nhóm sở hữu, ở đây là người
dùng user và nhóm group
17. Phân quyền sử dụng chmod
một số lệnh chmod thường dùng:
• chmod 777 filename: Cấp quyền truy cập đầy đủ cho mọi đối tượng người
dùng.
• chmod 775 filename: Cấp quyền truy cập đầy đủ cho chủ hệ thống và
nhóm quản trị, đối tượng người dùng chỉ có quyền đọc (read) và chạy
(execute) file.
• chmod 755 dirname: Cấp quyền truy cập đầy đủ cho chủ hệ thống, chỉ cho
phép nhóm quản trị và đối tượng người dùng đọc và chạy các file trong thư
mục.
• chmod 700 filename: Chỉ cấp quyền truy cập đầy đủ cho chủ hệ thống và
chặn truy cập với mọi đối tượng khác.
• chmod 500 dirname: Không cho phép nhóm quản trị và người dùng truy
cập vào file trong thư mục, đồng thời giới hạn quyền chủ hệ thống chỉ đọc
và chạy để tránh xóa và thay đổi các file trong thư mục này.
• chmod 660 filename: Cho phép chủ hệ thống và nhóm quản trị đọc, sửa,
xóa và ghi dữ liệu vào file, nhưng không phân quyền truy cập cho những
người dùng khác.
18. Các câu lệnh thường dùng
• ▪ passwd - Thay đổi mật khẩu
▪ ls - liệt kê tệp
▪ less - hiển thị nội dung tệp
▪ logout - đăng xuất
▪ date - hiển thị ngày giờ
▪ who - ai đang đăng nhập
▪ clear - dọn dẹp màn hình
▪ script - ghi lại các thao tác
▪ uname -a - thông tin về HĐH
▪ man - HDSD
19. Giới thiệu câu lệnh căn bản
▪ logname : hiên thị tên NSD
đang ở phiên làm việc
▪ hostname : hiển thị tên trạm
làm việc
▪ clear : xoá màn hình
▪ who : tên của những người
đang đăng nhập
▪ exit : kết thúc phiên làm việc
▪ passwd : thay đổi mật khẩu
▪ date : hiển thị ngày hệ thống
▪ mkdir : tạo thư mục
▪ rmdir : xoá thư mục
▪ cd : chuyển vị trí thư mục
▪ pwd : đường dẫn thư mục
hiện tại
▪ cp : sao chép tệp
▪ rm : xoá tệp
▪ ps : xem tiến trình
▪ v.v…
20. Các lệnh kiểm tra performance
▪ cat /proc/cpuinfo hiển thị thông tin
CPU
▪ cat /proc/meminfo hiển thị thông tin
về RAM đang sử dụng
▪ cat /proc/version hiển thị phiên bản
của kernel
▪ cat /proc/ioports xem thông tin I/O
port
▪ cat /proc/interrupts xem thông tin
interrupt
▪ cat /proc/dma xem thông tin về DMA
▪ cat /etc/redhat-release hiển thị phiên
bản Centos
▪ uname -a hiển thị các thông tin về
kernel
▪ free -m hiển thị lượng RAM còn
trống
▪ df -h hiển thị thông tin những file hệ
thống nơi mỗi file thường trú hoặc tất
cả những file mặc định và lệnh này có
thể xem được dung lượng ổ cứng đã
sử dụng và còn trống bao nhiêu.
▪ du -sh xem dung lượng của thư mục
hiện tại
▪ du -ah xem chi tiết dung lượng của
các thư mục con, và cả các file
▪ du -h –max-depth=1 xem dung
lượng các thư mục con ở cấp 1 (ngay
trong thư mục hiện tại)
▪ df kiểm tra dung lượng đĩa cứng,
các
phân vùng đĩa
▪ top hiển thị sự hoạt động của các
tiến trình, đặc biệt là thông tin về tài
nguyên hệ thống và việc sử dụng các
tài nguyên đó của từng tiến trình.
21. Các lệnh hệ thống
▪ exit thoát khỏi cửa sổ dòng
lệnh.
▪ logout tương tự exit.
▪ reboot / init 6 / shutdow r
khởi động lại hệ thống.
▪ halt / shutdow -h now / init 0 /
poweroff tắt máy
▪ hostname xem tên máy tính
▪ startx khởi động chế độ
xwindows từ cửa sổ terminal.
▪ clear xoá trắng cửa sổ dòng
lệnh.
▪ hwclock Fix lịch của bios
▪ cal xem lịch hệ thống.
▪ yum update –y Update Linux
(CentOS)
▪ date xem ngày, giờ hệ thống.
▪ date –s “27 SEP 2011
14:26:00” Đặt ngày giờ hệ
thống theo string
▪ date +%Y%m%d -s
“20130318″ đặt ngày hệ thống
(không thay đổi giờ)
▪ date +%T -s “00:29:00″ đặt giờ
hệ thống, không thay đổi ngày
22. Lệnh thao tác với tập tin text
▪ wc đếm số dòng, số kí tự… trong tập tin
▪ touch tạo một tập tin.
▪ cat xem nội dung tập tin.
▪ more xem nội dung tập tin theo trang.
▪ less xem nội dung tập tin theo dòng.
▪ tail xem nội dung tập tin (mặc định xem 10 dòng
cuối).
▪ head xem nội dung tập tin (mặc định xem 10
dòng đầu).
▪ vi khởi động trình soạn thảo văn bản vi.
▪ man Xem hướng dẫn thực hiện các lệnh
23. Lệnh quản lí ứng dụng và tiến trình
▪ rpm kiểm tra, gỡ bỏ hoặc cài đặt 1 gói .rpm
▪ ps kiểm tra hệ thống tiến trình đang chạy.
▪ kill dừng tiến trình khi tiến trình bị treo.
▪ pstree hiển thị tất cả các tiến trình dưới dạng
cây.
▪ sleep cho hệ thống ngừng hoạt động trong
một
khoảng thời gian.
▪ yum Cài đặt các ứng dụng đóng gói (giống
rpm)
▪ wget Tải các ứng dụng từ một website về
▪ sh Chạy một ứng dụng có đuôi .sh
24. Lệnh quản lý user
▪ useradd tạo một người dùng mới.
▪ userdel xoá người dùng đã tạo.
▪ usermod thay đổi thông tin user.
▪ passwd đặt và thay đổi password
cho người dùng.
▪ groupadd tạo một nhóm người
dùng mới.
▪ groupdel xoá nhóm người dùng đã
tạo.
▪ gpasswd thay đổi password của
một nhóm người dùng.
▪ su cho phép đăng nhập với tư cách
người dùng khác.
▪ groups hiển thị nhóm của user hiện
tại.
▪ who / w cho biết ai đang đăng nhập
hệ thống.
▪ skill -9 –t pst/0 để gơ bỏ session
pst/0
▪ xem danh sách user: #vi /etc/passwd
▪ xem danh sách nhóm: #vi /etc/group
▪ chmod <permission> [tên file] thay
đổi quyền cho file/thư mục (chỉ user sở
hữu file mới thực hiện được)
▪ chown user [tên file] thay đổi chủ
sở hữu file/thư mục
▪ chown user:group [tên file] thay đổi
chủ sở hữu file/thư mục, đồng thời
thay đổi nhóm sở hữu
▪ chgrp group [file/thu_muc] thay đổi
group sở hữu file/thư mục
25. Lệnh quản lý service
▪ service –status-all Kiểm tra tất cả các service và tình
trạng của nó.
▪ service httpd start khởi động dịch vụ httpd.
▪ whereis mysql hiển thị nơi các file dịch vụ được cài đặt.
▪ service –status-all | grep abc, xem tình trạng của tiến
trình
abc
▪ service <tên_dịch_vụ> start | stop | restart
▪ /etc/init.d/<tên_dịch_vụ> start | stop | restart
▪ Ví dụ:
o service mysql stop
o /etc/init.d/mysqld start
26. Các lệnh quản lý file và thư mục
▪ ls xem danh sách các file và thư
mục con trong thư mục hiện thời
▪ ls -l như trên, nhưng liệt kê cả
kích
thước file, ngày cập nhật…
▪ ls -a liệt kê tất cả các file ẩn
▪ rm xóa file
▪ rmdir xóa thư mục rổng
▪ rm -rf xóa thư mục không rỗng.
▪ mv đổi tên / di chuyển thư mục
hoặc file từ nơi này sang nơi khác
▪ cp copy file hoặc thư mục
▪ mkdir tạo thư mục
▪ cd chuyển thư mục
▪ pwd xem thư mục hiện hành
▪ find tìm kiếm file
▪ find /etc -name inittab : tìm file
có
tên inittab trong thư mục /etc
▪ Lệnh nén và giải nén
▪ tar -cvf nén file/thư mục sang
định
dạng .tar
▪ tar -xvf giải nén file .tar
▪ gzip chuyển file .tar sang .tar.gz
▪ gunzip chuyển file .tar.gz về .tar
▪ tar -xzf giải nén file .tar.gz
▪ tar -zxvf giải nén file .tar.bz2
▪ tar -jxvf giải nén file .tar.gz2
Unix được ra đời từ rất sớm vào những 1970 tại phòng thí nghiệm Bell Labs của tập đoàn AT&T do 2 nhà khoa học Ken Thompson and Dennis Ritchie và 1 vài cộng sự khác tạo ra.
- Khi thiết kế HĐH này người đã tính toán từng dòng code trong phần nhân của nó sử dụng nhiều lý thuyết về toán học nên nó rất tối ưu
Ngay ở thời điểm thiết kế HĐH này tuy rằng máy tính cấu hình rất thấp chỉ khoảng vài kb về ram thôi nhưng nó đã được thiết kế để mở rộng cho các máy tính trong tương lai vài gb đến vài chục gb trong tương lai. HĐH này được thiết kế cho các phần cứng của tương lai dù ra đời từ khá sớm 1973 nhưng cho đến tận bây giờ thì phần nhân của nó chỉnh sửa rất ít, thường mở rộng bổ sung thêm các tính năng mới.
Unix được kế thừa cho nhiều HĐH phổ biến hiện nay như window, MacOS, Linux… VD như quản lý về User, quản lý về memory, multi thread, hoặc các tư tưởng về quản lý file.
- Hiểu đơn giản thì OS là 1 chương trình: Nó khác với các trương trình khác là nó được chạy đầu tiên trên hệ thống, khi chạy đầu tiên trên hệ thống thì nó chiếm quyền sở hữu toàn bộ tài nguyên của hệ thống. OS là cha sinh ra các chương trình về sau, nó giữ quyền và điều phối tới hệ thống đấy (cho ai dùng gì và muốn kill ai đi chẳng hạn)
Trong OS thì người ta chia ra nhiều tính năng của nó, mỗi 1 tính năng chính thì người ta gọi là sub system (1 hệ thống nhỏ)
OS sẽ có nhiều sub system VD trong hình là các sub system (như trong hình là ko đủ hết các sub system) có 1 số sub system chính như là Quản lý về process, virtual file system, quản lý về memory, quản lý về network, quản lý về device drivers…
Trả lời cho câu hỏi chức năng chính của HĐH là gì:
Thì HĐH có rất nhiều tính năng, không có cái nào là chính cái nào là phụ mà các tính năng này tương đồng nhau.
Slide này giới thiệu về bức tranh kiến trúc của hệ điều hành Linux là như thế nào.
HĐH thì bao gồm nhiều lớp từ tầng app đến tầng hardware có nhiều lớp và việc phân chia ra bao nhiêu lớp phụ thuộc vào từng góc nhìn. Không có định nghĩa chung nhất xem HĐH gồm bao nhiêu lớp cả. Trong hình trên thể hiện 1 góc nhìn nào đó thôi. VD trong hình trên người ta chia ra làm 4 lớp
Nhìn từ ngoài vào trong thì
lớp đầu tiên là lớp APPlication
Lớp thứ 2 là lớp Library và shell: lớp library kiểu như là file .h mọi người hay imput vào hay lớp shell kiểu như terminal mọi người gõ vào
Lớp system calls: cho người dùng cách tiếp cận những tiện ích dịch vụ của hệ điều hành. Ở các lớp trên người dùng giao tiếp qua lớp giao diện Gui, lập lệnh hay các câu lệnh…đều có mục đích chung gọi là system calls để yêu cầu HĐH làm nhiệm vụ cho mình
thông thường lớp system call này được viết bằng các ngôn ngữ lặp trình cấp thấp, có khả năng tiếp cận trực tiếp đến bộ nhớ hay phần cứng của máy tính.
Lớp kernel: lớp nhân xử lý của HĐH là thành phần trung tâm của HĐH, kernel có nhiệm vụ quản lý tài nguyên của hệ thống, liên lạc giữa phần cứng và phần mềm.
Nhân dùng những lời gọi hệ thống như ‘read’ và ‘write’ để cung cấp một lớp trừu tượng các phần cứng cụ thể cho các ứng dụng.
Giao diện người sử dụng
Giao diện có các icon giống như window gọi là Graphic mode
Ngoài ra thì có chế độ nữa là chế độ console không có chuột chỉ có bàn phím và thao tác bằng bàn phím và các câu lệnh
Mỗi một chế độ sẽ có những Ưu điểm và nhước điểm khác nhau
Chế độ graphic: dễ dùng, trực quan, thích hợp với end user
Chế độ console tiết kiệm tài nguyên, thực thi nhanh hơn
Bản thân cái linux thì đối tượng nhắm đến là deverloper thôi.
Một số hệ thống embedded chỉ hỗ trợ output bằng console, không có chế độ graphic
Khác với hệ điều hành window thông thường
Chương trình: là các file binary được build ra từ source code và được lưu trên ổ ứng, chưa được load lên hệ thống. Chương trình không tiêu tốn tài nguyên của hệ thống, hệ thống cài bao nhiêu app vào thì vẫn thế, không bị chậm đi không giống window, window cài nhiều app vào sẽ bị chậm do cách thiết kế hệ điều hành khác nhau.
Tiến trình: Là các chương trình đã được load vào hệ thống, chúng bắt đầu sử dụng và tiêu tốn tài nguyên của hệ thống
Giới thiệu qua điểm hay của các HĐH kế thừa từ Unix đó là tính đa nhiệm
VD: khi mình vừa nghe nhạc vừa xử lý văn bản lướt web, cảm giác như các chương trình đó được chạy cùng 1 lúc với nhau.
Nghĩ đơn giản thì máy tính 4 – 5 core mỗi core chạy 1 chương trình tuy nhiên như vài năm về trước máy tính chỉ có 1 core thôi nhưng vẫn chạy được các chương trình gần như đồng thời.
Do vậy máy tính làm được điều này không phục thuộc vào máy tính có bao nhiêu core mà nó phụ thuộc vào Tính đa nhiệm của HĐH.
Tính đa nhiệm này xuất phát từ ý tưởng thời gian để máy tính xử lý một công việc hay một lệnh ngắn hơn rất nhiều so với thời gian chờ đợi con người ra lệnh cho nó.
Từ đó mà HĐH đa nhiệp được thiết kế như sau:
CPU sẽ có bộ lập lịch, trong bộ lập lịch chia ra nhiều ô mỗi ô sẽ chạy trong khoảng thời gian rất ngắn. Chạy hết ô này thì sẽ chạy sang làm cv ở ô tiếp theo.
VD: trong khoảng thời gian 1s nó sẽ chạy 1000 ô tương ứng nó có thể làm 1000 công việc khác nhau.
Do phản xạ của con người không đủ để theo kịp nên mình có cảm giác các công việc làm gần như đồng thời
Giống như xem video có 24 hình / s thì con người
Quay về câu hỏi thì HĐH đa nhiệm không thụ thuộc vào số core mà do cách thiết kế bộ lập lịch của HĐH đó.
Cũng giống như window chia phân vùng từ mycomputer ra các ổ C và D, từ đó chia ra các folder và file
Bên linux cũng vậy bắt đầu từ thư mục root từ đó chia ra các phân vùng hoặc các folder khác, điểm khác là từ phân vùng gốc linux chia ra được các folder khác nhau
Giống như window trong ổ C chứa các file hệ thống như window, programs file thì trong linux cũng vậy
/bin: chứa các chương trình để chạy của hệ thống
/boot: chứa các tập tin khỏi động máy
/dev: chứa thông tin thiết bị
/etc: chứa các file cấu hình
/home: chứa các tập tin người dùng của hệ thống
/lib: chứa các tập tin thư viện
Mở file thì vi chỉ ra tên file
Mở file thì vi chỉ ra tên file
Trong Linux mỗi file (folder) đều có 3 nhóm phân quyền chính:
owner: Quyền sở hữu này chỉ áp dụng cho chủ sở hữu của file và không ảnh hưởng đến hoạt động của người dùng khác.
group: Quyền sở hữu này được áp dụng cho nhóm đã được gán cho file.
others: Cấp quyền cho những người dùng khác không thuộc hai nhóm trên.
Tuy nhiên có ngoại lệ đó là root (super user) không bị ràng buộc bởi bất cứ sự phân quyền nào, có toàn quyền trên mọi file của hệ thống.
Mỗi file có 3 loại quyền cơ bản:
read: Quyền cho phép người dùng đọc nội dung của file.
write: Quyền cho phép người dùng viết hoặc thay đổi nội dung của file.
*execute *: Quyền cho phép người dùng thực thi file.
Bạn có thể sử dụng lệnh chmod để phân quyền cho file và thư mục, tuy nhiên bạn nên lưu ý nhập chính xác lệnh chmod, không được sử dụng các kí tự chữ in hoa trong lệnh.