스케줄러는특정 시간에 실행해야하는 작업 결정에 대한 책임 커널의 일부입니다.커널은 작업 수명 동안 여러 번 작업을 일시 중단했다가 나중에 다시 시작할 수 있습니다.
스케줄링 정책은특정 시점에서 실행하는 작업을 결정하는 스케줄러에 의해 사용되는 알고리즘이다.(비실시간) 다중 사용자 시스템의 정책은 각 작업에 프로세서 시간의 "공정한" 비율을 허용할 가능성이 큽니다.실시간/임베디드 시스템에서 사용되는 정책은 후술한다.
커널에 의해 비자발적으로 일시 중단되는 것 외에도 작업은 스스로를 일시 중단하도록 선택할 수 있습니다.고정된 기간 동안지연(sleep)하거나리소스가 사용 가능하게 되거나(예: 직렬 포트) 이벤트가 발생할 때(예: 키 누름)대기(차단)하려는 경우 이 작업을 수행합니다.차단되거나 대기 중인 작업은 실행할 수 없으며 처리 시간이 할당되지 않습니다.
위 다이어그램의 숫자를 참조하면 다음과 같습니다.
(1)에서 작업 1이 실행 중입니다.
(2)에서 커널은 작업 1을 일시 중단(스왑 아웃)합니다 ...
... 그리고 (3)에서 작업 2를 재개합니다.
작업 2가 실행되는 동안(4), 자체 독점 액세스를 위해 프로세서 주변 장치를 잠급니다.
(5)에서 커널은 작업 2를 일시 중단합니다 ...
... 그리고 (6)에서 작업 3을 재개합니다.
작업 3은 동일한 프로세서 주변기기에 액세스하려고 시도하지만 잠긴 것으로 확인된 작업 3은 계속할 수 없으므로 (7)에서 자체적으로 일시 중단됩니다.
(8)에서 커널은 작업 1을 재개합니다.
등.
다음에 작업 2가 실행될 때(9) 프로세서 주변기기를 완료하고 잠금을 해제합니다.
다음에 작업 3이 실행될 때(10) 이제 프로세서 주변 장치에 액세스할 수 있고 이번에는 커널에 의해 일시 중단될 때까지 실행됩니다.
Hello world from Task-2 Task-2 Hello world fHello world from Task-1 Hello rom Task-2 Hello world from Task-2 Hello world froworld from Task-2 Hello world from Task-1 Hello wom Task-1 Hello world from Task-2 Hello world from rld from Task-2 Hello world from Task-1 Hello worlTask-1
systick 간격마다 cpu를 강제로 양도하고 넘겨줘서 printf출력이 뒤죽박죽 꼬였다.
freeRTOSConfig.h파일에서 #define configUSE_PREEMPTION 1 <-- 으로 변경 후 똑같이 Test했다.
3-2-2. non - Preemptive 결과
Hello world from Task-2 Hello world from Task-2 Hello world from Task-2 Hello world from Task-2 Hello world from Task-2 Hello world from Task-2 Hello world from Task-2
Hello world from Task-1 Hello world from Task-2 Hello world from Task-1 Hello world from Task-2 Hello world from Task-1 Hello world from Task-2 Hello world from Task-1 Hello world from Task-2 Hello world from Task-1 Hello world from Task-2 Hello world from Task-1 Hello world from Task-2 Hello world from Task-1 Hello world from Task-2 Hello world from Task-1 Hello world from Task-2 Hello world from Task-1 Hello world from Task-2 Hello world from Task-1 Hello world from Task-2
int main(void) { TaskHandle_t task1_handle; TaskHandle_t task2_handle; BaseType_t status;
HAL_Init(); SystemClock_Config(); MX_GPIO_Init();
status = xTaskCreate(task1_handler, "Task_1", 400, "Hello world from Task-",2,&task1_handle); configASSERT(status == pdPASS); //Task 생성 확인 status = xTaskCreate(task1_handler, "Task_2", 400, "Hello world from Task-",2,&task2_handle); configASSERT(status == pdPASS); //Task 생성 확인
현재 실행 중인 스레드의 하나 이상의 스레드 플래그가 신호를 받을 때까지 기다립니다. 새로운 기능.
이벤트 플래그
플래그를 사용하여 이벤트를 동기화하는 새 섹션.이벤트 플래그 및 스레드 플래그는 RTOS v1신호 이벤트를대체합니다.RTOS v1신호 이벤트에나열된 모든 기능은더 이상 사용되지 않습니다.더 이상 사용되지 않는 기능 목록은신호 이벤트를참조하세요.새 기능에 대한 자세한 내용은이벤트 플래그를참조하십시오.
콘덴서란 간단하게 전압을받아 충전을한후 전류를 밀어주는 작용을하며직류는 흐르지 못하게 하지만교류는 통하게 하며 용량이 클수록, 그리고주파수가 높을수록 잘 통하게 된다. 용량 단위는 F(패럿)이지만 그 단위가 너무 커서pF(피코),uF(마이크로)의 단위를 주로 쓴다.pF단위의 콘덴서는 세라믹 콘덴서, 적층 세라믹 콘덴서, 마이카 콘덴서가 있고음질은 마이카 콘덴서가 가장 좋다.nF(나노) 단위에서는 일반 필름 콘덴서가 주로 사용되며 재질에 따라 폴리에틸렌(스치롤 콘덴서),폴리프로필렌, 폴리카보네이트, 폴리에스텔(마일러콘덴서)로 나누어진다.
저항이란 말 그대로 전기의 흐름을 방해하는 부품입니다. 즉 전기의 흐름에 ‘저항(Resist)’한다는 의미에서 나온 단어입니다. 저항은 전기회로 안에서 전기의 흐름을 제한하여 회로 안에서의 전류(또는 전압)의 크기를 바꿉니다. 전류 또는 전압의 크기를 바꾼다는 말은 저항을 통과한 전기의 흐름에서 전압또는 전류의 크기가 바뀐다는 것을 의미합니다. 저항 자체가 제한하는 것은 전기의 흐름 즉, 전류이지만 그 결과로 저항을 통화하면 전압이 떨어지는 결과를 가져옵니다. 이때 저항과 전압과 전류의 관계는 가장 기본적인 전기 공식인 V=I x R로 표시할 수 있으며 저항의 크기 단위는 Ω으로 표시하고 오옴(ohm)으로 읽습니다. 실제 회로에서 사용되는 저항의 범위는 0Ω에서 수M(메가)Ω에 이르기까지 다양합니다.
2. 저항띠 읽기
저항띠 순서는 저항끝단에 가까운쪽이 첫뻔째순서이다 6Bans띠의경우 첫번째띠찾기가좀 어려울수있는데 자세히보면
어느한쪽이 끝단에 가깝다.
3.저항의 종류
저항의 종류는 칩저항,일반저항,와트저항,시멘트저항,어레이,가변저항등으로 나타낸다.
-칩저항: 칩저항은 W(와트)허용치,크기,오차를 보고 선정하는데 W는 1/8W,1/4W,1/2W로 나뉘어지고 길이로 판단한다
크기에 따른 종류로는 01005,0201,0402,0603,0805,1206,1210,1812,2010,2512로 나눈 inch별 수치와
0402, 0603,1005,1608,2012,3216,3225,4532,5025,6432로 나눈 mm별 수치가있다.