מועד א' במערכות הפעלה.


מועד א' במערכות הפעלה.גיל(אוניברסיטת ת"א) 2.10.2006 21:01
מישהו יכול להעלות את הפתרון לשאלה 8 ולשאלה 10 במועד א' בOS או לשלוח לי במייל (gl_levi בyahoo)? תודה מראש.
פתרונותמיכאל(אוניברסיטת ת"א) 2.10.2006 21:31
הנה הפתרון לשאלה 8:

The vfork() function differs from fork() only in that the child process can share code and data with the calling process (parent process). This speeds cloning activity significantly at a risk to the integrity of the parent process if vfork() is misused.

The use of vfork() for any purpose except as a prelude to an immediate call to a function from the exec family, or to _exit(), is not advised.

The vfork() function can be used to create new processes without fully copying the address space of the old process. If a forked process is simply going to call exec, the data space copied from the parent to the child by fork() is not used. This is particularly inefficient in a paged environment, making vfork() particularly useful. Depending upon the size of the parent's data space, vfork() can give a significant performance improvement over fork().

זה מכאן: http://www.opengroup.org/onlinepubs/007908799/xsh/vfork.html

התשובה ל-10 היא:
12
244
0
0
3
50
תודה, אבל לא הבנתי משהו לגבי 10.גיל(אוניברסיטת ת"א) 3.10.2006 21:47
בטופס שיש לי הoffset הראשון הוא 13 (בטופס עצמו, לא חלק מהתשובות) ויש רק 5 ערכים במערך הoffset, זה נראה כך:
offsets[0]=13;
offsets[1]=___;
offsets[2]=___;
offsets[3]=___;
offsets[4]=___;

חזי נתן תיקונים בזמן המבחן או שהערך של X השתנה מגירסה לגירסה (בטופס שיש לי, ערכו של X הוא 3.5MB + 200byte)?
נתתי תשובות לפי הדברים החסריםמיכאל(אוניברסיטת ת"א) 3.10.2006 21:51
offsets[0]=13;
offsets[1]=12;
offsets[2]=244;
offsets[3]=0;
offsets[4]=0;


for(i = 0; i < 3; i++) {
.....
}

a = a+50; ...
משהו כאן לא ברור לי.גיל(אוניברסיטת ת"א) 4.10.2006 18:17
ניסיתי להבין בעצמי למה זה הפתרון. הנה מה ה"פתרון" שלי:
צריך להגיע למיקום 3670216 בקובץ. 12 בלוקים בהצבעה ישירה זה 12,228 בתים, לכן צריך להגיע לבלוק ה 3670216-12,228=3657988 אחרי "תחילת" בלוק הindirect. בכל בלוק מצביעים יש 1024/4=256 מצביעים והוא ממפה ל 262144 בתים. 3657988/262144=13.9, לכן 14*262144>3657988>13*262144, לכן צריך להגיע לבלוק המצביעים שמספרו 12. 13*262114=3407482, לכן צריך להגיע לבית ה 3657988-3407482=250116 אחרי "תחילת" בלוק המצביעים שמספרו 12. 250116/1024=244.2, לכן 245*1024>250116>244*1024, לכן צריך להגיע לבלוק שמספרו 243 (כי סופרים מ0) בבלוק המצביעים שמספרו 12, אבל אצלך זה 244. איפה הטעות שלי?

244*1024=249856, לכן צריך להגיע לבית ה250116-249856=260 אחרי תחילת הבלוק שמספרו 243, אבל אצלך זה 50? איפה הטעות (השניה) שלי?

תודה מראש.

כל ההודעות בערוץ