97, 1/5 회원가입  로그인  
   hackedby
   레지스터에 대해서....

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=67 [복사]


안녕하세요.
이제 막 리버싱을 배우기 시작한 초보입니다.
근데 리버싱 공부를 하다 보니 한가지 의문이 생겼습니다.
분명 cpu에 있는 레지스터의 수는 제한되어 있을텐데
어떻게 한꺼번에 여러개의 프로그램에서 하나의 레지스터를 사용할 수 있는건가요?
잘 이해가 안 됩니다.

  Hit : 3480     Date : 2013/10/01 07:52



    
cd80 시스템에서 프로세스들이 동작할때 동시에 동작할수 있는 프로세스 수는 cpu수와 같습니다
즉 멀티태스킹을 지원해도 싱글코어 시스템에서 한 순간에 동작하는 프로세스는 하나란 소린데
운영체제에선 이를 프로세스 스케쥴링으로 현재 프로세스 큐에 올라와있는 프로세스들을 번갈아가며 실행해주는데
이때 현재 동작하는 프로세스가 동작할땐 그 프로세스에서 사용하는 각각 레지스터들에 대한 값들을 레지스터에 집어넣고
다른 프로세스로 변환할땐 그 프로세스가 갖고있는 레지스터 구조체에 있는 레지스터들의 값을 실제 레지스터에 넣고 원래 동작중이던 프로세스의 레지스터값들은 백업해둡니다
2013/10/01  
$Zero 늦었지만 답변 남겨봅니다.

컨텍스트 스위칭에대해 알아보시면 궁금증이 말끔히 해결되실겁니다 .

컨텍스트란 스레드의 정보를 담는 구조체이며 API로 특정 스레드의 컨텍스트를 구할 수 있답니다.
2013/10/31  
MainThread 사실은 CPU는 한번에 하나의 프로그램 밖에 실행시키지 못합니다. 컨텍스트 스위칭이 일어나서 한번에 여러 프로그램을 실행시켜주는 것처럼 보이는 것일 뿐이지요.

From MainThread
2014/05/18