본문 바로가기
반응형

전체 글280

[FreeRTOS] Critical Section(임계 영역), 공유자원 보호하기 FreeRTOS에서 Critical Section(임계 영역), 공유자원 보호하기 임계 영역이란?2024.05.21 - [소프트웨어 공학 용어 정리] - [SW 용어] 동기화(Synchronization), 임계 영역(Critical Section) [SW 용어] 동기화(Synchronization), 임계 영역(Critical Section)동기화(Synchronization)1. 동기화는 시스템을 동시에 작동시키기 위해 여러 사건들을 조화시키는 것을 의미한다.2. 병행성과 관련해서 공유되는 자원에 대한 이해와 공유자원 사용과 관련해서 생길kfdd6630.tistory.com 임계 영역을 보호하는 4가지 방법1. 인터럽트 중단(taskENTER_CRITICAL(), taskEXIT_CRITICAL() .. 2024. 6. 10.
[Git/Github] Commit Message Convention naming Convention: 이름 짓는 약속예) camelCase(카멜 케이스), snake_case(스네이크 케이스), PascalCase(파스칼 케이스)Git Commit Message Convention위와 같이 이름을 짓는 약속을 하듯이 Commit message에 대한 약속이다.협업 시 필수적으로 알아야하는 내용이고 익숙해진다면 Git commit message 기록이 깨끗해지고 누가봐도 이해가 가능해질 수 있다.  Commit Meesage의 구조1. 제목1. 제목은 최대 50글자 넘지 않기2. 마침표 및 특수기호 사용하지 않음3. 첫 글자 대문자, 명령문 사용4. 개조식 구문으로 작성(간결하고 요점적인 서술)2. 본문 (생략 가능)1. 한 줄당 72자 내로 작성2. 최대한 상세히 작성3.. 2024. 6. 5.
[FreeRTOS] Task의 Stack 최적의 사이즈 설정 FreeRTOS에서 Task의 적절한 Stack Size 설정1. 작업은 xTaskCreate() 또는 xTaskCreateStatic() API 함수를 사용하여 생성할 수 있다.2. 함수의 usStackDepth 매개변수는 생성 중인 작업에 할당될 스택의 크기를 지정한다.  - 이떄 단위는 byte가 아니고 word이다.3. 필요한 스택 양은 다음 애플리케이션별 매개변수에 따라 달라진다.4. 스케줄러가 다른 작업을 실행하기 위해 작업 실행을 일시적으로 중지할 때마다 프로세서 컨텍스트가 작업 스택에 저장된다.5. 저장된 프로세서 컨텍스트는 다음에 작업이 실행될 때 작업 스택에서 제거된다.6. 프로세서 컨텍스트를 저장하는 데 필요한 스택 공간은 RTOS 자체에서 발생하는 작업의 스택 요구 사항에 추가되는 .. 2024. 5. 30.
[SW 용어] Bit, Byte, Word 정리 Bit1. Bit는 0 혹은 1을 표현한다.2. n개의 Bit는 2의 n승개(2^n)의 정보를 저장할 수 있다.3. 컴퓨터와 디지털 통신에서 가장 기본적인 정보단위이다.4. 이진숫자라는 Binary Digit이라는 수에서 유래되었다.5. Boolean을 사용하는 True, False는 1Bit를 사용한다. (0 or 1)6. 컴퓨터는 0이랑 1으로 계산한다는 말은 Bit로 계산하기 때문이다.Byte1. Byte는 8Bit이고 256(0~255, 2^8)개의 정보를 저장한다.2. 가장 일반적으로 8bit로 구성된 디지털 정보 단위이다.3. Byte는 컴퓨터에서 단일 문자를 인코딩하는데 사용되는 비트수였다.4. 인터넷 네트워크 프로토콜 문서의 Octet(옥텟)단위와 달랐었지만 점차 같은 의미로 사용한다.5... 2024. 5. 29.
[SW 용어] Mutex, Semaphore 정리 Mutex(뮤텍스)와 Semaphore(세마포어)1. 프로세스 간 메시지를 전송하거나, 공유메모리를 통해 공유된 자원에 여러 개의 프로세스가 동시에 접근할 때 필요한 임계 영역 문제가 발생할 수 있다.2. 이를 해결하기 위해 데이터를 한 번에 하나의 프로세스만 접근할 수 있도록 제한을 두는 동기화 방식을 취해야 한다.3. 동기화 도구에는 대표적으로 뮤텍스(Mutex)와 세마포어(Semaphore)가 있다.4. 이들은 모두 공유된 자원의 데이터를 여러 스레드/프로세스가 접근하는 것을 막는 역할을 한다.2024.05.21 - [소프트웨어 공학 용어 정리] - [SW 용어] 동기화(Synchronization) 정리 [SW 용어] 동기화(Synchronization), 임계 영역(Critical Section.. 2024. 5. 28.
[SW 용어] 데이터 무결성, 정합성, 정확성, 완전성, 일관성, 유효성 데이터 무결성1. 데이터의 정확성, 완전성, 일관성 및 유효성이 유지되는 특성을 말한다. 2. 데이터가 실제 현실을 정확하게 반영한다는 것을 의미한다.3. 오류나 무효한 값이 없으며 데이터가 개발자의 생각대로 유지되어야 한다. 데이터 정합성1. 데이터가 일관성 있게 유지되는 것을 의미한다.2. 데이터간 모순이나 중복이 없어야하고 데이터의 논리적 구조가 일관되어야 한다.공통점데이터의 신뢰성과 일관성을 보장하기 위한 기본조건이다.차이점무결성은 정확성, 완전성, 일관성, 유효성이 모두 유지되어 데이터가 올바르게 유지된 상태이다.정합성은 여러 데이터 간 일관성이 유지된 상태이다. 데이터 무결성이 유지된 상태라면 정합성은 유지된 상태이다.하지만 정합성이 유지되어도 무결성이 유지되지 않은 상태일 수 있다. 이는 아.. 2024. 5. 27.
[SW 용어] 동기화(Synchronization), 임계 영역(Critical Section) 동기화(Synchronization)1. 동기화는 시스템을 동시에 작동시키기 위해 여러 사건들을 조화시키는 것을 의미한다.2. 병행성과 관련해서 공유되는 자원에 대한 이해와 공유자원 사용과 관련해서 생길 수 있는 문제 상황이 발생한다.3. 동기화로 생길 수 있는 이슈가 있고 이를 해결할 수 있는 방법들이 있다. (교착상태, 뮤텍스, 세마포어 등)4. 동기화가 필요한 배경(병행성 & 병렬성)    - 멀티 프로세서 환경, 시분할 스케줄링은 곧 병행성과 병렬성을 의미한다.    - 현대의 운영체제는 병행성(운영체제에서의 시분할 스케줄링)와 병렬성(다중 코어)을 제공해주고 있다.    - 사용자는 많은 프로그램을 실행시키면서 동시에 프로그램이 동작하는 사용자 경험을 제공받는다. ※ 병행성(Concurrency.. 2024. 5. 22.
[SW 용어] Starvation 정리 Starvation(기아현상) 1. 특정 프로세스의 우선순위가 낮아서 원하는 자원을 계속 할당받지 못하는 상태이다.2. 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때 특정 프로세스는 영원히 자원 할당이 안 되는 경우를 주로 의미한다. 3. 여기서 자원할당이란 OS(운영체제)에서 스케줄링 기법에 의해 Running(실행)상태에 들어갈 수 있는 프로세스 처리시간을 포함한 모든 자원을 이야기한다.  Starvation 해결방법1. 우선순위 변경 알고리즘 사용한다.    - 우선순위를 수시로 변경해서 각 프로세스가 높은 우선순위를 가져 자원을 할당 받을 수 있게 한다.2. 오래 기다린 프로세스의 우선순위를 높여준다.    - Aging 기법: 나무가 나이가 들수록 나이테가 늘어나는 것처럼 우선순위를 높.. 2024. 5. 21.
[SW 용어] Deadlock 정리 Deadlock(교착상태)1. Deadlock이란 여러 프로세스 혹은 스레드가 일어날 수 없는 이벤트나 자원할당을 무한정 대기하는 것이다.2. 여러 프로세스가 동일 자원을 요청할 때 발생한다.3. 아래 4가지 조건이 성립될 때 발생한다. 상호 배제(Mutual exclusion): 매 순간 하나의 프로세스만이 독점적으로 자원 사용한다.비선점(Non-Preemption): 프로세스는 자원을 빼앗기지 않는다.점유대기(Hold & Wait): 자원을 가진 프로세스가 다른 자원을 기다릴 때 보유자원을 반환하지 않는다.순환대기(Circular wait): 자원을 기다리는 프로세스간 사이클이 형성되어 있다. (환형 - 뱀이 꼬리를 무는 형태)   Deadlock 해결방법Deadlock 예방(Deadlock Prev.. 2024. 5. 20.
[FreeRTOS] Task의 우선순위와 선점 FreeRTOS에서 Task의 우선순위와 선점, Task간 흐름제어1. 우선순위가 다를 때우선순위가 다른 두 Task를 만든다.우선순위의 숫자가 클 수록 더 우선순위가 높다.xTaskCreate((TaskFunction_t)Task1, "Task1", 128, NULL, 10, &xHandle1);xTaskCreate((TaskFunction_t)Task2, "Task2", 128, NULL, 9, &xHandle2 ); 알파벳 ‘a’를 1초마다 한 번씩 출력하는 우선순위 10의 Task1을 만든다.알파벳 ‘b’를 1초마다 한 번씩 출력하는 우선순위 9의 Task2를 만든다.Task1과 Task2의 vTaskDelay()를 주석처리 해보면서 두 Task가 어떻게 작동하는지 확인한다.  1. Task1, .. 2024. 5. 18.
반응형