|
פתרונות
מיכאל
(אוניברסיטת ת"א)
|
|
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? איפה הטעות (השניה) שלי?
תודה מראש. |
|