가상 메모리
·
Programming/기타
가상 메모리무엇인가?보조 기억장치(SSD, HDD등등...)의 일부를 주 기억장치처럼 사용하여 용량이 큰 프로그램을 실행할 수 있도록 하는 기술을 말한다.프로그램을 여러 개의 작은 블록단위로 나눠서 가상 메모리에 보관하고, 프로그램 실행시 요구되는 블록만 주 기억장치에 할당하여 처리한다.개념가상 메모리는 주 기억장치(RAM)의 용량이 부족한 상황에서도 대용량 프로그램을 실행할 수 있도록 보조 기억장치의 일부를 마치 램의 일부인것처럼 사용하는 방식이다. 프로그램을 여러개의 블록(논리 단위)로 분할하여, 실행에 필요한 블록만 램에 올리고 나머지는 보조기억장치에 남겨두게 된다. 이 방식은 과거의 스와핑 기법(실행중인 프로그램을 통째로 교체하는 방식)에서 발전한것으로, 연속된 기억장치 할당에서 발생하는 단편화 ..
C#) 람다 식에 대하여
·
Programming/C C# C++
람다 식람다 식이란 코드의 가독성과 간결성을 높이기 위해 사용하는 일종의 익명함수이다.정확히는 다음 그림과 같은 구조를 하고 있다. 우리가 이번에 알아볼 구조는 식 람다 ((parameters) => expression)와 문 람다 ((parameters) => { statements })의 두가지 형태이다. 식 람다앞서 설명했듯 식 람다는 ((parameters) => expression)의 형태로 이루어져 있다.여기서 parameters는 입력받을 매개변수를, expression은 실행할 내용을 의미한다. 예시를 통해 한번 알아보자. Func isEqual = (a, b) => a == b;Console.WriteLine(isEqual(3, 3)); 여기서 (a, b) => a == b; 부분이 람..
비트 연산
·
Programming/기타
비트란?한개 혹은 두 개의 이진수에 대해 비트 단위로 적용되는 연산. 일반적으로 비트라고 하는것은 데이터의 가장 작은 단위라고 할 수 있다.모든 메모리는 0과 1을 가지고 이진수로 저장이 되는데, 이 0혹은 1의 값을 비트라고 부르는 것이다.이 비트가 8개 모이면 바이트가 되어 비로소 무언가를 해볼만한 사이즈가 된다. 그렇다면 비트 연산이란 무엇인가?비트 수준으로 값을 다루는 경우 비트 단위 연산자라는 것을 사용하는데, 정수형 수식(char, short, int, long, long long 등등...)에 사용할 수 있는 연산자로, 시스템에 종속적이라는 특징을 갖고 있다. 이 비트 연산자는 6가지가 존재하는데 하나하나 알아보도록 하자.연산자 종류연산자 이름연산자논리 연산자(단항) 비트단위 보수~비트단위 ..
UTF - 8 / 16
·
Programming/기타
UTF에 대해서UTF란 유니코드 변환 형식(Unicode Transformation Format) 인코딩을 의미하는데,여기서 인코딩은 어떠한 정보, 데이터를 다른 형식으로 변환시키는 과정을 뜻한다. 대표적인 UTF방식으로 UTF-8과 16이 존재한다. 유니코드란?컴퓨터는 0과 1의 이진법만 이해하는데, 사람은 익히기만 한다면 그와 달리 매우 많은 언어를 구사할 수 있다.따라서 인간의 언어(자연어)를 컴퓨터(기계어)가 이해하기 위해서는 중개자가 필요하다.그 중개자 역할을 하는 것이 유니코드이다. 어떻게 이루어지는가?예를 들어 유니코드를 UTF-8로 인코딩을 한다고 가정해보자.인코딩 규칙은 다음과 같다.1. 1개 바이트를 사용하는 경우- 이 경우에는 가장 큰 비트에 0을 할당하고, 나머지 7비트에 기존의 아..
구조체 패딩
·
Programming/기타
구조체 패딩이란?CPU에서는 데이터를 메모리에서 읽고 쓸 때 정렬되어 있는 경우에 더 빠르게 접근할 수 있다. 예를 들어 32비트 컴퓨터의 경우 4바이트 단위로 저장되어 있어야 더 효율적으로 접근이 가능하다. 만약 4바이트 단위가 아니라 6바이트, 7바이트 등의 형태로 정렬되어 있는 경우 추가적인 연산이 발생하면서 성능이 저하될 수 있다. 예시를 한번 들어보자. struct Pad{ char a; long long b;}; 이 구조체의 멤버 b의 자료형은 long long이기 때문에 8바이트의 크기를 갖는다. 이 변수를 읽어들이는 경우 32비트 OS의 경우 3번의 접근이 필요하고, 64비트 OS의 경우에도 2번의 접근을 필요로 하게 된다. 하지만 패딩을 통해 보정을 해준다면?32비트의 경우 2..
워치독 타이머(Watchdog Timer)
·
Programming/기타
워치독 타이머란?정의컴퓨터의 오작동을 감지하고자 쓰이는 일종의 데드맨 스위치 같은 것.정상 작동중인 컴퓨터는 타임아웃이나 무한 루프같은 상황에 빠지지 않도록 일정 시간마다 정기적으로 워치독 타이머를 재가동 시킨다. 만약 하드웨어 오류나 프로그램 오류로 인해 컴퓨터가 워치독을 재가동 시키는데 실패하면 타이머가 시간을 두고 타임 아웃 신호를 생성하게 된다. 이 타임아웃 신호를 통해 컴퓨터를 재부팅 하는 등 여러 조치를 취하게 된다. 이런 워치독 타이머는 당연하게도 별도의 회로를 갖추거나 시스템과 독립적으로 작동하도록 설계되어있다. 보통 사람이 자주 관리하기 힘든 임베디드 시스템 같은 곳에서 주로 사용된다. 구조워치독이 하나인 경우워치독이 시스템에 하나인 경우에는 그림과 같이 클럭 신호를 받고 컴퓨터가 주기적..