Process, Thread를 이해하기 위해 개념만 정리하고자 한다.
1. Process
Process는 운영체제(os)에서 실행중인 프로그램을 의미하며 자원을 할당받는 작업 단위를 의미한다. Process는 어떤 프로그램을 실행하기 위해 메모리 자원, cpu를 할당 받는데 이 과정은 상대적으로 많은 시간과 자원을 사용한다. 또한 각각의 프로세스는 각자 다른 메모리 공간(Heap, Stack, Code)를 가지며, 다른 프로세스의 메모리 공간 접근을 제한한다.
2. Thread
Thread는 Process가 할당받은 자원을 이용하는 실행 단위이다. 하나의 Process는 여러개의 Thread로 구성이 가능하며, 같은 Process안의 Thread들은 할당받은 자원(메모리에서 Heap, Code, Data 등)을 공유하고, 각각의 Stack, Register를 가진다. 때문에 Heap 메모리를 서로 읽고 쓸 수 있으며, 각 Stack에 함수 호출 시 전달되는 인자, 주소값, 로컬 변수 등을 저장하기 때문에 Thread별로 독립적인 함수 호출이 가능한다.
Thread는 프로세스 내에서 병렬로 실행중인 하위 코드 집합이며 모든 Thread는 메인 Thread에서만 만들어야 한다. 다른 Thread가 공유 데이터에 접근하는 것을 막고 싶으면 Lock을 걸고, 해당 과정이 끝나면 Unlock을 해주면 된다.
[참고자료]
728x90
'개발' 카테고리의 다른 글
[sar] ubuntu로 시스템 stat 찍기 (0) | 2023.03.21 |
---|---|
[git] add, commit, pull, merge 취소하기 (0) | 2022.07.29 |
[ubuntu] tar 명령어 (0) | 2022.07.08 |
[Miniconda] 가상환경 명령어 (0) | 2022.01.18 |
[FTP] 리눅스 shell script로 FPT 사용하기 (0) | 2021.09.23 |