Skip to content

Commit

Permalink
update 17-11-2020
Browse files Browse the repository at this point in the history
  • Loading branch information
khanhnt99 committed Nov 17, 2020
1 parent 6881f04 commit a80cf8b
Showing 5 changed files with 236 additions and 2 deletions.
58 changes: 58 additions & 0 deletions 10.Computer_architecture.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Kiến trúc máy tính
## 1. Cấu trúc và thành phần chức năng
![](https://i.ibb.co/7CG5kpd/Screenshot-from-2020-11-16-22-04-31.png)

### 1.1 Bộ xử lí trung tâm (CPU)
- Chức năng:
+ Đọc lệnh từ bộ nhớ.
+ Giải mã và thực hiện lệnh.
- Bao gồm:
+ Bộ điều khiển (Control Unit - CU)
+ Bộ tính toán số học và logic (ALU
+ Các thanh ghi (Register)

### 1.2 Bộ nhớ trong (Internal Memory)
- Chức năng:
+ Lưu trữ lệnh và dữ liệu cho CPU xử lí
- Bao gồm:
+ **ROM (Read Only Memory)**
- Lưu trữ lệnh và dữ liệu của hệ thống.
+ **RAM (Random Access Memory)**
- Lưu trữ lệnh và dữ liệu của hệ thống và người dùng.

### 1.3 Bus hệ thống (system bus)
- Là tập các đường dây kết nối CPU với các thành phần khác của máy tính
- Các loại Bus:
+ Bus địa chỉ - Bus A
+ Bus dữ liệu - Bus D
+ Bus điều khiển - Bus C

## 2. Cách máy tính hoạt động
![](https://i.ibb.co/JsmBjqq/Screenshot-from-2020-11-16-22-20-38.png)

### 2.1 Thiết bị nhập:
- Mouse
- Keyboard ...

### 2.2 Thiết bị xử lí
- CPU
- Mainboard

### 2.3 Thiết bị lưu trữ
- Floppy disk
- RAM
- HDD, SSD

### 2.4 Thiết bị xuất
- Monitor

### 2.5 Cách hoạt động
- Khi khởi chạy 1 tiến trình, dữ liệu được trích từ ổ cứng chuyển lên RAM.
+ Ổ cứng phải truyền dữ liệu lên `RAM` vì ổ cứng tuy có thể chứa rất nhiều dữ liệu nhưng lại có tốc độ truyền dữ liệu `rất chậm` so với `CPU`, làm kéo dài thời gian xử lí)
+ Do đó ta cần RAM để lưu trữ dữ liệu tạm thời, RAM chứa được ít dữ liệu nhưng có tốc độ cao hơn, thích hợp làm việc cùng CPU.

- Sau đó **CPU** sử dụng mạch phần cứng gọi là `memory controller` để tải chương trình từ bộ nhớ `RAM`.
- **CPU** sẽ xử lí dữ liệu.

__Docs__
- https://quantrimang.com/tim-hieu-ve-cach-lam-viec-cua-cpu-phan-cuoi-43555
Empty file added 11.Filesystem-format.md
Empty file.
53 changes: 51 additions & 2 deletions 7.Filesystem.md
Original file line number Diff line number Diff line change
@@ -232,7 +232,56 @@ hosts preload.conf
```
## 5. `/dev` - files device
- Chứa các thông tin nhận biết cho các thiết bị của hệ thống, bao gồm các thiết bị đầu cuối, USB hoặc các thiết bị được gắn trên hệ thống.
- Mỗi thiết bị đều có file đại diện và được đặt tên:
+ `cdrom`: đĩa CDROM/DVD
+ `hd*`: ổ đĩa IDE, ATA
- hda: hda1: phân vùng thứ nhất của ổ cứng thứ nhất.
- hdb
- hdc
+ `sd*`: ổ đĩa SCSI, SATA(SSD)


## 5. `/proc` - process information
## 6. `/proc` - process information
- Chứa các thông tin về System process.
- Đây là hệ thống tập tin giả có chứa thông tin về các tiến trình đang chạy hoặc thông tin về tài nguyên hệ thống.
- Đây là hệ thống tập tin giả có chứa thông tin về các tiến trình đang chạy hoặc thông tin về tài nguyên hệ thống.

## 7 `/var` - variable files
- Là thư mục lưu lại tại tập tin ghi các số liệu biến đổi.
- Bao gồm:
+ `/var/log`: hệ thống ghi tập tin log
+ `/var/lib`:các gói và các file dữ liệu
+ `var/tmp`: các file tạm thời khi cần `reboot`

## 8. `/tmp` - temporary file
- Thư mục chứa các tập tin tạm thời được tạo bởi hệ thống và user.
- Các tập tin trong thư mục này bị xóa khi hệ thống `reboot` lại.

## 9. `/usr` - user program
- Chứa các ứng dụng, thư viện, tài liệu và mã nguồn cho các chương trình thứ cấp.
- `usr/bin`: chứa các tập tin của ứng dụng chính đã được cài đặt cho user (Nếu không tìm thấy user binary tại `bin`, có thể tìm thấy tại thư mục `/usr/bin`)

## 10. `/home` - home directory
- Thư mục chứa các thư mục home của các user được tạo.

## 11. `/boot` - boot loader file
- Chứa các tập tin cấu hình cho quá trình khởi động hệ thống.

## 12. `/lib` - system libraries
- Chứa các file thư viện hỗ trợ các thư mục nằm dưới `/bin``sbin`.

## 13. `/lib64` - system libraries x64
- Tương tự `lib` nhưng dành cho 64 bit.

## 14. `/opt` - optional
- Chứa các ứng dụng thêm vào từ nhà cung cấp độc lập khác.

## 15. `/media` - mount outside devices
- Thư mục này có vai trò là đích đến của quá trình **mount point**.
- Khi gắn 1 thiết bị lưu trữ bên ngoài, để sử dụng cần mount thiết bị này vào trong thư mục `/media`. `/media` coi như ảnh chiếu của các thiết bị.

## 16. `/sys` - system files
- Lưu tập tin của hệ thống.

## 17. Sự khác biệt giữa `lib``lib64`
- Chứa các thư viện cần thiết hỗ trợ cho các công cụ được triển khai vào thư mục `/bin``/sbin`.
- `/lib` được sử dụng cho các ứng dụng `32bit`, `/lib64` được sử dụng cho các ứng dụng `64 bit`
43 changes: 43 additions & 0 deletions 8.Process.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Process
## 1. Khái niệm:
- **Process(tiến trình)** là biêủ thị cho một chương trình đang chạy.
- Bất cứ khi nào thông báo 1 lệnh trên Linux, nó sẽ bắt đầu 1 **process** mới.
- Mỗi **Process** có 1 **PID(Process ID)** đại diện. **PID** gồm tối đa 5 chữ số và duy nhất tại 1 thời điểm.
- Có 2 loại **Process**:
+ **Foreground Process**
+ **Background Process**

### 1.1. Foreground Process
- Mặc định mọi **Process** mà bắt đầu chạy là **foreground process**. Nó nhận Input từ bàn phím rồi gửi output tới màn hình.
- Trong khi một chương trình đang chạy trong **Foreground** và cần một khoảng thời gian dài, chúng ta không thể chạy bất kì 1 lệnh nào khác (**process** khác)

```
khanhnt@Inspiron3521:~/Git/Linux-tutorial$ ping -c 5 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=111 time=36.3 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=111 time=33.0 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=111 time=37.7 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=111 time=33.7 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=111 time=33.6 ms
--- 8.8.8.8 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 33.054/34.916/37.766/1.841 ms
```
- Sau khi kết thúc Process mới xuất hiện dấu nhắc lệnh.

### 1.2 Background Process
- **Background Process** chạy trong lúc đó có thể chạy các lệnh khác.
- Để bắt đầu 1 **background Process**, thêm dấu `&` tại cuối lệnh.

### 1.3 Daemon Process
- **Daemon process** là các **Background process** liên quan tới hệ thống mà thường chạy tới quyền hạn truy cập của `root` và các dịch vụ yêu cầu từ **process** khác.

## 2. Các lệnh về process
### 2.1 `ps` - Process status
- `ps [option]`
+ `-f`: hiển thị đầy đủ thông tin có về các **process**
+ `-e`: hiển thị đầy đủ các process (cả system process)
+ `-aux`=`-ef`: hiển thị đầy đủ các thông tin về tất cả các process
+ `-u`: hiển thị các process liên quan đến user hiện hành.

84 changes: 84 additions & 0 deletions 9.standard_input_output.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# Standard input - Standard output
![](https://camo.githubusercontent.com/ce6734dac43549b9e10bf18eafb4fab0f7790f6f3cc53cc0f197ef74a281d20e/68747470733a2f2f692e696d6775722e636f6d2f767161374f64582e676966)
## 1. Chuyển hướng trong Linux
- **Standard Input (stdin - 0)**: dữ liệu vào chuẩn
- **Standard Output (stdout - 1)**: dữ liệu ra chuẩn
- **Standard Error (stderr - 2)**: dữ liệu ra lỗi
- Thay vì nhập xuất thông tin từ các thiết bị keyboard, monitor theo chuẩn thì ta có thể chuyển hướng nhập xuất đó bằng tệp tin hoặc tiến trình khác.
- Một tiến trình Linux gồm 3 luồng dữ liệu chuẩn: **stdin**, **stdout**, **stderr**
- Vậy khi chuyển hướng ta cũng có 3 luồng dữ liệu chuyển hướng:
+ **input redirections**
+ **output redirections**
+ **error redirections**

## 2. Outout Redirection
- Sử dụng kí tự `>` hoặc `1>` cho chuyển huớng **output**.
- Thay vì xuất ra terminal, **output** có thể ghi vào tập tin, hoặc truyền cho các process khác xử lí tiếp.
- `>` hoặc `1>` khi ghi tệp tin mới nếu tệp đã tồn tại thì sẽ thực hiện ghi đè lên tập tin đó.
- `>>` hoặc `1>>` ghi tiếp vào tập tin cũ.

```
khanhnt@Inspiron3521:~$ ls > file.txt
khanhnt@Inspiron3521:~$ cat file.txt
Desktop
Documents
Downloads
examples.desktop
file.txt
Git
GNS3
MATHLAB
Music
Pictures
Polyspace_Workspace
Public
snap
Templates
viber.deb
Videos
VirtualBox VMs
```

## 3.Input Redirection
- Dữ liệu truyền vào để **process** xử lí, có thể là dữ liệu nhập từ bàn phím, tập tin hay output của các process khác.
- `<<` dùng để chuyển hướng `input`.

```
khanhnt@Inspiron3521:~$ cat >> file.txt <<EOF
> a
> b
> EOF
khanhnt@Inspiron3521:~$ cat file.txt
total 97428
drwxr-xr-x 4 khanhnt khanhnt 4096 Thg 1 17 22:20 Desktop
drwxr-xr-x 11 khanhnt khanhnt 4096 Thg 1 17 23:25 Documents
drwxr-xr-x 5 khanhnt khanhnt 4096 Thg 1 17 23:25 Downloads
-rw-r--r-- 1 khanhnt khanhnt 8980 Thg 1 25 09:54 examples.desktop
-rw-r--r-- 1 khanhnt khanhnt 0 Thg 1 17 23:42 file.txt
drwxr-xr-x 6 khanhnt khanhnt 4096 Thg 1 7 01:07 Git
drwxr-xr-x 7 khanhnt khanhnt 4096 Thg 1 25 15:58 GNS3
drwxr-xr-x 22 khanhnt khanhnt 4096 Thg 1 25 15:14 MATHLAB
drwxr-xr-x 2 khanhnt khanhnt 4096 Thg 1 25 10:00 Music
drwxr-xr-x 2 khanhnt khanhnt 4096 Thg 1 17 15:43 Pictures
drwxr-xr-x 2 khanhnt khanhnt 4096 Thg 1 15 23:11 Polyspace_Workspace
drwxr-xr-x 2 khanhnt khanhnt 4096 Thg 1 25 10:00 Public
drwxr-xr-x 5 khanhnt khanhnt 4096 Thg 1 1 16:40 snap
drwxr-xr-x 2 khanhnt khanhnt 4096 Thg 1 25 10:00 Templates
-rw-r--r-- 1 root root 99693958 Thg 7 15 18:56 viber.deb
drwxr-xr-x 2 khanhnt khanhnt 4096 Thg 1 25 10:00 Videos
drwxr-xr-x 7 khanhnt khanhnt 4096 Thg 1 1 23:43 VirtualBox VMs
a
b
```

## 4. Error Redirection
- Thay vì xuất lỗi ra màn hình thì chuyển hướng lỗi xuất lỗi ra tệp tin.
- `2>` chuyển hướng error

```
khanhnt@Inspiron3521:~$ ls-l 2> file.txt
khanhnt@Inspiron3521:~$ cat file.txt
ls-l: command not found
```
### Note: Chuyển hướng cả dữ liệu chuẩn và lỗi ra file
- Sử dụng `&>`

0 comments on commit a80cf8b

Please sign in to comment.