분류 전체보기 270

[CSAPP] Ch 3. 프로그램의 기계수준 표현 : (2) 프로그램의 인코딩

3.2  프로그램의 인코딩   GCC컴파일러를 통해 컴파일을 진행하면(커맨트 라인 옵션으로 -Og) 최적화 수준을 적용한다.  일반적으로 최적화 수준을 올리면 최종 프로그램은 더 빨리 동작하지만, 컴파일 시간이 증가하고 디버깅 도구를 실행하기 어려워질 위험이 있으며 만들어진 코드가 기존의 C코드에 비해 너무 많이 변경되어 본래 코드와 기계어 코드간의 관계를 이해하기 어렵게된다.   이러한 GCC 명령은 소스코드를 실행코드로 변환하기 위해 일련의 프로그램들을 호출한다. 앞서 1장에서 보았듯이, 전처리기, 컴파일러, 어셈블러, 링커까지 호출하게 된다.    3.2.1  기계수준 코드   컴퓨터 시스템은 보다 간단한 추상화 모델을 이용해서 세부구현내용은 감추며 추상화의 다른 형태를 사용하고 있다. 이들 중 "..

[CSAPP] Ch 3. 프로그램의 기계수준 표현 : (1) 역사적 관점

Ⅲ. 프로그램의 기계수준 표현   3.0  Intro   GNU GCC C 컴파일러는 어셈블리 코드의 형태로 출력을 만들어 프로그램의 각 인스트럭션을 만들어낸다.대개의 경우 고급 언어가 제공하는 추상화를 사용하는 것이 보다 더 생산적이고 안정적이다. 반면에 어셈블리 코드는컴퓨터 기계에 매우 의존적이기 때문에(회사마다 쓰는 어셈블리 셋이 약간씩 다르다) 컴퓨터 기계에 매우 의존적이라 할 수 있다. 특히 기계어 자체도 CPU가 채택하는 ISA(명령어셋)에 따라 다 다르기 때문에 어셈블리어의 명령어 역시 통일된 규격이 없다. 그렇다면 왜 어셈블리 코드를 알 면 좋을까?     1.  컴파일러의 최적화 성능을 알수있다.     2.  코드에 내재된 비효율성을 분석 가능하다.     3.  시스템의 취약성이 어떻..

KNN (K-Nearest Neighbor)

0. Intro KNN이란 k의 개수만큼 주변의 샘플 정보를 이용해서 새로운 관측치의 종속변수(y값)을 예측하는 지도학습 1. KNN (K-Nearest Neighbor) 1.1 KNN (K-Nearest Neighbor) ? 위 그림에서, 빨간색과 파란색의 종속변수의 범주가 있습니다. 일반적으로, 새로운 관측치인 녹색을 분류해야 하는데, 실선으로 k가 3일 때에는 빨강으로, 점선으로 k가 5일 때에는 파란색으로 판별합니다. 가까운 곳에 위치한 것에 따라 가중치(Weight)를 많이 주는 방법도 있습니다. 그리고, KNN은 종속 변수가 어떻게 되는가에 따라 방법이 달라집니다. 범주형 변수의 경우 가장 많이 나타나는 범주로 y를 추정하고, 연속형 변수의 경우 KNN의 평균으로 y를 추정합니다. 중요한 것은..

데이터로 좋은 결정 내리는 방법, 의사결정 나무

0. Intro ‘특정 질병에 가장 영향을 크게 미치는 유전자가 무엇인지 알 수 있을까?’, ‘카드사에서 고객의 특성에 맞춰 어떤 혜택이 가장 적합할지 어떻게 파악할 수 있을까?’ ​ 이러한 질문들에 대답할 수 있는 기술이 바로 ‘알고리즘’입니다. 알고리즘이란 어떠한 문제를 논리적으로 해결하기 위한 절차를 말하는데요. 이러한 알고리즘을 연구하는 분야를 머신러닝이라고 부릅니다. 머신러닝의 작업 분야는 크게 지도학습과 자율학습으로 나뉘죠. 이 중 지도학습은 다시 분류와 예측으로 나누어지는데, 알고리즘은 분류와 예측 작업을 통해 데이터로부터 의미 있는 결론을 이끌어내는 역할을 합니다. 이러한 알고리즘은 빅데이터의 발달과 함께 매우 빠르게 발전하고 있습니다. ⓒPixabay 구글의 데이터 분석 커뮤니티 캐글(K..

인공 신경망의 구조

0. Intro 텐서플로(Tensorlfow) 2.0 기반의 고수준 API인 케라스(Keras)를 중심으로 딥러닝 모델을 구축하고 훈련하는 방법을 소개한다. 케라스는 딥러닝 모델을 간단한 함수 형태로 구현했기 때문에 배우기 쉽고, 대부분의 딥러닝 문제를 해결할 수 있을 만큼 성능도 뛰어난 편이다. ​ 인공 신경망은 뇌 신경계의 정보 처리 구조를 모방하여 만든 컴퓨터 계산 알고리즘이다. 뇌 신경은 수많은 신경세포(뉴런, neuron)들이 연결되어 정보를 처리하고 전달한다. 신경세포는 신호를 입력받아 다음 신경세포에 출력 형태로 연결한다는 점에서 입력과 출력을 갖는 함수와 비슷하다. 인공 신경망은 이처럼 수많은 신경세포가 연결되는 뇌 신경계와 같이 수많은 함수를 서로 연결하여 복잡한 정보를 처리하는 네트워크..

티스토리에 수학 기호, 수식 쓰는 방법 [LaTeX /MathJax]

티스토리말고도 다른 웹사이트에서도 사용이 가능한 방법입니다.이 방법으로 웹에 수식을 삽입할 수 있습니다.     1. LaTeX란  LaTeX(라텍)은 텍스트 문서를 작성하기 위한 과학 및 수학 분야에서 주로 사용되는 조판 시스템입니다. LaTeX은 문서의 구조, 서식, 수학식, 참조 및 인용과 같은 다양한 기능을 지원하는 강력한 도구입니다. LaTaX는 과학 및 기술 문서를 작성할 수 있는 기능(수식 등)이 포함되어있으며, 거의 모든 문서를 작성할 수 있습니다.  고품질 문서 조판 프로그램이며, 라이선스 비용이 없는 무료프로그램입니다. https://www.latex-project.org/ LaTeX - A document preparation systemLaTeX – A document prepar..

[CSAPP] Ch 2. 정보의 표현과 처리 : (2) 정수의 표시

2.0 Intro 이 절에선 정수를 인코딩하기 위해 사용할 수 있는 두 가지 방법 (양수만 표시할 수 있는 방법과, 음수, 0, 양수 모두를 표시할 수 있는 방법) 에 대해 설명한다. 나중에 이들이 수학적 특성, Low-Level 수준을 볼 때 매우 연관되어있음을 알게 될 것이다. 그리고 인코딩된 정수를 다른 길이의 표현에 맞도록 조절하기 위해 확장하거나 축소하는 효과에 대해서도 살펴본다. 2.1 정수형 데이터 타입 2.1.1 C의 다양한 정수형 데이터 타입 아래 두 그림에는 전형적인 32bit와 64bit 프로그램들에서 이들이 갖는 값의 범위를 나타내었다. 각 타입은 unsigned로 선언되어 표시된 숫자가 모두 양수인지, 아니면 기본타입으로 음수도 나타낼 수 있는지 뿐만 아니라 키워드 char, sh..

[CSAPP] Ch 2. 정보의 표현과 처리 : (1) 정보의 저장

Ⅱ. 정보의 표현과 처리   2.0. Intro   현대의 컴퓨터는 두 개의 값을 갖는 신호로 표현되는 정보를 저장하고 처리한다. 이진수인 비트는 디지털 혁명의 근원인다. 이 비트들을 묶어서 가능한 다른 비트 패턴에 의미를 부여하도록 특정 해석방법을 적용하면(PCM), 어떤 유한집합의 원소들을 표시할 수 있게 된다.   이 장에서는 세 개의 가장 중요한 숫자 표현에 대해 살펴본다.    비부호형 인코딩 : 어떤 연산의 경우에는 그 결과값이 표시할 수 없을 정도로 커서 오버플로우를 발생시킬 수 있다.   2의 보수 인코딩 : 양수, 또는 음수값을 같는 부호형 정수를 표시하는 가장 일반적인 방법이다.    예상된 결과를 컴퓨터가 만들어 내지 않았을지는 몰라도, 적어도 일관된 결과를 만든다.   부동소수점 인..

임베디드 리눅스의 4대요소

1.  임베디드 리눅스 구성요소 임베디드 리눅스는 4가지 구성요소로 이루어져 있습니다.    1.  툴체인 (Toolchain)   타겟 장치를 위한 코드를 만드는데 필요한 컴파일러와 기타 도구로 구성되어있다.    2.  부트로더 (Bootloader)   타겟 보드를 초기화하고 리눅스 커널을 로드하는 프로그램    3.  커널 (Kernel)   시스템 자원을 관리하며 유저의 시스템콜 요청을 처리하는 시스템의 핵심 SW로, 하드웨어와의 접점이다.    4.  파일 시스템 (File System)   커널이 초기화를 끝낸 뒤 실행되는 라이브러리와 프로그램 등을, 일정 형식(EXT, FAT 등)에 따라 계층방식으로 담고있다.  ※ 다섯번째 요소 : 임베디드 애플리케이션에 고유한 프로그램의 묶음, 장치를 ..