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

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




จัดทำโดย นาย โสรฬ เดชศักดา ชั้น ปวส 1  

การจัดการโปรเซส  Process Management
การศึกษาเรื่องโปรเซส เป็นหัวใจของการทำความเข้าใจของระบบคอมพิวเตอร์ที่มีผู้ใช้หลายคน ( multiuser computer system ) คำว่าโปรเซสถูกใช้ครั้งแรกโดยผู้ออกแบบระบบมัลติกส์ ( multics ) ในทศวรรษ 1690 มีการให้ความหมายของคำว่า "โปรเซส" ไว้หลายความหมายเช่น
  

1 องค์ประกอบของโปรเซส


1. หมายเลขโปรเซส (Process id)
2. โค้ดโปรแกรม (Program code)
3. ข้อมูล (Data)
4. บล็อกควบคุมโปรเซส (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) 

pointer process state
process id
process counter

registers
list of open files

       5. PSW (Program status word)
      6. คุณสมบัติของโปรเซส (Properties of process)
    6.1 ลำดับความสำคัญของโปรเซส (Priority)
    6.2 อำนาจหน้าที่ของโปรเซส (Authority)
    6.3 คุณสมบัติอื่นที่ระบบปฏิบัติการกำหนดให้มี

2 สถานะของโปรเซส
สถานะของโปรเซสแบ่งได้ 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.)
สถานะของโปรเซสแบ่งได้อีกแบบมี 4 สถานะ
1. สถานะพร้อม (ready state) คือสถานะที่โปรเซสพร้อมที่จะใช้ซีพียูทันทีที่ระบบปฏิบัติการมอบหมายให้ ในสถานะนี้ไม่มีการรันของโปรเซส
2. สถานะรัน (running state) คือสถานะที่โปรเซสกำลังครอบครองซีพียูอยู่ มีการรันของโปรเซสจริงๆ เพราะโปรเซสใช้ซีพียูเอ็กซีคิ้วคำสั่ง หรือโค้ดโปรแกรมของโปรเซสนั้น
3. สถานะติดขัด (blocked state) คือสถานะที่โปรเซสหยุดรอเหตุการณ์ใดเหตุการณ์หนึ่งให้เกิดขึ้น โปรเซสไม่จำเป็นต้องใช้ซีพียูและยังไม่พร้อมที่จะครอบครองซีพียู ซึ่งจะทำให้โปรเซสอื่นเข้ามาครอบครองซีพียูในช่วงนี้ได้
4. สถานะพัก (suspend state) คือสถานะที่โปรเซสไม่มีการทำงานใดๆ หยุดนิ่งอย่างสมบูรณ์ ไม่มีการรอการใช้ซีพียูหรือเหตุการณ์ใดๆ ให้เกิดขึ้น                   3.การจัดเวลาโปรเซส
  • เมื่อกระบวนการเข้าไปในระบบ จะถูกส่งเข้า job queue ซึ่ง queue จะรวบรวม process ทั้งหมดในระบบ และมีคำหลาย ๆ คำเกี่ยวกับการเข้าคิว เช่น ready, blocked และ running แต่ถ้า process รอเข้า I/O devices จะเรียกว่า device queue ซึ่งทุกอุปกรณ์จะมี device queue ของตนเอง
  • processes จะย้ายไปมาระหว่าง queue ต่าง ๆ โดยระบบปฏิบัติการมีหน้าที่เลือกตามวัตถุประสงค์ และความเหมาะสม ซึ่งถูกจัดการโดย scheduler สำหรับแต่ละ Device queue ต่างก็มี scheduler ของตนเอง และมี scheduler ส่วนกลาง ควบคุมการทำงานของ process ทั้งหมดอีกครั้งหนึ่ง

  • 2. Contect 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
    Mutual exclusion
  • คือ การกีดกั้น ในบริเวณ หรือส่วนของโปรแกรมที่ process เข้าครอบครองรีซอร์ส ซึ่งเรียกว่า Critical region ซึ่งการกีดกั้นก็คือการไม่ยอมให้ process ใด ๆ เข้าใช้พื้นที่ ๆ เป็น Critical region ซึ่งมีคุณสมบัติอยู่ 4 ประการ
    4 การปฏิบัติการบนโปรเซส
      ขณะคอมพิวเตอร์ทำงานต้องการสร้าง และลบ 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)
      3 เหตุผลที่ โปรเซสแม่จะหยุดการประมวลผลของโปรเซสลูก
      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]

    5 โปรเซสสื่อประสาน (Cooperating process)
    โปรเซสที่ประมวลผลในระบบอาจเป็นได้มีได้ 2 แบบคือโปรเซสอิสระ (Independent process) ซึ่งทำงานโดยไม่มีผลกระทบ หรือได้รับผลกระทบจากโปรเซสอื่น เป็นอิสระที่ไม่มีการแบ่งปันทรัพยากรร่วมกับใคร ส่วนโปรเซสสื่อประสาน (Cooperating process) อาจได้รับผลกระทบ หรือส่งผลกระทบต่อโปรเซสอื่น หรือกล่าวได้ว่ามีการใช้ทรัพยากรร่วมกับโปรเซสอื่น และเหตุที่ทำให้เกิดโปรเซสสื่อประสานอาจมีได้ดังนี้
    1. การแบ่งปันข่าวสารข้อมูลร่วมกัน (Information sharing)
    2. เพิ่มความเร็วในการคำนวณ (Computation speedup)
    3. แบ่งงานตามหน้าที่เป็นโมดูล (Modularity)
    4. ความสะดวก (Convenience)
    6 การสื่อสารในโปรเซส (Interprocess communication : IPC)
    การสื่อสารในโปรเซส หรือระหว่างโปรเซสมีเรื่องที่ต้องพิจารณาหลายเรื่อง
    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
    6.2 การตั้งชื่อ (Naming)
    6.2.1 Direct communication
    ทุกโปรเซสที่ติดต่อกันต้องมีการอ้างชื่ออย่างชัดเจน และแน่นอน เช่นการส่งข่าวสารจากโปรเซส A ไปโปรเซส B ก็ต้องระบุให้ชัดเจนว่าส่งจากไหนไปไหน
    send(B,message) หมายถึง ส่งไปให้โปรเซส B
    6.2.2 Indirect communication
    receive(A,message) หมายถึง รับจากโปรเซส A
    การติดต่อสื่อสารทางอ้อม เป็นการติดต่อผ่าน 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)
    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.
    6.4 บัฟเฟอร์ (Buffering)
    โดยพื้นฐานแล้วการส่งข่าวสารผ่านคิว จะมีลักษณะคิวอยู่ 3 แบบ
    - Zero capacity ไม่มีคิวอยู่ คือไม่มีการคอย ผู้ส่งต้องหยุดรอจนกระทั่งผู้รับได้รับ
    - Bounded capacity คิวที่มีความยาวจำกัด หรือมีขอบเขตแน่นอน
    - Unbounded capacity คิวที่มีความยาวไม่จำกัด ผู้ส่งจะไม่ถูกปฏิเสธ

    7 แบบของการประมวลผล 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) 

  • ที่มา  http://oknation.nationtv.tv/blog/surawit/2008/08/20/entry-6

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ความรู้เบื่องต้นเกี่ยวกับระบบปฎิบัติการ