ג'ונתן בלו עיצב את המשחק כמעין ביקורת אישית כלפי טרנדים הקיימים בקרב מפתחי משחקים. השלמת הפרויקט ארכה כשלוש שנים והוא מומן מכספו הפרטי של בלו. האנימטור בהתחלה היה אדמונד מקמילן אך הוא הוחלף על ידי דייוויד הלמן, האנימציה עברה שינויים לא מעטים עד שהייתה לשביעות רצונו של בלו, ותאמה את חזונו. גרסה ראשונית של המשחק, ללא האנימציה המלוטשת, זכתה בפרס "העיצוב החדשני" בפסטיבל המשחקים העצמאיים בשנת 2006. המוצר המוגמר זכה בפרסים נוספים ובביקורות חיוביות, ועם הזמן קיבל את הדירוג הגבוה ביותר באתר Xbox Live. יחד עם זאת, נשמעו טענות באשר לאורכו של המשחק ולמחירו.
מהלך המשחק.
המשחק מתרחש בסביבת פלטפורמה טיפוסית המזכירה את "האחים סופר מריו", והוא מורכב משלבים שלצורך פתירתם נדרשות קואורדינציה ומחשבה. השחקן שולט בגיבור, טים, וביכולתו לרוץ, לקפוץ ולטפס על סולמות תוך הימנעות ממגע עם אויבים. טים יכול לקפוץ על ראשם של האויבים ובכך להביסם, וכמו כן לאסוף מפתחות על מנת לפתוח דלתות ולהפעיל מנגנונים להזזת משטחים. אחד המאפיינים המרכזיים במשחק הוא היכולת להריץ את הזמן לאחור בכל רגע נתון וללא הגבלה, גם במקרה בו פעולת השחקן גרמה למותו של הגיבור.
במשחק ישנם שישה עולמות, אליהם נכנס השחקן מתוך ביתו של טים. בכל עולם מוצג אפקט חדש המתבסס על עיקרון השליטה בזמן:
בכל שלב מצויים חלקי פאזל במקומות שונים, אותם על השחקן לאסוף על מנת להרכיב תמונה. לכל עולם תמונה משלו, אשר השלמתה מסייעת לספר את הסיפור וכמו כן מאפשרת את פתיחת העולם האחרון.
המשחק אף כולל מחוות ספורות למשחקים שונים מאותו הז'אנר. באחד העולמות ישנו שלב שעוצב בהשראת המשחק "דונקי קונג", ובסיום רוב העולמות מופיע יצור המבשר לטים כי "הנסיכה נמצאת בארמון אחר", משפט המסיים את העולמות גם ב– "האחים סופר מריו".
עלילה.
במרכז הסיפור עומד אדם בשם טים, המבקש להציל נסיכה אשר "נחטפה בידי מפלצת איומה ומרושעת". יחסיו של טים עם הנסיכה מעורפלים, והדבר הברור היחיד הוא שטים עשה טעות כלשהי עליה הוא מבקש לכפר או, אם ניתן, למחוק. במסך הפתיחה של כל אחד מן העולמות מוצג בפני השחקן טקסט השופך עוד אור על מסעו של טים, וכולל תיאורים רגשיים והגיגים פילוסופיים בנושאים כמו סלחנות, חרטה, תשוקה ותסכול.
ביקורת.
עם שחרור המשחק לשירות "Live Arcade" של Xbox, הוא צבר ביקורות חיוביות במיוחד ועמד על ציון ממוצע של 93 באתר MetaCritic. הוא הפך למשחק בעל הדירוג הגבוה ביותר באתר Xbox Live, ונרכש על ידי למעלה מ– 55,000 איש בשבוע הראשון. ג'ונתן בלו ציין כי הרווחים היו גדולים ביותר, וכי הרוויח יותר כסף מאשר לו היה עובד במשרה יוקרתית במשך כל תקופת העבודה על המשחק.
הביקורת השלילית העיקרית שקיבל המשחק קשורה לאורכו הקצר. הילרי גולדשטיין מאתר המשחקים IGN ציינה כי המשחק "לא נותן סיבה לחזור אליו" לאחר השלמת כל השלבים. בנוסף, גם מחירו של המשחק עורר טענות לא מעטות, אולם היו מבקרים רבים שציינו כי הוא "שווה כל גרוש". חלק מן הביקורות ציינו כי נסיונותיו של בלו לשלב בין הסיפור לבין המשחק צלחו אך ורק בעולם האחרון, וכי עד אז הסיפור משעמם ומעורפל יתר על המידה.
גרסת ה– PC של המשחק נתפסה כנאמנה למקור, ללא כל תוספות מיוחדות או שינויים מרחיקי לכת. מבקרים אף ציינו כי השליטה דרך המקלדת מוסיפה להנאה ממנו. המשחק הומר בהמשך ל-Playstation 3 ולמערכות ההפעלה Mac OSX ולינוקס
בנוסף לזכייה בפרס בפסטיבל המשחקים העצמאיים בשנת 2006, נבחר המשחק על ידי אתר Gamespot כמוביל בקטגוריות "משחק הקונסולה המקורי הטוב ביותר להורדה", "משחק הפלטפורמה הטוב ביותר" ו– "המוזיקה הטובה ביותר". המגזין הרשמי של Xbox בחר בו, בין השאר, בקטגוריות "הפסקול הטוב ביותר" ו– "הסוף הטוב ביותר".
המנון עיראק
השיר מולדתי (בערבית: موطني, בתעתיק לעברית: מָוְּטִנִי) הוא ההמנון הלאומי של עיראק. השיר נכתב על ידי המשורר הפלסטיני אבראהים טוקאן (إبراهيم طوقان) בשנת 1934 לערך, והולחן על ידי מוחמד פליפל (محمد فليفل). השיר הפך דה פקטו להמנון הלאומי של עיראק וכן להמנון העם הפלסטיני, ומאוחר יותר זוהה באופן בלתי-רשמי כהמנון גם בסוריה ובאלג'יר, לתמיכה בעם הפלסטיני. עם השנים צבר השיר פופולריות רבה בעולם הערבי.
ההמנון בתקופת סדאם חוסיין.
במהלך תקופת כהונתו של סדאם חוסיין כנשיא עיראק, בשנים 1979-2003, שימש השיר ארד אלפוראתיין (בערבית: أرض الفراتين, בתעתיק מדויק לעברית: ארצ' אלפראתין, בתרגום חופשי: "ארץ שני הנהרות") כהמנון הלאומי הרשמי של המדינה. השיר נכתב על ידי שפיק אל-כמאלי והולחן על ידי המלחין הלבנוני הנודע . לאחר שסדאם חוסיין איבד את השלטון במדינה, אומץ השיר "מולדתי" מחדש כהמנון הלאומי הרשמי של עיראק, על מנת להתנער מסמלי משטר הבעת' של חוסיין. עם זאת, ההמנון הישן עדיין נמצא בשימוש באופן בלתי-רשמי.
קטע קריטי
במחשבים, קטע קריטי הוא קטע בפעילותן של מערכות מקביליות, שבמהלכו הן משתמשות ללא תיאום במשאב משותף, באופן העלול לגרום לתוצאות לא רצויות.
במערכות הפעלה, התוצאות הלא רצויות יכולות להיווצר בזמן שמערכת ההפעלה שמריצה את קטעי הקוד מבצעות החלפת הקשר (באנגלית – Context switch) במהלך הרצת הקטע הקריטי או משום שהקטע הקריטי רץ במקביל לַגורם הנוסף (בעזרת עיבוד מקבילי או חישוב מבוזר). כיוון שהשליטה בתזמון בין הקטע הקריטי לגורם הנוסף, נעשית על ידי גורם שלישי – לרוב מערכת ההפעלה. נדרשים אמצעים כדי לוודא שהקוד יבצע את מטרתו.
מדען המחשב אדסחר דייקסטרה סקר את הנושא לראשונה במאמרו משנת 1965 – "פתרון בעיית השליטה בתכנות מקבילי".
דוגמה לקטע קריטי.
כדוגמה לקטע קריטי ניתן לקחת קטע מפעולתם של שני תהליכונים , שמשתמשים ללא תיאום במשתנה משותף . תהליכון ראשון יוסיף 1 למשתנה, ואחר יפחית ממנו אחד.
ניתן להציג את קטע פעולתם בפסאודו קוד, כך:
התוצאה שאנחנו מצפים לה היא שערך המשתנה ישאר כפי שהיה, מאחר שהוספת 1 והורדת 1 הן פעולות שמבטלות זו את זו, ומחזירות את המשתנה לערכו המקורי.
אולם, אם התהליכון השני ירוץ במהלך ריצת הראשון, ייתכן שהתוצאה תהיה שונה, כבדוגמת ההרצה הזאת:
כך, בניגוד למצופה, ערכו של המשתנה המשותף בסוף הרצת הקטע הקריטי קטן ב–1 מערכו המקורי.
פתרון בעיית הקטע הקריטי.
ישנם מספר גורמים שיש להקפיד עליהם כאשר ניגשים לפתרון בעיית הקטע הקריטי כדי לפתור את הבעיה ולא ליצור בעיות אחרות.
קיימים מספר פתרונות לבעיית הקטע הקריטי. חלקם משתמשים בכלים שמערכת ההפעלה מספקת (מנעול, סמפור וכדומה) וחלקם לא.
חסימת פסיקות.
במעבדים יש אפשרות לחסום את הפסיקות, מה שיכול לשמש לצורך מניעת החלפת הקשר באותו המעבד בקטע הקריטי. פעמים רבות משתמשים בחסימת פסיקות על מנת לייצר פעולה אטומית קטנה שתשמש כסמפור או לחסימת החלפת הקשר לוגית של מערכת ההפעלה.
האלגוריתם של פטרסון.
בשנת 1981 ניסח גארי פטרסון אלגוריתם לפתרון בעיית הקטע הקריטי עבור 2 תהליכים\תהליכונים. האלגוריתם משתמש בשני משתנים משותפים, flag ו־turn. ערך חיובי עבור מראה על כך שתהליך n מעוניין להיכנס לקטע הקריטי שלו. הכניסה לקטע הקריטי ניתנת לתהליך P0 אם תהליך P1 לא מעוניין להיכנס לקטע הקריטי שלו או אם P1 נתן קדימות לתהליך P0 על ידי השמת הערך 0 במשתנה turn.
האלגוריתם של פטרסון לא משתמש בכלים מיוחדים לפתרון בעיית הקטע הקריטי אלא עושה זאת באמצעים הרגילים שעומדים בפני המתכנת ובעזרתם הוא מתמודד עם כל הגורמים שדורשים טיפול:
האלגוריתם עובד בשיטה של המתנה פעילה (busy waiting) כלומר, כאשר הקטע הקריטי לא סיים לרוץ, כל זמן שלא הגיע תור התהליך השני להריץ את הקטע הקריטי הוא יהיה תקוע בלולאת ה־codice_2 וידרוש זמן מעבד. יש להזכיר גם שניתן ליישם רעיון דומה עבור N תהליכים.
פתרון באמצעות סמפור.
סֶמָפוֹר הוא מנגנון לסנכרון תהליכים, ומטרתו לפתור את בעיית הקטע הקריטי.
מנגנון הסנכרון נוצר בעזרת משתנה מונה או משתנה בינארי (בסמפור בינארי) ותור, שניתן לבצע עליהם את הפעולות codice_13 ו־codice_13 כאשר כל אחת מהם נעשית בצורה אטומית.
יישום סמפור מונה.
פעולת ה־wait (נקראת גם P), פועלת באופן הבא:
פעולת ה־signal (נקראת גם V),פועלת באופן הבא:
כדי שכל פעולה תתבצע באופן אטומי צריך שמערכת ההפעלה תתמוך בכך ולרוב היא מספקת את הסמפור.
שימוש בסמפור.
כאשר תהליך מכיל קטע קריטי ניתן למנוע גישה למשאב המשותף על ידי אתחול ערך הסמפור ל־1, ביצוע פעולת ה־wait לפני הקטע הקריטי ופעולת signal אחריו.
ניתן לראות שהשימוש בסמפור ממלא את שלושת התנאים:
בנוסף לשלושת התנאים האלו, השימוש בסמפור מונע "המתנה פעילה" כי הוא חוסם תהליכים שכרגע לא עובדים ומעיר אותם כשמגיע תורם.
קיפאון.
קיפאון (באנגלית: Deadlock) היא בעיה שיכולה להיווצר בגלל העיקרון של המניעה ההדדית. כאשר קיימים שני תהליכים שכל אחד מהם משתמש במשאב משותף שונה והם גם רוצים להשתמש במשאב שהשני מחזיק, אז נוצר מצב של קיפאון כלומר, אף תהליך לא יכול לבצע את מטרתו כי הראשון מחכה עד שהוא יקבל את המשאב שהשני משתמש בו כרגע. והשני לא יסיים להשתמש במשאב כי הוא צריך את המשאב שהראשון משתמש בו כדי לסיים לעשות את מטרתו.
סוגים שונים של קטע קריטי.
בעיית היצרן־צרכן.