Task?
- 사전적 정의
task [tæsk, tɑːsk] n.
① (일정한
기간에 완수해야 할) 일, 임무; 작업, 사업; 과업.
②
노역, 고된[어려운, 불쾌한] 일.
③ 〖컴퓨터〗 작업(컴퓨터로 처리되는 일의
최소단위).
- 리눅스에서는... 태스크 = 자원소유권의 단위
*리눅스에서의 태스크, 프로세스, 쓰레드, 프로그램의 차이?
태스크:자원소유권의 단위 / 쓰레드:수행의 단위 / 프로세스:동작중인 프로그램 / 프로그램:디스크에 저장되어 있는 실행가능한 형태의 파일
하나의 프로세스에는 하나 혹은 여러개의 쓰레드가 포함될 수 있다. 각 쓰레드는 수행을 위해 자원소유권을 가져야 한다.
즉, 각 쓰레드가 하나의 테스크를 갖는다 볼 수 있다.
Process?
- 동작중인 프로그램
- 커널로부터 자신만의 자원을 할당받음.
*(총 4GB 크기의 가상메모리 공간. 0~3GB는 사용자 영역, 3~4GB는 커널 영역)
- 하위주소(0GB) ~ 상위주소에 차례로 , text, data, heap 영역이 위치하며, 3GB 부터 부터 하위주소 방향으로 stack
영역이 위치한다.
*text : CPU에서 수행되는 명령어들 data : 전역변수 heap : 메모리의 동적할당 영역(malloc 등) stack : 함수, 지역변수등을 저장
- 프로세스의 생성 : fork(), vfork()
- fork()로 인해 생성된 자식 프로세스는 자원을 새로이 할당 받는다. 즉, 부모 프로세스와 자원을 공유하지 않는다.
*사실 수행중에 자식 프로세스의 내용이 변하지 않는 동안은 부모 프로세스와 자원을 공유한다. 이를 COW(Copy on Write)라 한다.
또한 수행되는 동안 변하지 않는 text 영역은 공유를 한다.
Thread?
- 수행의 단위 혹은 제어의 흐름(flow of control)
- 쓰레드의 생성 : clone(), pthread()
- 자식 쓰레드는 부모 쓰레드의 자원을 공유함.
*자식 쓰레드들과 부모 쓰레드간에 모두가 자원을 공유하기 때문에 어느 한 쓰레드에서 메모리의 내용을 변경하게 된다면 이는 모든 쓰레드에
영향을 미치게 된다.
원문 : http://www.cyworld.com/mjcblog/2819532
----------------------------------------------
간혹 아무렇지 않게 자주 사용한것들의 정의를 생각하면 아리까리 할때가 있다. ^^;;;
이번 스터디에서 GCD에 대한 발표를 할려고 정리하면서
참고를 해봤다.
'TIP-맥OS' 카테고리의 다른 글
mac OS에서 eclipse(android studio)로 LG G3에 빌드하기 (맥과 호환되지 않는 안드로이드폰도 참고) (0) | 2016.11.07 |
---|---|
mac OS에서 Mysql 데이타베이스 생성 , 계정추가 및 접근 권한 만들기 (root 패스워드 변경포함) (0) | 2016.11.02 |
Xcode개발시 static fat library 컴파일코드 종류 확인하기 (macOS, iOS) (0) | 2016.10.28 |
맥OS USB하드에 백업하기 및 백업한 하드에서 부팅하기 (0) | 2011.01.13 |
맥 OSX에서 아이폰 이미지 수동으로 가져오기 (0) | 2010.05.09 |