전체 글
-
[Zephyr] Workqueue공부/Embedded 2025. 1. 7. 00:40
https://academy.nordicsemi.com/courses/nrf-connect-sdk-fundamentals/lessons/lesson-7-multithreaded-applications/topic/exercise-3-7/ Exercise 3 - Nordic Developer AcademyWorkqueue creation and work item submission Since threads of higher priority have the ability to starve other low priority threads, it is good practice to offload all non-urgent execution in these threads into lower-priority thre..
-
[Zephyr] System Thread공부/Embedded 2025. 1. 7. 00:15
시스템 스레드는 커널이 시스템을 초기화하는 동안 자동으로 생성하는 스레드 메인 스레드커널 초기화를 수행한 다음, 애플리케이션의 main()함수를 호출한다. (main()이 정의 되어 있다면) 기본적으로 메인 스레드는 가장 높은 선점형 스레드 우선순위(우선순위:0)를 가진다.main()이 정의되지 않았거나, 실행한 다음 정상적인 반환을 수행하면 메인 스레드가 정상적으로 종료되고 오류가 발생하지 않는다. 유후 스레드시스템에서 할 다른 작업이 없을 때 실행된다.가능하다면 보드의 전원 관리 지원을 활성화하여 전원 절약을 돕거나, loop(아무것도 하지 않음)를 수행한다.시스템이 실행되는 동안 계속 존재하고 종료되지 않는다.항상 가장 낮은 스레드 우선순위를 사용한다.
-
[Zephyr] Thread공부/Embedded 2025. 1. 6. 01:10
Zephyr OS Docs를 읽고 적당히 메모하는 글... https://docs.zephyrproject.org/latest/kernel/services/threads/index.html Threads — Zephyr Project DocumentationA thread that has no factors that prevent its execution is deemed to be ready, and is eligible to be selected as the current thread. A thread that has one or more factors that prevent its execution is deemed to be unready, and cannot be selected as the ..
-
[백준] 12752번 - 도시들알고리즘/백준 2025. 1. 4. 23:31
문제https://www.acmicpc.net/problem/12752 풀이특별한 알고리즘은 없고, 단순 다익스트라 문제이다.많은 도시들이 있고 그 중 K(K 1. K = 1도로가 필요 없음 2. K = 2두 개의 도시를 연결하는 최소 비용을 구하면 된다. 간단하게 다익스트라 1번으로 구할 수 있다. 3. K = 3아래와 같은 경우들이 있을 수 있다. 각 점에서 출발해서 어떤 점에서 만난다고 생각하면 쉽다. K개의 도시(0, 1, 2 정점) N개의 정점에서 만나는 경우 중 비용 합의 최소 값을 구한다.A정점에서 만나는 경우: cost[0][A] + cost[1][A] + cost[2][A]B정점에서 만나는 경우: cost[0][B] + cost[1][B] + cost[2][B]... 4. K =..
-
[백준] 5670번 - 휴대폰 자판알고리즘/백준 2024. 12. 22. 04:30
문제https://www.acmicpc.net/problem/5670 풀이Trie: https://doraeul19.tistory.com/415전형적인 트라이 문제, 근데 입출력 형식이 여러개의 TC이므로 while(cin >> N)으로 입력받자Insert함수를 구현해서 트리를 잘 만들어주고, Find함수에서 자판을 눌러야하는 횟수를 더해가면 된다. 자판을 눌러야 하는 경우1. 맨 처음 글자: 첫 번째 글자는 무조건 눌러야 한다.2. 다른 문자열과 구분되지 않는 경우 - 현재 문자가 isEnd(다른 문자열의 끝인 경우) - 다음 문자로 올 수 있는 경우가 2개 이상인 경우 코드#include #include #include #include #include #include #include #in..
-
-
Trie 트라이알고리즘/Algorithm Theory 2024. 12. 21. 03:00
어떤 문자열이 어떤 문자열들의 집합에 속하는지 알아내기 위해 단순히 모두 비교할 경우O(문자열의 길이 x 문자열의 개수) 의 시간 복잡도를 가진다. 이 때 문자열을 효율적으로 저장하고 탐색하는 자료 구조가 Trie이다. 대충 O(N) 그냥 그림을 보면 이해가 쉽다. 아래와 같이 4개의 단어가 있다고 해보자. Trie 자료 구조에 각 단어를 담아보면 아래와 같다. 트라이 자료구조는 주어진 문자열에 대해 앞 문자부터 하나씩 노드를 생성하면서 만들어진다. Insert1. 문자열에서 현재 문자를 확인2. 현재 문자로 이루어진 노드가 존재한다면 → 그 노드를 탐색존재하지 않는다면 → 새 노드를 생성 Find1. 문자열에서 현재 문자를 확인2. 자식 노드가 현재 문자인 노드가 있는지 확인, 없다면 return..
-
C언어의 비트 필드공부/Embedded Recipe 2024. 12. 12. 23:52
비트 필드구조체 비트 필드를 사용하면 멤버를 비트 단위로 저장할 수 있다.CPU나 칩의 플래그, 그 외 Low Level 프로그래밍에서 자주 사용한다. 아래와 같은 코드를 실행 해보자.#include struct Flags { unsigned int a : 1; // a는 1비트 크기 unsigned int b : 3; // b는 3비트 크기 unsigned int c : 7;};int main(){ struct Flags f1; f1.a = 2; // 0000 0010 f1.b = 31; // 0001 1111 f1.c = 4; // 0000 0010 printf("%u\n", f1.a); //0 printf..