Thread

mjdevv·2023년 12월 19일
0

운영체제

목록 보기
2/12

프로그램의 실행 단위. 아래 그림을 보자.

코드 영역에는 컴파일 된 실행 가능한 명령어들이 올라와 있다. 그리고 각 스레드들은 각각의 program counter와 stack pointer를 가지게 된다. pc는 현재 실행중인 명령어의 위치를 뜻하므로, 말 그대로 현재 스레드의 실행 흐름이 어디에 위치해 있는지에 대한 정보를 알려준다. 각 스레드는 현재 위치 pc에서 +1씩 더하면서, 같은 코드에서 서로 다른 실행 흐름을 가지게 됨. 정말 말 그대로 스레드는 하나의 프로세스에서 서로 다른 실행흐름의 단위라고 생각하면 된다.


Pros and Cons

같은 코드로 여러 처리를 해야 한다고 가정하자.

새로 프로세스를 만들면 메모리 낭비가 심하다. 위 그림의 왼쪽 메모리를 n개 할당하는 것보다, 스레드를 n개 만드는 게 훨씬 가벼움. 메모리적인 이점이 있다. 다만, 여러 스레드가 동시에 접근 하는 영역인 heap 등의 공통 영역에서 동시성 문제가 생기게 된다.

더 있을 거 같은데, 따로 더 정리하도록 하겠음.


REFERENCE

[1] https://www.youtube.com/watch?v=QmtYKZC0lMU

profile
방구석 언어기술자

0개의 댓글

관련 채용 정보