กลับไปหน้าบทความ

อ่าน 2 นาที

เครื่องสถานะจำกัดแบบขับเคลื่อนด้วยเหตุการณ์

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

เครื่องสถานะจำกัดแบบขับเคลื่อนด้วยเหตุการณ์

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

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

ตัวอย่างในภาษา C

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

/********************************************************************/ #include <stdio.h>/*****************************************************************/ typedef enum { ST_RADIO , ST_CD } STATES ;typedef enum { EVT_MODE , EVT_NEXT } EVENTS ;EVENTS readEventFromMessageQueue ( void );/*****************************************************************/ int main ( void ) { /* สถานะเริ่มต้นคือวิทยุ */ STATES state = ST_RADIO ; int stationNumber = 0 ; int trackNumber = 0 ;/* ลูปไม่สิ้นสุด */ while ( 1 ) { /* อ่านเหตุการณ์ขาเข้าถัดไป โดยปกติแล้วนี่คือฟังก์ชันบล็อก */ EVENTS event = readEventFromMessageQueue ();/* สลับสถานะและเหตุการณ์เพื่อดำเนินการเปลี่ยนผ่านที่ถูกต้อง */ switch ( state ) { case ST_RADIO : switch ( event ) { case EVT_MODE : /* เปลี่ยนสถานะ */ state = ST_CD ; break ; case EVT_NEXT : /* เพิ่มหมายเลขสถานี */ stationNumber ++ ; break ; } break ;case ST_CD : switch ( event ) { case EVT_MODE : /* เปลี่ยนสถานะ */ state = ST_RADIO ; break ; case EVT_NEXT : /* ไปยังแทร็กถัดไป */ trackNumber ++ ; break ; } break ; } } }

ตัวอย่างเดียวกันใน Ginr

Ginrเป็นคอมไพเลอร์ระดับอุตสาหกรรมที่สร้างออโตมาตาสถานะจำกัดแบบมัลติเทปจากรูปแบบเชิงตรรกะ ฟังก์ชัน และความสัมพันธ์ที่แสดงใน รูปพีชคณิต เซมิริง ตัวอย่างด้านล่างแสดงฟังก์ชันเชิง ตรรกะแบบไบนารี ที่เทียบเท่ากับตัวอย่างข้างต้น โดยมีทรานซิชันเพิ่มเติม(nil, radio)เพื่อตั้งค่าระบบให้อยู่ในสถานะเริ่มต้น ในที่นี้ สัญลักษณ์อินพุตnil, mode, nextแทนเหตุการณ์ที่ขับเคลื่อนทรานสดิวเซอร์ที่มีเอฟเฟกต์เอาต์พุตcd, nextTrack, radio, nextStationนิพจน์แบบนี้โดยทั่วไปแล้วง่ายต่อการแสดงและบำรุงรักษามากกว่าการแสดงรายการทรานซิชันอย่างชัดเจน

สเตทแมชชีน = ( (ศูนย์, วิทยุ) ( (โหมด, ซีดี) (ถัดไป, เพลงถัดไป)* (โหมด, วิทยุ) (ถัดไป, สถานีถัดไป)* )* ( (โหมด, ซีดี) (ถัดไป, เพลงถัดไป)* )? ); 

กระบวนการคอมไพล์จะสร้างตัวแปลงสัญญาณไบนารีแบบค่าเดียว (single-valued) ที่แปลงลำดับเหตุการณ์ไปเป็นลำดับของตัวกระตุ้น (effector) ที่ควบคุมคุณสมบัติของอุปกรณ์ซีดี/วิทยุ

สเตทแมชชีน:prsseq; (เริ่ม) ไม่มี [วิทยุ] 1 โหมด 1 [ cd ] 2 โหมด 2 [วิทยุ] 3 2 ถัดไป [ nextTrack ] 2 โหมด 3 [ cd ] 2 3 ถัดไป [สถานีถัดไป] 3 

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

ดูเพิ่มเติม

  • Ginr (เอกสารไวท์เปเปอร์และคู่มือผู้ใช้ Ginr)
  • ไรโบส (สาธิตการใช้ ginr เพื่อถ่ายทอดข้อมูลไปยังสื่อลำดับถัดไป)

อ่านเพิ่มเติม

  • พีทแมน, จอห์น บี. (1977). การออกแบบโดยใช้ไมโครคอมพิวเตอร์ . นิวยอร์ก: แมคกรอว์-ฮิลล์ อิงค์. ISBN 0-07-049138-0.
  • Brookshear, J. Glenn (1989). ทฤษฎีการคำนวณ: ภาษาเชิงรูปธรรม ออโตมาตา และความซับซ้อน . เรดวูดซิตี รัฐแคลิฟอร์เนีย: บริษัท เบนจามิน/คัมมิงส์ พับบลิช จำกัดISBN 0-8053-0143-7.
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Event-driven_finite-state_machine&oldid=1334234448 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ เครื่องสถานะจำกัดแบบขับเคลื่อนด้วยเหตุการณ์

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

ตัวอย่างในภาษา C

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

ตัวอย่างเดียวกันใน Ginr

Ginrเป็นคอมไพเลอร์ระดับอุตสาหกรรมที่สร้างออโตมาตาสถานะจำกัดแบบมัลติเทปจากรูปแบบเชิงตรรกะ ฟังก์ชัน และความสัมพันธ์ที่แสดงใน รูปพีชคณิต เซมิริ ง ตัวอย่างด้านล่างแสดง ฟังก์ชันเชิง ตรรกะแบบไบนารี ที่เทียบเท่ากับตัวอย่างข้างต้น โดยมีทรานซิชันเพิ่มเติม (nil, radio)...

ดูเพิ่มเติม

เครื่องจักรสถานะจำกัด ภาษาของข้อกำหนดและคำอธิบาย