Exceptional Control Flow: 두 판 사이의 차이

youngwiki
편집 요약 없음
편집 요약 없음
1번째 줄: 1번째 줄:
[[파일:Control Flow.png|섬네일|264x264픽셀]]
==개요==
[[파일:Control Flow.png|섬네일|264x264픽셀]]프로세서는 한번에 하나씩 instruction을 읽고 실행한다. 이때 프로세서가 실행하는 instruction의 순서를 control flow라고 한다.
 
==Altering the Control Flow==
Control FLow를 수정하는 메커니즘은 두가지가 존재한다.
# Jumps and Branches
#* Jump: unconditional branch (ex: goto)
#* Branches: 조건문, 반복문
# Call and Return: program state<ref>프로그램이 실행 중일 때의 상태를 의미한다. 주로 프로그램 내의 변수 값, 레지스터 값, 프로그램 카운터(PC), 스택 포인터 등과 관련이 있다. 즉, 프로그램이 현재 어떤 명령어를 실행하고 있고, 실행 중인 함수나 연산의 중간 결과 등이 프로그램 상태에 포함된다.</ref>에서의 변화에 반응한다.
하지만 위의 두 메커니즘은 system state에서의 모든 변화에 대응하기에는 불충분하다. 아래는 그 예시이다.
# disk, network adapter 등으로부터 Data를 받을 때<ref>CPU가 disk보다 100만배는 빠르므로 disk에 작업을 요청한 후 다른 작업을 실행함</ref>
# 0 나누기를 시도할 때
# Ctrl - C 를 시도할 때
# System Timer가 만료되었을 때(expire)<ref>S.T 만료 -> 인터럽트 발생 -> 현재 프로그램 중단 후 스케줄링 처리 -> 다음 프로그램 실행</ref>
# 오버플로우(언더플로우)가 발생할 때
 
 
 
 


==개요==
프로세서는 한번에 하나씩 instruction을 읽고 실행한다. 이때 프로세서가 실행하는 instruction의 순서를 control flow라고 한다.




[[분류:컴퓨터 시스템]]
[[분류:컴퓨터 시스템]]

2025년 3월 11일 (화) 15:33 판

개요

프로세서는 한번에 하나씩 instruction을 읽고 실행한다. 이때 프로세서가 실행하는 instruction의 순서를 control flow라고 한다.

Altering the Control Flow

Control FLow를 수정하는 메커니즘은 두가지가 존재한다.

  1. Jumps and Branches
    • Jump: unconditional branch (ex: goto)
    • Branches: 조건문, 반복문
  2. Call and Return: program state[1]에서의 변화에 반응한다.

하지만 위의 두 메커니즘은 system state에서의 모든 변화에 대응하기에는 불충분하다. 아래는 그 예시이다.

  1. disk, network adapter 등으로부터 Data를 받을 때[2]
  2. 0 나누기를 시도할 때
  3. Ctrl - C 를 시도할 때
  4. System Timer가 만료되었을 때(expire)[3]
  5. 오버플로우(언더플로우)가 발생할 때
  1. 프로그램이 실행 중일 때의 상태를 의미한다. 주로 프로그램 내의 변수 값, 레지스터 값, 프로그램 카운터(PC), 스택 포인터 등과 관련이 있다. 즉, 프로그램이 현재 어떤 명령어를 실행하고 있고, 실행 중인 함수나 연산의 중간 결과 등이 프로그램 상태에 포함된다.
  2. CPU가 disk보다 100만배는 빠르므로 disk에 작업을 요청한 후 다른 작업을 실행함
  3. S.T 만료 -> 인터럽트 발생 -> 현재 프로그램 중단 후 스케줄링 처리 -> 다음 프로그램 실행