logo

Процесс Вс. Тхреад | Разлика између процеса и нити

'Разлика између процеса и нити' је једно од често постављаних питања техничких интервјуа. Оба процеса и нити су међусобно повезани и веома слични, па стога стварају забуну да се разумеју разлике између њих. Процес и нит су независна секвенца извршења, али се оба разликују на начин да се процеси извршавају у различитим меморијским просторима, док се нити истог процеса извршавају у заједничком меморијском простору.

У овој теми ћемо разумети кратак увод у процесе и нити и које су друге разлике између њих.

Процесс Вс. Тхреад

Шта је процес?

Процес је инстанца програма који се извршава. Када покренемо програм, он се не извршава директно. Потребно је неко време да се прате сви кораци потребни за извршавање програма, а праћење ових корака је познато као процес.

Процес може креирати друге процесе за обављање више задатака у исто време; створени процеси су познати као клон или дете процес , а главни процес је познат као родитељски процес . Сваки процес садржи свој меморијски простор и не дели га са другим процесима. Познат је као активни ентитет. Типичан процес остаје у доњем облику у меморији.

Процесс Вс. Тхреад

Процес у ОС-у може остати у било ком од следећих стања:

    НОВА: Креира се нови процес.РЕАДИ: Процес је спреман и чека да буде додељен процесору.РУННИНГ: Програм се извршава.ВАИТИНГ: Чека да се неки догађај деси или догоди.ТЕРМИНАТЕД: Извршење завршено.

Како функционишу процеси?

Када почнемо да извршавамо програм, процесор почиње да га обрађује. Потребно је следеће кораке:

  • Прво, програм се након превода учитава у меморију рачунара у бинарном коду.
  • Програму је потребна меморија и други ОС ресурси за његово покретање. Ресурси као што су регистри, програмски бројач и стек и ове ресурсе обезбеђује ОС.
  • Регистар може имати инструкцију, адресу за складиштење или друге податке који су потребни за процес.
  • Бројач програма одржава праћење секвенце програма.
  • Стек садржи информације о активним потпрограмима рачунарског програма.
  • Програм може имати различите његове инстанце, а свака инстанца покренутог програма позната је као појединачни процес.

Карактеристике процеса

  • Сваки пут када креирамо процес, потребно је да извршимо посебан системски позив за сваки процес у ОС. Тхе виљушка () функција креира процес.
  • Сваки процес постоји унутар своје адресе или меморијског простора.
  • Сваки процес је независан и ОС га третира као изолован процес.
  • Процесима је потребан ИПЦ (Интер-процесс Цоммуницатион) да би међусобно комуницирали.
  • Није потребна одговарајућа синхронизација између процеса.

Шта је Тхреад?

Нит је подскуп процеса и познат је и као лаки процес. Процес може имати више од једне нити, а тим нитима независно управља планер. Све нити унутар једног процеса су међусобно повезане. Нити имају неке уобичајене информације, као нпр сегмент података, сегмент кода, датотеке итд., који се деле са вршњачким нитима. Али садржи сопствене регистре, стек и бројач.

Процесс Вс. Тхреад

Како нит функционише?

Као што смо расправљали да је нит подпроцес или извршна јединица унутар процеса. Процес може да садржи једну нит до више нити. Нит ради на следећи начин:

  • Када се процес покрене, ОС му додељује меморију и ресурсе. Свака нит унутар процеса дели меморију и ресурсе само тог процеса.
  • Нити се углавном користе за побољшање обраде апликације. У стварности, истовремено се извршава само једна нит, али због брзог пребацивања контекста између нити ствара се илузија да се нити покрећу паралелно.
  • Ако се једна нит извршава у процесу, то је познато као једнонитни А ако се више нити извршава истовремено, то је познато као мултитхреадинг.

Врсте нити

Постоје две врсте нити, а то су:

1. Нит на нивоу корисника

Као што име говори, нитима на нивоу корисника управљају само корисници, а кернел нема своје информације.

Они су бржи, лакши за креирање и управљање.

Кернел узима све ове нити као један процес и обрађује их само као један процес.

Нитове на нивоу корисника имплементирају библиотеке на нивоу корисника, а не системски позиви.

2. Нит на нивоу језгра

Нитовима на нивоу кернела рукује оперативни систем и њиме управља његово језгро. Ове нити су спорије од нити на нивоу корисника јер информацијама о контексту управља језгро. Да бисмо креирали и имплементирали нит на нивоу кернела, потребно је да извршимо системски позив.

Карактеристике Тхреад-а

  • Нити деле податке, меморију, ресурсе, датотеке, итд., са својим равноправним нитима унутар процеса.
  • Један системски позив је способан да креира више од једне нити.
  • Свака нит има свој стек и регистар.
  • Нити могу директно да комуницирају једна са другом пошто деле исти адресни простор.
  • Нити морају бити синхронизовани да би се избегли неочекивани сценарији.

Кључне разлике између процеса и нити

  • Процес је независан и не садржи се у другом процесу, док су све нити логички садржане у процесу.
  • Процеси имају велику тежину, док су нити лагане.
  • Процес може постојати појединачно јер садржи сопствену меморију и друге ресурсе, док нит не може имати своје индивидуално постојање.
  • Није потребна одговарајућа синхронизација између процеса. Насупрот томе, нити треба да буду синхронизоване како би се избегли неочекивани сценарији.
  • Процеси могу да комуницирају једни са другима користећи само међупроцесну комуникацију; насупрот томе, нити могу директно да комуницирају једна са другом пошто деле исти адресни простор.

Табела разлика између процеса и нити

Процес Тхреад
Процес је инстанца програма који се извршава или обрађује. Нит је сегмент процеса или лагани процес којим распоређивач управља независно.
Процеси су независни један од другог и стога не деле меморију или друге ресурсе. Нити су међусобно зависне и деле меморију.
Сваки процес оперативни систем третира као нови процес. Оперативни систем узима све нити на нивоу корисника као један процес.
Ако оперативни систем блокира један процес, онда други процес може да настави извршавање. Ако се било која нит на нивоу корисника блокира, све њене равноправне нити се такође блокирају јер их ОС све узима као један процес.
Пребацивање контекста између два процеса траје много времена јер су тешки у поређењу са нитима. Пребацивање контекста између нити је брзо јер су веома лагане.
Сегмент података и сегмент кода сваког процеса су независни од другог. Нити деле сегмент података и сегмент кода са својим равноправним нитима; стога су исти и за друге нити.
Оперативном систему је потребно више времена да прекине процес. Нити се могу прекинути за врло кратко време.
Креирање новог процеса одузима више времена јер сваки нови процес узима све ресурсе. Нити је потребно мање времена за креирање.