전체 글 223

[시스템 프로그래밍 2-2] 기본 마이크로 컴퓨터 디자인 (X86프로세서 각 장치별 동작 및 특징)(Cpu, RAM, Bus, Clock)

1. CPU 마이크로 컴퓨터 디자인 CPU 내부 구조 레지스터(엄청 빠르고 작음) : 레지스터로 가져와서 일을 처리한다. 캐시(caeche)도 cpu안에 있고 속도는 빠른편이지만 레지스터보단 느림 고주파 Clock : CPU 내부 작업을 다른 시스템 구성요소와 동기화를 할 때 사용한다. CU(컨트롤 유닛)-제어장치 : 읽어드리는 기계어를 컨트롤하는데 사용. 어떤 명령어를 가져올지.. ALU(산술 논리 장치) : 산술연산 및 논리 연산을 수행한다. CPU는 컴퓨터의 마더보드의 CPU소켓에 부착된 핀을 통해 컴퓨터의 나머지 부분에 연결됩니다. 대부분의 핀은 데이터 버스, 제어버스 및 주소버스에 연결된다. 2. 메모리 저장 장치 (RAM) 컴퓨터 프로그램이 실행되는 동안 명령과 데이터를 다 메모리 안에 적재해..

[시스템 프로그래밍 2-1] X86아키텍쳐 amd64와 ARM 비교(X86 Processor Architecture)

X86 아키텍쳐 X86 아키텍쳐는 인텔이 1978년에 개발한 인텔 8086에 적용된 아키텍쳐이다. 이 아키텍쳐는 8086에 적용된 아키텍쳐만 포함하는게 아니라 그 호환 후속작 프로세서들도 포함한다. 이 아키텍쳐는 32비트의 대표 프로세서여서 32비트 아키텍쳐라고도 불리지만 X86이라고 표기하는 이유는 이후 출시한 아키텍쳐들이 전부 8086 명령어 세트를 기반으로 확장 시켰기 때문이다. AMD 64 AMD64란, AMD가 1999년 발표한 x86의 64비트 확장인 아키텍쳐이다. 현대 컴퓨터는 대다수 64비트이고 우리가 알고있는 대부분의 컴퓨터는 이 표준을 따르고 있다. 표준 명칭은 AMD64 이지만 같은 이름으로는 X86-64, x64, Intel64 등의 이름으로도 불린다. 등장 배경 인텔의 경쟁사로는 ..

[시스템 프로그래밍 1강] 어셈블리어란

어셈블리어 소개어셈블리어를 우리가 공부하는 이유비전공자와의 차별점 - 컴퓨터 사이언스의 전반적인 지식이 필요하다. 컴퓨터 내부에서 어떻게 작동하는지 아는 것과 모르는 것은 큰 차별점을 선사한다.기계어란정의CPU(컴퓨터 프로세서) 가 이해하는 숫자 언어.특징 기계어는 2진수로 나타나져 있다. CPU에서 읽는다. 컴퓨터 하드웨어가 이해할 수 있는 유일한 언어이다. 모든 cpu는 cpu에 대응하는 코드가 있다. ex : 01000100 이런식으로 명령을 내리면 무엇을 한다 등, 이런식으로 미리 지정이 되어있다. 명령어는 특정 수의 비트로 구성됩니다. 특정 프로세서에 대한 명령이 8비트인 경우 처음 4비트 부분(opcode)은 컴퓨터에 수행할 작업을 알려주고 두 번째 4비트(피연산자)는 컴퓨터에 사용할 데이터를..

[cpp개념공부]문자열 스트림

표준 정보는 여기서 봅시다. https://cplusplus.com/reference/sstream/stringstream/ https://en.cppreference.com/w/cpp/io/basic_stringstream 문자열 스트림 (std::stringstream) 마치 문자열을 하나의 스트림이라 생각하게 해주는 가상화 장치 sstream에는 std::istringstream 이 정의되어 있는데 이는 문자열을 하나의 스트림으로 생각하게 해주는 가상화 장치 입니다. std::istringstream 을 통해서 123 을 읽어낼 수 있습니다. 이를 활용하면 atoi 와 같은 함수를 사용할 필요 없이 간편하게 문자열에서 숫자로 변환하는 함수를 만들 수 있습니다. 스트림에서 데이터를 가져오는 방법 스트..

CPP/Cpp module 2023.03.06

[Cpp 개념공부]표준스트림과 입출력

C++의 입출력 라이브러리 모든 입출력 클래스의 기반 ios_base 클래스 C++ 의 모든 입출력 클래스는 ios_base 를 기반 클래스로 하게 됩니다. ios_base 클래스는 많은 일은 하지 않고, 스트림의 입출력 형식 관련 데이터를 처리 합니다. 예를 들어 실수 형을 출력할 때 정밀도를 어떤 식으로 할 것인지에 대해 아니면 정수형을 출력 시에 10진수로 할지 16진수로 할지 등을 이 클래스에서 처리 합니다. 스트림 버퍼를 초기화하는 ios 클래스 ios클래스는 실제로 스트림 버퍼를 초기화 합니다. 스트림 버퍼란 스트림버퍼란, 데이터를 내보내거나 받아들이기 전에 임시로 저장하는 곳이다. 쉬운 예시로 우리가 하드디스크에서 파일을 하나 읽을 때 일어나는 일을 생각하면 된다. 만약 사용자가 1 바이트씩..

[디지털 논리 1강] 디지털과 아날로그(바이너리 ,샘플링, 엘리어싱, 양자화)

디지털 Vs 아날로그 디지털과 아날로그를 분류하는 방식은 정보를 표시하는 방식의 차이에 의해 생긴다고 볼 수 있다. 한마디로 설명하면 아날로그는 연속적이고 디지털은 불연속적이다. 예시(왼쪽 아날로그 오른쪽 디지털) 시계의 경우 쉽게 아날로그와 디지털을 구분할 수 있다. 일반적으로 해시계 모래시계 등 과거에 사용되던 시계는 대부분 아날로그 형식이었지만 조선시대 최초로 아날로그 시계인 자격루가 발명되었다. 온도계와 체중계의 경우 아날로그와 디지털의 차이를 쉽게 구분할 수 있을 것이다. 카메라는 과거에 흔히 사용되던 필름 카메라는 아날로그 방식이고 요즘 우리가 사용하는 일반적인 카메라는 전부 디지털 방식을 사용한다. 위의 디지털 카메라에서 네모 한 칸이 한 픽셀이고 이 단위로 rgb 정보를 전달할 수 있다. ..

[cpp개념공부]클래스 멤버 포인터 , 함수 포인터(CPP Module02)

함수 포인터에 대한 개념과 멤버포인터 개념이 부족해서 한번 정리하고자 한다. 함수 포인터란 함수는 메모리 상에 있다는 것이 의아할 수 있다. 그러나 사실 프로그램 코드 자체는 메모리 상에 존재한다. 배열도 배열의 이름이 배열의 시작값을 가리키는 주소처럼, 함수 이름이 함수의 시작 주소 값을 의미한다. 함수 포인터의 정의 방법 (함수의 리턴형) (*포인터 이름)(첫번째 인자 타입, 두번째 인자 타입,....) (만일 인자가 없다면 그냥 괄호 안을 비워두면 된다. 즉, int (*a)() 와 같이 하면 된다) 42과제에서 궁금증 그냥 함수처럼 사용하면 되는데..! 이번 과제에서는 왜 포인터로 해야할까? 멤버 포인터 연산자…! The goal of this exercise is to use pointers t..

CPP/Cpp module 2023.02.28

[cpp개념공부] throw ,try-catch

throw : 예외 발생시키기C언어와 다른 C++의 예외 처리C 언어에서는 예외가 발생했을 때, 다른 값을 리턴하는 것으로 예외를 처리하였지만, C++ 에서는 예외가 발생하였다는 사실을 명시적으로 나타낼 수 있습니다. 바로 throw 문을 사용하면 됩니다.표준 라이브러리 정의 예외 처리 객체 C++ 에는 예외를 던지고 싶다면, throw 로 예외로 전달하고 싶은 객체를 써주면 됩니다. 예외로 아무 객체나 던져도 상관 없지만, C++ 표준 라이브러리에는 이미 여러가지 종류의 예외들이 정의되어 있어서 이를 활용하는 것도 좋습니다.예를 들어서, 위 경우 out_of_range 객체를 throw 합니다. C++ 표준에 out_of_range 외에 overflow_error, length_error, runtim..

[cpp개념공부] 가상함수와 업 캐스팅

상속을 사용하는 이유기능이 겹치는 부분을 여러 번 복사 붙혀넣기 할 필요 없이 기능을 가져와서 사용하기 위해서상속이라는 기능을 통해서 객체지향 프로그램이 추구하는 객체의 추상화를 더 잘할 수 있다.클래스간의 관계is -a 관계모든 상속 관계는 is a 관계이다.class Manager : public Employee• Manager is a Employee !!Manager 클래스는 Employee 의 모든 기능을 포함한다Manager 클래스는 Employee 의 기능을 모두 수행할 수 있기 때문에 Manager 를 Employee 라고 칭해도 무방하다즉, 모든 Manager 는 Employee 이다 ( Manager is a Employee !! )클래스가 파생될수록 좀 더 특수화(구체화 special..

728x90