도구스개발

페트리 네트 시뮬레이터

자리·전이·토큰 초기 배치를 입력하면 발화 가능한 전이를 찾아 토큰을 옮기는 과정을 한 단계씩 보여줍니다. 병행 시스템의 동시성·안전성을 눈으로 확인합니다.

버퍼가 비었을 때만 생산하고, 찼을 때만 소비합니다. 버퍼가 항상 정확히 한 상태(비었거나 찼거나)에 있습니다.

전이 구조(자리 → 전이 → 자리)

produce : buffer_empty(-1)buffer_full(+1)
consume : buffer_full(-1)buffer_empty(+1)

초기 토큰 수

실행 결과

최대 스텝 수에 도달해 강제로 멈춤

20스텝 실행

한 단계씩 보기

자리별 토큰 수

1
buffer_empty
0
buffer_full
스텝 0 / 20발화 가능 1
발화한 전이produce
발화 가능했던 전이produce
한 순간에 여러 전이가 동시에 발화 가능할 수 있습니다. 원래 페트리 네트는 그중 아무거나 발화하는 비결정적 모형입니다. 이 계산기는 결과를 재현 가능하게 만들기 위해 발화 가능한 전이 중 이름이 사전순으로 가장 앞선 것 하나만 매 단계 발화시킨다고 정합니다. 실제 시스템의 스케줄링 순서와는 다를 수 있습니다.

사용 방법

  1. 1자리(place)와 전이(transition)의 이름, 각 전이가 소비·생산하는 자리와 가중치를 정의합니다.
  2. 2자리별 초기 토큰 수를 입력합니다.
  3. 3최대 스텝 수를 정하면 매 단계 발화 가능한 전이 중 이름이 가장 앞선 것 하나가 자동으로 발화합니다.
  4. 4한 단계씩 넘기며 각 자리의 토큰 수와 발화한 전이를 확인합니다.

자주 묻는 질문

자리(place)와 전이(transition)로 이루어진 그래프로, 토큰이 자리에 쌓이고 전이가 발화하면서 옮겨 다니는 방식으로 병행·비동기 시스템의 동작을 표현하는 수학적 모형입니다. 생산자-소비자, 상호배제처럼 여러 일이 동시에 벌어지는 상황을 정확히 기술할 때 씁니다.

전이로 들어오는 모든 입력 호(arc)에 대해, 연결된 자리에 그 호의 가중치 이상의 토큰이 있어야 발화 가능합니다. 발화하면 입력 자리마다 가중치만큼 토큰을 빼고 출력 자리마다 가중치만큼 토큰을 더합니다.

원래 페트리 네트는 비결정적이라 그중 아무거나 발화할 수 있습니다. 이 계산기는 결과를 재현 가능하게 만들기 위해 발화 가능한 전이 중 이름이 사전순으로 가장 앞선 것 하나만 매 단계 발화시킨다고 정합니다. 실제 시스템의 스케줄링 순서와는 다를 수 있습니다.

교착(deadlock)으로 보고 시뮬레이션을 멈춥니다. 상호배제 예시처럼 자원을 두고 경쟁하는 네트에서는 설계에 따라 교착이 일부러 나타나거나 나타나지 않을 수 있습니다.

아니요. 자리·전이 정의와 토큰 배치는 모두 브라우저에서만 계산되며 서버로 전송되지 않습니다.

알아두면 좋은 점

  • 전이 발화 순서는 이름순으로 고정한 결정적 시뮬레이션입니다. 실제 병행 시스템의 스케줄러 동작과는 다를 수 있습니다.
  • 자리·전이 개수와 최대 스텝 수가 너무 크면 브라우저 성능에 영향을 줄 수 있습니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 3일 · 결과는 참고용 추정치입니다.