DevBook/컴퓨터 밑바닥의 비밀
-
[컴퓨터 밑바닥의 비밀] 3.3 스택 영역: 함수 호출은 어떻게 구현될까?DevBook/컴퓨터 밑바닥의 비밀 2025. 3. 9. 17:30
스택 프레임 및 스택 영역프로세스의 스택 영역에 스택 프레임(호출 스택)이 생성됨프로세스의 스택 영역의 높은 주소가 맨 위에 있고 스택 영역은 낮은 주소 방향을 커짐스택 영역이 차지하는 메모리는 함수 호출 깊이에 따라 증가하고 함수 호출이 완료될수록 감소함 함수 점프와 반환은 어떻게 구현될까?함수 A가 함수 B를 호출하면, 제어권이 함수 A -> 함수 B로 옮겨짐제어권: 실제로 CPU가 어떤 함수에 속하는 기계 명령어를 실행하는지제어권이 이전될 때는 다음 두 가지 정보가 필요함반환(return): 어디에서 왔는지에 대한 정보 (다시 돌아갈 정보)점프(jump): 어디로 가는지에 대한 정보함수 A가 함수 B를 호출할 때 알아야 하는 정보함수 A의 기계 명령어가 어디까지 실행되었는지(어디에서 왔는지)함수 B..
-
[컴퓨터 밑바닥의 비밀] 2.7 블로킹과 논블로킹DevBook/컴퓨터 밑바닥의 비밀 2025. 3. 2. 16:11
들어가기 전에동기, 비동기를 이야기할 때 항상 두 가지 대상을 언급한다.프로그래밍에서는 서로 상호 작용하는 모듈 두 개 또는 함수를 의미한다. 1) 동기A와 B 두 대상이 강하게 결합된 것을 의미함위와 같이 작업 A가 작업 B에 의존하는 경우 A와 B는 동기 2) 비동기A와 B가 강한 결합과 같은 제약 없이 각자 자신의 작업을 독립적으로 실행할 수 있는 경우 A와 B는 비동기 더보기동기 방식정의작업이 순차적으로 실행되는 것한 작업이 시작되면 해당 작업이 완료될 때까지 다른 작업은 기다려야 한다.장점간단하고 직관적임단점작업의 완료를 기다려야 하므로 처리 성능에 영향을 줄 수 있음한 작업이 지연되면 다른 작업에도 영향을 줌비동기 방식정의작업이 독립적으로 실행되는 것작업의 완료 여부를 기다리지 않고 다른 작업..
-
[컴퓨터 밑바닥의 비밀] 2.3 스레드 안전 코드DevBook/컴퓨터 밑바닥의 비밀 2025. 3. 1. 23:27
2.3.1 자유와 제약스레드 안전을 달성하는 2가지 조건전용 리소스를 사용하는 스레드는 스레드 안전을 달성할 수 있다.함수의 지역 변수, 스레드 전용 저장소 등공유 리소스를 사용하는 스레드는 다른 스레드에 영향을 주지 않도록 하는 대기 제약 조건에 맞게 공유 리소스를 사용하면 스레드 안정을 달성할 수 있다. 2.3.2 스레드 안전이란 무엇일까?코드가 스레드 몇 개에서 호출되든 이 스레드들이 어떤 순서로 호출되든 간에 상관없이 올바른 결과가 나온다면, 이 코드를 '스레드 안전'이라고 말함스레드의 전용 리소스와 공유 리소스에 어떤 것들이 있는지 파악해야 함 2.3.3 스레드 전용 리소스와 공유 리소스스레드 전용 리소스함수의 지역 변수, 스레드의 스택 영역, 스레드 전용 저장소스레드 공유 리소스 (전용 리소스..
-
[컴퓨터 밑바닥의 비밀] 2.2 스레드 간 공유되는 프로세스 리소스DevBook/컴퓨터 밑바닥의 비밀 2025. 3. 1. 21:35
2.2.1 스레드 전용 리소스상태 변화 관점에서 보면 스레드는 '함수 실행'임함수 실행에는 항상 하나의 시작점이 존재하고, 이 시작점이 진입 함수임CPU는 하나의 진입 함수의 명령어를 실행하여 실행 흐름인 스레드를 생성함 Q. 함수 실행에는 어떤 종류의 정보가 존재할까?함수의 실행 시간 정보는 스택 영역을 구성하는 스택 프레임에 저장됨스택 프레임에는 함수의 반환값, 다른 함수를 호출할 때 전달되는 매개변수, 함수 내에서 사용되는 지역 변수, 레지스터 정보가 저장됨각 스레드는 자신만 사용할 수 있는 스택 영역을 가짐 Q. 스레드 전용 리소스는 어떤 것일까?스레드에 속한 스택 영역, PC 레지스터(프로그램 카운터), 스택 포인터, 함수 실행 시 사용되는 레지스터 정보가 모두 스레드 전용PC 레지스터 : 다음..