시작은 미미하나 끝은 쥬쥬하리라.

DevOps/Knowledge - CS 13

[CS] Big-O 표기법(Big-O Notation)과 표기법 간 비교

목차Big-O 표기법응용/심화요약1. Big-O 표기법동일한 문제라도 이를 해결하는 방법(알고리즘)에 따라 효율성이 다름.이 효율성을 비교하기 위해 시간 복잡도와 공간 복잡도를 측정. 시간 복잡도 : 입력값(n)의 크기에 따른 연산 횟수의 증가량.공간 복잡도 : 알고리즘 실행 시 사용하는 메모리의 양. Big-O데이터의 규모가 늘어나는 경우에도 잘 동작하는지를 결정하는 가장 객관적인 척도.데이터의 개수(n)이 늘어날 때, 연산 횟수나 메모리 사용량이 얼마나 급격하게 증가하는가를 나타내는 공식. 2. 응용/심화Big-O 복잡도별 비교O(1) : 상수 시간(Constant Time)데이터 1개 혹은 데이터 100만개에서 동일한 속도로 처리하는 최고로 효율적인 상태.ex) 배열에서 인덱스로 값을 탐색 -> ..

[CS] 데드밴드를 통한 알람 채터링(Alarm Chattering) 완화

목차데드밴드응용/심화요약1. 데드밴드(Deadband)데드밴드 : 출력 혹은 상태 변화를 읽으키지 않는 입력값의 범위. ex) 에어컨 설정 온도가 24도인 경우.온도가 24.0001도가 되는 순간 에어컨이 동작.온도가 23.999도가 되는 순간 에어컨이 꺼짐.-> 위 켜지고 꺼지는 동작이 무한 반복.-> 센서에서 들어오는 데이터는 완벽하지 않고 미세하게 떨리는 노이즈가 섞여있기 마련이기 때문에 발생. -> 위 상황에서 데드밴드의 역할 :설정 온도(24도)보다 0.5도 이상 높아질때만 동작하라는 불감대(데드밴드, 예시에서는 24~24.5도)를 설정하여 기계의 마모를 막고 에너지를 절감. 데드밴드의 두 가지 방식.(1) 아날로그 데드밴드(Value Deadband)ex) 수 만개의 태그 데이터가 실시간으로..

[CS] 캐시 메모리(Cache Memory)와 구조체 패딩/자료구조 간 관계

목차Cache응용/심화요약1. Cache캐시(Cache)일반적으로 캐시 메모리는 잠시 저장해두어 빠르게 접근 가능한 메모리를 의미.컴퓨터 구조에서 캐시 데이터는 CPU의 연산 속도와 RAM의 전송 속도 사이의 간극을 매우는 핵심 장치.-> 프로세서의 발전 속도를 메모리의 발전 속도가 따라가지 못하기 때문에 간극을 매우기 위한 효율적 사용의 방안.-> 메모리를 계층적으로 설계하여 특정 게층은 프로세서와 가깝게 위치시켜 RAM에 접근하지 않더라도 데이터를 읽어올 수 있게함. 캐시는 물리적으로는 CPU 패키지에 포함되어 있는 SRAM에 위치.-> 전기 신호가 CPU 밖으로 나가 RAM까지 갔다오는 시간 자체가 클럭 속도에 비하면 너무 느림.-> 트랜지스터 6개로 데이터 하나를 저장해 매우 빠르나, 고가이기 때..

[CS] 타이머 인터럽트(Timer Interrupt) / CPU 클럭 간 차이

목차CPU 클럭응용/심화요약1. CPU 클럭CPU 클럭메인보드의 수정 진동자(Oscillator)가 만들어내는 미세하고 빠른 전기적 신호.CPU의 주파수(Frequency)라고도 불리며 CPU가 초당 실행하는 사이클의 회수를 의미.-> 수정 진동자에게 전기를 걸면 일정하게 진동하는데, 이 진동을 증폭시켜 CPU에게 전달. 사이클(Cycle) : CPU 내부의 많은 트랜지스터가 한 단계의 동작을 수행하게 하는 최소 작업 단위.-> 클럭이 높을수록 연산 속도가 빨라짐. 클럭의 조절베이스 주파수(Base Frequency) :일반적인 상황에서 보장되는 기본 동작 속도. 최대 터보 주파수(Max Turbo Frequency) :고사양 작업 시 온도가 허용하는 범위 내에서 안전하게 끌어올리는 한계 속도. 오버클로..

[CS] 빌드 자동화 프로세스에서 .bat 파일 vs .ps1 파일 비교

목차batch 파일과 쉘 스크립트응용/심화요약1. batch 파일 vs 쉘 스크립트배치 파일배치 파일은 사용자의 개입 없이 정의된 순서대로 처리되는 명령 / 파일 리스트 데이터를 가진 파일.확장자 .bat이 사용되며 일반적으로 한 번에 여러 프로세스를 실행하거나 반복 작업을 수행하는데 사용. (CMD 환경에서 동작)-> 파일 확장자가 .bat이기만 하면 아무 텍스트 에디터나 사용해서 작성 가능. batch 파일 기본 문법@echo off : 명령어들이 화면에 표시되는 걸 끄고 결과만 보여줌.rem : 주석.set : 변수를 선언.pause : 명령이 끝나고 창이 바로 닫히지 않게 멈춰줌. ex) 배치 파일을 통한 CMake 예시.@echo offrem --- HMI 자동 빌드 스크립트 ---echo [..

[CS] 크로스 플랫폼과 CI 단계에서 관리 정책

목차크로스 플랫폼응용/심화요약1. 크로스 플랫폼기본적으로 크로스 플랫폼은 하나의 소스 코드로 여러 운영체제에서 동작하는 소프트웨어를 만드는 기술을 의미.-> 장점 : 시간 및 인적 비용을 절감할 수 있으며 유지 보수가 편하고, 장비의 확장성 등이 크로스 플랫폼을 사용하는 이유.-> 단점 : 여러 플랫폼을 동시에 충족 시켜야하므로 제약이 있으며, 소프트웨어 품질도 특정 플랫폼 특화 소프트웨어보다 낮음. 크로스 플랫폼 구현 방식(1) 네이티브 컴파일.코드를 작성하면 각 OS에 맞는 컴파일러가 OS 전용 네이티브어(기계어)로 직접 변환.ex) Qt (2) 하이브리드 / 웹 방식.웹 언어(JS / HTML)을 통한 어플리케이션 구현, 이후에는 브라우저가 환경에 맞게 디스플레이.ex) React Native (..

[CS] CMake vs qmake

목차CMake vs qmake응용/심화요약1. CMake vs qmake빌드빌드 과정은 전처리 -> 컴파일 -> 어셈블 -> 링크 과정을 빌더가 수행.일반적으로는 Windows에서는 MSBuild, 리눅스에서는 Make, Ninja는 ninja가 빌더.모든 IDE는 개별적인 프로젝트의 설계도 파일을 가지고 있음. ex) VSC : .vcsproj, RAD : .cbproj-> 해당 설계도 파일에는 사용자가 프로젝트 옵션에서 설정하는 include 경로 및 라이브러리 지정 등에 대한 정보가 기록.-> 이상 프로젝트 파일 혹은 메타데이타 파일. IDE에서 빌드를 하게되면 IDE는 빌드를 하는 빌더를 호출하면서 프로젝트 파일을 전달하고, 빌더는 해당 파일을 참고하여 빌드 과정을 수행. CMakeCMake는 빌..

[CS] json과 XML 뭐가 다를까 ?

json과 XMLjsonXML요약기본적으로 json과 XML 모두 데이터의 교환을 위한 형식으로 사용됩니다. 현재도 두 형식은 활발히 사용되고 있고 많은 사랑을 받지만 주요한 차이점과 장단점들이 존재합니다. XML은 오랜 기간 사용된 데이터 형식으로 아직도 많은 시스템에서 사용하고 있으며, json은 그 장점으로 최근 들어서 점점 XML을 대체해 가고 있는 데이터 형식입니다. json 개요텍스트 기반 데이터 교환 형식key value의 쌍으로 이루어진 객체 또는 배열로 표현각 key와 value는 문자열, 숫자, bool 타입, 배열, 객체 등 다양한 데이터 타입을 가질 수 있음일반적으로 Web에서 Client Server 간 데이터 교환에 사용 목적JavaScript에서 데이터를 쉽게 교환하고 저..

[CS] eMMC vs SSD

eMMC vs SSDeMMCSSDeMMC embedded Multi Media Card노트북, 태블릿, 스마트폰 및 기타 임베디드 시스템과 같은 전자 장치에 일반적으로 사용되는 전자 장치 유형 사양일반적으로 플래시 메모리와 컨트롤러를 단일 패키지에 결합한 소형 내장형 스토리지 솔루션-> 장치의 마더보드에 직접 납땜 되어 있음 성능eMMC의 성능은 장치의 전체 속도와 기능에 영향을 크게 받으며, 성능이 SSD에 비해 떨어지는 경향이 있음-> 보급형 등의 장비에 사용 내구성 및 수명eMMC의 저장소는 쓰기 및 읽기 작업의 전체 동작 횟수가 제한되어 있음-> 집중적인 Write 작업 시 저장소는 더 빨리 마모-> 스마트폰 혹은 태블릿 등의 가벼운 기기에 사용하는 경우에는 수명에 크게 영향 받지 않음 비용e..

[CS] 저레벨 언어 / 고레벨 언어 / 어셈블리어

고레벨 언어 / 저레벨 언어 / 어셈블리어고레벨 언어저레벨 언어어셈블리어고레벨 언어 High Level Programming Language, 사람이 이해하기 쉽게 작성된 프로그래밍 언어-> 컴퓨터 아키텍쳐의 세부사항을 숨기는 프로그래밍 언어-> 읽기, 쓰기 및 보수유지 난이도가 쉬운 편에 속함-> 변수, 함수 등과 같은 기능을 지원-> JIT(Just In Time) 컴파일러와 인터프리터에 의해 저레벨 언어(어셈블리어, 기계어)로 번역되어 실행-> 복잡한 컴파일 과정을 거치기 때문에 다소 실행속도가 느린 편ex) C언어, JAVA 등 저레벨 언어 Low Level Programming Language, 컴퓨터가 이해하기 쉽게 작성된 프로그래밍 언어-> 기계 코드, 하드웨어에 가까운 프로그래밍..

반응형