BIOS làm việc như thế nào ?

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 .

 

\"alt\"