Kilydd

New Member

Download miễn phí Giáo trình Hệ điều hành Unix - Linux





MỤC LỤC
LỜI GIỚI THIỆU . 9
CHƯƠNG 1. GIỚI THIỆU CHUNG VỀLINUX. 10
1.1. Giới thiệu vềUNIX và Linux. 10
1.1.1. Xuất xứ, quá trình tiến hóa và một số đặc trưng của hệ điều hành UNIX . 10
1.1.2. Giới thiệu sơbộvềLinux . 13
1.2. Sơbộvềcác thành phần của Linux . 17
1.2.1. Sơbộvềnhân . 18
1.2.2. Sơbộvềshell . 18
1.3. Giới thiệu vềsửdụng lệnh trong Linux. 20
1.3.1. Các quy ước khi viết lệnh . 22
1.3.3. Làm đơn giản thao tác gõ lệnh . 25
1.3.4. Tiếp nối dòng lệnh. 29
1.4. Trang Man . 29
CHƯƠNG 2. THAO TÁC VỚI HỆTHỐNG . 32
2.1. Quá trình khởi động Linux. 32
2.2. Thủtục đăng nhập và các lệnh thoát khỏi hệthống . 33
2.2.1. Đăng nhập. 33
2.2.2. Ra khỏi hệthống. 36
2.2.3. Khởi động lại hệthống . 38
2.2.4. Khởi động vào chế độ đồhoạ . 38
2.3. Lệnh thay đổi mật khẩu . 42
2.4. Lệnh xem, thiết đặt ngày, giờhiện tại và xem lịch trên hệthống . 45
2.4.1 Lệnh xem, thiết đặt ngày, giờ . 45
2.4.2. Lệnh xem lịch . 47
2.5. Xem thông tin hệthống . 48
2.6. Thay đổi nội dung dấu nhắc shell . 49
2.7. Lệnh gọi ngôn ngữtính toán sốhọc . 50
CHƯƠNG 3. HỆTHỐNG FILE . 53
3.1 Tổng quan vềhệthống file. 53
3.1.1. Một sốkhái niệm . 53
3.1.2. Sơbộkiến trúc nội tại của hệthống file. 57
3.1.3. Một sốthuật toán làm việc với inode . 63
3.1.4. Hỗtrợnhiều hệthống File. 66
3.1.5. Liên kết tượng trưng (lệnh ln) . 71
3.2 Quyền truy nhập thưmục và file . 72
3.2.1 Quyền truy nhập . 72
3.2.2. Các lệnh cơbản . 75
3.3 Thao tác với thưmục. 80
3.3.1 Một sốthưmục đặc biệt . 80
3.3.2 Các lệnh cơbản vềthưmục . 83
3.4. Các lệnh làm việc với file . 87
3.4.1 Các kiểu file có trong Linux . 87
3.4.2. Các lệnh tạo file. 88
3.4.3 Các lệnh thao tác trên file . 90
3.4.4 Các lệnh thao tác theo nội dung file . 98
3.4.5 Các lệnh tìm file . 106
3.5 Nén và sao lưu các file . 115
3.5.1 Sao lưu các file (lệnh tar) . 115
3.5.2 Nén dữliệu . 118
CHƯƠNG 4. QUẢN TRỊQUÁ TRÌNH. 122
4.1 Quá trình trong UNIX. 122
4.1.1. Sơbộvềquá trình. 122
4.1.2. Sơbộcấu trúc điều khiển của UNIX. 123
4.1.3. Các hệthống con trong nhân . 125
4.1.4. Sơbộvề điều khiển quá trình . 129
4.1.5. Trạng thái và chuyển dịch trạng thái . 130
4.1.6. Sựngưng hoạt động và hoạt động trởlại của quá trình. 132
4.1.7. Sơbộvềlệnh đối với quá trình . 132
4.2. Các lệnh cơbản. 133
4.2.1. Lệnh fg và lệnh bg . 133
4.2.2. Hiển thịcác quá trình đang chạy với lệnh ps . 135
4.2.3. Hủy quá trình với lệnh kill . 137
4.2.4. Cho máy ngừng hoạt động một thời gian với lệnh sleep. 139
4.2.5. Xem cây quá trình với lệnh pstree. 139
4.2.6. Lệnh thiết đặt lại độ ưu tiên của quá trình nice và lệnh renice. 141
CHƯƠNG 5. QUẢN LÝ TÀI KHOẢN NGƯỜI DÙNG . 142
5.1 Tài khoản người dùng . 142
5.2 Các lệnh cơbản quản lý người dùng . 142
5.2.1 File /etc/passwd . 143
5.2.2 Thêm người dùng với lệnh useradd . 143
5.2.3 Thay đổi thuộc tính người dùng . 146
5.2.4 Xóa bỏmột người dùng (lệnh userdel). 147
5.3 Các lệnh cơbản liên quan đến nhóm người dùng . 148
5.3.1 Nhóm người dùng và file /etc/group . 148
5.3.2 Thêm nhóm người dùng . 149
5.3.3 Sửa đổi các thuộc tính của một nhóm người dùng (lệnh groupmod) . 149
5.3.4 Xóa một nhóm người dùng (lệnh groupdel) . 150
5.4 Các lệnh cơbản khác có liên quan đến người dùng . 150
5.4.1 Đăng nhập với tưcách một người dùng khác khi dùng lệnh su . 150
5.4.2 Xác định người dùng đang đăng nhập (lệnh who) . 151
5.4.3 Xác định các quá trình đang được tiến hành (lệnh w) . 153
CHƯƠNG 6. TRUYỀN THÔNG VÀ MẠNG UNIX-LINUX . 154
6.1. Lệnh truyền thông . 154
6.1.1. Lệnh write. 154
6.1.2. Lệnh mail. 155
6.1.3. Lệnh talk . 156
6.2 Cấu hình Card giao tiếp mạng . 156
6.3. Các dịch vụmạng . 159
6.3.1 Hệthông tin mạng NIS. 159
6.4 Hệthống file trên mạng . 164
6.4.1 Cài đặt NFS . 165
6.4.2 Khởi động và dừng NFS. 166
6.4.3 Cấu hình NFS server và Client . 167
6.4.4 Sửdụng mount. 167
6.4.5 Unmount . 168
6.4.6 Mount tự động qua tệp cấu hình . 168
CHƯƠNG 7. LẬP TRÌNH SHELL VÀ LẬP TRÌNH C TRÊN LINUX . 170
7.1. Cách thức pipes và các yếu tốcơbản lập trình trên shell . 170
7.1.1. Cách thức pipes . 170
7.1.2. Các yếu tốcơbản đểlập trình trong shell . 171
7.2. Một sốlệnh lập trình trên shell . 175
7.2.1. Sửdụng các toán tửbash . 175
7.2.2. Điều khiển luồng . 179
7.2.3 Các toán tử định hướng vào ra. 193
7.2.4. Hiện dòng văn bản. 194
7.2.5. Lệnh read độc dữliệu cho biến người dùng . 194
7.2.6. Lệnh set . 195
7.2.7. Tính toán trên các biến . 196
7.2.8. Chương trình ví dụ. 196
5

7.3. Lập trình C trên UNIX . 197
7.3.1. Trình biên dịch gcc . 197
7.3.2. Công cụGNU make . 201
7.3.3. Làm việc với file. 203
7.3.4. Thưviện liên kết. 211
7.3.5 Các công cụcho thưviện . 220
TÀI LIỆU THAM KHẢO . 223
CHÚ THÍCH MỘT SỐTHUẬT NGỮ . 224
PHỤLỤC A. QUÁ TRÌNH CÀI ĐẶT REDHAT-LINUX . 227
AA. Cài đặt phiên bản RedHat 6.2 . 228
AA.1. Tạo đĩa mềm khởi động . 228
AA.2. Phân vùng lại ổ đĩa DOS/Windows hiện thời. 228
AA.3. Các bước cài đặt (bản RedHat 6.2 và khởi động từCD-ROM). 229
AA.4. Các hạn chếvềphần cứng đối với Linux . 239
PHỤLỤC B. TRÌNH SOẠN THẢO VIM . 242
B.1 Khởi động vim . 244
B.1.1 Mởchương trình soạn thảo vim. 244
B.1.2. Tính năng mởnhiều cửa sổ . 245
B.1.3. Ghi và thoát trong vim . 246
B.2. Di chuyển trỏsoạn thảo trong Vim . 247
B.2.1. Di chuyển trong văn bản . 247
B.2.2. Di chuyển theo các đối tượng văn bản. 248
B.2.3. Cuộn màn hình. 248
B.3. Các thao tác trong văn bản . 249
B.3.1. Các lệnh chèn văn bản trong vim. 249
B.3.2. Các lệnh xoá văn bản trong vim . 250
B.3.3. Các lệnh khôi phục văn bản trong vim . 250
6.3.4. Các lệnh thay thếvăn bản trong vim . 250
B.3.5. Sao chép và di chuyển văn bản trong vim . 252
B.3.6. Tìm kiếm và thay thếvăn bản trong vim . 253
B.3.7. Đánh dấu trong vim . 254
B.3.8. Các phím sửdụng trong chế độ chèn. 255
B.3.9. Một sốlệnh trong chế độ ảo. 256
B.3.10. Các lệnh lặp . 256
B.4. Các lệnh khác . 257
B.4.1. Cách thực hiện các lệnh bên trong Vim. 257
B.4.2. Các lệnh liên quan đến file. 257
PHỤLỤC C. MIDNIGHT COMMANDER . 259
C.1. Giới thiệu vềMidnight Commander (MC) . 259
C.2. Khởi động MC . 259
C.3. Giao diện của MC . 259
C.4. Dùng chuột trong MC . 260
C.5. Các thao tác bàn phím. 261
C.6. Thực đơn thanh ngang (menu bar) . 263
C.7. Các phím chức năng . 266
C.8. Bộsoạn thảo của Midnight Commander. 267
PHỤLỤC D. SAMBA. 270
D.1 Cài đặt Samba . 270
D.2 Các thành phần của Samba . 271
D.3 File cấu hình Samba . 272
D.4 Các phần đặc biệt của file cấu hình Samba. 275
D.5 Quản lý người dùng trong Samba . 282
D.6 Cách sửdụng Samba từcác máy trạm . 284
D.6.1 Cách sửdụng từcác máy trạm là Linux . 284
D.6.2 Cách sửdụng từcác máy trạm là Windows . 287



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:


write(buffer,count);
|
Trong chương trình trên, mã lệnh (gọi là phần text) của file được sinh ra từ các hàm
main và copy. Khởi tạo giá trị ban đầu cho biến phiên bản và dành vùng nhớ cho biến mảng
buffer.
Trong ví dụ trên, các tham số argc, argv và các biến fdold, fdnew trong chương trình
main trong stack khi main được gọi (một lần đối với mọi chương trình), còn các tham số
old và new và biến count trong hàm copy xuất hiện mỗi khi copy được gọi.
Stack người dùng Stack nhân
Biến cục bộ không có
Địa chỉ frame 2
Địa chỉ quay lại sau khi
write
Hướng tăng của stack
Các tham số
của write
bộ đếm
buffer
mới
frame 3
Frame 3
Các biến cục
bộ
count call write () call
func2()
Biến cục bộ
Địa chỉ của Frame 1 Địa chỉ của Frame 1
9
4
Địa chỉ quay về sau lời gọi
copy
Địa chỉ quay về sau lời gọi
func2
Các tham số
của copy
old
new
frame 2
Frame 2
Tham số của func2 nhân
Biến cục bộ fdold
fdnew
call copy () call
func2()
Biến cục bộ
Địa chỉ của Frame 0 Địa chỉ của Frame 0
Địa chỉ quay về sau lời gọi
main
Địa chỉ quay về sau lời gọi
func1
Tham số của
main
argc
argv
Frame 1
Frame 1
Tham số của func1 nhân
call main () call func1()
Các stack cho một quá trình
Quá trình trong UNIX được thực hiện theo một trong hai mode: mode nhân hay mode
người dùng và tương ứng với 2 mode này, quá trình sử dụng stack riêng biệt đối với mỗi
mode.
Stack người dùng chứa các đối số, biến cục bộ, và các dữ liệu khác đối với việc thực
hiện hàm trong mode người dùng. Stach nhân chứa các đối số, biến cục bộ, các tham số,
các địa chỉ liên kết v.v. liên quan đến thực hiện các hàm theo mode nhân.
4.1.4. Sơ bộ về điều khiển quá trình
Nhân sử dụng 4 cấu trúc dữ liệu sau đây để truy nhập đến quá trình:
• Bảng các quá trình, tương ứng với mỗi quá trình đang tồn tại trong hệ thống là một
thành phần. Mỗi thành phần bao gồm một số trường sau đây (mỗi thành phần ở đây
chính là một PCB):
- Trạng thái của quá trình,
- Chủ sở hữu của quá trình,
- Trường liên quan đến trạng thái ngưng của quá trình (theo lời gọi hàm sleep)
- Địa chỉ của vùng sử dụng tương ứng với quá trình,
- Các thông tin tương ứng được trình bày trong PCB.
• Vùng sử dụng (U-area) chứa các thông tin riêng, có tác dụng khi quá trình đang thực
hiện:
- Chỉ số thành phần tương ứng với quá trình trong bảng các quá trình: địa chỉ của
khối PCB tương ứng,
- Bộ đếm thời gian chạy mức nhân và mức người dùng,
- Các giá trị trả về và mã lỗi (nếu có) đối với lời gọi hệ thống hiện tại,
- Mô tả về các file đang mở ứng với quá trình,
- Tham số lưu trữ dung lượng dữ liệu di chuyển trong vào - ra.
- Thư mục hiện tại và thư mục gốc hiện tại: môi trường của quá trình,
- Các giới hạn kích thước file và quá trình,
- Các mức cho phép thực hiện đối với quá trình,
- Một số thông tin khác
• Các bảng định vị địa chỉ bộ nhớ đối với mỗi quá trình,
9
5
• Bảng chứa vùng bộ nhớ chung: phân hoạch bộ nhớ, đặc tính mỗi vùng theo phân hoạch:
chứa text, data hay vùng bộ nhớ dùng chung v.v.
Sơ bộ về mối liên kết của các cấu trúc dữ liệu trên được mô tả như hình vẽ phía sau.
Nhân xử lý với các lời gọi hệ thống như sau:
- Với lời gọi fork: Nhân sao vùng địa chỉ của quá trình cũ, cho phép các quá trình
chia xẻ vùng bộ nhớ,
- Với lời gọi exec: Nhân cấp phát các vùng bộ nhớ thực cho các vùng text, data và
stack,
- Với lời gọi exit: Nhân sẽ giải phóng các vùng bộ nhớ liên quan đến quá trình.

c
cấu
trú
c
dữ
liệu
điề
u
khi
ển
quá
trìn
h
4.1.
5. Trạng thái và chuyển dịch trạng thái
Sơ đồ biểu diễn các trạng thái và việc chuyển trạng thái trong UNIX được trình bày
trong hình dưới đây (Số hiệu trạng thái quá trình xem trong hình vẽ).
Thực hiện mức
nhân (2)
Thực hiện mức
người dùng (1)
Sẵn sàng sang mức
người dùng (7)
Hoàn thiện
(9)
Chờ đợi thiếu tài
nguyên (4)
Sẵn sàng thực
hiện (3)
Chờ đợi ở bộ nhớ
ngoài (6)
Quá trình
phát sinh
(8)
Đợi bộ nhớ để
thực hiện (5)
U-area
Bộ nhớ trong (các trang thực)
Bảng các vùng
nhớ cho một
quá trình
Bảng các vùng nhớ
(bảng các trang ảo)
9
6
Sơ đồ chuyển trạng thái quá trình
Khi quá trình được phát sinh nó ở trạng thái (8), tùy thuộc vào tình trạng bộ nhớ quá
trình được phân phối bộ nhớ trong (3) hay bộ nhớ ngoài (5). Trạng thái (3) thể hiện quá
trình đã sẵn sáng thực hiện, các thành phần của nó đã ở bộ nhớ trong chờ đợi CPU để thực
hiện. Việc thực hiện tiếp theo tùy thuộc vào trạng thái trước đó của nó. Nếu lần đầu phát
sinh, nó cần đi tới thực hiện mức nhân để hoàn thiện công việc lời gọi fork sẽ từ trạng thái
(3) sang trạng thái (1), trong trường hợp khác, từ trạng thái (3) nó đi tới trạng thái chờ dợi
CPU ở mức người dùng (7).
Trong trạng thái thực hiện ở mức người dùng (1), quá trình đi tới trạng thái (2) khi gặp
lời gọi hệ thống hay hiện tượng ngắt xảy ra. Từ trạng thái (1) tới trạng thái (7) khi hết
lượng tử thời gian.
Trạng thái (4) là trạng thái chờ đợi trong bộ nhớ còn trạng thái (6) thể hiện việc chờ đợi
trong bộ nhớ ngoài.
Cung chuyển từ trạng thái (2) vào ngay trạng thái (2) xảy ra khi ở quá trình ở trạng thái
thực hiện mức nhân, nhân hệ thống gọi các hàm xử lý ngắt tương ứng.
4.1.6. Sự ngưng hoạt động và hoạt động trở lại của quá trình
Một quá trình trong trạng thái thực hiện mức nhân có khả năng chuyển sang trạng thái
ngưng theo lời gọi hàm sleep. Trạng thái ngưng xảy ra trong một số tình huống chờ đợi một
sự kiện: hoàn thành việc vào-ra, quá trình khác thực hiện lời gọi exit v.v.
Sau khi sự kiện xảy ra, quá trình từ trạng thái ngưng chuyển sang trạng thái sẵn sàng để
có thể được cấp phát CPU chạy.
4.1.7. Sơ bộ về lệnh đối với quá trình
Khi mở một trang man, liệt kê các file với lệnh ls, chạy trình soạn thảo vi hay chạy bất
kỳ một lệnh nào trong Linux thì điều đó có nghĩa là đang khởi tạo một hay nhiều quá
trình. Trong Linux, bất cứ chương trình nào đang chạy đều được coi là một quá trình. Có
thể có nhiều quá trình cùng chạy một lúc. Ví dụ dòng lệnh ls -l | sort | more sẽ khởi tạo
ba quá trình: ls, sort và more.
Quá trình có thể trải qua nhiều trạng thái khác nhau và tại một thời điểm một quá trình
rơi vào một trong các trạng thái đó. Bảng dưới đây giới thiệu các trạng thái cơ bản của quá
trình trong Linux.
Ký hiệu Ý nghĩa
D
R
S
T
Z
(uninterruptible sleep) ở trạng thái này quá trình bị treo và không thể
chạy lại nó bằng một tín hiệu.
(runnable) trạng thái sẵn sàng thực hiện, tức là quá trình có thể thực
hiện được nhưng chờ đến lượt thực hiện vì một quá trình khác đang có
CPU.
(sleeping) trạng thái tạm dừng, tức là quá trình tạm dừng không hoạt
động (20 giây hay ít hơn)
(traced or stopped) trạng thái dừng, quá trình có thể bị treo bởi một
quá trình ngoài
9
7
W
<
N
L
(zombie process) quá trình đã kết thúc thực hiện, nhưng nó vẫn được
tham chiếu trong hệ thống
không có cá...
 
Top