[컴퓨터 구조] - 클라우드 컴퓨팅 (Cloud Computing) (完)
·
💻 Computer Science/컴퓨터 구조
클라우드 컴퓨팅이란 기본적인 연산과 저장 능력을 구름(Cloud) 너머의 서버가 제공하고, 사용자 컴퓨터는 네트워크를 통해 기본적인 입출력 기능만을 담당하는 것입니다. 즉, 인터넷 상의 중요한 연산과 정보의 저장은 클라우드 컴퓨팅 서버가 수행하고 연결된 개인용 컴퓨터는 단말기 역할을 주로 하는 것입니다. 지금부터 클라우드 컴퓨팅에 대해서 알아보도록 하겠습니다. 클라우드 컴퓨팅 주요 기술 클라우드 컴퓨팅은 크게 3가지로 나눌 수 있습니다. IaaS(Infrastructure as a Service): CPU나 네트워크 회선, 저장 공간 등의 컴퓨팅 자원을 사용자가 별도의 설치나 관리, 조정 없이 OS 및 특정 애플리케이션 등을 실행할 수 있는 서비스, 대표적으로 아마존의 Cloudfont와 SimpleDB..
[컴퓨터 구조] - 병렬 컴퓨터 (Parallel Computer)
·
💻 Computer Science/컴퓨터 구조
병렬 컴퓨터란 동시에 2개 이상의 프로세서가 동작하는 컴퓨터를 말합니다. 현재 대부분의 PC는 듀얼, 쿼드 코어 CPU를 사용합니다. 멀티 코어 CPU도 일종의 병렬 컴퓨터입니다. 지금부터는 병렬 컴퓨터에 대해 더 자세히 알아보도록 하겠습니다. 단일 프로세서/멀티 프로세서 병렬 컴퓨팅은 규모에 따라 크게 2가지로 나누어집니다. 소규모 멀티코어 환경: 대부분의 개인용 컴퓨터는 멀티 코어 CPU를 사용하고, CUDA, OpenMP 등의 소프트웨어 개발 환경이 지원되어 과거보다 훨씬 쉽게 병렬 프로그래밍이 가능합니다. 대규모 병렬 컴퓨팅 환경: 다수의 CPU나 컴퓨터 등을 연결하여 구현한 시스템으로, 클러스터(Cluster)나 그리드 컴퓨팅(Grid Computing) 등이 있습니다. 이전에는 하드웨어 속도의..
[컴퓨터 구조] - 가상 머신 (Virtual Machines)
·
💻 Computer Science/컴퓨터 구조
여태까지 배운 것은 물리적으로 존재하는 컴퓨터입니다. 논리 회로, CPU, I/O Device, 버스 등 이것들은 실제로 존재하는 것들입니다. 이번 포스팅에서 배울 것은 컴퓨터가 만들어내는 가상의 컴퓨터인 "가상 머신"에 대해서 배워보고 여러가지 가상 머신의 종류들에 대해 알아보겠습니다. 가상 머신 (Virtual Machines) 가상 머신은 최근 "가상화"라는 이름으로 각광받고 있습니다. 이는 다양한 운영체제(OS)에서 프로그램을 개발하거나 테스트를 해야할 때 활용 가능합니다. 즉, 가상 머신을 통해 OS별로 운영체제 이미지를 올려 가상 머신 상에서 프로그램을 테스트할 수 있습니다. 이를 사용하면 가상화 솔루션 비용만으로 프로그램 개발이 가능하기에 많은 비용 절감이 가능하고 가상 머신을 이용할 시 시..
[컴퓨터 구조] - 명령어 집합 (Instruction Set Architecture)
·
💻 Computer Science/컴퓨터 구조
기계어와 어셈블리어 프로그래밍을 배웠다면 일반적인 컴퓨터 상에서 사용되는 기계어 명령어에 대해서 배워보겠습니다. 이를 명령어 집합이라고 합니다. 기계적 명령어를 설계하는 것은 하드웨어 구조에 영향을 끼치기에 명령어의 종류와 형식, 주소 지정 방식 등 여러가지를 고려해야 합니다. 지금부터 명령어 집합에 대해서 더 자세히 알아보도록 하겠습니다. 명령어 구성 하나의 명령어는 보통 "연산자 코드(op-code)", "모드(mode)", "피연산자 지시자(operand specifier)"로 구성됩니다. 연산자 코드 (Operation Code) 모드 (Mode) 피연산자 지시자 (Operand Specifier) 연산자 코드: 수행할 연산자의 종류를 나타내며 보통 op-code(Operation Code)로 불..
[컴퓨터 구조] - 기계어와 어셈블리어 (Machine Language, Assembly language)
·
💻 Computer Science/컴퓨터 구조
기계어와 어셈블리어를 이해하면 컴퓨터가 내부에서 어떻게 동작하는지를 더욱 자세히 알 수 있고 컴퓨터 구조를 소프트웨어 관점에서 바라볼 수 있도록 합니다. 실제로 기계어와 어셈블리어를 사용하여 프로그래밍을 하는 일은 드물지만 이를 이해하면 고급 언어를 사용할 때 더 효율적인 프로그래밍이 가능합니다. 기계어(Machine Language) 컴퓨터의 종류에 따라 컴퓨터가 이해할 수 있는 기계어의 모양은 조금씩 다릅니다. 이 포스팅에서는 Pep/8이라는 가상 머신을 기준으로 내용을 전개합니다. (기계어 코드 표를 참고하면 더 자세히 공부할 수 있습니다.) 기계어로 "Hi"를 출력하려면 다음과 같은 기계어 프로그램을 입력해야 합니다. 메모리 주소 기계어(16진수) 기계어(2진수) 0000 0003 0006 50 ..
[컴퓨터 구조] - 버스 (Bus)
·
💻 Computer Science/컴퓨터 구조
컴퓨터 하드웨어는 크게 중앙처리장치(CPU), 메인 메모리(기억 장치), 입출력 장치로 나뉘며 이들은 모두 버스(Bus)로 연결되어 있습니다. 이번 포스팅에서는 버스에 대해서 알아보겠습니다. 버스 (Bus) 버스(Bus)란 CPU, 주기억 장치, 외부의 입출력 장치 사이의 정보 전송을 위한 전기적 통로입니다. 즉, 컴퓨터의 많은 장치들이 서로 데이터를 주고 받기 위한 통로입니다. 버스의 크기, 버스를 통한 데이터 전송 속도가 시스템의 성능을 좌우합니다. 버스의 분류 버스에 실리는 신호의 종류에 따라 데이터 버스, 주소 버스, 제어 버스로 구성됩니다. 데이터 버스(Data Bus): 메인 메모리와 CPU 사이, 입출력 장치와 메인 메모리 사이, CPU 내부의 모듈들 간의 데이터가 이동하는 경로 주소 버스(..
[컴퓨터 구조] - 입출력 장치 (I/O Device)
·
💻 Computer Science/컴퓨터 구조
컴퓨터 하드웨어는 크게 중앙처리장치(CPU), 메인 메모리(기억 장치), 입출력 장치로 나뉘며 이들은 모두 버스(Bus)로 연결되어 있습니다. 이번 포스팅에서는 입출력 장치에 대해서 알아보겠습니다. 입출력 장치 (I/O Device) 포트(Port)는 컴퓨터와 외부의 다른 장비를 연결할 수 있게 하는 통로를 말합니다. 기본적으로 직렬 포트와 병렬 포트로 나눌 수 있습니다. 직렬 포트: 한 번에 하나의 신호를 전달할 수 있고, 보통 저속의 장치와 연결된다. 병렬 포트: 여러 비트의 신호를 동시에 전달할 수 있고, 직렬 포트에 비해서 고속 인터페이스를 제공한다. USB: 컴퓨터와 주변 기기를 연결하는데 쓰이는 입출력 표준 가운데 하나, 직렬/병렬 포트의 많은 부분을 대체한다. 입력 장치 입력 장치는 외부의 ..
loading