프로세스와 스레드의 차이 ( Process VS Thread )

송해광·2022년 9월 26일
0

OS

목록 보기
1/8
post-thumbnail

프로그램 : 파일이 저장 장치에 저장되어 있지만 메모리에 올라가지 않은 정적인 상태

즉, 실행되지 않은 파일! 실행되지 않은 코드 덩어리!

프로그램을 "실행"하면 컴퓨터 메모리에 올라가고 "동적" 상태로 바뀌어 "프로세스"가 된다.

프로세스 : 실행되고 있는 프로그램

근데 프로그램이 복잡해지면서 프로세스 하나만으로 프로그램을 실행하기 힘들어졌다.

-> 해결법 : 프로그램을 여러 프로세스로 처리하면 되지 않을까?

이 방법은 불가능하다! Because) 운영체제는 안정성을 위해 프로세스마다 자신에게 할당된 메모리 내 정보에만 접근이 가능하며 다른 프로세스의 정보에는 접근이 불가능하다.

=> 데이터 접근이 가능한 프로세스보다 더 작은 단위가 필요한데? = "쓰레드"
쓰레드 = 프로세스 내 실행 단위

위 그림은 쓰레드의 메모리 영역을 나타낸 것이다. 위 그림처럼 쓰레드는 프로세스 내에서 Stack만 따로 할당받고 Code,Data,Heap 영역을 공유할 수 있다.


반면 프로세스는 각각의 프로세스마다 Code, Data, Heap, Stack 메모리 영역을 독립적으로 가지고 있다.
그렇다고 아예 접근할 수 없는 건 아닌데 프로세스 간 통신을 이용하면 된다. (ex. 파이프, 파일, 소켓 등등 )

참고자료 : https://velog.io/@raejoonee/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9D%98-%EC%B0%A8%EC%9D%B4
https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

profile
끝까지 해보고 하는 후회는 반성이 되어 앞을 보게 하지만 끝까지 하지 않고 하는 후회는 미련이 되어 뒤를 보게 한다.

0개의 댓글