thaiall logomy background

การจัดการโปรเซส (Process management)

my town
สารบัญ :: #1 :: #2 :: #3 :: #4 :: #5 :: #6 :: #7 :: #8 :: #9 :: #10 :: #11 :: #12 :: Linux ::
การจัดการโปรเซส
สาระการเรียนรู้
1. องค์ประกอบของโปรเซส
2. สถานะของโปรเซส
3. การจัดเวลาโปรเซส
4. การปฏิบัติการบนโปรเซส
5. โปรเซสสื่อประสาน
6. การสื่อสารในโปรเซส
7. แบบของการประมวลผล
จุดประสงค์การสอน
1. สามารถเขียนตารางแสดงองค์ประกอบของโปรเซสได้
2. สามารถเขียนภาพแสดงสถานะของโปรเซสได้
3. เข้าใจการจัดเวลาโปรเซส
4. เข้าใจการปฏิบัติการบนโปรเซส
5. สามารถบอกได้ว่าเหตุที่ทำให้เกิดโปรเซสสื่อประสานได้
6. สามารถบอกได้ว่าเรื่องที่ต้องพิจารณาเกี่ยวกับการสื่อสารในโปรเซสมีอะไรบ้าง
7. เข้าใจแบบของการประมวลผล
8. สามารถเขียนภาพแสดงแบบของการประมวลผลแต่ละแบบ
แนะนำบทเรียน
เมื่อโปรแกรมถูกเรียกขึ้นมาประมวลผลก็จะต้องสร้างโปรเซส (Process) และเรียกใช้ข้อมูล (Data) มีอะไรอีกมากมายในแต่ละโปรเซส ใน windows สามารถกดปุ่ม ctrl-alt-del เพื่อเปิด Task manager, Processes และจัดการโปรเซสได้ เช่น ปิด หรือกำหนด CPU ที่ให้โปรเซสประมวลผล ใน DOS ก็สามารถใช้คำสั่ง tasklist ดูรายการทั้งหมด และ tasklist /m ก็จะแสดงโมดูล (Module) ที่โปรเซสเรียกใช้ ใน Linux ก็สามารถใช้ top หรือ ps เพื่อดูโปรเซสได้เช่นกัน

ตัวอย่างการใช้ DOS>tasklist /m
ใช้แสดงว่า task นั้น ใช้ library อะไรบ้าง
DOS>tasklist /M /FI "imagename eq x.exe"
เช่น Image name : filezilla.exe
Process ID : 1148
Module : ntdll.dll, kernel32.dll, ADVAPI32.DLL, RPCRT4.dll, Secur32.dll, COMCTL32.DLL, msvcrt.dll, GDI32.dll, USER32.dll, SHLWAPI.dll, COMDLG32.DLL, SHELL32.dll, mingwm10.dll, MPR.DLL, NETAPI32.DLL, OLE32.dll, OLEAUT32.DLL, WINMM.DLL, WS2_32.DLL, WS2HELP.dll, WSOCK32.DLL, IMM32.DLL, LPK.DLL, USP10.dll, MSCTF.dll, apphelp.dll, msctfime.ime, uxtheme.dll, msimg32.dll, xpsp2res.dll, msftedit.dll, SETUPAPI.dll, CLBCATQ.DLL, COMRes.dll, VERSION.dll, GROOVEEX.DLL, MSVCR90.dll, MSVCP90.dll, ATL90.DLL, office.odf, GrooveIntlResource.dll, cscui.dll, CSCDLL.dll, msohevi.dll
บทนำ ารศึกษาเรื่องโปรเซส เป็นหัวใจของการทำความเข้าใจของระบบคอมพิวเตอร์ที่มีผู้ใช้หลายคน (Multiuser computer system) คำว่าโปรเซสถูกใช้ครั้งแรกโดยผู้ออกแบบระบบมัลติกส์ (Multics) ในทศวรรษ 1690 มีการให้ความหมายของคำว่า "โปรเซส" ไว้หลายความหมายเช่น
- โปรแกรมที่กำลังถูกเอ็กซีคิ้ว
- กิจกรรมที่มีการทำงานสัมพันธ์กัน
- สิ่งที่ถูกมอบหมายไปให้โปรเซสเซอร์ได้
- หน่วยซึ่งถูกส่งต่อได้ (Dispatchable)
ยังไม่มีความหมายใดที่เป็นที่ยอมรับกันทุกคน แต่ความหมายที่ว่า โปรเซส คือ "โปรแกรมที่กำลังถูกเอ็กซีคิ้ว" นั้นถูกใช้บ่อยมากที่สุด ดังนั้นความหมายของคำว่า โปรเซส เราอาจเปรียบเทียบโปรแกรมเหมือนกับรถยนต์ที่จอดนิ่งอยู่ที่พร้อมที่จะวิ่งไป ในระบบหลายโปรแกรม (Multiprogramming) โปรเซสอาจเปรียบกับรถยนต์ที่วิ่งออกจากจุดเริ่มต้น ถ้ามีหลายโปรเซสอยู่ในระบบก็เหมือนกับการที่เรามีรถหลายคันที่จะต้องออกวิ่งไปพร้อม ๆ กัน ตัวซีพียูเปรียบได้กับคนขับรถ ถ้าซีพียูมีตัวเดียวก็เหมือนกับคนขับรถมีเพียงคนเดียว ดังนั้นเมื่อรถหลายคันออกวิ่งการที่คนขับคนเดียวจะพารถหลาย ๆ คันวิ่งไปต้องขับรถทีละคันให้วิ่งเดินหน้าไปทีละนิด เวียนเปลี่ยนไปจนครบทุกคัน จนถึงจุดหมายปลายทาง ( โปรแกรมสิ้นสุดลง ) นั้นคือเราสามารถมีโปรเซสหลาย ๆ โปรเซสทำงานไปพร้อม ๆ กันได้โดยมีซีพียูเพียงตัวเดียว
3.1 องค์ประกอบของโปรเซส
1. หมายเลขโปรเซส (Process id)
2. โค้ดโปรแกรม (Program code)
3. ข้อมูล (Data)
4. บล็อกควบคุมโปรเซส (PCB : Process control block)
4.1 พอยเตอร์ (Pointer)
4.2 สถานะของโปรเซส (Process state)
4.3 หมายเลขโปรเซส (Program id)
4.4 ตัวนับจำนวน (Program counter)
4.5 รีจิสเตอร์ (Register)
4.6 ข้อมูลการจัดเวลาของซีพียู (CPU scheduling information)
4.7 ข้อมูลการจัดการหน่วยความจำ (Memory management information)
4.8 ข้อมูลแอ็กเคาต์ (Account information)
4.9 ข้อมูลสถานะอินพุต/เอาต์พุต (I/O status information)
5. เวิร์ดสถานะโปรแกรม (PSW : Program Status Word)
6. คุณสมบัติของโปรเซส (Properties of process)
6.1 ลำดับความสำคัญของโปรเซส (Priority)
6.2 อำนาจหน้าที่ของโปรเซส (Authority)
6.3 คุณสมบัติอื่นที่ระบบปฏิบัติการกำหนดให้มี
บล็อกควบคุมโปรเซส
(PCB : Process control block)
pointerprocess state
process id
process counter
registers
list of open files
:::
:::
3.2 โครงสร้างข้อมูลของโปรเซส โครงสร้างข้อมูลของโปรเซส หรือ Process Control Block (PCB) [10].50
1. Process Identification (PID) เก็บหมายเลขเฉพาะโปรเซส
2. Process status เก็บสถานะปัจจุบัน
3. Program counter เก็บว่าคำสั่งถูกประมวลผลถึงลำดับที่เท่าใด
4. Process priority เก็บลำดับำความสำคัญ
5. Pointer เก็บตัวชี้ไปยังโปรเซสแม่/ลูก ที่เกี่ยวข้อง
6. Execution context หรือ Register contents เก็บรายละเอียดของ Register
7. Accounting เก็บรายการทรัพยากรที่โปรเซสต้องใช้งาน และระยะเวลาที่้ใช้
8. Memory information เก็บข้อมูลหน่วยความจำหลักที่ต้องใช้
9. Open files เก็บตัวชี้ไปยังแฟ้ม และอุปกรณ์
3.3 สถานะของโปรเซส
แบบที่ 1 - สถานะของโปรเซส (Process Status) แบ่งได้ 6 สถานะ
1. สถานะเริ่มต้น (New : The process is being created.)
2. สถานะพร้อม (Ready : The process is waiting to be assigned to a processor.)
3. สถานะรัน (Running : Instructions are being executed.)
4. สถานะรอ (Wait : The process is waiting for some event to occur.)
5. สถานะบล็อก (Block : The process is blocked for some event to occur.)
6. สถานะสิ้นสุด (Terminate : The process has finished execution.)

แบบที่ 2 - สถานะของโปรเซส (Process Status) แบ่ง 4 สถานะ
1. สถานะพร้อม (ready state) คือสถานะที่โปรเซสพร้อมที่จะใช้ซีพียูทันทีที่ระบบปฏิบัติการมอบหมายให้ ในสถานะนี้ไม่มีการรันของโปรเซส
2. สถานะรัน (running state) คือสถานะที่โปรเซสกำลังครอบครองซีพียูอยู่ มีการรันของโปรเซสจริง ๆ เพราะโปรเซสใช้ซีพียูเอ็กซีคิ้วคำสั่ง หรือโค้ดโปรแกรมของโปรเซสนั้น
3. สถานะติดขัด (blocked state) คือสถานะที่โปรเซสหยุดรอเหตุการณ์ใดเหตุการณ์หนึ่งให้เกิดขึ้น โปรเซสไม่จำเป็นต้องใช้ซีพียูและยังไม่พร้อมที่จะครอบครองซีพียู ซึ่งจะทำให้โปรเซสอื่นเข้ามาครอบครองซีพียูในช่วงนี้ได้
4. สถานะพัก (suspend state) คือสถานะที่โปรเซสไม่มีการทำงานใด ๆ หยุดนิ่งอย่างสมบูรณ์ ไม่มีการรอการใช้ซีพียูหรือเหตุการณ์ใด ๆ ให้เกิดขึ้น
แบบที่ 3 - สถานะของโปรเซส (Process Status) แบ่ง 5 สถานะ
1. Start
2. Ready
3. Running
4. Waiting
5. Terminated
3.4 การจัดเวลาโปรเซส
ระบบมัลติโปรแกรมมิ่ง คือ การจัดให้ process สามารถเข้าประมวลผลได้ตลอดเวลา
ระบบแบ่งเวลา คือ การสลับ process เข้าใช้ CPU บ่อย เท่าที่ผู้ใช้รู้สึกว่าทุก process ตอบสนองได้ตลอดเวลา
1. Device queue คือ การจัดคิวของโปรเซสต่าง ๆ เช่น คิวของ I/O คิวของการรอ child process หรือคิวของอินเทอร์รัพต์ เป็นต้น
เมื่อกระบวนการเข้าไปในระบบ จะถูกส่งเข้า job queue ซึ่ง queue จะรวบรวม process ทั้งหมดในระบบ และมีคำหลาย ๆ คำเกี่ยวกับการเข้าคิว เช่น ready, blocked และ running แต่ถ้า process รอเข้า I/O devices จะเรียกว่า device queue ซึ่งทุกอุปกรณ์จะมี device queue ของตนเอง
processes จะย้ายไปมาระหว่าง queue ต่าง ๆ โดยระบบปฏิบัติการมีหน้าที่เลือกตามวัตถุประสงค์ และความเหมาะสม ซึ่งถูกจัดการโดย scheduler สำหรับแต่ละ Device queue ต่างก็มี scheduler ของตนเอง และมี scheduler ส่วนกลาง ควบคุมการทำงานของ process ทั้งหมดอีกครั้งหนึ่ง
2. Context switch คือ การทำงานที่ขึ้นกับความสามารถของฮาร์ดแวร์ เป็นการเลื่อน process ไปยังคิวต่อไป ในกรณีที่มีจำนวนโปรเซสมากกว่าชุดของรีจิสเตอร์ที่มีอยู่ ระบบจะคัดลอกโปรเซสส่วนเกินไปเป็นอีกชุดหนึ่ง เพื่อให้โปรเซสที่จำเป็นต้องเข้ามาได้ใช้รีจิสเตอร์ปัจจุบันได้ สำหรับรายละเอียดการจัดการโปรเซสขึ้นกับความสามารถของ OS เป็นเทคนิคที่หลีกเลี่ยงปัญหาคอขวดของระบบ
หลังประมวลผล Process หนึ่งเรียบร้อย ต้องย้ายไปยัง Process ใหม่ หรือ การย้ายจากหน่วยประมวลผลไปยังอีกกระบวนการหนึ่ง ต้องการ saving the stat of the old process and loading the saved state for the new process ซึ่งงานนี้ถูกเรียกว่า context switch สำหรับคำว่า context of process อาจแทนด้วย PCB of a process
Device queue
Mutual exclusion
คือ การกีดกั้น ในบริเวณ หรือส่วนของโปรแกรมที่ process เข้าครอบครองรีซอร์ส ซึ่งเรียกว่า Critical region ซึ่งการกีดกั้นก็คือการไม่ยอมให้ process ใด ๆ เข้าใช้พื้นที่ ๆ เป็น Critical region ซึ่งมีคุณสมบัติอยู่ 4 ประการ
    คุณสมบัติของ mutual exclusion
  1. ไม่มี process อยู่ใน critical region พร้อมกัน
  2. ไม่มีสมมติฐาน และข้อจำกัด ด้านความเร็ว หรือจำนวนซีพียูมาเป็นปัจจัย
  3. ไม่มี process นอก critical region ที่ block การทำงานของ process อื่น
  4. ไม่มี process ที่รอเข้าใจ critical region ตลอดเวลา

การแก้ปัญหา Mutual exclusion with busy waiting
  1. ยกเลิกอินเทอร์รัพต์ (Disable Interrupt)
  2. ตัวแปรล็อก (Lock Variable)
  3. ทางเลือกที่จำกัด (Strict Alternation)
  4. การแก้ปัญหาของพีเตอร์สัน (Peterson' solution)
  5. คำสั่งทีเอสแอล (TSL Instruction)
การกีดกั้นซึ่งกันและกันด้วยการคอยตอนยุ่ง [4].p69
(Mutual Exclusion with busy waiting)

1. ยกเลิกอินเทอร์รัพต์ (Disable Interrupt)
ใส่คำสั่ง Disable Interrupt ทำให้ process ประมวลผลใน CPU จนแล้วเสร็จ โดยไม่สนใจ interrupt ที่ส่งเข้าไป เป็นผลให้ process ที่เข้า CPU ได้ทำงานจนเสร็จ
2. ตัวแปรล็อก (Lock Variable)
เขียนโปรแกรมตรวจสอบการเข้าสู่ critical_region โดยใช้ตัวแปรมาตรวจสอบ ถ้าตัวแปรชื่อ lock มีค่าเป็นแสดงว่าเข้าพื้นที่วิกฤตได้ ถ้าเข้าได้ก็ต้องกำหนดเป็น 1 ป้องกัน process อื่นเข้าใช้พื้นที่วิกฤตชนกัน
if lock = 0 then
set lock = 1
call critical_region
else
wait until lock = 0
set lock = 1
call critical_region
end if
set lock = 0

3. ทางเลือกที่จำกัด (Strict Alternation)
คิดค้นการแก้ปัญหา Mutual exclusion โดย Dekker เป็นการผลัดกันเข้า CPU ของ process a และ b เหมาะกับ 2 process ที่ผลัดกัน และมีเวลาประมวลผลเท่า ๆ กัน แต่ข้อเสียคือเกิด busy waiting โดยเปล่าประโยชน์
procedure a
while (TRUE) {
while(turn !=0) { } // รอจนกว่า turn เป็น 0
critical_region();
turn = 1;
nocritical_region();
}
procedure b
while (TRUE) {
while(turn !=1) { } // รอจนกว่า turn เป็น 1
critical_region();
turn = 0;
nocritical_region();
}
! http://siber.cankaya.edu.tr/OperatingSystems/ceng328/node139.html

4. การแก้ปัญหาของพีเตอร์สัน (Peterson' solution)
วิธีนี้เพิ่มเติมของ Strict Alternation แต่สามารถรับได้หลาย process ก่อนเข้า critical region ให้เรียกใช้ enter_region() ก่อน เพื่อรับค่า turn จากหมายเลข process และรอให้ process 0 ว่าง เมื่อเสร็จแล้วก็เรียกใช้ leave_region() ที่ทำให้ process 0 ว่างนั่นเอง
อธิบายได้ว่า
ถ้า process 1 หรือ interested[0] ขอเข้า critical_region จะต้องรอให้ interested[0] เป็น False จึงจะเข้าไปได้ แปลว่า รอต่อไป "รอในขณะนี้ turn=process และ interest[0] เป็น true" แต่เลิกรอ และเข้าได้ต่อเมื่อ interest[0] เป็น false while(turn == process && interested[other] == TRUE); // wait
ประกอบด้วย 2 procedure
defind N 2; // number of process
int turn;
int interested[N];
void enter_region(int process) {
int other;
other = 1 - process;
interested[process] = TRUE;
turn = process;
while(turn == process && interested[other] == TRUE) {}
}
void leave_region(int process) {
interested[process] = FALSE;
}
http://www.cs.nott.ac.uk/~gxk/ courses/g53ops/Processes/proc07-peterson.html

5. คำสั่งทีเอสแอล (TSL Instruction)
Test Set Lock Instruction ใช้ตัวแปร Lock เหมือนกับ Lock variable cr = critical region แต่กรณีนี้เป็นภาษา Assembly และใช้คำสั่ง TSL Instruction
enter_cr_region:
TSL RX, Lock ;คัดลอกค่าเดิมของ Lock ไว้ใน RX และทำให้ Lock เป็น 1
CMP RX,#0
JNE enter_region ;หากไม่ใช่ 0 ก็ให้เรียกใช้ enter_region ใหม่ จนกว่าจะเป็น 0
RET ;กลับไปยังผู้เรียก และได้ใช้ critical_region
leave_cr_region:
MOVE Lock,#0
RET ;กลับไปยังผู้เรียก
http://www.moreprocess.com/process-2/ mutual-exclusion-by-test-and-set-lock-tsl-xchg-instruction
3.5 การปฏิบัติการบนโปรเซส
ขณะคอมพิวเตอร์ทำงานต้องการสร้าง และลบ process ตลอดเวลา จึงต้องมีการควบคุมให้ระบบคงสภาพอยู่ตลอดเวลา โปรเซสแม่ (Parent process) และโปรเซสลูก (Children process) ต้องถูกสร้าง และหยุดทำงานได้อย่างสอดคล้อง เพื่อให้เข้าใจเรื่องของ process จึงขอแสดง tree of process on a typical UNIX system ประกอบการอธิบาย
1. การสร้างโปรเซส (Process creation)
ถ้า process สร้าง process ขึ้นใหม่ เมื่อพิจารณาการ execute
1. โปรเซสแม่ยังประมวลผลต่อไป พร้อมโปรเซสลูก
(The parent continues to execute concurrently with its children.)
2. โปรเซสแม่ต้องรอให้โปรเซสลูกบางตัว หรือโปรเซสลูกทั้งหมดสิ้งสุด จึงจะเริ่มประมวลผลได้ใหม่
(The parent waits until some or all of its children have terminated.)
ถ้า process สร้าง process ขึ้นใหม่ เมื่อพิจารณา address ของโปรเซสใหม่
1. โปรเซสลูกเป็นสำเนาของโปรเซสแม่ คือใช้ address เดียวกับแม่
(The child process is a duplicate of the parent process.)
2. โปรเซสลูกมีตำแหน่งของ load address ของตนเอง
(The child process has a program loaded into it.)
2. การสิ้นสุดของโปรเซส (Process termination)

เหตุผลที่โปรเซสแม่จะหยุดการประมวลผลของโปรเซสลูก มีดังนี้
1. โปรเซสลูกใช้ resource มากกว่าที่กำหนดไว้
2. ไม่มีความจำเป็นต้องใช้โปรเซสนั้นอีกแล้ว
3. โปรเซสแม่สิ้นสุด และ OS ไม่ยอมให้โปรเซสลูกทำงานต่อไป
ตัวอย่าง process ที่ประมวลผลใน Linux
[root@yn1 root]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 1376 84 ? S Oct08 0:12 init
root 1482 0.0 0.0 1440 156 ? S Oct08 0:32 syslogd -m 0
root 1486 0.0 0.0 1368 4 ? S Oct08 0:00 klogd -x
rpc  1504 0.0 0.0 1540 0 ? SW Oct08 0:00 [portmap]
rpcuser 1523 0.0 0.0 1680 0 ? SW Oct08 0:00 [rpc.statd]
named 1620 0.0 1.9 41836 5040 ? S Oct08 6:16 [named]
root 1635 0.0 0.1 3508 300 ? S Oct08 0:05 /usr/sbin/sshd
root 1649 0.0 0.1 2024 368 ? S Oct08 0:02 xinetd -stayalive
root 1659 0.0 0.0 1596 88 ? S Oct08 0:00 /usr/sbin/vsftpd
root 1680 0.0 0.2 5920 548 ? S Oct08 0:52 [sendmail]
smmsp 1689 0.0 0.1 5716 316 ? S Oct08 0:00 [sendmail]
apache 9825 99.9 0.0 0 0 ? RW Oct08 15286:48 [httpd]
root 10719 0.0 0.0 17200 96 ? S Oct18 0:02 /usr/sbin/httpd
apache 15017 0.0 3.0 22708 7860 ? S Oct18 0:07 [httpd]
apache 15018 0.0 2.8 23940 7312 ? S Oct18 0:06 [httpd]
apache 18350 0.0 3.3 27072 8604 ? S 08:23 0:06 [httpd]
root 22018 0.0 0.8 6268 2108 ? S 13:16 0:00 [sendmail]
3.6 โปรเซสสื่อประสาน (Cooperating process)
โปรเซสที่ประมวลผลในระบบอาจเป็นได้มีได้ 2 แบบคือโปรเซสอิสระ (Independent process) ซึ่งทำงานโดยไม่มีผลกระทบ หรือได้รับผลกระทบจากโปรเซสอื่น เป็นอิสระที่ไม่มีการแบ่งปันทรัพยากรร่วมกับใคร ส่วนโปรเซสสื่อประสาน (Cooperating process) อาจได้รับผลกระทบ หรือส่งผลกระทบต่อโปรเซสอื่น หรือกล่าวได้ว่ามีการใช้ทรัพยากรร่วมกับโปรเซสอื่น และเหตุที่ทำให้เกิดโปรเซสสื่อประสานอาจมีได้ดังนี้
1. การแบ่งปันข่าวสารข้อมูลร่วมกัน (Information sharing)
2. เพิ่มความเร็วในการคำนวณ (Computation speedup)
3. แบ่งงานตามหน้าที่เป็นโมดูล (Modularity)
4. ความสะดวก (Convenience)
3.7 การสื่อสารในโปรเซส (Interprocess communication : IPC) การสื่อสารในโปรเซส หรือระหว่างโปรเซสมีเรื่องที่ต้องพิจารณาหลายเรื่อง
3.6.1 ระบบการผ่านข่าวสาร (Message-passing system)
การอำนวยความสะดวกของ IPC มีอย่างน้อย 2 กระบวนการคือ การส่งข่าวสาร Send(message) หรือ การรับข่าวสาร Receive(message) นอกจากนี้การบ่งบอกถึงการเชื่อมโยงข่าวสาร และการรับ-ส่งข่าว มีหลายวิธีดังนี้
- Direct or indirect communication (ทางตรง)
- Symmetric or asymmetric communication (สมมาตร)
- Automatic or explicit buffering (Explicit = แน่นอน)
- Send by copy or send by reference
- Fixed-sized or variable-sized messages
3.6.2 การตั้งชื่อ (Naming)
3.6.2.1 Direct communication
ทุกโปรเซสที่ติดต่อกันต้องมีการอ้างชื่ออย่างชัดเจน และแน่นอน เช่นการส่งข่าวสารจากโปรเซส A ไปโปรเซส B ก็ต้องระบุให้ชัดเจนว่าส่งจากไหนไปไหน
send(B,message) หมายถึง ส่งไปให้โปรเซส B
receive(A,message) หมายถึง รับจากโปรเซส A

3.6.2.2 Indirect communication
การติดต่อสื่อสารทางอ้อม เป็นการติดต่อผ่าน mailbox หรือ port ซึ่งทำหน้าที่เก็บโปรเซส แล้วส่งให้อีกโปรเซสหนึ่ง วิธีนี้ทำให้โปรเซสหนึ่งติดต่อโปรเซสอื่นผ่าน mail box ได้หลาย mail box เมื่อ share mail box ก็จะทำให้การสื่อสารมีประสิทธิภาพ
จากแนวคิดเรื่องการใช้ mail box ทำให้มีแบบของ mail box ขึ้น 3 แบบ
1. Queue mailbox มาก่อนออกก่อน แต่มีขนาด block คงที่ ใส่มากเกินไปก็จะเต็ม (First In First Out)
2. Pipe mailbox มีขนาดยืดหยุ่น ใส่ข้อมูบได้เท่าที่ต้องการ
3. Stack mailbox มาก่อนออกหลัง (First In Last Out)
3.6.3 การซิงโครไนซ์ (Synchronization)
การส่งข้อมูลระหว่างโปรเซสต้องใช้พื้นที่ในการเรียก send และ receive จึงต้องออกแบบให้การเรียกเป็นไปอย่างมีประสิทธิภาพ ซึ่งใช้ความรู้เรื่องการเข้า blocking และ nonblocking ไม่ให้เกิด deadlock ขึ้น จึงมีเรื่องต้องพิจารณา 4 เรื่องดังนี้
- Blocking send : The sending process is blocked until the message is received by the receiving process or by the mailbox.
- Nonblocking send : The sending process sends the message and resumes operation.
- Blocking receive : The receiver blocks until a message is available.
- Nonblocking receive: The receiver retrieves either a valid message or a null.
3.6.4 บัฟเฟอร์ (Buffering)
โดยพื้นฐานแล้วการส่งข่าวสารผ่านคิว จะมีลักษณะคิวอยู่ 3 แบบ
- Zero capacity ไม่มีคิวอยู่ คือไม่มีการคอย ผู้ส่งต้องหยุดรอจนกระทั่งผู้รับได้รับ
- Bounded capacity คิวที่มีความยาวจำกัด หรือมีขอบเขตแน่นอน
- Unbounded capacity คิวที่มีความยาวไม่จำกัด ผู้ส่งจะไม่ถูกปฏิเสธ
3.8 แบบของการประมวลผล 1. การประมวลผลแบบเดี่ยว (Single processing) หรือ Sequential processing (one result / m cycles)
2. การประมวลผลแบบพหุ (Multi processing) หรือ Pipelining (one result / cycle)
3. การประมวลผลแบบขนาน (Parallel processing) หรือ Parallel processing (n results / m cycles)
3.9 มัลติโปรเซสเซอร์
รูปแบบการประมวลผลของโปรเซสเซอร์
โดยยึดหลักการไหลของชุดคำสั่ง (Instruction Stream) และการไหลของชุดข้อมูล (Data Stream) มี 4 รูปแบบ มีอะไรบ้าง
(ไพศาล โมลิสกุลมงคล p.293 )
1. คำสั่งเดี่ยว และข้อมูลเดี่ยว
(Single Instruction Single Data : SISD)


2. คำสั่งเดี่ยว และหลายชุดข้อมูล
(Single Instruction Multiple Data : SIMD)


3. หลายชุดคำสั่งและข้อมูลเดี่ยว
(Multiple Instruction Single Data : MISD)


4. หลายชุดคำสั่งและหลายชุดข้อมูล
(Multiple Instruction Multiple Data : MIMD)

- การยึดเหนี่ยวกันแบบหลวม (Loosely Coupled)
- การยึดเหนี่ยวกันแบบพอดี (Moderately Coupled)
- การยึดเหนี่ยวกันแบบเหนียวแน่น (Tightly Coupled)

รูปแบบการต่อโปรเซสเซอร์เป็นมัลติโปรเซสเซอร์
1. รูปแบบบัสร่วม (Common Buses)
2. รูปแบบหน่วยความจำที่มีหลายพอร์ต (Multiport Memory)
3. รูปแบบการเชื่อมต่อผ่านอินพุต/เอาต์พุต (Connect through I/O)
4. รูปแบบบัสวินโดวส์ (Bus Windows)
3.10 ปฏิบัติการฝึกเขียนแผนภาพ - ฝึกเขียนแผนภาพการทำงานของโปรเซส
- ฝึกตรวจสอบโปรเซสที่กำลังประมวลผลในคอมพิวเตอร์ด้วยระบบปฏิบัติการต่าง ๆ
- ค้นคว้าข้อมูลเกี่ยวกับ การจัดการโปรเซส จากอินเทอร์เน็ต แล้วทำรายงาน และส่งตัวแทนนำเสนอหน้าชั้นเรียน
Blog : โปรแกรมจำลองการทำงานของโปรเซส [10]
“ระบบปฏิบัติการ (Operating System)”
ของ รศ.ดร.กฤษดา ขันกสิกรรม
บทที่ 9 การใช้งานโปรแกรมโซซิม (SOSIM)

Blog : thaiall.com/blog/burin/8306/
PDF : pdf/ใหญ่/os_kridda_ch09.pdf
+ sosim.htm
โปรแกรม SOSIM
โปรแกรมนี้มีหน้าที่จำลองการทำงานของโปรเซส (Process) แสดง 1) Running, 2) Ready และ 3) Waiting ใน Process Manager และการจองหน่วยความจำใน Memory Manager ผู้ใช้สามารถสร้างโปรเซส (Process) ขึ้นมา แล้วส่งเข้าระบบ (System) จะเห็นการทำงานในแต่ละ State และสร้าง Process ขึ้นมาได้ 3 แบบ
ประเภทของ Process มีดังนี้
1. CPU = ใช้ Central Processing Unit อย่างเดียว
2. IO = ใช้ CPU เป็นรอง แต่ใช้ IO เป็นหลัก มีหลายแบบ
3. MIX = ใช้ CPU ปานกลาง ไปพร้อมกับ IO
ต.ย. 1 โปรเซสเดียว
[สร้าง]
Process แบบ CPU
Priority = 0, Max. frames =5
[ผล]
มี Process เดียว ก็สลับไปมาระหว่าง
Ready และ Running
และไม่ต้องเข้าคิวกับใคร จึงอยู่ที่ Ready = 0 เสมอ
[ล้าง Process ออก]
เข้า Process, Select, Delete
แล้วสั่ง Run ใหม่จะพบว่าไม่มีอะไรอยู่ใน Processor Manager
กิจกรรม : จัดการ task 1. DOS> tasklist | more
พบรายชื่องาน และ PID และ หน่วยความจำของแต่ละงาน
และ Session Name ว่าเป็น console หรือเป็น Services
2. DOS> tasklist /? แล้ว tasklist /M
พบรายชื่อ module และ image name
เช่น cmd.exe คือ image name มี PID คือ 1234
และ Modules ประกอบด้วย
ntdll.dll, kernel32.dll, kernelbase.dll, msvert.dll และ winbrand.dll
3. DOS> tasklist /M /FI "imagename eq cmd.exe"
เลือกแสดงข้อมูลตาม imagename
4. DOS> notepad
สั่งเปิด task ชื่อ notepad
dos> tasklist /M /FI "imagename eq notepad.exe"
หากเปิดหลายครั้งก็จะมี pid หลายตัวเลข เช่น 6860
5. DOS>taskkill /PID 6860
พบ SUCCESS: Sent termination signal to the process with PID 6860.
หรือพบ ERROR: The process "6860" not found.
+ https://ss64.com/nt/taskkill.html
+ http://www.thaiall.com/assembly/internalcmd.htm
+ http://www.thaiall.com/os/os03.htm
ถาม - ตอบ ส่วนหนึ่งเรียบเรียงจากหนังสือของ รศ.ดร.กฤษดา ขันกสิกรรม
ถามสถานะของโปรเซส มีกี่สถานะ มีอะไรบ้าง
ตอบมี 5 สถานะ
1. Start
2. Ready
3. Running
4. Waiting
5. Terminated
ถามโปรเซสมีโครงสร้างข้อมูล หรือ Process Control Block (PCB) หรือ Process Descriptor มีอะไรบ้าง
ตอบ1. Process Identification (PID)
2. Process status
3. Program counter
4. Process priority
5. Pointer
6. Execution context หรือ Register contents
7. Accounting
8. Memory information
9. Open files
ถามองค์ประกอบของโปรเซส มี 6 ส่วน อะไรบ้าง
ตอบ1. หมายเลขโปรเซส (Process id)
2. โค้ดโปรแกรม (Program code)
3. ข้อมูล (Data)
4. บล็อกควบคุมโปรเซส (PCB : Process control block)
5. เวิร์ดสถานะโปรแกรม (PSW : Program Status Word)
6. คุณสมบัติของโปรเซส (Properties of process)
ถาม รูปแบบการประมวลผลของโปรเซสเซอร์ โดยยึดหลักการไหลของชุดคำสั่ง (Instruction Stream) และการไหลของชุดข้อมูล (Data Stream) มี 4 รูปแบบ มีอะไรบ้าง (ไพศาล โมลิสกุลมงคล p.293 )
ตอบ 1. คำสั่งเดี่ยว และข้อมูลเดี่ยว (Single Instruction Single Data : SISD)
2. คำสั่งเดี่ยว และหลายชุดข้อมูล (Single Instruction Multiple Data : SIMD)
3. หลายชุดคำสั่งและข้อมูลเดี่ยว (Multiple Instruction Single Data : MISD)
4. หลายชุดคำสั่งและหลายชุดข้อมูล (Multiple Instruction Multiple Data : MIMD)
แนะนำเว็บไซต์ (Website guide) http://www.cs.nott.ac.uk/~gxk/courses/g53ops
http://www.training.com.br/sosim/indexen.htm
เอกสารอ้างอิง (Reference) [1] Abraham silverschatz, Peter baer galvin, "Operating system concept", John wiley & Sons, New York, 2003.
[2] Milan Milenkovic, "Operating systems: concepts and design", McGraw-Hill inc., New York, 1992.
[3] William stallings, "Operating system", Prentice hall, New York, 1999.
[4] ไพศาล โมลิสกุลมงคล และคณะ, "ระบบปฏิบัติการ", สำนักพิมพ์ดวงกมลสมัย, กรุงเทพฯ, 2545.
[5] พิเชษฐ์ ศิริรัตนไพศาลกุล, "ระบบปฏิบัติการ (Operating system)", บริษัท ซีเอ็ดยูเคชั่น จำกัด., กรุงเทพฯ, 2546.
[6] ดร.ยรรยง เต็งอำนวย, "ระบบปฏิบัติการ (Operating system)", บริษัท ซีเอ็ดยูเคชั่น จำกัด., กรุงเทพฯ, 2541.
[7] ประชา พฤกษ์ประเสริฐ, "ระบบปฏิบัติการ", บริษัท ซัคเซส มีเดีย จำกัด., กรุงเทพฯ, 2549.
[8] วศิน เพิ่มทรัพย์, "คู่มือ MS-DOS", พี.เอ็น.การพิมพ์, กรุงเทพฯ, 2545.
[9] ชนินทร์ เชาวมิตร, "คู่มือยูนิกซ์เดสก์ทอป", บริษัท ซีเอ็ดยูเคชั่น จำกัด., กรุงเทพฯ, 2538.
[10] รศ.ดร.กฤษดา ขันกสิกรรม, "ระบบปฏิบัติการ (Operating Systems)", อาง้วนการพิมพ์, นครสวรรค์, 2555.
[11] ผศ.ดร.สุชาติ คุ้มมะณี, "พื้นฐานระบบปฏิบัติการยูนิกซ์", [ออนไลน์], เข้าถึงได้จาก : http://goo.gl/14xVey (วันที่ค้นข้อมูล 15 ตุลาคม 2558)
Thaiall.com