CS

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/컴퓨터 구조

[컴퓨터 구조] 10. Single Cycle MIPS - 개요

Microarchitecture 컴퓨터 시스템은 위와 같은 계층으로 구성된다. 지금까지는 MIPS 명령어 체계를 정리하면서 3번째에 있는 Architecture 계층에 대해 고민했었다. 이제는 그보다 한단계 아래로 내려가서 마이크로 아키텍쳐를 보려고한다. 마이크로 아키텍쳐라는 말은 기계어로 된 명령어를 이해하고, 실행할 수 있는 CPU의 내부 하드웨어 구조를 의미한다. MIPS의 ISA를 구현하는 마이크로아키텍쳐는 다양하게 있다. 같은 ISA여도 구현은 얼마든지 바뀔 수 있다. (마치 x86을 구현한 AMD 와 Intel 의 CPU가 다른 것처럼) 대표적인 구현 방법으로 한 사이클에 하나의 명령어를 처리하는 Single Cycle 방식이 있다. 하나의 명령어를 실행하고, 그 명령어의 실행이 끝나면 그 다..

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 12. Application Layer (5) : DNS

DNS Domain Name System 인터넷 상에서 컴퓨터(호스트) 를 식별할 때 IP Address 를 이용한다. (정확히는 포트까지 이용한다.) 현재 가장 널리 쓰이는 체계는 32bit 주소 체계인 IPv4 이다. IP주소는 dotted decimal (점으로 구분한 십진수 4개) 으로서 사용되기 때문에 사람들이 이를 직접 기억하기 힘들다. 그래서 사람들이 기억하기 쉽게 문자열로 된 도메인 네임을 부여하였다. 하지만 실제 컴퓨터가 네트워크 상에서 통신을 하려면 결국 숫자로 된 IP주소를 이용해 통신해야해서, 이 도메인 네임을 아이피 주소로 변환할 필요가 있다. DNS 는 도메인 이름을 IP주소로 변환해주는 서비스를 일컫는다. (경우에 따라 그 반대를 할 수도 있다.) 그래서 결국 DNS는 도메인주..

CS/프로그래밍언어론

[프로그래밍언어론] 6. C언어의 BNF 문법과 파싱 예제

BNF 따라가기 BNF 문법은 나중에 YACC 라는 프로그램에 들어가 Parser 를 만든다. (야크는 파서 제너레이터이다.) 이번 글에서는 BNF 문법을 보고 주어진 C 코드를 파서가 어떻게 파싱하게 될 지 파싱트리를 그리는 과정을 직접해보고자 한다. 이 과정을 수행하려면 우선 lexical analyzer 에 의해 소스코드가 각각의 렉시컬 토큰 조각들로 구분이 되어있어야 한다. 소스코드에서 렉시컬 토큰을 추출하는 과정은 아래의 lex 코드를 참고하자. // 강의록에서 ANSI C grammer, Lex specification.pdf 에 있는 코드입니다. D [0-9] L [a-zA-Z_] H [a-fA-F0-9] E [Ee][+-]?{D}+ FS (f|F|l|L) IS (u|U|l|L)* %{ #i..

CS/컴퓨터 구조

[컴퓨터 구조] 9. 곱셈, 부동 소수점

곱셈 초등학교때 배운 곱셈 방식을 이용하면 이렇게 곱셈을 한다. 컴퓨터에서도 같은 방식으로 곱셈한다. 위에 곱하는 1000 을 곱해지는 수 ( = 피승수, multiplicand ) 라고 하고 아래에 곱하는 1001을 곱하는 수 ( = 승수, multiplier ) 라고 한다. 곱셈은 그 특성상, n bit 수와 m bit 수를 곱했을 때, 최대 n + m bit 수가 나올 수 있다. MIPS 의 경우, 32bit 수와 32bit 수를 곱해 최대 64 bit 수가 결과로 나올 수 있다. 이 수는 레지스터 하나에 저장할 수 없기 때문에 2개 레지스터를 사용하여 저장한다. 그래서 곱셈과 관련된 명령어는 위와 같이 사용한다. mult 는 r, s 레지스터의 값을 곱한다. 결과는 hi, low 라는 별도 공간에..

CS/프로그래밍언어론

[프로그래밍언어론] 5. Lexical and Syntax Analysis

만약 우리가 컴파일러를 만든다면, 첫번째로 할 일은 문자열 덩어리인 소스코드를 분석해서 렉심을 추출하는 (렉시컬 토큰을 추출) lexical analysis 과정을 먼저 거쳐야 한다. 다음으론 추출한 렉시컬 토큰들을 기반으로 문법이 올바른지 검사하는 syntax analysis 를 해야한다. 이때 문법을 표현하는 기법의 하나로 BNF를 사용했다. 이를 다시말하면, syntax analysis 를 할 때는 lexical analyzer 를 이용해 렉시컬 토큰을 추출하는 과정을 먼저 거쳐야 한다. 이 과정을 low-level part 라고도 한다. 이 과정을 수행할 땐 정규 표현식을 이용하거나, 제대로 하려면 오토마타 개념을 이용하여 추출해야 한다. 다음으론 high-level part 인 syntax an..

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

[OpenGL] 13. Transformation (1) - 변환의 기본 개념

Trnasformation 객체의 위치를 옮기거나 모습을 변형하는 것 (이동, 회전, 크기 변경) 변환을 할 때는 행렬을 사용하는 것이 효율적이다. OpenGL 에서 사용할 때는 Shader 의 input vertex 를 변환하는 것으로 적용한다. 다음이 OpenGL 에서 사용하는 변환의 큰 과정이다. 대문자 V 는 vertex 정점을 의미하고, M 은 matrix 행렬을 의미한다. V clip 이라는 정점을 얻기 위해 V local 이라는 정점에 model 행렬, view 행렬, projection 행렬 순으로 변환을 적용한다는 의미이다. 이를 OpenGL 방식 코드로 보면 이렇게 된다. 입력 정점으로 V local 이 들어오면, 여기에 model 행렬을 곱해 변환하고, view 행렬을 곱해 변환하고,..

CS/컴퓨터 구조

[컴퓨터 구조] 8. Computer Performance

컴퓨터 성능의 측정 지표 1. Response Time ( Execution time, Latency) 특정한 작업을 시작해서 끝낼 때까지 걸린 시간을 측정한다. 개개인의 유저가 중요하게 생각하는 지표이며, 임베디드 컴퓨터와 개인용 컴퓨터는 response time 을 중요하게 생각한다. 2. Throughput 정해진 시간동안 처리하는 일의 양을 측정한다. 데이터센터나 슈퍼컴퓨터 관리자들이 중요하게 생각하며, '서버' 는 스루풋을 중요하게 여긴다. 컴퓨터 머신의 종류와 사용처에 따라 중요하게 생각하는 지표가 다르다. (쓰루풋을 단순히 response time 의 역수로 생각할 수는 없다.) Example 한번 다음과 같은 과정을 거쳐 빨래를 한다고 해보자. 세탁기는 30분, 건조기는 40분, 빨래를 개..

CS/컴퓨터 구조

[컴퓨터 구조] 7. MIPS 명령어 총 정리

산술 명령어 (Arithemtic Instructions) R - Format add, sub add rd, rs, rt => rd = rs + rt sub rd, rs, rt => rd = rs - rt mult $r, $s => r * s, 곱셈의 경우, 연산 결과는 따로 어딘가에 저장됨 mfhi $d => set hi to $d 연산 결과의 상위 32bit를 $d 레지스터에 이동 mflo $d => set lo to $d 연산 결과의 하위 32bit를 $d 레지스터에 이동 div I - Format addi / addiu addi rt, rs, imm => rt = rs + imm (rd 가 없으니 rt 를 대신 목적지로 사용한다. addiu 는imm 값을 zero extend 한다.) 논리 명령어..

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