전체 글 172

폰노이만 아키텍처 (Stored-program concept)

Stored-program concept 프로그램 내장 방식 ⇒ 폰노이만 아키텍처 폰노이만 아키텍처 구성요소 기억장치 memory : a collection of cells, each with a unique physical address 대부분 컴퓨터, 컴파일러에 의해 주소 부여 능력이 있음. byte단위 주소 산술 / 논리 연산 장치 (ALU) Arithmetic Logic Unit 산술연산, 논리연산을 수행하는 CPU 내부의 회로 장치 (누산기, 연산 레지스터) 제어 장치 (CU) Control Unit 요구되는 마이크로 동작들을 연속적으로 수행하게하는 신호(Clock)를 보냄으로써 명령을 수행하게 하는 장치 입출력 장치 (I/O device) 마우스, 키보드, 스피커...

Firmware와 BIOS(Basic Input/Output System)그리고 Booting process

Firmware ROM(Read Only Memory, 고정기억 장치 : 컴퓨터를 구동하기 위한 기본적인 정보가 담겨있다. 그리고 그 정보들을 기억하기 위해 다른 정보들은 기억하지 않는다. 사람의 본능에 비유하곤 한다.)에 저장되어 하드웨어를 관리하는 소프트웨어 (미들웨어) 업데이트가 가능하다 ex) BIOS, Bootloader BIOS(Basic Input/Output System)의 역할 바이오스(BIOS; Basic Input/Output System)는 운영 체제 중 가장 기본적인 소프트웨어이자 컴퓨터의 입출력을 처리하는 펌웨어 사용자가 컴퓨터를 켜면 시작되는 프로그램으로 주변 장치(하드웨어)와 컴퓨터 운영 체제(소프트웨어) 사이의 데이터의 흐름을 관리 하드웨어 초기화 하드웨어 이니셜 라이즈 (..

cache : CPU idle time을 줄이는 방법

CPU Idle 속도를 줄이는 방법 CPU 처리속도와 데이터를 가져오는 속도 (메모리 엑세스 속도)가 차이나서 발생하는 idle time, 어떻게 줄일까? ⇒ Cache 메모리 사용 1. Cache 메모리 이용 Cache 메모리 이용하는 목적 : Idle 타임 줄이는 것. CPU 처리속도 차를 줄이는 것. Cache 메모리 ⇒ 작고 빠르고 비싼 메모리 hit : Cache에 필요한 정보가 있는 경우 miss : Cache에 필요한 정보가 없는 경우 ⇒ hit ratio를 높이는 게 중요함 2. 여러가지 Trade off 프로세스가 빨라짐 ⇒ power가 많이 필요함 FSB(Front Side Bus, 프로세서 외부 통신에 쓰이는 버스)가 커짐 ⇒ 빠른 디바이스 ⇒ 비싸짐 Cache가 커짐 ⇒ Cache ..

Programing Language (하이레벨, 어셈블리어, 기계어)

Programing Language high level language (소스코드, C, 자연어) assembly language (어셈블리어) low level language (기계어) 컴파일러 vs 어셈블러 컴파일러 : high level language (소스코드, C, 자연어) ⇒ low level language (기계어) 어셈블러 : assembly language (어셈블리어) ⇒ low level language (기계어) 컴파일 VS 인터프리터 컴파일 : 번역본을 만들기 ⇒ 실행파일을 만들기 (C) (loader와 linker 필요. loader : 메모리에 자리잡 linker : function들 연결) 인터프리터 : 볼때마다 해독 ⇒ 실행파일 X (Python) 프로그래밍의 순서 알..

주기억장치(RAM) VS 보조기억장치(HDD,SDD)

주기억장치(RAM) VS 보조기억장치(HDD,SDD) 주기억 장치 : RAM 임의 접근 == directly 접근 접근시간 짧음 휘발성 보조기억 장치 : HDD, SDD, tape 순차적 접근== indirectly 접근 접근시간 긺 비 휘발성 Memory hierachy : 경제성 원리. 최소시간 최대효율. 당장 필요한 순서대로 접근 CPU // Cache ⇒ main memory ⇒ 보조 메모리 RAM (Random Access Memory) 랜덤 엑세스(≠순차적) 메모리. 데이터를 자유롭게 읽고쓰기 가능한 메모리, 휘발성이고 CPU 처리속도와 비슷함. (처리 속도가 빠름) Random의 의미 (== Directly) 데이터를 자유롭게 쓰고 원하는 주소에 직접 접근가능! ⇒ 순차적의 반대 의미 Bit..

Computer System과 hardware VS Software

Computer System 어떤일 (task, application)을 수행하기 위해 하드웨어(physical)나 소프트웨어(logical)로 구성된 체계 하드웨어 : 골격, 물리적 elements 소프트웨어 : programs that provide the instructions (for a computer to execute) 프로그램의 정의 어떤일을 수행하기위한 명령어(instructions)들의 순차적인 유한 집합 인풋 아웃풋 유효성 - 실행가능해야함 명확성 - 모호하지 않아야함 유한성 - 끝나야함 (유한 집합) hardware vs software 하드웨어가 소프트웨어보다 빠르다. 언어를 통해 프로그래밍이 뭔지 이해 0,1로 바꾼 명령어 → memory stored. 메모리에 접근 ⇒ 시간걸림..

C언어 배열 시작주소에 연산 (arr+1) 해석

#include #define R 10 #define C 5 int main() { int(*p)[R][C]; //5*10=50개의 배열을 갖는 하나의 포인터 p선언. int arr[10][5]; printf("%p\n", arr); //arr는 int[10][5] printf("%p\n", arr+1); //arr+1은 int[5]를 가리키는 포인터 int[5]* 포인터의 요소가 int[5]일뿐. //int arr[3] 하고 arr+1이 int를 가리키는 포인터라는 것과 같은 이유 printf("%d\n", sizeof(arr)); //arr의 크기는 int[10][5] 배열의 크기 4*5*10 printf("%d\n", sizeof(arr+1)); //arr+1의 크기는 int[5]를 가리키는 포인터..

공부/이모저모 2021.10.19

C언어 배열이름에 &붙이는 경우(&배열이름??)

#include int main() { int a = 3; //&(변수) -> 변수가 있는 주소 int arr[2] = { 1,2 }; printf("%p ", &arr+3); //BASEADD+24 printf("%p ", arr+1); //BASEADD+4 //두 값의 차이는 십진수 20 return 0; } &arr+3과 arr+1의 주소 값 차이는 십진수 20이 날 것이다. 실제로 전자 : 0x9f5c3afbe0 후자 : 0x9f5c3afbcc 가 나와서 주소 값의 차이는 0x14 (십진수 20)이 나온다!! arr = &arr[0]의 값을 가리키고 있는 포인터 arr[0] -> int &arr[0] -> int * arr+1 일때 1의 의미는 int의 바이트 수 (4) &arr = arr배열의 ..

공부/이모저모 2021.10.19
728x90