23
บบบบบ 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) กกกก กกกกกกก

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

Embed Size (px)

DESCRIPTION

รายวิชา os

Citation preview

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 กระบวนการ