לשם שינוי...
היי חבר'ה!
קיבלתי עבודת הגשה בקורס מערכות הפעלה...לומדים לכתוב קצת C תחת יוניקס (בתחלס משתמשים בלינוקס...) עם קצת system calls.
בכל מקרה, בעבודה הראשונה הייתי צריך לכתוב סימולטור של shell עם מערכת קבצים מדומה (כביכול היו מבנים של file ושל folder שיושבים בזיכרון בתוך מבנה נתונים)
הסתדרתי עם העבודה יופי, כמו עם שאר העבודות שהיו לי עד כה במהלך התואר.
העבודה החדשה שקיבלנו ביזארית, ואני מתקשה להבין איך בתחלס לתכנן את הדברים, מצד אחד אני מבין שמסובך זה לא, מצד שני...אני ממש רוצה לדעת מה הם עישנו כשכתבו את התרגיל.
התרגיל:
חברה המפתחת תוכנה עבור מרכזי מחקר קיבלה הצעה מ CERN. החברה התבקשה לבנות מערכת קבצים היכולה לעבד (לשמור ולטעון) כמות גדולה מאוד של אינפורמציה בכל רגע נתון. לשם כך החברה החליטה שלא תשמור את המערכת קבצים בדיסק (בשל האטיות) אלה תחזיק אותה בזיכרון (כמובן קיימים חסרונות גם בשיטה זו). אתם כמפתחי המערכת מתבקשים לממש אותה בצורה הבאה:
• כל תיקיה במערכת זו תיוצג על ידי תהליך. (????????????? איך הגעתם לרעיון הזה?!)
• כל קובץ במערכת זו תיוצג על ידי רשומה בתהליך מתאים (אין צורך להחזיק תוכן הקובץ אלה רק רשימה דינאמית של שמות הקבצים אשר נמצאים בתיקיה זו).
הערה: אסור להגביל את המערכת קבצים הן מבחינת כמות הקבצים וכן מבחינת כמות התיקיות (כלומר רשימות המחזיקות את הנתונים חייבים להיות דינאמיים ולהתאים את גודלם לכמות הנתונים) .
בנוסף לכך אתם צריכים לאפשר פעולות הבאות: mkdir, mkfile, cd, ls,rmdir, exit...
על ה shell להיות נוח למשתמש ו להראות את המסלול הנוכחי בעץ. כמו כן על מנת לבצע פעולה כלשהי במערכת קבצים נשלח הודעה מתאימה ב pipe אשר מחבר בין הרכיבים הנדרשים.
הערה: חובה לבדוק תקינות הקלט.
חובה לסיים את כל התהליכים בזמן סיום התוכנית.
אני לא מחפש פתרון ואני ממש לא מחפש שתכתבו קוד... אני רק רוצה שמישהו יתן לי כיוון של...איך בכלל להתייחס לדבר כזה? (או איך הם קיבלו רעיון של לייצג תיקיה כprocess?)
אני יודע איך עובד fork, אני למדתי איך עובדים pipes ואני חושב שמבחינת system calls זה כל מה שאני אזדקק לו פה.
השאלה איך לייצג את זה? איך לדאוג למעבר מידע? איך להשיג path לתיקייה נוכחית כשאין לי תקשורת דו כיוונית עם הprocesses?
מאוד קשה לי להתחיל לכתוב קוד מבלי לארגן בצורה כללית את העבודה בראש...
אשמח לכל כמה רעיונות
היי חבר'ה!
קיבלתי עבודת הגשה בקורס מערכות הפעלה...לומדים לכתוב קצת C תחת יוניקס (בתחלס משתמשים בלינוקס...) עם קצת system calls.
בכל מקרה, בעבודה הראשונה הייתי צריך לכתוב סימולטור של shell עם מערכת קבצים מדומה (כביכול היו מבנים של file ושל folder שיושבים בזיכרון בתוך מבנה נתונים)
הסתדרתי עם העבודה יופי, כמו עם שאר העבודות שהיו לי עד כה במהלך התואר.
העבודה החדשה שקיבלנו ביזארית, ואני מתקשה להבין איך בתחלס לתכנן את הדברים, מצד אחד אני מבין שמסובך זה לא, מצד שני...אני ממש רוצה לדעת מה הם עישנו כשכתבו את התרגיל.
התרגיל:
חברה המפתחת תוכנה עבור מרכזי מחקר קיבלה הצעה מ CERN. החברה התבקשה לבנות מערכת קבצים היכולה לעבד (לשמור ולטעון) כמות גדולה מאוד של אינפורמציה בכל רגע נתון. לשם כך החברה החליטה שלא תשמור את המערכת קבצים בדיסק (בשל האטיות) אלה תחזיק אותה בזיכרון (כמובן קיימים חסרונות גם בשיטה זו). אתם כמפתחי המערכת מתבקשים לממש אותה בצורה הבאה:
• כל תיקיה במערכת זו תיוצג על ידי תהליך. (????????????? איך הגעתם לרעיון הזה?!)
• כל קובץ במערכת זו תיוצג על ידי רשומה בתהליך מתאים (אין צורך להחזיק תוכן הקובץ אלה רק רשימה דינאמית של שמות הקבצים אשר נמצאים בתיקיה זו).
הערה: אסור להגביל את המערכת קבצים הן מבחינת כמות הקבצים וכן מבחינת כמות התיקיות (כלומר רשימות המחזיקות את הנתונים חייבים להיות דינאמיים ולהתאים את גודלם לכמות הנתונים) .
בנוסף לכך אתם צריכים לאפשר פעולות הבאות: mkdir, mkfile, cd, ls,rmdir, exit...
על ה shell להיות נוח למשתמש ו להראות את המסלול הנוכחי בעץ. כמו כן על מנת לבצע פעולה כלשהי במערכת קבצים נשלח הודעה מתאימה ב pipe אשר מחבר בין הרכיבים הנדרשים.
הערה: חובה לבדוק תקינות הקלט.
חובה לסיים את כל התהליכים בזמן סיום התוכנית.
אני לא מחפש פתרון ואני ממש לא מחפש שתכתבו קוד... אני רק רוצה שמישהו יתן לי כיוון של...איך בכלל להתייחס לדבר כזה? (או איך הם קיבלו רעיון של לייצג תיקיה כprocess?)
אני יודע איך עובד fork, אני למדתי איך עובדים pipes ואני חושב שמבחינת system calls זה כל מה שאני אזדקק לו פה.
השאלה איך לייצג את זה? איך לדאוג למעבר מידע? איך להשיג path לתיקייה נוכחית כשאין לי תקשורת דו כיוונית עם הprocesses?
מאוד קשה לי להתחיל לכתוב קוד מבלי לארגן בצורה כללית את העבודה בראש...
אשמח לכל כמה רעיונות