연속 (Smalltalk에서와 같이)과 인터럽트 (어셈블러에서와 같이)의 차이점은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/815431

문제

나는 연속의 개념을 이해하기 위해 고군분투하고 있습니다 (Smalltalk와 함께 해변에서 사용). Wikipedia의 스 니펫은 다음과 같이 말합니다.

"... 프로그래밍 언어가 모든 시점에서 실행 상태를 저장하고 프로그램의 후반에 해당 지점으로 돌아갈 수있는 능력을 제공하는 구성 요소 인 일등석 연속 조치를 참조하십시오."

이것이 단순히 인터럽트를 프로그래밍 할 때 어셈블러 프로그래머가하는 일을 표현하는 또 다른 방법이 아닙니까? 또는 나는 요점을 완전히 놓쳤다!

도움이 되었습니까?

해결책

연속은 달리기 프로세스의 스냅 샷 사본으로 볼 수 있습니다. 연속을 캡처한다는 것은 현재 프로세스가 복사되어 제쳐 져 있음을 의미합니다. 그 후 코드는 정상적으로 계속 실행됩니다. 연속을 평가한다는 것은 현재 프로세스가 종료되고 복사 된 프로세스가 정확히 캡처 된 상태에서 재개된다는 것을 의미합니다. 연속은 일반적으로 여러 번 재개 될 수 있습니다.

인터럽트는 서로를 인터 리브하는 두 개의 다른 실행 스레드 (응용 프로그램 코드, 인터럽트 핸들러)가있는 코 루틴과 비슷합니다.

다른 팁

연속은 C의 SetJump/LongJump와 대략 동일합니다. Continuation (스택, 플래그, 레지스터, 명령 포인터 등)을 떠날 때 컨텍스트가 손상되지 않기를 기대할 수 있습니다. 따라서 핸들러가 완료되고 연속이 암시되지 않으면 반환 할 필요가 없거나 계속해서 계속 호출 할 필요가없는 경우를 제외하고는 소프트웨어 인터럽트 통화와 유사합니다.

어떤면에서 그들은 비슷합니다. 그러나 계속해서 프로그램 자체에 의해 연속이 호출되며 인터럽트는 일반적으로 컴퓨터의 CPU 또는 장치에 의해 생성됩니다. 또한 인터럽트는 C 신호와 비슷하며 방금 호출 된 다음 프로그램으로의 반환을 제어합니다. 인터럽트는 상태를 저장하고 나중에 복원 할 책임이 있습니다.

또한 어셈블러에서 연속을 아주 쉽게 구현할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top