The Readers Writers Problem

แชร์
ฝัง
  • เผยแพร่เมื่อ 31 พ.ค. 2024
  • Operating System: The Readers Writers Problem
    Topics discussed:
    Classic Problems of Synchronization:
    1. The Readers Writers Problem.
    2. Solution to the Readers Writers Problem using Semaphores.
    Follow Neso Academy on Instagram: @nesoacademy (bit.ly/2XP63OE)
    Follow me on Instagram: @jaiz_itech (bit.ly/2M3xyOa)
    Contribute: www.nesoacademy.org/donate
    Memberships: bit.ly/2U7YSPI
    Books: www.nesoacademy.org/recommend...
    Website ► www.nesoacademy.org/
    Forum ► forum.nesoacademy.org/
    Facebook ► goo.gl/Nt0PmB
    Twitter ► / nesoacademy
    Music:
    Axol x Alex Skrindo - You [NCS Release]
    #OperatingSystemByNeso #OperatingSystem #ProcessSynchronization #ReadersWritersProblem

ความคิดเห็น • 80

  • @miloradowicz
    @miloradowicz 2 ปีที่แล้ว +228

    I think the
    if (readcount == 1) wait(wrt);
    part would be best explained like this: when we are reading, no one should be allowed to write, thus the wrt semaphore should be acquired; so if we are the _first_ reader, we acquire it (and wait till it's released if someone's still writing); but if someone's already reading, it means they have already acquired wrt, so we just skip this part.
    Similarly, in the
    if (readcount == 0) signal(wrt);
    line, we check if we are the last reader, and if we are, it's our responsibility to release wrt, thus allowing others to write.

    • @chadj1797
      @chadj1797 2 ปีที่แล้ว +1

      Yep, this works too!

    • @napoleon3242
      @napoleon3242 2 ปีที่แล้ว +19

      @@chadj1797 it's not "this works too!", it's how it's supposed to work

    • @eylulmood4830
      @eylulmood4830 ปีที่แล้ว +3

      you're absolutly right

    • @ScopedKilz
      @ScopedKilz ปีที่แล้ว +5

      You are the GOAT

    • @surajr4757
      @surajr4757 ปีที่แล้ว +3

      Thank you so much, my doubt cleared from your comment, are you from Russia?

  • @aniketdas3406
    @aniketdas3406 6 หลายเดือนก่อน +9

    If someone like me who's struggling to understand how multiple processes can read without allowing any other process to write, it can be explained in this way:
    When the first reader process enters it decrements the wrt and makes it 0 so that no writer process can execute untill the last reader has done its job and signals wrt.
    Therefore, after the first reader process, other readers which will try to read concurrently will skip the if(readcount ==1) part since wrt is already decremented by the first read process and write() operations are halted.
    I hope it helped you :)

  • @shaneyaw4542
    @shaneyaw4542 2 ปีที่แล้ว +35

    This was a good explanation of something that is not explained well in the textbooks. Good job.

  • @elconnero
    @elconnero 2 หลายเดือนก่อน +3

    Dude you are amazing, I am learning more in one video than a full lecture my professor gives.

  • @-shultz
    @-shultz ปีที่แล้ว +4

    12:18 readcnt >= 1 cuz if it is updated to more than 1 writer process can start updating .

  • @pranavbakare8922
    @pranavbakare8922 2 ปีที่แล้ว +3

    This is one of the Best explanations!!!!!

  • @user-ytuser
    @user-ytuser ปีที่แล้ว

    thanks, it was very nice explanation, crisp and clear

  • @user-is6fq5xm7b
    @user-is6fq5xm7b 8 หลายเดือนก่อน +2

    Thanks a lot... It was soo confusing before and this was soo helpful❤

  • @shahinsheikh6964
    @shahinsheikh6964 ปีที่แล้ว +5

    I am studying in the morning and today is my exam belive me i wasnt able to understand and was very tensed and frustrated bcoz of this topic but when i visited this channel i felt its soo easy.. thanku so much ❤️

  • @jajnyaseniswain8472
    @jajnyaseniswain8472 10 หลายเดือนก่อน

    Well explained,... Got every bit of this problem

  • @anjalisoni2371
    @anjalisoni2371 7 หลายเดือนก่อน

    Nice explanation thanks for supporting us!

  • @darshil-oh2le
    @darshil-oh2le 6 หลายเดือนก่อน +1

    Such a nice explaination , make topic very easy 📌📌

  • @justkflesh
    @justkflesh 2 ปีที่แล้ว +4

    It is interesting. When the lecture becomes more complex, the views drop significantly. I am very thank you, you keep sharing your knowledge.

    • @huseyinsenol1769
      @huseyinsenol1769 ปีที่แล้ว

      Cut off the bullshit and just study your thing.

  • @khomo12
    @khomo12 ปีที่แล้ว

    Very good explanation!

  • @luciec1889
    @luciec1889 2 ปีที่แล้ว +1

    Very well explained! Thank you so much!!

  • @cyberssam654
    @cyberssam654 ปีที่แล้ว

    Very nice explanation sir 👍👍

  • @user-hg6lo8sj1h
    @user-hg6lo8sj1h 4 หลายเดือนก่อน +1

    i have one doubt imagine 2 reader and default mutex is 1 . if 1st reader comes in wait he makes mutex to 0 .Inside if condition reader1 will restrict writer .After restricting writer he is allowing one more reader by signal(mutex) so mutex is 1 .reader 2 uses this and now mutex is 0 and reader 2 again increases to 1 . if user 1 has to level. before leaving wait(mutex) he will perform so it will 0 now if reader 2 has to leave he has to perform wait(mutex) now its a dead lock for reader2 any body can explain

  • @nikhil78980
    @nikhil78980 3 หลายเดือนก่อน

    now signal(wrt) means both readers and writers can access it right?

  • @NisargaChowdaiah
    @NisargaChowdaiah 2 หลายเดือนก่อน

    Thank you so much 😊

  • @hetubhasingh4374
    @hetubhasingh4374 ปีที่แล้ว

    Well explained

  • @manojkumarn468
    @manojkumarn468 2 ปีที่แล้ว +1

    Thanks

  • @camuflagehugo5137
    @camuflagehugo5137 2 ปีที่แล้ว +2

    It would be nice if there was an implementation in C.

  • @rishujain0721
    @rishujain0721 11 หลายเดือนก่อน +2

    Best explanation ❤
    Our teacher taught this wrong in the class..dumb

  • @bryanshi3774
    @bryanshi3774 2 ปีที่แล้ว +2

    Great video!
    Why do we need mutex semaphore to ensure the mutual exclusion of readcnt?

    • @bhaskarmishra8479
      @bhaskarmishra8479 2 ปีที่แล้ว

      well, you may know about the race condition. To avoid it we need a mutex

    • @minhhoangcong9155
      @minhhoangcong9155 11 หลายเดือนก่อน

      @@bhaskarmishra8479 can you tell more about it ?

  • @nainaparmar4105
    @nainaparmar4105 ปีที่แล้ว

    mutex is a binary semaphore , then wrt is counting semaphore?

  • @debarghyaadhikari5558
    @debarghyaadhikari5558 ปีที่แล้ว +1

    Good one

  • @adityarajsinghgour3113
    @adityarajsinghgour3113 2 ปีที่แล้ว +2

    @Neso Academy signal(mutex) is outside the if block or inside the if block ?

  • @marvolo6092
    @marvolo6092 2 ปีที่แล้ว +2

    this program seems to give more priority to the read operations. So going by the code, once a read operation acquires the wrt semaphore, it will only release it if readcount is 0 - thus if read processes keep coming in, I believe it will cause starvation for the write process, isn't it? So bounded waiting for effective process synchronization is not satisfied. How to improve this to implement bounded waiting?

    • @JohnR436
      @JohnR436 2 ปีที่แล้ว

      Any suggestions?

    • @simon8284
      @simon8284 2 ปีที่แล้ว

      Do we have to learn these codes for theory exams or its just to learn the basic theory?

    • @dhyansai6186
      @dhyansai6186 ปีที่แล้ว

      I guess we need to create an other semaphore to maintain a queue that involves both readers as well as writers.

  • @ABHISEKBISWASB
    @ABHISEKBISWASB ปีที่แล้ว +2

    I think the signal(mutex) should come before : if(readcnt==0) so that after decrementing the readcnt the other readers can enter before releasing the wrt

    • @30benasabu65
      @30benasabu65 ปีที่แล้ว +1

      I think you have missed something the control goes to readcnt==0 if there are no readers left so in such a case the wrt lock must be released and mutex must also be released,
      The mutex lock held by a reader is released after it enters the critical section (given as signal mutex), so this ensures other readers can enter the critical section. here indentations are used to separate the code you may have missed it.

    • @reverbism
      @reverbism ปีที่แล้ว

      @@30benasabu65
      can Signal(mutex) come before the signal(wrt)?

  • @ayahamad5931
    @ayahamad5931 6 หลายเดือนก่อน

    May god bless you with the Health ❤❤

  • @samarthtandale9121
    @samarthtandale9121 10 หลายเดือนก่อน

    Awesome !!!

  • @JonathanSteadman2003
    @JonathanSteadman2003 2 ปีที่แล้ว +2

    Great video :)

  • @arfatbagwan48
    @arfatbagwan48 7 หลายเดือนก่อน

    Salute to you

  • @dfged9654
    @dfged9654 2 ปีที่แล้ว +3

    Is the last signal(mutex) inside reader process having a wrong indentation?

    • @fritz6600
      @fritz6600 2 ปีที่แล้ว

      They're following c style syntax for writing their pseudocode, in C
      if (...) statement1; is same as doing
      if (...) {statement1; statement 2; ....}
      Which is to say, immediately execute whatever that comes after "if", if "if's" condition is true, that "whatever" can be a block of statements or a single statement.
      Edit: Indentation does not matter in C, all that matters is, semicolon and curly braces.
      Edit2: int main() needs a curly-brace because int main is a function definition. Function definition needs curly braces. (Why? I do not know)

    • @nitpal9958
      @nitpal9958 2 ปีที่แล้ว

      I think so too. Doesn't make sense to wait till the last reader to release mutex. Correct me if I'm wrong.

  • @pamp3657
    @pamp3657 ปีที่แล้ว

    good video

  • @mohamedredha9586
    @mohamedredha9586 2 ปีที่แล้ว

    if readcoun==0 signal wrt / why should we wait all the readers to execute so we allow the writer to enter , perhaps the writer was there before some numbers of writers came , isnt this a sort of privilege that shouldn't happen in mutual exclusion ? (sorry for this broken English lol)

    • @danishsharma496
      @danishsharma496 ปีที่แล้ว

      more readers can be there , but writer can only come when readers become 0 so its signalling

  • @minhhoangcong9155
    @minhhoangcong9155 11 หลายเดือนก่อน

    I think the mutex for read count is no need

  • @walidslimani
    @walidslimani 19 วันที่ผ่านมา

    i mean if you think about it . a reader is like a consumer and a writer is like a productor . so why not same logic

    • @avnarayana2414
      @avnarayana2414 3 วันที่ผ่านมา +1

      In readers writers problem we are used bounded buffer with fixed size and at there our main goal is to prevent overflow and underflow.
      But at readers writers problem the process is accessing shared resources like database or files. Here our goal is to allow concurrent reads and exclusive writes.
      Like this there are various key differences between those two problems bro

  • @hayden4127
    @hayden4127 2 ปีที่แล้ว +2

    that indenting is so confusing in reader process

    • @andrewbabilonia77
      @andrewbabilonia77 2 ปีที่แล้ว +4

      I believe this is the proper indentation.
      do {
      wait(mutex);
      readcount++;
      if(readcount == 1)
      wait(wrt);
      signal(mutex);
      /*current reader performs reading*/
      wait(mutex);
      readcount--;
      if(readcount == 0)
      signal(wrt);
      signal(mutex);
      }while(TRUE);
      please correct if I'm wrong.

    • @danishsharma496
      @danishsharma496 ปีที่แล้ว

      @@andrewbabilonia77 ya true I checked on Internet loll

  • @azadr
    @azadr 2 ปีที่แล้ว

    Pls upload in neso website and app also simultaneously

    • @rajeshprajapati4863
      @rajeshprajapati4863 2 ปีที่แล้ว

      I think it's already there.

    • @azadr
      @azadr 2 ปีที่แล้ว +1

      @@rajeshprajapati4863 no not all the video available

    • @rajeshprajapati4863
      @rajeshprajapati4863 2 ปีที่แล้ว

      @@azadr OS Subject is complete on app and website too. Check Again.

    • @azadr
      @azadr 2 ปีที่แล้ว +1

      @@rajeshprajapati4863not only with respective to os I was talking about all other subjects which were upload in youtube but not on neso

  • @hecticgamings
    @hecticgamings 2 หลายเดือนก่อน

    Chota packet bada dhamka😂
    Writers process 😊 readers process😮😢

  • @mosheklein5090
    @mosheklein5090 ปีที่แล้ว +6

    I see a problem with this solution : while reader 1 is currently reading, reader 2 can enter, readcnt is now =2, reader 1 finishes reading, he can’t continue to next line because the condition of readcnt ==0 isnt met. Now that readcnt is ==1 again, reader 2 continues. Now At this same time reader 2 can’t continue either because she cant get past the wait(wrt) condition since the lock is still held by reader 1. Reader 1 is waiting for reader 2 and vice versa. A traffic jam indeed!

    • @AmpangNation
      @AmpangNation ปีที่แล้ว +11

      last line signal(mutex) shouldn't be in the indentation (if statement), should be outside of the if statement, so that it won't have this problem I guess

    • @williamhogrider4136
      @williamhogrider4136 16 วันที่ผ่านมา

      ​@@AmpangNation Yes I think you're right

  • @edanuryardm8252
    @edanuryardm8252 6 หลายเดือนก่อน

    adamsin

  • @saurabhojha2832
    @saurabhojha2832 2 ปีที่แล้ว

    🙏🙏🙏❤️❤️❤️❤️

  • @modemharikumar9232
    @modemharikumar9232 2 ปีที่แล้ว +6

    1st comment

  • @lydiaarabi4811
    @lydiaarabi4811 ปีที่แล้ว