분류 전체보기(638)
-
C++ STL: 7장 - STL과 멀티스레딩 활용
7.1 C++과 멀티스레딩 개요C++11부터 표준 라이브러리에서 멀티스레딩 지원이 강화되었습니다. STL은 멀티스레딩을 직접적으로 지원하지는 않지만, C++ 표준 스레딩 라이브러리(, , 등)와 함께 사용하여 멀티스레딩 환경에서 STL 컨테이너와 알고리즘을 효과적으로 활용할 수 있습니다.7.2 STL 컨테이너와 멀티스레딩7.2.1 컨테이너의 스레드 안전성STL 컨테이너는 기본적으로 스레드 안전하지 않습니다.단일 스레드에서 사용하거나, 여러 스레드가 컨테이너에 읽기만 수행할 때는 안전합니다.쓰기 작업이 포함된 경우, 동기화(std::mutex)가 필요합니다.7.2.2 컨테이너 동기화 기법뮤텍스 사용: 스레드 간 동기화를 위해 std::mutex를 사용하여 데이터 접근을 제어합니다.예제:#include #..
2025.02.26 -
C++ STL: 6장 - STL 컨테이너 성능 비교와 활용 사례
6.1 STL 컨테이너 성능 비교STL에서 제공하는 다양한 컨테이너는 각기 다른 데이터 구조와 알고리즘에 기반을 두고 설계되었기 때문에, 성능이 작업 유형과 데이터의 크기에 따라 크게 달라질 수 있습니다. 이 장에서는 주요 STL 컨테이너 간의 성능 차이를 이해하고, 각각의 컨테이너가 적합한 상황을 설명합니다.6.1.1 순차 컨테이너 성능 비교 컨테이너 삽입/삭제 (중간)삽입/삭제 (끝)검색임의 접근std::vector느림 (O(n))평균 O(1), 최악 O(n)느림 (O(n))빠름 (O(1))std::deque느림 (O(n))빠름 (O(1))느림 (O(n))빠름 (O(1))std::list빠름 (O(1))빠름 (O(1))느림 (O(n))불가능std::array고정 크기고정 크기느림 (O(n))빠름 (O..
2025.02.26 -
C++ STL: 5장 - STL과 메모리 관리
5.1 메모리 관리의 기본STL은 효율적인 메모리 관리를 위해 std::allocator를 기본 메모리 할당자로 사용합니다. 컨테이너들은 이를 통해 자동으로 메모리를 할당하고 해제하며, 개발자가 직접 메모리를 관리할 필요가 없습니다.5.2 메모리 관리 방식5.2.1 동적 메모리 관리#include #include int main() { std::vector numbers; // 미리 메모리 할당 numbers.reserve(10); for (int i = 0; i 5.2.2 자동 메모리 해제void example() { std::vector numbers = {1, 2, 3}; // 함수 종료 시 자동으로 메모리 해제}5.3 사용자 정의 메모리 할당자STL은 기본적으로 s..
2025.02.26 -
U-Boot 포팅 (6. U-Boot 기능 확장 및 디바이스 드라이버 추가 / 새로운 디바이스 추가하기 (UART, I2C, SPI, GPIO 설정))
새로운 디바이스 추가하기 (UART, I2C, SPI, GPIO 설정)임베디드 시스템에서 U-Boot는 각종 디바이스(UART, I2C, SPI, GPIO)를 초기화하고 운영체제로 넘기는 역할을 합니다.새로운 보드에 추가적인 하드웨어(UART, I2C, SPI, GPIO)를 지원하려면 디바이스 트리(DTS), 드라이버 설정, 초기화 코드 수정이 필요합니다.이 문서에서는 UART, I2C, SPI 디바이스 추가 및 GPIO 초기화 코드 작성 방법을 설명합니다.1. UART 추가하기UART(Universal Asynchronous Receiver-Transmitter)는 시리얼 통신을 담당하는 장치로, 부팅 로그 출력 및 디버깅에 필수적입니다.U-Boot에서 새로운 UART를 추가하려면 DTS, board/..
2025.02.26 -
U-Boot 포팅 (6. U-Boot 기능 확장 및 디바이스 드라이버 추가 / U-Boot 환경 변수 설정)
부팅 스크립트 및 자동 부팅U-Boot에서는 자동 부팅을 설정하여 지정된 저장 장치(SD 카드, eMMC) 또는 네트워크(TFTP, NFS)에서 커널을 로드하고 실행할 수 있습니다.이를 위해 bootcmd 환경 변수를 활용하여 부팅 스크립트를 구성할 수 있습니다.이 문서에서는 자동 부팅 설정, 네트워크 부팅(TFTP/NFS), SD 카드 및 eMMC 부팅 설정 방법을 설명합니다.1. bootcmd 환경 변수 설정하여 자동 부팅 구성🔹 bootcmd란?bootcmd는 U-Boot가 자동으로 실행할 부팅 명령어를 지정하는 환경 변수입니다.bootdelay 값이 0이 아닌 경우, 지정된 시간 동안 키 입력이 없으면 bootcmd가 실행됩니다.bootcmd는 저장 장치(eMMC, SD 카드) 또는 네트워크(T..
2025.02.26 -
U-Boot 포팅 (5. 디바이스 트리(DTS) 및 환경 변수 설정 / U-Boot 환경 변수 설정)
U-Boot 환경 변수 설정U-Boot 환경 변수(environment variables)는 부팅 과정에서 시스템 설정을 저장하고 관리하는 중요한 요소입니다.환경 변수는 부트 커맨드, 저장 장치, 네트워크 설정 등 다양한 시스템 정보를 포함하며, 저장 위치와 수정 방법을 이해하는 것이 중요합니다.이 문서에서는 환경 변수의 저장 방식, 수정 방법, fw_printenv 및 fw_setenv 명령어 사용법, u-boot.env 파일 생성 및 업데이트 방법을 설명합니다.1. 환경 변수 저장 위치🔹 환경 변수란?U-Boot 환경 변수는 부팅 과정에서 사용되는 설정 값을 저장하며, 주요 정보는 다음과 같습니다.✅ 부트 커맨드 (bootcmd)✅ 커널 명령어 인자 (bootargs)✅ 네트워크 설정 (ipaddr..
2025.02.26