מחסנית קריאות

מחסנית קריאות מורכבת ממסגרות (stack frames). אלו הם מבני נתונים תלויי מכונה ומערכת הפעלה, המכילים מידע אודות המצב של שגרות רצות. כל מסגרת מתאימה לקריאה לשגרה שעדיין לא סיימה לרוץ. לדוגמה, אם כרגע רצה שגרה בשם DrawLine, לאחר שהיא נקראה מתוך שגרה בשם DrawSquare, החלק העליון של מחסנית הקריאות יכול להראות כמודגם בתרשים זה.

במדעי המחשב, מחסנית קריאותאנגלית: call stack) היא מבנה נתונים מסוג מחסנית, המשמש לאחסון מידע אודות השגרות הפעילות של תוכנית מחשב. סוג זה של מחסנית נקרא גם execution stack (מחסנית ביצוע), control stack (מחסנית שליטה), run-time stack (מחסנית זמן ריצה) או machine stack (מחסנית מכונה), ובדרך כלל קוראים לה בקיצור פשוט "המחסנית" (the stack). אף על פי שתחזוקת מחסנית הקריאות חשובה לתפקודן התקין של מרבית התוכנות, לרוב בשפות תכנות עיליות הטיפול בה מבוצע אוטומטית ופרטיה מוסתרים מהמתכנת.

מחסנית קריאות משרתת מספר מטרות קשורות, אבל הסיבה העיקרית לשימוש בה היא לצורך מעקב אחר הנקודה שאליה כל שגרה אמורה להחזיר את השליטה כאשר הביצוע שלה הסתיים. שגרה פעילה היא שגרה שנקראה אבל עדיין לא סיימה את הריצה שלה, שלאחריה השליטה אמורה להיות מועברת חזרה לנקודה שממנה נקראה השגרה. הפעלות כאלו של שגרות יכולות להיות מקוננות (קריאה לשגרה מתוך שגרה, כאשר קריאה רקורסיבית היא מקרה פרטי לכך), ולכן נעשה השימוש במבנה של מחסנית. לדוגמה, אם שגרה בשם DrawSquare (צייר ריבוע) קוראת לשגרה DrawLine (צייר קו) מארבעה מקומות שונים, השגרה DrawLine אמורה לדעת לאיזו נקודה לחזור בכל פעם שהביצוע שלה מסתיים. על מנת לעשות זאת, הכתובת בזיכרון יחד עם הוראת הקריאה – "כתובת החזרה" (return address), מתווספת על גבי המחסנית עם כל קריאה.

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

תיאור

מאחר שמחסנית הקריאות בנויה כמחסנית, הקורא (מי שקרא לשגרה) דוחף (push) למחסנית את כתובת החזרה, והשגרה שנקראה, כאשר סיימה לרוץ, שולפת (pop) את כתובת החזרה מהמחסנית ומחזירה את השליטה לאותה כתובת. אם השגרה שנקראה קוראת לשגרה נוספת, היא תדחוף עוד כתובת חזרה על גבי מחסנית הקריאות, וכך הלאה - מידע מצטבר על המחסנית ומרוקן ממנה בהתאם למה שמכתיבה התוכנית. אם הכתיבות למחסנית מנצלות את כל שטח הזיכרון שהוקצה עבור מחסנית הקריאות, מתרחשת שגיאה שנקראת גלישת מחסנית (stack overflow), אשר בדרך כלל גורמת להתרסקות התוכנית. באנגלית, הוספת רשומה של שגרה למחסנית הקריאות לעיתים נקראת winding (ליפוף), ואילו הסרת רשומות נקראת unwinding.

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

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

שימושים

מחסנית קריאות טיפוסית משמשת לאחסון כתובת חזרה, משתנים מקומיים ופרמטרים, אשר יחד מכונים "מסגרת קריאה" (call frame). בסביבות שונות, מחסנית הקריאות יכולה לשמש יותר או פחות פונקציות. כפי שצוין למעלה, השימוש העיקרי במחסנית הקריאות הוא לצורך:

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

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

מחסנית קריאות עשויה לשרת פונקציות נוספות, כתלות בסוג שפת התכנות, מערכת ההפעלה וסביבת המכונה. ביניהן:

אחסון נתונים מקומיים

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

העברת פרמטרים

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

מחסנית הערכות (evaluation stack)

אופרנדים (ראו: אופרטור) עבור פעולות אריתמטיות או לוגיות בדרך כלל מאוחסנים באוגרים ושם מבוצעות עליהם הפעולות. עם זאת, ישנם מקרים בהם האופרנדים נערמים לעומק בלתי מוגבל, ובמקרה כזה האוגרים לא יספיקו (מצב הנקרא register spilling). המחסנית שמשמשת לאחסון אופרנדים כאלו, בדומה למחסנית המשמשת לחישוב בכתיב פולני הפוך, נקראת מחסנית הערכות (evaluation stack), והיא עשויה לתפוס מקום במחסנית הקריאות.

מצביע למופע הנוכחי (this)

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

אחסון מידע נוסף אודות מצבים

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

ראו גם

Read other articles:

Stasiun Togura戸倉駅Stasiun Togura, Mei 2009Lokasi1445 Togura, Chikuma-shi, Nagano-ken 389-0804 JepangKoordinat36°29′32″N 138°09′11″E / 36.49222°N 138.15306°E / 36.49222; 138.15306Ketinggian376 m[butuh rujukan]Operator Shinano RailwayJalur■ Jalur Kereta ShinanoLetak54.9 km dari KaruizawaJumlah peron1 peron sisi + peron pulauJumlah jalur3Informasi lainStatusStaffedSitus webSitus web resmiSejarahDibuka11 Februari 1912PenumpangFY20112,650 har...

 

Balai kota Les Marêts. Les MarêtsNegaraPrancisArondisemenProvinsKantonVilliers-Saint-GeorgesAntarkomuneCommunauté de communes du ProvinoisPemerintahan • Wali kota (2008-2014) Gérard Cognyl • Populasi1135Kode INSEE/pos77275 / 2 Population sans doubles comptes: penghitungan tunggal penduduk di komune lain (e.g. mahasiswa dan personil militer). Les Marêts merupakan sebuah komune di departemen Seine-et-Marne di region Île-de-France di utara-tengah Prancis. Demog...

 

Festivals of South AmericaCarnival float at the Brazilian Carnival in Rio de Janeiro, BrazilGeneral InformationSubtopicsList of festivals, list of music festivals, list of film festivalsLocationSouth America, The CaribbeanRelated topicsCulture of South Americavte The following is an incomplete list of festivals in South America, with links to separate lists by country and region where applicable. This list includes festivals of diverse types, including regional festivals, commerce festivals,...

العلاقات الأردنية المالطية الأردن مالطا   الأردن   مالطا تعديل مصدري - تعديل   العلاقات الأردنية المالطية هي العلاقات الثنائية التي تجمع بين الأردن ومالطا.[1][2][3][4][5] مقارنة بين البلدين هذه مقارنة عامة ومرجعية للدولتين: وجه المقارنة الأردن ...

 

Freeware web browser based on Chromium Redcore红芯浏览器Redcore on Windows 10Developer(s)Redcore Times (Beijing) Technology Ltd.红芯时代(北京)科技有限公司Initial release3 August 2018Stable release49.1.2623.213 / 3 August 2018 EnginesBlink[1]WebKit (iOS only)[2]Operating systemMicrosoft Windows, Android, iOS, LinuxSize398 MBAvailable inChineseTypeWeb browserLicenseFreewareWebsitebrowser.redcore.cn Redcore (Chinese: 红芯浏览器; lit. 'red co...

 

Habit and impulse disorder Compulsive redirects here. For other uses, see Compulsion. This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Compulsive behavior – news · newspapers · books · scholar · JSTOR (May 2022) (Learn how and when to remove this template message)Dermatophagia – extreme nail biting / biting...

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Februari 2023. Ada usul agar artikel ini digabungkan ke Teori Matematika Komunikasi. (Diskusikan) Mengenal Teori Matematikal Komunikasi Teori Matematikal Komunikasi menjelaskan proses komunikasi dengan peranan komunikator menyampaikan pesan melalui sebuah media kepa...

 

2018 American comedy-drama film For the television adaptation, see Blindspotting (TV series). BlindspottingTheatrical release posterDirected byCarlos López EstradaWritten byRafael CasalDaveed DiggsProduced byKeith CalderJess CalderRafael CasalDaveed DiggsStarring Daveed Diggs Rafael Casal Janina Gavankar Jasmine Cephas Jones Ethan Embry Tisha Campbell-Martin Utkarsh Ambudkar Wayne Knight CinematographyRobby BaumgartnerEdited byGabriel FlemingMusic byMichael YezerskiProductioncompanySnoot Ent...

 

Bagian dari seriGereja Katolik menurut negara Afrika Afrika Selatan Afrika Tengah Aljazair Angola Benin Botswana Burkina Faso Burundi Chad Eritrea Eswatini Etiopia Gabon Gambia Ghana Guinea Guinea-Bissau Guinea Khatulistiwa Jibuti Kamerun Kenya Komoro Lesotho Liberia Libya Madagaskar Malawi Mali Maroko Mauritania Mauritius Mesir Mozambik Namibia Niger Nigeria Pantai Gading Republik Demokratik Kongo Republik Kongo Rwanda Sao Tome dan Principe Senegal Seychelles Sierra Leone Somalia Somaliland ...

イスラームにおける結婚(イスラームにおけるけっこん)とは、二者の間で行われる法的な契約である。新郎新婦は自身の自由な意思で結婚に同意する。口頭または紙面での規則に従った拘束的な契約は、イスラームの結婚で不可欠だと考えられており、新郎と新婦の権利と責任の概要を示している[1]。イスラームにおける離婚は様々な形をとることができ、個�...

 

Pour les articles homonymes, voir Anglia. Est-AnglieGéographiePays  Royaume-UniNation constitutive AngleterreSubdivisions CambridgeshireNorfolkSuffolkCoordonnées 52° 30′ N, 1° 00′ Emodifier - modifier le code - modifier Wikidata Localisation de l'Est-Anglie, avec en rouge le Norfolk et le Suffolk, et en rose le Cambridgeshire. Au sud de ces comtés, se trouve l'Essex dont certaines parties sont parfois associées à l'Est-Anglie. L'Est-Anglie (en anglais&...

 

NASCAR crew chief Bootie BarkerBarker at Pocono Raceway in 2016Personal informationBirth nameRobert A. Barker IIINationalityAmericanBorn (1971-03-02) March 2, 1971 (age 53)Halifax, Virginia, U.S.SpouseChristy Smith-BarkerSportCountryUnited StatesSportNASCARTeam23XI Racing Robert A. Bootie Barker III (born March 2, 1971) is an American professional stock car racing crew chief who currently works for 23XI Racing as the crew chief for the No. 23 Toyota Camry XSE driven by Bubba Wallace...

Una pietra runica fatta dal maestro moderno Kalle Dahlberg Un maestro runico è quell'artigiano che costruisce pietre runiche. Indice 1 Periodo 2 Funzione 3 Maestri runici importanti 4 Note 5 Bibliografia 6 Voci correlate Periodo La massima parte delle pietre runiche furono scolpite tra il VIII e il XI secolo, periodo in cui si utilizzava il Fuþark recente. Analogamente, alcune pietre ed artefatti tra il II e il VI secolo in Fuþark antico riportavano il termine Erilaz, che in epoca moderna ...

 

岸信介佐藤信介 日本第56、57任內閣總理大臣任期1957年2月25日—1960年7月19日君主昭和天皇副首相石井光次郎益谷秀次前任石橋湛山继任池田勇人 日本內閣總理大臣(臨時代理)任期1957年1月31日—1957年2月25日总理石橋湛山前任石橋湛山继任岸信介 日本防衛廳長官(臨時代理)任期1957年1月31日—1957年2月2日总理岸信介(代,兼)前任石橋湛山(代)继任小瀧彬(�...

 

2016年美國總統選舉 ← 2012 2016年11月8日 2020 → 538個選舉人團席位獲勝需270票民意調查投票率55.7%[1][2] ▲ 0.8 %   获提名人 唐納·川普 希拉莉·克林頓 政党 共和黨 民主党 家鄉州 紐約州 紐約州 竞选搭档 迈克·彭斯 蒂姆·凱恩 选举人票 304[3][4][註 1] 227[5] 胜出州/省 30 + 緬-2 20 + DC 民選得票 62,984,828[6] 65,853,514[6]...

River in IndiaHindon RiverAerial view of river Hindon, GhaziabadLocationCountryIndiaRegionUttar PradeshPhysical characteristicsSourceRajaji Range, Sivalik Hills • locationSaharanpur district, Uttar Pradesh • coordinates35°05′N 77°08′E / 35.083°N 77.133°E / 35.083; 77.133 MouthYamuna river • locationSector-150, Noida, India • coordinates28°24′50″N 77°29′46″E / 28.4138...

 

  لمعانٍ أخرى، طالع شعبان (توضيح). <<شعبان - 1445 هـ>>السبتالأحدالاثنينالثلاثاءالأربعاءالخميسالجمعة2910 فبراير 2024 111 فبراير 2024 212 فبراير 2024 313 فبراير 2024 414 فبراير 2024 515 فبراير 2024 616 فبراير 2024 717 فبراير 2024 818 فبراير 2024 919 فبراير 2024 1020 فبراير 2024 1121 فبراير 2024 1222 فبراير 2024 1323 فب...

 

Sueño en el pabellón rojo紅樓夢 de Cao Xueqin Una página de la edición Jiaxu de Sueño en el pabellón rojo.Género NovelaSubgénero Zhangui, Xiaoshuo y saga familiar Ambientada en China Idioma ChinoTítulo original 石頭記País Imperio del gran ChingFecha de publicación Siglo XVIIIFormato Copias manuscritas/Impreso[editar datos en Wikidata] Sueño en el pabellón rojo o Sueño de las mansiones rojas (紅樓夢/红楼梦, Hóng lóu mèng)[1]​ es una novela...

Rural district in Alborz province, Iran Not to be confused with Palangabad District. For the city, see Palangabad. For other places with a similar name, see Palangabad. Rural District in Alborz, IranPalangabad Rural District Persian: دهستان پلنگابادRural DistrictPalangabad Rural DistrictCoordinates: 35°44′16″N 50°39′20″E / 35.73778°N 50.65556°E / 35.73778; 50.65556[1]CountryIranProvinceAlborzCountyEshtehardDistrictPalangabadCapitalPala...

 

Bagian dari serial tentangBiologi evolusionerKetilang Darwin. Lukisan oleh John Gould. Topik utama Pengenalan evolusi Nenek moyang bersama Bukti nenek moyang bersama Proses dan keluaran Genetika populasi Variasi Mutasi Seleksi alam Adaptasi Polimorfisme Hanyutan genetik Aliran gen Spesiasi Radiasi adaptif Kerjasama Koevolusi Divergen Konvergen Evolusi paralel Kepunahan Ko-kepunahan Sejarah alam Asal mula Kehidupan Sejarah kehidupan Rentang waktu evolusi Evolusi manusia Filogeni Keanekaragaman...