컴퓨터과학/운영체제

[운영체제]스레드 추가내용

PureStack 2021. 11. 11. 01:28

Stack 영역을 스레드마다 독립적으로 할당하는 이유?

우선 스택 영역은 함수 호출 시 전달되는 인자, 복귀 주소값, 그리고 함수 내에서 사용되는 지역 변수 등을 저장하는 메모리 공간이다. Stack 메모리 공간이 독립적이라는 의미는 독립적인 함수 호출이 가능하다는 의미이며, 독립적인 실행 흐름이 추가된다는 것이다. 따라서 스레드의 정의에 의거하여 독립적인 실행 흐름을 추가하기 위해 최소한의 조건으로 독립된 Stack 영역을 할당하는 것이다.

 

PC register를 스레드마다 독립적으로 할당하는 이유?

PC 값은 스레드가 명령어를 어디까지 수행했는지를 나타낸다. 스레드는 CPU를 할당받았다가 Scheduler에 의해 다시 선점당하는데, 따라서 명령어가 연속적으로 수행되지 못하고 어느 부분까지 수행했는지 기억할 필요가 있다. 그러므로 PC register를 독립적으로 할당한다.

 

Thread-safe

멀티 스레드 환경에서 여러 스레드가 동시에 하나의 객체 및 변수에 접근할 때 의도한 대로 동작하는 것을 의미한다. 공유 자원에 접근하는 임계영역을 동기화 기법으로 제어한다. 이를 상호 배제라고도 한다.

 

Reentrant

재진입성. 어떤 함수가 Reentrant 하다는 의미는 여러 스레드가 동시에 접근해도 언제나 같은 실행 결과를 보장한다는 것을 의미한다.

 

 

참고자료

https://github.com/WooVictory/Ready-For-Tech-Interview/blob/master/Operating%20System/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80%20%EC%8A%A4%EB%A0%88%EB%93%9C.md

 

GitHub - WooVictory/Ready-For-Tech-Interview: 💻 신입 개발자로서 준비를 하기 위해 지식을 정리하는 공간

💻 신입 개발자로서 준비를 하기 위해 지식을 정리하는 공간 👨‍💻. Contribute to WooVictory/Ready-For-Tech-Interview development by creating an account on GitHub.

github.com