일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- osi 7
- 사설 IP
- 공인 IP
- 코드 컴플릿
- float
- MMU
- L3 Router
- TCP
- Sector
- addressing mode
- Code complete
- 클린 코드
- physical address
- private ip
- ack
- Clean code
- CPU
- network
- refactoring
- ALU
- L2 switch
- 리펙토링
- page
- interrupt
- 가독성
- register
- 명령어
- Public IP
- floating point
- cache
- Today
- Total
목록전체 글 (94)
Software Lab

OSI7 계층에 따라 패킷이 어떻게 만들어져서 전송되는지 알아보자. 전송 방식 중에서 REST API를 예로 들겠다. 왼쪽 송신 호스트에서 오른쪽 수신 호스트로 데이터를 REST API 방식으로 전송하려 한다. 왼쪽 송신 호스트는 OSI 7계층에 따라 데이터를 패킷으로 만들게 된다. 먼저 데이터에 7계층 HTTP 헤더를 붙인다. 다음으로 6계층 JSON 헤더, 5계층 Token 헤더를 차례대로 붙인다. 이렇게 5~7계층의 헤더를 붙이는 작업은 응용프로그램에서 한다. 다음으로 5에서 7계층의 헤더가 붙은 패킷은 Socket의 Send API를 통해 커널 영역으로 넘어간다. 커널에서는 4계층 TCP Port 등의 헤더를 붙인다. 다음으로 3계층 IP 헤더, 2계층 MAC 헤더를 차례대로 붙인다. 이렇게 만들..

OSI 7계층은 통신 과정에서 필요한 기술들을 7단계로 나눈 것이다. 아래 그림은 OSI 7계층을 여러 측면을 나타낸 것이다. 먼저 그림 가장 오른쪽을 보면 OSI 7계층의 기술들은 누가 개발하는가의 측면으로 나누었다. 1계층의 Repeater, Lan cable 등은 하드웨어 개발자들이 구현한다. 2~4계층의 ARP, TCP, UDP, ICMP 등은 Kernel 개발자가 구현한다. 5~7계층은 HTTP, SSL, Token 등은 응용 프로그램 개발자가 구현한다. Physical : 디지털 데이터를 아날로그 형태의 전기적 신호로 변환하여 물리적으로 전송한다. 주소 개념 없이 연결된 노드 간에 신호를 주고받는다. 이 계층은 Lan cable, Repeater, NIC(Network interface car..

네트워크 시스템과 택배 시스템을 비교해 보자. 성남 금곡동에 사는 홍길동이 부산 감만동에 사는 초선에게 물건을 보내는 과정을 살펴보자. 먼저 홍길동은 보낼 물건을 포장해서 택배로 만든다. 택배에는 받는 사람 주소(이하 출발 주소), 보내는 사람 주소(이하 목적 주소)가 적힌다. 다음으로 홍길동은 택배를 택배 기사에게 건네준다. 택배 기사는 관할하는 금곡동 택배 집결지에 택배를 가져다 놓는다. 금곡동 택배 집결지에서는 택배의 목적 주소를 확인한다. 만약 목적 주소가 같은 동네라면 그 사람한테 바로 보내면 된다. 그렇지 않고 목적 주소가 다른 동네라면 성남 택배 집결지로 가게 된다. 성남 택배 집결지에서는 택배의 목적 주소를 확인한다. 이제 택배는 부산 택배 집결지로 가게 된다. 다시 택배는 감만동 택배 집..

① Copy : 메인 메모리에 있는 데이터를 GPU 메모리 공간으로 복사한다. ② Instruct : CPU는 GPU에 연산을 요청하는 명령을 보낸다. ③ Execute : GPU는 메모리의 데이터를 연산하고 결과를 다시 메모리에 저장한다. ④ Copy : GPU 메모리에 저장된 결과를 메인 메모리에 복사한다. 이러한 처리 절차를 API로 제공하는 것이 바로 Cuda 이다.

현재 GPU는 빅데이터, 딥러닝, 블록체인, 이미지 처리, 게임 등에서 많이 활용된다. 이런 프로그램들의 공통점은 다차원 배열의 실수 연산이 많다는 것이다. CPU는 성능 좋은 ALU가 적게 들어가는 반면 GPU는 성능 낮은 ALU가 많이 들어가 있다. 또한 CPU는 모든 연산의 성능을 고루 좋도록 설계되지만, GPU는 실수 연산 성능을 높이는 것을 우선으로 하여 최적화 설계 된다. 다음과 같이 배열의 실수 덧셈이 있다. CPU는 하나의 ALU를 통해서 차례대로 하나씩 연산한다면 GPU는 다수의 ALU를 통해서 병렬적으로 동시에 연산한다. 그러므로 다차원 배열의 실수 연산은 CPU보다 GPU가 더 빠르다. GPU는 그래픽 카드에 설치되어있다. 그래픽 카드의 본래 목적은 이미지를 디스플레이 장치로 출력하는..

아날로그 신호는 표본화, 양자화, 부호화 단계를 거쳐서 디지털 신호로 변환된다. 표본화 : 신호를 시간 축으로 등분하는 작업이다. 녹음 시 설정하는 샘플 레이트(Sample rate)가 있다. 이것은 표본화에서 1초를 몇 등분 할 것인가를 나타낸다. 샘플 레이트가 클수록 음질은 좋지만 데이터양은 커진다. 양자화 : 표본화로 구해진 값을 대푯값으로 변환한다. 예를 들어 표본화로 구해진 값이 1.1156 라면 이것을 정확히 1로 정수화한다. 녹음 시 설정하는 비트 값이 있다. 이것은 몇 비트의 대푯값인가를 의미한다. 비트가 클수록 음질은 좋지만 데이터양은 커진다. 부호화 : 양자화에서 구해진 정숫값을 2진수의 bit로 변환한다.

인간이 인식할 수 있는 신호는 파동 행태의 아날로그 신호이다. 가령 소리는 음파, 화면은 빛의 광파이다. 컴퓨터는 bit로 이루어진 디지털 신호를 처리한다. 컴퓨터에서 입력 장치들은 아날로그 신호를 디지털 신호로 바꾸어 주는 변환 회로가 있다. 그것을 ADC(Analog to digital converter)라고 한다. 반대로 출력 장치들은 디지털 신호를 아날로그 신호로 바꾸어 주는 변환 회로가 있다. 그것을 DAC(Digital to analog converter)라고 한다. 메모리와 I/O Decvices 간에 데이터를 전송하는 방식은 PIO, DMA 두가지가 있다

HDD에서 Sector와 Track은 각각 SSD의 Page와 Block에 매칭된다. HDD는 Sector와 Track으로 구성된 원판 Disk를 여러 개 쌓아 놓은 형이기 때문에 CHS 주소 방식을 사용한다. SSD의 구조는 HDD와 다르다. 그런데도 이미 HDD의 CHS 주소 방식에 맞게 개발된 기존 SW와의 호환성을 위해 SSD에서도 CHS 주소 방식을 사용한다. 그 때문에 SSD 내부에는 CHS 주소를 Page, Block 주소로 변환하는 장치가 있다. HDD는 Header가 회전하는 Disk에 접근하는 순차 접근(Sequential access) 방식이다. 반면 SSD는 특정 위치에 바로 접근하는 임의 접근 (Random access) 방식이다. 그 때문에 SSD의 속도가 더 빠르다. 또한 SS..