BIOS làm việc như thế nào ?
BIOS được viết tắt từ Basic Input – Output System , ngày nay BIOS được lưu trong bộ nhớ kiểu Flash  .
 
Hầu hết mọi máy tính hiện nay BIOS được dùng trên những thiết bị khác như : ổ cứng CPU , Card màn hình …
Mọi máy tính ngày nay đều có cấu hình chung bao gồm bộ vi xử lí như là một đơn vị xử lí trung tâm . Bộ vi xử lí là thiết bị phần cứng , để cho nó làm việc cần cho nó xử lí những lệnh gọi là phần mềm . Có 02 kiểu phần mềm bao gồm :
·         Hệ điều hành : hệ điều hành cung cấp những dịch vụ cho những ứng dụng được chạy trên máy tính , nó cung cấp những quy tắc cơ bản giao diện với người sử dụng . ( Ví dụ : Windows 98, XP , Linux …)
·         Những chương trình ứng dụng . Chúng là những phần mềm được lập trình để thực hiện những nhiệm vụ nào đó . ( Ví dụ : Chương trình duyệt Web , nhận và gửi thư …. )
BIOS là kiểu thứ ba của phần mềm máy tính để cho những hoạt động được thành công .
BIOS làm những gì ?
          Phần mềm BIOS của Mainboard có một số vai trò khác nhau , nhưng nhiệm vụ quan trong nhất của nó là tải hệ điều hành . Khi bạn bật máy tính và bộ vi xử lí cố gắng thực hiện những lệnh đầu tiên , nó sẽ nhận những lệnh này ở đâu đó . Nó không thể nhận được những lệnh này từ hệ điều hành bới vì hệ điều hành nằm trên ở cứng . Chính là BIOS cung cấp những lệnh này . BIOS cung cấp những lệnh thực hiện những việc chung như sau :
  • POST (power-on self-test – Tự kiểm tra khi bật nguồn ) cho tất cả những phần cứng khác nhau trong hệ thống và chắc chắn chúng làm việc được phù hợp .
  • Kích hoạt những BIOS của những Card khác nhau cài đặt trong máy tính ( Ví dụ : Card SCSI , Card đồ hoạ … những Card này có Chip BIOS riêng ) .
  • Cung cấp những thủ tục mức thấp nhất mà hệ điều hành dùng để giao tiếp với những thiết bị phần cứng khác ( Những thủ tục này được lưu trong BIOS và có những cách sử dụng riêng biệt ) . Chúng quản lí những công việc như Keyboard , màn hình hiển thị , cổng nối tiếp , cổng song song … trong khi máy tính bắt đầu khởi dộng .
  • Quản lí những thiết lập của ổ cứng , của đồng hồ …
BIOS là phần mềm chuyên dụng để cung cấp những giao diện để kết nối những phần cứng chính với hệ điều hành . Nó thường được lưu trữ trong bộ nhớ Flash trên Mainboard , đối với những Mainboard trước kia được lưu trữ trong ROM .
Với loại ROM trên có thể Ghi/Xoá được . Để xoá nội dung trong đó thông thường dùng ánh sánh tia cực tím chiếu vào vùng có vòng tròn khoanh đỏ . Nội dung trong BIOS được ghi bằng thiết bị ghi ROM chuyên dụng . Ghi xong chúng ta phải bị chỗ có vòng tròn đỏ để tránh xảy ra hiện tượng mất dữ liệu .
Đối với những máy tính đời cũ nữa thì nội dung của BIOS được lưu vào trong 02 ROM một cho Odd và một cho Even với mục đích tăng tốc độ khi truy cập vào ROM . Ngày nay tốc độ của bộ nhớ Flash nhanh nên nội dung BIOS chỉ ghi vào trong một bộ nhớ Flash duy nhất . Đồng thờii khi bất máy tính những nội dung của BIOS sau khi kiểm tra một số bước cũng được tải thẳng vào bộ nhớ để việc truy cập được nhanh hơn .
Khi bật máy tính , BIOS thực hiện những lệnh bao gồm những công việc sau :
·         Kiểm tra CMOS Setup cho những thiết lập cuỉa hệ thống .
·         Tải những điều khiển ngắt và những Driver của thiết bị .
·         Thiết lập những giá trị ban đầu cho những thanh ghi và quản lí nguồn cung cấp .
·         Thực hiện POST
·         Hiển thị những thiết lập hệ thống .
·         Xác định những thiết bị nào tham gia quá trình khởi động .
·         Thiết lập những thứ tự khởi động hệ thống .
Đầu tiên BIOS kiểm tra những thông tin được lưu trữ trong một bộ nhớ RAM nhỏ có dung lượng 64 byte ( hoặc 128 byte )  trong Chip với công nghệ CMOS (complementary metal oxide semiconductor) – dùng công nghệ CMOS cho phép tiêu thụ năng lượng ít nên dễ dàng dùng Pin Li-Ion để lưu trữ dữ liệu hàng năm mà không phải thay . CMOS Setup cung cấp những thông tin chi tiết liên quan đến hệ thống máy tính của bạn và có thể thay đổi được .
Điều khiển những ngắt là những đoạn chương trình nhỏ làm việc như là bộ phận chuyển đổi giữa phần cứng và hệ điều hành . Ví dụ khi bấm bàn phím , tín hiệu được gửi từ bộ phận điều khiển ngắt sẽ nói cho CPU cái gì đã được ấn và gửi tới hệ điều hành . Những Driver thiết bị là những những đoạn chương trình khác mà nhận dạng những phần cứng cơ bản như bàn phím , chuột , ổ cứng , ổ mềm . Khi đó BIOS luôn luôn chặn những tín hiệu tới và từ phần cứng , thông thường được Copy ( được Shadow ) vào RAM để cho hoạt động được nhanh hơn .
Interrupt
Địa chỉ
Kiểu
Mô tả
00h
0000:0000h
Processor
Divide by zero
01h
0000:0004h
Processor
Single step
02h
0000:0008h
Processor
Non maskable interrupt (NMI)
03h
0000:000Ch
Processor
Breakpoint
04h
0000:0010h
Processor
Arithmetic overflow
05h
0000:0014h
Software
Print screen
06h
0000:0018h
Processor
Invalid op code
07h
0000:001Ch
Processor
Coprocessor not available
08h
0000:0020h
Hardware
System timer service routine
09h
0000:0024h
Hardware
Keyboard device service routine
0Ah
0000:0028h
Hardware
Cascade from 2nd programmable interrupt controller
0Bh
0000:002Ch
Hardware
Serial port service – COM post 2
0Ch
0000:0030h
Hardware
Serial port service – COM port 1
0Dh
0000:0034h
Hardware
Parallel printer service – LPT 2
0Eh
0000:0038h
Hardware
Floppy disk service
0Fh
0000:003Ch
Hardware
Parallel printer service – LPT 1
10h
0000:0040h
Software
Video service routine
11h
0000:0044h
Software
Equipment list service routine
12h
0000:0048H
Software
Memory size service routine
13h
0000:004Ch
Software
Hard disk drive service
14h
0000:0050h
Software
Serial communications service routines
15h
0000:0054h
Software
System services support routines
16h
0000:0058h
Software
Keyboard support service routines
17h
0000:005Ch
Software
Parallel printer support services
18h
0000:0060h
Software
Load and run ROM BASIC
19h
0000:0064h
Software
DOS loading routine
1Ah
0000:0068h
Software
Real time clock service routines
1Bh
0000:006Ch
Software
CRTL – BREAK service routines
1Ch
0000:0070h
Software
User timer service routine
1Dh
00000074h
Software
Video control parameter table
1Eh
0000:0078h
Software
Floppy disk parameter routine
1Fh
0000:007Ch
Software
Video graphics character routine
20h-3Fh
0000:0080f – 0000:00FCh
SOftware
DOS interrupt points
40h
0000:0100h
Software
Floppy disk revector routine
41h
0000:0104h
Software
hard disk drive C: parameter table
42h
0000:0108h
Software
EGA default video driver
43h
0000:010Ch
Software
Video graphics characters
44h
0000:0110h
Software
Novel Netware API
46h
0000:0118h
Software
Hard disk drive D: parameter table
4Ah
0000:0128h
Software
User alarm
64h
Software
Novel Netware IPX
67h
Software
EMSsupport routines
70h
0000:01c0h
Hardware
Real time clock
71h
0000:01C4h
Hardware
Redirect interrupt cascade
72h-74h
0000:01C8h – 0000:01D0h
Hardware
Reserved – Do not use
75h
0000:01D4h
Hardware
Math coprocessor exception
76h
0000:01D8h
Hardware
Hard disk support
77h
0000:01DCh
Hardware
Suspend request
7Ah
Software
Novell Netware API
Quá trình Boot máy tính 
          Khi bật máy tính điều đầu tiên được nhìn thấy là phần mềm BIOS đang làm những công việc của nó . Đối với nhiều máy tính , BIOS hiển thị những đoạn Text để mô tả như : tổng dung lượng bộ nhớ được cài đặt , kiểu ổ cứng …
 
          Sau quá trình này là thứ tự khởi động hệ thống , BIOS làm một loạt những công việc để máy tính của bạn sẵn sàng hoạt động . Phần này sẽ mô tả ngắn gọn một loạt những công việc của một máy tính thông thường
          Sau khi kiểm tra CMOS Setup và tải những điều khiển ngắt , BIOS sẽ xác định xem Card màn hình có làm việc được hay không . Hầu hết những Card màn hình có BIOS riêng của chúng để thiết lập giá trị ban đầu cho bộ vi xử lí đồ hoạ và bộ nhớ dành riêng cho đồ hoạ . Nếu không thì có những thông tin Card màn hình thông thường trong những ROM khác trên Mainboard mà BIOS có thể tải .
          Tiếp theo BIOS kiểm tra xem trạng thái Cold Boot hoắc Reboot . Nó làm bằng cách kiểm tra giá trị ô nhớ tại địa chỉ 0000:0472 . Nếu giá trị là 1234h ( h- hecxa ) có nghĩa là Reboot ( khởi động lại ) và BIOS bỏ qua bước kiểm tra POST , ngoài ra thì có nghĩa là Cold Boot ( khởi động bắt đầu quá trình bật nguồn ) .
          Nếu là Cold Boot thì BIOS kiểm tra RAM bằng cách kiểm Đọc/Ghi tại mỗi địa chỉ ô nhớ . Nó kiểm tra cổng PS/2 hoặc cổng USB cho bàn phím và Mouse . Nó tìm kiếm Bus PCI (peripheral component interconnect ) nếu tìm ra một thiết bị PCI và kiểm tra những Card PCI .
          Nếu BIOS tìm ra bất kì lỗi nào trogn quá trình POST , nó sẽ cảnh báo cho người sử dụng biết thông qua những tín hiệu Beep riêng hoặc hiển thị thong báo lỗi . Những lỗi xảy ra hầu hết do phần cứng có vấn đề .
          BIOS hiển thị một vài chi tiết về hệ thống máy tính , thông thường như :
  • Bộ vi xử lí
  • Ổ mềm và ổ cứng .
  • Dung lượng bộ nhớ
  • Ngày sửa chữa BIOS
  • Màn hình .
Nếu có bất kì Những Driver đặc biệt như Card SCSI (small computer system interface) thì BIOS sẽ hiển thị những thông tin về Card SCSI trên màn hình . Tiếp theo BIOS sẽ tìm kiếm những thiết bị lưu trữ như ổ cứng như là một ổ khởi động trong CMOS Setup . Nó sẽ tìm kiếm ổ nào được khởi động trước , ổ đĩa nào khởi động tiếp theo nếu như ổ thứ nhất không khởi động cứ như vậy . Nếu không tìm thấy phần khởi động nó sẽ ra bảng thông báo
Đối với những máy tính đời cũ khi không tìm thấy phần khởi động chương trình trong BIOS dùng Ngắt 18h ( Int 18h ) để khởi động ROM BASIC
                  Vùng dữ liệu của BIOS trong bộ nhớ 
     Khi quá trình khởi động kết thúc , trong bộ nhớ từ vị trí 00400:0000 với kích thước 255 byte là vùng dữ liệu BIOS
Offset Hex
Offset Dec
BIOS Service
Kích thước
Function
00h
0
Int 14h
2 bytes
Base I/O address for serial port 1 (communications port 1 – COM 1)
02h
2
Int 14h
2 bytes
Base I/O address for serial port 2 (communications port 2 – COM 2)
04h
4
Int 14h
2 bytes
Base I/O address for serial port 3 (communications port 3 – COM 3)
06h
6
Int 14h
2 bytes
Base I/O address for serial port 4 (communications port 4 – COM 4)
08h
8
Int 17h
2 bytes
Base I/O address for parallel port 1 (printer port 1 – LPT 1)
0Ah
10
Int 17h
2 bytes
Base I/O address for parallel port 2 (printer port 2 – LPT 2)
0Ch
12
Int 17h
2 bytes
Base I/O address for parallel port 3 (printer port 3 – LPT 3)
0Eh
14
POST
2 bytes
Base I/O address for parallel port 4 (printer port 4 – LPT 4) (Only found in PC/XT systems)
10h
16
Int 11h
2 bytes
Equipment Word
12h
18
POST
1 byte
Interrupt flag – Manufacturing test
13h
19
Int 12h
2 bytes
Memory size in Kb
15h
21
2 bytes
Error codes for AT+; Adapter memory size for PC and XT
17h
22
Int 16h
1 byte
Keyboard shift flags 1
18h
23
Int 16h
1 byte
Keyboard shift flags 2
19h
24
Int 09h
1 byte
Alt Numpad work area
1Ah
26
Int 16h
2 bytes
Pointer to the address of the next character in the keyboard buffer
1Ch
28
Int 16h
2 bytes
Pointer to the address of the last character in he keyboard buffer
1Eh
60
Int 16h
32 bytes
Keyboard buffer
3Eh
61
Int 13h
1 byte
Floppy disk drive calibration status
3Fh
62
Int 13h
1 byte
Floppy disk drive motor status
40h
63
Int 13h
1 byte
Floppy disk drive motor time-out
41h
64
Int 13h
1 byte
Floppy disk drive status
42h
65
Int 13h
1 byte
Hard disk and floppy controller status register 0
43h
66
Int 13h
1 byte
Floppy drive controller status register 1
44h
67
Int 13h
1 byte
Floppy drive controller status register 2
45h
68
Int 13h
1 byte
Floppy disk controller: cylinder number
46h
69
Int 13h
1 byte
Floppy disk controller: head number
47h
70
Int 13h
1 byte
Floppy disk controller: sector number
48h
71
1 byte
Floppy disk controller: number of byte written
49h
72
Int 10h
1 byte
Active video mode setting
4Ah
74
Int 10h
2 bytes
Number of textcolumns per row for the active video mode
4Ch
76
Int 10h
2 bytes
Size of active video in page bytes
4Eh
78
Int 10h
2 bytes
Offset address of the active video page relative to the start of video RAM
50h
80
Int 10h
2 bytes
Cursor position for video page 0
52h
82
Int 10h
2 bytes
Cursor position for video page 1
54h
84
Int 10h
2 bytes
Cursor position for video page 2
56h
86
Int 10h
2 bytes
Cursor position for video page 3
58h
88
Int 10h
2 bytes
Cursor position for video page 4
5Ah
90
Int 10h
2 bytes
Cursor position for video page 5
5Ch
92
Int 10h
2 bytes
Cursor position for video page 6
5Eh
94
Int 10h
2 bytes
Cursor position for video page 7
60h
96
Int 10h
2 bytes
Cursor shape
62h
97
Int 10h
1 byte
Active video page
63h
99
Int 10h
2 bytes
I/O port address for the video display adapter
65h
100
Int 10h
1 byte
Video display adapter internal mode register
66h
101
Int 10h
1 byte
Color palette
67h
103
2 bytes
Adapter ROM offset address
69h
106
2 bytes
Adapter ROM segment address
6Bh
107
1 byte
Last interrupt (not PC)
6Ch
111
Int 1Ah
4 bytes
Counter for Interrupt 1Ah
70c
112
Int 1Ah
1 byte
Timer 24 hour flag
71h
113
Int 16h
1 byte
Keyboard Ctrl-Break flag
72h
115
POST
2 bytes
Soft reset flag
74h
116
Int 13h
1 byte
Status of last hard disk operation
75h
117
Int 13h
1 byte
Number of hard disk drives
76h
118
Int 13h
1 byte
Hard disk control byte
77h
119
Int 13h
1 byte
Offset address of hard disk I/O port (XT)
78h
120
Int 17h
1 byte
Parallel port 1 timeout
79h
121
Int 17h
1 byte
Parallel port 2 timeout
7Ah
122
Int 17h
1 byte
Parallel port 3 timeout
7Bh
123
1 byte
Parallel port 4 timeout (PC, XT) support for virtual DMA services (VDS)
7Ch
124
Int 14h
1 byte
Serial port 1 timeout
7Dh
125
Int 14h
1 byte
Serial port 2 timeout
7Eh
126
Int 14h
1 byte
Serial port 3 timeout
7Fh
127
Int 14h
1 byte
Serial port 4 timeout
80h
129
Int 16h
2 bytes
Starting address of keyboard buffer
82h
131
Int 16h
2 bytes
Ending address of keyboard buffer
84h
132
Int 10h
1 byte
Number of video rows (minus 1)
85h
134
Int 10h
2 bytes
Number of scan lines per character
87h
135
Int 10h
1 byte
Video display adapter options
88h
136
Int 10h
1 byte
Video display adapter switches
89h
137
Int 10h
1 byte
VGA video flags 1
8Ah
138
Int 10h
1 byte
VGA video flags 2
8Bh
139
Int 13h
1 byte
Floppy disk configuration data
8Ch
140
Int 13h
1 byte
Hard disk drive controller status
8Dh
141
Int 13h
1 byte
Hard disk drive error
8Eh
142
Int 13h
1 byte
Hard disk drive task complete flag
8Fh
143
Int 13h
1 byte
Floppy disk drive information
90h
144
Int 13h
1 byte
Diskette 0 media state
91h
145
Int 13h
1 byte
Diskette 1 media state
92h
146
Int 13h
1 byte
Diskette 0 operational starting state
93h
147
Int 13h
1 byte
Diskette 1 operational starting status
94h
148
Int 13h
1 byte
Diskette 0 current cylinder
95h
149
Int 13h
1 byte
Diskette 1 current cylinder
96h
150
Int 16h
1 byte
Keyboard status flags 3
97h
151
Int 16h
1 byte
Keyboard status flags 4
98h
155
4 bytes
Segment:Offset address of user wait flag pointer
9Ch
159
4 bytes
User wait count
A0h
160
1 byte
User wait flag
A1h
167
7 bytes
Local area network (LAN) bytes
A8h
171
4 bytes
Segment:Offset address of video parameter control block
ACh
239
68 bytes
Reserved
F0h
255
16 bytes
Intra-applications communications area
 
      Làm thế nào để BIOS nhận ra Driver của các thiết bị cắm thêm vào 
Mỗi một thiết bị vào có một dãy địa chỉ được định sẵn nên phần mềm trong BIOS trong quá trình kiểm tra hệ thống sẽ quét qua toàn bộ những nội dung trong các dùng địa chỉ dành riêng . Tại đâu nó tìm thấy ô nhớ có giá trị là 55 AA  , theo ví dụ dưới đây
2B6F:0100 55 AA 10 EB 03 E9 2A 08-E9 7F 00 28 43 29 20 43 U…..*….(C) C
2B6F:0110 6F 70 79 72 69 67 68 74-20 31 39 38 34 20 57 65 opyright 1984 We
2B6F:0120 73 74 65 72 6E 20 44 69-67 69 74 61 6C 20 43 6F stern Digital Co
2B6F:0130 72 70 6F 72 61 74 69 6F-6E CF 02 25 02 08 2A FF rporation..%..*.
2B6F:0140 50 F6 19 04 64 02 04 65-02 65 02 0B 05 64 02 00 P…d..e.e…d..
2B6F:0150 00 00 00 00 64 02 02 80-00 80 00 0B 05 64 02 00 ….d……..d..
2B6F:0160 00 00 00 00 64 02 04 65-02 80 00 0B 05 64 02 00 ….d..e…..d..
2B6F:0170 00 00 00 00 32 01 04 32-01 00 00 0B 05 32 01 00 ….2..2…..2..
nó đọc tiếp giá trị ô nhớ tiếp theo sau 55 AA là 10 nó sẽ dùng phép toán Checksum để kiểm tra 10h khối dữ liệu , mỗi khối là 512byte – theo ví dụ trên tổng cộng là 8KB ( tương đương với EPROM 2764 ) sẽ được kiểm tra Checksum . Nếu giá trị của Checksum có kết quả của 02 byte sau là 00 thì BIOS hiểu vùng đó chính là chứa Driver của thiết bị cắm thêm vào , ví dụ : giá trị là EA00h . Và chương trình Driver sẽ bắt đầu chứa mã lệnh từ EB trở đi , theo ví dụ trên .
Bài viết liên quan
ĐẶT LỊCH
MIỄN PHÍ
HOTLINE
09 241 242 43
ĐẶT LỊCH
MIỄN PHÍ
HOTLINE
09 241 242 43