ขั้นตอนการคำนวณเวลาที่เหลือ การวางแผน (คอมพิวเตอร์) - การจัดตารางเวลา (คอมพิวเตอร์) ผู้อำนวยการด้านเทคนิคของศูนย์เทคโนโลยีและโซลูชั่นที่เป็นนวัตกรรม Jet Infosystems


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

พิจารณากระบวนการหนึ่งมิติที่มีสถานะเป็นตัวแปรจริง x สมมติว่าการสังเกตพลวัตของกระบวนการดำเนินการในเวลาทางดาราศาสตร์ เสื้อ ดังนั้น เสื้อ = tk และ x = xk , k =1, ..., n เป็นช่วงเวลาการสังเกตคงที่และค่าที่สอดคล้องกันของกระบวนการ รัฐ มีวิธีการทางคณิตศาสตร์มากมายที่ทำให้สามารถสร้างเส้นโค้งที่ผ่านจุดต่างๆ (t k , Xk) หรือเข้าใกล้จุดเหล่านี้ด้วย "วิธีที่ดีที่สุด" ฟังก์ชันผลลัพธ์ x = x(t) ทำให้เกิดความรู้สึกว่ากระบวนการที่กำลังพิจารณาขึ้นอยู่กับการเคลื่อนที่เชิงกลของเทห์ฟากฟ้า และด้วยเหตุนี้ สถานะของวัตถุจึงแสดงออกมาในรูปของเวลาทางดาราศาสตร์ t ข้อสรุปดังกล่าวสามารถนำมาพิจารณาได้ ถ้าไม่มีปัญหาอย่างต่อเนื่องในการพยายามทำนายกระบวนการต่อไป สำหรับกระบวนการต่างๆ จำนวนมากที่ไม่เกี่ยวข้องโดยตรงกับการเคลื่อนที่เชิงกลของวัตถุท้องฟ้า การคาดคะเนเชิงทฤษฎีที่ได้รับโดยใช้ฟังก์ชัน x = x(t) นอกช่วงการสังเกตเริ่มเบี่ยงเบนไปอย่างมากจากข้อมูลการทดลองที่ตามมา สาเหตุของความคลาดเคลื่อนระหว่างทฤษฎีและการทดลองมักจะอธิบายโดยวิธีการประมวลผลที่เลือกไม่สำเร็จ แต่นี่อาจไม่ใช่สาระสำคัญของเรื่อง

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

เมื่อพูดนอกเรื่องยาวแล้วไปที่คำอธิบายของอัลกอริทึมเพื่อคำนวณเวลาของกระบวนการ

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

ดังนั้น ข้อมูลอินพุตสำหรับอัลกอริทึมจึงเป็นตัวเลขธรรมชาติ n, จำนวนบวก 8, อาร์เรย์ (tk) และ (xk ), k = 1, ..., n เพื่อความสะดวกในการเขียนโปรแกรม สี่โมดูลที่ดำเนินการตามลำดับ

โมดูล 1,ใช้ข้อมูล n, e, tk), (xk) ในกรณีทั่วไปสร้างอาร์เรย์ใหม่ 7 = (7+ X=(X t) และอาร์เรย์ประกอบที่ค่อนข้างเฉพาะ P = (?) โดยที่ 1 = 1, .., t, และ t<Сп. Основное назначение этого модуля -- выявление в массиве x k) последовательностей идентичных состояний процесса, сохранение первых элементов в таких последовательностях и удаление всех остальных и, наконец, уменьшение по определенному, правилу исходного интервала наблюдения от t до на сумму тех промежутков времени, в которых процесс протекает стационарно.

โมดูล 1 ประกอบด้วยขั้นตอนต่อไปนี้:

p:=1, t:=0, k:=1.

ในหน้า p.p. 1, 2 ตัวนับถูกนำมาใช้ด้วยค่าเริ่มต้นเฉพาะ:

ในหน้า p.p. 3, 4, ตัวนับเพิ่มขึ้น 1

ตรวจสอบเงื่อนไข k^n หากเป็นไปตามนั้น ให้ไปที่ขั้นตอนที่ 6 ไม่เช่นนั้น ให้ไปที่ขั้นตอนที่ 11

ตรวจสอบความไม่เท่าเทียมกัน x k --x k = e หากยังคงมีอยู่ ให้ไปที่ขั้นตอนที่ 7 ไม่เช่นนั้น ให้ไปที่ขั้นตอนที่ 9

7. tii = ti - (tkl - tk), i = k1, ..., n.

ขั้นตอนนี้หมายความว่าหากค่าของ Xk และ Xk 1 ไม่สามารถแยกแยะได้ภายในข้อผิดพลาด เวลาทั้งหมดที่เริ่มต้นจาก tk จะลดลงตามจำนวน tki-tk

พี = พี กลับไปที่จุดที่ 4

ทีวี = t k ; Xv:=x k ; p = p v = v+l. เช่น องค์ประกอบของอาร์เรย์ T, X, P ถูกสร้างขึ้นและกำหนดค่าถัดไป v

  • 10. ใช้ (t k , ..., t n AND (Xk, - X n) เป็นอาร์เรย์ดั้งเดิมของมิติ n--k 1 + 1 แล้วกลับไปที่ขั้นตอนที่ 2
  • 11. พิมพ์ m, (T), (X,) และ (P,) โดยที่ i = l, ..., i.e. End

ให้เราอธิบายความหมายขององค์ประกอบต่างๆ ของอาร์เรย์ที่ประกอบมาด้วย P ซึ่งตามมาจากข้อความก่อนหน้านี้ว่าค่าของ pk เท่ากับจำนวนองค์ประกอบเหล่านั้นของอาร์เรย์ (xk) ที่ตามมาทันทีและแตกต่างจาก x pi+ ... +, + โดยน้อยกว่า e โปรดทราบว่า pi+ ... +pm = n

ตัวอย่างที่ 1 ให้: n = 20, (/*) = (2, 4, 7, 10, 12, 13, 15, 17, 20, 22, 24, 25,

  • 27, 30, 32, 33, 34, 35, 36) และ (x,) = (4, 4, 6, 6, 6, 3, 2, 4, 3, 3, 3, 2, 2, 4, 5 , ห้า,
  • 5, 4, 3) ดูรูปที่ 9, ก.

จากการดำเนินการของโมดูล 1 จะได้รับ m = 11

(D) \u003d (2, 3, 4, 6, 8, 11, 1-2, 15, 17, 18, 19); (X,) \u003d (4, 6, 3, 2, 4, 3, 2, 4,5,4,3)

ยู(e) = (2, 4, 1, 1, 1,3, 2, 1,3, 1, 1) ดูรูปที่ 9, ข.

โมดูล 2ข้อมูลอินพุตสำหรับมันคือตัวเลขธรรมชาติ m เช่นเดียวกับอาร์เรย์ (7+ (XL ), = 1, ..., m. โมดูลนี้ในอาร์เรย์ (TJ) ตรวจจับจุดเวลา [TM a ], 1 = 1 ม. (มล

ตัวอย่างที่ 2 ค่า m, (Tb) และ (X,] ยืมมาจากตัวอย่างก่อนหน้า หลังจากเรียกใช้โมดูล 2 แล้ว ml = 3, m2 = 8, (W,) = (3, 8, 17) (T*) = (3, 4, 6, 8, 11, 12, 15, 17) ดูรูปที่ 9b.

โมดูล 3ป้อนข้อมูล ml, m2, (ТМ n ), 1 = 1, ..., ml, (Г*), /2=1, ..., r2

โมดูลนี้ออกแบบมาเพื่อสร้างอาร์เรย์ (t (-r) ตามสูตร

ทีวี 6 [TMP, TMn+i] อยู่ที่ไหน

ตัวแปร m คือเวลาที่เหมาะสมที่เกิดจากการเปลี่ยนแปลงของตัวแปร x การวัดตามธรรมชาติของมันคือหน่วยการคำนวณสูงสุดในท้องถิ่น

ตัวอย่างที่ 3 ข้อมูลเริ่มต้นสำหรับ T 2) เหมือนกับค่า ml, m2 ITM และในตัวอย่างที่ 2 . หลังจากการคำนวณที่เหมาะสม เราจะได้ N = (0; 0.2; 0.6; 1; 1,33; 1,78; 2).

โมดูล 4สร้างผลลัพธ์โดยสร้างการติดต่อระหว่างค่าของ m และองค์ประกอบ x จากอาร์เรย์ (xk)

ตัวอย่างที่ 4 จากข้อมูลของตัวอย่างที่ 2 และ 3 ได้ผลลัพธ์ต่อไปนี้ ดูรูปที่ 9 ใน:

เสื้อ: 0; 0.2; 0.6; หนึ่ง; 1.33; 1.44;

x: 6; 3; 2; 4; 3Т 0 2;

ดังนั้นอัลกอริธึมที่พิจารณาแล้วทำให้สามารถพัฒนาแนวคิดเรื่องเวลาที่เหมาะสมของกระบวนการโดยพิจารณาจากข้อมูลที่บันทึกไว้ในมาตราส่วนเวลาทางดาราศาสตร์เกี่ยวกับการเปลี่ยนแปลงในสถานะของกระบวนการ เป็นที่ชัดเจนว่าเราสามารถใช้อัลกอริธึมอื่น ๆ ตามตัวอย่างเช่นในการคำนวณลำดับของ minima ท้องถิ่นหรือลำดับผสมที่ประกอบด้วย maxima ท้องถิ่นและ minima เมื่อประมวลผลข้อมูลทดลอง เราควรทดสอบตัวเลือกต่างๆ ด้วยเหตุผลบางอย่าง หากผู้ทดลองเลือกช่วงเวลาที่เหมาะสมอย่างเจาะจงและได้รับอาร์เรย์ (m4 และ (xk) ในขั้นต่อไป เขาควรใช้วิธีการทางคณิตศาสตร์บางอย่างเพื่อประมาณจุดการทดลอง (m*, x) บางโลกโดยประมาณ เส้นของกระบวนการ x = x(t) โดยการคาดการณ์เส้นนี้เกินขีดจำกัดของช่วงเวลาการสังเกตเริ่มต้น จะสามารถคาดการณ์เกี่ยวกับกระบวนการต่อไปได้

เป็นเรื่องที่น่าสนใจที่จะกล่าวถึงการทดลองทางคอมพิวเตอร์เพื่อประเมินโอกาสในการใช้อัลกอริธึมที่เสนอ เพื่อเป็นข้อมูลในการทดลอง ได้เลือกข้อมูลเกี่ยวกับการไหลบ่าของแม่น้ำประจำปี Vakhsh (ทาจิกิสถาน) ในช่วง 40 ปีที่ผ่านมา ในช่วงเวลาเดียวกัน ข้อมูลเกี่ยวกับพลวัตของหมายเลข Wolf ซึ่งเป็นดัชนีอินทิกรัลของกิจกรรมสุริยะที่ใช้บ่อยที่สุด หลังถูกนำมาใช้เป็นพื้นฐานสำหรับการพัฒนาเวลาที่เหมาะสมของกระบวนการกิจกรรมสุริยะ เมื่อถึงเวลาใหม่ ข้อมูลเกี่ยวกับค่าใช้จ่ายของแม่น้ำก็ถูกแปลง จากนั้น Vakhsh ในช่วงเวลาการสังเกต การพึ่งพาทางทฤษฎีของอัตราการไหลของน้ำถูกกำหนดให้เป็นฟังก์ชันของเวลาที่เหมาะสมของกิจกรรมสุริยะ คุณลักษณะเฉพาะของกราฟผลลัพธ์คือพฤติกรรมที่เกือบจะเป็นช่วงๆ ของต้นทุนสูงสุดและต่ำสุด อย่างไรก็ตาม ต้นทุนไม่คงที่

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

การวางแผนสามระดับ

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

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

ตัวจัดกำหนดการหน่วยความจำจะตรวจสอบกระบวนการที่อยู่บนดิสก์เป็นระยะเพื่อตัดสินใจว่าจะย้ายไปยังหน่วยความจำใด ในบรรดาเกณฑ์ที่ใช้โดยตัวจัดกำหนดการมีดังต่อไปนี้:

1. นานแค่ไหนแล้วที่กระบวนการถูกเพจไปยังดิสก์หรือโหลดจากดิสก์?

2. กระบวนการนี้ใช้ CPU มานานแค่ไหนแล้ว?

3. ขนาดของกระบวนการคือเท่าไร (โปรเซสเล็กๆ ไม่เกะกะ)?

4. กระบวนการมีความสำคัญอย่างไร?

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

การวางแผนในระบบโต้ตอบ

การวางแผนวงจร

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

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

การวางแผนลำดับความสำคัญ

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

หลายคิว.

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

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

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

ตัวอย่างเช่น ให้พิจารณากระบวนการที่จำเป็นต้องทำการคำนวณสำหรับ 100 quanta ขั้นแรกจะได้รับหนึ่งควอนตัมจากนั้นจะถูกสูบไปยังดิสก์ ครั้งต่อไปที่เขาได้รับ 2 ควอนตา จากนั้น 4, 8.16, 32, 64 แม้ว่าจาก 64 เขาจะใช้เพียง 37 ในกรณีนี้ จะต้องใช้ปั๊มเพียง 7 ตัว (รวมโหลดเริ่มต้น) แทน 100 ซึ่งจำเป็น ถ้าใช้อัลกอริธึมแบบกลม นอกจากนี้ เมื่อคุณเข้าสู่คิวลำดับความสำคัญ กระบวนการจะทำงานน้อยลง ทำให้ตัวประมวลผลมีกระบวนการที่สั้นลง

“กระบวนการที่สั้นที่สุดคือขั้นตอนถัดไป”

เนื่องจากอัลกอริธึม Shortest Task First ช่วยลดเวลาตอบสนองโดยเฉลี่ยในระบบประมวลผลแบบแบตช์ เราจึงต้องการใช้ในระบบแบบโต้ตอบด้วยเช่นกัน เป็นไปได้ในระดับหนึ่ง กระบวนการแบบโต้ตอบส่วนใหญ่มักจะเป็นไปตามรูปแบบ “ wait for command, execute command, wait for command, execute command...” เมื่อพิจารณาถึงการดำเนินการของแต่ละคำสั่งเป็นงานที่แยกจากกัน คุณสามารถ ลดเวลาตอบสนองโดยเฉลี่ยโดยรวมได้ด้วยการรันงานที่สั้นที่สุด แรก. ปัญหาเดียวคือ

คือการหาว่ากระบวนการรอใดที่สั้นที่สุด

วิธีหนึ่งอาศัยการประเมินความยาวของกระบวนการโดยพิจารณาจากพฤติกรรมก่อนหน้าของกระบวนการ การดำเนินการนี้จะเริ่มต้นกระบวนการโดยใช้เวลาโดยประมาณที่สั้นที่สุด สมมติว่าเวลาโดยประมาณของการดำเนินการของคำสั่งคือ T 0 และเวลาโดยประมาณของการรันครั้งต่อไปคือ T 1 คุณสามารถปรับปรุงการประมาณเวลาได้โดยนำผลรวมถ่วงน้ำหนักของคูณด้วยT 0 + (1 - a)T 1 โดยการเลือกค่าที่เหมาะสมของ a เราสามารถทำให้อัลกอริธึมการประมาณค่าลืมการรันครั้งก่อนๆ ไปอย่างรวดเร็ว หรือในทางกลับกัน ให้จดจำไว้เป็นเวลานาน รับ = 1/2 เราได้รับชุดค่าประมาณ:

T 0, T 0/2 + T 1/2, T 0/4 + T 1/4 + T 2/2, T 0/8 + T 1/8 + T 2/4 + T 3/2

หลังจากวิ่ง 3 รอบ น้ำหนักของ T 0 ในการประมาณการจะลดลงเหลือ 1/8

วิธีการประมาณค่าถัดไปในชุดข้อมูลโดยใช้ค่าเฉลี่ยถ่วงน้ำหนักของค่าก่อนหน้าและการประมาณค่าก่อนหน้ามักเรียกว่าอายุ วิธีนี้ใช้ได้กับหลายสถานการณ์ซึ่งจำเป็นต้องประเมินจากค่าก่อนหน้า วิธีที่ง่ายที่สุดในการปรับใช้อายุคือเมื่อ a = 1/2 ในทุกขั้นตอน สิ่งที่คุณต้องมีคือ

เพิ่มค่าใหม่ให้กับค่าประมาณปัจจุบันและหารผลรวมครึ่งหนึ่ง (เลื่อนไปทางขวา 1 บิต)

รับประกันการวางแผน

แนวทางที่แตกต่างโดยพื้นฐานในการวางแผนคือการให้คำมั่นสัญญาที่แท้จริงกับผู้ใช้และปฏิบัติตามนั้น สัญญาหนึ่งข้อที่พูดง่ายและรักษาไว้ง่าย: หากผู้ใช้ n คนใช้ CPU ร่วมกับคุณ คุณจะได้รับพลังงาน CPU 1/n

และในระบบที่มีผู้ใช้หนึ่งรายและโปรเซสเซอร์ n ตัวทำงานอยู่ แต่ละตัวจะได้รับรอบโปรเซสเซอร์ 1/n

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

จะไม่ใหญ่กว่าเพื่อนบ้านที่ใกล้ที่สุด

การวางแผนลอตเตอรี

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

กระบวนการที่สำคัญกว่านั้นสามารถให้ตั๋วเพิ่มเติมเพื่อเพิ่มโอกาสในการชนะ หากมีตั๋วเพียง 100 ใบและมี 20 ใบโดยกระบวนการเดียว จะได้รับ 20% ของเวลาประมวลผล ซึ่งแตกต่างจากการจัดลำดับความสำคัญซึ่งเป็นเรื่องยากมากที่จะประมาณว่าลำดับความสำคัญ 40 หมายถึงอะไรทุกอย่างชัดเจนในการตั้งเวลาลอตเตอรี แต่ละกระบวนการจะได้รับเปอร์เซ็นต์ของทรัพยากรโดยประมาณเท่ากับเปอร์เซ็นต์ของตั๋วที่มี

การวางแผนลอตเตอรีมีคุณสมบัติที่น่าสนใจหลายประการ ตัวอย่างเช่น หากกระบวนการได้รับตั๋วหลายใบในระหว่างการสร้าง ลอตเตอรีถัดไปโอกาสในการถูกรางวัลจะแปรผันตามจำนวนสลาก

กระบวนการร่วมมือสามารถแลกเปลี่ยนตั๋วได้ตามต้องการ ดังนั้น หากกระบวนการของไคลเอ็นต์ส่งข้อความไปยังกระบวนการของเซิร์ฟเวอร์แล้วบล็อก ก็สามารถส่งต่อตั๋วทั้งหมดไปยังกระบวนการของเซิร์ฟเวอร์เพื่อเพิ่มโอกาสในการเริ่มต้นเซิร์ฟเวอร์ เมื่อกระบวนการของเซิร์ฟเวอร์สิ้นสุดลง จะสามารถคืนตั๋วทั้งหมดกลับคืนมาได้

การวางแผนอย่างยุติธรรม

จนถึงตอนนี้ เราถือว่าทุกกระบวนการได้รับการจัดการ ไม่ว่าใครจะเป็นเจ้าของกระบวนการก็ตาม ดังนั้น หากผู้ใช้ 1 สร้าง 9 กระบวนการ และผู้ใช้ 2 สร้าง 1 กระบวนการ จากนั้นใช้การจัดกำหนดการแบบวนซ้ำหรือในกรณีที่มีลำดับความสำคัญเท่ากัน ผู้ใช้ 1 จะได้รับ 90% ของตัวประมวลผล และผู้ใช้ 2 เพียง 10 เท่านั้น

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

สัญญา 50% ของโปรเซสเซอร์ พวกเขาจะได้รับ 50% ของโปรเซสเซอร์ โดยไม่คำนึงถึงจำนวนของกระบวนการ

การวางแผนในระบบเรียลไทม์

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

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

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


ข้อมูลที่คล้ายกัน


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

ข้อสรุปสั้น ๆ สามารถพบได้ที่ส่วนท้ายของบทความ

นักพัฒนามักจะต้องพิจารณาพารามิเตอร์หลายตัวพร้อมกันเพื่อประเมินเวลาในการทำงานให้เสร็จสิ้น:

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

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

ในการประเมินตามเวลาที่จำเป็นสำหรับการทำงานอย่างเป็นกลาง ควรเพิ่มระยะขอบเล็กน้อยเพื่อให้ครอบคลุมสถานการณ์เหตุสุดวิสัย มักถูกประเมินเป็นเปอร์เซ็นต์ของความสมบูรณ์ของงานหลัก แต่สำหรับทุกคนจะแตกต่างกัน: มีคนเพิ่ม 20% ของเวลา บางคน - 10% และบางคน - 50%

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

อัปเกรด ดาวน์เกรด

, ผู้อำนวยการด้านเทคนิคของศูนย์เทคโนโลยีและโซลูชั่นที่เป็นนวัตกรรม Jet Infosystems

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

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

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

หลังจากกำหนดความเข้มข้นของแรงงานแล้ว จำเป็นต้องรวมงานใหม่ในปฏิทินด้วย อย่าลืมงานและกิจกรรมอื่นๆ ที่ดำเนินไปควบคู่กัน

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

อัปเกรด ดาวน์เกรด

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

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

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

ลองใช้การเปรียบเทียบง่ายๆ กัน - หากคุณไม่เคยขุดคูน้ำ คุณจะไม่สามารถบอกได้ชัดเจนว่าจะใช้เวลานานแค่ไหนในการขุดคูน้ำกว้าง 30 ซม. ลึก 60 ซม. และยาว 20 เมตร หากคุณเคยขุดมาก่อน เวลาใช้งานโดยประมาณของคุณจะใกล้เคียงกับเวลาใช้งานจริงมากขึ้น

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

นักพัฒนาจะต้องไม่เพียงแค่สร้างการใช้ไลบรารีลงในโค้ดของพวกเขาเท่านั้น แต่ยังต้องแก้ไขข้อผิดพลาดในไลบรารีด้วย และบ่อยครั้งที่ผู้พัฒนาไม่ได้ให้เวลาในการแก้ไขข้อผิดพลาด สถิติแสดงให้เห็นว่าการทดสอบและแก้ไขจุดบกพร่องอาจใช้เวลาถึง 50% ของเวลาที่ใช้ในการเข้ารหัส ตัวเลขขึ้นอยู่กับคุณสมบัติของนักพัฒนา สิ่งแวดล้อม วิธีปฏิบัติในการพัฒนาที่ใช้ (เช่น การทดสอบหน่วยลดเวลานี้ลงอย่างมาก และระยะเวลารวม / ความเข้มแรงงานของงานพัฒนาจะน้อยลง)

หากเราย้อนกลับไปที่การเปรียบเทียบกับผู้ขุด ผู้ขุดไม่ได้คาดหวังว่าพลั่วของเขาจะหัก และเขาจะต้องใช้เวลาสองชั่วโมงในการค้นหาคมตัดใหม่

เหตุผลที่สามคือข้อกำหนดที่ไม่คาดฝัน ในด้านอื่น ๆ ของการผลิตวัสดุที่ไม่มีซึ่งลูกค้าการพัฒนาซอฟต์แวร์ชอบที่จะเปรียบเทียบมีความต้องการใหม่ดังกล่าว ลองนึกภาพทางเดินของนักขุดที่ขุด 19 เมตรจากทั้งหมด 20 เมตรและได้ยินจากลูกค้าว่าต้องการให้คูน้ำไม่เป็นเส้นตรง แต่เป็นงูที่มีความยาวบ่า 97 เซนติเมตร

จะจัดการกับสิ่งเหล่านี้ได้อย่างไรและจะอยู่ในสภาวะที่ไม่แน่นอนได้อย่างไร? ลดความไม่แน่นอนและให้เวลาหย่อน

วิธีที่ง่ายที่สุดในการทำให้ความคาดหวังของคุณเข้าใกล้ความเป็นจริงมากขึ้นคือการใช้กฎง่ายๆ อย่าง "Pi" เมื่อได้รับค่าประมาณจากผู้พัฒนาแล้ว (ในแง่ของเวลาหรือความเข้มข้นของแรงงาน) จำเป็นต้องคูณด้วยจำนวน Pi (= 3.14159) ยิ่งนักพัฒนามีประสบการณ์มากในการประมาณการ ค่าสัมประสิทธิ์นี้ก็จะยิ่งต่ำลงเท่านั้น

จำเป็นต้องฝึกการสลายตัวของงานเดิมให้เป็นงานเล็ก ๆ ที่มีขนาดไม่เกิน 4 ชั่วโมง ยิ่งการสลายตัวมีรายละเอียดมากเท่าใด โอกาสที่การประมาณจะใกล้เคียงกับความซับซ้อน/ระยะเวลาที่แท้จริงก็จะยิ่งสูงขึ้น
หากเรากลับไปจัดสรรทุนสำรอง - คราวนี้ควรจัดสรรเมื่อสิ้นสุดโครงการ การเก็บสำรองและรวมไว้สำหรับทุกงานถือเป็นการปฏิบัติที่ไม่ดี กฎของพาร์กินสันคือ "งานเติมตลอดเวลาที่ได้รับ" อย่างเคร่งครัด

หากเราสรุป "ผลรวม" สั้น ๆ เพื่อกำหนดเวลาของงานอย่างถูกต้องการดำเนินการต่อไปนี้จะเป็นประโยชน์:

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

จำไว้ว่าหากข้อเท็จจริงนั้นเกินค่าประมาณของคุณ 30% นี่เป็นผลลัพธ์ที่ดีมาก

อัปเกรด ดาวน์เกรด

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

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

เพิ่มเติม - เพื่อประมาณเวลาในการพัฒนา ลักษณะเฉพาะของการเขียนโปรแกรมคือไม่มีงานที่เหมือนกันทุกประการ สิ่งนี้ทำให้งานของเราน่าสนใจยิ่งขึ้น แต่การประมาณกำหนดเวลานั้นยากกว่า การสลายตัวทำงานได้ดีที่นี่เช่น แบ่งงานเฉพาะที่ซับซ้อนออกเป็นลำดับงานย่อยเล็กๆ ที่คุ้นเคย และแต่ละคนสามารถประมาณได้ในเวลาไม่กี่ชั่วโมงอย่างเพียงพอ มาสรุปค่าประมาณของงานย่อย - และรับค่าประมาณของงานทั้งหมด

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

ดังนั้นเราจึงประมาณการต้นทุนของการเข้ารหัส เพิ่มประมาณการของต้นทุนของงานเพิ่มเติม - และรับค่าประมาณของเวลาที่ต้องการเพื่อให้งานเสร็จสมบูรณ์ แต่นั่นไม่ใช่ทั้งหมด! คุณต้องระบุวันที่เสร็จสมบูรณ์ตามแผนสำหรับงาน มันจะเป็นความผิดพลาดที่จะเอาและหารค่าแรง (เป็นชั่วโมง) เป็น 8 ชั่วโมงแล้วบวกกับวันที่ปัจจุบัน ในทางปฏิบัติ นักพัฒนาไม่เคย (แทบไม่เคย) ทำงาน 100% กับงานเฉพาะอย่างใดเลย คุณจะใช้เวลากับงานอื่น ๆ อย่างแน่นอน - สำคัญ แต่ไม่เกี่ยวข้องโดยตรงกับงานหลัก เช่น การช่วยเหลือเพื่อนร่วมงาน การฝึกอบรม การรายงาน เป็นต้น โดยปกติเมื่อวางแผนจะถือว่า 60-70% ของเวลาทำงานไปทำงานในโครงการปัจจุบันโดยตรง นอกจากนี้ คุณต้องคำนึงถึงความล่าช้าที่อาจเกิดขึ้นซึ่งจะทำให้คุณทำงานไม่ต่อเนื่อง ตัวอย่างเช่น ถ้าคุณจำเป็นต้องโต้ตอบกับผู้อื่น (เพื่อนร่วมงาน ลูกค้า) ให้คำนึงถึงการจ้างงาน ตารางการทำงาน ฯลฯ

ต่อไปนี้คือกฎพื้นฐานที่ฉันคิดว่าจะช่วยให้นักพัฒนาหลีกเลี่ยงปัญหาในการประเมินและดำเนินการตามกำหนดเวลาได้ นอกจากนี้ กุญแจสำคัญคือการสะสมประสบการณ์ของตัวเองทั้งในการปฏิบัติงานและในการประเมินผล ตัวอย่างเช่น หลังจากเสร็จสิ้นงาน จะมีประโยชน์มากในการเปรียบเทียบประมาณการเบื้องต้นของคุณกับไทม์ไลน์จริงและสรุปผลสำหรับอนาคต และแน่นอนว่ามันคุ้มค่าที่จะศึกษาประสบการณ์ของคนอื่น ฉันอยากจะแนะนำหนังสือของ S. McConnell "โครงการซอฟต์แวร์ราคาเท่าไหร่" และ "การบรรยายเกี่ยวกับการจัดการโครงการซอฟต์แวร์" ของ S. Arkhipenkov ในหัวข้อ

อัปเกรด ดาวน์เกรด

เมื่อทำการประเมินและกำหนดเวลา จำเป็นต้อง:

  1. แยกย่อยงานออกเป็นชิ้นเล็กชิ้นน้อยในลักษณะที่มีความเข้าใจชัดเจนว่าการพัฒนาแต่ละชิ้นจะใช้เวลานานแค่ไหน
  2. ควบคู่ไปกับการสลายตัวจะมีคำถามเพิ่มเติมเกี่ยวกับการทำงานที่ไม่ได้อธิบายไว้ในข้อความแจ้งปัญหาอย่างแน่นอน จำเป็นต้องได้รับคำตอบสำหรับคำถามดังกล่าว เนื่องจากสิ่งนี้เกี่ยวข้องโดยตรงกับขอบเขตของงานและด้วยเหตุนี้ เวลา
  3. เพิ่มความเสี่ยงบางส่วนในการประเมินขั้นสุดท้าย สิ่งนี้ถูกกำหนดโดยประสบการณ์ คุณสามารถเริ่มด้วยความเสี่ยง 10-15%
  4. ทำความเข้าใจว่าโปรแกรมเมอร์เต็มใจทุ่มเทให้กับการทำงานให้สำเร็จกี่ชั่วโมงต่อวัน
  5. เราแบ่งการประมาณการขั้นสุดท้ายด้วยจำนวนชั่วโมงที่เราจัดสรรต่อวัน และเราได้จำนวนวันที่ต้องใช้สำหรับการนำไปใช้
  6. เรามุ่งเน้นที่ปฏิทินและจำนวนวันที่ต้องดำเนินการให้เสร็จสิ้น เราคำนึงถึงวันหยุดสุดสัปดาห์และวันอื่นๆ ที่โปรแกรมเมอร์ไม่สามารถทำงานนั้นได้ เช่นเดียวกับวันที่เริ่มงาน (ผู้พัฒนาไม่พร้อมที่จะรับงานในวันเดียวกันเสมอไป) ดังนั้นเราจึงได้วันที่เริ่มต้นและสิ้นสุดของงาน

อัปเกรด ดาวน์เกรด

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

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

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

อัปเกรด ดาวน์เกรด

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

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

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

อัปเกรด ดาวน์เกรด

เมื่อกำหนดระยะเวลา ควรพิจารณาปัจจัยหลายประการ

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

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

ยังเสี่ยงอยู่เสมอ สำหรับผู้เริ่มต้น ฉันแนะนำให้คูณกำหนดเวลาโดยประมาณด้วยสอง ท้ายที่สุด เป็นการดีกว่าที่จะส่งมอบโครงการก่อนกำหนดและเติบโตในฐานะผู้เชี่ยวชาญในสายตาของลูกค้า แทนที่จะมอบในภายหลังและทำลายชื่อเสียงของคุณ

อัปเกรด ดาวน์เกรด

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

การสร้างแผนงานที่ชัดเจนนั้นยากกว่าการกำหนดเส้นตายสำหรับการทำงานชิ้นเดียวให้เสร็จ ในขณะเดียวกัน สิ่งสำคัญไม่เพียงแต่ต้องส่งมอบโครงการตรงเวลาเท่านั้น แต่ยังต้องแน่ใจว่าระบบที่คุณพัฒนาขึ้นนั้นสามารถแก้ปัญหาทางธุรกิจได้อย่างถูกต้อง ทีมไอทีได้รับความช่วยเหลือจากวิธีการพัฒนาซอฟต์แวร์ที่หลากหลาย ตั้งแต่ RUP และ MSF ไปจนถึง SCRUM และรูปแบบ Agile อื่นๆ เครื่องมือมีให้เลือกมากมาย และลูกค้าจำนวนมากต้องการทำความเข้าใจล่วงหน้าว่าเราจะทำงานร่วมกับพวกเขาอย่างไรในโครงการนี้ และเรายึดถือหลักการใด

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

ทีมงานที่คล่องแคล่ววางแผนทุกอย่างร่วมกันและกำหนดระดับแรงงานที่เหมาะสมที่สุดที่จำเป็นสำหรับการแก้ปัญหาเฉพาะ ตัวอย่างเช่น หนึ่งในเทคนิคที่เรียกว่า "การวางแผนโป๊กเกอร์" โดยที่ผู้เข้าร่วมแต่ละคนไม่ระบุตัวตนของค่าแรงที่จำเป็นสำหรับงานเฉพาะ หลังจากนั้น ทีมงานจะกำหนดน้ำหนักเฉลี่ยของงานในประเด็นเรื่องหรือชั่วโมงการทำงาน และแจกจ่ายกรณีต่างๆ ตามหลักการ “ใครชอบอะไร” ในเวลาเดียวกัน ทุก ๆ วันทีมงานจะรวมตัวกันเป็นเวลา 15 นาที ซึ่งในเวลาไม่กี่นาที ทุกคนจะพูดถึงสถานะของงานปัจจุบันของพวกเขา รวมถึงรายงานปัญหาที่เกิดขึ้น ทีมงานกำจัดปัญหาที่ตรวจพบอย่างรวดเร็ว ดังนั้นลูกค้าจึงดูขั้นตอนถัดไปของงานโปรแกรมเมอร์โดยเร็วที่สุด นักพัฒนาจะไม่ล่าช้ากำหนดเวลาสำหรับการทำงานให้เสร็จสิ้นเนื่องจากพวกเขาไม่เต็มใจที่จะดึงทีมอีกครั้งหรือพยายามอย่างไร้ประโยชน์เพื่อคิดออกด้วยตัวเอง เป็นการฆ่าเวลาอันมีค่า อย่างไรก็ตาม ในสถานะขนาดเล็กเช่นนี้ นักพัฒนาซอฟต์แวร์มีความปรารถนาที่จะพิสูจน์ตัวเองจากด้านที่ดีที่สุด เพื่อแสดงให้เห็นว่าคุณใช้แนวทางที่รับผิดชอบในการทำงาน มันกระตุ้นและมีวินัยในตนเองจริงๆ

บทนำ

วัตถุประสงค์ของการประชุมเชิงปฏิบัติการเกี่ยวกับองค์กรการผลิตคือการขยายและให้ความรู้เชิงทฤษฎีอย่างลึกซึ้ง ปลูกฝังทักษะที่จำเป็นในการแก้ปัญหางานทั่วไปในการปฏิบัติในองค์กรและการวางแผนการผลิต

เวิร์กชอปประกอบด้วยงานสำหรับส่วนหลักของหลักสูตร ในตอนต้นของแต่ละหัวข้อ จะมีการนำเสนอแนวทางสั้น ๆ และข้อมูลเชิงทฤษฎี งานทั่วไปพร้อมโซลูชันและงานสำหรับโซลูชันอิสระ

การมีอยู่ในแต่ละหัวข้อของแนวทางและข้อมูลเชิงทฤษฎีโดยย่อทำให้คุณสามารถใช้เวิร์กชอปนี้ในการเรียนทางไกลได้


การคำนวณระยะเวลาของวงจรการผลิต

ระยะเวลาของวงจรการผลิตทำหน้าที่เป็นตัวบ่งชี้ประสิทธิภาพของกระบวนการผลิต

วงจรการผลิต- ระยะเวลาพำนักของกรรมกรในกระบวนการผลิตตั้งแต่เริ่มปล่อยวัตถุดิบจนถึงขณะปล่อยผลิตภัณฑ์สำเร็จรูป

วัฏจักรการผลิตประกอบด้วย เวลาทำงาน,ในระหว่างที่มีการใช้แรงงานและ เวลาพัก. การแบ่งขึ้นอยู่กับสาเหตุที่ทำให้เกิดสามารถแบ่งออกเป็น:

1) บน เป็นธรรมชาติหรือเทคโนโลยี - เนื่องจากธรรมชาติของผลิตภัณฑ์

2) องค์กร(แบ่งระหว่างกะ).

ระยะเวลาของวงจรการผลิตประกอบด้วยองค์ประกอบต่อไปนี้:

รอบ T = tเหล่านั้น + tกิน + t tr + tเคเค + tม.โอ. + tวท.ม.

ที่ไหน tเหล่านั้น– เวลาของการดำเนินงานทางเทคโนโลยี

กิน -เวลาของกระบวนการทางธรรมชาติ (การทำให้แห้ง การทำให้เย็นลง ฯลฯ );

เสื้อ tr -เวลาขนส่งสิ่งของที่ใช้แรงงาน

ทีซีซี -เวลาควบคุมคุณภาพ

t m.o -เวลารอระหว่างกัน

ทีเอ็มซี -เวลาที่ใช้ในโกดังสินค้าระหว่างร้าน

(tสาม tเคเค สามารถใช้ร่วมกับ tม.โอ).

การคำนวณระยะเวลาของรอบการผลิตขึ้นอยู่กับประเภทของการผลิต ในการผลิตจำนวนมาก ระยะเวลาของวงจรการผลิตจะถูกกำหนดโดยเวลาที่ผลิตภัณฑ์อยู่ในสตรีม กล่าวคือ

รอบ T = tในเอ็ม

ที่ไหน tใน- ปล่อยจังหวะ;

เอ็ม- จำนวนสถานที่ทำงาน

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

รอบการปลดปล่อยถูกกำหนดโดยสูตร

เสื้อใน \u003d T eff / V

ที่ไหน ทีเอฟ- กองทุนที่มีประสิทธิภาพของเวลาทำงานสำหรับรอบการเรียกเก็บเงิน (กะ, วัน, ปี)

ใน- ปริมาณการส่งออกในช่วงเวลาเดียวกัน (ในหน่วยธรรมชาติ)

ตัวอย่าง: T cm = 8 ชั่วโมง = 480 นาที; T เลน = 30 นาที; → T eff \u003d 480 - - 30 \u003d 450 นาที

H = 225 ชิ้น; → t c = 450/225 = 2 นาที

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


ฉัน. ที่ สม่ำเสมอชิ้นส่วนที่เคลื่อนไหว การดำเนินการที่ตามมาแต่ละครั้งจะเริ่มขึ้นหลังจากส่วนก่อนหน้าสิ้นสุดเท่านั้น ระยะเวลาของวัฏจักรที่มีการเคลื่อนที่ตามลำดับของชิ้นส่วนจะเท่ากับ:

ที่ไหน - จำนวนส่วนของแบทช์ที่กำลังดำเนินการ

t ชิ้นฉัน- อัตราชิ้นของเวลาสำหรับการดำเนินการ

ซี ไอ- จำนวนงาน ฉัน-th การดำเนินงาน;

– จำนวนการดำเนินการตามกระบวนการทางเทคโนโลยี

ให้ชุดผลิตภัณฑ์ประกอบด้วย 5 ชิ้น แบตช์จะถูกข้ามไปตามลำดับผ่าน 4 การดำเนินการ ระยะเวลาของการดำเนินการครั้งแรกคือ 10 นาที วินาที 20 นาที ครั้งที่สาม 10 นาที และครั้งที่สี่ 30 นาที (รูปที่ 1)

รูปที่ 1

ตู่วน = ตู่สุดท้าย = 5 (10+20+10+30) = 350 นาที

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

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

เวลาในการประมวลผลของแบทช์ที่มีการเคลื่อนที่แบบขนานของผลิตภัณฑ์ลดลงอย่างมาก:

ดล .

ที่ไหน น น- จำนวนชิ้นส่วนใน ฝ่ายโอน(ฝ่ายขนส่ง) กล่าวคือ จำนวนผลิตภัณฑ์ที่โอนจากการดำเนินการหนึ่งไปยังอีกการดำเนินการหนึ่งพร้อมกัน

ความยาว - รอบการทำงานที่ยาวที่สุด

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

ในตัวอย่างของเรา: = 5, t 1 = 10; t 2 = 20; t 3 = 10; t 4 = 30; จาก= 1.

ตู่ไอน้ำ \u003d 1 (10 + 20 + 10 + 30) + (5-1) 30 \u003d 70 + 120 \u003d 190 นาที

พิจารณาโครงร่างการเคลื่อนที่แบบขนานของชิ้นส่วน (รูปที่ 2):

รูปที่ 2

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

แกน .

ที่คร. - รอบการทำงานที่สั้นที่สุด (จากการทำงานที่อยู่ติดกันแต่ละคู่)

-1จำนวนชุดค่าผสม

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

หากการดำเนินการที่อยู่ติดกันมีระยะเวลาเท่ากัน จะมีเพียงหนึ่งการดำเนินการเท่านั้นที่ได้รับการยอมรับว่าสั้นหรือยาว (รูปที่ 3)

รูปที่ 3

ตู่คู่สุดท้าย \u003d 5 (10 + 20 + 10 + 30) - (5-1) (10 + 10 + 10) \u003d 350-120 \u003d 230 นาที

วิธีหลักในการลดระยะเวลาของวงจรการผลิตคือ:

1) การลดความเข้มแรงงานของผลิตภัณฑ์การผลิตโดยการปรับปรุงความสามารถในการผลิตของโครงสร้างที่ผลิตขึ้น การใช้คอมพิวเตอร์ และการแนะนำกระบวนการทางเทคโนโลยีขั้นสูง

2) การจัดกระบวนการแรงงานที่มีเหตุผล การจัดและบำรุงรักษาสถานที่ทำงานบนพื้นฐานของความเชี่ยวชาญและความร่วมมือ การใช้เครื่องจักรที่กว้างขวาง และระบบอัตโนมัติของการผลิต

3) การลดช่วงพักตามแผนและที่ไม่ได้วางแผนในที่ทำงานโดยอิงตามการใช้หลักการขององค์กรทางวิทยาศาสตร์ของกระบวนการผลิตอย่างมีเหตุผล

4) การเร่งความเร็วของปฏิกิริยาอันเป็นผลมาจากการเพิ่มขึ้นของความดัน อุณหภูมิ การเปลี่ยนผ่านไปสู่กระบวนการต่อเนื่อง เป็นต้น

5) ปรับปรุงกระบวนการขนส่ง จัดเก็บ ควบคุม และรวมเข้ากับกระบวนการแปรรูปและประกอบ

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

งาน

1 กำหนดระยะเวลาของวัฏจักรการประมวลผล 50 ชิ้นส่วนด้วยการเคลื่อนที่แบบอนุกรม ขนาน และแบบขนานในกระบวนการผลิต กระบวนการของการประมวลผลชิ้นส่วนประกอบด้วยการดำเนินการห้าครั้งซึ่งระยะเวลาตามลำดับคือขั้นต่ำ: t 1 =2; t 2 =3; t 3 =4; t 4 =1; t 5=3. การดำเนินการที่สองดำเนินการบนเครื่องสองเครื่อง และอีกเครื่องหนึ่งดำเนินการในเครื่องเดียว ขนาดล็อตโอน 4 ชิ้น

2 กำหนดระยะเวลาของวัฏจักรการประมวลผลของชิ้นส่วน 50 ชิ้นด้วยการเคลื่อนไหวแบบอนุกรม ขนาน และแบบขนานในกระบวนการผลิต กระบวนการของการประมวลผลชิ้นส่วนประกอบด้วยการดำเนินการสี่ครั้งซึ่งระยะเวลาตามลำดับคือขั้นต่ำ: t 1 =1; t 2 =4; t 3 =2; t 4=6. การดำเนินการที่สี่ดำเนินการบนเครื่องสองเครื่อง และอีกเครื่องหนึ่งดำเนินการในเครื่องเดียว ขนาดล็อตโอน 5 ชิ้น

3 ชุดชิ้นส่วนจำนวน 200 ชิ้นได้รับการประมวลผลด้วยการเคลื่อนตัวแบบขนานกันระหว่างกระบวนการผลิต กระบวนการของการประมวลผลชิ้นส่วนประกอบด้วยการดำเนินการหกครั้งซึ่งระยะเวลาตามลำดับคือขั้นต่ำ: t 1 =8; t 2 =3; t 3 =27; t 4 =6; t 5 =4; t 6=20. การดำเนินการครั้งที่สามดำเนินการบนเครื่องสามเครื่อง เครื่องที่หกต่อเครื่องสอง และการทำงานอื่นๆ แต่ละรายการในเครื่องเดียว กำหนดว่ารอบเวลาสำหรับการประมวลผลชุดของชิ้นส่วนจะเปลี่ยนไปอย่างไร หากเวอร์ชันคู่ขนานของการเคลื่อนไหวในการผลิตถูกแทนที่ด้วยแบบคู่ขนาน ขนาดล็อตโอน 20 ชิ้น

4 ชุดชิ้นส่วนจำนวน 300 ชิ้นได้รับการประมวลผลด้วยการเคลื่อนย้ายแบบขนานกันระหว่างกระบวนการผลิต กระบวนการของการประมวลผลชิ้นส่วนประกอบด้วยการดำเนินการเจ็ดครั้งซึ่งระยะเวลาตามลำดับคือขั้นต่ำ: t 1 =4; t 2 =5; t 3 =7; t 4 =3; t 5 =4; t 6 =5; t 7=6. การดำเนินการแต่ละครั้งจะดำเนินการในเครื่องเดียว ชุดโอน - 30 ชิ้น อันเป็นผลมาจากเทคโนโลยีการผลิตที่ได้รับการปรับปรุง ระยะเวลาของการดำเนินการที่สามลดลง 3 นาที ครั้งที่ 7 - 2 นาที กำหนดว่าวงจรการประมวลผลของชุดชิ้นส่วนเปลี่ยนแปลงอย่างไร

5 ให้ชุดช่องว่างจำนวน 5 ชิ้น ชุดงานข้ามผ่าน 4 การดำเนินการ: ระยะเวลาของครั้งแรกคือ 10 นาที ครั้งที่สองคือ 20 นาที ครั้งที่สามคือ 10 นาที ครั้งที่สี่คือ 30 นาที กำหนดระยะเวลาของวัฏจักรโดยวิธีการวิเคราะห์และกราฟิกสำหรับการเคลื่อนไหวตามลำดับ

6 ให้ชุดเปล่าจำนวนหนึ่งประกอบด้วยสี่ชิ้น ปาร์ตี้ข้ามผ่าน 4 การดำเนินการ: ระยะเวลาของครั้งแรกคือ 5 นาที ครั้งที่สองคือ 10 นาที ครั้งที่สามคือ 5 นาที ครั้งที่สี่คือ 15 นาที กำหนดระยะเวลาของวัฏจักรด้วยวิธีการวิเคราะห์และกราฟิกด้วยการเคลื่อนที่แบบขนาน

7 ให้ชุดเปล่าจำนวน 5 ชิ้น ชุดงานข้ามผ่าน 4 การดำเนินการ: ระยะเวลาของครั้งแรกคือ 10 นาที ครั้งที่สองคือ 20 นาที ครั้งที่สามคือ 10 นาที ครั้งที่สี่คือ 30 นาที กำหนดระยะเวลาของวัฏจักรโดยวิธีวิเคราะห์และแบบกราฟิกสำหรับการเคลื่อนที่แบบอนุกรม-ขนาน

8 กำหนดระยะเวลาของวัฏจักรเทคโนโลยีสำหรับการประมวลผลชุดผลิตภัณฑ์จาก 180 ชิ้น ด้วยรูปแบบการเคลื่อนที่แบบขนานและแบบต่อเนื่อง สร้างกราฟของกระบวนการประมวลผล ขนาดล็อตโอน - 30 ชิ้น บรรทัดฐานของเวลาและจำนวนงานในการดำเนินงานมีดังนี้

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

OS/360 และผู้สืบทอด

AIX

ใน AIX เวอร์ชัน 4 มีค่าที่เป็นไปได้สามค่าสำหรับนโยบายการกำหนดตารางเวลาของเธรด:

  • อันดับแรก ออกก่อน: เมื่อกำหนดเวลาเธรดที่มีนโยบายนี้แล้ว เธรดจะทำงานจนเสร็จ เว้นแต่จะถูกบล็อก ยอมให้การควบคุมโปรเซสเซอร์โดยสมัครใจ หรือเธรดที่มีลำดับความสำคัญสูงกว่าถูกส่งออกไป เฉพาะเธรดที่มีลำดับความสำคัญคงที่เท่านั้นที่สามารถมีนโยบายการจัดกำหนดการ FIFO
  • Round Robin: สิ่งนี้คล้ายกับ Round Robin ตัวกำหนดตารางเวลา AIX เวอร์ชัน 3 โดยยึดตามการแบ่งเวลา 10ms เมื่อเธรด PP มีการควบคุมที่ส่วนท้ายของช่วงเวลา เธรดจะย้ายไปที่ส่วนท้ายของคิวของเธรดที่มีลำดับความสำคัญเท่ากัน เฉพาะเธรดที่มีลำดับความสำคัญคงที่เท่านั้นที่สามารถมีนโยบายการจัดกำหนดการ Round Robin
  • อื่นๆ: นโยบายนี้กำหนดโดย POSIX1003.4a ในการใช้งาน ใน AIX เวอร์ชัน 4 นโยบายนี้ถูกกำหนดให้เทียบเท่ากับ RR ยกเว้นว่าใช้กับเธรดที่มีลำดับความสำคัญที่ไม่คงที่ การคำนวณค่าลำดับความสำคัญของเธรดที่ทำงานอยู่ใหม่ในทุกอินเตอร์รัปต์หมายความว่าเธรดอาจสูญเสียการควบคุมเนื่องจากค่าลำดับความสำคัญของเธรดนั้นสูงกว่าเธรดอื่น นี่คือลักษณะการทำงานของ AIX เวอร์ชัน 3

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