SW/OS 4

FreeRTOS Porting

FreeRTOS의 폴더 구조 FreeRTOS 디렉토리의 c파일은 hardware Dependency가 없는 부분으로, 이곳에 freertos_test() 라는 운영체제를 정의하여 실행이 되게 한다. portable 폴더의 port와 heap은 HW Dependency가 있기 때문에 이를 수정해 주어야 한다. vPortSVCHandler 스케줄링 시작할 때 최초로 한 번만 호출된다. vPortPendSVHandler 실질적인 스케줄링이 수행되는 함수이며, 이 함수가 실행되면 무조건 다른태스크가 실행이 되게 된다. xPortSysTickHandler 운영체제에서 관리하는 타이머 핸들러 함수로, 매 tick마다 인터럽트로 호출되게 된다. void SysTick_Handler(void) { gTickCount ..

SW/OS 2024.02.04

RTOS 개론

운영체제란? 컴퓨터의 입출력에 대한 기본 기능을 지원하고 컴퓨터에서 동작되는 프로그램 관리 및 서비스를 제공한다. 운영체제를 사용하면 TASK가 많은 프로그램을 개발할때 쉬워지며 효과적으로 프로그램을 관리할 수 있다. 또한 멀티태스킹을 지원하기 때문에 다양한 프로그램을 실행할 수 있다. 단점으로는 S/W overhead 증가로 수행속도 영향이 있을 수 있다. 멀티태스킹이 수행되면 다른태스크로 전환되는 지점에서 scheduling과 context switching이 진행된다. 현재까지 하고 있던 태스크의 과정을 저장하고, 다음태스크의 순서를 정하는 것이다. 하지만 이러한 연산이 추가되는 것이기 때문에 task가 별로 없는 프로그램을 수행할 때는 rtos보다 펌웨어가 속도적인 부분에서 이득이 될 수 있다. ..

SW/OS 2024.01.28

세마포어, 뮤텍스

멀티프로세싱이 발전하게 되면서 공유자원 관리라는 큰 문제점이 발생한다. 예를 들어 전역변수 a가 있다고 가정하자. 프로세서 1은 a++;를 수행하고, 프로세서 2는 a--;를 수행한다고 생각해 보자. RISC계열 프로세서에서 이 명령어는 어셈블리어 3줄로 표현 가능하다. lw x9, 0(x22) addi x9, x9, 1 sw x9, 0(x22) 이렇게 폰노이만 구조나 하버드구조에서는 연산을 진행할 때 메모리의 주소에 접근하여 레지스터에 복사한 후, 연산을 완료하고 다시 메모리에 업로드 하는 과정이 진행된다. 하지만 이 3개의 연산이 완료되기 전에 프로세서 2의 작업이 수행된다고 하면, 레지스터 x9에 더하기연산한 값이 잘 들어가지 않은 상태에서 빼기 연산을 진행하는 것이고 이는 큰 오류를 발생시킬 것이..

SW/OS 2024.01.28

멀티태스킹, 멀티스레딩, 멀티프로세싱

멀티태스킹 다수의 작업(TASK)들을 운영체제가 스케줄링을 통하여 번갈아가면서 수행하도록 하는것. 최초의 컴퓨터는 (싱글코어) 한번에 한 작업만 진행할 수 있었기 때문에 어떤 작업이 실행되고 있으면 다른 작업을 실행을 할 수 없었다. 하지만 멀티태스킹의 개발로 여러가지 일을 동시에 돌릴 수 있게 되었는데, 이는 프로세스 스케줄링 덕분이다. 아주 짧은 시간으로 일을 할 수 있는 영역의 시간을 나누어 놓고 우선순위에 기반하여 여러가지 TASK를 실행하는 것이다. 멀티스레딩 한 프로세스 내에서 여러개의 스레드를 동시에 수행하는 것을 의미한다. 하나의 프로그램 내에서 동시에 여러 개의 일을 수행할 수 있도록 해준다. 멀티프로세싱 여러개의 프로세서가 협력적으로 일을 하는 것을 말한다. 예를 들어 라즈베리파이4 모..

SW/OS 2024.01.28