serversim
학습시뮬레이터템플릿가격
…
…
메뉴 열기
학습↗시뮬레이터↗템플릿↗가격↗
내 Documents문서
전체 목차/4장/4.930 / 40

4.9 · 회로와 CPU

함수·시스템 호출·인터럽트·스레드 전환의 공통점

CPU가 다른 코드로 갔다가 원래 자리로 정확히 돌아오는 비결은 무엇일까요?

현재 레지스터와 복귀 주소를 문맥으로 저장하고 다른 스택이나 문맥을 불러옵니다.

먼저 생활 비유

책갈피를 여러 겹 꽂기

책을 읽다 전화가 오고 다시 초인종이 울려도, 각 책갈피가 있으면 가장 최근에 멈춘 일부터 되돌아갈 수 있습니다.

컴퓨터 예제로 바꾸기

read 중 디스크 인터럽트

user code → syscall → kernel → interrupt → kernel → user

사용자 스택, 커널 스택, 인터럽트 프레임에 필요한 복귀 상태가 층층이 저장됩니다.

직접 움직여 보기1 / 5

지금 일어나는 변화

사용자 코드

PC, SP와 일반 레지스터가 현재 작업 상태를 이룹니다.

신호와 실행 장치사용자 코드단계 1시스템 호출단계 2커널 스택단계 3인터럽트단계 4역순 복원단계 5CPU 문맥현재: 사용자 코드

이 그림에서 기억할 한 문장

다른 종류의 전환도 “어디까지 했는지 저장하고 새 실행 위치로 이동한 뒤 복원한다”는 공통 구조를 가집니다.

현재 상태

이동하는 것
CPU 문맥
현재 위치
사용자 코드
다음 위치
시스템 호출

30초 확인 문제

문맥을 저장하지 않고 다른 스레드로 바꾸면?

처음 보는 용어 두 개

문맥
실행을 이어가기 위해 필요한 레지스터와 상태의 묶음
문맥 전환
현재 실행 상태를 저장하고 다른 실행 상태를 불러오는 작업

이 절을 다 읽었다면

다른 종류의 전환도 “어디까지 했는지 저장하고 새 실행 위치로 이동한 뒤 복원한다”는 공통 구조를 가집니다.

← 이전 절

4.8 현대 CPU에서 CISC와 RISC는 어떻게 만날까?

다음 절 →

5.1 캐시는 왜 컴퓨터 곳곳에 있을까?