עבור לתוכן

Virtual Memory

Featured Replies

פורסם

טוב אז ככה..

כאשר התקנתי את הווינ על כשהיה לי 256 ראם, הזכרון הוירטואלי כוון ע"י הווי אוטומטית על 384 ו 768 אם אני לא טועה..

עכשיו התקנתי ויוינ מחדש אבל הפעם ישלי 512 ראם, הוא מכוון על 768 ו 1536

זאת אומרת שהוא הגדיל אותו כפול שתיים..

למה זה?

פורסם

הזיכרון הורטואלי תמיד גדול יותר מהזיכרון הפיסי

כל מה שמאוכסן בזיכרון הפיסי נמצא גם בזיכרון הוירטואלי

ככה שעבור זיכרון 512MB צריך שהגודל של הזיכרון הוירטואלי יהיה גדול יותר מ-512MB כדי שהוא יהיה יעיל

בדרך כלל לביצועים טובים מגדירים את הזיכרון הויראוטלי עד לפי 2 מהזיכרון הפיסי

פורסם

חלק מהסיבה זה שאם שמת 512 MB זכרון כנראה שאתה צריך כל כך הרבה אז כדאי שהזיכרון וירטואלי יהיה גם גדול בשביל הצרכים שלך חוץ מזה למייקרוסופט תמיד יש סיבות (זה לא באג זה פיצ'ר) ;)

עריכה: הרגע ראיתי את התגובה של HOLY (כתבנו באותו זמן) וכמה שאני יודע זה לא נכון אין שום סיבה לזה ואם כן אז זה היה בלתי אפשרי לתת ערך יותר נמוך לזיכרון הווירטואלי מהפיזי

פורסם

הוינדוס לא חייב לשמור כל מה שנמצא בזיכרון הפיסי בזיכרון הורטואלי

אבל כדי לזרז את העסק וכדי למנוע כתיבה מיותר לדיסק כל פעם שמחליפים דפים עדיף לשמור עותק בזיכרון הורטואלי

אפשר להגדיר זיכרון וירטואלי קטן מהזיכרון הראשי אבל אז כל החלפה של דף (במידה והזיכרון הפיזי מלא) תגרור גם כתיבה להרדיסק של הדף שאנחנו זורקים מהזיכרון וגם קריאה מההרדיסק של הדף החדש.

עדיף להגדיר זיכרון וירטואלי גדול מהזיכרון הממשי (נניח ממשי 512MB וירטואלי 1GB). במידה ואתה לא משתמש בכל ה-1.5GB אלה רק ב-1GB זיכרון כולל (ממשי + וירטואלי) תקבל ביצועים הרבה יותר טובים.

פורסם

המצב היחיד בו אין צורך בכתיבה לדיסק של דף שמתחלף זה כאשר הדף מסומן כread only - ובמקרה כזה (אם זכרוני אינו מטעני...), הwindows כבר עושה mapping לדף ישירות לקובץ ממנו הוא נקרא.

כלומר - אם הדף קיים כבר בדיסק הקשיח (בקובץ כלשהו, לא בזיכרון הוירטואלי) והוא read only - הדף ממופה לזכרון ישירות מהקובץ והוא נקרא מהקובץ לפי הצורך, ואינו מצריך כתיבה לדיסק.

אם הדף לא מגיע מקובץ או שאינו מסומן כread only - הוא נקרא/נכתב לפי הצורך מ/אל הזיכרון הוירטואלי.

ובלי שום ספק - הזיכרון הוירטואלי לא מכיל את כל מה שמכיל הזיכרון הפיזי. אם תחשוב על זה תראה שמצב כזה יפגום קשות בביצועי המערכת מאחר וכל שינוי שיתבצע בתכולת הזיכרון הפיזי יחייב כתיבה לדיסק...

פורסם

אם תחשוב על זה שוב תראה שטעית

נכון שלא חובה שהזיכרון הוירטואלי יכיל את הזיכרון הממשי אבל במקרה שיש מספיק מקום פנוי זה יתרון אדיר

כאשר דף מובא מההרדיסק לזיכרון הוא נשמר על ההרדיסק

הרבה מהדפים שמובאים ישמשו רק לקריאה ולא לכתיבה

במקרה כזה כשצריך לפנות מקום בזיכרון הממשי פשוט זורקים את הדף בלי לעדכן כלום

במקרה שהדף עודכן כאשר הוא בזיכרון הממשי לא מעדכנים מיד את העתוק בהרדיסק! רק כאשר זורקים את הדף מה שיכול לקרות אחרי מאות עידכונים רושמים את המידע החדש על ההרדיסק במקום המידע החדש

מה לעשות שככה עובד הזיכרון הוירטואלי, כשיש לו מספיק מקום הוא שומר דברים גם בזיכרון הממשי וגם בדיסק כדי לחסוך הרבה זמן.

לא כל שינוי שיתבצע בזיכרון הפיזי יחייב גם כתיבה לדיסק. פה בדיוק הטעות שלך. בכתיבה לדיסק נעשית רק כשמפנים את הדף מהזיכרון הפיזי לדיסק

פורסם

הוינדוס לא חייב לשמור כל מה שנמצא בזיכרון הפיסי בזיכרון הורטואלי

אבל כדי לזרז את העסק וכדי למנוע כתיבה מיותר לדיסק כל פעם שמחליפים דפים עדיף לשמור עותק בזיכרון הורטואלי

אפשר להגדיר זיכרון וירטואלי קטן מהזיכרון הראשי אבל אז כל החלפה של דף (במידה והזיכרון הפיזי מלא) תגרור גם כתיבה להרדיסק של הדף שאנחנו זורקים מהזיכרון וגם קריאה מההרדיסק של הדף החדש.

עדיף להגדיר זיכרון וירטואלי גדול מהזיכרון הממשי (נניח ממשי 512MB וירטואלי 1GB). במידה ואתה לא משתמש בכל ה-1.5GB אלה רק ב-1GB זיכרון כולל (ממשי + וירטואלי) תקבל ביצועים הרבה יותר טובים.

המצב היחיד בו אין צורך בכתיבה לדיסק של דף שמתחלף זה כאשר הדף מסומן כread only - ובמקרה כזה (אם זכרוני אינו מטעני...), הwindows כבר עושה mapping לדף ישירות לקובץ ממנו הוא נקרא.

כלומר - אם הדף קיים כבר בדיסק הקשיח (בקובץ כלשהו, לא בזיכרון הוירטואלי) והוא read only - הדף ממופה לזכרון ישירות מהקובץ והוא נקרא מהקובץ לפי הצורך, ואינו מצריך כתיבה לדיסק.

אם הדף לא מגיע מקובץ או שאינו מסומן כread only - הוא נקרא/נכתב לפי הצורך מ/אל הזיכרון הוירטואלי.

ובלי שום ספק - הזיכרון הוירטואלי לא מכיל את כל מה שמכיל הזיכרון הפיזי. אם תחשוב על זה תראה שמצב כזה יפגום קשות בביצועי המערכת מאחר וכל שינוי שיתבצע בתכולת הזיכרון הפיזי יחייב כתיבה לדיסק...

אין שום יתרון או חסכון בלכתוב לזיכרון הוירטואלי (משמע לדיסק) נתונים שכבר נמצאים בדיסק (בקובץ המקור) - ואלה בדיוק הסוג היחיד של הנתונים שאפשר לזרוק מבלי לעדכן את העותק בדיסק.

פורסם

אל תשגעו תבנאדם סתם

שים גודל התחלתי של 300 mb ומקסימלי של 1000

וזהו,הגודל ההתחלתי הוא ענק אין לך שןם צורך בו

ואם יהיה אז הוא יעלה לבד למה להתחיל עם הרבה וירטואלי

ובקשר ללמה זה ענו לך זה הגדרות ברירת מחדל של כמות זיכרון פיזי וכמה וירט יהיה

פורסם

אתה יודע מה הקצב של החלפת הדפים?

לא יכול להיות שתביא דף שהוא לא לקריאה בלבד ולא תכתוב אליו?

לדוגמא קוד של איזה תוכהב הוא לא לקריאה בלבד אבל הסיכוי שתכתוב על הקוד הוא אפסי

כבר חסכת המון זמן

פורסם

אני רוצה רגע לחדד את התשובה שלי אז ככה

קובץ החלפה גדול מתאים למחשב עם מעט ראם

למחשב כמו שלך עם 512 זה בזבוז של שטח דיסק

זה גם מפצל מאוד את הדיסק בגלל הקריאה והכתיבה אליו

ואי אפשר גם לאחות קובץ החלפה אלא אם כן אתה מוחק אותו ומתקין מחדש

שום תוכנת איחוי לא מאחה קובץ החלפה אז זה גם שטח מבוזבז גדול וגם מפוצל תמידי.

הברירת מחדל היא פי 1.5 מהגודל של הזיכרון הפיזי במינימום ופי 3 במקסימום

אם יש לך 2 דיסקים קשיחים תעביר אותו לדיסק בלי מערכת ההפעלה

ואז הוא עובד יותר מהר.לסיום גודל התחלתי 300 אפילו 200 ומקסימלי 1000

תסתכל גם אם הסה"כ commit charge לא מתקרב לעולם לסה"כ זיכרון פיזי

אז הקובץ גדול מדי

פורסם
  • מחבר

אתם נורא מבלבלים אותי

אני לא יודע

אני ישאיר את זה איך שזה בינתיים

ויס לי 60 ג'יגה כאשר המחיצה בעלת מערכת ההפעלה היא בעלת 10 ג'יגה והשאר במחיצה אחרת.

זה לא מזיז לי כי חוץ מתוכנות אני לא מתקין שום דבר בC

פורסם

אם תקרא מה שכתבתי לך

תבין שפשוט חבל מה מבלבל אותך בדיוק

אני חושב שהסברתי את עצמי טוב

פורסם

שאלה, לשניכם.

למה נרא הלכם שעכשיו, כשיש לו 512MB הוא יצטרך PAGING FILE גודל יותר מכשהיו לו 256MB?

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים