কীভাবে বর্তমানে প্রোমোসেসগুলি ক্রয় / সমাপ্তি দ্বারা বর্ধমান সেমফোরগুলি পাবেন?


16

আমি অবাক হই যে কীভাবে প্রক্রিয়াগুলি বর্তমানে চলমান সেমফোরগুলি দিয়ে চলছে /proc? আমি অনুমান করি এটি সিসভিআইপিসি সাব-ডাইরেক্টরি দ্বারা সম্ভব হয়েছে B তবে এই কমান্ডগুলি কীভাবে ব্যবহার করতে হয় তা আমি জানি না।

উবুন্টু 12.10


1
ইন /proc/PID/maps, আপনি কোনও প্রক্রিয়াটির মেমরি ম্যাপিং এবং পসিক্স সেম্যাফোরগুলি সংযুক্ত ফাইল হিসাবে প্রদর্শিত হিসাবে দেখতে পারেন /dev/shm। যদিও আমি এসআইএসভি সেমাপোরগুলি সম্পর্কে নিশ্চিত নই।
দীর্ঘমেয়াদী

@ লার্জগেট এবং আমি নিশ্চিত করেছি যে পসিক্স এবং সিএসভি সেম্যাফোর উভয়ই /proc/PID/mapsএকটি প্রদত্ত পিআইডি ফাইলটিতে প্রদর্শিত হবে।
এসএমএল

তবে স্পষ্টতই, ভাগ করা মেমরির টুকরোগুলি এন্ট্রি হিসাবে প্রদর্শিত হয় /dev/shmএবং সেমফোরগুলি থেকে তারা পৃথক পৃথক হতে পারে (কেবল তাদের চতুর নাম বাদে)।
দীর্ঘমেয়াদী

উত্তর:


22

কমান্ডটি ব্যবহারের মাধ্যমে সেমোফোর এবং ভাগ করা মেমরির সাথে ডিল করার ক্ষেত্রে আমার একমাত্র অভিজ্ঞতা ipcs। কটাক্ষপাত ipcs man পৃষ্ঠা আরো বিস্তারিত জানার জন্য।

এই কমান্ডটি আপনাকে কী প্রক্রিয়াগুলি সেমোফোরগুলি রয়েছে তা দেখায়:

$ ipcs -s

------ Semaphore Arrays --------
key        semid      owner      perms      nsems     
0x4d114854 65536      saml       600        8         

জানা সেমিডের সাথে আমরা পিআইডিগুলির যে সেমফোরগুলি রয়েছে সেগুলি সম্পর্কে অতিরিক্ত তথ্যের জন্য জিজ্ঞাসা করতে পারি (নোট 8 - এনএসএম কলাম রয়েছে):

$ ipcs -s -i 65536

Semaphore Array semid=65536
uid=500  gid=501     cuid=500    cgid=501
mode=0600, access_perms=0600
nsems = 8
otime = Sun May 12 14:44:53 2013  
ctime = Wed May  8 22:12:15 2013  
semnum     value      ncount     zcount     pid       
0          1          0          0          0         
1          1          0          0          0         
2          1          0          0          2265      
3          1          0          0          2265      
4          1          0          0          0         
5          1          0          0          0         
6          1          0          0          4390      
7          1          0          0          4390 

পিড কলাম এই প্রক্রিয়াগুলি। হয় আপনি এগুলি ব্যবহার করে সন্ধান করতে পারেন psবা /procফাইল-সিস্টেমের মাধ্যমে দেখতে পারেন /proc/<pid>

উদাহরণ স্বরূপ:

$ more /proc/2265/cmdline 
mono

পজিক্স এবং সিস্টেমভি

@ লার্জগেটের দেওয়া একটি মন্তব্যে আমি আমার পিআইডি 2265 এর /proc/2265/mapবিষয়বস্তু খনন করেছি এবং নিম্নলিখিত /dev/shmরেফারেন্সগুলি পেয়েছি :

$ grep shm /proc/2265/maps 
7fa38e7f6000-7fa38ebdf000 rw-s 00000000 00:11 18517                      /dev/shm/mono-shared-500-shared_fileshare-grinchy-Linux-x86_64-40-12-0
7fa38f0ca000-7fa38f0cb000 rw-s 00000000 00:11 18137                      /dev/shm/mono.2265
7fa3967be000-7fa3967d3000 rw-s 00000000 00:11 18516                      /dev/shm/mono-shared-500-shared_data-grinchy-Linux-x86_64-328-12-0

আমি যতদূর জানি, কেবল সিস্টেম ভি সেম্যাফোরস (আপনার সাথে যাঁরা পেয়েছেন semget(2)) সেগুলি প্রদর্শিত হবে ipcs -sযদি আপনি পসিক্স সেম্যাফোরগুলি (যাদের সাথে আপনি পান sem_open(2)) ব্যবহার করছেন তবে আপনাকে অন্য একটি পদ্ধতি ব্যবহার করতে হবে।
দীর্ঘমেয়াদী

Sem_open (2) বিভিন্নটি ফেরত দেবে এমন কোনও টার্মিনাল আদেশ সম্পর্কে জানেন? উৎসুক. আমি سيمফোরগুলি সম্পর্কে যা জানি তা 8- এর উপরে উত্তরের মধ্যে রয়েছে)।
slm

না, এটাই সমস্যা। ;) ipcsম্যানপেজটি যেমন বলেছে: "লিনাক্স আইপিএস ইউটিলিটিটি পসিক্স আইপিসি ইউটিলিটির সাথে পুরোপুরি সামঞ্জস্যপূর্ণ নয়।" সুতরাং আমি নিশ্চিত না যে তারা পসিক্স আইপিসির জন্য কিছু ভেবেছিল। ভবিষ্যতের মুক্তি হতে পারে ipcs:)।
দীর্ঘমেয়াদী

এর বিষয়বস্তুগুলি mapউভয়ই বিভিন্ন ধরণের সেমফোরে ভেবেছিল, সঠিক?
slm

আমারও তাই ধারণা. এক উপায় বা অন্য কোনওভাবে, প্রক্রিয়া স্মৃতিতে কোথাও سيمফোরগুলি সংযুক্ত থাকতে হবে। তবে আমি নিশ্চিত ছিলাম যে সিডভি-ফাইল সিস্টেমগুলিতে এসআইএসভি সেম্যাফোরগুলিও তৈরি হয়েছিল /dev/shm। এখন, আমাদের কাছে উত্তর আছে। :)
দীর্ঘমেয়াদী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.