הבלוג של ארתיום
בלוג על לינוקס, תוכנה חופשית, מוזיקה, סלסה, ומה לא!
מאמרים בנושא תכנה ומחשבים.
כמה התכנה שוקלת או ניהול זכרון
בעקבות המאמר של עידו על גודל של קובץ ריצה בפסקל ראיתי שיש מספר אי הבנות בנושא בכמה זיכרון התכנה משתמשת?
כיצד קבצי־ריצה וספריות נטענות?
כל תכנה או ספריה נטענת לזיכרון ע"י קריאה לפונקצית מערכת mmap (או פונקציות במערכות אחרות). מדוע mmap ולא קריאה לפונקציה כמו read? הסיבה היא פשוטה. נקח לדוגמה bash. אחת התכנות ה"נטענות" ביותר בלינוקס. כשאני קורא לפונקציה mmap על קובץ הריצה של bash בפעם הראשונה, המערכת מקצה דפי זיכרון וטוענת את הקובץ אליהן, אבל כש־mmap נקראת בפעם השנייה, דפי־הזיכרון שהתכנה מקבלת הם בדיוק אותם דפים פיזיים שהיו לפני. לכן, גם אם יש לי 10 תכנות של bash רצות במקביל, בפועל, היא תיטען רק פעם אחת (ליתר דיוק, רק קוד הריצה שלה ייטען פעם אחת).
אותו דבר קורא לספריות. כשתכנה א' טוענת ספריית gtk ותכנה ב' טוענת את הספרייה, הקוד נשאר משותף רק הנתונים הם שונים.
אז בואו נראה לדוגמה טבלה: מערכת בה רצות 3 תכנות: 2 bash ו־1 calc. נסתכל ככמה כל אחת משתמשת וכמה השימוש קיים בפועל.
זיכרון וירטואלי
Process Data Code Libraries Sum
----------------------------------------------
bash 1 1K, /bin/bash 10K, /lib/libc 10k 21k
bash 2 1K, /bin/bash 10K, /lib/libc 10K 21k
calc 1 1K, /bin/calc 5K, /lib/libc 10K 16k
----------------------------------------------
Seems to be 57K
זיכרון פיזי
Real Memory
---------------
/bin/bash 10K
/bin/calc 5K
/lib/libc 10K
data1 1K
data2 1K
data3 1K
--------------
overall 28K
לכן, הוצאה של כל קוד משותף לספריות דינמיות זאת פעולה שבסופו של דבר חוסכת זיכרון. למשל, כל יישומי KDE בסופו של דבר יטענו עותק יחיד של kdelib ועותק יחיד של qt.
עכשיו קצת פרטים טכניים למי שמעוניין.
המשך...אוגוסט פינגווין 2008, או "אני לא גיק!"
קודם כל, רציתי להודות לקהילה על הכבוד להיות מועמד לפרס המקור. אני חושב שזה אחד הפרגונים הגדולים שהקהילה יכולה לתת. תודה רבה ומזל טוב למאיר שקיבל את הפרס --- מגיע לך ובגדול.
אירועים מעניינים בכנס
מבחינתי שתי ההרצאות בכנס היו המעניינות ביותר (לפחות מאלה שראיתי, אני עדיין מצפה להקלטות של הרצאות שלא נוכחתי בהן)
הרצאה של אמיר שבט מ־Microsoft
ההרצאה התחילה בצורה מאוד חביבה ואפילו מצחיקה המנסה לקרב בין קהילת התכנה החופשית לבין MS. ביניהם צוטט הדיון המפורסם מווטסאפ פעמים רבות. ההתחלה הייתה מוצלחת.
המשך...על מערכת ה־Cache של CppCMS.
אחד המרכיבים המשפיעים על ביצועים של תשתית לפיתוח אתרים היא מערכת ה־Cache. המערכת שיושמה ב־CppCMS כוללת מגוון אופציות ניהול מתקדמות, שלא זמינות בחלק מתשתיות פיתוח אתרים נפוצות כמו Django:
- מערכת טריגרים לרענון ה־Cache.
- ניהול תלויות (כמעט) אוטומטי שמקל על ניהול מידע קונסיסטנטי.
לקריאה נוספת: מערכת Cache: מבנה פנימי (אנגלית)
על קצב התקדמות תכנה חופשית
כשחיפשתי בווטסאפ אחת מהודעות ישנות שלי נתקלי בקטע הבא שכתבתי לפני כשנה וחצי 19/01/07:
יש רשימה ענקית של באגים שקשורים לעברית שקיימים:
- בכמה דפדפנים/מעבדי תמלילים אפשר לראות ניקוד כמו שהוא צריך להיות?
- מתי לא יהיו בעיות בכיווניות ב-Gaim.
- מתי יהיה אפשר לשלוח קבצים ב-ICQ ב-gaim
- מתי יהיה מעבד תמלילים קל שתומך בעברית ראוי לשמו (או מתי AbiWord ועברית יתיידדו).
- מתי עורכי ASCII של KDE יכירו בעברית (kate, quanta ועוד).
- מתי מקשי קיצור בעברית יעבדו בשועל
- מתי רוב נגני וידיאו שיתמכו בכתוביות בעברית - מהקופסה (כולל כיווניות וקידודים)
קיצור - אפשר לדבר המון - אבל מה שחסר זה מעשה...
מה השתנה מאז:
- בכמה דפדפנים/מעבדי תמלילים אפשר לראות ניקוד כמו שהוא צריך להיות? --- עם שחרור culmus-1.0.2 שמכיל גופן David TrueType סוף סוף אפשר לעבוד עם עברית וניקוד ב־OO, גם תמיכה בניקוד השתפרה פלאים ב־AbiWord 2.6
- מתי לא יהיו בעיות בכיווניות ב-Gaim. --- הנה טלאי שכתב שלומי שאמור לפתור את הבעיה!
- מתי יהיה מעבד תמלילים קל שתומך בעברית ראוי לשמו (או מתי AbiWord ועברית יתיידדו). --- בבדיקה של הגרסה האחרונה של abiword יש שיפורים משמעותיים:
- מתי עורכי ASCII של KDE יכירו בעברית (kate, quanta ועוד). --- דיאגו דואג לזה ב־KDE4!
- מתי מקשי קיצור בעברית יעבדו בשועל? --- ב־Firefox 3 זה כבר עובד!
מכאן: 5 מתוך 7 נושאים נפתרו או קרובים להיפתר...
בקיצור... מישהו דיבר על קצב התקדמות של תכנה חופשית?
תכנה חופשית וקוד פתוח למתחילים
אחרי שנבחרתי למועמד פרס המקור, הייתי צריך להסביר לבת־הזוג ולהורים שלי על מה, בעצם, אני "מבזבז" את הזמן שלי, או במילים אחרות להסביר מה זה "תכנה חופשית".
לצערי, גיליתי שלהסביר במה אני מתעסק, זה הרבה יותר קשה מלכתוב אלפי שורות קוד, לדבג אותן ולשכנע אנשים להשתמש במה שכתבתי. למרות שההורים שלי משתמשים בלינוקס ביום־יום, למרות שאבא שלי עובד עם Emacs, LaTex ו־g77 עוד מתקופה שאני בכלל לא ידעתי מה זה UNIX, התגובה שקיבלתי על הסברים הייתה: "בקיצור תכנה חינמית" או כדברי אבא שלי: "халява" (לא מצאתי תרגום מדויק). כמובן, שזה רחוק מהמסר שרציתי להעביר ונפלתי לאותה מלכודת תדמיתית של "חלונות לעניים" שנתקלתי בה בעבר.
גם בשביל בת־זוגי, שאומנם משתמשת בלינוקס מידי פעם, מבינה את הרעיון הכללי ואפילו באה איתי לכנס :-)
, רציתי למצוא מאמר רקע טוב בנושא.
לכן, חיפשתי מאמר בעברית או באנגלית, לא ארוך במיוחד, בשפה פשוטה ולא טכנית שיסביר את הנושא של התכנה החופשית והקוד הפתוח בצורה יפה, לא קיצונית, מנומקת היטב, ללא הרבה אידאולוגיה אבל גם בלי לפספס אותה. ביניהם חשובים לי מספר דגשים:
- תכנה חופשית רעיון כללי: חופשים שלך.
- תכנה חופשית זאת לא רק תכנה, אלא הרבה מעבר: תכנים חופשיים, תקנים, שיתוף פעולה ועוד.
- מדוע התכנה חופשית טובה למשתמש.
- תכנה חופשית לא בהכרח חינמית, במילים אחרות: מפתחי תכנה חופשית אינם חבורה של אלטרואיסטים שעובדים למען האנושות כולה.