목차
컴퓨터에서 처리를 할 경우 처리의 단위는 두 가지의 보는 법이 있다. 하나는 OS(오퍼레이팅 시스템)
에 외부에서 주어지는 일의 단위이며, 이것을 잡(job)이라 한다. 다른 쪽은 OS가 자원을 할당하여
처리를 할 경우의 일의 단위이며 이것을 태스크라고 한다. 태스크의 개념은 자원의 효율적 사용, 다중
처리에서의 스루풋의 향상을 도모하기 위해 생긴 것이며, 각 프로그램은 태스크를 거쳐서 컴퓨터 자원을
할당하여 주행하는 것으로 된다. 태스크에는 각종 상태가 있으며, 이들을 제어하는 프로그램을 태스크
관리 프로그램이라고 하고 OS의 주요기능의 하나이다.
- naver 지식백과 참조
아래 표에 나열된 루틴은 Task를 생성하기 위해 사용된다.
taskSpawn( )에서 인수들은 새로운 Task의 이름(ASCII문자열), Task의 우선권, "options" 워드, 스택 크기,
main루틴 주소 그리고 시동 파라미터로써 main루틴에 전달될 10개의 인수이다.
NOTE : "FUNCPTR" type 을 따라가보면 아래 그림과 같이 함수 포인터로 typedef되어있다.
taskSpawn( ) 루틴의 새로운 Task 문맥(context)를 만든다. 이것은 스택을 할당하고 명시된 인수들로
main루틴 (평범한 루틴)을 호출하기 위해서 Task환경을 설정하는 것을 포함한다.
새로운 Task는 명시된 루틴의 엔트리에서 실행을 시작한다.
Call | Description |
taskSpawn( ) | Spawns(creates and activates) a new task |
taskInit( ) | Initializes a new task |
taskActivate( ) | Activates an initialized task |
taskSpawn( ) 루틴은 할당, 초기화, 활성화에 대한 더 낮은 레벨의 스탭을 구체화한다. 초기화와 활성화
기능은 taskInit( ) 와 taskActivate( )로 제공된다. 그러나, 할당 또는 활성화 중에 더 많은 컨트롤을 필요로할
때만 이 루틴을 사용할 것을 권한다.
시스템 구성을 분해하여 분석하지 않고는 정확하게 얼마나 많은 스택 공간이 필요한지 아는 것은 어렵다.
스택 오버플로우 그리고, Task스택 손상을 피하게 하도록 다음의 접근법을 취할 수 있다.
처음에 스택을 할당할 때, 예상했던 것 보다 훨씬 크게 만든다. 예를 들어, 어플리케이션의 형태에 따라 20KB
100KB까지 그리고 나서 checkStack( )로 주기적으로 스택을 감시한다.
그리고 만약 작게 만드는 것이 안전하다면 크기를 수정한다.
Call | Description |
taskName( ) | Gets the task name associated with a task ID |
taskNameTold( ) | Looks up the task ID associated with a task name |
taskIdSelf( ) | Gets the caling task's ID |
taskIdVerlfy( ) | Verilfys the existence of specified task |
Task가 생성될 때, 아래 표에 나열된 하나 이상의 옵션 파라미터를 넘겨줄 수 있다. 결과는 명시된 옵션에서
논리 OR연산을 수행함으로써 결정된다.
Name | Hex Value | Description |
VX_FP_TASK | 0x0008 | Excutes with the flotion-point coprocessor. |
VX_NO_STACK_FILL | 0x0100 | Does not fill the stack with 0xee. |
VX_PRIVATE_ENV | 0x0080 | Executes a task with a private environment. |
VX_UNBREAKABLE | 0x0002 | Disables breakpoints for the task. |
VX_DSP_TASK | 0x0200 | 1 = DSP coprocessor support. |
VX_ALTIVEC_TASK | 0x0400 | 1 = ALTIVEC coprocessor support |
VxWorks (Task 생성 / RS232 통신 ) (0) | 2017.06.30 |
---|---|
VxWorks OS구성 / 개발 방법 (2) | 2017.06.30 |
VxWorks Workbench / 전기신호 강의 정리 (0) | 2017.06.30 |
VxWorks / SBC 강의 정리 (0) | 2017.06.30 |
Tornado Tutorial (0) | 2017.06.26 |