Skillnad mellan personsökning och segmentering

Minneshantering är en av operativsystemets grundläggande funktioner. Moderna operativsystem tillåter varje process att få mer virtuellt minne än den totala storleken på det faktiska (fysiska) minnet på ett visst datorsystem. Huvudsyftet med minneshantering är att genom att kombinera stort men långsamt minne med liten men höghastighetsminne för att uppnå effekten av större höghastighetsminne.

Vad är Paging?

Att skilja mellan fast och variabel partitionering är ineffektiv när det gäller minnesutnyttjande, eftersom fast partitionering resulterar i intern, medan dynamisk i extern fragmentering. En möjlig lösning på problemet med fragmentering är att tillåta processen inte att skrivas till ett kontinuerligt minnesblock. Programmet kan spridas godtyckligt i minnet. I det här fallet är arbetsminnet uppdelat i mindre block med fast storlek som kallas ramar. Programmets logiska adressutrymme är också indelat i block av samma storlek, så kallade sidor. När ett program är inmatat i minnet skrivs sidorna i fria minnesramar. För att underlätta överföring av program från en skiva till ett arbetsminne delas skivan också in i ramar av samma storlek som minnesramarna. Således skrivs en ram från skivan till en ram i arbetsminnet. Personsökningssystemet fungerar på följande sätt: När programmet godkänns för körning beräknas dess storlek, vilket uttrycks med det önskade antalet sidor. Om ett tillräckligt antal bilder är lediga registreras processen på minnesidan per sida. Samtidigt anges antalet ramar där varje sida skrivs in i ramtabellen.

Vad är segmentering?

Användarprogrammet och tillhörande data kan delas in i ett antal segment. Segment av alla program behöver inte vara av samma storlek, även om det finns en maximal segmentlängd. Liksom vid personsökning består den logiska adressen som använder segmenteringen av två delar, i det här fallet antalet segment och dislokationer inom det här segmentet. På grund av användningen av segment av olika storlekar, liknar segmentering till dynamisk partitionering. I avsaknad av ett överlagringsschema eller användning av virtuellt minne krävs det att alla programsegment laddas i minnet för exekvering. Skillnaden jämfört med dynamisk partitionering är att segmenteringen kan ta mer än en partition, och den partitionen behöver inte vara angränsande. Segmentering löser problemet med intern fragmentering, men såväl som dynamisk partitionering kvarstår problemet med extern fragmentering. Men eftersom processen är uppdelad i ett antal mindre delar är den externa fragmenteringen vanligtvis mindre. Till skillnad från personsökning som är osynlig för programmeraren är segmentering vanligtvis synlig och lämplig för organisering av program och data. För modulär programmering kan programmet eller data delas upp ytterligare i flera mindre segment. Nackdelen med denna teknik är att programmeraren måste känna till gränserna för den maximala segmentstorleken. Nästa bekvämlighet med att använda segment av olika storlekar är att det inte finns någon potentiell koppling mellan logiska och fysiska adresser. I likhet med personsökning använder den enkla segmenteringstekniken segmenttabellen för varje process och en lista över tillgängliga block i huvudminnet.

Skillnad mellan personsökning och segmentering

1. Begrepp av personsökning och segmentering

Paging levererar ett virtuellt och ett fysiskt adressutrymme och ett sekundärt minnesutrymme på block (sidor) med lika längder. Detta gör att det kontinuerliga virtuella adressutrymmet kan allokeras till dispersionsprocessen (ej nödvändigtvis kontinuerligt distribuerad) i det verkliga adressutrymmet och sekundärt minne. Även sidan, som en term, avser minne snarare än logiska objekt som är synliga på programnivå. Segmentering ger ett virtuellt adressutrymme på block (segment) som direkt motsvarar objekt på programnivå. På grund av detta har segmentet ingen fast längd, så även segmentstorleken kan ändras under programkörning. Skydd och delning är därför möjliga på objektnivå, och det finns synliga processer där segmentering utförs.

2. Särskilda egenskaper för personsökning och segmentering

Applikationsutvecklaren är omedveten om sökningen. Han skriver program som om minnet är linjärt och operativsystemet och processorn är oroliga för partitioneringen och konverteringen till virtuella adresser. Programmerare på segmenteringssystem listar dock två delar av adress, segment och sida i sina program. Alla sidor är av samma storlek medan segmenten är olika. Segmentering har flera linjära adressrum och endast en sökning. Segment tillåter logisk partitionering och skydd av applikationskomponenter, och sidor gör det inte.

3. Fördelar med personsökning och segmentering

Paging, som är transparent för programmeraren, eliminerar extern fragmentering och därigenom säkerställer effektiv användning av huvudminnet. Bitarna som rör sig in och ut ur huvudminnet är fasta och lika stora, så det är möjligt att utveckla sofistikerade minneshanteringsalgoritmer som utnyttjar programmets beteende. Segmentering är synlig för utvecklaren och har förmåga att hantera tillväxten av datastruktur, modularitet och stöd för utbyte och skydd.

Paging vs Segmentation: Jämförelse Diagram

personsökning

segmente~~POS=TRUNC

fasta sidor storlek segmenten är inte fixade i storlek
osynlig för programmeraren synlig för programmeraren
ett linjärt adressutrymme flera linjära adressrum
tillåter inte logisk partitionering och skydd av applikationskomponenter tillåter

Sammanfattning av personsökning och segmentering

  • Pageringen baseras på fördelningen av hela adressutrymmet på fastlängdsblock som drivs som minneskvantiserar. Vidare är det nödvändigt att tillhandahålla ett medel för att markera tillgängligt minne som kan exekveras genom närvaron av "rubrik" på varje sida som indikerar sidans status (globalt länkad lista där varje nod pekar på nästa lediga sida) eller genom Placering av den fria sidadressen i det globala systemet, som vanligtvis är den värsta lösningen.
  • Segmentering innebär att dividera adressutrymmet i segment som har tydligt markerade åtkomsträttigheter till MMU-processorn. Inom segmentet tilldelas processerna exakt så mycket minne som de behöver, men problemet med minneshantering är hur man tillhandahåller en sådan allokering där den kan behålla tillräckligt stor kontinuerlig blockminne som kan behöva lite tid.