목록전체 글 (125)
멈추지 않고 끈질기게
※ 해당 포스팅은 개인의 공부 정리용 글입니다. 틀린 내용이 있다면 추후 수정될 수 있습니다. 이번 포스팅에서는 가상 메모리에 관하여 알아보겠습니다. 1. 가상 메모리의 정의 가상 메모리(virtual memory)란 프로세스에 실제 사용하는 물리적인 메모리가 아닌 추상화된 가상의 메모리를 할당하여 실제 메모리 크기보다 더 크게 사용할 수 있게 하는 기술입니다. 가상 메모리상에서의 주소를 가상 주소(virtual address) 또는 논리 주소(logic address)라고 하며, 이와 구분하기 위해 실제 물리 메모리의 주소는 물리 주소(physical address) 또는 실 주소 라고 합니다. 프로세스는 가상 주소를 할당 받아 실행되고, 가상 주소는 메모리 관리 장치(MMU / Memory Manag..
※ 해당 포스팅은 개인의 공부 정리용 글입니다. 틀린 내용이 있다면 추후 수정될 수 있습니다. ※ 해당 포스팅은 .Net 5.0 버전을 기준으로 작성되었습니다. 이번 포스팅에서는 C#의 대리자(Delegator) 개념에 대해 알아보겠습니다. 1. 대리자(Delegate)의 정의 프로그래밍에서는 데이터를 변수에 저장하여 함수에 전달하는 등 자유롭게 사용합니다. 이 개념을 함수에 적용시킨 것이 대리자입니다. 대리자를 선언한 뒤 해당 대리자 타입의 인스턴스를 함수로 초기화하면, 해당 대리자는 함수의 주소를 참조하게 됩니다. 또한 대리자 인스턴스는 다른 함수의 매개변수로 사용할 수 있습니다(매개변수로 사용되는 함수를 콜백 함수(callback function)라 합니다). 대표적인 예가 이전 포스팅에서 알아봤던..
※ 해당 포스팅은 개인의 공부 정리용 글입니다. 틀린 내용이 있다면 추후 수정될 수 있습니다. 이번 포스팅에서는 컴퓨터에서의 소수 표현에 대해서 간단하게 알아보겠습니다. 1. 서문 bool result = (0.11f * 3 == 0.33f); Console.WriteLine(result); 상기 코드는 C#에서 0.11f * 3 == 0.33f 의 결과를 출력하는 코드입니다. 상식적으로 0.11 x 3이면 0.33이니까 당연히 true일 것 같지만, 막상 실행해보면 좀 다릅니다. 보다시피 False를 출력하고 있습니다. 이런 현상이 발생하는 이유를 이해하려면 2진법과 소수점 자료형의 특징을 이해해야 합니다. 2. 컴퓨터의 소수 저장 방식 컴퓨터에서 소수를 저장할 때는 IEEE에서 제안한 부동소수점 방식..
※ 해당 포스팅은 개인의 공부 정리용 글입니다. 틀린 내용이 있다면 추후 수정될 수 있습니다. 이번 포스팅에서는 멀티 프로세스(multi process)와 멀티 스레드(multi thread)의 차이에 대해서 알아보겠습니다. 1. 프로세스(Process)와 스레드(Thread) 실행되기 전의 프로그램은 보조기억장치에 저장되어 있으며, 메모리에 적재하여 실행되는 순간 이를 프로세스라 합니다. 일반적으로 '실행중인 프로그램'이라고 부르는 것이 프로세스에 해당합니다. 이 때 프로세스가 메모리에서 차지하는 공간을 크게 코드 영역, 데이터 영역, 힙 영역, 스택 영역의 4가지로 구분합니다. 코드 영역(code segment)은 프로그램의 명령어가 저장되는 공간으로, 읽기 전용 공간입니다. 데이터 영역(data s..
※ 해당 포스팅은 개인의 공부 정리용 글입니다. 틀린 내용이 있다면 추후 수정될 수 있습니다. ※ 해당 포스팅은 .Net 5.0 버전을 기준으로 작성되었습니다. 이번 포스팅에서는 정렬 기준을 결정하는 IComparable 인터페이스와 Comparison 대리자에 대해 알아보도록 하겠습니다. 1. IComparable인터페이스 해당 인터페이스는를 상속받는 경우 CompareTo() 함수를 반드시 구현해야 합니다. class Check : IComparable { public int CompareTo(object obj) { throw new NotImplementedException(); } } (인터페이스 자동 구현 시 모습) CompareTo()는 해당 타입의 정렬 기준이 되는 함수로, 해당 타입의 배..
※ 해당 포스팅은 개인의 공부 정리용 글입니다. 틀린 내용이 있다면 추후 수정될 수 있습니다. 이번 포스팅에서는 컴퓨터의 저장장치 중 하나인 캐시 메모리에 대해 알아보겠습니다. 1. 캐시 메모리의 특징 캐시 메모리는 CPU와 메모리 사이에 위치하는 저장장치로서, 주로 SRAM을 사용하여 CPU의 레지스터보다는 용량이 크고 메모리보다는 속도가 빠릅니다. 특히 속도면에 있어서 CPU와의 물리적인 거리도 메모리보다 가깝기 때문에, 캐시 메모리에서 데이터를 읽어들여 처리한다면 메모리까지 접근하는 것보다 훨씬 빠릅니다. 그래서 CPU는 메모리에서 데이터를 읽어들일 때 앞으로 필요할 것으로 예측되는 데이터를 함께 읽어들여 캐시 메모리에 저장해 둡니다. 이 후 데이터에 접근할 때 캐시 메모리에 존재하는지 확인하여, ..
※ 해당 포스팅은 개인의 공부 정리용 글입니다. 틀린 내용이 있다면 추후 수정될 수 있습니다. 프로그래밍에서 객체를 복사할 때는 얕은 복사와 깊은 복사의 두가지 방식이 있습니다. 이번 포스팅에서는 해당 내용에 관하여 알아보겠습니다. 1. 얕은 복사(Shallow Copy) 얕은 복사는 해당 객체의 주소 값만을 복사하고, 새로운 인스턴스를 생성하지는 않습니다. 복사 후 대상 객체와 복사한 객체가 동일한 인스턴스를 가리키기 때문에, 서로 종속적인 관계가 됩니다. class Item { public int id; public string name; public float value; public int price; public Item(int id, string name, float value, int pri..
※ 해당 포스팅은 개인의 공부 정리용 글입니다. 틀린 내용이 있다면 추후 수정될 수 있습니다. ※ 해당 포스팅은 .Net 5.0 버전을 기준으로 작성되었습니다. 자료구조 중에는 인덱스 대신 키(Key) 값을 사용하여 데이터(Value)에 접근하는 '연관 배열'이 있습니다. 이번 포스팅에서는 C#에서 제공하는 연관 배열, 딕셔너리(Dictionary)에 대해 알아보겠습니다. 1. Dictionary의 특징 Dictionary는 Key와 Value를 한 쌍으로 다루는 배열입니다. 일반적인 배열과 동일해 보일 수 있으나, Dictionary의 Key 값은 인덱스와 달리 선언시에 자료형을 지정합니다. 따라서 정수 뿐만 아니라 소수, 문자열 등 다양한 타입을 검색 기준으로 사용할 수 있습니다. 2. Diction..