26: Ruslasöfnun og minnisvillur Flashcards

1
Q

Hvað er ruslasöfnun:

A

sjálfvirk skil á minni sem úthlutað hefur
verið í kösinni - notendaforrit þurfa ekki sjálf að skila því

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Hvar er ruslasöfnun algeng?

A

Algengt í mörgum kvikum (dynamic) forritunarmálum:
– Python, Ruby, Java, Perl, ML, Lisp, Mathematica

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Útgáfur (“íhaldsamir” ruslasafnarar) til fyrir C og C++, afhverju?

A

Til að henda ekki óvart einhverju mikilvægu

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Hvernig veit minnisstýringin hvenær hægt er að skila minni?

A

Almennt getum við ekki vitað hvað mun verða notað í
framtíðinni

En við getum sagt að sumar blokkir munu ekki verða notaðar,
ef það eru engir bendar á þær lengur

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Gefum okkur ákveðnar forsendur um benda

A

– Minnisstjóri getur greint á milli benda og ekki-benda
– Allir bendar benda á upphaf blokkar
– Ekki hægt að fela benda
(t.d., með því að kasta þeim í int, og síðan aftur til baka)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Helstu ruslasöfnunarreikniritin

A

Mark-and-sweep
Tilvísanatalning
Afritunarsöfnun
Kynslóðasafnarar

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Mark-and-sweep söfnun (McCarthy, 1960)

A

Færir ekki blokkir (nema ef þjappað um leið)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Tilvísanatalning (Collins, 1960)

A

Færir ekki blokkir (tölum ekki um hér)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Afritunarsöfnun (Minsky, 1963)

A

Færir blokkir (tölum ekki um hér)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Kynslóðasafnarar (Lieberman og Hewitt, 1983)

A

Söfnun byggð á líftíma
- Flestar úthlutanir verða rusl mjög fljótlega
- Einbeitir sér því að minnissvæðum sem nýlega búið að úthlut

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Við lítum á minnið eins og stefnunet (directed graph)

A

Hver blokk er hnútur í netinu

Hver bendir er leggur í netinu

Hólf utan kasarinnar sem innihalda benda inn í kösina kallast
rótarhnútar (t.d. gistu, hólf á hlaða, víðværar breytur)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Hnútur (blokk) er aðgengilegur ef

A

það er vegur til hans frá einhverri rót

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Óaðgengilegir hnútar eru ?

A

rusl (notendaforrit getur ekki þurft á þeim að halda)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Mark-and-Sweep söfnun

A

Hægt að byggja ofan á malloc/free pakka
– Úthlutum með malloc þangað til “minnið klárast”
* Þegar minnið hefur klárast:
– Notar auka mark-bita í haus hverrar blokkar
– Mark: Byrja í rótunum og setja mark-bitann í aðgengilegum blokkum
– Sweep: Fara í gegnum allar blokkir og skila ómerktum blokkum

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Mark notar ______ til að fara í gegnum minnisnetið

A

djúpleit

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Sweep notar ______ til að finna næstu blokk

A

lengdirnar