Transcript
Page 1: บทที่ 4 กระบวนการ

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

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

4.1 แนวคิ�ดของกระบวนการ (Process Concept)

ป็/ญหาหน��งในการอธิ�บายเก&�ยวก�บ ระบบป็ฏิ�บ�ต่�การ ค1อ เราจะเร&ยกก�จกรรมของหน�วยป็ระมวล่ผู้ล่กล่างว�าอย�างไรด้& ในระบบการทำ�างานแบบกล่2�มเร&ยกว�า job ในระบบป็/นส�วน เร&ยกว�า โป็รแกรมผู้#�ใช่� (user program) หร1อ task แม�แต่�ระบบผู้#�ใช่�คนเด้&ยวอย�าง MS-DOS

แล่ะ Macintosh ผู้#�ใช่�เคร1�องอาจให�หล่าย ๆ โป็รแกรมทำ�างานพิร�อมก�น โด้ยโป็รแกรมหน��งเป็นโป็รแกรมโต่�ต่อบ (interactive) แล่ะทำ&�เหล่1อเป็นแบบกล่2�ม (batch) ในต่�าราเล่�มน&'ค�าว�า jobs ก�บ process ม&ความหมายเหม1อนก�น

4.1.1 กระบวนการ (The Process)

เราอาจเร&ยกโป็รแกรมทำ&�ก�าล่�งทำ�างานอย#�ว�าเป็น กระบวนการ (process) การทำ�างานของกระบวนการต่�องเป็นแบบล่�าด้�บ หร1อ อ&กน�ยหน��ง ณ เวล่าใด้ ๆ จะม&เพิ&ยงอย�างมากหน��งค�าส��ง ทำ&�ก�าล่�งด้�าเน�นการอย#�ในนามของกระบวนการน&'กระบวนการไม�ได้�หมายความเพิ&ยง โป็รแกรมแล่ะการทำ�างาน เทำ�าน�'น แต่�รวมถึ�ง program counter (พิวก register ของ CPU) ,stack (ข�อม#ล่ช่��วคราว) , data section (เก6บต่�วแป็รแบบ global)

โป็รแกรมเป็นส��งไม�ม&ช่&ว�ต่ (passive entity) เช่�น ค�าส��งทำ&�เก6บไว�ในจานบ�นทำ�ก ส�วนกระบวนการเสม1อนส��งม&ช่&ว�ต่ (active entity) ม& program counter ช่&'บรรทำ�ด้ค�าส��งทำ&�จะทำ�างานต่�อไป็ แล่ะกล่2�มของทำร�พิยากรทำ&�เก&�ยวข�องแม�ว�าอาจม&กระบวนการ 2 กระบวนการ ทำ�างานบนโป็รแกรมเด้&ยวก�น ก6ย�งต่�องน�บว�าเป็นการทำ�างานต่ามล่�าด้�บแยกก�น เป็นเร1�องป็กต่�ทำ&�กระบวนการหล่�ก จะสร�าง

Page 2: บทที่ 4 กระบวนการ

กระบวนการย�อยหล่าย ๆ กระบวนการในขณะทำ�างาน ซึ่��งจะได้�อธิ�บายโด้ยล่ะเอ&ยด้ในภายหล่�ง4.1.2 สถึานะของกระบวนการ (Process State)

ในขณะทำ&�แต่�ล่ะกระบวนการก�าล่�งทำ�างานอย#� จะม&การเป็ล่&�ยนแป็ล่งสถึานะของกระบวนการเก�ด้ข�'น ซึ่��งสถึานะด้�งกล่�าวจะถึ#กก�าหนด้ข�'นโด้ย ก�จกรรม ณ เวล่าป็/จจ2บ�นทำ&�กระบวนการน�'นก�าล่�งกระทำ�าอย#� โด้ยทำ&�แต่�ล่ะกระบวนการจะต่กอย#�ในสถึานะใด้สถึานะหน��งจากสถึานะทำ&�จะกล่�าวต่�อไป็น&'- New : กระบวนการใหม�ก�าล่�งถึ#กสร�างข�'น- Running : กระบวนการก�าล่�งทำ�างานต่ามค�าส��งในโป็รแกรม (ในหน�วยป็ระมวล่ผู้ล่กล่าง)

- Waiting : กระบวนการก�าล่�งรอคอยให�เหต่2การณ-บางอย�างเก�ด้ข�'น เช่�น รอให�การร�บหร1อส�งข�อม#ล่เสร6จ- Ready : กระบวนการก�าล่�งรอคอยทำ&�จะเข�าใช่�หน�วยป็ระมวล่ผู้ล่- Terminate : กระบวนการเสร6จส�'นการทำ�างานม&ข�อส�งเกต่ว�าในขณะหน��ง ๆ จะม&เพิ&ยง 1 กระบวนการ เทำ�าน�'นทำ&�ก�าล่�งทำ�างานอย#� แต่�อาจม&หล่าย กระบวนการอย#�ในสถึานะพิร�อม (Ready) หร1อ สถึานะก�าล่�งรอคอย (waiting) เราสามารถึแสด้งสถึานะต่�าง ๆ ของกระบวนการได้�ด้�งร#ป็

4.1.3 ต่ารางข�อม#ล่การป็ระมวล่ผู้ล่ (Process Control Block – PCB)

ระบบป็ฏิ�บ�ต่�การ แทำนกระบวนการต่�าง ๆ ด้�วยต่ารางข�อม#ล่ของกระบวนการ (PCB) หร1ออาจเร&ยกว�า Task Control Block ซึ่��งก6เป็นระเบ&ยน หร1อ ต่ารางข�อม#ล่ทำ&�ใช่�เก6บข�อม#ล่ต่�าง ๆ ทำ&�เก&�ยวข�องก�บแต่�ล่ะกระบวนการโด้ยเฉพิาะ ด้�งร#ป็

Page 3: บทที่ 4 กระบวนการ

ข�อม#ล่ต่�าง ๆ ทำ&�ป็รากฏิใน PCB ม&ด้�งต่�อไป็น&'- สถึานะของกระบวนการ (Process State) จะเก6บสถึานะต่�าง ๆ ได้�แก� new , running , waiting ,

ready หร1อ terminate

- ต่�วช่&'โป็รแกรม (program counter) จะเป็นต่�วบอกต่�าแหน�งบรรทำ�ด้ค�าส��งในโป็รแกรมทำ&�กระบวนการจะทำ�างานเป็นอ�นด้�บถึ�ด้ไป็- ร&จ&สเต่อร-ของหน�วยป็ระมวล่ผู้ล่ (CPU Register) จ�านวนแล่ะช่น�ด้ของ Register น&' ข�'นอย#�ก�บฮาร-ด้แวร-ของเคร1�องน�'น ได้�แก� Accumulator Register, Index Register, Stack Pointer ,

General-purpose Register , Condition-Code Information เม1�อม&ส�ญญาณมาข�ด้จ�งหวะการทำ�างานของหน�วยป็ระมวล่ผู้ล่ ระบบต่�องเก6บค�าต่�าง ๆ ใน ร&จ&สเต่อร- เหล่�าน&'รวมทำ�'งต่�วช่&'โป็รแกรมไว� เพิ1�อให�กระบวนการสามารถึกล่�บมาทำ�างานต่�อ ณ จ2ด้เด้�มทำ&�ถึ#กข�ด้จ�งหวะได้�

Page 4: บทที่ 4 กระบวนการ

- ข�อม#ล่ในการจ�ด้ต่ารางทำ�างานของหน�วยป็ระมวล่ผู้ล่กล่าง (CPU Scheduling Information)

ค1อ ข�อม#ล่เก&�ยวก�บศั�กด้�; (Priority) ของกระบวนการ , ต่�วช่&'แถึวคอย , หร1อต่�วแป็รอ1�นใด้ในการจ�ด้ต่ารางการทำ�างาน- สารสนเทำศัเก&�ยวก�บการจ�ด้การหน�วยความจ�า (Memory – Management Information) ได้�แก� ร&จ&สเต่อร-ฐาน (base register) แล่ะ ร&จ&สเต่อร-ขอบเขต่ (limit register) หร1อต่ารางแบ�งหน�า (page tables) หร1อต่ารางส�วน (segment tables)

- ข�อม#ล่ทำางการบ�ญช่& (Accounting Information) ได้�แก� จ�านวนหน�วยป็ระมวล่ผู้ล่กล่าง แล่ะเวล่าจร�งทำ&�ถึ#กใช่�ไป็ , ข�อจ�าก�ด้ด้�านเวล่า , เล่ขทำ&�บ�ญช่& , หมายเล่ขงานหร1อกระบวนการ- ข�อม#ล่สถึานะการร�บ-ส�งข�อม#ล่ (I/O Status Information) ได้�แก� ค�าร�องขอร�บ ส�งข�อม#ล่ทำ&�–

ย�งค�างอย#� , อ2ป็กรณ-ร�บ-ส�งข�อม#ล่ทำ&�กระบวนการน�'น ๆ ก�าล่�งถึ1อครองอย#� , รายช่1�อของแฟ้>มข�อม#ล่ทำ&�ก�าล่�งถึ1อครองอย#� , รายช่1�อของแฟ้>มข�อม#ล่ทำ&�ก�าล่�งใช่�อย#� เป็นต่�นPCB เป็ร&ยบเสม1อนทำ&�เก6บสารสนเทำศัต่�าง ๆ ของแต่�ล่ะกระบวนการ

4.2 การจั�ดตารางของกระบวนการ (Process Scheduling)

จ2ด้ป็ระสงค-ของการทำ�างานแบบ multiprogramming ค1อ การพิยายามทำ&�จะทำ�าให�หน�วยป็ระมวล่ผู้ล่กล่างทำ�างานอย�างม&ป็ระส�ทำธิ�ผู้ล่ส#งส2ด้ โด้ยจ�ด้ให�ม&กระบวนการเข�าไป็ทำ�างาน

Page 5: บทที่ 4 กระบวนการ

ในหน�วยป็ระมวล่ผู้ล่ต่ล่อด้เวล่า แต่�ส�าหร�บระบบทำ&�ม&หน�วยป็ระมวล่ผู้ล่เด้&ยว (Uniprocessor system) จะม&เพิ&ยง 1 กระบวนการเทำ�าน�'นทำ&�สามารถึใช่�หน�วยป็ระมวล่ผู้ล่กล่างได้� แล่ะในกรณ&ทำ&�ม&หล่ายกระบวนการต่�องการเข�าใช่�หน�วยป็ระมวล่ผู้ล่กล่าง งานเหล่�าน�'นต่�องรอจนกว�าหน�วยป็ระมวล่ผู้ล่กล่างจะว�างล่ง แล่�วจ�งม&การจ�ด้ต่ารางการใช่�หน�วยป็ระมวล่ผู้ล่กล่างใหม�อ&กคร�'ง

4.2.1 การจ�ด้ต่ารางแถึวคอย (Scheduling Queue)

เม1�อกระบวนการเข�าส#�ระบบ กระบวนการจะถึ#กจ�ด้ให�อย#�ในแถึวคอย (Job Queue) ในหน�วยเก6บข�อม#ล่ขนาด้ใหญ� (เช่�น จานบ�นทำ�ก) เม1�อกระบวนการได้�เข�าส#�หน�วยความจ�าหล่�กแล่�ว กระบวนการน�'นจะถึ#กเก6บในรายการแบบเช่1�องโยง (Link List) ทำ&�เร&ยกว�า แถึวพิร�อม (Ready

Queue) ซึ่��งกระบวนการภายในแถึวพิร�อมน&'เป็นกระบวนการทำ&�อย#�ในหน�วยความจ�าหล่�ก แล่ะพิร�อมทำ&�จะทำ�างาน เพิ&ยงแค�ก�าล่�งรอคอยเพิ1�อทำ&�จะเข�าใช่�หน�วยป็ระมวล่ผู้ล่กล่างเพิ1�อทำ�างานต่�อไป็ โด้ยทำ&�แถึวพิร�อมจะเก6บต่�วช่&' (Pointer) ทำ&�ช่&'ไป็ย�ง ต่ารางข�อม#ล่ของกระบวนการ (PCB) ของกระบวนการแรกแล่ะกระบวนการส2ด้ทำ�ายในแถึวพิร�อม แล่ะในแต่�ล่ะ PCB ก6จะม&ต่�วช่&'ไป็ย�ง PCB ทำ&�อย#�ถึ�ด้ไป็ด้�วยเม1�อกระบวนการได้�ใช่�หน�วยป็ระมวล่ผู้ล่กล่าง แล่ะทำ�างานไป็ได้�ระยะเวล่าหน��ง กระบวนการน�'นอาจต่�องหย2ด้ทำ�างานเพิราะงานเสร6จหร1อ หย2ด้รอเหต่2การณ-บางอย�างให�เก�ด้ข�'น เช่�น รออ2ป็กรณ-ร�บ-ส�งข�อม#ล่ เน1�องจากม&กระบวนการหล่ายกระบวนการทำ�างานอย#�ในระบบ ด้�งน�'นกระบวนการทำ�'งหล่ายอาจต่�องเข�าแถึวคอยเพิ1�อทำ&�จะใช่�อ2ป็กรณ-ร�บ-ส�งข�อม#ล่ต่�าง ๆซึ่��งแถึวคอย อ2ป็กรณ-ด้�งกล่�าว เร&ยกว�า แถึวอ2ป็กรณ- “ ”

(Device Queue) โด้ยอ2ป็กรณ-แต่�ล่ะต่�วจะม&แถึวคอยเป็นของต่�วเอง ด้�งร#ป็

Page 6: บทที่ 4 กระบวนการ

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

Page 7: บทที่ 4 กระบวนการ

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

4.2.2 ต่�วจ�ด้ต่ารางการทำ�างาน (Schedulers)

กระบวนการหน��ง ๆ จะถึ#กย�ายจากแถึวคอยหน��งไป็ย�งอ&กแถึวคอยหน��งอย#�ต่ล่อด้เวล่าทำ&�กระบวนการน�'นทำ�างานอย#� ซึ่��งระบบป็ฏิ�บ�ต่�การจะเป็นผู้#�เล่1อกกระบวนการจากแถึวคอยแต่�ล่ะแถึวออกมา โด้ยการเล่1อกกระบวนการออกมาน�'นจะกระทำ�าโด้ยต่�วจ�ด้ต่าราง (Scheduler) ทำ&�เหมาะสม- ต่�วจ�ด้ต่ารางระยะยาว (Long-Term Scheduler) ทำ�าหน�าทำ&�เล่1อกกระบวนการจากหน�วยเก6บข�อม#ล่ เพิ1�อน�าเข�าส#�หน�วยความจ�าหล่�ก - ต่�วจ�ด้ต่ารางระยะส�'น (Short-Term Scheduler หร1อ CPU Scheduler) ทำ�าหน�าทำ&�เล่1อกกระบวนการทำ&�รออย#�ในแถึวพิร�อมข�'นมาเพิ1�อเข�าใช่�หน�วยป็ระมวล่ผู้ล่กล่างต่�อไป็ต่�วจ�ด้ต่ารางการทำ�างานทำ�'งสองแบบม&ข�อแต่กต่�างหล่�ก ๆ ค1อ ความถึ&�ในการทำ�างาน ต่�วจ�ด้ต่ารางระยะส�'นจะต่�องทำ�างานเล่1อกกระบวนการค�อนข�างบ�อย เพิราะกระบวนการอาจทำ�างานในหน�วยป็ระมวล่ผู้ล่กล่างเพิ&ยง 2-3 ม�ล่ล่�ว�นาทำ& แล่�วหย2ด้ค�อยการร�บส�งข�อม#ล่ โด้ยป็กต่�ต่�วจ�ด้ต่ารางระยะส�'นน&'จะทำ�างานอย�างน�อยทำ2ก ๆ 10 ม�ล่ล่�ว�นาทำ& ซึ่��งน�บว�าบ�อยมาก ด้�งน�'นต่�วจ�ด้ต่ารางระยะส�'นต่�องสามารถึทำ�างานได้�เร6วมากในส�วนของต่�วจ�ด้ต่ารางระยะยาว จะม&ความถึ&�ในการทำ�างานน�อยมาก ทำ&�เป็นเช่�นน&'เพิราะว�า การสร�างกระบวนการใหม�ให�แก�ระบบอาจใช่�เวล่าเป็นนาทำ& แล่ะเน1�องจากต่�วจ�ด้ต่าราง

Page 8: บทที่ 4 กระบวนการ

ระยะยาวเป็นต่�วควบค2มจ�านวนกระบล่วนการทำ&�เข�าส#�ระบบ ด้�งน�'นถึ�าจ�านวนกระบวนการทำ&�ทำ�างานขนานก�นในระบบม&เป็นจ�านวนคงทำ&�น� �นหมายความว�า ค�าเฉล่&�ยในการสร�างกระบวนการหร1อน�ากระบวนการเข�าส#�หน�วยความจ�าหล่�กของระบบจะเทำ�าก�บค�าเฉล่&�ยของงานทำ&�ออกจากระบบ ด้�วยเหต่2น&'ต่�วจ�ด้การทำ�างานจะทำ�างานก6ต่�อเม1�อม&กระบวนการออกจากระบบ ซึ่��งน�บเป็นช่�วงเวล่าทำ&�ยาวนาน ด้�งน�'นต่�วจ�ด้ต่ารางระยะยาวก6จะม&เวล่าในการต่�ด้ส�นใจเล่1อกกระบวนการเป็นเวล่านานด้�วยข�อส�าค�ญทำ&�ส2ด้ของต่�วจ�ด้ต่ารางระยะยาวก6ค1อ จะเป็นผู้#�ทำ&เล่1อกกระบวนการให�เข�าส#�ระบบ โด้ยการเล่1อกด้�งกล่�าวจะต่�องก�อให�เก�ด้การทำ�างานอย�างสมด้2ล่ข�'นในระบบ หมายความว�า ในระบบจะต่�องม&จ�านวนกระบวนการทำ&�ใช่�เวล่าส�วนใหญ�ทำ�างานก�บหน�วยป็ระมวล่ผู้ล่กล่าง (CPU-Bound Job) แล่ะจ�านวนกระบวนการทำ&�ใช่�เวล่าส�วนใหญ�ทำ�างานก�บอ2ป็กรณ-ร�บ-ส�งข�อม#ล่ (I/O-bound job) เป็นไป็อย�างเหมาะสม (สมด้2ล่ก�น)

ระบบป็ฏิ�บ�ต่�การบางระบบ (เช่�น time-sharing) อาจจะม&การจ�ด้ต่ารางการทำ�างานในระด้�บกล่างเพิ��มข�'นอ&กเร&ยกว�า ต่�วจ�ด้ต่ารางระยะกล่าง (Medium-term scheduler) ด้�งแสด้งได้�ด้�งภาพิ

ต่�วจ�ด้ต่ารางระยะกล่าง จะทำ�าหน�าทำ&�ย�ายกระบวนการออกจากหน�วยความจ�าหล่�ก เพิ1�อทำ&�จะล่ด้จ�านวนกระบวนการทำ&�ม&มากเก�นไป็ในหน�วยความจ�า (ล่ด้ Degree of

Multiprogramming) ทำ�าให�หน�วยป็ระมวล่ผู้ล่ทำ�างานได้�ด้&ข�'น ส�าหร�บกระบวนการทำ&�ถึ#กย�ายออกไป็น&'จะถึ#กน�ากล่�บเข�ามาในหน�วยความจ�าใหม�อ&ก เม1�อถึ�งเวล่าทำ&�เหมาะสม โด้ยจะเร��มทำ�างานต่�อจากจ2ด้ทำ&�ออกไป็จากระบบ ว�ธิ&การเคล่1�อนย�ายกระบวนการด้�งกล่�าวน&'เร&ยกว�า ว�ธิ&การย�ายทำ&� (swapping) ช่�วยให�ระบบสามารถึป็ร�บส�ด้ส�วนของกระบวนการแต่�ล่ะแบบให�เหมาะสม (Process mix) หร1อช่�วยล่ด้ความต่�องการใช่�หน�วยความจ�าหล่�กล่งบ�าง

Page 9: บทที่ 4 กระบวนการ

4.2.3 การเป็ล่&�ยนงาน (Context Switch)

การเป็ล่&�ยนกระบวนการทำ&�ทำ�างานในหน�วยป็ระมวล่ผู้ล่ จากกระบวนการหน��งไป็เป็นอ&กกระบวนการหน��ง จ�าเป็นต่�องเก6บค�าสถึานะของกระบวนการเด้�ม แล่ะน�าเอาค�าสถึานะของกระบวนการใหม�มาล่ง (ม�กเป็น register) การทำ�าเช่�นน&'เร&ยกว�า การเป็ล่&�ยนงาน (Context Switch)

ระบบของการเป็ล่&�ยนงานน&'ต่�องเส&ยค�าใช่�จ�ายส#ง แล่ะย�งใช่�เวล่าส�วนใหญ�ไป็ก�บการ switch ซึ่��งเวล่าทำ&�ใช่�จะข�'นอย#�ก�บฮาร-ด้แวร-ทำ&�ใช่�

4.3 การด�าเน�นงานของกระบวนการ (Operations on Process)

4.3.1 การสร�างกระบวนการ (Process Creation)

กระบวนการหน��ง ๆ อาจสร�างกระบวนการใหม�เก�ด้ข�'น โด้ยการใช่�ค�าส��งเร&ยกระบบสร�างกระบวนการ แล่ะกระบวนการใหม� ๆ ทำ&�เก�ด้ข�'นมาน�'นอาจจะสร�างกระบวนการใหม� ๆ ต่�อไป็ได้�อ&ก ด้�งร#ป็

กระบวนการทำ&�เป็นผู้#�สร�าง เร&ยกว�า กระบวนการแม� (Parent Process) กระบวนการใหม�ทำ&�ถึ#กสร�างข�'นมาเร&ยกว�า กระบวนการล่#ก (Children Process) โด้ยทำ��วไป็ กระบวนการหน��ง ๆ จะต่�องการทำร�พิยากร เช่�น เวล่าทำ&�ใช่�ในหน�วยป็ระมวล่ผู้ล่กล่าง , หน�วยความจ�า , แฟ้>มข�อม#ล่ ,อ2ป็กรณ-ร�บ-ส�งข�อม#ล่ เป็นจ�านวนทำ&�แน�นอน เพิ1�อทำ&�จะทำ�างานได้�จนเสร6จสมบ#รณ- แล่ะเม1�อม&กระบวนการย�อยเก�ด้ข�'น กระบวนการย�อยน�'นอาจร�องขอทำร�พิยากร ทำ&�ต่�องการจากระบบป็ฏิ�บ�ต่�การได้�โด้ยต่รง หร1อ ถึ#กจ�าก�ด้ให�ใช่�ได้�เฉพิาะทำร�พิยากรส�วน

Page 10: บทที่ 4 กระบวนการ

ของทำร�พิยากรแม�เทำ�าน�'น ด้�งน�'น กระบวนการแม�ต่�องแบ�งทำร�พิยากรให�กระบวนการย�อยแต่�ล่ะต่�ว หร1อ ให�กระบวนการย�อยเหล่�าน�'น ใช่�ทำร�พิยากรร�วมก�น (เช่�น แฟ้>มข�อม#ล่ หร1อ หน�วยความจ�า) หร1อ ให�กระบวนการย�อยใช่�ทำร�พิยากรส�วนเฉพิาะของแม� (ซึ่��งเป็นการป็>องก�นไม�ให�ระบบถึ#กแย�งทำร�พิยากรไป็ทำ�'งหมด้ เน1�องจากม&บางกระบวนการสร�างกระบวนการย�อยจ�านวนมากเก�นไป็)

หล่�งจากสร�างกระบวนการย�อยแล่�ว กระบวนการแม�อาจทำ�างาน (execute) ได้� 2 ว�ธิ& ค1อ- กระบวนการแม� ทำ�างานพิร�อม ๆ ก�น (concurrent) ไป็ก�บกระบวนการล่#ก - กระบวนการแม�คอยจนกระทำ��ง กระบวนการล่#กทำ�'งหมด้ ส�'นส2ด้การทำ�างานในการระบ2พิ1'นทำ&�ว�างของกระบวนการใหม�ทำ�าได้� 2 ว�ธิ& ค1อ- กระบวนการล่#กทำ�าส�าเนา (duplicate) มาจากกระบวนการแม� (จ�าล่องมา)

- กระบวนการล่#กม&โป็รแกรมทำ&�ถึ#ก load เข�ามาเอง (สร�างเอง)

ในระบบป็ฏิ�บ�ต่�การ UNIX แต่�ล่ะกระบวนการจะม&เล่ขป็ระจ�าต่�วเฉพิาะ (Process Identifier)

เป็นเล่ขจ�านวนเต่6ม (Integer) กระบวนการจะสร�างกระบวนการย�อย โด้ยค�าส��งเร&ยกระบบ fork กระบวนการใหม�ทำ&�เก�ด้ข�'น จะม&ต่�าแหน�งโป็รแกรมของกระบวนการเด้�ม ซึ่��งช่�วยให�กระบวนการแม�(เด้�ม) สามารถึต่�ด้ต่�อส1�อสารก�บกระบวนการล่#ก (ใหม�) ได้�สะด้วก กระบวนการทำ�'งสอง (แม�แล่ะล่#ก) จะทำ�างานจากค�าส��ง (ในโป็รแกรมเด้&ยวก�น) จากค�าส��ง fork โด้ยทำ&�กระบวนการล่#กจะได้�รห�สส�งค1นจากค�าส��ง fork เป็นศั#นย- แต่�กระบวนการแม�จะได้� รห�สส�งค1นเป็นต่�วเล่ข แสด้งหมายเล่ขของกระบวนการล่#กโด้ยป็กต่� ค�าส��งหล่�กจากค�าส��ง fork จะเป็นค�าส��งเร&ยกระบบ execve ทำ�าหน�าทำ&�น�าโป็รแกรมจากจานบ�นทำ�กมาล่งในหน�วยความจ�าทำ�บโป็รแกรมเด้�มของกระบวนการทำ&�ใช่�ค�าส��งน&' แล่�วทำ�างานต่�อในโป็รแกรมใหม� กระบวนการแม�สามารถึสร�างล่#กได้�เร1�อย ๆ หร1อถึ�าไม�ม&อะไรทำ�าในขณะล่#กก�าล่�งทำ�างาน ม�นจะใช่�ค�าส��งเร&ยกระบบ wait เพิ1�อย�ายต่�วเองไป็ทำ&�แถึวพิร�อม จนกระทำ�'งล่#กเสร6จส�'นการทำ�างาน

4.3.2 การเสร6จส�'นกระบวนการ   (Process Termination)

กระบวนการจะส�'นส2ด้หร1อถึ#กยกเล่�ก เม1�อทำ�างานเสร6จในข�'นส2ด้ทำ�าย แล่�วร�องขอให�ระบบป็ฏิ�บ�ต่�การล่บกระบวนการทำ�'งไป็ โด้ยใช่�ค�าส��งเร&ยกระบบ exit ซึ่��งกระบวนสามารถึส�งข�อม#ล่ (output) กล่�บไป็ให�กระบวนการแม�ได้� โด้ยค�าส��งเร&ยกระบบ wait กระบวนการหน��งอาจยกเล่�กกระบวนการอ1�นได้� โด้ยใช่�ค�าส��งเร&ยกระบบ เช่�น ค�าส��งยกเล่�ก (abort) การใช่�

Page 11: บทที่ 4 กระบวนการ

ค�าส��งน&'โด้ยป็กต่� ต่�องเป็นกระบวนการแม�ใช่�ก�บกระบวนการล่#กเทำ�าน�'น (เพิราะกระบวนการแม�ทำราบหมายเล่ขของกระบวนการล่#กจากเม1�อต่อนทำ&�สร�างกระบวนการล่#ก)

กระบวนการแม�อาจต่�องการยกเล่�กกระบวนการล่#กต่�วหน��งเพิราะ- กระบวนการล่#กใช่�ทำร�พิยากรทำ&�กระบวนการแม�แบ�งให�จนหมด้แล่�ว ทำร�พิยากรไม�พิอใช่�- กระบวนการแม�ไม�ต่�องการใช่�กระบวนการล่#กต่�วน&' อ&กต่�อไป็- กระบวนการแม�เสร6จส�'นแล่ะระบบป็ฏิ�บ�ต่�การไม�ต่�องการให�กระบวนการล่#กทำ�างานต่�อระบบส�วนใหญ� เม1�อกระบวนการแม�ส�'นส2ด้ กระบวนการล่#กต่�องส�'นส2ด้ด้�วย เราเร&ยกว�า การยกเล่�กแบบล่#กโซึ่� (Cascading Termination) ซึ่��งระบบม�กจะเป็นผู้#�จ�ด้การ ต่�วอย�าง ในระบบ UNIX กระบวนการล่#กจะส�'นส2ด้หร1อถึ#กยกเล่�ก โด้ยใช่�ค�าส��งเร&ยกระบบ exit ซึ่��งกระบวนการแม�จะรอเหต่2การณ-น&' โด้ยใช่�ค�าส��งเร&ยกระบบ wait ซึ่��งจะให�ค�ากล่�บค1นมาเป็นหมายเล่ขของกระบวนการล่#กทำ&�ถึ#กยกเล่�กไป็ ในระบบ UNIX กระบวนการแม�ไม�จ�าเป็นต่�องแบ�งทำร�พิยากรให�กระบวนการล่#กเล่ย ระบบจะจ�ด้การให�โด้ยให�ศั�กด้�;เทำ�า ๆ ก�น ทำ2กกระบวนการในการใช่�ทำร�พิยากรในระบบ (เช่�น หน�วยความจ�าหล่�ก , จานบ�นทำ�ก)

4.4 การท�างานร�วมก�นของกระบวนการ (Cooperating Processes)

กระบวนการทำ&�ทำ�างานในระบบป็ฏิ�บ�ต่�การอาจจะเป็นกระบวนการอ�สระ (independent

processes) หร1อ กระบวนการทำ&�ต่�องทำ�างานร�วมก�น (cooperation processes)

- กระบวนการอ�สระ ค1อ กระบวนการทำ&�ไม�ม&ผู้ล่กระทำบต่�อกระบวนการอ1�นในระบบ เช่�น กระบวนการซึ่��งไม�แบ�งข�อม#ล่ (ช่��วคราวหร1อถึาวร) ให�ก�บกระบวนการอ1�น- กระบวนการทำ&�ต่�องทำ�างานร�วมก�น ค1อ กระบวนการทำ&�ม&ผู้ล่กระทำบต่�อกระบวนการอ1�นในระบบ เช่�น กระบวนการทำ&�ต่�องแบ�งข�อม#ล่ให�ก�บกระบวนการอ1�น ทำ&�เป็นกระบวนการร�วมเหต่2ผู้ล่ต่�าง ๆ ทำ&�ทำ�าให�ต่�องจ�ด้เต่ร&ยมส��งแวด้ล่�อมให�ก�บกระบวนการทำ&�ต่�องทำ�างานร�วมก�น ค1อ1. การร�วมก�นใช่�ข�อม#ล่ข�าวสาร (Information sharing) เม1�อผู้#�ใช่�หล่ายคนสนใจข�าวสารช่�'นเด้&ยวก�น (เช่�น ไฟ้ล่-ทำ&�ถึ#ก shared) เราต่�องจ�ด้เต่ร&ยมส��งแวด้ล่�อมโด้ยอน2ญาต่ให�เข�าถึ�งทำร�พิยากรเหล่�าน&'ร �วมก�นได้�2. การค�านวณรวด้เร6วข�'น (Computation Speedup) ถึ�าเราต่�องการให�งานป็กต่�สามารถึทำ�างานได้�เร6วข�'น เราจะต่�องแต่กงานน�'นเป็นส�วนย�อย ๆ แล่�วให�แต่�ล่ะส�วนทำ�างานขนาน

Page 12: บทที่ 4 กระบวนการ

ก�นไป็แต่�ความเร6วในการค�านวณจะส#งข�'นได้�ก6ต่�อเม1�อ ระบบม&อ2ป็กรณ-ทำ&�ใช่�ค�านวณหล่าย ๆ ต่�ว เช่�น ม& CPU หล่าย ๆ ต่�ว หร1อ ม&หน�วยค�านวณหล่าย ๆ ต่�ว3. ระบบย�อย (Modularity) เราอาจต่�องการทำ&�จะสร�างระบบให�อย#�ในร#ป็ของระบบย�อยหร1อโมด้#ล่ โด้ยอาจแบ�งหน�าทำ&�งานต่�าง ๆ ของระบบไป็เป็นหน�าทำ&�ล่ะ 1 กระบวนการ4. ความสะด้วกสบาย (Convenience) ผู้#�ใช่�แต่�ล่ะคนอาจจะม&งานหล่าย ๆ งานทำ&�ต่�องทำ�างานในเวล่าเด้&ยวก�น เช่�น ต่�องการแก�ไขข�อม#ล่ พิ�มพิ-ข�อม#ล่ แล่ะแป็ล่ภาษาไป็พิร�อม ๆ ก�น ซึ่��งสามารถึทำ�าได้�เพิ1�อให�เห6นถึ�งแนวค�ด้ของการทำ�างานร�วมก�นของกระบวนการ ล่องพิ�จารณาป็/ญหา ผู้#�ผู้ล่�ต่-ผู้#�ใช่� (producer – consumer) กระบวนการผู้#�ผู้ล่�ต่จะผู้ล่�ต่หร1อสร�างข�อม#ล่ให�กระบวนการผู้#�ใช่�ได้�ใช่�งาน เช่�น โป็รแกรมส�าหร�บพิ�มพิ-ข�อม#ล่ จะส�งข�อม#ล่ไป็ย�งเคร1�องพิ�มพิ- (น�บเป็นกระบวนการผู้#�ผู้ล่�ต่) ส�วนผู้#�ใช่� ก6ค1อ ต่�วควบค2มเคร1�องพิ�มพิ- (Printer

driver) ซึ่��งจะเป็นผู้#�พิ�มพิ-ต่�วอ�กขระทำ&�ส�งมา ออกทำางเคร1�องพิ�มพิ-อ&กทำอด้หน��ง หร1อ ต่�วแป็ล่ภาษาช่�'นส#ง จะผู้ล่�ต่โป็รแกรมภาษา assembly ให� compiler น�าไป็ใช่�ต่�อในการผู้ล่�ต่โป็รแกรมภาษาเคร1�อง ซึ่��งจะถึ#กต่�วน�าโป็รแกรมล่งหน�วยความจ�า (Loader) บรรจ2โป็รแกรมน&'ล่งในหน�วยความจ�าอ&กต่�อหน��งเพิ1�อทำ&�จะให�กระบวนการผู้#�ผู้ล่�ต่-ผู้#�ใช่� สามารถึทำ�างานขนานก�นไป็ได้� จ�าเป็นต่�องม&ทำ&�พิ�กข�อม#ล่ (Buffer) ซึ่��งผู้#�ผู้ล่�ต่จะน�าข�อม#ล่ไป็ใส�แล่ะผู้#�ใช่�จะด้�งข�อม#ล่ไป็ใช่� ขณะทำ&�ผู้#�ผู้ล่�ต่จะผู้ล่�ต่ข�อม#ล่ใส�ล่งในช่�องว�างหน��งของทำ&�พิ�กข�อม#ล่ ผู้#�ใช่�ก6สามารถึด้�งข�อม#ล่ จากอ&กช่�องหน��งในทำ&�พิ�กข�อม#ล่น&'ไป็ใช่�ได้� (ในเวล่าเหล่1�อมก�น) ด้�งน�'นจ�งต่�องม&การป็ระสานงานระหว�างผู้#�ใช่�แล่ะผู้#�ผู้ล่�ต่ เพิ1�อป็>องก�นผู้#�ผู้ล่�ต่ใส�ข�อม#ล่ ล่งในทำ&�พิ�กข�อม#ล่ทำ&�เต่6มแล่�ว หร1อผู้#�ใช่�พิยายามด้�งข�อม#ล่จากทำ&�พิ�ก ทำ�'ง ๆ ทำ&�ย�งไม�ม&ข�อม#ล่อย#� ทำ�'งสองกรณ&น&'ผู้#�ผู้ล่�ต่ หร1อผู้#�ใช่� จะต่�องรอคอยถึ�าทำ&�พิ�กข�อม#ล่ม&ขนาด้ไม�จ�าก�ด้ (Unbounded-buffer) ผู้#�ใช่�อาจต่�องคอย ถึ�าทำ&�พิ�กว�าง แต่�ผู้#�ผู้ล่�ต่สามารถึผู้ล่�ต่ข�อม#ล่ได้�ต่ล่อด้เวล่า (ไม�ม&ว�นเต่6ม)

แต่�ถึ�าทำ&�พิ�กข�อม#ล่ม&ขนาด้จ�าก�ด้ (Bounded-buffer) ผู้#�ผู้ล่�ต่อาจต่�องรอบ�าง ถึ�าทำ&�พิ�กข�อม#ล่เต่6มในการแก�ป็/ญหาด้�งกล่�าว ควรใช่�ว�ธิ&แบ�งก�นใช่�หน�วยความจ�า (share memory) โด้ยกระบวนการของผู้#�ผู้ล่�ต่แล่ะผู้#�ใช่� share ต่�วแป็รเหล่�าน&'ร �วมก�นvar n;

Page 13: บทที่ 4 กระบวนการ

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 เป็นต่�วช่&'ช่�องทำ&�ม&ข�อม#ล่ส�วนห�วแถึวของทำ&�พิ�กข�อม#ล่ด้�งน�'นทำ&�พิ�กน&'จะว�างเม1�อ in = out แล่ะจะเต่6มเม1�อ (in + 1) MOD n = out

repeat

… แสด้งว�าเต่6ม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) ใช่�เก6บข�อม#ล่ทำ&�ผู้ล่�ต่ได้�ก�อนทำ&�จะน�าล่งทำ&�พิ�กข�อม#ล่ต่�อไป็ no-op (No-operation) ค1อ ป็ระโยคว�างไม�ได้�ทำ�าอะไรโป็รแกรมต่�อไป็น&' เป็นของผู้#�ใช่� ม& nextc เป็นต่�วแป็รภายใน ใช่�เก6บข�อม#ล่ทำ&�ได้�จากทำ&�พิ�กข�อม#ล่ร�วม ก�อนน�าไป็ใช่�งานจร�งทำ&�พิ�กข�อม#ล่ว�างrepeatwhile in = out do no-op;nextc := buffer[out];

out := (out + 1) mod n; // ขณะทำ&�เต่6ม…consume the item in nextc…until false;

ส�งเกต่ว�า โป็รแกรมน&'สามารถึเก6บข�อม#ล่ในทำ&�พิ�กได้�มากทำ&�ส2ด้ n – 1 เทำ�าน�'น

Page 14: บทที่ 4 กระบวนการ

4.6 การสื่��อสื่ารระหว�างกระบวนการ (Interprocess Communication IPC)

IPC จ�ด้เต่ร&ยมกล่ไกล่ในการให�กระบวนการต่�ด้ต่�อส1�อสารแล่ะป็ระสานงาน (synchronize)

ก�บก�จกรรมต่�าง ๆ ของกระบวนการ ระบบข�อความ (message system) เป็นระบบทำ&�ด้&ทำ&�ส2ด้ในการสน�บสน2นการส1�อสารระหว�างกระบวนการ

4.6.1 โครงสร�างพิ1'นฐาน (Basic Structure)

ระบบข�าวสาร ค1อ ระบบต่�ด้ต่�อส1�อสารของกระบวนการทำ&�ไม�จ�าเป็นต่�องใช่�ต่�วแป็รร�วม (share variable) IPC แบ�งการทำ�างานออกเป็น 2 ส�วน ค1อ - send (message) - receive (message)

ถึ�ากระบวนการ p แล่ะ q ต่�องการต่�ด้ต่�อส1�อสารก�น ต่�องส�งแล่ะร�บข�อความซึ่��งก�นแล่ะก�นผู้�าน communication link

การ Link ทำ�าได้�หล่ายว�ธิ& เช่�น- ทำาง physical เช่�น ผู้�านหน�วยความจ�าร�วม (share memory) , hardware bus หร1อ เคร1อข�าย (network)

- ทำาง logical เช่�น ผู้�านทำางค2ณสมบ�ต่�ต่�าง ๆ ทำางต่รรกะ (logical properties)

ป็/ญหาของการสร�าง (implement) link ค1อ- จะสร�าง link ได้�อย�างไร- เอา link มาใช่�ก�บกระบวนการมากกว�า 2 กระบวนการได้�หร1อไม�- ต่�องม& link จ�านวนเทำ�าไร ระหว�างทำ2ก ๆ ค#�ของกระบวนการ- ความจ2ของ link ควรเป็นเทำ�าใด้ หมายถึ�ง link ต่�องการพิ1'นทำ&�ว�างของทำ&�พิ�กข�อม#ล่มากแค�ไหน- ขนาด้ของข�อความ ควรเป็นเทำ�าใด้ แล่�ว link ต่�องรองร�บข�อความแบบขนาด้แป็รผู้�น (variable-size) หร1อ ขนาด้คงทำ&� (fixed-sized)

- Link น�'นเป็นแบบทำางเด้&ยว (unidirectional) หร1อ สองทำาง (bidirectional)

ในเร1�อง unidirectional ค1อ กระบวนการแต่�ล่ะกระบวนการทำ&� link ก�น ต่�องทำ�าหน�าทำ&� ร�บหร1อส�งเทำ�าน�'น แต่�ทำ�'งร�บแล่ะส�งพิร�อมก�นไม�ได้�การร�บหร1อส�ง แล่ะการใช่� link ในทำาง logical ม&หล่ายว�ธิ&ด้�งน&'- การต่�ด้ต่�อส1�อสารทำางต่รงหร1อทำางอ�อม- การส1�อสารน�'นเป็นแบบ symmetric หร1อ asymmetric

Page 15: บทที่ 4 กระบวนการ

- ทำ&�พิ�กข�อม#ล่เป็นแบบอ�ต่โนม�ต่�หร1อแบบช่�ด้เจนแน�นอน (explicit)

- ส�งโด้ยการค�ด้ล่อก (copy) หร1อ ส�งโด้ยการอ�างอ�ง (reference)

- ข�อความเป็นแบบขนาด้คงทำ&� (fixed-sized) หร1อ แบบแป็รผู้�น (variable-sized)

4.6.2 การต่�'งช่1�อ (Naming)

กระบวนการทำ&�จะต่�ด้ต่�อส1�อสารก�น จ�าเป็นต่�องอ�างถึ�ง ช่1�อของผู้#�ร�บ แล่ะผู้#�ส�ง การอ�างอ�งน&'จะทำ�าโด้ยต่รงหร1อโด้ยอ�อม ก6ได้�4.6.2.1 การส1�อสารโด้ยต่รง (Direct Communication)

ในการส1�อสารโด้ยต่รง กระบวนการทำ&�จะส�งหร1อร�บข�อความ ต่�องระบ2 ช่1�อผู้#�ร �บแล่ะผู้#�ส�งให�ช่�ด้เจน โด้ยใช่�ค�าส��งsend (P ,message) เพิ1�อส�งข�อความไป็ย�งกระบวนการ P (send to P)

receive (Q, message) เพิ1�อร�บข�อความจากกระบวนการ Q (receive from Q)

Link ในระบบน&'จะม&ค2ณสมบ�ต่� ค1อ- Link จะเก�ด้ข�'นโด้ยอ�ต่โนม�ต่� ระหว�างกระบวนการทำ�'งสอง โด้ยทำ&� แต่�ล่ะกระบวนการต่�องร# �ช่1�อของ อ&กกระบวนการหน��งด้�วย- Link 1 Link จะเช่1�อมต่�อระหว�าง 2 กระบวนการเทำ�าน�'น- Link อาจเป็นแบบทำางเด้&ยว แต่�โด้ยป็กต่�ม�กเป็นแบบ 2 ทำางต่�วอย�างในป็/ญหา ผู้#�ผู้ล่�ต่-ผู้#�ใช่� (producer-consumer) เราอาจเข&ยนโป็รแกรม ส�าหร�บผู้#�ผู้ล่�ต่ได้�ด้�งน&'repeat…produce an item in nextp…send (consumer, nextp);until false;

แล่ะโป็รแกรมส�าหร�บผู้#�ใช่� ด้�งน&'repeatreceive (producer , nextc);…consume the item in nextc…until false;

Page 16: บทที่ 4 กระบวนการ

4.6.2.2 การส1�อสารทำางอ�อม (Indirect Communication)

ข�อความถึ#กส�งแล่ะร�บจากกล่�องร�บจด้หมาย (mailboxes) (หมายถึ�ง port) กล่�องร�บจด้หมายเป็ร&ยบเหม1อนทำ&�ทำ&�กระบวนการใช่�ส�งข�อความหร1อล่บข�อความ กล่�องแต่�ล่ะกล่�องจะม&เล่ขเฉพิาะ (unique identification) ของใครของม�น กระบวนการหน��ง ๆ สามารถึส1�อสารก�บกระบวนการอ1�น ๆ ได้�โด้ยผู้�านหมายเล่ขทำ&�ต่�างก�นของกล่�องร�บจด้หมาย กระบวนการ 2 กระบวนการต่�ด้ต่�อส1�อสารก�นได้�ถึ�าม&กล่�องร�บจด้หมายร�วมก�น (share

mailbox)

ค2ณสมบ�ต่�ของ Link ค1อ- Link จะเก�ด้ข�'นได้�ก6ต่�อเม1�อ กระบวนการม&การร�วมก�นใช่�กล่�องร�บจด้หมาย- Link อาจจะเก&�ยวข�อง (associated) ก�บกระบวนการหล่ายกระบวนการ- กระบวนการแต่�ล่ะค#�สามารถึม& link ได้�หล่ายต่�ว โด้ย link แต่�ล่ะต่�วต่�ด้ต่�อก�นผู้�านทำางกล่�องร�บจด้หมาย 1 กล่�อง- Link อาจเป็นแบบทำางเด้&ยวหร1อสองทำางสมมต่�ว�ากระบวนการ P1 , P2 แล่ะ P3 ใช่�กล่�องร�บจด้หมาย A ร�วมก�น P1 ส�งข�อความให� A

ในขณะทำ&� P2 แล่ะ P3 ร�บจาก A กระบวนการไหนจะได้�ร�บข�อความทำ&�ส�งมาจาก P1 ค�าถึามน&'ม&ว�ธิ&แก�หล่ายทำางด้�งน&'- อน2ญาต่ให� link ทำ&�เก&�ยวข�องก�นอย�างมากแค� 2 กระบวนการ- อน2ญาต่ให�ระบบเล่1อกว�ากระบวนการไหนจะร�บข�อความ (ไม� P2 ก6 P3 จะร�บข�อความ)

ระบบจะเป็นผู้#�จ�าแนกผู้#�ร�บก�บผู้#�ส�งเองระบบป็ฏิ�บ�ต่�การก6ม&กล่�องร�บจด้หมายเป็นของต่�วเอง โด้ยระบบป็ฏิ�บ�ต่�การม&กล่ไกในการอน2ญาต่ให�กระบวนการใช่�งานกล่�องร�บจด้หมายได้�ด้�งน&'- สร�างกล่�องร�บจด้หมายใหม�- ส�งแล่ะร�บข�อความผู้�านทำางกล่�องร�บจด้หมาย- ทำ�าล่ายกล่�องร�บจด้หมายต่�วอย�างเช่�น ถึ�ากระบวนการ P สร�างกล่�องร�บจด้หมาย A แล่�วหล่�งจากน�'น สร�างกระบวนการใหม� Q P แล่ะ Q อาจจะใช่�กล่�องร�บจด้หมาย A ร�วมก�น แล่ะเม1�อกระบวนการทำ�'งหมด้ทำ�างานเสร6จแล่�ว กล่�องร�บจด้หมายน�'นก6จะถึ#กทำ�าล่ายโด้ยระบบป็ฏิ�บ�ต่�การ (เพิ1�อเพิ��มทำ&�ว�างในการใช่�กล่�องร�บจด้หมายอ1�น ๆ ต่�อไป็)

Page 17: บทที่ 4 กระบวนการ

4.6.3 การพิ�กข�อม#ล่ (Buffering)

ความจ2ของ link เป็นต่�วก�าหนด้ จ�านวนของข�อความซึ่��งสามารถึน�าข�อม#ล่เข�าไป็พิ�กไว�อย�างช่��วคราว ซึ่��งอย#�ในร#ป็แถึว (Queue) 3 แบบ ค1อ- ความจ2แบบศั#นย- (Zero capacity) ความยาวของแถึวเป็น 0

น��นค1อ link ไม�ม&ทำ&�ให�ข�อความพิ�กเล่ย ผู้#�ส�งต่�องรอจนกระทำ��งผู้#�ร �บมาร�บข�อความเอง การทำ�างานสอด้คล่�องก�น (synchronization) แบบน&'เร&ยกว�า rendezvous

- ความจ2แบบม&ขอบเขต่ (Bounded capacity) ความยาวของแถึวม&ขนาด้จ�าก�ด้ n

ด้�งน�'นจ�งม&ข�อความได้�มากทำ&�ส2ด้ n ข�อความทำ&�สามมารถึอย#�ในแถึว (queue)

- ความจ2แบบไร�ขอบเขต่ (Unbounded capacity) ความยาวของแถึวคอยไม�จ�าก�ด้ ด้�งน�'นจ�งสามารถึน�าข�อความเข�าไป็รอในแถึวคอยได้�มากผู้#�ส�งจ�งไม�ต่�องรอเล่ยกรณ&ความจ2แบบศั#นย- ค1อไม�ม&ทำ&�พิ�กข�อม#ล่ ส�วนกรณ&อ1�นกระบวนการจะไม�ร# �เล่ยว�าข�อความได้�มาถึ�งป็ล่ายทำางแล่�วจนกว�าการส�ง (send operation) จะเสร6จ ถึ�าสารสนเทำศัน&'ส�าค�ญมาต่�อการค�านวณ ผู้#�ส�งต่�องส1�อสารก�บผู้#�ร �บให�ช่�ด้เจนเพิ1�อร�บข�อความในภายหล่�ง ต่�วอย�างเช่�น สมมต่�ว�า กระบวนการ P ส�งข�อความให�กระบวนการ Q แล่ะจะทำ�างานต่�อได้�ก6ต่�อเม1�อข�อความน�'นได้�ร�บแล่�ว กระบวนการ P จะทำ�างานแบบเร&ยงล่�าด้�บsend (Q, message);receive (Q, message);

กระบวนการ Q ทำ�างานreceive (P, message);send (P, “acknowledgment”);

แต่�ล่ะกระบวนการ (P,Q) ถึ#กเร&ยกว�า การต่�ด้ต่�อส1�อสารแบบ asynchronous

ย�งม&อ&กหล่ายกรณ& ทำ&�ไม�อาจจ�ด้ล่งในแบบต่�าง ๆ ทำ&�กล่�าวมาแล่�ว ได้�แก�- ผู้#�ส�งข�อความไม�ต่�องรอคอยใด้ ๆ แต่�ถึ�าผู้#�ร �บไม�ได้�ร�บข�อความ ก�อนทำ&�ผู้#�ส�งจะส�งข�อความใหม�มาอ&ก ข�อความเด้�มจะส#ญหายไป็- ผู้#�ส�งข�อความ อาจจะรอจนกระทำ��ง ได้�ร�บค�าต่อบร�บ ว�ธิ&ป็ระสานงานแบบน&' สามารถึน�าไป็ใช่� ในระบบ การเร&ยกโป็รแกรมย�อยระยะไกล่ (Remote Procedure Call – RPC) ได้�อย�างสะด้วก การเร&ยกโป็รแกรมย�อย ในระบบทำ&�ม&หน�วยป็ระมวล่ต่�วเด้&ยว เป็ร&ยบเสม1อน ระบบส�งข�อความทำ&�ผู้#�ส�งจะต่�องรอจนผู้#�ร�บต่อบร�บกล่�บมา

4.6.4 ข�อยกเว�น (Exception Condition)

Page 18: บทที่ 4 กระบวนการ

4.6.4.1 การยกเล่�กกระบวนการ (Process Terminates)

ผู้#�ร�บหร1อผู้#�ส�งอาจจะถึ#กยกเล่�กไป็ (terminate) ก�อนทำ&�ข�อความจะถึ#กป็ระมวล่ผู้ล่ จากสถึานการณ-น&'เป็นการป็ล่�อยให�ข�อความทำ&�ย�งไม�เคยถึ#กร�บหร1อถึ#กป็ระมวล่ผู้ล่รอคอยข�อความทำ&�ย�งไม�เคยถึ#กส�ง เราจ�าแนกได้�เป็น 2 กรณ& ด้�งน&'1. ผู้#�ร�บของกระบวนการ P อาจจะรอข�อความจากกระบวนการ Q ซึ่��งถึ#กยกเล่�กไป็แล่�ว ถึ�าไม�ทำ�าอะไรซึ่�กอย�าง P ก6จะถึ#ก block ไว�ต่ล่อด้ไป็ ในกรณ&น&'ระบบอาจจะยกเล่�ก P หร1อไม�ก6 แจ�งให� P ทำราบว�า Q ถึ#กยกเล่�กไป็แล่�ว2. กระบวนการ P อาจจะส�งข�อความไป็ส#�กระบวนการ Q ซึ่��งถึ#กยกเล่�กไป็แล่�ว ในการทำ�างานแบบพิ�กข�อม#ล่อ�ต่โนม�ต่� (automatic-buffering scheme) ห�ามทำ�าอะไรเส&�ยง ๆ P จะย�งคงทำ�างานต่�อไป็ ถึ�า P ต่�องการร# �ว�าข�อความทำ&�ส�งไป็ได้�ร�บการป็ระมวล่ผู้ล่โด้ย Q หร1อย�ง P

ต่�องร�องขอว�า Q ได้�ร�บข�อความหร1อย�ง (acknowledgment) อย�างช่�ด้เจน ในกรณ&แบบไม�ม&ทำ&�พิ�กข�อม#ล่ P จะถึ#ก block ต่ล่อด้ไป็ เช่�นเด้&ยวก�บข�อ 1 ค1อ ระบบอาจจะยกเล่�ก P หร1อไม�ก6 แจ�งให� P ทำราบว�า Q ถึ#กยกเล่�กไป็แล่�ว

4.6.4.2 ข�อความส#ญหาย (Lost Messages)

ข�อความจากกระบวนการ P ไป็ กระบวนการ Q อาจจะหล่�นหายไป็ระหว�างทำาง ในระบบการต่�ด้ต่�อส1�อสารแบบเคร1อข�าย อ�นเน1�องมาจากฮาร-ด้แวร-หร1อสายการส1�อสารเส&ยหาย ในการจ�ด้การก�บป็/ญหาน&'ม&ด้�วยก�น 3 ว�ธิ&ด้�งน&'1. ระบบป็ฏิ�บ�ต่�การต่�องส1บค�นการหล่�นหายน&'แล่ะส�งข�อความไป็ใหม�อ&กคร�'งหน��ง2. กระบวนการของผู้#�ส�งต่�องส1บค�นการหล่�นหายน&'แล่ะส�งข�อความไป็ใหม�อ&กคร�'งหน��ง ถึ�าย�งต่�องการส�งอย#�3. ระบบป็ฏิ�บ�ต่�การต่�องส1บค�นการหล่�นหายน&' แล่�วแจ�งให�กระบวนการของผู้#�ส�งทำราบว�าข�อความน�'นหายไป็แล่�ว กระบวนการของผู้#�ส�งจะเป็นผู้#�เล่1อกเองว�าจะส�งไป็ใหม�หร1อไม�เราจะค�นพิบว�าข�อความหายไป็ได้�ด้�วยการใช่� timeout

4.6.4.3 ข�อความเส&ยหาย (Scrambled Messages)

ข�อความทำ&�ส�งอาจถึ�งม1อผู้#�ร �บ แต่�เส&ยหาย หร1อ อ�านไม�ร# �เร1�อง (เน1�องจาก การรบกวนในช่�องทำางการส1�อสาร) กรณ&น&'เหม1อนก�บข�อความส#ญหาย ระบบป็ฏิ�บ�ต่�การอาจส�งซึ่�'าให� หร1อแจ�งไป็ย�งผู้#�ส�งว�าข�อความเส&ยหาย การต่รวจด้#ว�าข�อความเส&ยหายหร1อไม�น�'น น�ยม

Page 19: บทที่ 4 กระบวนการ

ใช่� ผู้ล่บวกรวม (Checksum), ความคล่�ายคล่�งก�น (parity), แล่ะ CRC

4.6.5 ต่�วอย�าง ระบบป็ฏิ�บ�ต่�การ Windows NT

NT สน�บสน2นการทำ�างานในสภาวะหล่ากหล่าย (multiple) หร1อระบบย�อย (subsystem) ซึ่��งโป็รแกรมป็ระย2กต่-จะส1�อสารก�นผู้�านกล่ไกการส�งผู้�านข�อความ โป็รแกรมป็ระย2กต่-เหล่�าน�'นก6จะถึ1อเป็น client ของ server ในระบบย�อยของ NT

ข�อความทำ&�ผู้�านไป็มาใน NT ถึ#กเร&ยกว�า ต่�วเร&ยกการด้�าเน�นงานภายใน (Local Procedure Call

Facility (LPC)) LPC ใน NT ใช่�ในการส1�อสารระหว�างกระบวนการ 2 กระบวนการ ซึ่��งอย#�บนเคร1�องเด้&ยวก�น client ทำ2กต่�วทำ&�เร&ยกระบบย�อยจ�าเป็นต่�องม&ช่�องทำางการส1�อสาร ม&อย#� 2

ช่�องทำาง (port) ทำ&� NT ใช่� ค1อ ช่�องการต่�ด้ต่�อ (connection port) แล่ะช่�องการส1�อสาร (communication port) ช่�องการต่�ด้ต่�อจะเห6นทำ2กกระบวนการ แล่ะให�ว�ธิ&ในการต่�ด้ต่�'งช่�องทำางการส1�อสาร (communication channel)

การต่�ด้ต่�อส1�อสารก�นทำ�าได้�ด้�งน&'- client เป็@ด้ช่�องการต่�ด้ต่�อของระบบย�อย- client ร�องขอการต่�ด้ต่�อ- server สร�างช่�องการส1�อสารส�วนต่�วข�'นมา 2 ช่�อง แล่ะส�งค1นช่�องไป็ให� client 1 ช่�อง- client แล่ะ server จะใช่�ช่�องในการส1�อสารเพิ1�อส�งข�อความหร1อเร&ยกแล่ะฟ้/งการต่อบกล่�บ (reply)

เทำคน�คการส�งผู้�านข�อความของ NT ม& 3 เทำคน�ค ด้�งน&'1. ถึ�าม&ข�อความขนาด้เล่6กจะใช่�แถึว (queue) ข�อความของช่�อง (port) เป็นทำ&�เก6บข�อม#ล่ทำ�นทำ& แล่ะค�ด้ล่อกข�อความจากกระบวนการหน��งไป็ย�งกระบวนการอ1�น ว�ธิ&น&'ข�อความสามารถึส�งได้�ทำ&ล่ะ 256 ไบต่-2. ถึ�า client ต่�องการส�งข�อความขนาด้ใหญ� ต่�องส�งผู้�าน section object (share memory)

client ต่�องต่�ด้ส�นใจว�าจะต่�ด้ต่�'งช่�องทำาง (channel) เพิ1�อใช่�ส�งข�อความขนาด้ใหญ�หร1อไม� ถึ�า client ต่�ด้ส�นใจต่�ด้ต่�'งก6ต่�องสร�าง section object น�'น ถึ�า server ต่�ด้ส�นใจต่อบด้�วยข�อความขนาด้ใหญ�เช่�นก�น ก6ต่�องสร�างหน�วย section object ด้�วย ในการใช่� section object

น&'จะม&ข�อความขนาด้เล่6ก ๆ ทำ&�ถึ#กส�งซึ่��งบรรจ2 pointer แล่ะขนาด้ของ section object น�'น3. client ร�องขอการต่�ด้ต่�อเพิ1�อขอช่�องทำางการต่�ด้ต่�อของ server แล่ะบอกว�าจะใช่� Quick

LPC

Page 20: บทที่ 4 กระบวนการ

Recommended