전체 글 137

C# [기본 문법 요소]

각 프로그래밍 언어는 저 마다 나름의 문법과 어휘 구조를 가지고 있다.C#도 예외는 아니며, 한 가지 집고 넘어가야 할 것이 바로 '예약어(또는 키워드)', '식별자', '리터럴' 개념이다.예약어, 키워드예약어(reversed word) 또는 키워드(keyword)는 C# 언어에서 문법을 표현하기 위해 미리 예약된 단어를 의미한다.예약어 예시)sbyte, byte, short, ushort, int, uint, long, ulongfloat, double, decimalchar, stringbool식별자식별자(identifier)는 프로그래밍을 하면서 임의로 선택해서 이름을 지을 수 있는 단어를 말한다.namespace ConsoleApp2; class Program { static void Ma..

C# 2025.05.07

C# [형 변환]

각 자료형은 서로 변환하는 것이 가능할 수도 있고 그렇지 않을 수도 있다.부가적인 코드를 지정하지 않고 자연스럽게 형 변환(Type Conversion)되는 것을 '암시적 변환'이라고 한다.개발자가 명시적으로 형 변환임을 알리는 것을 '명시적 변환'이라고 한다.암시적 변환 1바이트의 byte 데이터가 2바이트의 short 형에 대입된다면 문제되는 것이 있는가?- 없다. byte 데이터에는 0 ~ 255 범위의 수가 담기는데, short 형 데이터에는 -32,768 ~ 32767 범위의 값을 담을 수 있기 때문이다.이 처럼 범위가 작은 데이터 타입에서 그 값을 충분히 담을 수 있는 큰 타입으로 형 변환하는 것은 컴파일러가 '암시적 변환(Implicit conversion)'으로 간주해서 오류 없이 컴파일 ..

C# 2025.05.05

C# [기본 자료형]

자료형(Data Type)은 프로그램에서 데이터를 담을 수 있는 일정한 형식을 말하며, 기본 자료형(Built-in-Types)은 개발자가 별도로 코드를 만들지 않아도 C# 언어에서 자체적으로 제공하는 데이터 형식을 의미한다.정수형 기본 타입컴퓨터는 0과 1이라는 비트(bit)로 구성되어 이씩 때문에 오직 '숫자'만이 의미가 있다. 컴퓨터 세상에서는 모든 것이 숫자인데, 알파벳조차 'A' = 65, 'B' = 64... 같은 식으로 각각 대응되는 숫자로 '약속'되어 있다.비트가 표현하는 경우의 수로 인해 8비트는 2^8 = 256, 16비트는 2^16 = 65,536처럼 숫자 표현도 정해져 있다.C#뿐만 아니라 일반적인 프로그래밍 언어에서 이러한 규칙은 공통적으로 적용되며, 데이터 자료형에 따라 비트를 ..

C# 2025.05.04

C# [.NET]

닷넷은 2002년에 마이크로소프트에서 발표한 닷 넷 프레임워크(.NET Framework)에서 발전한 응용 프로그램 개발 환경→ 프로세스 가상머신일반적인 네이티브 언어로 만들어진 프로그램들이 운영체제에서 곧바로 실행되는 것과는 달리 닷넷을 기반으로 만들어진 응용 프로그램은 그에 더해 런타임 환경을 필요로 한다. 3가지 방식을 통해 배포가 가능닷넷 런타임을 시스템에 설치닷넷 런타임을 응용프로그램과 함께 배포실행 파일 내에 닷넷 런타임을 포함.NET Runtime이전에 CoreCLR이라고 불렸으며, 관련 모듈(coreclr.dll)의 이름에서 흔적을 찾아볼 수 있다. - 오픈소스 첫 번째 방식의 경우 시스템에 전역적으로 설치되므로 응용 프로그램을 빌드한 파일만 복사하면 실행이 가능하다.두 번째 방식은 응용 ..

C# 2025.05.03

컴퓨터 구조론 8장 [고성능 컴퓨터시스템 구조 / 그래픽처리유니트(GPU)]

GPU는 실시간 그래픽 처리용으로 개발되었으나, 계산 능력이 강화되어 일반적인 산술 연산 처리에도 쉽게 이용할 수 있도록 개선되면서 다양한 데이터 병렬 응용(data parallel application)들을 위한 가장 이상적인 보조 프로세서로서의 입지를 굳혀가고 있다.초기 GPU는 몇 가지 치명적인 결점들을 가지고 있었다. 프로그래밍을 위해서는 GPU 내부 구조와 그래픽 API(application program interface)에 대한 지식이 필요하다는 것과 그래픽 프로그래밍 자체가 너무 복잡하다는 것이다.기억장치에 대한 직접적인 읽기 및 쓰기와 같은 기본적인 연산은 과학 기술 응용들에 필수적인 부동소수점 연산이 지원되지 않았고, 그러한 문제점에도 불구하고 GPU가 널리 보급되기 시작한 것은 NVI..

컴퓨터 구조론 8장 [고성능 컴퓨터시스템 구조 / 다중프로세서시스템 구조]

프로세서들이 기억장치 모듈을 사용하는(소유하는) 방식에 따라 크게 다음과 같이 분류공유-기억장치 시스템(shared-memory system)분산-기억장치 시스템(distributed-memory system)공유-기억장치 시스템 구조이 시스템 구조는 밀결합 형태로서, 주기억장치가 어느 한 프로세서에 속하지 않고 모든 프로세서들에 의해 공유된다.각 프로세서는 특수 프로그램(하드웨어 초기화와 진단 프로그램)을 저장하고 잇는 적은 용량의 지역 기억장치(local memory)를 별도로 가질 수는 있으나, 운영체제와 사용자 프로그램 및 데이터들은 모두 공유 기억장치에 저장된다.장점프로세서들이 공통으로 사용하는 데이터들이 공유 기억장치에 저장되므로, 별도의 프로세서 간 통신 메커니즘이 필요하지 않다.프로그램 실..

컴퓨터 구조론 8장 [고성능 컴퓨터시스템 구조 / 병렬컴퓨터의 분류]

Flynn의 분류컴퓨터 시스템을 분류하는 방법으로는 프로그램 처리의 동시성을 기준으로 하는 Flynn의 분류(Flynn's classification)가 널리 사용되고 있다.이 분류에서는 프로세서들이 처리하는 명령어와 데이터의 스트림의 수에 따라 디지털 컴퓨터를 네 가지로 분류하고 있다.여기서 스트림이란 하나의 프로세서에 의해 순서대로 처리되는 일련의 명령어들과 데이터들의 흐름을 말한다.명령어 스트림(instruction stream)실행되기 위하여 순서대로 프로세서로 들어오는 명령어 코드들의 흐름데이터 스트림(data stream)명령어 실행에 사용되기 위하여 순서대로 프로세서로 들어오는 데이터들의 흐름명령어 스트림과 데이터 스트림을 처리하기 위한 하드웨어 구조에 따른 Flynn의 분류단일 명령어 스트..

컴퓨터 구조론 8장 [고성능 컴퓨터시스템 구조 / 병렬처리의 개념 및 필요성, 병렬처리의 단위]

병렬처리의 개념 및 필요성반도체 소자의 물리적인 특성에 의한 프로세서 속도 상의 한계를 극복할 수 있게 해주는 기술이 병렬처리이다.병렬처리(parallel processing)다수의 프로세서들을 이용하여 여러 프로그램들을 분담하여 동시에 처리하는 기술실제로 대부분의 고성능 컴퓨터 시스템의 설계에서는 성능 향상을 위한 방법으로서 벼렬처리 기술이 널리 사용되고 있다.병렬 처리를 실제 구현하기 위해 만족해야 하는 조건많은 수의 프로세서들로 하나의 시스템을 구성할 수 있도록, 작고 저렴하며 고속인 프로세서들의 사용이 가능해야 한다.한 프로그램을 여러 개의 작은 부분들로 분할하는 것이 가능해야 하며, 분할된 부분들을 병렬로 처리한 결과가 전체 프로그램을 순차적으로 처리한 경우와 동일한 결과를 얻을 수 있어야 한다..

컴퓨터 구조론 7장 [시스템 버스, I/O 및 인터럽트/DMA를 이용한 I/O]

만약 큰 데이터 블록을 전송하는 경우 CPU가 그 동작들을 수행하는데 많은 시간을 소모해야 하며, 시스템 버스도 대부분의 시간 동안 그러한 I/O 동작들을 위해 사용될 수 밖에 없는데, 이 문제점을 해결하기 위하여 직접기억장치액세스(Direct Memory Access:DMA)가 널리 사용되고 있다.DMA란 CPU의 개입 없이 I/O 장치와 기억장치 사이에 데이터 전송을 수행하는 매커니즘을 말한다.DMA 방식을 사용하기 위해 시스템 버스에 DMA 제어기가 추가되어야 한다.DMA 제어기CPU 개입 없이 I/O 장치와 기억장치 간의 데이터 전송을 수행하는 DMA 동작을 지원하는 하드웨어 모듈이다.주기억장치의 데이터를 I/O 장치로 내보내거나 (I/O write), I/O 장치로부터 데이터를 주기억장치로 읽..

컴퓨터 구조론 7장 [시스템 버스, I/O 및 인터럽트 /인터럽트를 이용한 I/O]

인터럽트-구동 I/O인터럽트 매커니즘을 이용하여 CPU와 I/O 장치간의 상호작용이 처리되는 방식동작 순서CPU가 I/O 제어기에게 명령을 보낸다. 그런 다음에 CPU는 다른 작업을 수행한다.제어기는 I/O 명령을 이용하여 I/O 장치를 제어한다.I/O 장치가 명령 수행을 완료하면, 제어기는 CPU로 인터럽트 신호를 보낸다.CPU는 인터럽트 신호를 받는 즉시 원래의 프로그램으로 돌아와서 다음 작업을 계속한다.앞의 과정에서 2, 3번이 진행되는 동안 CPU는 다른 프로그램을 수행할 수 있다.I/O 장치의 속도가 느린 경우에도 CPU 시간이 낭비되지 않는다.CPU가 프린터로 데이터를 출력하는 과정CPU가 데이터와 프린트 명령을 프린트 제어기로 보낸다.그 데이터의 프린트가 종료되면, 프린트 제어기는 .CPU로..