0. 프로세스 부분을 끝낸 기념으로...
- 컴퓨터 시스템은 다음과 같이 이루어져 있다.
- Windows나 Mac과 같은 시스템 SW 또는 OS를 만드는 사람을 시스템 엔지니어라고 부른다.
- 시스템 엔지니어가 만든 함수(api, library, etc)의 사용법을 익히고 응용하는 것이 응용 프로그래머다.
- 시스템 엔지니어가 만든 함수를 익히는 대표적인 방법 중 하나가 python이나 java같은 언어를 배우는 것이다.
- 좋은 개발자가 되기 위해서는 응용 프로그램의 영역뿐만 아니라 시스템 영역을 아는 것이 핵심이다.
- 모든것을 한번에 완벽히 이해하기는 힘들지만, 좋은 개발자가 되기 위한 밑거름을 만들고 있다고 생각하자.
1. Thread 개념
- 스레드는 다른 이름으로 Light Weight Process 라고도 한다.
- 이 이름처럼, 프로세스지만 기존의 프로세스 보다 가벼운 느낌이라고 이해하면 좋을 것 같다.
- 프로세스 내부에 존재하며 프로세스의 작업을 수행하는 역할을 한다.
- 스레드는 하나의 프로세스 안에 여러개를 생성할 수 있다.
- 스레드는 동시에 실행이 가능하며, 하나의 프로세스 안에 있기 때문에 프로세스 내부의 스레드간 데이터 접근이 가능하다.
- 즉, IPC를 사용할 필요가 없다.
a) Thread의 구조와 동작
- 그림에는 Stack에 스레드가 위치한 것처럼 보이지만, 사실 스레드는 Heap과 Stack 사이의 공간에 있다.
- 스레드는 Stack으로 구현되어 있으며, 각 스레드마다 SP와 PC를 갖고있다.
- 이해가 쉽도록 돕자면, 간단하게 Stack에 할당되어 있는 함수영역처럼 동작한다고 말할 수 있다.
- 각 스레드는 할당된 영역을 갖고 있으나, 나머지 메모리(Heap, Data, Code)영역은 공유한다.
- 스레드는 한 프로세스의 메모리 영역을 공유하기 때문에, IPC 없이 스레드간 데이터 접근이 가능하다.
b) 프로세스와 스레드의 구조적 차이
c) 다중 스레드(Multi Thread)의 구조
d) 멀티 프로세싱과 스레드
- 멀티 테스킹(Multi Tasking): 하나의 CPU를 활용하여 여러개의 프로세스를 처리하는 것
- 멀티 프로세싱(Multi Processing): 여러 CPU를 활용하여 하나 이상의 프로세스를 병렬처리하여 실행 및 처리 속도를 높이는 것
- 멀티 테스킹은 Context Switching 기법을 사용하여 구현할 수 있다.
- 멀티 프로세싱은 하나의 프로세스를 병렬처리 하는 것인데, 이를 위해서는 프로세스를 여러개로 쪼개야 한다.
- 여기서 스레드의 역할이 필요한 것이다. 하나의 프로세스에 여러개의 스레드를 생성하면 멀티 프로세싱이 가능하다.
- 최근 CPU는 멀티코어를 가지고 있다. 스레드는 멀티코어의 활용도를 높이기에 가장 좋은 방법이다.
e) 운영체제의 구조에 따른 스레드 활용
- 운영체제를 어떻게 만드냐에 따라 다음과 같은 종류의 처리구조를 갖는다.
- 요즘 운영체제는 멀티 프로세싱을 지원하는 구조를 갖는다.
'컴퓨터공학기초 개념 > 운영체제' 카테고리의 다른 글
26. 스레드(Thread) - 동기화(Synchronization) (0) | 2021.05.11 |
---|---|
25. 스레드의 장단점 (0) | 2021.05.04 |
23. 코드를 통한 프로세스 실행과정의 이해 (0) | 2021.04.28 |
22. 프로세스 - IPC 기법(signal, socket) (0) | 2021.04.27 |
21. 프로세스 - IPC기법(공유메모리) (0) | 2021.04.26 |
댓글