Điều gì sẽ xảy ra khi bạn khởi động máy tính
Điều gì sẽ xảy ra khi
bạn khởi động máy tính
Một
chủ đề mà mình đã tình cờ nghe được trên lớp. Mặc dù là một đứa đã học qua được
cấu trúc máy tính, nhưng không trả lời được câu hỏi này khiến mình hơi chạnh lòng.
Nên hôm nay mình nói riêng, cũng như chúng ta nói chung, sẽ tìm hiểu xem chuyện
gì sẽ xảy ra khi khởi động máy tính nhé.
Trước
hết, ta cần nói sơ về cách máy tính xử lý khi chạy chương trình.
Khi
bạn mở một chương trình, ví dụ như Microsoft Word, thì dữ liệu sẽ được đưa vào
trong RAM, rồi từ RAM đưa vào register. Tại register, CPU sẽ đọc chỉ thị trên nó
là gì, sử dụng ALU và CU để xử lý, rồi trả về giá trị chỉ thị cần về register.
Register trả về cho RAM, và RAM trả về cho disk. Bạn có thể coi RAM là nơi để lưu
trữ các chương trình đang thực thi, vì thế nên có trường hợp thực tế một số chương
trình không thể mở được do RAM không đủ chỗ để lưu trữ. Chắc chắn bạn sẽ hỏi rằng
có thể trao đổi dữ liệu trực tiếp giữa disk và CPU được không? Tại sao lại phải
thông qua RAM? Đơn giản vì đặc tính của RAM và disk khác nhau. RAM tốc độ truy
cập vào vùng nhớ nhanh hơn nhiều so với disk, nên việc trao đổi dữ liệu giữa
CPU và RAM sẽ tốn ít thời gian hơn so với việc trao đổi dữ liệu giữa CPU và
disk. Bạn không muốn phải ngồi đợi 5p chỉ để mở được chương trình Word đâu nhỉ.
Thêm một cái nữa, giá tiền trên một bit của RAM khá là cao so với disk, và RAM
không lưu trữ lâu dài như disk, nên RAM không dùng để lưu trữ dữ liệu. Chính vì
thế họ sử dụng hai loại bộ nhớ này để vừa đảm bảo hiệu suất cao, vừa tiết kiệm
chi phí.
Quay
lại trọng tâm vấn đề, chúng ta cần tìm hiểu điều gì xảy ra khi khởi động máy tính
phải không? Chúng ta bắt đầu ngay nào!
Mình
sẽ chia công việc thành hai giai đoạn.
Giai
đoạn 1: Thực hiện các công việc cơ bản
Đầu tiên, nguồn điện sẽ cấp điện cho các thiết
bị phần cứng (màn hình, RAM, đĩa cứng,…) để chúng có thể hoạt động. Sau đó, CPU
đọc chương trình BIOS (Basic Input/Output System) từ trong ROM (cụ thể là EPROM). Nguyên nhân BIOS không nạp vào RAM vì khi đó RAM chưa đảm bảo có thể sử
dụng được.
Để hệ điều hành hoạt động thì chương trình BIOS là điều cần thiết, vì hệ điều
hành lưu trong disk, muốn hoạt động phải có các chỉ lệnh hướng dẫn CPU sử dụng
hệ điều hành đó, và BIOS là chương trình như thế. BIOS thực hiện chức năng sau:
1. Startup
and test (hay còn gọi là quá trình POST (Power On Seft Test)):
Gồm 16 bits dòng lệnh đầu tiên của BIOS. Quá trình này sẽ đi kiểm tra các thiết
bị còn hoạt động tốt hay không, đầu tiên là kiểm tra về RAM – một thứ không thể
thiếu để có thể chạy các chương trình, sau đó là kiểm tra các thiết bị phần cứng
khác như bàn phím, màn hình. Nếu một trong số các thiết bị phát sinh lỗi (thiếu
bàn phím, thiếu chuột, RAM bị lỏng,… ), sẽ có tín hiệu beep phát ra từ loa
internal speaker (search google xem hình). Đó được gọi là beep code, dùng để nhận
biết thiết bị nào gặp sự cố (Ví dụ 6 tiếng beep ngắn sẽ là lỗi bàn phím, 3 beep
ngắn là lỗi RAM).
2. Run-time
services: Quá trình này BIOS tìm kiếm hệ điều hành từ trong disk và nạp nhân hệ điều
hành vào RAM. Lúc này hệ điều hành sẽ nắm quyền điều khiển hoạt động của máy (tức
mọi tương tác người dùng đều phải thông qua hệ điều hành). Mọi chương trình đều phải nạp vào RAM để thực thi nên việc hệ điều hành
nạp vào RAM là điều dễ hiểu. Lưu ý rằng BIOS chỉ nạp một
phần nhỏ hệ điều hành vào trong RAM, vì hệ điều hành có dung lượng khá lớn, mà
RAM của bạn lại khá nhỏ. Một hệ điều hành hiện nay cũng khoảng tầm 10 đến 15
GB, giả sử RAM của bạn có 16GB đi chăng nữa, thì chiếm dụng gần hết vị trí RAM
chỉ để nạp hệ điều hành là rất phí.
Kết
thúc công việc của BIOS. Bây giờ hệ điều hành sẽ đảm nhiệm công việc tiếp theo.
Giai
đoạn 2: Các chức năng của hệ điều hành
1.
Interface (Giao diện):
HĐH lựa chọn giao diện để hiển thị lên màn hình. Có hai loại giao diện
·
CLI (Command Line Interface): Dạng giao diện dòng lệnh.
Dạng này có từ thời sử dụng hệ điều hành MS-DOS. Bạn chỉ có thể tương tác với máy
tính thông qua dòng lệnh
·
GUI (Graphic User Interface): Dạng giao diện đồ họa dành
cho người sử dụng. Đó chính là giao diện các hệ điều hành mà các bạn đang sử dụng:
Dễ nhìn, dễ tương tác
2.
Multi-tasking (Đa nhiệm):
Hệ thống đa nhiệm cho phép HĐH chạy nhiều chương trình một lúc. Thử tưởng tượng
bạn mở máy tính lên, mở website lướt facebook, tiện thể bật bài nhạc mình thích,
nếu hơn nữa thì mở trò chơi lên để chơi. Tất cả các công việc làm song song với
nhau như thế gọi là multi-tasking. Nhưng đó chỉ là bề nổi bạn nhìn thấy, thực
chất máy tính sử dụng cơ chế phân chia thời gian, với mỗi công việc chỉ chạy
trong một khoảng thời gian rất ngắn, sau đó đổi phiên cho công việc khác chạy.
Thời gian ngắn thế sẽ khiến bạn cảm thấy rằng: Ồ, máy tính có thể thực hiện nhiều
tác vụ đồng thời với nhau. Tất nhiên bạn có thể dùng nhiều processor để thực hiện
quá trình multi-tasking này, tuy nhiên số lượng tác vụ chạy đồng thời lớn hơn
nhiều so với số lượng processor có thể xử lý, nên các máy tính hiện nay kết hợp
cả hai cách này lại để giúp cho máy tính xử lý nhanh hơn.
3.
Processor management (Quản lý
processor): Cái này cũng liên quan đến vấn đề
multi-tasking. Vì processor chỉ cơ bản là một chip xử lý, giả sử processor đang
xử lý tác vụ của chương trình A, nếu muốn chuyển sang tác vụ của chương trình
B, thì hệ điều hành phải là đối tượng yêu cầu processor ngừng tác vụ hiện tại để
thực hiện tác vụ của chương trình B. Vì thế HĐH phải quản lý processor để công
việc thực hiện có hiệu quả hơn.
4.
Memory management (Quản lý bộ nhớ): HĐH
cũng là đối tượng quản lý việc sử dụng bộ nhớ. Cụ thể là việc sử dụng RAM. Một
chương trình sau khi thực hiện xong trên RAM phải được giải phóng để chừa vùng
nhớ cho các chương trình khác. Việc lựa chọn giải phóng vùng nhớ nào là do HĐH tính
toán và lựa chọn. Một số thuật toán được HĐH sử dụng như: LRU (Least Recently
Used) thay thế khối ở trong bộ đệm lâu nhất mà không có tham chiếu, FIFO (First
In First Out) thay thế khối ở trong bộ đệm lâu nhất, hoặc chọn ngẫu nhiên.
5.
File management (Quản lý file):
Cấu trúc lưu trữ trên đĩa cứng là một cấu trúc phức tạp, thế nhưng vì đơn giản
hóa cũng như muốn tạo nên cái nhìn tổng quan cho người dụng, HĐH quản lý cách
thức lưu trữ của file, và thông qua đó biến đổi thành một cái nhìn trực quan
cho người dùng, chính là khái niệm file và folder mà chúng ta sử dụng hiện nay.
6.
I/O management (Quản lý Nhập/ Xuất):
HĐH quản lý các thiết vị ngoại vi, cụ thể là HĐH có các driver sẵn có trên máy
tính, các driver là một loạt các chỉ lệnh dùng để điều khiển các thiết bị như máy
in, bàn phím, con chuột, loa,… Giả dụ bạn có một document và muốn in nó ra giấy,
bạn bấm nút in và khi đó hệ điều hành sử dụng driver đưa một loạt yêu cầu như xoay
bánh xoay kéo giấy vào, phun mực theo văn bản nào đó,… (đại khái thế) nhằm mục đích
phục vụ hành động muốn thực hiện.
Ngoài các chức năng trên, HĐH đang dần
được thêm vào ngày một nhiều chức năng hơn, như là Networking (Kết nối), hay là
về Security (Bảo mật),… tuy nhiên, mục tiêu của HĐH cuối cùng cũng là tạo ra sự
kết nối giữa người và máy tính, giúp cho con người có thể dễ dàng tương tác với
máy tính hơn.
Lời
kết: Có vẻ công nghệ đang hướng sự đơn giản hóa cho người
dùng, thế nhưng nếu chúng ta chỉ nhìn vào sự đơn giản ấy thì chúng ta không thể
hiểu sâu sắc bản chất của vấn đề. Với một người làm về khoa học như chúng ta, cần
phải hiểu sâu hơn về những cái tưởng chừng đơn giản nhất, tùy vào mục tiêu và
nhu cầu mà mức độ hiểu sâu sẽ khác nhau. Cảm ơn các bạn đã đọc bài viết của mình!
Nội dung bài viết thuộc về Lê Công Diễn.
Người viết: Lê
Công Diễn
Mang đi nhớ ghi nguồn
Nhận xét
Đăng nhận xét