Có gì mới?

Chào mừng bạn đến với diễn đàn Tui Học Web

Vui lòng đăng ký hoặc đăng nhập để sử dụng hết các tính năng của forum nhé!
  • Thông báo: Hiện tại do admin không có nhiều thời gian và không thể tiếp tục quản trị và maintain forum, do đó forum sẽ có dự định được đóng lại từ 06/2022, cảm ơn mọi người đã đồng hành cùng forum suốt thời gian vừa qua. Cảm ơn rất nhiều.

Chia sẻ Cái nhìn chung về máy tính

Chia sẻ
Oke, đây sẽ là bài đầu tiên mà anh em cần nắm, các kiến thức cơ bản nhất về máy tính

Máy tính chúng ta dùng hằng ngày được cấu tạo nên bởi rất nhiều thành phần khác nhau, nhưng chủ yếu, chúng có các thành phần quan trọng nhất như sau:
  • Đĩa cứng (thằng sẽ lưu dữ liệu của chúng ta)
  • RAM (bộ nhớ truy cập ngẫu nhiễn, nó sẽ là bộ nhớ nạp các chương trình và dữ liệu tạm thời lên để chạy)
  • Video card (thằng sẽ xử lý và quyết định đưa lên màn hình cái gì)
  • Motherboard (thằng sẽ đảm nhận việc liên lạc giữa các thành phần trong máy tính với nhau)
  • CPU (trung tâm xử lý của mọi yêu cầu, mọi câu lệnh dù chỉ là 1+1 cũng được tính ở đây)
Oke nếu hồi nhỏ các bạn đã từng tháo vỏ máy tính ra, chúng ta sẽ thấy các thành phần kiểu:

1630580838969.png

Bây giờ chúng ta sẽ tìm hiểu qua từng thành phần ở trong này:

CPU: bộ não máy tính​

CPU được coi là bộ não của máy tính, nó đảm nhận việc tính toán mọi câu lệnh. Những câu lệnh từ dễ tới khó, từ đơn giản tới phức tạp phụ thuộc vào từng kiến trúc. Ví dụ, một lệnh đơn giản nhất là cộng hai số với nhau. Để tăng tốc thời gian thực thi, CPU có một số khu vực đặc biệt, nơi có thể lữu trữ và sửa đổi dữ liệu. Chúng được gọi là thanh ghi.

1630581261897.png

Ở ví dụ trên ta thấy giá trị thanh ghi eax được cộng vào 2.
Nó là một trong những câu lệnh đơn giản nhất ở trong kiến trúc X86. Những câu lệnh này được gọi là các câu lệnh nền tảng. Nó được xây dựng sẵn để tính toán các câu lệnh khó hơn và phức tạp hơn.

Ví dụ: Bạn thực hiện tính 2 nhân với 5, thực ra trong bộ nhớ máy tính, các câu lệnh được chia nhỏ thành 5 câu lệnh cộng.

2 nhân với 5 hay còn có thể tính 2 + 2 + 2 + 2 + 2

Như vậy nó sẽ có dạng như sau:

1630581563786.png

Ngoài câu lệnh này ra còn có các câu lệnh trừ, so sánh hai số, đều là những câu lệnh cơ bản nhất của CPU. Các câu lệnh thông dụng đó bao gồm:
  • Cộng hai số​
  • Trừ hai số​
  • So sánh hai số​
  • Di chuyển một số vào một vị trí nào đó trong bộ nhớ (RAM)​
  • Nhảy đến một câu lệnh hoặc một địa chỉ chứa địa chỉ câu lệnh.​
Tất cả các chương trình trong máy tính đều được kết hợp từ những câu lệnh đơn giản này mà cấu tạo thành. Ví dụ cộng hai số 4 và 8, các câu lệnh nó sẽ như này:

1630581805577.png

Lệnh đầu tiên mov eax, 4 nó sẽ thực hiện đưa giá trị 4 vào thanh ghi eax, lệnh thức hai mov ebx, 8 đưa giá trị 8 vào trong thanh ghi ebx, sau đó lệnh thức ba add eax, ebx thực hiện việc cộng giá trị nằm trong hai thanh ghi này với nhau. Như vậy là đã thực hiện được việc tính toán cộng hai số 4 và 8 với nhau.

Như vậy qua kiến thức vừa rồi, ta đã có cái nhìn tổng quan về việc thực thi các câu lệnh.

Chương trình máy tính​

Chương trình máy tính là một tập hợp các câu lệnh cơ bản như đã nói ở trên. Các chương trình máy tính thực thi và nhận giá trị đầu vào, sau đó tính toán và xử lý, tạo ra giá trị đầu ra phụ thuộc vào giá trị dưa vào và mục đích của chương trình.
Ví dụ ta có một chương trình đơn giản:
Nhận vào 1 số, tăng số đó lên 1 sau đó đưa kết quả ra output:


Mã:
mov eax, input
add eax, 1
mov output, eax

hoặc

mov eax, input
inc eax
mov output, eax

Một chương trình phức tạp hơn sẽ có nhiều đoạn lệnh đơn giản nằm trong nó, thực hiện một mục đích và công việc nhỏ nhất định để tạo nên chương trình lớn. Chúng thường được gọi là chương trình con hay anh em còn gọi nó là hàm.
Mã minh họa: Hàm thực hiện việc nhận vào 1 số, tăng số đó lên một và đưa kết quả đó ra output

Mã:
function add(input):
    mov eax, input
    inc eax
    mov output, eax

Chúng ta hoàn toàn có thể tạo ra một hàm tương tự, hoặc chương trình có thêm chức năng thay vì tăng lên 1 đơn vị thì ta sẽ giảm 1 đơn vị:
Mã minh họa:

Mã:
function subtract(input):
    mov eax, input
    dec eax
    mov output, eax

Hai hàm mình nói ở trên mình tạm gọi là hàm trừ một số và hàm tăng một số, ta có thể dùng hai hàm này để viết nên một chương trình lớn và phức tạp hơn một chút:

Mã:
function add(input):
    mov eax, input
    inc eax
    mov output, eax

function subtract(input):
    mov eax, input
    dec eax
    mov output, eax

cmp operation, '-'
je subtract_number
add(number)
exit

subtract_number:
    subtract(number)
    exit

Đoạn mã trên cho thấy ta sẽ khai báo hai hàm nhỏ ở phía trên, sau đó gọi chúng ở chương trình chính, câu lệnh cmp là câu lệnh so sánh và thực hiện kiểm tra phép toán truyền vào có phải là phép trừ hay không, nếu đúng lệnh je subtract_number sẽ nhảy và hàm trừ sẽ được thực hiện thay vì hàm cộng. Việc so sánh này được gọi là câu lệnh rẽ nhánh trong lập trình, trong mã assembly, đây là một dạng đơn giản nhất

Ngôn ngữ lập trình​


Những câu lệnh ở trong bộ nhớ cũng như các dữ liệu khác, nhưng nó được lưu dưới dạng opcodes, được quy định theo một quy chuẩn nhất định để máy tính có thể hiểu và thực thi nó. CPU sẽ hiểu thực thi nó theo kiểu nó là câu lệnh gì và mục đích của nó là gì. Nó sẽ nhận vào cái gì và cho ra cái gì.
Ví dụ: câu lệnh jump trong CPU nó sẽ đọc là 0xE9, khi trong bộ nhớ có dữ liệu là 0xE9, CPU lập tức hiểu đó là câu lệnh jump và tiến hành đọc các tham số tiếp theo. Như vậy opcodes của lệnh jump là 0xE9

Hồi xưa, khi mà những máy tính đầu tiên ra đời, nó không phải thông minh và nhanh như bây giờ đâu anh em, nó bắt buộc mình phải viết các câu lệnh dưới dạng opcodes.
Dần dần, các opcodes này được phát triển và người ta nhận ra nếu như cứ viết opcodes mãi như này thì thực sự rất là khó khăn và tốn thời gian công sức. Do đó, ngôn ngữ lập trình đã ra đời. Một ví dụ về chương trình C++ để thực hiện các câu lệnh phía trên mình nói:

C++:
int add(int input) {
    return input + 1;
}

int subtract(int input) {
    return input - 1;
}

if(operation == '-') {
    subtract(number);
}
else {
    add(number);
}

Hệ điều hành​


Oke, vấn đề chương trình đã được giải quyết, chúng ta biết là lúc các câu lệnh được nạp vào bộ nhớ, nó sẽ được CPU thực thi, nhưng cái gì nạp vào bộ nhớ cơ, cái gì nhận các thông số nhập vào từ bàn phím? Cái gì đảm nhận việc hiển thị kết quả lên màn hình, rồi thì cái gì đảm nhận việc liên lạc giữa các phần cứng với phần mềm.
Đó chính là Hệ điều hành.

Hiện nay có rất nhiều nền tảng hệ điều hành: Windows, Linux, MacOS. Mỗi hệ điều hành có một thư viện giao tiếp giữa phần cứng và phần mềm khác nhau, các kiến trúc câu lệnh cũng khác nhau, do đó chương trình viết để chạy trên các hệ điều hành này cũng là khác nhau. Điển hình như việc chạy một file thực thi trên Windows thì anh em chạy file có đuôi là .exe, nếu anh em đưa file này qua Linux để chạy thì bó tay rồi :v


Ứng dụng​

Là các phần mềm chạy trên hệ điều hành, cung cấp các tính năng và giao diện để người dùng tương tác, đưa lại cho người dùng một trải nghiệm hoặc một cách giải quyết công việc nào đó thôi :v Anh em cứ hiểu nó đơn giản vậy là được

Games​

Chả khác gì ứng dụng cả, game thực chất cũng chỉ là một ứng dụng chạy trên hệ điều hành mà thôi, vấn đề là nó dùng để giải trí :v hehe

:bacda:

Đến đây có lẽ cũng đã thấm mệt rồi nhỉ :v Hẹn anh em ở bài tiếp theo :v

:daica:
 

muitenbac216

Tế bào
Member
Tham gia
14 Tháng chín 2021
Bài viết
1
Điểm tương tác
2
Điểm
3
Seri này a chia sẻ hay lắm ạ. Mong a ra thật nhiều bài chia sẻ thêm ạ <3
 
shape1
shape2
shape3
shape4
shape7
shape8
Bên trên