BIOS
מתוך ויקיפדיה, האנציקלופדיה החופשית
BIOS (ראשי תיבות של Basic Input-Output System) הוא תוכנה המשמשת לאתחול מחשבים, ולרוב צרובה ברכיב אלקטרוני במחשב.
ה-BIOS מכיל גם שגרות תוכנה אשר תומכות בקלט ובפלט של המחשב. ה-BIOS הוא התוכנה הראשונה שרצה עם הפעלת המחשב, והוא משמש ל:
- זיהוי התקני חומרה.
- קביעת הגדרות חומרה בסיסיות והפעלה או כיבוי של התקנים שונים.
- קביעת סדר סריקת התקני האחסון, כלומר באיזה התקן יחפש המחשב את מערכת ההפעלה (למשל דיסק קשיח או CD-ROM).
- בדיקה בסיסית של תקינות החומרה.
- טעינת רשימה של פונקציות לזיכרון הפנימי.
ישנם סוגי BIOS שונים עבור כל מחשב, והחברות השונות מפיצות לעתים גם עדכון לתוכנה של ה-BIOS. בדרך-כלל הכניסה להגדרות ה-BIOS מתבצעת על ידי לחיצה על מקש ייחודי עם הפעלת המחשב (לרוב DEL, לעתים F2 או F1).
תוכן עניינים |
[עריכה] התפתחות ה-BIOS
את ה-BIOS המציא גארי קילדל. הוא יצר BIOS בסיסי לאחר שחברת IMSAI ביקשה ממנו לשלב את מערכת ההפעלה שלו במערכת מחשב מבוססת בקר 8080. קילדל נתקל בקושי כשגילה כי מערכת הגישה לכונן שלהם הייתה שונה מזו שעבד עליה באינטל, כשפיתח את המערכת. במקום להתאים את פרוטוקול הגישה לכוננים במערכת שלו, עשה דבר שונה לגמרי, שתוצאתו מוטבעת עד היום בכל מחשב אישי: קילדל פירק את המערכת שלו לשלושה מודלים. את זה שטיפל בגישה לכונן, כינה "BIOS" ובו ביצע את כל העבודה מול הכוננים והפלט. רעיון זה הפיח רוח רעננה במפרשים מכיוון שמעתה ואילך לא היה צריך להתאים את מערכת CP/M במיוחד למחשב שהיא מצויה בו, אלא להשתמש בפרוטוקול ה-BIOS שכתבה כל חברה עבור המחשב שלה. כך שווקה CP/M ללא שום צורך בשינוי מצד החברה שרכשה אותה.
[עריכה] שגרות BIOS
כאשר המחשב מאותחל טוען שבב ה-BIOS רשימה של פונקציות לזיכרון הפנימי, אותן מפעילים כמו הפעלת כל פסיקה אחרת. שגרות BIOS הן כמו פונקציות בכל שפה אחרת, ומופעלות באמצעות פקודת INT בשפת אסמבלי. את הפרמטרים מעבירים באמצעות אוגרי המעבד.
ניתן לדרוס את פונקציות ה-BIOS בתוכנות שונות שנכתבות באסמבלי. כך לדוגמה, במקום שה-BIOS יטפל בקריאת הקשות המקלדת ויציג אותן על המסך, אפשר שתוכנה אחרת תטפל בהקשות מקלדת, ותרשום אותן בקובץ לפני הצגתן על המסך (keylogger).
כל פונקציית מעבד (INT) נמצאת בשני מקומות שונים בזיכרון. במקום הראשון היא תופסת שתי מילים שבהן הכתובת של המקום השני בזיכרון. במקום השני נמצאת קטע הקוד בשלמותו.
בתא זיכרון מספר 0000:0000-0000:0003 מופיע מקומה של פונקציית מעבד INT 0. וכך בתאים הבאים מופיעה הכתובת בזיכרון של הפונקציות הבאות.
[עריכה] דריסת פונקציות מעבד
כדי לדרוס פונקציה קיימת מכפילים את מספר הפונקציה ב-4 (כל פונקציה תופסת 4 בתים) ומפחיתים אחד (מכיוון שהתא הראשון הוא אפס). בתא שהתקבל רושמים את כתובת הזיכרון של הקוד שמעוניינים לבצע כאשר יפעילו פונקציה זו. בסוף הקוד רושמים את פקודת האסמבלי RETR לחזרה מפונקציה.
ניתן גם לדרוס פונקציה בשיטה שקופה, כך שמשתמש המחשב לא ירגיש שפקודת האסמבלי הוחלפה. לשם כך יש להפעיל את הפונקציה המקורית בסיום הקוד. לצורך זה לפני הדריסה יש לזכור את כתובת תא הזיכרון שבו נמצא הקוד המקורי של ה-BIOS, ובסיום הקוד, במקום פקודת RETR, רושמים פקודה קפיצה (JMP) לקוד המקורי.