วันศุกร์ที่ 28 มกราคม พ.ศ. 2554

- เหตุใดมนุษย์จึงดื่มน้ำทะเลไม่ได้

ในร่างกายสัตว์ทะเลมีกลไกอะไร พวกมันถึงดื่มน้ำทะเลได้ ในขณะที่มนุษย์ดื่มน้ำทะเลไม่ได้นกทะเลและสัตว์เลื้อยคลานหลายชนิดจะมีต่อมพิเศษสำหรับถ่ายเกลือออกโดยเฉพาะ นกนางนวลสามารถดื่มน้ำทะเลได้ถึง ๑ ใน ๑๐ ของน้ำหนักตัวมัน และสามารถกำจัดเกลือที่มีมากเกินไปได้ภายในเวลาประมาณสามชั่วโมงเท่านั้นเนื่องจากมันมีต่อมมหัศจรรย์สำหรับกำจัดเกลือ ถ้ามนุษย์จำต้องดื่มน้ำทะเลในสัดส่วนเท่า ๆ กัน คือสองแกลลอน (๗.๕๖ ลิตร) น้ำจะถูกดูดออกจากร่างกายเนื่องจากความพยายามที่จะกำจัดเกลือที่มีมากเกินไปออกจากร่างกาย

        ไม่มีสัตว์ชนิดใดมีเกลือสะสมอยู่ในร่างกายได้เกินกว่าร้อยละ ๐.๙  เกลือที่มีมากเกินกว่าจำนวนนี้ จะถูกขับออกมากับปัสสาวะ ไตของมนุษย์ไม่สามารถสกัดเกลือที่มีอยู่ในปัสสาวะเกินกว่าร้อยละ ๒.๒ ดังนั้นมนุษย์จึงไม่สามารถดื่มน้ำทะเล ซึ่งมีเกลือผสมอยู่ถึงร้อยละ ๓.๕ ได้ ม้าสามารถสกัดเกลือที่มีอยู่ในปัสสาวะของมันได้เพียงร้อยละ ๑.๕ เนื่องด้วยไตของม้าไม่มีประสิทธิภาพ ดังนั้นมันจึงไม่สามารถดื่มน้ำกร่อยซึ่งมนุษย์สามารถบริโภคได้

        อูฐสามารถสกัดเกลือได้มากเกือบสองเท่าของเกลือในน้ำทะเล นอกจากนี้ปลาวาฬซึ่งเป็นสัตว์เลี้ยงลูกด้วยนมอาศัยอยู่ในมหาสมุทรก็ยังมีไตที่มีประสิทธิภาพ ทำให้มันสามารถดื่มน้ำทะเลได้โดยไม่เป็นอันตรายแต่อย่างใด

เครดิต “ข้อมูลสนับสนุนจากหนังสือ ๑๐๘ ซองคำถาม / สำนักพิมพ์สารคดี”

- สมองที่หลายคนเข้าใจผิด

<>


มันสมองของ วิเศษในตัวของท่าน บางทีท่านอาจจะบ่นว่า หัว (คือสมอง)ของท่านไม่ดีสู้คนอื่นไม่ได้ หรือคงเคยพูดว่า วันนี้ทำงานมาก จนหัว (หัวสมอง)เพลียเห็นจะต้องพักเสียที มีแต่การทดลองทางการแพทย์และจิตวิทยาบอกว่าที่คิดอย่างนี้"...คิดผิดทั้ง นั้น..."

ข้อเท็จจริงเกี่ยวกับมันสมอง 6 ข้อซึ่งจะช่วยให้ท่านเข้าใจมันสมองของวิเศษในตัวท่าน

1. มันสมองเหนื่อยหรือเพลียกับใครไม่เป็น

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

2. กำลังสมองไม่มีที่สิ้นสุด

สมอง เป็นส่วนหนึ่งของร่างกายมีหน้าที่เกี่ยวกับการจดจำการคิดและความรู้สึกต่างๆ สมองประกอบด้วยตัวเซลล์ประมาณ 10 พันล้านตัวถึง 12พันล้านตัว แต่ละตัวมีเส้นใยที่เรียกว่าแอกซอน (Axon) และเดนไดรต์ (Dendrite) สำหรับให้กระแสไฟฟ้าเคมี (Electrochemical) แล่นผ่านถึงกันการที่เราจะคิดหรือจดจำสิ่งต่างๆนั้นเกิดจากการเชื่อมต่อ ของกระแสไฟฟ้า ในสมอง คนที่ฉลาดที่สุดก็คือคนที่สามารถใช้กำลังไฟฟ้าได้เต็มที่

3.อัตราส่วนเชาวน์ (I.Q.) นั้นที่จริงไม่ใช่ของสำคัญ


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

เขาพบว่าคนที่มีชื่อเสียงมากมายหลายคนมีไอคิวเท่าๆ กับคนธรรมดา อย่างเช่น จอห์นอาดัมส์,อับราฮัม ลินคอล์น,นโปเลียน,เนลสัน เหล่านี้มีสมองธรรมดาๆแต่ว่าเป็นคนมีลักษณะพิเศษ คืออุตสาหะพากเพียรอย่างไม่หยุดยั้ง คนสมองดีๆถ้าไม่หมั่นใช้มันก็จะฝ่อได้

4. แก่แล้วก็เรียนได้ดีเท่าหนุ่มๆเหมือนกัน


.... ความเข้าใจผิดอย่างไม่เข้าท่าก็คือว่ายิ่งแก่ตัวยิ่งเรียนไม่ได้สมองเสื่อม ความจำไม่ดี ถ้าเป็นคนขี้เหล้าเมายาหรือมีโรคอาจเป็นได้อย่างนั้น แต่คนปรกติแล้วย่อมเรียนได้ตลอดอายุความแก่ชราไม่เป็นอุปสรรคแก่การเรียน การเรียนเกี่ยวกับการให้กระแสไฟฟ้าในสมองเคลื่อนไหว ดังนั้นถ้าสมองไม่ผุพังเพราะเชื้อโรคหรือการกระทบกระเทือนอย่างหนึ่งอย่างใด แล้ว อายุ 90 ปี ก็ยังเรียนได้ ที่ว่าแก่ป้ำๆเป๋อๆชื่อคนที่เคยจำได้ก็นึกไม่ออก อะไรพวกนี้ เป็นการยอมรับตัวเองทั้งสิ้น
5. กำลังสมองจะดีขึ้นถ้าได้ใช้มันอยู่เสมอ
สมอง เหมือนกับกล้ามเนื้อตรงที่การฝึกถ้าได้ใช้ให้ทำงานอย่าปล่อยให้มันขี้เกียจ มันจะยิ่งเก่งกล้าขึ้น ท่านยิ่งใช้ความคิด ความคิดของท่านก็จะดีขึ้น หากท่านใช้ความจำอยู่เสมอ ความจำของท่านก็จะดีขึ้นคือท่านจะจำอะไรได้เร็วขึ้น มีอำนาจอย่างหนึ่งที่เราพูดถึงกันเสมอคืออำนาจใจหรือกำลังใจ กำลังอันนี้สะสมอยู่ในสมอง ทุกคราวที่ท่านใช้กำลังใจ หรืออำนาจใจต่อสู้อุปสรรคปัญหา หรือความยากลำบากต่างๆกำลังใจของท่านก็เพิ่มพูนมีกำลังแรงขึ้น

6. จิตใต้สำนึก….คลังอันน่ามหัศจรรย์


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

บทความจาก  http://www.kahwdang.net/

- อดนอนเสี่ยงตายจากโรคหัวใจ...

นักวิจัยมหาวิทยาลัยวอวิคและคอลเลจ ลอนดอนของอังกฤษ ร่วมกันศึกษาพบว่า คนที่อดหลับอดนอนมีโอกาสเสี่ยงที่จะตาย

ส่วนใหญ่ด้วยโรคหัวใจและหลอดเลือด หัวใจมากพอๆกับที่คนนอนมาก ก็เสี่ยงกับอัตราการเสีย ชีวิตด้วยโรคอื่น ที่ไม่ใช่โรคหัวใจและหลอดเลือดหัวใจ ศาสตราจารย์ฟรานเซสโก แคปปัคซิโอ โรงเรียนแพทย์ มหาวิทยาลัยวอวิค ได้รายงานผลการศึกษาว่า ผู้ที่นอนน้อยลง คืนหนึ่งนอนจาก 7 ชม. เหลือแค่ 5 ชม. เท่านั้น จะเสี่ยงกับอัตรา การเสียชีวิตจากทุกสาเหตุขึ้นอีก 1.7 เท่า

โดยเฉพาะจากโรคหัวใจและหลอดเลือดหัวใจเป็น 2 เท่า และผู้ที่นอนนานเกิน 8 ชม.ทุกคืน

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

ภัยจากกาแฟ

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





มันมากับ กาแฟ ไม่ใช่คาเฟอีน!!

นอก จากนี้ ในบางครั้งยังพบในหมู และผลิตภัณฑ์จากหมู เช่น แฮม ไส้กรอก เบคอน ทั้งนี้ เนื่องจากหมูอาจกินอาหารที่มีการปนเปื้อนของสารตัวนี้

เมื่อร่างกายได้รับสาร Ochratoxin A เข้าสู่ร่างกายจะทำให้เกิดการตายของเนื้อเยื่อ เนื่องจากขาดเลือดมาหล่อเลี้ยง
นอก จากนั้น อาการติดเชื้อของไต (nephropathy) ที่เกิดจาก Ochra- toxin A จะนำไปสู่การเกิดการก่อลูกวิรูป เกิดเนื้องอกในต่อมไต และเกิดเนื้องอกที่ตับในหนูทดลอง แต่ไม่ก่อให้เกิดการกลายพันธุ์

ประเทศ แคนาดาและประเทศสมาชิกในสหภาพยุโรปหลายประเทศ ได้สำรวจและเก็บตัวอย่างผลิตภัณฑ์อาหารที่มีจำหน่ายภายในประเทศ ที่อาจปนเปื้อน Ochratoxin A นำมาวิเคราะห์

สำหรับปัจจุบันมีมาตรฐานการปนเปื้อนของสาร Ochratoxin A ในอาหารดังนี้ ตามประกาศของกระทรวงสาธารณสุข ฉบับที่ 197 พ.ศ.2543 กำหนดให้กาแฟสำเร็จรูปชนิดเหลว ไม่มีสารพิษจากจุลินทรีย์หรือสารเป็นพิษอื่นในปริมาณที่อาจจะเป็นอันตรายต่อ สุขภาพ

มาตรฐาน codex ปริมาณสูงสุดที่อนุญาตให้ปนเปื้อนในเมล็ดข้าวสาลี ข้าวบาร์เลย์ ข้าวไรย์ดิบ และผลิตภัณฑ์ที่ได้จากเมล็ดข้าวสาลี ข้าวบาร์เลย์ ข้าวไรย์ เท่ากับ 5 ไมโครกรัม/กิโลกรัม (report April 2002)
วันนี้สถาบันอาหารสุ่มตัวอย่างกาแฟสำเร็จรูปในท้องตลาด 5 ตัวอย่าง มีถึง 2 ตัวอย่างที่เกินมาตรฐานสูงมาก

เห็นกันอย่างนี้แล้ว คอกาแฟทั้งหลายคงต้องระมัดระวังกันเพิ่มขึ้น "มัน" ไม่ได้มีเฉพาะคาเฟอีนเท่านั้น......

วันพฤหัสบดีที่ 27 มกราคม พ.ศ. 2554

ทำนายดวงตามเลยบัตรประชาชนตัวท้าย

ทำนายตามเลขบัตรประชาชนตัวท้าย  เช่น  1320700161746  ก็นำตัวเลข 6 สุดท้ายมาทำนาย
เลข  1แสดง ถึงความเด็ดเดี่ยว  กล้าทำ กล้าแสดงออก  เป็นผู้นำใน
หน้าที่การงานอยู่ใน จำพวกแนวหน้า
และบางครั้งถูกคนอื่นมาขอความช่วย เหลือทั้งทรัพย์สินเงินทอง
และคำปรึกษาอยู่ตลอด เวลา
จนทำให้ไม่เป็นตัวของตัวเองเท่าที่ควรแต่ หากไม่พอใจใครแล้ว 
เขาจะไม่สนใจเลยเด็ด ขาด  เป็นจำพวกหยิ่งในศักดิ์ศรี ฆ่าได้  หยามไม่ได้

ไม่ยอมก้มหัวเพื่อลด ศักดิ์ศรีให้ใคร หากจำเป็นจริง  
ยอมให้ได้เพียงกายเท่านั้น  จะมีนิสัย ละเอียดอ่อนในเรื่องความรัก
หมดเปลืองเท่าไหร่ ก็ยอมเพื่อความรัก 
ในอนาคตหากเป็นนัก ธุรกิจจะประสบความสำเร็จและสามารถทำงานได้ดีทุกแขนง
 
เลข
2
แสดง ถึงความสำเร็จ
  ความอบอุ่นจากมิตร-บริวาร
แต่บางครั้งไม่ค่อยมีความเด็ดขาดไปบ้าง  เป็นคนที่ไม่ชอบอยู่คนเดียว 
หาก จะลงทุนทำธุรกิจถ้าได้ร่วมทำกับคนอื่นจะดีกว่าทำคนเดียวจะมีเสน่ห์กับเพศตรง ข้าม

เป็นที่รักใคร่ของเหล่าเพื่อนฝูง
แต่บางครั้งจะโดนอิจฉาอยู่บ่อย   เพราะเสน่ห์ดีเกินไป
ตามเลขศาสตร์บ่งบอกว่า  หากจะให้ทำงานสำเร็จโด่งดังมีชื่อเสียง 
จะต้องทำงานร่วมกับคู่ครองตนเอง  วัย กลางคนจะได้มีความสุขกับครอบครัว

ฐานะดีมีความ สบายตามลำดับ 
เลข
  3 
แสดง ถึงความทุกข์ใจ  จะมีปัญหาเรื่องต่าง   ผ่านเข้ามาในชีวิตอยู่เรื่อยๆ

หากจิต ใจไม่เข้มแข็งจะทำให้ทุกข์ใจไม่สบายกายอยู่เรื่อยไป 
และจะต้องเพิ่มการเอาใจใส่คู่ครองและครอบครัวให้มากกว่าเดิม

ระวังจะมีปัญหากับบุคคลที่  3 เข้า มาสร้างความแตกแยกในครอบครัว หมายเลข 3 นี้
เป็นเลขแห่งเงารัก  เงาร้าง
ถ้าจะลงทุนทำธุรกิจไม่ควรที่จะร่วมหุ้นหรือไว้ใจบริวารให้มากนัก 
อย่าเป็นนักบุญให้ผู้อื่นจนเกิดเป็นความ ทุกข์ให้กับตนเอง

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

จะเป็นที่รักใคร่ของผู้สูงอายุแต่จะมีความเหน็ดเหนื่อยมากอยู่ เหมือนกัน  เพราะ
คำว่า 'แม่ทัพ'  ก็รู้ความ หมายอยู่แล้ว
ไม่มีแม่ทัพคนใดไม่มีผลงานแล้วจะ ได้เป็นแม่ทัพหรอกน่ะ  แต่หมายเลข
เป็นเลขแห่งความสำเร็จ  ความยิ่งใหญ่ ความก้าวหน้า ความท้าทาย

หากจะให้มีความเจริญ ก้าวหน้าเร็วๆ  ก็ต้องกล้าทำกล้าแสดงออก  กล้าตัดสินใจ
แต่ระวังจะมี เพศตรงข้ามหลงรัก
และเข้ามาขอสวามิภักดิ์ด้วยและ ไม่ต้องเป็นห่วงจะทำอะไรก็จะมีคนคอยสรรเสริญเยินยอ 
แต่ก่อนที่จะมีการเยินยอก็จะมีการติฉินนินทาก่อน

หากอดทนไม่สนใจไม่แคร์ความรู้สึกของคนอื่นได้ละก็
ชีวิตนี้รวยใจสบายกายอย่างแน่นอน 
เลข
5
แสดง ถึงเลขแห่งเวทมนต์และเสน่ห์หากับเพศทั่วไป  มีความหยิ่ง ทะนงในตัวเอง
 
ยอมก้มหัวให้ผู้อื่นได้แค่ กายแต่ใจนั้น ไม่ยอมใคร

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

แต่จะต้องมีเวลาให้กับเรื่องส่วนตัวบ้าง เช่น   เรื่องความรัก อย่าปล่อยให้นานเกินไป
จะ ได้พึ่งพาอาศัยบุตร-บริวารในภายภาคหน้าจะมีความพอดีกับชีวิต
เกิดความสุขตลอดกาล 
เลข
6
แสดง ถึงคนที่มีดีอยู่ในตัวแต่ไม่ค่อยยอมนำออกมาใช้ให้เป็นประโยชน์

อย่าปล่อยเวลากับความคิดให้มากนัก  หมาย เลข 6 เสน่ห์อยู่ที่ 'เงา'ของตนเอง  จะมีคนรักใคร่ เอ็นดูทั้งเด็กและผู้ใหญ่
แต่ต้องแต่งตัวให้ เกิดจุดเด่นแก่ตนเอง  และมีจิตสัมผัสเหนือธรรมชาติ 
หากได้นั่งสมาธิบำเพ็ญศีลจะมีบารมีสูง  ผู้คนจะรักใคร่เอ็นดู

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

เพราะหมายเลข  7 เป็นหมายเลขที่ต้องเดิน ทางเพื่อทำการค้า เป็นไกด์ 
หรือทำงานที่ ต้องมีการเจรจาอยู่ตลอดเวลาจะทำให้ประสบความสำเร็จ

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

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

แต่หน้าที่ที่เหมาะคือผู้เผยแพร่ศาสนา
จะมีผู้คนยกย่องสรรเสริญและยังมีจิตสัมผัสเหนือคนทั่วไป
บางครั้งสามารถรู้เหตุการณ์ล่วงหน้า ใคร ได้หมายเลข  9จะเป็นผู้อยู่เหนือลิขิตสวรรค์จะ ทำอะไรก็สามารถประสบความสำเร็จได้ด้วยตนเอง

กระบวนการทำงานของ os

บทที่ 4 กระบวนการ
(PROCESS)


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

4.1 แนวคิดของกระบวนการ (Process Concept)
ปัญหาหนึ่งในการอธิบายเกี่ยวกับ ระบบปฏิบัติการ คือ เราจะเรียกกิจกรรมของหน่วยประมวลผลกลางว่าอย่างไรดี ในระบบการทำงานแบบกลุ่มเรียกว่า job ในระบบปันส่วน เรียกว่า โปรแกรมผู้ใช้ (user program) หรือ task แม้แต่ระบบผู้ใช้คนเดียวอย่าง MS-DOS และ Macintosh ผู้ใช้เครื่องอาจให้หลาย ๆ โปรแกรมทำงานพร้อมกัน โดยโปรแกรมหนึ่งเป็นโปรแกรมโต้ตอบ (interactive) และที่เหลือเป็นแบบกลุ่ม (batch) ในตำราเล่มนี้คำว่า jobs กับ process มีความหมายเหมือนกัน

4.1.1 กระบวนการ (The Process)
เราอาจเรียกโปรแกรมที่กำลังทำงานอยู่ว่าเป็น กระบวนการ (process) การทำงานของกระบวนการต้องเป็นแบบลำดับ หรือ อีกนัยหนึ่ง ณ เวลาใด ๆ จะมีเพียงอย่างมากหนึ่งคำสั่ง ที่กำลังดำเนินการอยู่ในนามของกระบวนการนี้
กระบวนการไม่ได้หมายความเพียง โปรแกรมและการทำงาน เท่านั้น แต่รวมถึง program counter (พวก register ของ CPU) ,stack (ข้อมูลชั่วคราว) , data section (เก็บตัวแปรแบบ global)
โปรแกรมเป็นสิ่งไม่มีชีวิต (passive entity) เช่น คำสั่งที่เก็บไว้ในจานบันทึก ส่วนกระบวนการเสมือนสิ่งมีชีวิต (active entity) มี program counter ชี้บรรทัดคำสั่งที่จะทำงานต่อไป และกลุ่มของทรัพยากรที่เกี่ยวข้อง
แม้ว่าอาจมีกระบวนการ 2 กระบวนการ ทำงานบนโปรแกรมเดียวกัน ก็ยังต้องนับว่าเป็นการทำงานตามลำดับแยกกัน เป็นเรื่องปกติที่กระบวนการหลัก จะสร้างกระบวนการย่อยหลาย ๆ กระบวนการในขณะทำงาน ซึ่งจะได้อธิบายโดยละเอียดในภายหลัง
4.1.2 สถานะของกระบวนการ (Process State)
ในขณะที่แต่ละกระบวนการกำลังทำงานอยู่ จะมีการเปลี่ยนแปลงสถานะของกระบวนการเกิดขึ้น ซึ่งสถานะดังกล่าวจะถูกกำหนดขึ้นโดย กิจกรรม ณ เวลาปัจจุบันที่กระบวนการนั้นกำลังกระทำอยู่ โดยที่แต่ละกระบวนการจะตกอยู่ในสถานะใดสถานะหนึ่งจากสถานะที่จะกล่าวต่อไปนี้
- New : กระบวนการใหม่กำลังถูกสร้างขึ้น
- Running : กระบวนการกำลังทำงานตามคำสั่งในโปรแกรม
(ในหน่วยประมวลผลกลาง)
- Waiting : กระบวนการกำลังรอคอยให้เหตุการณ์บางอย่างเกิดขึ้น เช่น รอให้การ
รับหรือส่งข้อมูลเสร็จ
- Ready : กระบวนการกำลังรอคอยที่จะเข้าใช้หน่วยประมวลผล
- Terminate : กระบวนการเสร็จสิ้นการทำงาน
มีข้อสังเกตว่าในขณะหนึ่ง ๆ จะมีเพียง 1 กระบวนการ เท่านั้นที่กำลังทำงานอยู่ แต่อาจมีหลาย กระบวนการอยู่ในสถานะพร้อม (Ready) หรือ สถานะกำลังรอคอย (waiting) เราสามารถแสดงสถานะต่าง ๆ ของกระบวนการได้ดังรูป

4.1.3 ตารางข้อมูลการประมวลผล (Process Control Block – PCB)
ระบบปฏิบัติการ แทนกระบวนการต่าง ๆ ด้วยตารางข้อมูลของกระบวนการ (PCB) หรืออาจเรียกว่า Task Control Block ซึ่งก็เป็นระเบียน หรือ ตารางข้อมูลที่ใช้เก็บข้อมูลต่าง ๆ ที่เกี่ยวข้องกับแต่ละกระบวนการโดยเฉพาะ ดังรูป


ข้อมูลต่าง ๆ ที่ปรากฏใน PCB มีดังต่อไปนี้
- สถานะของกระบวนการ (Process State) จะเก็บสถานะต่าง ๆ ได้แก่ new , running , waiting , ready หรือ terminate
- ตัวชี้โปรแกรม (program counter) จะเป็นตัวบอกตำแหน่งบรรทัดคำสั่งในโปรแกรมที่กระบวนการจะทำงานเป็นอันดับถัดไป
- รีจีสเตอร์ของหน่วยประมวลผล (CPU Register) จำนวนและชนิดของ Register นี้ ขึ้นอยู่กับฮาร์ดแวร์ของเครื่องนั้น ได้แก่ Accumulator Register, Index Register, Stack Pointer , General-purpose Register , Condition-Code Information เมื่อมีสัญญาณมาขัดจังหวะการทำงานของหน่วยประมวลผล ระบบต้องเก็บค่าต่าง ๆ ใน รีจีสเตอร์ เหล่านี้รวมทั้งตัวชี้โปรแกรมไว้ เพื่อให้กระบวนการสามารถกลับมาทำงานต่อ ณ จุดเดิมที่ถูกขัดจังหวะได้

- ข้อมูลในการจัดตารางทำงานของหน่วยประมวลผลกลาง (CPU Scheduling Information) คือ ข้อมูลเกี่ยวกับศักดิ์ (Priority) ของกระบวนการ , ตัวชี้แถวคอย , หรือตัวแปรอื่นใดในการจัดตารางการทำงาน
- สารสนเทศเกี่ยวกับการจัดการหน่วยความจำ (Memory – Management Information) ได้แก่ รีจีสเตอร์ฐาน (base register) และ รีจีสเตอร์ขอบเขต (limit register) หรือตารางแบ่งหน้า (page tables) หรือตารางส่วน (segment tables)
- ข้อมูลทางการบัญชี (Accounting Information) ได้แก่ จำนวนหน่วยประมวลผลกลาง และเวลาจริงที่ถูกใช้ไป , ข้อจำกัดด้านเวลา , เลขที่บัญชี , หมายเลขงานหรือกระบวนการ
- ข้อมูลสถานะการรับ-ส่งข้อมูล (I/O Status Information) ได้แก่ คำร้องขอรับ ส่งข้อมูลที่ยังค้างอยู่ , อุปกรณ์รับ-ส่งข้อมูลที่กระบวนการนั้น ๆ กำลังถือครองอยู่ , รายชื่อของแฟ้มข้อมูลที่กำลังถือครองอยู่ , รายชื่อของแฟ้มข้อมูลที่กำลังใช้อยู่ เป็นต้น
PCB เปรียบเสมือนที่เก็บสารสนเทศต่าง ๆ ของแต่ละกระบวนการ


4.2 การจัดตารางของกระบวนการ (Process Scheduling)
จุดประสงค์ของการทำงานแบบ multiprogramming คือ การพยายามที่จะทำให้หน่วยประมวลผลกลางทำงานอย่างมีประสิทธิผลสูงสุด โดยจัดให้มีกระบวนการเข้าไปทำงานในหน่วยประมวลผลตลอดเวลา แต่สำหรับระบบที่มีหน่วยประมวลผลเดียว (Uniprocessor system) จะมีเพียง 1 กระบวนการเท่านั้นที่สามารถใช้หน่วยประมวลผลกลางได้ และในกรณีที่มีหลายกระบวนการต้องการเข้าใช้หน่วยประมวลผลกลาง งานเหล่านั้นต้องรอจนกว่าหน่วยประมวลผลกลางจะว่างลง แล้วจึงมีการจัดตารางการใช้หน่วยประมวลผลกลางใหม่อีกครั้ง

4.2.1 การจัดตารางแถวคอย (Scheduling Queue)
เมื่อกระบวนการเข้าสู่ระบบ กระบวนการจะถูกจัดให้อยู่ในแถวคอย (Job Queue) ในหน่วยเก็บข้อมูลขนาดใหญ่ (เช่น จานบันทึก) เมื่อกระบวนการได้เข้าสู่หน่วยความจำหลักแล้ว กระบวนการนั้นจะถูกเก็บในรายการแบบเชื่องโยง (Link List) ที่เรียกว่า แถวพร้อม (Ready Queue) ซึ่งกระบวนการภายในแถวพร้อมนี้เป็นกระบวนการที่อยู่ในหน่วยความจำหลัก และพร้อมที่จะทำงาน เพียงแค่กำลังรอคอยเพื่อที่จะเข้าใช้หน่วยประมวลผลกลางเพื่อทำงานต่อไป โดยที่แถวพร้อมจะเก็บตัวชี้ (Pointer) ที่ชี้ไปยัง ตารางข้อมูลของกระบวนการ (PCB) ของกระบวนการแรกและกระบวนการสุดท้ายในแถวพร้อม และในแต่ละ PCB ก็จะมีตัวชี้ไปยัง PCB ที่อยู่ถัดไปด้วย
เมื่อกระบวนการได้ใช้หน่วยประมวลผลกลาง และทำงานไปได้ระยะเวลาหนึ่ง กระบวนการนั้นอาจต้องหยุดทำงานเพราะงานเสร็จหรือ หยุดรอเหตุการณ์บางอย่างให้เกิดขึ้น เช่น รออุปกรณ์รับ-ส่งข้อมูล เนื่องจากมีกระบวนการหลายกระบวนการทำงานอยู่ในระบบ ดังนั้นกระบวนการทั้งหลายอาจต้องเข้าแถวคอยเพื่อที่จะใช้อุปกรณ์รับ-ส่งข้อมูลต่าง ๆซึ่งแถวคอย อุปกรณ์ดังกล่าว เรียกว่า แถวอุปกรณ์” (Device Queue) โดยอุปกรณ์แต่ละตัวจะมีแถวคอยเป็นของตัวเอง ดังรูป


ในกรณีที่อุปกรณ์ตัวนั้นเป็นอุปกรณ์ที่ใช้เฉพาะงานใดงานหนึ่ง เช่น เครื่องขับเทป แถวคอยของอุปกรณ์ตัวนั้นก็จะมีเพียง 1 กระบวนการเท่านั้น แต่ถ้าเป็นอุปกรณ์ที่สามารถใช้ร่วมกันได้ เช่น จานบันทึกภายในแถวคอยของอุปกรณ์ตัวนั้นก็อาจมีหลายกระบวนการคอยอยู่ได้
รูปถัดไป แสดง แผนภาพของแถวคอย” (Queuing Diagram) รูปสี่เหลี่ยมผืนผ้าแทน แถวคอย 2 แบบ คือ แถวพร้อมและแถวอุปกรณ์ วงกลมแทนทรัพยากรซึ่งเป็นเจ้าของแถวคอยนั้น ๆ เส้นลูกศรแสดงทิศทางการไหลของกระบวนการในระบบ


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

4.2.2 ตัวจัดตารางการทำงาน (Schedulers)
กระบวนการหนึ่ง ๆ จะถูกย้ายจากแถวคอยหนึ่งไปยังอีกแถวคอยหนึ่งอยู่ตลอดเวลาที่กระบวนการนั้นทำงานอยู่ ซึ่งระบบปฏิบัติการจะเป็นผู้เลือกกระบวนการจากแถวคอยแต่ละแถวออกมา โดยการเลือกกระบวนการออกมานั้นจะกระทำโดยตัวจัดตาราง (Scheduler) ที่เหมาะสม
- ตัวจัดตารางระยะยาว (Long-Term Scheduler) ทำหน้าที่เลือกกระบวนการจากหน่วยเก็บข้อมูล เพื่อนำเข้าสู่หน่วยความจำหลัก
- ตัวจัดตารางระยะสั้น (Short-Term Scheduler หรือ CPU Scheduler) ทำหน้าที่เลือกกระบวนการที่รออยู่ในแถวพร้อมขึ้นมาเพื่อเข้าใช้หน่วยประมวลผลกลางต่อไป
ตัวจัดตารางการทำงานทั้งสองแบบมีข้อแตกต่างหลัก ๆ คือ ความถี่ในการทำงาน ตัวจัดตารางระยะสั้นจะต้องทำงานเลือกกระบวนการค่อนข้างบ่อย เพราะกระบวนการอาจทำงานในหน่วยประมวลผลกลางเพียง 2-3 มิลลิวินาที แล้วหยุดค่อยการรับส่งข้อมูล โดยปกติตัวจัดตารางระยะสั้นนี้จะทำงานอย่างน้อยทุก ๆ 10 มิลลิวินาที ซึ่งนับว่าบ่อยมาก ดังนั้นตัวจัดตารางระยะสั้นต้องสามารถทำงานได้เร็วมาก
ในส่วนของตัวจัดตารางระยะยาว จะมีความถี่ในการทำงานน้อยมาก ที่เป็นเช่นนี้เพราะว่า การสร้างกระบวนการใหม่ให้แก่ระบบอาจใช้เวลาเป็นนาที และเนื่องจากตัวจัดตารางระยะยาวเป็นตัวควบคุมจำนวนกระบลวนการที่เข้าสู่ระบบ ดังนั้นถ้าจำนวนกระบวนการที่ทำงานขนานกันในระบบมีเป็นจำนวนคงที่นั่นหมายความว่า ค่าเฉลี่ยในการสร้างกระบวนการหรือนำกระบวนการเข้าสู่หน่วยความจำหลักของระบบจะเท่ากับค่าเฉลี่ยของงานที่ออกจากระบบ ด้วยเหตุนี้ตัวจัดการทำงานจะทำงานก็ต่อเมื่อมีกระบวนการออกจากระบบ ซึ่งนับเป็นช่วงเวลาที่ยาวนาน ดังนั้นตัวจัดตารางระยะยาวก็จะมีเวลาในการตัดสินใจเลือกกระบวนการเป็นเวลานานด้วย
ข้อสำคัญที่สุดของตัวจัดตารางระยะยาวก็คือ จะเป็นผู้ทีเลือกกระบวนการให้เข้าสู่ระบบ โดยการเลือกดังกล่าวจะต้องก่อให้เกิดการทำงานอย่างสมดุลขึ้นในระบบ หมายความว่า ในระบบจะต้องมีจำนวนกระบวนการที่ใช้เวลาส่วนใหญ่ทำงานกับหน่วยประมวลผลกลาง (CPU-Bound Job) และจำนวนกระบวนการที่ใช้เวลาส่วนใหญ่ทำงานกับอุปกรณ์รับ-ส่งข้อมูล (I/O-bound job) เป็นไปอย่างเหมาะสม (สมดุลกัน)
ระบบปฏิบัติการบางระบบ (เช่น time-sharing) อาจจะมีการจัดตารางการทำงานในระดับกลางเพิ่มขึ้นอีกเรียกว่า ตัวจัดตารางระยะกลาง (Medium-term scheduler) ดังแสดงได้ดังภาพ


ตัวจัดตารางระยะกลาง จะทำหน้าที่ย้ายกระบวนการออกจากหน่วยความจำหลัก เพื่อที่จะลดจำนวนกระบวนการที่มีมากเกินไปในหน่วยความจำ (ลด Degree of Multiprogramming) ทำให้หน่วยประมวลผลทำงานได้ดีขึ้น สำหรับกระบวนการที่ถูกย้ายออกไปนี้จะถูกนำกลับเข้ามาในหน่วยความจำใหม่อีก เมื่อถึงเวลาที่เหมาะสม โดยจะเริ่มทำงานต่อจากจุดที่ออกไปจากระบบ วิธีการเคลื่อนย้ายกระบวนการดังกล่าวนี้เรียกว่า วิธีการย้ายที่ (swapping) ช่วยให้ระบบสามารถปรับสัดส่วนของกระบวนการแต่ละแบบให้เหมาะสม (Process mix) หรือช่วยลดความต้องการใช้หน่วยความจำหลักลงบ้าง

4.2.3 การเปลี่ยนงาน (Context Switch)
การเปลี่ยนกระบวนการที่ทำงานในหน่วยประมวลผล จากกระบวนการหนึ่งไปเป็นอีกกระบวนการหนึ่ง จำเป็นต้องเก็บค่าสถานะของกระบวนการเดิม และนำเอาค่าสถานะของกระบวนการใหม่มาลง (มักเป็น register) การทำเช่นนี้เรียกว่า การเปลี่ยนงาน (Context Switch)
ระบบของการเปลี่ยนงานนี้ต้องเสียค่าใช้จ่ายสูง และยังใช้เวลาส่วนใหญ่ไปกับการ switch ซึ่งเวลาที่ใช้จะขึ้นอยู่กับฮาร์ดแวร์ที่ใช้

4.3 การดำเนินงานของกระบวนการ (Operations on Process)4.3.1 การสร้างกระบวนการ (Process Creation)
กระบวนการหนึ่ง ๆ อาจสร้างกระบวนการใหม่เกิดขึ้น โดยการใช้คำสั่งเรียกระบบสร้างกระบวนการ และกระบวนการใหม่ ๆ ที่เกิดขึ้นมานั้นอาจจะสร้างกระบวนการใหม่ ๆ ต่อไปได้อีก ดังรูป


กระบวนการที่เป็นผู้สร้าง เรียกว่า กระบวนการแม่ (Parent Process) กระบวนการใหม่ที่ถูกสร้างขึ้นมาเรียกว่า กระบวนการลูก (Children Process) โดยทั่วไป กระบวนการหนึ่ง ๆ จะต้องการทรัพยากร เช่น เวลาที่ใช้ในหน่วยประมวลผลกลาง , หน่วยความจำ , แฟ้มข้อมูล ,อุปกรณ์รับ-ส่งข้อมูล เป็นจำนวนที่แน่นอน เพื่อที่จะทำงานได้จนเสร็จสมบูรณ์ และเมื่อมีกระบวนการย่อยเกิดขึ้น กระบวนการย่อยนั้นอาจร้องขอทรัพยากร ที่ต้องการจากระบบปฏิบัติการได้โดยตรง หรือ ถูกจำกัดให้ใช้ได้เฉพาะทรัพยากรส่วนของทรัพยากรแม่เท่านั้น ดังนั้น กระบวนการแม่ต้องแบ่งทรัพยากรให้กระบวนการย่อยแต่ละตัว หรือ ให้กระบวนการย่อยเหล่านั้น ใช้ทรัพยากรร่วมกัน (เช่น แฟ้มข้อมูล หรือ หน่วยความจำ) หรือ ให้กระบวนการย่อยใช้ทรัพยากรส่วนเฉพาะของแม่ (ซึ่งเป็นการป้องกันไม่ให้ระบบถูกแย่งทรัพยากรไปทั้งหมด เนื่องจากมีบางกระบวนการสร้างกระบวนการย่อยจำนวนมากเกินไป)
หลังจากสร้างกระบวนการย่อยแล้ว กระบวนการแม่อาจทำงาน (execute) ได้ 2 วิธี คือ
- กระบวนการแม่ ทำงานพร้อม ๆ กัน (concurrent) ไปกับกระบวนการลูก
- กระบวนการแม่คอยจนกระทั่ง กระบวนการลูกทั้งหมด สิ้นสุดการทำงาน
ในการระบุพื้นที่ว่างของกระบวนการใหม่ทำได้ 2 วิธี คือ
- กระบวนการลูกทำสำเนา (duplicate) มาจากกระบวนการแม่ (จำลองมา)
- กระบวนการลูกมีโปรแกรมที่ถูก load เข้ามาเอง (สร้างเอง)
ในระบบปฏิบัติการ UNIX แต่ละกระบวนการจะมีเลขประจำตัวเฉพาะ (Process Identifier) เป็นเลขจำนวนเต็ม (Integer) กระบวนการจะสร้างกระบวนการย่อย โดยคำสั่งเรียกระบบ fork กระบวนการใหม่ที่เกิดขึ้น จะมีตำแหน่งโปรแกรมของกระบวนการเดิม ซึ่งช่วยให้กระบวนการแม่(เดิม) สามารถติดต่อสื่อสารกับกระบวนการลูก (ใหม่) ได้สะดวก กระบวนการทั้งสอง (แม่และลูก) จะทำงานจากคำสั่ง (ในโปรแกรมเดียวกัน) จากคำสั่ง fork โดยที่กระบวนการลูกจะได้รหัสส่งคืนจากคำสั่ง fork เป็นศูนย์ แต่กระบวนการแม่จะได้ รหัสส่งคืนเป็นตัวเลข แสดงหมายเลขของกระบวนการลูก
โดยปกติ คำสั่งหลักจากคำสั่ง fork จะเป็นคำสั่งเรียกระบบ execve ทำหน้าที่นำโปรแกรมจากจานบันทึกมาลงในหน่วยความจำทับโปรแกรมเดิมของกระบวนการที่ใช้คำสั่งนี้ แล้วทำงานต่อในโปรแกรมใหม่ กระบวนการแม่สามารถสร้างลูกได้เรื่อย ๆ หรือถ้าไม่มีอะไรทำในขณะลูกกำลังทำงาน มันจะใช้คำสั่งเรียกระบบ wait เพื่อย้ายตัวเองไปที่แถวพร้อม จนกระทั้งลูกเสร็จสิ้นการทำงาน

4.3.2 การเสร็จสิ้นกระบวนการ (Process Termination)
กระบวนการจะสิ้นสุดหรือถูกยกเลิก เมื่อทำงานเสร็จในขั้นสุดท้าย แล้วร้องขอให้ระบบปฏิบัติการลบกระบวนการทิ้งไป โดยใช้คำสั่งเรียกระบบ exit ซึ่งกระบวนสามารถส่งข้อมูล (output) กลับไปให้กระบวนการแม่ได้ โดยคำสั่งเรียกระบบ wait กระบวนการหนึ่งอาจยกเลิกกระบวนการอื่นได้ โดยใช้คำสั่งเรียกระบบ เช่น คำสั่งยกเลิก (abort) การใช้คำสั่งนี้โดยปกติ ต้องเป็นกระบวนการแม่ใช้กับกระบวนการลูกเท่านั้น (เพราะกระบวนการแม่ทราบหมายเลขของกระบวนการลูกจากเมื่อตอนที่สร้างกระบวนการลูก)
กระบวนการแม่อาจต้องการยกเลิกกระบวนการลูกตัวหนึ่งเพราะ
- กระบวนการลูกใช้ทรัพยากรที่กระบวนการแม่แบ่งให้จนหมดแล้ว ทรัพยากรไม่พอใช้
- กระบวนการแม่ไม่ต้องการใช้กระบวนการลูกตัวนี้ อีกต่อไป
- กระบวนการแม่เสร็จสิ้นและระบบปฏิบัติการไม่ต้องการให้กระบวนการลูกทำงานต่อ
ระบบส่วนใหญ่ เมื่อกระบวนการแม่สิ้นสุด กระบวนการลูกต้องสิ้นสุดด้วย เราเรียกว่า การยกเลิกแบบลูกโซ่ (Cascading Termination) ซึ่งระบบมักจะเป็นผู้จัดการ ตัวอย่าง ในระบบ UNIX กระบวนการลูกจะสิ้นสุดหรือถูกยกเลิก โดยใช้คำสั่งเรียกระบบ exit ซึ่งกระบวนการแม่จะรอเหตุการณ์นี้ โดยใช้คำสั่งเรียกระบบ wait ซึ่งจะให้ค่ากลับคืนมาเป็นหมายเลขของกระบวนการลูกที่ถูกยกเลิกไป ในระบบ UNIX กระบวนการแม่ไม่จำเป็นต้องแบ่งทรัพยากรให้กระบวนการลูกเลย ระบบจะจัดการให้โดยให้ศักดิ์เท่า ๆ กัน ทุกกระบวนการในการใช้ทรัพยากรในระบบ (เช่น หน่วยความจำหลัก , จานบันทึก)

4.4 การทำงานร่วมกันของกระบวนการ (Cooperating Processes) กระบวนการที่ทำงานในระบบปฏิบัติการอาจจะเป็นกระบวนการอิสระ (independent processes) หรือ กระบวนการที่ต้องทำงานร่วมกัน (cooperation processes)
- กระบวนการอิสระ คือ กระบวนการที่ไม่มีผลกระทบต่อกระบวนการอื่นในระบบ เช่น กระบวนการซึ่งไม่แบ่งข้อมูล (ชั่วคราวหรือถาวร) ให้กับกระบวนการอื่น
- กระบวนการที่ต้องทำงานร่วมกัน คือ กระบวนการที่มีผลกระทบต่อกระบวนการอื่นในระบบ เช่น กระบวนการที่ต้องแบ่งข้อมูลให้กับกระบวนการอื่น ที่เป็นกระบวนการร่วม
เหตุผลต่าง ๆ ที่ทำให้ต้องจัดเตรียมสิ่งแวดล้อมให้กับกระบวนการที่ต้องทำงานร่วมกัน คือ
1. การร่วมกันใช้ข้อมูลข่าวสาร (Information sharing) เมื่อผู้ใช้หลายคนสนใจข่าวสารชิ้นเดียวกัน (เช่น ไฟล์ที่ถูก shared) เราต้องจัดเตรียมสิ่งแวดล้อมโดยอนุญาตให้เข้าถึงทรัพยากรเหล่านี้ร่วมกันได้
2. การคำนวณรวดเร็วขึ้น (Computation Speedup) ถ้าเราต้องการให้งานปกติสามารถทำงานได้เร็วขึ้น เราจะต้องแตกงานนั้นเป็นส่วนย่อย ๆ แล้วให้แต่ละส่วนทำงานขนานกันไปแต่ความเร็วในการคำนวณจะสูงขึ้นได้ก็ต่อเมื่อ ระบบมีอุปกรณ์ที่ใช้คำนวณหลาย ๆ ตัว เช่น มี CPU หลาย ๆ ตัว หรือ มีหน่วยคำนวณหลาย ๆ ตัว
3. ระบบย่อย (Modularity) เราอาจต้องการที่จะสร้างระบบให้อยู่ในรูปของระบบย่อยหรือโมดูล โดยอาจแบ่งหน้าที่งานต่าง ๆ ของระบบไปเป็นหน้าที่ละ 1 กระบวนการ
4. ความสะดวกสบาย (Convenience) ผู้ใช้แต่ละคนอาจจะมีงานหลาย ๆ งานที่ต้องทำงานในเวลาเดียวกัน เช่น ต้องการแก้ไขข้อมูล พิมพ์ข้อมูล และแปลภาษาไปพร้อม ๆ กัน ซึ่งสามารถทำได้
เพื่อให้เห็นถึงแนวคิดของการทำงานร่วมกันของกระบวนการ ลองพิจารณาปัญหา ผู้ผลิต-ผู้ใช้ (producer – consumer) กระบวนการผู้ผลิตจะผลิตหรือสร้างข้อมูลให้กระบวนการผู้ใช้ได้ใช้งาน เช่น โปรแกรมสำหรับพิมพ์ข้อมูล จะส่งข้อมูลไปยังเครื่องพิมพ์ (นับเป็นกระบวนการผู้ผลิต) ส่วนผู้ใช้ ก็คือ ตัวควบคุมเครื่องพิมพ์ (Printer driver) ซึ่งจะเป็นผู้พิมพ์ตัวอักขระที่ส่งมา ออกทางเครื่องพิมพ์อีกทอดหนึ่ง หรือ ตัวแปลภาษาชั้นสูง จะผลิตโปรแกรมภาษา assembly ให้ compiler นำไปใช้ต่อในการผลิตโปรแกรมภาษาเครื่อง ซึ่งจะถูกตัวนำโปรแกรมลงหน่วยความจำ (Loader) บรรจุโปรแกรมนี้ลงในหน่วยความจำอีกต่อหนึ่ง
เพื่อที่จะให้กระบวนการผู้ผลิต-ผู้ใช้ สามารถทำงานขนานกันไปได้ จำเป็นต้องมีที่พักข้อมูล (Buffer) ซึ่งผู้ผลิตจะนำข้อมูลไปใส่และผู้ใช้จะดึงข้อมูลไปใช้ ขณะที่ผู้ผลิตจะผลิตข้อมูลใส่ลงในช่องว่างหนึ่งของที่พักข้อมูล ผู้ใช้ก็สามารถดึงข้อมูล จากอีกช่องหนึ่งในที่พักข้อมูลนี้ไปใช้ได้ (ในเวลาเหลื่อมกัน) ดังนั้นจึงต้องมีการประสานงานระหว่างผู้ใช้และผู้ผลิต เพื่อป้องกันผู้ผลิตใส่ข้อมูล ลงในที่พักข้อมูลที่เต็มแล้ว หรือผู้ใช้พยายามดึงข้อมูลจากที่พัก ทั้ง ๆ ที่ยังไม่มีข้อมูลอยู่ ทั้งสองกรณีนี้ผู้ผลิต หรือผู้ใช้ จะต้องรอคอย
ถ้าที่พักข้อมูลมีขนาดไม่จำกัด (Unbounded-buffer) ผู้ใช้อาจต้องคอย ถ้าที่พักว่าง แต่ผู้ผลิตสามารถผลิตข้อมูลได้ตลอดเวลา (ไม่มีวันเต็ม)
แต่ถ้าที่พักข้อมูลมีขนาดจำกัด (Bounded-buffer) ผู้ผลิตอาจต้องรอบ้าง ถ้าที่พักข้อมูลเต็ม
ในการแก้ปัญหาดังกล่าว ควรใช้วิธีแบ่งกันใช้หน่วยความจำ (share memory) โดยกระบวนการของผู้ผลิตและผู้ใช้ share ตัวแปรเหล่านี้ร่วมกัน
var n;
type item = … ;
var buffer: array [0..n-1] of item;
in,out: 0..n-1;
- เริ่มต้น ตัวแปร in และ out มีค่าเป็น 0 in , out มีค่าตั้งแต่ 0 ถึง n – 1
- ที่พักข้อมูลนี้เป็นแบบแถวลำดับวงกลม (Circular array)
- มีตัวชี้ in ชี้ช่องว่างต่อจากหางแถวของที่พักข้อมูล
- out เป็นตัวชี้ช่องที่มีข้อมูลส่วนหัวแถวของที่พักข้อมูล
ดังนั้นที่พักนี้จะว่างเมื่อ in = out และจะเต็มเมื่อ (in + 1) MOD n = out

repeat
แสดงว่าเต็ม
produce an item in nextp

while (in + 1) mod n = out do no-op; // ไม่ทำอะไร
buffer[in] := nextp;
in := (in + 1) mod n; // แสดงว่าว่าง
until false;

โปรแกรมข้างต้นเป็นของผู้ผลิต มี nextp เป็นตัวแปรภายใน (local variable) ใช้เก็บข้อมูลที่ผลิตได้ก่อนที่จะนำลงที่พักข้อมูลต่อไป no-op (No-operation) คือ ประโยคว่างไม่ได้ทำอะไร
โปรแกรมต่อไปนี้ เป็นของผู้ใช้ มี nextc เป็นตัวแปรภายใน ใช้เก็บข้อมูลที่ได้จากที่พักข้อมูลร่วม ก่อนนำไปใช้งานจริง
ที่พักข้อมูลว่าง
repeat
while in = out do no-op;
nextc := buffer[out];
out := (out + 1) mod n; // ขณะที่เต็ม

consume the item in nextc

until false;

สังเกตว่า โปรแกรมนี้สามารถเก็บข้อมูลในที่พักได้มากที่สุด n – 1 เท่านั้น

4.6 การสื่อสารระหว่างกระบวนการ (Interprocess Communication IPC)IPC จัดเตรียมกลไกลในการให้กระบวนการติดต่อสื่อสารและประสานงาน (synchronize) กับกิจกรรมต่าง ๆ ของกระบวนการ ระบบข้อความ (message system) เป็นระบบที่ดีที่สุดในการสนับสนุนการสื่อสารระหว่างกระบวนการ

4.6.1 โครงสร้างพื้นฐาน (Basic Structure)
ระบบข่าวสาร คือ ระบบติดต่อสื่อสารของกระบวนการที่ไม่จำเป็นต้องใช้ตัวแปรร่วม (share variable) IPC แบ่งการทำงานออกเป็น 2 ส่วน คือ
- send (message)
- receive (message)
ถ้ากระบวนการ p และ q ต้องการติดต่อสื่อสารกัน ต้องส่งและรับข้อความซึ่งกันและกันผ่าน communication link
การ Link ทำได้หลายวิธี เช่น
- ทาง physical เช่น ผ่านหน่วยความจำร่วม (share memory) , hardware bus หรือ เครือข่าย (network)
- ทาง logical เช่น ผ่านทางคุณสมบัติต่าง ๆ ทางตรรกะ (logical properties)
ปัญหาของการสร้าง (implement) link คือ
- จะสร้าง link ได้อย่างไร
- เอา link มาใช้กับกระบวนการมากกว่า 2 กระบวนการได้หรือไม่
- ต้องมี link จำนวนเท่าไร ระหว่างทุก ๆ คู่ของกระบวนการ
- ความจุของ link ควรเป็นเท่าใด หมายถึง link ต้องการพื้นที่ว่างของที่พักข้อมูลมากแค่ไหน
- ขนาดของข้อความ ควรเป็นเท่าใด แล้ว link ต้องรองรับข้อความแบบขนาดแปรผัน (variable-size) หรือ ขนาดคงที่ (fixed-sized)
- Link นั้นเป็นแบบทางเดียว (unidirectional) หรือ สองทาง (bidirectional)
ในเรื่อง unidirectional คือ กระบวนการแต่ละกระบวนการที่ link กัน ต้องทำหน้าที่ รับหรือส่งเท่านั้น แต่ทั้งรับและส่งพร้อมกันไม่ได้
การรับหรือส่ง และการใช้ link ในทาง logical มีหลายวิธีดังนี้
- การติดต่อสื่อสารทางตรงหรือทางอ้อม
- การสื่อสารนั้นเป็นแบบ symmetric หรือ asymmetric
- ที่พักข้อมูลเป็นแบบอัตโนมัติหรือแบบชัดเจนแน่นอน (explicit)
- ส่งโดยการคัดลอก (copy) หรือ ส่งโดยการอ้างอิง (reference)
- ข้อความเป็นแบบขนาดคงที่ (fixed-sized) หรือ แบบแปรผัน (variable-sized)

4.6.2 การตั้งชื่อ (Naming)
กระบวนการที่จะติดต่อสื่อสารกัน จำเป็นต้องอ้างถึง ชื่อของผู้รับ และผู้ส่ง การอ้างอิงนี้จะทำโดยตรงหรือโดยอ้อม ก็ได้
4.6.2.1 การสื่อสารโดยตรง (Direct Communication)
ในการสื่อสารโดยตรง กระบวนการที่จะส่งหรือรับข้อความ ต้องระบุ ชื่อผู้รับและผู้ส่งให้ชัดเจน โดยใช้คำสั่ง
send (P ,message) เพื่อส่งข้อความไปยังกระบวนการ P (send to P)
receive (Q, message) เพื่อรับข้อความจากกระบวนการ Q (receive from Q)
Link ในระบบนี้จะมีคุณสมบัติ คือ
- Link จะเกิดขึ้นโดยอัตโนมัติ ระหว่างกระบวนการทั้งสอง โดยที่ แต่ละกระบวนการต้องรู้ชื่อของ อีกกระบวนการหนึ่งด้วย
- Link 1 Link จะเชื่อมต่อระหว่าง 2 กระบวนการเท่านั้น
- Link อาจเป็นแบบทางเดียว แต่โดยปกติมักเป็นแบบ 2 ทาง
ตัวอย่างในปัญหา ผู้ผลิต-ผู้ใช้ (producer-consumer) เราอาจเขียนโปรแกรม สำหรับผู้ผลิตได้ดังนี้
repeat

produce an item in nextp

send (consumer, nextp);
until false;

และโปรแกรมสำหรับผู้ใช้ ดังนี้
repeat
receive (producer , nextc);

consume the item in nextc

until false;
4.6.2.2 การสื่อสารทางอ้อม (Indirect Communication)
ข้อความถูกส่งและรับจากกล่องรับจดหมาย (mailboxes) (หมายถึง port) กล่องรับจดหมายเปรียบเหมือนที่ที่กระบวนการใช้ส่งข้อความหรือลบข้อความ กล่องแต่ละกล่องจะมีเลขเฉพาะ (unique identification) ของใครของมัน กระบวนการหนึ่ง ๆ สามารถสื่อสารกับกระบวนการอื่น ๆ ได้โดยผ่านหมายเลขที่ต่างกันของกล่องรับจดหมาย กระบวนการ 2 กระบวนการติดต่อสื่อสารกันได้ถ้ามีกล่องรับจดหมายร่วมกัน (share mailbox)
คุณสมบัติของ Link คือ
- Link จะเกิดขึ้นได้ก็ต่อเมื่อ กระบวนการมีการร่วมกันใช้กล่องรับจดหมาย
- Link อาจจะเกี่ยวข้อง (associated) กับกระบวนการหลายกระบวนการ
- กระบวนการแต่ละคู่สามารถมี link ได้หลายตัว โดย link แต่ละตัวติดต่อกันผ่านทางกล่องรับจดหมาย 1 กล่อง
- Link อาจเป็นแบบทางเดียวหรือสองทาง
สมมติว่ากระบวนการ P1 , P2 และ P3 ใช้กล่องรับจดหมาย A ร่วมกัน P1 ส่งข้อความให้ A ในขณะที่ P2 และ P3 รับจาก A กระบวนการไหนจะได้รับข้อความที่ส่งมาจาก P1 คำถามนี้มีวิธีแก้หลายทางดังนี้
- อนุญาตให้ link ที่เกี่ยวข้องกันอย่างมากแค่ 2 กระบวนการ
- อนุญาตให้ระบบเลือกว่ากระบวนการไหนจะรับข้อความ (ไม่ P2 ก็ P3 จะรับข้อความ) ระบบจะเป็นผู้จำแนกผู้รับกับผู้ส่งเอง
ระบบปฏิบัติการก็มีกล่องรับจดหมายเป็นของตัวเอง โดยระบบปฏิบัติการมีกลไกในการอนุญาตให้กระบวนการใช้งานกล่องรับจดหมายได้ดังนี้
- สร้างกล่องรับจดหมายใหม่
- ส่งและรับข้อความผ่านทางกล่องรับจดหมาย
- ทำลายกล่องรับจดหมาย
ตัวอย่างเช่น ถ้ากระบวนการ P สร้างกล่องรับจดหมาย A แล้วหลังจากนั้น สร้างกระบวนการใหม่ Q P และ Q อาจจะใช้กล่องรับจดหมาย A ร่วมกัน และเมื่อกระบวนการทั้งหมดทำงานเสร็จแล้ว กล่องรับจดหมายนั้นก็จะถูกทำลายโดยระบบปฏิบัติการ (เพื่อเพิ่มที่ว่างในการใช้กล่องรับจดหมายอื่น ๆ ต่อไป)

4.6.3 การพักข้อมูล (Buffering)
ความจุของ link เป็นตัวกำหนด จำนวนของข้อความซึ่งสามารถนำข้อมูลเข้าไปพักไว้อย่างชั่วคราว ซึ่งอยู่ในรูปแถว (Queue) 3 แบบ คือ
- ความจุแบบศูนย์ (Zero capacity) ความยาวของแถวเป็น 0
นั่นคือ link ไม่มีที่ให้ข้อความพักเลย ผู้ส่งต้องรอจนกระทั่งผู้รับมารับข้อความเอง การทำงานสอดคล้องกัน (synchronization) แบบนี้เรียกว่า rendezvous
- ความจุแบบมีขอบเขต (Bounded capacity) ความยาวของแถวมีขนาดจำกัด n
ดังนั้นจึงมีข้อความได้มากที่สุด n ข้อความที่สามมารถอยู่ในแถว (queue)
- ความจุแบบไร้ขอบเขต (Unbounded capacity) ความยาวของแถวคอยไม่จำกัด ดังนั้นจึงสามารถนำข้อความเข้าไปรอในแถวคอยได้มากผู้ส่งจึงไม่ต้องรอเลย
กรณีความจุแบบศูนย์ คือไม่มีที่พักข้อมูล ส่วนกรณีอื่นกระบวนการจะไม่รู้เลยว่าข้อความได้มาถึงปลายทางแล้วจนกว่าการส่ง (send operation) จะเสร็จ ถ้าสารสนเทศนี้สำคัญมาต่อการคำนวณ ผู้ส่งต้องสื่อสารกับผู้รับให้ชัดเจนเพื่อรับข้อความในภายหลัง ตัวอย่างเช่น สมมติว่า กระบวนการ P ส่งข้อความให้กระบวนการ Q และจะทำงานต่อได้ก็ต่อเมื่อข้อความนั้นได้รับแล้ว กระบวนการ P จะทำงานแบบเรียงลำดับ
send (Q, message);
receive (Q, message);
กระบวนการ Q ทำงาน
receive (P, message);
send (P, “acknowledgment”);
แต่ละกระบวนการ (P,Q) ถูกเรียกว่า การติดต่อสื่อสารแบบ asynchronous
ยังมีอีกหลายกรณี ที่ไม่อาจจัดลงในแบบต่าง ๆ ที่กล่าวมาแล้ว ได้แก่
- ผู้ส่งข้อความไม่ต้องรอคอยใด ๆ แต่ถ้าผู้รับไม่ได้รับข้อความ ก่อนที่ผู้ส่งจะส่งข้อความใหม่มาอีก ข้อความเดิมจะสูญหายไป
- ผู้ส่งข้อความ อาจจะรอจนกระทั่ง ได้รับคำตอบรับ วิธีประสานงานแบบนี้ สามารถนำไปใช้ ในระบบ การเรียกโปรแกรมย่อยระยะไกล (Remote Procedure Call – RPC) ได้อย่างสะดวก การเรียกโปรแกรมย่อย ในระบบที่มีหน่วยประมวลตัวเดียว เปรียบเสมือน ระบบส่งข้อความที่ผู้ส่งจะต้องรอจนผู้รับตอบรับกลับมา

4.6.4 ข้อยกเว้น (Exception Condition)
4.6.4.1 การยกเลิกกระบวนการ (Process Terminates)
ผู้รับหรือผู้ส่งอาจจะถูกยกเลิกไป (terminate) ก่อนที่ข้อความจะถูกประมวลผล จากสถานการณ์นี้เป็นการปล่อยให้ข้อความที่ยังไม่เคยถูกรับหรือถูกประมวลผลรอคอยข้อความที่ยังไม่เคยถูกส่ง เราจำแนกได้เป็น 2 กรณี ดังนี้
1. ผู้รับของกระบวนการ P อาจจะรอข้อความจากกระบวนการ Q ซึ่งถูกยกเลิกไปแล้ว ถ้าไม่ทำอะไรซักอย่าง P ก็จะถูก block ไว้ตลอดไป ในกรณีนี้ระบบอาจจะยกเลิก P หรือไม่ก็ แจ้งให้ P ทราบว่า Q ถูกยกเลิกไปแล้ว
2. กระบวนการ P อาจจะส่งข้อความไปสู่กระบวนการ Q ซึ่งถูกยกเลิกไปแล้ว ในการทำงานแบบพักข้อมูลอัตโนมัติ (automatic-buffering scheme) ห้ามทำอะไรเสี่ยง ๆ P จะยังคงทำงานต่อไป ถ้า P ต้องการรู้ว่าข้อความที่ส่งไปได้รับการประมวลผลโดย Q หรือยัง P ต้องร้องขอว่า Q ได้รับข้อความหรือยัง (acknowledgment) อย่างชัดเจน ในกรณีแบบไม่มีที่พักข้อมูล P จะถูก block ตลอดไป เช่นเดียวกับข้อ 1 คือ ระบบอาจจะยกเลิก P หรือไม่ก็ แจ้งให้ P ทราบว่า Q ถูกยกเลิกไปแล้ว

4.6.4.2 ข้อความสูญหาย (Lost Messages)
ข้อความจากกระบวนการ P ไป กระบวนการ Q อาจจะหล่นหายไประหว่างทาง ในระบบการติดต่อสื่อสารแบบเครือข่าย อันเนื่องมาจากฮาร์ดแวร์หรือสายการสื่อสารเสียหาย ในการจัดการกับปัญหานี้มีด้วยกัน 3 วิธีดังนี้
1. ระบบปฏิบัติการต้องสืบค้นการหล่นหายนี้และส่งข้อความไปใหม่อีกครั้งหนึ่ง
2. กระบวนการของผู้ส่งต้องสืบค้นการหล่นหายนี้และส่งข้อความไปใหม่อีกครั้งหนึ่ง ถ้ายังต้องการส่งอยู่
3. ระบบปฏิบัติการต้องสืบค้นการหล่นหายนี้ แล้วแจ้งให้กระบวนการของผู้ส่งทราบว่าข้อความนั้นหายไปแล้ว กระบวนการของผู้ส่งจะเป็นผู้เลือกเองว่าจะส่งไปใหม่หรือไม่
เราจะค้นพบว่าข้อความหายไปได้ด้วยการใช้ timeout

4.6.4.3 ข้อความเสียหาย (Scrambled Messages)
ข้อความที่ส่งอาจถึงมือผู้รับ แต่เสียหาย หรือ อ่านไม่รู้เรื่อง (เนื่องจาก การรบกวนในช่องทางการสื่อสาร) กรณีนี้เหมือนกับข้อความสูญหาย ระบบปฏิบัติการอาจส่งซ้ำให้ หรือแจ้งไปยังผู้ส่งว่าข้อความเสียหาย การตรวจดูว่าข้อความเสียหายหรือไม่นั้น นิยมใช้ ผลบวกรวม (Checksum), ความคล้ายคลึงกัน (parity), และ CRC

4.6.5 ตัวอย่าง ระบบปฏิบัติการ Windows NT
NT สนับสนุนการทำงานในสภาวะหลากหลาย (multiple) หรือระบบย่อย (subsystem) ซึ่งโปรแกรมประยุกต์จะสื่อสารกันผ่านกลไกการส่งผ่านข้อความ โปรแกรมประยุกต์เหล่านั้นก็จะถือเป็น client ของ server ในระบบย่อยของ NT
ข้อความที่ผ่านไปมาใน NT ถูกเรียกว่า ตัวเรียกการดำเนินงานภายใน (Local Procedure Call Facility (LPC)) LPC ใน NT ใช้ในการสื่อสารระหว่างกระบวนการ 2 กระบวนการ ซึ่งอยู่บนเครื่องเดียวกัน client ทุกตัวที่เรียกระบบย่อยจำเป็นต้องมีช่องทางการสื่อสาร มีอยู่ 2 ช่องทาง (port) ที่ NT ใช้ คือ ช่องการติดต่อ (connection port) และช่องการสื่อสาร (communication port) ช่องการติดต่อจะเห็นทุกกระบวนการ และให้วิธีในการติดตั้งช่องทางการสื่อสาร (communication channel)
การติดต่อสื่อสารกันทำได้ดังนี้
- client เปิดช่องการติดต่อของระบบย่อย
- client ร้องขอการติดต่อ
- server สร้างช่องการสื่อสารส่วนตัวขึ้นมา 2 ช่อง และส่งคืนช่องไปให้ client 1 ช่อง
- client และ server จะใช้ช่องในการสื่อสารเพื่อส่งข้อความหรือเรียกและฟังการตอบกลับ (reply)
เทคนิคการส่งผ่านข้อความของ NT มี 3 เทคนิค ดังนี้
1. ถ้ามีข้อความขนาดเล็กจะใช้แถว (queue) ข้อความของช่อง (port) เป็นที่เก็บข้อมูลทันที และคัดลอกข้อความจากกระบวนการหนึ่งไปยังกระบวนการอื่น วิธีนี้ข้อความสามารถส่งได้ทีละ 256 ไบต์
2. ถ้า client ต้องการส่งข้อความขนาดใหญ่ ต้องส่งผ่าน section object (share memory) client ต้องตัดสินใจว่าจะติดตั้งช่องทาง (channel) เพื่อใช้ส่งข้อความขนาดใหญ่หรือไม่ ถ้า client ตัดสินใจติดตั้งก็ต้องสร้าง section object นั้น ถ้า server ตัดสินใจตอบด้วยข้อความขนาดใหญ่เช่นกัน ก็ต้องสร้างหน่วย section object ด้วย ในการใช้ section object นี้จะมีข้อความขนาดเล็ก ๆ ที่ถูกส่งซึ่งบรรจุ pointer และขนาดของ section object นั้น
3. client ร้องขอการติดต่อเพื่อขอช่องทางการติดต่อของ server และบอกว่าจะใช้ Quick LPC