Program for Inter-Process Communication using shared memory

Поділитися
Вставка
  • Опубліковано 15 гру 2024
  • In this lecture on Program for Inter-Process Communication using shared memory, you will learn how shared memory is used for inter process communication in Linux using C language.
    Shared Memory is the fastest inter-process communication (IPC) method. The operating system maps a memory segment in the address space of several processes so that those processes can read and write in that memory segment. The overview is as shown below:
    Two functions:shmget() and shmat() are used for IPC using shared memory. shmget() function is used to create the shared memory segment while shmat() function is used to attach the shared segment with the address space of the process.
    Subscribe - / dextutor
    This lecture is part of the Operating System Lab playlist: • Operating System Lab
    For Program code and more details visit: dextutor.com/p...
    Reference Videos:
    1. IPC using pipe(): • Program for Inter-Proc...
    2. IPC using named pipes: • Program for Inter-Proc...
    3. IPC using Shared memory: • Program for Inter-Proc...
    4. IPC using message queues: • Program for Inter Proc...
    5. IPC using popen: • Program for Inter-Proc...
    Tools Required:
    1. Linux environment
    2. Basic knowledge of C Language
    3. gcc compiler installed
    Reference Links:
    Operating System Theory PPTs Link: dextutor.com/c...
    Operating System Programs: dextutor.com/c...
    Other Playlists:
    OS: • Operating System
    Linux Essential: • Linux Tutorial For Beg...
    RHCSA: • RHCSA Exam Questions |...
    Was this tutorial about Program for Inter-Process Communication using shared memory helpful? If so, please share. Let me know your thoughts in the comments.
    #linux #oslab #os #dextutor #ipc

КОМЕНТАРІ • 55

  • @aninditasaha0307
    @aninditasaha0307 3 роки тому +18

    Excellent sir... Simplest... Yet serving the purpose...very helpful for students... Can you make video on message queues?

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

      Thanks a lot.. Will upload the video by next week

  • @tarunnaik3053
    @tarunnaik3053 Рік тому +4

    You made the topics much much more simpler than they are actually sir.Great Explanation 🙇

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

    i guess this was the best explanation,thank you sir

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

      Thanks.. Keep sharing

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

    Great explanation sir! Sir very important thing you didn't tell us. How do we clear/purge the memory occupied by the shared_memory. The first program that was the sender-program had exited. Do we need to call a function from receiver-program to delete the shared_memory?

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

      Use memset() function

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

    Nice explanation 👌. Thank you

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

    outstanding

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

    hello sir could you tell me how to make this as full duplex communication using shared memory .
    example it can take input from any 1/2nd process ,and it should receive in another process

  • @kanunithu2048
    @kanunithu2048 3 роки тому +3

    Thanks a lot, sir

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

    Great explanation 👌👍

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

    Thank you so much sir :) really helpful

  • @mazharkhaliq1971
    @mazharkhaliq1971 8 місяців тому +1

    Thanks for the video 👏👏👏

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

    Great explanation.Thanks :)

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

    great lab. Thanks

  • @Tom-fx9mk
    @Tom-fx9mk 2 роки тому

    How do I determine how much space I need to use for the second argument of shmget? The file I'll be having the processes write to will be in the shared memory. Is 1024 bytes too little in my case (since I'll be having up to 20 processes writing a sentence to the file several times)?

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

      Managing space is upto the programmer.. Not all 20 process will be writing at the same time.. So after one process writes some make sure the reader process reads it before another process overwrites it.. If you feel the space is less you can allocate more space..just change 1024 to any number you want

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

    why in the receiver program we got different address for shared memory .....it get attached to the same memory segment then it should give the same address

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

      Shmat returns the address where the process gets attached to memory segment, not the address of the memory segment. That's why it's different for both process

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

      thanks sir@@dextutor

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

    Thank you sir!

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

    Can You Help Me This Program
    Design a program that including 2 sub processes,it receives standard input,through sharing memory,the father process transmits a serial of number(>=10 )to the sub processes,after the sub processes receive the interupt signal from the father process:
    1) one subprocess plus the numbers
    2)the other subprocess mulitple the numbers
    Then through the message queue send the result to the father process,and the father process printf the numbers.

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

      Hi.. All the requirements are covered in the videos.. I will list out broadly
      1. Create two sub(child processes) using fork
      2. Use shared memory to send the input to sub processes
      3. Perform individual Calculations
      4. Create message queue to send back the results to the parent process

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

    Sir use OBS software for recording your videos has poor quality butttt.... your videos are alot informational so thank you so much !

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

      Quality issue in terms of audio or video?

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

      @@dextutor video

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

      Thanks for the suggestion..i will work on that.. Check the latest video on Message queues and share if it was better

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

      @@dextutor sure man

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

    Why the address for shared memory changes for sender and receiver??

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

      It is the address at which the process gets attached with shared segment. So it can not be same for sender and receiver

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

      @@dextutor ok thanks for clarifying my doubt

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

    Nice video. can you make IPC memory passing video?

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

      I guess u meant message queues.. The video will be up soon.. Till that time have a look at this link
      dextutor.com/program-for-ipc-using-message-queues/

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

    I am getting different key value in reciver program...written code as same .

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

    Sir who to use Iostat command in wsl

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

    In second program in output the first program data we written is not show.. segment fault message show

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

      Check your code again..

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

      @@dextutor I check but same problem.... even I copy program from your site ,same problem occurs

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

      Email me the snapshot of your programs

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

    Getting an error for:
    error: invalid conversion from ‘void*’ to ‘char*’ [-fpermissive]
    18 | strcpy(shared_memory,buff); //data written to shared memory
    | ^~~~~~~~~~~~~
    | |
    | void*

    • @TonyStark-lb2rj
      @TonyStark-lb2rj 2 місяці тому

      just typecast it like -> strcpy((char*)shared_memory,buff);

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

    Supr sir ❤

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

    Thanks a lot! :)

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

    is it possible When a process communicates with each other, the timestamp is recorded with +5 secs?

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

      Use strftime function to fetch the time of communication and then add any additional time you want

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

    Where this shared memory created

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

    Did I miss something, or did you not deallocate the memory? How do you deallocate?

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

    Thanks brother

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

      Welcome... Please share among your friends

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

    how to complie

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

    Can we turn this into a function???