L-3.9: What is Binary Semaphore | Easiest Explanation | Operating system

Поділитися
Вставка
  • Опубліковано 21 сер 2024

КОМЕНТАРІ • 420

  • @PrabhatSingh-mf7mx
    @PrabhatSingh-mf7mx 2 роки тому +497

    For those who have doubt about P1, when P1 goes to sleep() then it was placed in suspended list so when it will wake up it does not execute the whole down operation again but it will resume from that point of sleep() part and directly enters in critical section.

    • @omparkashsuna8986
      @omparkashsuna8986 2 роки тому +5

      was it a joke or real?

    • @PrabhatSingh-mf7mx
      @PrabhatSingh-mf7mx 2 роки тому +12

      @@omparkashsuna8986 no bro its a joke....just laugh and be happy🤗🤗

    • @rupeshdharme9017
      @rupeshdharme9017 2 роки тому +33

      I was going to ask the same... Thank you. Because if it started again then it will again be suspended as the semaphore is 0.

    • @rahuldalal849
      @rahuldalal849 2 роки тому

      Bhai jo tumne explain kiya Comment vo thik h kya?

    • @PrabhatSingh-mf7mx
      @PrabhatSingh-mf7mx 2 роки тому +50

      @@rahuldalal849 yes sir i added this comment after refering different website like stack overflow...i have the same doubt thats why i added here so others also understand

  • @suryasikharej8116
    @suryasikharej8116 3 роки тому +103

    Awesome lec. Btw he forgot to mention one thing that p() and v() are atomic in nature. That is p and v are executed like a sngle statement by the processes; That is p() and v() are indivisible. Hope it makes sense.

    • @amarnathprasad9986
      @amarnathprasad9986 2 роки тому +10

      I think this is important to know because otherwise it's as good as locking in regards to mutual exclusion.

    • @shivaaggrawal5776
      @shivaaggrawal5776 2 роки тому +2

      this is really important comment

    • @nerd-boiii
      @nerd-boiii Рік тому +1

      thnx for this comment .....after watching the prev video I was wondering why we have multiple lines of code in semaphore wont preemption cause problems ......ty u cleared y doubt

    • @--xx--5800
      @--xx--5800 3 місяці тому

      Thank you for the explanation😊

  • @aliyazdan4577
    @aliyazdan4577 2 роки тому +61

    Value of semaphore should be set to 1 in up section, even if the Block list is non empty, otherwise, the waking process won't be able to enter critical section

  • @heathledger7291
    @heathledger7291 3 роки тому +49

    im binge watching ur os videos, they r really well made,i dont know why our college faculty doesnt teach like this.
    hatsoff to ur efforts

  • @ralsei7170
    @ralsei7170 3 роки тому +37

    Alright I might he wrong here but check this:
    Sleep is a function which stops execution of any process until it is woken up by any other process and wake up is function which wakes up sleeping process
    So let's say if P1 enters CS it will set S = 0 and when P2 wants to enter CS it will be put to sleep(you might think it is currently in an infinite loop).
    When P1 executes up code it will check if Suspend queue is empty. Since it's not cause of P2, it will wake up P2 from the point it was put to sleep i.e. from else code(you can also say that it breaks that infinite loop).
    Now you gotta understand that s is not the only factor that decides if process enters CS. For example, let's say there is no code in down, all processes wanting to enter CS will enter right, since there is no condition which blocks them
    Now understand that P2 will wake up and start executing from when it was set to sleep i.e. from else state, it will come out of 2 ending paranthesis and enter CS.
    Hope you understood what I said🤘

    • @jivanraundal2063
      @jivanraundal2063 2 роки тому +2

      well explained.. Thanks :)

    • @avrmini
      @avrmini Рік тому

      For this problem see this Solution video on 2x.
      ua-cam.com/video/VcVbUbPNIfw/v-deo.html

  • @venkatasreeram
    @venkatasreeram 3 роки тому +15

    I believe in my concentration of learning the concepts of Operating System. Today I wrote my semester exam well with the help of your lectures sir🙏🙏🙏 I believe that I will get some knowledge along with your blessings through your lectures to achieve my goal as GATE TOPPER. Thanks alot !!!🤗

    • @amanahmed6057
      @amanahmed6057 2 роки тому +3

      did u passed the exam or not?? that is the main question

    • @venkatasreeram
      @venkatasreeram 2 роки тому +10

      @@amanahmed6057 I got O grade. I repeat O grade☺️🤗 91-100 marks in JNTUK validation. Tha k you soo much sir

    • @uniqueelsa5959
      @uniqueelsa5959 2 роки тому +2

      Cool! Would ya like to talk to me on insta? Your goal seems similar to mine and I'm interested in having a talk about gate with you!

  • @aparnashome6112
    @aparnashome6112 4 роки тому +12

    The processes in the suspend queue once tried to enter in the CS but failing to enter into CS were added to the suspend queue. When the current process finishes its execution and comes out of the CS, it does not make the semaphore 1, semaphore remains 0. As a result no new process (which has not tried to enter CS before) will be able to enter in the CS, rather they will get added up in the suspend queue. On the other hand the first process in the suspend queue(FIFO) will be fetched from the suspend queue will be transfered to the ready queue and it will get the chance to enter the CS directly without performing the wait() section. One process at a time should be fetched from the suspend queue so that there will be no conflict to enter in the CS.

  • @sayantabhattacharjee9808
    @sayantabhattacharjee9808 3 роки тому +19

    As I understood, the code for UP in the video is correct.
    The state till which the process has been executed is stored while putting it into the block queue
    So when it is executed after P2 is executed, the process P1 will execute the remaining code , after the down function.
    Then after executing the critical section it will execute the up() function, that will update the S.value=1 . And the CPU will again reach the starting state

    • @super_singing107
      @super_singing107 3 роки тому +4

      V(Semaphore s)
      {
      if (s.q is empty) {
      s.value = 1;
      }
      else {

      // select a process from waiting queue
      s.value = 1;
      Process p=q.pop();
      wakeup(p);
      }
      }

    • @sagunsangwan4554
      @sagunsangwan4554 2 роки тому +1

      @@super_singing107 what if there are two processes in block state. And in else part you are assigning value = 1, so if some third process will execute down() now then it'll enter into the critical section but according to FIFO 2nd process which was blocked should get chance. Correct me if I am wrong?

  • @KRISHNAKUMAR-rk7bv
    @KRISHNAKUMAR-rk7bv 3 роки тому +5

    Best explanation on OS and its sub topics on youtube....Thanks sir....

  • @mdrayeesahmad3569
    @mdrayeesahmad3569 2 роки тому +2

    this year in barc 2021 exam one question reated to this topic has been asked and that question was - there were four options given and they were as follows -- a)down-v,signal b)up-p,wait c)down -p,wait d)none of these , so sir i learned all the cse subjects with ur videos only and it helps me a lot in my exam thankyou sir for ur great support to all ,,,,.love from patna

  • @user-gd3xp7gf9r
    @user-gd3xp7gf9r 8 місяців тому +1

    Hands Down the Best Teacher on YT to learn about theoretical topics
    Thank You sir 🙏🙏

  • @mtrk_79274
    @mtrk_79274 5 років тому +154

    I think
    up(Semaphore S){
    if(Suspended list is empty){
    S.value=1;
    }
    else{
    S.value=1;
    remove one process from suspended list:wakeUP();
    }
    }

    • @prashantrastogi6049
      @prashantrastogi6049 5 років тому

      yes

    • @vikman59
      @vikman59 5 років тому

      Exactly

    • @mrinmoyhalder7293
      @mrinmoyhalder7293 5 років тому +2

      I'm also thinking same

    • @jamalahmad3378
      @jamalahmad3378 4 роки тому +6

      Yes it should be other wise how the blocked process will enter critical section

    • @aabid3375
      @aabid3375 4 роки тому +4

      Yes that is minor mistake otherwise there will again be a deadlock

  • @sameerraturi8431
    @sameerraturi8431 3 роки тому +5

    In comment section many people are thinking that there should be s.value =1 in the else part before wake up call for the process in up(s) ... just take these case
    at anytime the suspended list contains process p2,p3,p4 and process p1 is in cs now after execution in the cs it will have to go to the up(s) now in up(s) our process p2 is wake up() now when the p2 is set to sleep till that line all the execution is over so now p2 will directly go to the cs so the value of s should be 0 not 1 and thats why the code doesn't contain s.value=1 in the else part....now when all the p2,p3,p4 process get executed in the similar way the queue will become empty the value of s can be set as 1 and new process can enter into the cs.

    • @relentlessrock
      @relentlessrock 2 роки тому

      Thanks!
      So will I be correct in saying that here the Down code is not working as an Entry code for critical section? In all previous examples, processes that failed to reach the critical section had to again follow entry code instructions.

    • @avrmini
      @avrmini Рік тому

      For this problem see this Solution video on 2x.
      ua-cam.com/video/VcVbUbPNIfw/v-deo.html

    • @--xx--5800
      @--xx--5800 3 місяці тому

      Thank you for the explanation ☺️

  • @studentsheaven-d8v
    @studentsheaven-d8v 3 роки тому +7

    Great Work Sir...Huge respect and Love from PAKISTAN.

  • @phil_ka
    @phil_ka 2 роки тому +11

    In case a process is in the waiting queue, you have mentioned in the Down code that we'll wake it up, and that's all good, but I think after waking it up we also have to set S to 1 so that the newly awakened process could enter the critical section.

    • @amoghupadhayay2502
      @amoghupadhayay2502 2 роки тому +9

      The process will wake up and will not repeat what it has already done . it will enter CS and not execute the down code again

    • @abhishekmishra8338
      @abhishekmishra8338 Рік тому +2

      tum dono ne same shirt pehna hua hai

    • @phil_ka
      @phil_ka Рік тому

      @@abhishekmishra8338 😂

  • @Shivam5ingh
    @Shivam5ingh 2 роки тому +2

    You are a good teacher of OS. I am proud of you sir.

  • @kshitijtripathi3250
    @kshitijtripathi3250 3 роки тому +26

    considering 2 processes p1 and p2 , suppose p2 enters CS by down operation so it will make s=0 and when p1 executes down code it will go in suspended state , so when p2 executes up operation it will wake up p1 but value of s will be still 0 so how will p1 execute the down code because the value of s=0 still.

    • @Kitzey2k
      @Kitzey2k 3 роки тому +2

      Same doubt

    • @abrarulhaqshaik
      @abrarulhaqshaik 3 роки тому

      @@Kitzey2k same here, have you got any solution for that?

    • @Kitzey2k
      @Kitzey2k 3 роки тому

      @@abrarulhaqshaik No

    • @upasonabiswas6783
      @upasonabiswas6783 3 роки тому +17

      The state till which the process has been executed is stored while putting it into the block queue
      So when it is executed after P2 is executed, the process P1 will execute the remaining code , after the down function.
      Then after executing the critical section it will execute the up() function, that will update the S.value=1 . And the CPU will again reach the starting state. [I copied this answer from sayanta bhattacharjee, He answered it just perfectly..]

    • @abirpaul9027
      @abirpaul9027 3 роки тому

      @@upasonabiswas6783 so if p1 was in block list then S=0 and suppose p2 finishes executing then it will goto exit section code it will just wakeup p1 but how is it making s=1 again it's only going to do that if the list was not empty! If you find anything wrong correct me

  • @aradhyajain9575
    @aradhyajain9575 5 років тому +5

    just because u r HUMBLE and u made it easy for me to understand....i like it & subscried ur channel.......GREAT STUFF........would love to have some lectures on C Programming.

  • @kunalpilley3317
    @kunalpilley3317 3 роки тому +4

    Else block in UP should be updated as follows
    Select a process and wake up
    //Chk again
    If (list is empty)
    S.value = 1
    The only the value of semaphore can be made 1 again
    To allow other process to enter in CS .

  • @ita755khushalkoli2
    @ita755khushalkoli2 3 роки тому +17

    I found these tutorials but then I started to see some similarities in the diagrams that my prof presented. I checked those ppt's and realized my prof had used your examples as screenshots in her ppt

  • @akhilkrishna436
    @akhilkrishna436 Рік тому +1

    For those who have confusion
    p1,p2,p3 processes are there
    imagine p1 enters the CS (critical section ) first so S=0
    then p2 and p3 tries to enter into CS but cant bcz s=0 and p2 ,p3 goes to block stage
    now p1 finished executing its CS then it will execute the UP so acco to fifo p2 is removed from blocked stage and is allowed to enter into its CS ( ie p2 got blocked in the last line of DOWN function so when p2 is wake up it will start executing from the next line (after sleep() ) the next line after DOWN function is CS section )
    p2 will start executing from the point it got blocked not from beginning

  • @priyankajhamb7061
    @priyankajhamb7061 3 роки тому +19

    Sir, please clear my doubt, when a process P1 wake up, then also Semaphore value is 0, then how it will enter into critical section, instead of this, It will again go back to suspend list.

  • @shivanibhavsar852
    @shivanibhavsar852 3 роки тому +6

    Code is absolutely correct.. sir might forgot to mention that the suspended process will restart from the same point where it got stopped last.. thank you for this series sir.. ❤️❤️

    • @lokeshpanda5138
      @lokeshpanda5138 3 роки тому

      ❤❤❤❤❤❤💕

    • @pramodyadlapalli9336
      @pramodyadlapalli9336 3 роки тому

      yah but in the previous video sir said after wake up process goes to ready queue and rechecks the condition of entry to enter into cs

  • @poonammane9792
    @poonammane9792 5 років тому +6

    Sir ur all vedios we understand very clearly tq sir👍

  • @suyashnachankar9342
    @suyashnachankar9342 5 років тому +14

    At 7:05 you said if a process is exiting Critical Section and S = 1. How S can be 1 if there is a process in Critical Section in the case of Binary Semaphore ?

  • @vsk9630
    @vsk9630 3 роки тому +2

    Saras👌👌👌

  • @kartikdutt2661
    @kartikdutt2661 3 роки тому +6

    In case if you're wondering if the up function is wrong, it is not. Code is correct. Once the suspended process is wakened up, it will directly execute the critical section, it will not execute the down function as it has already been executed.

    • @lucidlynxxx
      @lucidlynxxx 3 роки тому +1

      noh youre wrong, after wake up, it sent to waiting queue means it can again try to get executed, but the code is wrong as the value of s remains 0 in up() code, so its not going to get executed for more information contact your os teacher...

    • @geeteshchallur1034
      @geeteshchallur1034 3 роки тому

      @@lucidlynxxx I think he's right because I have checked the code in other sources and it is right.

  • @ahmedkhan4546
    @ahmedkhan4546 3 роки тому +4

    This was so helpful man, your teaching is amazing keep it up bro!!

  • @oqant0424
    @oqant0424 2 роки тому +1

    literally u teach better than IIT profs!

  • @ajaj1613
    @ajaj1613 3 роки тому +4

    Thanku sir for all ur video's it's really help me to alot understand the concept 😊😊...

  • @worldvital.s9452
    @worldvital.s9452 2 роки тому

    Waooo sir g your lecture awesome 👍👍.mujy pori UA-cam py Sirf ap k hi lecture smj m aty hain

  • @thatGuySuraj
    @thatGuySuraj 3 роки тому

    Okay I see people a bit confused regarding the UP code in the comment section. The code is absolutely correct. A process which wakes up after sleep will start its execution from the point it left before the sleep. In the example used in the video, P2 runs the DOWN code and changes value of s from 1 to 0. Now when P1 comes it finds s = 0 and goes to sleep. When P2 runs the UP code it wakes up P1 and s still remains 0. We cannot change s here as P1 is still not inside the critical section but just woke up. Thus, P1 goes to critical section after waking up even though value of s = 0. Now you may wonder when will s become 1, simply when P1 runs its UP code ( i.e. when suspend list is empty) .
    In a nutshell, you need to understand that s = 1 is not the only condition that can make a process go inside the critical section. Generalize this example for 5 processes and you are good to go.

    • @Kaivalyamani
      @Kaivalyamani 2 роки тому

      So why sleep() doesn't perform like it should in the previous video.
      Bhaiya said the process again waking up are now eligible to try to enter critical section

  • @koushikjana849
    @koushikjana849 4 роки тому +1

    You are great sir

  • @sujanraktade4852
    @sujanraktade4852 3 роки тому

    In binary semaphore only one process can access the Critical section at a time so if that process run the UP code while exiting from Critical section S will be set to 1 again but there won't be another process to overwrite value of S to 1.So at 4.29 we are considering two possibilities that value of S will be 0 or 1 that might be wrong there might be only one possibility and that is value of S is 0.

  • @nitingaur3006
    @nitingaur3006 6 років тому +3

    Thanks a lot you have explained binary semaphore perfectly

  • @ratanreddy7635
    @ratanreddy7635 3 роки тому +2

    Thanks bro your video has helped me a lot you have very good teaching skills . Thanks for this

  • @nileshsrivastava1507
    @nileshsrivastava1507 2 роки тому +1

    Semaphore requires "lock with condition variable" as well. For Binary semaphore, I think Down only needs "if" part, "else" not required.

  • @abhinavgupta5861
    @abhinavgupta5861 2 роки тому +3

    At up operation, S.value can never be 1. So, no chance of S.value to overwrite/remain 1.
    But if entry and exit codes are defined differently, eg. Entry = v(mutex) and exit = p(mutex) then you would see mutex = 1 at up operation
    Reference: next video in playlist

  • @puranjanprithu6337
    @puranjanprithu6337 3 роки тому +1

    NIT I Introduction: Concept of Operating Systems, Generations of Operating systems, Types of Operating Systems, OS Services, System Calls, Structure of an OS - Layered, Monolithic, Microkernel Operating Systems, Concept of Virtual Machine. Case study on UNIX and WINDOWS Operating System. Processes: Definition, Process Relationship, Different states of a Process, Process State transitions, Process Control Block (PCB), Context switching Thread: Definition, Various states, Benefits of threads, Types of threads, Concept of multithreads, UNIT II Process Scheduling: Foundation and Scheduling objectives, Types of Schedulers, Scheduling criteria: CPU utilization, Throughput, Turnaround Time, Waiting Time, Response Time; Scheduling algorithms: Pre-emptive and Non pre-emptive, FCFS, SJF, RR; Multiprocessor scheduling: Real Time scheduling: RM and EDF. Solution, Inter-process Communication: Critical Section, Race Conditions, Mutual Exclusion, Hardware Solution, Strict Alternation, Peterson‘s The Producer\ Consumer Problem, Semaphores, Event Counters, Monitors, Message Passing, Classical IPC Problems: Reader‘s & Writer Problem, Dinning Philosopher Problem etc. UNIT III Deadlocks: Definition, Necessary and sufficient conditions for Deadlock, Deadlock Prevention, Deadlock Avoidance: Banker‘s algorithm, Deadlock detection and Recovery. Memory Management: Basic Fixed and concept, Logical and Physical address map, Memory allocation: Contiguous Memory allocation variable partition- Internal and Page allocation -Hardware support for External fragmentation and Compaction; Paging: Principleof operation - paging, Protection and sharing, Disadvantages of paging. UNIT IV Virtual Memory: Basics of Virtual Memory - Hardware and control structures - Locality of reference, Page fault , Working Set , Dirty page/Dirty bit - Demand paging, Page Replacement algorithms: Optimal, First in First Out (FIFO), Second Chance (SC), Not recently used (NRU) and Least Recently used (LRU). I/O Hardware: I/O devices, Device controllers, Direct memory access Principles of I/O Software: Goals of Interrupt handlers, Device drivers, Device independent I/O software, Secondary-Storage Structure: Disk structure, Disk scheduling algorithms UNIT V File Management: Concept of File, Access methods, File types, File operation, Directory structure, File System structure, Allocation methods (contiguous, linked, indexed), Free-space management (bit vector, linked list, grouping), directory implementation (linear list, hash table), efficiency and performance.
    Disk Management: Disk structure, Disk scheduling - FCFS, SSTF, SCAN, C-SCAN, Disk reliability, Disk formatting, Boot-block, Bad blocks

    • @puranjanprithu6337
      @puranjanprithu6337 3 роки тому +1

      Syllabus hai college ka....sare points is playlist me hain...thanks a lot sir🙏

  • @codewithschoolteacher5118
    @codewithschoolteacher5118 2 роки тому

    hey i am from Pakistan you are the best teacher i ever found. Thank you so much.

  • @sakshamsinghrajput22
    @sakshamsinghrajput22 6 місяців тому +1

    Bada mast topic hai binary semaphore **gate smashers**

  • @MaitreyeeDavdaOfficial
    @MaitreyeeDavdaOfficial 2 роки тому +2

    Sir i have a doubt... See if suspended process will wake up and then it will try to be executed but it will blocked again then up process will work then down then up... Yeh to chlta hi rhega😂 agar koi process esa hain to kya hoga agli process ki baari kaise ayegi

  • @shubhamrajput9363
    @shubhamrajput9363 2 роки тому

    सर में आपका सदा आभारी रहूंगा धन्यवाद 🙏

  • @mariabatool140
    @mariabatool140 4 роки тому +1

    Your Lectuers Are Helpful for Us...

  • @kartikpurohit7457
    @kartikpurohit7457 5 років тому +2

    Thanku sir concept clear krne k liye

  • @saikun0293
    @saikun0293 4 роки тому +7

    If we add in ready queue and we are not setting S.value=1 in else part it will be a deadlock situation right?
    This code makes sense if we are directly adding from Suspended list to Critical Section else the code should be like this
    Up( Semaphore S )
    {
    S.value=1;
    if (!Suspended list is Empty){
    Select a process from suspended List;
    Wake up();
    }

    • @gunjan3571
      @gunjan3571 3 роки тому +1

      no there will be no deadlock situation, in that code when p2 is going to sleep it is executing the last instruction in the down(S), so after it will wake up it will directly enter into the critical section because it will resume it will not execute down(S) again.

    • @paulsnehasish5830
      @paulsnehasish5830 3 роки тому

      yes because the previous context was saved in PCB as the process got blocked it was basically looping indefinitely until awakened !

    • @suryasikharej8116
      @suryasikharej8116 3 роки тому

      ​@@paulsnehasish5830 Doesnt make sense to me. The s.value was 0 thats why the process went into suspend queue.else part will get executed by the process leaving the cs(still the s.value is 0). One solution is that the program which dequeues the processes from the suspend queue sets the s.value to 1 before dequeing;

    • @paulsnehasish5830
      @paulsnehasish5830 3 роки тому +1

      @@suryasikharej8116 it doesnt need to set the value to 1 because the blocked processes will get inti the CS upon waken up....once a process executes previous codes it wont execute them again...it will resume from the blocked state and will go to the CS directly

    • @suryasikharej8116
      @suryasikharej8116 3 роки тому

      @@paulsnehasish5830 No a process can never get to critical section directly. It needs to get into the ready queue and if another process comes with higher priority than the dequeued one then that process will also get stuck because s.value is still 0;

  • @anisharaj4601
    @anisharaj4601 5 років тому +3

    As explained in previous video, every solution should follow mutual exclusion. And binary semaphore does follow it as only one process get access of the critical section. But what about counting semaphore? Many process where there inside the critical section just because semaphore value was more than 1. How we can say that counting semaphore is a solution when its not following the primary condition?

    • @zainabedin9842
      @zainabedin9842 3 роки тому +2

      Counting semaphore only allows mutual exclusion when we initialize semaphore value to 1. If it's more than 1, then mutual exclusion cannot be guaranteed.

  • @rj...12ka4
    @rj...12ka4 5 років тому +1

    In Up we need to write below logic in else section After wakeup one process ,again check whether suspendlist is empty if so assign s value to 1.

  • @bonioss4865
    @bonioss4865 5 років тому +2

    Sir, big thanks from Politechnika Rzeszowska

  • @abhishekkmandal
    @abhishekkmandal 3 роки тому +2

    when the suspend list is not empty and we are waking up a process then also the S should change back to 1 so that next down can be performed

  • @farooqnust
    @farooqnust Рік тому

    For example there are two processes p1 and p2 p1 run down code check the condition s==1 it is true then suddenly it is pre empted now p2 run and check the condition the condition is true and p2 is in critical section now and then p1 is resumed it is also in critical section mutual exclusion is violated here

  • @nainawadhwa8920
    @nainawadhwa8920 6 років тому

    Best lecture on binary semaphore..

  • @meenakshisharma6029
    @meenakshisharma6029 2 роки тому +2

    Many thanks for such beautiful videos sir... Sir I have one doubt.. suppose p1 satisfy condition s.value==1 and before entering in block it get preemptive...and now p2 also satisfies condition and enters in critical section and now p1 comes back...then what would happen??

  • @ashwanikatoch9040
    @ashwanikatoch9040 5 років тому +3

    sir u r great

  • @khajanchaudhary5611
    @khajanchaudhary5611 11 місяців тому

    Great great great sir

  • @LTT_VKR
    @LTT_VKR 4 роки тому +5

    After putting p1 in ready queue..how will the semaphore value become to 1 or who will call the up(s)

  • @smritiawasthi9814
    @smritiawasthi9814 4 роки тому +8

    Sir thanku for the lecture.😊
    Sir after the execution of wakeup() when s value will become 1 and how?

  • @hrithiky-7
    @hrithiky-7 4 роки тому

    (To all the people who say code is incorrect)
    The code int the video is correct. When a process is woke up from Suspend list it goes back into Ready Queue.(Note the P1, P2 shown in ex were
    at the execution time).Whenever process'es enter from Ready to Run Queue The Semaphore values get initialized.

    • @sakshijain5503
      @sakshijain5503 4 роки тому

      If you are correct then for the first time when P1 interfere P2 (Ready state to running state) then Semaphore value should have been initialized again as S=1 but since Semaphore is shared resource it did't initialize.

    • @hrithiky-7
      @hrithiky-7 4 роки тому

      @@sakshijain5503 See the interfering processes first go into suspend list, and then when woke up goes to ready queue. (We assumed the processes coming are of same priority).
      Let's say p1,p2,p3 came concurrently ,say p2 entered CS, p1,p3 goes to suspend queue, again when cpu goes back to p1 n p3 it puts them in ready queue (pops until list Is empty) now semaphore value is set as 1.
      //Correct me if I'm wrong.

  • @harsharora1495
    @harsharora1495 4 роки тому

    Best teaching style 👌👌👌

  • @ashwanikesharwani4024
    @ashwanikesharwani4024 3 роки тому

    if there are several processes p1, p2, p3 .......pn then if S = 1 the process p1 will go into critical section to wait queue there will a condition do { if (S

  • @laibanawaz7789
    @laibanawaz7789 3 місяці тому

    GOD BLESS UH SIR G
    RESPECT FROM PAK

  • @HimAnshuGaurKK1120
    @HimAnshuGaurKK1120 5 місяців тому

    Nice explaination❤ thanku sir🙏

  • @ankitaverma2271
    @ankitaverma2271 5 років тому +3

    Thank you sir

    • @AnkitPal-qb6uu
      @AnkitPal-qb6uu 5 років тому

      Har video pe aapka thank u milta hai...
      But sir ka video bahut hi conceptual videos hote hai........
      Ek baar. Me concept clear ho jata hai.......

  • @STAY_CURIOUS_
    @STAY_CURIOUS_ 2 роки тому +1

    Great

  • @govindnakum
    @govindnakum 3 роки тому

    Explanation too good. Very helpful.

  • @suindude8149
    @suindude8149 4 місяці тому

    For binary Semaphore it is not possible to enter critical section as no P() is performed but possible in case of counting Semaphore if prior a P() is performed.

  • @142_rohitwaghmare2
    @142_rohitwaghmare2 3 роки тому

    mindblowing explanation sir!!

  • @bhaskararya9112
    @bhaskararya9112 2 роки тому

    First P2 wants to enter in CS, it runs Down code and if stmt is executed and it exits down code and enters CS..., then P1 wants to enter CS (remember here P2 has not executed Up code yet) ...P1 executes Down code and else stmt is executed and it then exits Down code and P1 enters Suspend list (Remember here P1 has executed Down code by going in else stmt....when it wakes up again, it will not execute Down code again) now P2 executes Up code and P1 wakes up again....and it directly enters in CS and then executes Up code...(if in some case there was another process P3 and before P1 was able to execute up code, P3 wants to enter in CS, it will first execute Down code and get suspended and then same process will repeat where P1 executes Up code and P3 wakes up again and enters CS and then P3 executes Up code and then everything is finished!

  • @savinaykumar5956
    @savinaykumar5956 2 місяці тому

    I watched your 4-5 videos and now I want to ask : by any chance do you teach for UGC net ?
    If you have paid classes kindly let me know I want to join as soon as possible.....and thanks for the wonderful explanation 🙏

  • @HelloWorld40408
    @HelloWorld40408 Рік тому

    Thank you Sir!

  • @scholar_boy425
    @scholar_boy425 3 роки тому +1

    Amazing sir ❤️❤️

  • @sabanapervin4086
    @sabanapervin4086 5 років тому +1

    great piece of work....

  • @subhajitsaha7068
    @subhajitsaha7068 6 років тому +5

    sir I have a doubt that binary semaphore follow mutual Exclusion but is it follow progress and bounded waiting if yes then explain why?

  • @stylewithcss
    @stylewithcss 4 роки тому +1

    Your Videos Made my 14 Num Confirm in Just First Try in learning from your video 👏👏👏

    • @GateSmashers
      @GateSmashers  4 роки тому +1

      I wish you will get full marks along with all the concepts cleared

  • @kanishkjain2767
    @kanishkjain2767 3 роки тому

    struct semaphore {
    enum value(0, 1);
    // q contains all Process Control Blocks (PCBs)
    // corresponding to processes got blocked
    // while performing down operation.
    Queue q;
    } P(semaphore s)
    {
    if (s.value == 1) {
    s.value = 0;
    }
    else {
    // add the process to the waiting queue
    q.push(P)
    sleep();
    }
    }
    V(Semaphore s)
    {
    if (s.q is empty) {
    s.value = 1;
    }
    else {
    // select a process from waiting queue
    s.value = 1;
    Process p=q.pop();
    wakeup(p);
    }
    }
    This is geeksforgeeks() binary semaphore code which says that , in function V() if you are going in else part u need to increment the value of semaphore which was missing in the video

  • @sumitshokeen8774
    @sumitshokeen8774 5 років тому +1

    Thank U sir ji 🙏

  • @spectrum_07
    @spectrum_07 5 років тому +2

    Make videos on computer organization and architecture please sir...... Please

  • @mariabatool140
    @mariabatool140 4 роки тому +1

    👍

  • @rinkidas4489
    @rinkidas4489 5 років тому +1

    Thank u so much sir😍😍

  • @kamil3885
    @kamil3885 5 років тому +1

    Thanks Sir.

  • @hammadabd234
    @hammadabd234 10 місяців тому

    In up else needs an increment for S also so the next process will enter otherwise its a total block.

  • @qR7pK9sJ2t
    @qR7pK9sJ2t 4 роки тому +2

    For those who are having doubt.
    struct semaphore {
    enum value(0, 1);

    // q contains all Process Control Blocks (PCBs)
    // corresponding to processes got blocked
    // while performing down operation.
    Queue q;

    } P(semaphore s)
    {
    if (s.value == 1) {
    s.value = 0;
    }
    else {
    // add the process to the waiting queue
    q.push(P)
    sleep();
    }
    }
    V(Semaphore s)
    {
    if (s.q is empty) {
    s.value = 1;
    }
    else {

    // select a process from waiting queue
    q.pop();
    wakeup();
    }
    }
    Take an example for your self and u will automaticaly understand the concept..

  • @PRIYAGUPTA-dr1nr
    @PRIYAGUPTA-dr1nr 6 років тому

    Thanks for helping the students 🙂🙂..

  • @khushiagrawal1863
    @khushiagrawal1863 12 днів тому

    Sir, aap itne intelligent kese ho.

  • @ParveenKumari-qe2ow
    @ParveenKumari-qe2ow 10 місяців тому

    Superb

  • @avijeetgorai3697
    @avijeetgorai3697 3 роки тому +1

    Guruji🙏

  • @sudeshnasaha4985
    @sudeshnasaha4985 3 роки тому

    Thankyou 🥰❤️ sir.. you are the best❤️

  • @shripadjalamkar3296
    @shripadjalamkar3296 6 років тому

    THANKS A LOT ..VERY NICE EXPLANATION

  • @madhusantoli7877
    @madhusantoli7877 2 роки тому

    Thanku

  • @kavitamason8554
    @kavitamason8554 3 роки тому

    Really appreciable🙏🙏🙏

  • @vibhu123
    @vibhu123 4 роки тому

    Well explained...
    But I think this lecture should be just after "semaphore & counting semaphore" Lecture....

  • @ankitathakur5989
    @ankitathakur5989 4 роки тому

    Thanks sir ji

  • @anishsaha1777
    @anishsaha1777 3 роки тому +2

    In the last example , when P1 is put into the ready queue how it gets executed beacuse then also the value of S=0. When the value of S=0 , the down statement can not be executed.
    Please explain!

  • @ankitathakur5989
    @ankitathakur5989 4 роки тому

    Thanku so much sir ji

  • @muftihyder7422
    @muftihyder7422 2 роки тому +1

    Hi, please improve your video related to Counting Semaphore. I could not understand the need for counting semaphore as it does not allow for mutual exclusion that is the fundamental need for synchronization. However, after reading from Quora, i got to know that Counting Semaphore is useful when a resource needs to be used strictly by only N processes. I hope you will add more to the previous video to clear the confusion.

  • @PurushotamSah
    @PurushotamSah 6 років тому

    Well explained

  • @rishabhmishra4224
    @rishabhmishra4224 Рік тому

    still helps a lot

  • @ankitdubey9310
    @ankitdubey9310 3 роки тому +1

    in the end after down operation, the value of semaphore is 0 so even if P1 wants to execute how will it execute?

  • @GAU-C--RATNAKANTAHANSE
    @GAU-C--RATNAKANTAHANSE 3 роки тому

    Thank you sir....

  • @pratikkurra4754
    @pratikkurra4754 7 місяців тому

    After a down and up series of operations are carried out and executed. What about resetting semaphore value? from 0 to 1 for next set of processes to be cleared.