Buferis (informātika)

Buferis (no ) informātikā un telesakaros ir atmiņas apgabals datu glabāšanai. Atkarībā no risināmā uzdevuma, buferim var būt atšķirīga struktūra.

Visbiežāk buferis datus glabā brīvpiekļuves atmiņā.

Buferu lietojums

Programmkanāli un Rindas (FIFO-buferi) 
Pārraides ātruma kompensācijas buferi ļauj apstrādāt sastrēgumus datu pārraidē. Pārraidītie dati tiek īslaicīgi saglabāti buferī, lai vēlāk tos apstrādātu. Šādi buferi īsteno rindas datu struktūru vai programmkanālu un darbojas pēc FIFO principa. Tehniski tie bieži vien tiek veidoti kā riņķveida buferi.

Tipisks piemērs ir drukas spolētāja rinda, kas pārvalda un apstrādā uz druku nosūtītos datus.

Steks (LIFO-buferi) 
Steks var tikt izmantots kā buferis, kas saglabā sistēmas stāvokli programmas apakšfunkcijas izsaukuma gadījumā. Atgriešanās brīdī, buferis ļauj programmai turpināt darbu tur, kur tas tika pārtraukts. Steka buferi tiek arī izmantoti programmatūrā gadījumos, kad programmā ir nepieciešams īslaicīgi saglabāt datus, kuri vēlāk būs jāapstrādā.

Steks ir viena no visvecākajām datu struktūrām datortehnikā, un tiek atbalstīts arī mašīnkoda līmenī. Mašīnkoda komandas 'push' un 'pop' maina procesora steka rādītāju. Liels steka trūkums ir tas, ka stekam ir nemainīgs lielums, kas var novest pie steka bufera pārpildes.

Kešdarbe un kartēšana 
Kešdarbē un kartēšanā () buferis tiek izveidots ātrākas piekļuves atmiņā, lai pie biežāk lietotiem datiem piekļūtu ātrāk, nekā, piemēram, lasot no datora cietā diska. Dati buferī ir brīvi pieejami un adresācija buferī atbilst tai, kāda tā ir uz lēnākā medija. Arī rakstīšana notiek buferī, vēlāk mainītos datus sinhronizējot ar lēnāko mediju.

Pārnešana un lapošana (virtuālā atmiņa) 
Virtuālās atmiņas mērķis pārnešanā un lapošanā () ir tajā brīdī neizmantoto datu pārnešana no ātrākās atmiņas (piemēram, brīvpiekļuves atmiņa) uz lēnāko (piemēram, cietais disks). Šādā veidā tiek atbrīvota ātrākā, un visbiežāk arī mazākā un dārgākā, atmiņa. Tipisks lēnākās atmiņas (lapošanas bufera) piemērs ir lapošanas datne ().

Procesu pārnešanu uz lapošanas datni parasti organizē pēc:
 FIFO;
 LRU () — visilgāk nav lietots;
 LFU () — visretāk lietots;
 NRU () — pēdējā laikā nelietots.

kritērijiem.

Kaudze 
Programmas dinamiski rezervē kaudzei atmiņu, kur tiek glabāti neapstrādātie dati.

Starpliktuve 
Starpliktuve () ir buferis, ar fiksētu vietu skaitu, kuras var tikt lasītas un rakstītas neatkarīgi viena no otra. Izplatītākajās operētājsistēmās starpliktuvē ir viena vieta. Ar paplidus programmatūras palīdzību iespējams iegūt starpliktuvi ar vairākām vietām.

Skatīt arī 
 Bufera pārpilde

Atsauces 

Datu struktūras