분류 전체보기(324)
-
[Network] 전송 계층 (Transport Layer)
전송 계층 (Transport Layer) - 목적지에 신뢰할 수 있는 Data를 전달하기 위해 필요한 Layer - 패킷이 전송과정에서 아무 문제 없이 제대로 목적지에 도착할 수 있도록 패킷 전송을 제어 Network 혼잡 상황에 따라 패킷의 전송량을 조절해서 패킷의 흐름을 제어 패킷 전송의 오류를 점검해서 목적지까지 패킷이 제대로 도착했는지 확인 - Layer 1, 2, 3(물리, 데이터 링크, 네트워크) 이 3계층만 있어도 목적지에 Data 전송은 가능 but, 전송 과정에서 Data가 손상/유실되면 이에 대한 책임은 안진다 >> 이러한 문제점을 해결하기 위한 계층 : Layer 4 (전송 계층) 전송 계층 역할 (Transport Layer) - Layer3에서 라우팅 기능을 통해서 Data를 전..
2022.01.27 -
[컴퓨터구조] 명령어 파이프라이닝
명령어 파이프라이닝 (Instruction Pipelining) - CPU의 성능 ≒ 컴퓨터시스템의 프로그램 처리 시간에 직접적 영향 속도를 향상시키면 향상시킬수록 매우 좋다 속도를 향상시키는 방법 중 하나 : 명령어 파이프라이닝 ≫ 매우 간단하면서 분명한 효과 1. 명령어를 실행하는데 사용되는 하드웨어를 여러 개의 독립적인 단계(stage)들로 분할 2. 각 단계별로 동시에 서로 다른 명령어들을 처리 → CPU 성능 향상 3. 분할되는 단계가 많이질수록 CPU의 성능은 향상 가장 효율적인 파이프라인 조건 - 각 단계별 처리 시간 일정 - 각 명령의 처리 단계 균일 2-단계 명령어 파이프라이닝 - 명령어 사이클은 기본적으로 인출 사이클/실행 사이클 : 2개의 단계로 구성 이 2개의 단계들을 처리하는 하드..
2022.01.25 -
[Algorithm] 최대공약수 GCD (유클리드 호제법)
호제법 두 수가 서로 상대방 수를 나눠서 결국 원하는 수를 얻는 알고리즘 두 수 A, B의 최대공약수를 G라고 하면 A = Ga / B = Gb → A를 B로 나누면 (A≥B라고 가정) A = BQ + R → Q : 몫, R : 나머지 Ga = GbQ + R R = G(a-bQ) ≫ G는 A를 B로 나눈 나머지의 약수 Example A : 20 / B : 55 → GCD(A, B) 20%55 = 20 → GCD(55, 20) 55%20 = 15 → GCD(20, 15) 20%15 = 5 → GCD(15, 5) 15%5 = 0 → GCD(5, 0) → B가 0이 되는 순간 알고리즘 종료 → 최종 최대공약수 = A Java Code static int GCD(int A, int B){ if(B==0) ret..
2022.01.24 -
[Network] 네트워크 계층 (Network Layer)
네트워크 계층 (Network Layer) - 논리적인 주소(IP 주소)를 담당하고, 패킷의 전달 경로를 결정(라우팅)하는 역할 - Layer 4(Transport Layer)에서 만들어진 패킷을 전달 받아서, 목적지 컴퓨터의 논리적 주소(IP)를 Layer3의 헤더에 추가하는 역할 - 서로 다른 Network간의 통신을 가능하게 해주는 계층 라우터"라는 장비를 통해서 다른 Network로 Data를 전송 "라우터" Data의 목적지가 정해지면 해당 목적지까지의 최적의 경로를 설정해준다 "IP 주소"를 통해서 Network를 식별 Layer 2(Data Link) / Layer 3(Network) Layer 2 - Ethernet 프로토콜을 기반으로 같은 Network(LAN)안에서 Data를 주고받는다..
2022.01.21 -
[DB] 아스키코드 저장용 2022.01.21
-
[컴퓨터구조] CPU의 기본 구조
CPU - 컴퓨터의 핵심 요소 - 기억장치에 저장되어 있는 명령어들을 실행 : "프로그램 수행" CPU의 프로그램 수행 과정 (기능) ① 명령어 인출 (Instruction Fetch) - 무조건 실행 - 기억장치로부터 명령어 읽기 ② 명령어 해독 (Instruction Decode) - 무조건 실행 - 해당 명령어 해독 어떤 동작을 수행해야하는지 결정해야 하기 때문에 ③ 데이터 인출 (Data Fetch) - 명령어를 수행할 때 Data가 필요한 경우, (기억장치, I/O장치)로부터 해당 Data를 읽기 ④ 데이터 처리 (Data Process) - 해당 Data에 대한 산술/논리연산을 수행 ⑤ 데이터 저장 (Data Store) - 수행 결과 저장 → ①, ②는 무조건 실행 / ③, ④, ⑤는 명령어..
2022.01.20 -
[Java] 메모리 구조
JVM (Java Virtual Machine) - 자바 ↔ 운영체제 사이에서 중개자 역할 - 운영체제에 상관없이 프로그램을 실행할 수 있게 해준다 → JVM은 운영체제에 종속적 - 가비지 컬렉터(GC)를 사용해서 메모리 관리를 자동으로 수행 - Stack 기반으로 동작 - (Garbage Collector / Execution Engine / Class Loader / Runtime Data Area) 4가지 구조로 나눌 수 있다 - 최초 JVM이 나왔을 당시에는 인터프리터 방식이어서 속도가 느렸지만, JIT 컴파일러 방식을 통해서 보완 JIT : Byte Code를 어셈블러 같은 네이티브 코드로 바꿈으로써, 실행이 빠르지만 비용이 발생 JVM은 모든 코드를 JIT 컴파일러 방식으로 실행하지 않고, 인..
2022.01.18 -
[컴퓨터구조론] 1장 연습문제
1.1 아래 용어들의 의미를 설명하라 (1) 기계어 프로그램 - 컴퓨터가 이해할 수 있는 0, 1의 2진 비트열로 구성된 프로그램 (2) 어셈블리 명령어 - 각 CPU별 언어 차이를 해결하기 위해, 고급언어 기계어 사이에 각 CPU 고유의 언어 (3) 니모닉스 -각 어셈블러 명령어가 지정하는 동작들을 나타내는 기호 -> LOAD, ADD, STOR,... (4) 단어 - 각 기억장소에 저장되는 Data의 단위 - CPU에 의해 한 번에 처리될 수 있는 비트들의 그룹 1.2 16비트 명령어에서 6비트는 연산 코드로 사용되고, 나머지 비트들은 오퍼랜드로 상용된다 연산 코드 (op code) 오퍼랜드 (operand) 6비트 10비트 (1) CPU가 수행할 수 있는 연산의 종류는 최대 몇 가지 인가? 최대 연..
2022.01.18 -
[컴퓨터구조론] 1장 기본문제
1.1 다음 중 컴퓨터의 기본 구성요소로 볼 수 없는 것은? 1. CPU 2. 캐시 3. 입출력장치 4. 기억장치 컴퓨터의 기본 구성요소는 CPU, 기억장치, I/O장치가 있다 1.2 컴퓨터의 단어(word)에 대한 일반적인 정의로 옳지 않은 것은? 1. CPU가 한 번의 연산에 의해 처리할 수 있는 데이터 비트 수이다 2. CPU의 명령어(instruction) 길이와 같다 3. I/O 전송의 기본 단위이다 4. CPU가 기억장치로부터 한 번에 읽어올 수 있는 비트 수이다 단어(word) - CPU가 한 번에 처리할 수 있는 Data 비트 수 - CPU가 기억장치로부터 한 번에 읽을 수 있는 비트 수 - CPU의 명령어 길이와 동일 (3) I/O 전송의 기본 단위는 단어가 아니라 스트림이다 1.3 컴퓨..
2022.01.18 -
[컴퓨터구조] 컴퓨터 부품/시스템 발전 과정
컴퓨터 부품 발전 과정 1940년대 - 트랜지스터 (Transistor) - 제1세대 핵심 부품인 진공관을 대체 - 제2세대 컴퓨터들의 핵심 부품 더 작고, 가격이 저럼하고, 더 적은 열을 발산 반도체 재료인 실리콘으로 만들어진 고체 장치 1958년 - 집적회로(Integrated Circuit : IC) - 수만개 이상의 트랜지스터들 → 하나의 반도체 칩에 집적시킨 전자 부품 - 제3세대 컴퓨터들의 핵심 부품 IC 제조 과정 ▶ 집적도에 따른 IC칩 구분 (1) SSI (Small Scale IC) - 수십 개의 트랜지스터들이 집적 기본적인 디지털 게이트들을 포함 (2) MSI (Medium Scale IC) - 수백 개의 트랜지스터들이 집적 (카운터, 해독기, 시프트 레지스터)와 같은 조합회로/순차회..
2022.01.18 -
[컴퓨터구조] 컴퓨터 구조의 발전 과정
부품의 발전과정 1. 릴레이(relay)와 같은 기계식 부품들을 이용해서 구현 2. 주요 부품들을 트랜지스터/반도체 집적회로(IC)칩으로 대체 - 컴퓨터의 처리 속도 ↑ - 반도체 기억용량 칩 밀도 ↑ -> 저장 용량 ↑ - CPU 수 ↑, 하나의 칩에 여러 개의 CPU 코어 포함 -> 시스템 성능 ↑ 컴퓨터의 발전과정 1642년 (Blaise Pascal) - 최초의 컴퓨터 (덧셈/뺄셈 가능) 덧셈, 뺄셈을 하는 기계적 카운터 다이얼 위치에 따라 10진수를 표시하는 6개의 원형판 2세트 각 원형판은 일시적으로 숫자를 기억하는 레지스터로 사용 1671년 (Gottfried Leibniz) - 반복적 방법(Iterative) (덧셈/뺄셈 + 곱셈/나눗셈 가능) Pascal의 계산기에 2개의 원형판을 추가 ..
2022.01.18 -
[컴퓨터구조] 시스템의 구성
시스템 버스 (System Bus) - 컴퓨터의 구성요소(CPU, 기억장치, I/O장치)들을 서로 연결하고, Data/신호 교환을 위한 통로 - 한 번에 한 개의 장치만 Data 전송 가능 - 데이터 버스 / 주소 버스 / 제어 버스가 존재한다 데이터 버스 (Data Bus) CPU와 (기억장치, I/O장치) 사이에서 Data를 전달하는 통로 (기억장치, I/O장치)의 명령어와 Data를 CPU로 보낸다 CPU 연산결과를 (기억장치, I/O장치)로 보낸다 - 데이터를 주고 받아야 하기 때문에 양방향 버스 - 데이터 버스 크기(폭) = 한 번에 전송될 수 있는 Data의 크기(비트 수)를 결정 Word 크기, 레지스터 크기와 같다 if 데이터 버스 크기 = 32bit >> Data를 한 번에 32bit씩 ..
2022.01.17