Binciko injin Mediastreamer2 VoIP. Kashi na 12

An ɗauko kayan labarin daga nawa zen channel.

Binciko injin Mediastreamer2 VoIP. Kashi na 12

A karshe labarin, Na yi alkawarin yin la'akari da batun yin la'akari da nauyin nauyi a kan ticker da kuma hanyoyin da za a magance nauyin ƙididdiga masu yawa a cikin kafofin watsa labaru. Amma na yanke shawarar cewa zai zama mafi ma'ana don rufe al'amurran da suka shafi gyaran gyare-gyaren gyare-gyaren sana'a masu alaka da motsin bayanai sannan kawai la'akari da batutuwan inganta aikin.

Gyaran matattarar sana'a

Bayan mun duba tsarin tafiyar da bayanai a cikin mai rafi a cikin labarin da ya gabata, zai zama ma'ana a yi magana game da haɗarin da ke ɓoye a ciki. Ɗaya daga cikin fasalulluka na ƙa'idar "Data gudana" shine cewa ana keɓance ƙwaƙwalwar ajiya daga tudu a cikin filtata waɗanda ke tushen tushen bayanan, kuma ƙwaƙwalwar ajiyar tana 'yantar da mayar da su cikin tudun ta hanyar tacewa da ke a ƙarshen magudanar ruwa. hanya. Bugu da ƙari, ƙirƙirar sababbin bayanai da lalata ta na iya faruwa a wani wuri a tsakanin. Gabaɗaya, ƙaddamarwar ƙwaƙwalwar ajiya ana yin ta ta wani tace daban fiye da wanda ya ƙirƙiri toshe bayanan.

Daga ra'ayi na saka idanu na ƙwaƙwalwar ajiya, yana da kyau don tacewa, bayan karɓar toshewar shigarwa, nan da nan ya lalata shi bayan sarrafa shi, yantar da ƙwaƙwalwar ajiya, kuma ya fitar da sabon toshe tare da bayanan fitarwa. A wannan yanayin, za a iya gano ɓoyayyen ƙwaƙwalwar ajiya a cikin tacewa cikin sauƙi - idan mai nazarin ya gano ɗigo a cikin tacewa, sai tace na gaba baya lalata tubalan masu shigowa da kyau kuma akwai kuskure a ciki. Amma daga ra'ayi na ci gaba da babban aiki, wannan hanyar yin aiki tare da bayanan bayanan ba ta da amfani - yana haifar da babban adadin ayyuka don rarraba / ƙwaƙwalwar ajiyar kyauta don bayanan bayanan ba tare da wani fitarwa mai amfani ba.

A saboda wannan dalili, kafofin watsa labaru masu tacewa, don kada a rage sarrafa bayanai, yi amfani da ayyuka waɗanda ke ƙirƙirar kwafi mai sauƙi lokacin kwafin saƙonni (mun yi magana game da su a cikin labarin da ya gabata). Waɗannan ayyukan suna ƙirƙirar sabon misali ne kawai na kan saƙon ta hanyar “maƙala” masa wani shingen bayanai daga “tsohon” saƙon da ake kwafewa. Sakamakon haka, an haɗa masu kai biyu zuwa toshe bayanai guda ɗaya kuma ana ƙara ma'aunin tunani a cikin toshe bayanan. Amma zai yi kama da sakonni biyu. Ana iya samun ƙarin saƙonni tare da irin wannan toshewar bayanai na “socialized”, misali, tace MS_TEE tana samar da dozin na irin wannan kwafin haske a lokaci ɗaya, yana rarraba su tsakanin abubuwan da aka fitar. Idan duk masu tacewa a cikin sarkar suna aiki daidai, a ƙarshen bututun wannan ma'aunin nuni ya kamata ya kai sifili kuma aikin sakin ƙwaƙwalwar ajiya za a kira shi: ms_free(). Idan kiran bai faru ba, to wannan yanki na ƙwaƙwalwar ajiya ba za a sake mayar da shi cikin tudu ba, watau. zai "zuba". Farashin yin amfani da kwafin haske shine asarar ikon iya tantancewa cikin sauƙi (kamar yadda zai kasance tare da kwafi na yau da kullun) wanda tacewa jadawali yana zubar da ƙwaƙwalwar ajiya.

Tunda masu haɓakawa na kafofin watsa labarai ke da alhakin gano ɓoyayyiyar ƙwaƙwalwar ajiya a cikin matatun asali, da alama ba za ku iya gyara su ba. Amma tare da tace aikin ku, ku ne ciyawar farin cikin ku, kuma lokacin da kuka kashe don neman leaks a lambar ku zai dogara ne akan daidaitonku. Don rage lokacin gyara kurakuranku, muna buƙatar duba dabarun gano ɓoyayyiyar ruwa yayin haɓaka masu tacewa. Bugu da ƙari, yana iya faruwa cewa ƙwanƙwasa zai bayyana kanta kawai lokacin da aka yi amfani da tacewa a cikin ainihin tsarin, inda adadin "waɗanda ake tuhuma" na iya zama babba kuma lokacin ƙaddamarwa yana iyakance.

Ta yaya ƙwaƙwalwar ajiya ke bayyana kanta?

Yana da ma'ana don ɗauka cewa a cikin fitowar shirin top zai nuna ƙara yawan adadin ƙwaƙwalwar ajiyar da aikace-aikacenku ya mamaye.

Bayyanar waje zai zama cewa a wani lokaci tsarin zai fara amsawa sannu a hankali zuwa motsi linzamin kwamfuta kuma a hankali ya sake zana allon. Hakanan yana yiwuwa tsarin log ɗin zai girma, yana cinye sarari akan rumbun kwamfutarka. A wannan yanayin, aikace-aikacenku zai fara nuna hali mai ban mamaki, ba amsa umarni ba, ba zai iya buɗe fayil ba, da sauransu.

Don gano abin da ya faru na zub da jini, za mu yi amfani da na'urar tantance ƙwaƙwalwar ajiya (nan gaba ake kira da analyzer). Zai iya zama valgrind (mai kyau labarin game da shi) ko gina a cikin mai tarawa gcc Mai Sanitizer ko wani abu. Idan mai nazarin ya nuna cewa ɗigogi yana faruwa a ɗaya daga cikin matatun jadawali, to wannan yana nufin cewa lokaci yayi da za a yi amfani da ɗayan hanyoyin da aka bayyana a ƙasa.

Hanyar Pines Uku

Kamar yadda aka ambata a sama, idan akwai ƙwanƙwasa ƙwaƙwalwar ajiya, mai tantancewa zai nuna matatar da ta buƙaci rabon ƙwaƙwalwar ajiya daga tulin. Amma ba zai nuna alamar da ta "manta" don mayar da shi ba, wanda, a gaskiya, shine mai laifi. Don haka, mai nazari zai iya tabbatar da tsoronmu kawai, amma ba ya nuna tushen su ba.

Don gano wurin tace "mara kyau" a cikin jadawali, zaku iya tafiya ta hanyar rage jadawali zuwa mafi ƙarancin adadin nodes wanda har yanzu mai nazarin ya gano ɗigogi kuma ya gano matsalar tacewa a cikin ragowar pines uku.

Amma yana iya faruwa cewa ta hanyar rage adadin masu tacewa a cikin jadawali, za ku tarwatsa tsarin mu'amala na yau da kullun tsakanin masu tacewa da sauran abubuwan tsarin ku kuma ɗigon ba zai ƙara bayyana ba. A wannan yanayin, dole ne ku yi aiki tare da cikakken girman hoto kuma kuyi amfani da tsarin da aka zayyana a ƙasa.

Hanyar insulator mai zamewa

Don sauƙin gabatarwa, za mu yi amfani da jadawali wanda ya ƙunshi sarkar tacewa ɗaya. Ana nuna ta a hoton.

Binciko injin Mediastreamer2 VoIP. Kashi na 12

jadawali na yau da kullun wanda, tare da shirye-shiryen watsa shirye-shiryen watsa shirye-shiryen watsa shirye-shiryen watsa shirye-shiryen, ana amfani da matattarar fasaha guda huɗu F1...F4, nau'ikan nau'ikan nau'ikan guda huɗu, waɗanda kuka yi tuntuni kuma ba ku da shakka game da daidaiton su. Koyaya, bari mu ɗauka cewa da yawa daga cikinsu suna da leaks na ƙwaƙwalwar ajiya. Lokacin da muka gudanar da shirinmu don saka idanu akan mai nazarin, mun koyi daga rahotonsa cewa wani tacewa ya buƙaci adadin ƙwaƙwalwar ajiya kuma bai mayar da shi zuwa tarin N sau da yawa ba. Kuna iya tsammani cewa za a sami hanyar haɗi zuwa ayyukan tacewa na cikin nau'in MS_VOID_SOURCE. Ayyukansa shine ɗaukar ƙwaƙwalwar ajiya daga tulin. Dole ne sauran masu tacewa su mayar da shi can. Wadancan. za mu gano gaskiyar lamarin.

Don tantancewa a cikin wane ɓangaren bututun ne aka sami rashin aiki da ke haifar da zubewar ƙwaƙwalwar ajiya, ana ba da shawarar gabatar da ƙarin tacewa wanda kawai ke canza saƙonni daga shigarwa zuwa fitarwa, amma a lokaci guda yana ƙirƙirar kwafin saƙon shigarwa wanda ba haske bane. , amma maimakon "nauyi" na yau da kullun, sannan ya share saƙon da aka karɓa gaba ɗaya. Za mu kira irin wannan tace mai insulator. Mun yi imanin cewa tun da tace mai sauƙi ne, babu yabo a ciki. Kuma wani ƙarin tabbataccen dukiya - idan muka ƙara shi a ko'ina a cikin jadawali, wannan ba zai shafi aikin da'ira ta kowace hanya ba. Za mu siffanta tace-isolator a cikin nau'i na da'irar tare da da'ira biyu.

Muna kunna mai keɓe kai tsaye bayan matatar tushen tushen:
Binciko injin Mediastreamer2 VoIP. Kashi na 12

Muna sake gudanar da shirin tare da na'urar nazari, kuma mun ga cewa a wannan lokacin mai nazari zai zargi insulator. Bayan haka, shi ne yanzu ya ƙirƙiri tubalan bayanai, wanda sai a rasa ta hanyar matattarar rashin kulawa da ba a sani ba (ko masu tacewa). Mataki na gaba shine matsar da insulator tare da sarkar zuwa dama, ta hanyar tacewa ɗaya, sannan sake fara bincike. Don haka, mataki-mataki motsi mai keɓancewa zuwa dama, za mu sami yanayi inda a cikin rahoton mai nazari na gaba adadin tubalan ƙwaƙwalwar “leaked” zai ragu. Wannan yana nufin cewa a wannan matakin insulator yana cikin sarkar nan da nan bayan matsalar tacewa. Idan tace "mara kyau" ɗaya ce kawai, to ɗigon zai ɓace gaba ɗaya. Don haka, mun gurɓata matatar mai matsala (ko ɗaya daga cikin da yawa). Bayan "kafaffen" tacewa, za mu iya ci gaba da matsar da mai keɓewa zuwa dama tare da sarkar har sai mun kayar da ƙwaƙwalwar ƙwaƙwalwa gaba ɗaya.

Aiwatar da tacewa

Aiwatar da keɓancewa yayi kama da tacewa na yau da kullun. Fayil na kai:

/* Файл iso_filter.h  Описание изолирующего фильтра. */

#ifndef iso_filter_h
#define iso_filter_h

/* Задаем идентификатор фильтра. */
#include <mediastreamer2/msfilter.h>

#define MY_ISO_FILTER_ID 1024

extern MSFilterDesc iso_filter_desc;

#endif

Tace da kanta:

/* Файл iso_filter.c  Описание изолирующего фильтра. */

#include "iso_filter.h"

    static void
iso_init (MSFilter * f)
{
}
    static void
iso_uninit (MSFilter * f)
{
}

    static void
iso_process (MSFilter * f)
{
    mblk_t *im;

    while ((im = ms_queue_get (f->inputs[0])) != NULL)
    {
        ms_queue_put (f->outputs[0], copymsg (im));
        freemsg (im);
    }
}

static MSFilterMethod iso_methods[] = {
    {0, NULL}
};

MSFilterDesc iso_filter_desc = {
    MY_ISO_FILTER_ID,
    "iso_filter",
    "A filter that reads from input and copy to its output.",
    MS_FILTER_OTHER,
    NULL,
    1,
    1,
    iso_init,
    NULL,
    iso_process,
    NULL,
    iso_uninit,
    iso_methods
};

MS_FILTER_DESC_EXPORT (iso_desc)

Hanyar maye gurbin ayyukan sarrafa ƙwaƙwalwar ajiya

Don ƙarin bincike mai zurfi, mai watsa labaran watsa labaru yana ba da damar maye gurbin ayyukan samun damar ƙwaƙwalwar ajiya tare da naka, wanda, ban da babban aikin, zai rubuta "Wane, inda kuma me yasa". Ana maye gurbin ayyuka uku. Ana yin haka kamar haka:

OrtpMemoryFunctions reserv;
OrtpMemoryFunctions my;

reserv.malloc_fun = ortp_malloc;
reserv.realloc_fun = ortp_realloc;
reserv.free_fun = ortp_free;

my.malloc_fun = &my_malloc;
my.realloc_fun = &my_realloc;
my.free_fun = &my_free;

ortp_set_memory_functions(&my);

Wannan fasalin yana taimakawa a lokuta da na'urar tantancewa ta rage aikin tacewa ta yadda aikin tsarin da aka gina da'irar mu ya lalace. A cikin irin wannan yanayi, dole ne ka watsar da mai nazarin kuma amfani da maye gurbin ayyuka don aiki tare da ƙwaƙwalwar ajiya.

Mun yi la'akari da algorithm na ayyuka don jadawali mai sauƙi wanda ba ya ƙunshi rassa. Amma ana iya amfani da wannan hanyar zuwa wasu lokuta, ba shakka tare da ƙarin rikitarwa, amma ra'ayin ya kasance iri ɗaya.

A cikin kasida ta gaba, za mu dubi batun kimanta nauyi akan ticker da kuma hanyoyin da za a magance wuce kima lodin kwamfuta a cikin magudanar ruwa.

source: www.habr.com

Add a comment