함수/메서드가 호출이 될때마다 메모리의 stack 영역에는 각 함수의 중간값들을 저장하기 위하여 stack frame이 생성이 된
다.
그리고 해당 함수/메서드가 종료가 되면 Frame Pointer를 사용하여 이전 함수/메서드로 실행의 흐름이 바뀐다.
JAVA, C++에서는
메서드가 호출이 될 때,
생성자가 호출이 될때,
THIS 포인터가 Stack Frame에 할당이 된다는 사실을 오늘 처음 알았기에 , 블로
그에 정리를 해 본다.
1. 생성자 호출


new Counter() 생성자도 메서드이기에 stack frame이 할당이 되고, this 레퍼런스가 만들어 지고 그 레퍼런스는 객체의 주
소를 가리키게 된다.
생성자의 실행이 종료되면, main 메서드의 stack frame의 c 레퍼런스에 this 값이 저장이 된다.
2. 메서드 호출
만약 main 메서드에서 객체 c의 메서드가 호출이 되면 stack frame은 어떻게 될까?
새로운 stack frame이 할당이 된 뒤, this라는 이름으로 객체를 가리키는 레퍼런스가 할당이 돼, 그 객체에 저장된 필드값들
을 가지고 메서드를 실행을 한다.
'CS 과목(CS科目) > 운영체제(OS)' 카테고리의 다른 글
스핀락(spinlock) 뮤텍스(mutex) 세마포(semaphore) (0) | 2022.12.23 |
---|---|
동기화(synchronization), 경쟁 조건(race condition), 임계 영역(critical section) (0) | 2022.12.23 |
cpu bound vs io bound (0) | 2022.12.20 |
Thread Context Switching vs Process Context Switching (0) | 2022.12.19 |
헷갈리는 개념들에 대한 정리(feat 프로세스, 스레드, 멀티태스킹, 멀티스레딩 etc) (0) | 2022.12.19 |