컨텍스트 스위칭이란것의 실체를 체감하기란 참으로 어렵다. 코드상으로 드러나는 특징이 아니기 때문이다.
이는 두가지 관점에서 살펴봐야한다.
1.메모리의 변화
2. 프로세서의 변화
1. 메모리 같은경우 사용하고 있던 "페이지 테이블"이 바뀌는것이다. 즉 사용하던 가상메모리 공간이 바뀌게 된다.
2. 프로세서의 경우는 모든 레지스터의 값들과 사용하고 있던 "스택"이 변경된다.
스택이란 해당 태스크의 컨텍스트를 저장하는 중요한 공간이다.
2334번줄의 switch_to함수를 기점으로
그위의 코드를 실행시키는 태스크와 그 밑의 코드를 실행시키는 주체는 서로 다른 태스크가 된다.
이런 코드상으로 드러나지 않는 특성들이 컨텍스트 스위칭이라는 개념을 어렵게 만든다
이클립스 드디어껐구나....!!! - dc App
이클립스 vim 같이씀
당신 혹시 명문대생입니까? - dc App
a,b 라는 함수가 있으면 a 함수가 실행중이다가 갑자기 시그널에 의해서 b라는 함수가 실행되어야 할 때 메모리에 저장되어있던 a함수의 변수값은 안전하게 저장되고 b함수의 변수값으로 메모리 시점이 바뀌는걸 의미하는거냐?
컨텍스트 라는건 함수(코드)보다 상위의 개념임 a,b라는건 그냥 인스트럭션 포인터의 위치일 뿐이고 변수값의 정보를 안전하게 저장한다 라는건 사용중이던 스택의 현제위치를 기록하는 스택포인터 위치를 기억해놓는다는거임, 이런 인스트럭션 포인터 ,스택포인터를 포함한 모든 태스크의 실행정보를 저장하는 자료구조로 TCB가 있음