728x90
Task라는 말이 나왔으니, Thread와 Process라는 말도 같이 언급하는 게 좋을 것 같네요. 아~주 헷갈리는 말이지요.
Embedded System에서 Task는 Scheduling (비스므리한 의미로 Context Switching)의 기본 단위를 말하고요. Task 단위로 일을 나누어 System을 만드는 게 기본이랍니다. 그런데, 자주 Thread라는 말이라든가 Process라는 말이 자꾸 나와서 헷갈리게 하는데요.
Task = Process + Thread 라고 봐야 할 듯합니다. - 사실 이 말도 애매모호 하긴 하네요 -
아 좋은 표현이 생각 났어요. Task ∋ Process, Task ∋ Thread 가 더 맞겠네요.
다시말해!! Task는 Process로 구현되거나, Thread로 구현된다는 말이에요.
중요한 건 Process와 Thread는 Scheduling (Context Switching)의 기본 단위임에는 틀림이 없구요, 다만 Process는 자신 만의 공유한 Memory Space를 할당 받아서 Process끼리는 Memory 공간이 분리되어 있어서 서로 다른 Process끼리는 특별한 방법을 이용하지 않고는 Data 공유가 되지 않아요.
하지만, Thread는 다르답니다. Thread는 모든 주소 공간이 공유가 되고요, 어렵지 않게 다른 Thread의 주소 공간을 자유자재로 넘나 들 수 있어요. 기냥~ 마구 갖다 쓰는 거죠. 그래서 전역 변수 공유 문제가 발생하곤 한답니다. 주의를 기울여야 한다구요.
보통 Process가 자신의 Memory Space에서 다른 Scheduling의 단위인 Thread를 만들어 내는데, 이런 경우에는 어미 Process 자신도 자식과 주소 공간을 공유하니까, 자식의 입장에서 봤을 때 다~같이 Thread가 되는거죠. - 다른 Process가 보았을 때는 엄연한 Prcoess 이지만요 -
이건 Linux의 예 이었고요,
보통의 Embedded System에서는 Thread로 Task를 구현하는 일이 많아요. 그러다 보니까 모든 주소 공간을 모두 공유할 수 있는거에요. 예를 들어, 전역변수를 들자면, Thread들 끼리는 전역변수를 특별한 방법을 사용하지 않고도 직접 Access가 가능합니다만, Process의 경우에는 다른 Process에서 사용하고 있는 전역변수에 Access하기 위해서는 System call같은 특수한 interface를 이용해서 접근해야 하는 거죠.
그러니까 Task의 구현 방법으로는 Process인 거냐, Thread 인거냐로 나눌 수 있다고 봐야 하겠지요. 냠냠.
(추가1)
위 내용의 출처는 아래에 있습니다.
http://recipes.egloos.com/5076229
그럼,
공유합니다.
728x90
'개발 이야기' 카테고리의 다른 글
어셈블리 언어의 창시자 캐이틀린 부스 사망 (0) | 2022.11.01 |
---|---|
오픈소스 컨트리뷰톤 (0) | 2022.10.07 |
프로세스와 스레드의 차이 (0) | 2022.09.26 |
C & C++C언어 실수 자료형 정리 : float, double, long double, 부동소수점 (0) | 2022.09.16 |
AMI BIOS 업데이트 방법 (0) | 2022.09.02 |