Đ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 servicesQuá 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

Bài đăng phổ biến từ blog này

Deploy project Springboot MIỄN PHÍ sử dụng Render

Ứng dụng Mã hóa bất đối xứng (Asymmetric cryptography) vào Chữ ký số (Digital Signature)

API và HTTP - Một số khái niệm cơ bản cần biết về Web (Phần 2)