Program for Inter-Process Communication using shared memory

Поделиться
HTML-код
  • Опубликовано: 21 окт 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 Full Course
    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 года назад +17

    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 🙇

  • @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

  • @bestdeal3385
    @bestdeal3385 2 года назад

    i guess this was the best explanation,thank you sir

    • @dextutor
      @dextutor  2 года назад +1

      Thanks.. Keep sharing

  • @ayeshaadhikari6123
    @ayeshaadhikari6123 3 года назад +2

    Thank you so much sir :) really helpful

  • @gayathriciddamsetty4826
    @gayathriciddamsetty4826 3 года назад +1

    Nice explanation 👌. Thank you

  • @kanunithu2048
    @kanunithu2048 3 года назад +3

    Thanks a lot, sir

  • @mazharkhaliq1971
    @mazharkhaliq1971 6 месяцев назад +1

    Thanks for the video 👏👏👏

  • @leepakshiyadav1643
    @leepakshiyadav1643 2 года назад +1

    Great explanation.Thanks :)

  • @dhanrajv7473
    @dhanrajv7473 10 месяцев назад

    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

  • @gouravshaw6254
    @gouravshaw6254 Год назад +1

    Great explanation 👌👍

  • @navneetkaurpopli2766
    @navneetkaurpopli2766 2 года назад +1

    great lab. Thanks

  • @pythonforfree7297
    @pythonforfree7297 Год назад +1

    outstanding

  • @hxong4733
    @hxong4733 2 года назад +1

    Thank you sir!

  • @_LAKSHAWADHWANI
    @_LAKSHAWADHWANI 2 года назад +1

    Thanks a lot! :)

  • @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

  • @guidosalescalvano9862
    @guidosalescalvano9862 Год назад +1

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

  • @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/

  • @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

  • @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

  • @chinnurpk3519
    @chinnurpk3519 11 месяцев назад

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

    • @dextutor
      @dextutor  11 месяцев назад

      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 11 месяцев назад

      @@dextutor ok thanks for clarifying my doubt

  • @chandinikm7129
    @chandinikm7129 Год назад

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

  • @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

  • @ohm_chiluka
    @ohm_chiluka 11 месяцев назад

    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 Месяц назад

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

  • @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

  • @nadakudurutejakanth8500
    @nadakudurutejakanth8500 10 месяцев назад

    Supr sir ❤

  • @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

  • @rekhavaishnav1462
    @rekhavaishnav1462 3 года назад

    Sir who to use Iostat command in wsl

  • @prashantkassa9162
    @prashantkassa9162 Год назад

    Where this shared memory created

  • @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???