האם לינוקס מותאמת טוב יותר למעבדים?

alexii86

New member
האם לינוקס מותאמת טוב יותר למעבדים?

רציתי לדון איתכם בנושא שמאוד מעניין אותי,האם לינוקס עובדת טוב יותר עם המעבד מאשר חלונות? בזמן ביצוע פעולות זהות האחת בחלונות והאחת בלינוקס,האם המעבדים יעבדו אותו דבר או שבלינוקס יהיה יותר מהיר או להפך? ידוע ש win2000 חוסכת יותר חשמל מאשר win98 האם גם בלינוקס ישנו חסכון בחשמל שנובע מפחות חישובים?(עבודה של המעבד)? ובכלל,האם לינוקס מתאימה יותר למעבדים של INTEL או AMD? מספר הערות..: חשוב לי שהדיון הזה יתפתח,אני רוצה למצוא תשובות מוכחות לכל השאלות...מעניין אותי לדעת
תודה מראש לכל עונה,ואל תחסכו במילים :)
 

alexrait1

New member
מה שבטוח

הוא שלינוקס לא עושה את כל מה שהחומרה (מעבד) מציעה לה. זאת כנראה על מנת לתמוך בפלטפורמות רבות ככל האפשר. למשל, השימוש בשני חוגים בלבד kernel ring ו user ring.
 

alexii86

New member
מוכן להסביר לי את עניין החוגים האלה

תודה מראש..
 
מה הקשר בין החוגים לבין המעבד???

החוגים הם שני תורים שונים של הליכים הממתינים ל"זמן מעבד". השיטה של תור נפרד עבור kernel ו-user מאפשר להבטיח שהליכי ליבה בעלי עדיפות נמוכה עדיין יקבלו זמן מעבד בלי תלות בהליכי משתמש. מה הקשר בין התורים הנ"ל לבין יכולות המעבד???
 

הראל

New member
גם אני רוצה לדעת מה הם ה"חוגים" ?

נשאלה שאלה, ואף אחד לא עונה ... אז, נו ???
 
תשובה גסה

כדי לאפשר רבוי משימות על מעבד יחיד, מערכת ההפעלה מקיימת "תור" מעגלי של הליכים הממתינים לזמן מעבד. התור הפשוט ביותר ממומש בלוגיקה הבאה - לכל הליך בתור מוקצב פלח זמן שבסיומו התור עובר להליך הבא. לשיטה זו מספר חסרונות, שאחד מהם (לא היחיד) הוא שהליכים בעדיפות גבוהה מקבלים אותו זמן מעבד כמו הליכים בעדיפות נמוכה. אחד הפתרונות - לנהל מספר תורים. נניח תור להליכי ליבה, ותור להליכי משתמשים מקומיים. אפשר לקבוע שכל מספר הליכים בתור החשוב, יקבל הליך אחד בתור הפחות חשוב זמן, או שפרוסת הזמן שמקבל הליך מהתור החשוב ארוכה יותר, ועוד. בלינוקס יש שני תורים (חוגים) של הליכים - הליכי מערכת (או ליבה) והליכי משתמש.
 

alexrait1

New member
התבלבלת קצת

מה שאתה מדבר עליו הוא בערך ה round robin שזאת שיטת זימון תהליכים. החוגים של המעבד זה משהו אחר. המעבד מאפשר לשלוט עליו בכמה רמות כאשר העליונה היא user-mode והתחתונה והכי חזקה היא ה kernel-mode. מערכת ההפעלה פועלת ב kernel-mode ומקבלת גישה למשל לכל ההתקנים בעוד שבuser-mode אי אפשר לעשות זאת. בין שתי הרמות האלו יש עוד 3 נדמה לי שלא משתמשים בהן מכיוון שהן לא קיימות במעבדים אחרים. דבר נוסף אין דבר כזה תהליך (או הליך, איך שאתה קורא לו) מערכת. תהליכים קיימים רק אצל משתמשים, אצל המערכת לעומת זאת יש data path. מסלול הפעולה הזה של המערכת מתרחש בכל זמן שמערכת ההפעלה פועלת ממש, למשל בעת פסיקה, כאשר הפעולות מתרחשות בהקשר של התהליך הנוכחי שרץ (תהליך המשתמש). פסיקה עם עדיפות גבוה יותר גורמת להקודמת לחכות בעוד שהיא פועלת. לכל תהליך יש חוטים - כמו תהליכים אבל בלי משאבים משל עצמם (בערך, יקח זמן להסביר הכל). יש חוטי גרעין - חוטים שהמערכת מנהלת ויש חוטי משתמש המנוהלים על ידי המשתמש. למה ציינתי את החוגים של מעבד? אני לא בטוח אבל אולי windows שנקבעה לרוץ על חומרה יותר מצומצמת משתמשת ביותר תכונות של החומרה מאשר לינוקס. זאת רק השערה.
 
נראה כי אכן התבלבלתי

ואני מצטרף לבקשה של השאר להסבר נוסף וברור אודות החוגים הללו (לא זכור לי שלמדתי אודותיהם או נתקלתי בהסברים בנושא).
 

ezaton

New member
זאת שאלה מאוד בעייתית

כלומר, איך תוכיח? מה יכול לספור לך פעולות עיבוד של המעבד? אתה יכול לטעון שניתן לכתוב תוכנה שמודדת, אבל: א. בדומה לעיקרון אי-הודאות של אייזנברג, התוכנה שלך תצרוך משאבים, ולכן תטה את המדידות בערך בלתי ידוע ב. בהמשך לטענה הקודמת, התוכנה חייבת תהיה לרוץ מעל מערכת ההפעלה, ולכן אם מערכת אחת מבצעת פעולות מסויימות באופן יעיל יותר מבחינת מחזורי שעון, אבל פעולה אחרת באופן פחות יעיל, הרי ששינוי המדידה עלולה להיות לא אחידה בין שתי המערכות, ובמה יועילו חכמים בתקנתם? אגב, חלונות 2000 לא חוסכת חשמל מול 98 בגלל שהיא יעילה יותר ומצליחה לבצע את אותן הפעולות בפחות מחזורי שעון, אלא בגלל שהיא יודעת לנצל תכונה של מעבדי לפטופים (שגם קיימת בכמה מעבדי דסקטופים, אבל דיי נדירה) שמאפשרת למעבד לשנות את קצב עבודתו בתלות בעומס עליו בכל זמן נתון. אם הוא מקבל חמש שניות שקט (לשם המטאפורה, יותר מאשר מצב ממשי) הוא יורד ממש, אבל אם המערכת נחה, או מיעלת פעולות שונות לכדי קבוצות (סתם הנפצה שלי, אבל לשם הדיון), אזי בפרקי הזמן שבין "קבוצה" ל"קבוצה", המעבד יכול להוריד את מהירותו ולחסוך חשמל. קיימת תלות גדולה בתוכנות עצמן - תוכנות עוברות הידור לקוד מכונה. מערכת ההפעלה אחראית על הקצאת משאבים (זיכרון וזמן מעבד) עבורן, אבל במרחב הזיכרון שלהן, הן עושות כרצונן, פחות או יותר (אם כי קיים ניהול הזיכרון של מערכת ההפעלה). לכן, תיאורטית, תוכנה זהה על פלטפורמות שונות אמורה לתת ביצועים זהים. מכיוון שנדיר מאוד למצוא תוכנה זהה לחלוטין בין שתי מערכות (ואין לך גרנולאריות מספקת כדי לבדוק את hello world), אזי אתה תלוי למעשה בהמון משתנים - קצב הפניה להתקני ה I/O, ניהול זיכרון וזיכרון וירטואלי, קצבי גישה לזיכרון הוירטואלי (שמושפע באופן מוחלט ממהירות הדיסק), יעילות דרייברים להתקני ה- I/O השונים, שאיתם המערכת מדברת, ועוד מספיק גורמים שמשאירים אותך מאוד באוויר. יתכן וניתן לציין יתרון אפשרי של מערכת לינוקס על פני חלונות מבחינת יעילות מעבד - מכיוון שלינוקס הוא קוד פתוח, אתה יכול להדר את התוכנות בהן תשתמש (כמו גם את הקרנל עצמו) כך שיהיו מותאמים לארכיטקטורות מתקדמות יותר מ 386 או מפנטיום1. חלונות באה בגירסה יחידה, מיועלת לארכיטקטורה יחידה (אני מניח שהיום זה פנטיום1), ולכן לא מנצלת כל מיני יכולות קיימות של המעבד, או בניה יעילה יותר של קוד המכונה עבור סוג המעבד. מדובר בכך שקיימים הבדלים, אבל הם דיי זעירים, למעט מקרי קצה. אני לא חושב שניתן להסתמך על זה. לו יכולת להביא שתי מערכות - חלונות ולינוקס, למצב בו הן תרצנה בדיוק את אותו הדבר, מא. ועד ת., הרי שהיית מקבל סביבת בדיקה ריאלית, ויכול לאתר את הגורם המהותי בהבדלי הביצועים (אם קיימים) ביניהן. מכיוון שאתה לא יכול לעשות דבר כזה, אתה, בלית ברירה, נשאר עם הנחות. חלקן ריאליות, חלקן פחות. אין לך מושג מה ביצועי הפניה לזיכרון, הפניה לדיסק, להתקני ה- I/O, שיוצרים הבדלים כל כך מהותיים בביצועי מחשבים. אזי, אין לך מושג אם לינוקס או חלונות עובדת טוב יותר מול הרכיב היחיד שנקרא "מעבד", כמו גם מידע חלקי לגבי יכולתן מול כל המכלול שנקרא "מחשב". אני לא הולך להוכיח דבר, כי אין לי כח לחפש. אם אתה רוצה מידע מקצועי יותר, אני בטוח שגוגל יוכלו לסייע לך.
 

alexii86

New member
W0W אחלה תשובה..

אבל לא ענית על השאלה המרכזית,האם הקרנל של לינוקס מותאם טוב יותר לעבודה עם המעבד? כלומר מנצל את כל היכולות שלו? ומה יותר מתאים AMD או INTEL תודה מראש..
 

OriIdan

New member
יכול להיות מותאם

קרנל סטנדרטי שבא עם ההפצה בדרך כלל לא ינצל את היכולות של המעבד במלואן מאחר והוא אמור לעבוד עם כל המעבדים. אבל כאשר אתה מקמפל קרנל בעצמך אתה יכול לבקש ממנו להתאים למעבד הספציפי שלך ואז הוא כן ינצל אותן. מה שיצא הוא קרנל שבדרך כלל ירוץ יותר מהר אבל... לא יעבוד על מחשב אחר. שוב, מיתרונות החופש, הכל אפשרי.
 

alexii86

New member
תהליך הקימפול של הקרנל מסובך?

עד כמה זה קשה לקמפל קרנל שיתואם למעבד שלי? והאם הוא מתאים את זה עצמו לבד,או שצריך לשבת ולהגדיר לו דבר אחר דבר..? תודה מראש
 

Apollyon

New member
לא כל כך מסובך

סך הכל מגדירים כמה דברים ומריצים מחדש את המערכת, אבל מומלץ לדעת מה עושים.
 

alexii86

New member
איפה אוכל למצוא מידע בנושא?

לא חשוב אנגלית/עברית.. תודה מראש
 

OriIdan

New member
בקוד המקור של הקרנל עצמו

תוריד את קוד המקור של הקרנל, הוא מתועד לא רע בכלל מעבר לזה, כל דבר שתצטרך פשוט תשאל את גוגל... זה לא כל כך טריוואילי למתחילים אבל זה שיעור טוב מאד.
 

alexii86

New member
אוקיי..מהאתר הבא נכון?

www.karnel.org להוריד גירסא סופית או שיש בטא? או טסט וכאלה? תודה מראש..
 

Apollyon

New member
תוריד את ה2.6 האחרונה

גרסאות פיתוח הן בעלות מספר אי זוגי (לפי מה שאני זוכר).
 

Koala Kid

New member
לא רוצה להישמע מתנשא (ואני לא)

אבל לפי השאלות ששאלת מקודם (לא רק בשירשור הזה, אלא בכלל בפורום), לדעתי אתה עוד לא בשלב של לקמפל קרנל משלך. בכל זאת, זה דורש קצת ידע והבנה (לא יותר מדי). מה שאתה רוצה לעשות - זאת דרך לצרות וכאב ראש לא נורמלי במידה ואתה לא מודע למה שאתה עושה. תלמד את המערכת, את מה שהיא יכולה לתת לך, את הכלים שלה (שאתה לא מכיר). נ.ב.: אגב, לפי מה שאני מבין, לפדורה יש כלים מסויימים להתקנת קרנל חדש, משהו שלא מחייב הורדת קוד מקור מ-kernel.org נ.ב 2: תשתדל להימנע בכל זאת מפתיחת שירשורים מיותרים.
 
אם תוכל לענות בכנות ...

מה הרגשתך לאחר לחיצה על make? אתה ממשיך לבהות במסך? או הולך להכין קפה למשל?
 

ezaton

New member
בפעם האחרונה שבדקתי

אני אישית לא לוחץ על make, אלא מקליד אותו. אני לוחץ על enter כדי שהוא יתחיל לרוץ. בשלב הזה אני הולך לעשות דברים אחרים, בין אם במחשב או מעולם האמיתי.
 
למעלה