การสื่อสารระหว่างกระบวนการคืออะไร?

การสื่อสารระหว่างกระบวนการ (IPC) เป็นกลุ่มของเทคนิคที่ใช้ในการเขียนโปรแกรมคอมพิวเตอร์ที่อนุญาตให้ซอฟต์แวร์ที่แตกต่างกันในการโต้ตอบ IPC มักจะอำนวยความสะดวกโดยระบบปฏิบัติการคอมพิวเตอร์แม้ว่าจะมีวิธีอื่น ๆ อยู่ก็ตาม รูปแบบที่แน่นอนของการสื่อสารระหว่างซอฟต์แวร์นี้อาจแตกต่างกันไปตั้งแต่ข้อความโดยตรงไปยังศูนย์รับฝากกลางที่มีการจัดเก็บและดึงข้อมูล การสื่อสารระหว่างกระบวนการสามารถให้ประโยชน์เช่นประสิทธิภาพที่มากขึ้นใช้ทรัพยากรคอมพิวเตอร์น้อยลงและเพิ่มความปลอดภัย

ในโลกแห่งการเขียนโปรแกรมซอฟต์แวร์ถูกพูดถึงในแง่ของกระบวนการหรือรหัสชิ้นเดียวที่สามารถเรียกใช้หรือดำเนินการในหน่วยประมวลผลกลาง (CPU) ของคอมพิวเตอร์ แอปพลิเคชั่นหลายตัวใช้งานจริงมากกว่าหนึ่งกระบวนการซึ่งสามารถเพิ่มประสิทธิภาพและความเสถียร เว็บเบราว์เซอร์ที่มีหลายหน้าเปิดอาจใช้กระบวนการแยกต่างหากในการโหลดแต่ละหน้า สิ่งนี้จะแยกแต่ละหน้าออกจากหน้าอื่น ๆ และป้องกันไม่ให้หน้าเว็บที่มีพฤติกรรมไม่ดีทำงานล้มเหลวในเบราว์เซอร์ทั้งหมด ในตัวอย่างนี้แต่ละกระบวนการที่รับผิดชอบในการแสดงผลหน้าเว็บจะสื่อสารกับกระบวนการอย่างน้อยหนึ่งกระบวนการที่จัดการด้านอื่น ๆ ของเบราว์เซอร์เช่นองค์ประกอบส่วนต่อประสานผู้ใช้

ระบบปฏิบัติการคอมพิวเตอร์ส่วนใหญ่มีกลไกที่แตกต่างกันหลายอย่างสำหรับการสื่อสารระหว่างกระบวนการที่จะเกิดขึ้น เทคโนโลยีซอฟต์แวร์อื่น ๆ บางรุ่นยังรองรับ IPC ยิ่งกว่านั้น IPC สามารถใช้ได้ทั้งบนคอมพิวเตอร์เครื่องเดียวหรือผ่านเครือข่าย กลไกเหล่านี้อาจแตกต่างกันไปตามวิธีการใช้งาน แต่ส่วนใหญ่สามารถจัดกลุ่มเป็นสองสามหมวดตามวิธีการสื่อสารที่เกิดขึ้น

ในบางกรณีข้อความจะถูกแลกเปลี่ยนโดยตรงระหว่างกระบวนการบ่อยครั้งในลักษณะทางเดียวหรือไม่ตรงกัน วิธี IPC สองสามอย่างที่ใช้งานในลักษณะนี้ ได้แก่ สัญญาณท่อและซ็อกเก็ต การสื่อสารระหว่างกระบวนการสามารถเกิดขึ้นได้ผ่านการใช้ตำแหน่งเฉพาะซึ่งสามารถเข้าถึงข้อมูลได้มากกว่าหนึ่งกระบวนการ ตัวอย่างหนึ่งของสิ่งนี้คือหน่วยความจำที่ใช้ร่วมกันซึ่งเป็นเทคนิคที่กระบวนการหลาย ๆ กระบวนการเข้าถึงส่วนเดียวกันของหน่วยความจำของคอมพิวเตอร์เพื่อแลกเปลี่ยนข้อมูล วิธีการที่โปรแกรมเมอร์อาจเลือกใช้ขึ้นอยู่กับอัตราและปริมาณการแลกเปลี่ยนข้อมูลที่จำเป็นรวมถึงข้อควรพิจารณาอื่น ๆ

มีหลายเหตุผลที่โปรแกรมเมอร์อาจต้องการใช้การสื่อสารระหว่างกระบวนการในการสร้างซอฟต์แวร์ของพวกเขา การแยกแอปพลิเคชันขนาดใหญ่ออกเป็นกระบวนการขนาดเล็กจำนวนมากที่สื่อสารผ่าน IPC สามารถเพิ่มประสิทธิภาพและความปลอดภัยได้ โปรแกรมสามารถเริ่มต้นและสิ้นสุดกระบวนการตามต้องการแทนส่วนประกอบทั้งหมดที่ทำงานพร้อมกันและใช้ทรัพยากรฮาร์ดแวร์ หากส่วนหนึ่งของโปรแกรมต้องการการเข้าถึงพิเศษกับฮาร์ดแวร์ของคอมพิวเตอร์หรือซอฟต์แวร์ที่ทำงานอื่น ๆ กระบวนการอย่างน้อยหนึ่งกระบวนการสามารถทำงานภายใต้บัญชีผู้ดูแลระบบหรือบัญชี“ root” ในขณะที่ส่วนที่เหลือของโปรแกรมจะทำงานในฐานะผู้ใช้ปกติ