Bizning AQSh foydalanish rozetkasi aslida operatsion tizim yadrosida joylashgan
ma'lumotnoma (ob'ekt identifikatori). Bu soketda ikkita muhim bufer konstruktsiyasi mavjud: biri
bu o'qish buferi, yozish buferi.
Biz mijozlar rozetkasini yozganimizda, ketma -ket chastotali imkoniyat ob'ektining so'rovi
dasturlashtirilganda, asosiy tarmoq modulida yozish buferida baytlar qatorini yadro zonasi
rozetkasiga
ko'chiradigan
alohida
mavzu
bo'ladi. Yozish
bufer
ma'lumotlari
nusxalanmaydi. Tarmoq kartasi uchun uskunalar va uskunalar ma'lumotlarni tarmoq kabeliga
yuboradi, va ba'zi bir muntazam almashtirishlardan so'ng, tarmoq kartasi uchun uskunalar, natijada
serverlarga xizmat qiladi.
Xuddi shunday, Kernel server tarmoq modulida buferni o'qish
uchun qabul qilingan
ma'lumotlarni aniqlash uchun alohida oqim ham mavjud. Oxirgi serverni ishlatish jarayoni o'qish
buferidagi ma'lumotlarni foydalanuvchi dasturining xotirasiga, jarayonni bajarish uchun
foydalanuvchi dasturining xotirasiga rozetka orqali ko'chiradi. Keyin mijoz mijozga qayta
ishlangan javob ob'ektini yuborish uchun yuboriladi, u endi batafsil emas.
2.1,
blokirovka
Biz yozish uchun bufer maydoni cheklanganligini payqadik, shuning uchun agar dastur
rozetkaga yozilgan bo'lsa, bu joy to'la. To'ldirilgandan so'ng, yozish jarayoni bo'sh joy etarli joyga
ega bo'lguncha bloklanadi. Biroq, Nio (blokirovka qilinmaydigan IO) bor, yozish operatsiyasini
men yozganimcha blokirovka qilib bo'lmaydi, chunki uning oxirida yozilganligini aniqlash kerak,
shuningdek, maxsus kontent dasturi. yozilmagan bo'lsa, keshlanadi, kuzatuv takrorlanadi. Yozish.
Xuddi shunday, biz o'qish buferining tarkibi bo'sh bo'lishi mumkinligini ham
payqadik. Bunday rozetkani o'qish operatsiyasi (odatda sobit uzunlikdagi bayt massivini o'qish)
ham etarli Bufer tarkibini (bayt massivlari bilan to'ldirilgan) olmaguncha blokirovka qiladi. Nio
yordamida siz ko'p o'qishingiz mumkin, blokirovka qilishning hojati yo'q. O'qiganingizdan so'ng,
o'qishni davom ettiring.
2,2
、
akk
Bu rasm rozetkaning barcha jarayonlarini ko'rsatadimi? Shubhasiz, tan olish (ACK) jarayoni
umuman yo'q. Masalan, yozish buferi NICga ko'chirilganda, u o'sha nusxalarning tarkibini darhol
o'chirmaydi va boshqa tomonning ACK kelishini kutadi. Agar tarmoq yaxshi bo'lmasa, ACK
kechikadi va yozish buferi to'la bo'ladi.
2.3, Baotou
Ehtiyotkor sinfdoshlar, rasmdagi xabar "Kapital Reqdagi Nic Time" da nusxaga aylanganini
payqashlari mumkin, nega? Chunki ikkalasi bir xil emas. Yadro tarmoq moduli bufer xabarlarini
bloklaydi; agar bufer juda katta bo'lsa, u bir nechta
alohida kichik xabarlarga
bo'linadi. Shuningdek, har bir xabar paketiga, masalan, tarmoq manzilining manbasi va maqsadli
tarmoq kartasining manzili, seriya raqami va boshqalar kabi qo'shimcha ma'lumotlar
qo'shing. Buferni o'qiyotganda. Bu murakkab, batafsil jarayonlarni animatsiyada tasavvur qilish
juda qiyin.
2.4, tezlik
Yana bir savol bor. Agar siz sekinlashuvni o'qiyotgan bo'lsangiz, agar NIC boshqa tomonga
ega bo'lsa, men nima qilishim kerak? Umumiy yondashuv ACKning boshqa tarafidan voz
kechishdir va agar boshqa tomon ACK kelmaydi deb o'ylasa, u xabarni qaytaradi. Nega bufer
to'la? Buning sababi, xabar qabul qiluvchilarni qayta ishlash sekinligi va yuboruvchi tomonidan
yaratilgan xabar juda tezligi. Bu vaqtda, TCP jo'natuvchining uzatish
tezligini cheklash uchun
dinamik oyna algoritmiga ega bo'ladi, shuning uchun uzatish va qabul qilish samaradorligi mos
kelishi kerak. Agar bu UDP bo'lsa, unda xabar ehtiyotkorlik bilan yo'qoladi.
Bu rasm quyida tushuntiriladi:
Savol: Biroq, muammolarni hal qilish uchun asosiy RPC tuzilishini qanday aytish kerak, B
serveriga qanday ulanish kerak (masalan, xost manzili yoki IP -manzil) va ma'lum bir port va bu
usul nima deb ataladi?
Mijoz dasturida masofaviy protseduraga qo'ng'iroq boshlanganida, usul parametrlari asosiy
tarmoq protokolidan o'tishi kerak, masalan, serverda TCP, chunki tarmoq protokoli ikkilik
buyurtma asosida tuzilgan, xotiradagi parametr qiymati Ikkilik ketma -ket ikkilik B serverlarida
ketma -ket ikkilik ikkilikni manzil va uzatish orqali yuboradi.
Server so'ralganda, parametr mos keladi, xotiradagi ifodani tiklang, so'ngra
mahalliy
qo'ng'iroq qilish uchun mos usulni (bitta elementni) toping, so'ngra qaytish qiymatini oling.
Do'stlaringiz bilan baham: