Buferis (no angļu: buffer) 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

labot šo sadaļu

Programmkanāli un Rindas (FIFO-buferi)

labot šo sadaļu

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)

labot šo sadaļu

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

labot šo sadaļu

Kešdarbē un kartēšanā (angļu: Caching and Mapping) 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)

labot šo sadaļu

Virtuālās atmiņas mērķis pārnešanā un lapošanā (angļu: Swapping und Paging) 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 (angļu: Page file).

Procesu pārnešanu uz lapošanas datni parasti organizē pēc:

  • FIFO;
  • LRU (angļu: least recently used) — visilgāk nav lietots;
  • LFU (angļu: least frequently used) — visretāk lietots;
  • NRU (angļu: not recently used) — pēdējā laikā nelietots.

kritērijiem.

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

Starpliktuve (angļu: Clipboard) 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.