CS

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 15. Transport Layer (1) : 트랜스포트 계층 개요

Transport Layer가 제공하는 서비스 트랜스포트 계층은 어플리케이션 계층과 네트워크 계층 사이에 존재한다. 1장에서 공부했던 레이어 개념을 다시 생각해보면, 트랜스포트 계층은 네트워크 계층이 제공하는 서비스를 이용하여 어플리케이션 계층에 서비스를 제공한다고 볼 수 있다. 그렇다면 트랜스포트 계층은 어떤 서비스를 제공해야 할까? 간단히 말해서 process to process 커뮤니케이션 기능을 제공한다. 프로세스와 프로세스가 통신하기 위해서는 그 프로세스가 실행되는 컴퓨터와 컴퓨터 사이 통신이 제공되어야 하는데, 이 서비스는 네트워크 계층에서 제공한다. 또는 이 서비스를 logical communication 이라고도 한다. 서로 다른 두 호스트 사이에 어플리케이션 프로세스가 존재하는데, 그 프..

CS/컴퓨터 구조

[컴퓨터 구조] 13. Single Cycle MIPS - Execute

MIPS CPU의 Execute 단계가 어떻게 실행되는지 명령어의 기능에 따라 구분하여 정리하였다. 산술/논리 연산자 실행 add, sub, addi, or, and 와 같은 명령어를 실행하는 과정을 먼저 생각해보자. 우선 위 연산을 실질적으로 실행하는 유닛은 ALU 라는 유닛이 수행한다. 산술 연산과 직접적으로 관련된 명령어 포맷은 R 포맷과 I 포맷 밖에 없다. R 포맷은 모든 피연산자가 레지스터고, 연산 결과가 레지스터로 들어간다. I 포맷은 피연산자가 하나는 레지스터, 하나는 상수고, 연산 결과가 레지스터로 들어간다. 우선 피연산자 하나는 반드시 레지스터에서 오고, 연산 결과는 레지스터로 들어가는 것이 동일하므로 아래와 같이 그릴 수 있다. 이제 결정해야 하는 것은 R 포맷이면 레지스터로부터 AL..

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 14. Application Layer (7) : Socket Programming

소켓 소켓은 인터넷 어플리케이션을 개발할 때, 4계층이 제공하는 서비스를 이용할 수 있는 일종의 API 이다. 소켓을 이용하면 클라이언트 / 서버 어플리케이션을 만들 수 있다. 그리고 멀리 떨어진 두 프로세스는 소켓을 이용해서 서로 통신할 수 있다. 소켓을 사용하면 어플리케이션 계층에서 짤 비즈니스 로직에만 집중하고, 데이터가 어떻게 전송되는지는 신경쓰지 않아도 된다. 소켓에는 크게 UDP 소켓과 TCP 소켓이 있다. UDP, TCP는 4계층의 프로토콜로, UDP는 신뢰성을 보장하지 않지만, 빠르고 가벼운 프로토콜이고 TCP는 경우에 따라 느려지기도 하고 무겁지만, 신뢰성을 보장해주는 byte stream-oriented (바이트 단위 전송) 프로토콜이다. 바이트 단위 전송이라는 뜻은 TCP가 어플리케이..

CS/HCI 윈도우즈프로그래밍

[OpenGL] 16. Transformation (4) - 셰이더에 행렬 변환 적용하기

이번 글에서는 셰이더에 행렬 변환을 적용해보려고 한다. 이 예제로 한번 사람의 팔과 비슷하게 동작하는 프로그램을 작성해보려고 한다. 키보드를 눌러 각도를 조작하면 팔이 회전할 수 있다. 팔의 회전은 상박따로, 하박 따로 회전한다. 기본 코드 틀 #include #include #include "Shader.h" #define STB_IMAGE_IMPLEMENTATION #include "stb_image.h" #include #include #include float vertice[] { -0.3, -0.2, 1.0, // left - bottom +0.3, -0.2, 1.0, // right - bottom -0.3, +0.0, 1.0, // left - top +0.3, +0.0, 1.0, // ri..

CS/컴퓨터 구조

[컴퓨터 구조] 12. Single Cycle MIPS - Decode

MIPS Decode 회로 지난 글에 이어 MIPS의 Decode 회로를 설계해보자. Decode 과정은 명령어를 해석하는 과정이다. 명령어를 실행하려면 크게 2가지 정보를 알아야 한다. 1. 무슨 명령어인가? ( = 연산자 정보) 2. 무엇을 가지고 실행하는가? ( = 피연산자 정보) MIPS 명령어는 포맷별로 아래와 같은 형태를 갖추고 있다. 3가지 포맷은 모두 공통적으로 6bit 크기의 opcode 필드를 갖고 있다. 이 opcode를 통해서 지금 주어진 명령어가 어떤 명령어인지 식별한다. R 포맷은 opcode 에 더해 function 필드 정보를 조합하여 실행할 명령어를 식별한다. 그리고 opcode 와 funct 를 제외한 나머지 필드가 모두 피연산자로서 활용하는 필드가 된다. 우선 J 포맷은..

CS/컴퓨터 구조

[컴퓨터 구조] 11. Single Cycle MIPS - Fetch

Fetch 회로도fetch는 명령어를 가져오는 과정이다.명령어를 가져올 때, 컴퓨터는 PC (Program Counter) 라는 특별한 레지스터를 이용한다.이 레지스터에는 현재 실행할 명령어가 메모리 어디에 담겨있는지, 그 주소값이 담겨있다.컴퓨터가 처음 실행되면, PC는 0으로 초기화되고, 메모리 0번지에 있는 명령어를 가져와 실행할 것이다.하나의 명령어를 실행한 이후에는, 다음 명령어를 실행하기 위해 PC 값을 4 증가시킨다. (32bit 시스템 기준) 이 과정이 점프나 분기가 없는, 순차적으로 실행되는 프로그램 기준 Fetch 의 과정이다.이를 회로도로 그려보자.  먼저 CPU 공간과 명령어를 가져오는 메모리 공간을 따로 그려보자.  CPU 안에는 PC 라는 특별한 레지스터가 있다. 32bit-re..

CS/프로그래밍언어론

[프로그래밍언어론] 7. Parsing Problem

파서의 목표는 소스코드를 받아서 파싱을 한 뒤, Parse Tree 를 만드는 것이다.만약 파싱하다가 실패했다면 소스코드에서 문법에 맞지 않는 부분이 있었다는 뜻이므로,파서는 syntax error 가 발생했다는 걸 알려줘야 한다. 잘 동작하는 파서는 파싱할 때 토큰 1개를 더 앞서 볼 수 있다. (look ahead, LA)그래야 알맞는 BNF 문법을 체크할 수 있다. 파서에는 2가지 카테고리가 있다.첫번째는 탑-다운 / 두번째는 바텀-업 이다.탑 - 다운 파서탑-다운 파서는 root 부터 시작해서 아래로 내려가면서 파스 트리를 만든다.탑-다운 파서는 왼쪽에서부터 파고들어 본다. (즉 pre-order 순으로 파싱트리를 만든다.)xAα 라는 sentential form 이 주어..

CS/HCI 윈도우즈프로그래밍

[OpenGL] 15. Transformation (3) - GLM 사용하기

이제 지금까지 정리한 변환을 실제 코드로 구현해보려고 한다. OpenGL 과 관련하여 행렬 연산을 간편하게 지원하는 glm 라이브러리를 사용하면 편하게 행렬을 만들고 연산할 수 있다. https://github.com/g-truc/glm GitHub - g-truc/glm: OpenGL Mathematics (GLM) OpenGL Mathematics (GLM). Contribute to g-truc/glm development by creating an account on GitHub. github.com 우선 위 깃허브에 가서 최신버전의 glm 을 다운받는다. 다운받은 glm 파일은 외부 include 디렉터리로 꼭 등록해주자. 이제 glm 을 사용하여 행렬연산을 할 수 있다. 이때는 위와 같은 헤더..

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 13. Application Layer (6) : Video Streaming And CDN

비디오 스트리밍 서비스의 기술적 어려움 넷플릭스, 유튜브와 같은 비디오 스트리밍 서비스의 트래픽은 인터넷에서 많은 부분을 차지하는 트래픽이다. 그래서 이런 비디오 스트리밍 서비스가 갖는 기술적 어려움이 몇 가지 있다. 1. scalability (확장성) 10억명이 넘는 유저들이 안정적인 서비스를 제공받으려면 정말 크고 안정적인 네트워크를 갖고 있어야 한다. 2. heterogeneity (이질, 개인화 정도로 이해했다.) 유저마다 자신이 살고있는 곳의 네트워크 환경이 다양할 것이다. 우리나라는 광대역이 잘 깔려있어서 500Mbps 네트워크를 갖는 경우도 많지만 외국은 100Mbps 대역폭을 쓰는 곳도 굉장히 많다. 또 어떤 사람은 이동중에 스트리밍 서비스를 이용하고, 어떤 사람은 유선 네트워크를 이용해..

CS/HCI 윈도우즈프로그래밍

[OpenGL] 14. Transformation (2) - 복합 변환

지난 글에서 OpenGL 에서 사용하는 전체 변환의 과정과 함께, 그 변환 하나하나에 사용되는 기본 변환인 이동, 회전, 크기조절 3가지를 정리하였다. 이번 글에서는 각각의 기본 변환이 연속적으로 일어나 하나의 행렬곱 형태로 묶인 복합 변환에 대해 정리한다. 용어 복합 행렬 (Composite Matrix) 는 연속된 변환 행렬을 모두 곱한 하나의 행렬이다. 복합 변환 (composite Transformation) : 복합 행렬로 표현되는 일련의 연속된 변환이다. 만약 어떤 물체 P 에 대해 크기조절 변환 S1 을 가하고, 회전 R1 을 가한 뒤, 다시 크기를 S2로 조절했다고 하면 이 물체를 구성하는 새로운 정점 P' = S2 * R1 * S1 * P 로 표현할 수 있다. 기존 물체 왼쪽에 변환 행렬..

에버듀
'CS' 카테고리의 글 목록 (18 Page)