CodeBottlehun's Web-Note. 79

[Concept] C vs C++ vs C#

C : Procedural Language (절차적 언어) - Concept 자체가 Programmer를 믿는 언어. C++ : C의 특성을 유지하면서 Object oriented 의 Concept까지 집어 넣었다. C에 비해 느슨하게 Coding 할 수 있게 끔 STL, Inline 함수, 자유로운 변수 선언 등의 여러 기능이 추가 되었다. C# : C를 계승한 C++과 달리 아예 처음부터 객체지향을 위해 새롭게 설계 된 언어. Pointer가 빠져있다. (Unsafe code를 이용해서 사용할 수는 있지만 기본적인 Concept에는 포인터가 빠져있다.) .Net Freamwork 에서 구동되기 때문에 Windows Application에 특화되어 있다. C ++ 로 Windows Applicaiton..

Programming/C & CPP 2021.10.13

Memory Fragmentation. 메모리 단편화

RAM에서 메모리의 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만, 할당(사용)이 불가능한 상태를 말한다. 이는 내부, 외부 2가지로 구분된다. Internal fragmentation. 내부 단편화 → 메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비되는 상황. *A App이 실행될 때 OS는 4kb를 할당했지만, 정작 프로그램은 1kb만 사용하고 있음. 이때 3kb 만큼의 내부 단편화가 발생 External Fragmentation. 외부 단편화 → 메모리가 할당되고 해제되는 작업이 반복될 때 작은 메모리가 중간중간 존재하는데, 이 사용하지 않는 메모리들이 여럿 존재하여 총 메모리 공간은 충분하지만 실제로 할당할 수 ..

False sharing. 거짓 공유

CPU 내부의 코어와 코어간의 메모리 정보가 공유되어 하드웨어 적으로 병목현상이 일어나는 것을 뜻한다. 일반적인 CPU는 L1, L2 캐쉬가 코어에 있고 L3는 외부에 나와 있다. L3 캐시는 메모리로부터 data를 받아오고, 해당 데이터를 L2 → L1 순으로 전달하게 된다. L1 cache는 long long num1 과 long long num2 가 있다. cache는 자주 사용하는 데이터를 메모리까지 가지 않고 메모리 보다 빠른 cache에 저장함으로서 좀 더 빠르게 데이터를 처리하려 한다. CPU는 cache 라인에 따라 64byte로 통째로 읽어온다. 64byte를 통째로 읽어오면 Core 1에는 num1과 num2가 있다. Core2에는 num2의 시작 위치부터 읽어 오고 64byte이내에 ..

Race condition. 경쟁 상태

공햑 분야에서 둘 이상의 입력 또는 조작의 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태를 말한다. 두 개 이상의 프로세스가 공통 자원을 concurrently(병행적으로) 읽거나 쓰는 동작을 할 때, 순서에 따라 결과가 같지 않고 달라지는 상황을 이야기한다. race는 뜻 그대로, 경쟁하는 상태이고, 두 개 이상의 쓰레드가 하나의 공유 자원을 놓고 서로 사용하기 위해 경쟁하는 상황을 말한다. https://ko.wikipedia.org/wiki/경쟁_상태 https://iredays.tistory.com/125

Cache line.

CPU가 메모리로부터 데이터를 가져올 때 바이트 단위가 아닌 Cache line을 가득 채울 만큼의 데이터를 가져오는 것을 말한다. 메모리의 페이징 기법과 비슷하고, CPU에 따라 32, 64, 128 byte 로 구성되며 해당 사이즈 경계로 정렬되어 있다. Cache line을 사용하는 이유는 일반적인 app의 경우 인접한 byte들을 사용하는 경우가 많기에 cpu의 메모리 접근 횟수를 줄여 성능을 향상 시키기 위함이다. Cache line은 성능의 향상을 위해 도입되었지만, 멀티 프로세서 환경에서는 문제가 될 여지가 있다. 다수의 CPU가 동일한 Cache line을 보유하고 있고, 그 중 하나의 CPU가 해당 Cache line을 수정한다면 다른 CPU들은 해당 Cache line의 갱신을 어떻게 ..

Architecture, Blueprint

시스템 목적을 달성하기 위해 시스템의 상호작용동의 시스템 디자인에 대한 제약 및 설계. 최적화를 목표로 두고 시스템 구성과 동작원리 그리고 시스템의 구성 환경 등을 설명 및 설계하는 청사진 또는 설계도. 컴퓨터 구조는 컴퓨터 공학에서 개념의 설계요인, 컴퓨터 시스템의 근간이 되는 운영 구조. 컴퓨터 시스템의 하드웨어 구조를 말하는데, 시스템을 구성하고 있는 하드웨어인 CPU, Register, 기억 장치 등에 대한 전반적인 기계적 구조와 이를 설계하는 방법. http://blog.naver.com/PostView.nhn?blogId=skytk123&logNo=120156946307

[ETC] attribute VS property

[ HTML : attribute와 property 의 차이 ] https://jeongwooahn.medium.com/html-attribute%EC%99%80-property-%EC%9D%98-%EC%B0%A8%EC%9D%B4-d3c172cebc41 attribute > HTML 요소의 추가적인 정보를 전달하고 이름="값" 이렇게 쌍으로 온다. 를 보면 div 태그가 class 라는 값이 'my-class'인 attribute를 가지고 있다. property > attribute에 대한 HTML DOM 트리안에서의 표현. 그래서 위의 Code를 예로 들면 attribute 값은 'my-class'이며, 'my-class'라는 class name을 가진 property를 가진다. 간편하게 정리하자면 A..

카테고리 없음 2021.10.13

[ES6] Class

기존 JS Code에서는 Class 표현식이 없기에 constructor 가 대신에 함수를 이용하여 prototype 객체에 할당하였다. prototype 객체는 new 연산자로 생성되는 객체 안에서 this 연산자의 함수 및 변수 선언 위치를 참조 할 수 있는 요소이다. function Shape (x,y) { this.name = 'Shape'; this.move(x,y); } //static 함수를 선언 Shape.create = function(x,y) { return new Shape(x,y); }; //Instance Func 선언 Shape.protype.move = function(x,y) { this.x = x; this.y = y; } Shape.prototype.area = funct..