Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발계발

스레드 본문

OS

스레드

Ju_Nik_E 2024. 4. 3. 19:40
스레드란 실행의 단위로, 프로세스를 구헝하는 실행의 흐름 단위이다. 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며, 스레드를 이용하면 하나의 프로세스에서 여러 부분을 동시에 실행할 수 있게 된다.

-> 스레드라는 개념이 도입되기 전에는 모든 프로세스가 한 번에 하나의 작업만을 처리할 수 있었지만, 스레드 도입 후 하나의 프로세스가 한 번에 여러 일을 동시에 처리할 수 있게 됨(프로세스를 구성하는 여러 명령어를 동시에 실행 가능)

 

스레드는 위의 그림과 같이 한 프로세스 내에서 각기 다른 ID, 레지스터 값, 스택을 갖고 있기 때문에 각기 다른 코드를 실행할 수 있다.

-> *주의*: 각 스레드만의 독립적인 영역이 있는 것이 아니라, 프로세스의 자원을 공유한다.


멀티 프로세스 vs 멀티 스레드

여러 프로세스를 동시에 실행하는 것을 멀티 프로세스, 하나의 프로세스 안에서 여러 스레드를 동시에 실행하는 것을 멀티스레드라고 한다.

-> 제대로 된 차이점이 뭐냐..

ex) "Hello World!"를 출력하는 간단한 프로그램이 있다고 해보자. 사용자 원하는 작업은 이 문장을 3번 출력하는 것이다.

멀티프로세스의 경우

-> 해당 프로그램을 2번 fork하여 각각의 프로세스가 각자 독립적인 메모리를 차지하게 된다.(같은 작업인데 굳이?->메모리 낭비임)

멀티스레드의 경우

-> 해당 프로그램 내에서 같은 자원을 공유하기 때문에 하나의 메모리에서 같은 작업을 동시에 3개 실행시킬 수 있다.

 

멀티프로세스는 하나의 프로세스에 에러가 발생해도 나머지 2개의 프로세스는 정상작동하지만, 멀티스레드는 해당 프로세스에서 에러가 발생하면 모든 스레드가 영향을 받는다.

'OS' 카테고리의 다른 글

교착 상태  (0) 2024.04.06
동기화  (0) 2024.04.04
CPU 스케줄링  (1) 2024.04.03
프로세스  (2) 2024.04.03
운영체제란?  (1) 2024.03.27