728x90
반응형

컴퓨터(Computer Science) 205

2의 보수(2's complement) [컴퓨터구조]

최근 다시 정리: [프로그래밍언어(Programming Language)/C || C++] - 2의 보수, 2's complement [C] 솔직히 그냥 이진법만 알지 컴퓨터에 관심이 하나도 없으면 모를 것 같은 2의 보수에 대해서 알아보려고 한다. 나도 처음에는 감이 하나도 안왔다... 뭐길래?? 우선 컴퓨터는 2진수를 사용한다. 0과 1 이거는 컴퓨터를 배우지 않아도 살다보면 알게 되는 상식 중에 하나였다. 그런데 우리는 2진수에서 음수를 표현할 때 -하나 붙혀서 표현했지만 컴퓨터는 어떻게 표현할까? 라는 의문을 가진다. (안 가졌으면... 그럴 수 있지) 아무튼 컴퓨터는 음수를 010101로 어떻게 표현할까? 그래서 나온 것이 2의 보수이다. 우선 MIPS를 배웠으니 MIPS에서는 수 표현을 어떻게..

컴퓨터 성능이 생각대로 늘어나지 않는 이유, 암달의 법칙(Amdahl's Law)[컴퓨터구조]

우리가 클럭 2배면 컴퓨터 성능이 2배가 될 것을 기대하지만 사실 엄청난 착각을 하며 기대하고 있는 것을 가끔씩 까먹는다. 그 착각은 컴퓨터의 한 부분만 개선하고 그 개선된 양에 비례해서 전체 성능이 좋아질거라고 생각하는 것이다. ?? 사실 이미 나왔던 생각이기도 하다. 앞에서 나왔던 Make Common Case Fast 의 생각을 하면 되겠다. 이제 자세히 알아보자 이 식을 보고 넘어가자 T는 시간이다. 예를 들어서 컴퓨터에서 100초 걸리는 프로그램이 있는데 그 중 80초는 더하기, 곱셈 연산에 쓰인다고 하자. 그렇다면 이 프로그램을 5배 빠르게 하려면 더하기, 곱셈 연산은 어느 정도의 속도로 향상시켜야 할까? 더하기 연산의 속도를 5배로 올린다고 바로 프로그램의 수행시간이 바로 20초로 줄어들까?..

컴퓨터의 성능을 가로막는 전력, Power Wall [컴퓨터구조]

클럭속도를 높이면 성능이 올라가는데...? 왜 요즘 클럭속도는 높아봐야 4-5GHz 밖에 안되느냐???? 라고 할 수 있다. 이 그림은 Intel이 보여주는 Clock rate 와 Power의 관계를 나타낸 것이다. 저기 보면 같이 전력도 클럭 속도도 올라간다. (2004년을 기점으로 정체) -> Power Wall 클럭속도는 정체되어있지만 분명 소비전력이 줄어드는 발전이 있다. 소비 전력을 줄이는 발전도 물론 발전이다. 그런데 사람들은 전력을 더 쓰더라도 속도를 원한다. 하지만 그럴 수 없는 이유가 있다. 예를 들어보자 분명 새로운 CPU가 더 소비전력이 낮아졌다. 즉, 발전을 하긴 했는데...? 클럭 속도는 예전 것이 더 빠르다. 그냥 소비전력 상관없이 클럭속도 올려!!!라고 할 수 있겠지만 소비 전..

컴퓨터 구조 분야에 대한 8가지 아이디어 [컴퓨터구조]

컴퓨터 구조를 얘기할 때 MIPS, RISC 그런 것들보다도 우선되는 생각이 있다. 사실 이 생각을 하지 않고 개발하면 개발하나마나 똑같은 결과라고 할 정도로 정말 중요한 생각들이 있다. 무려 8가지나 된다. 영어 설명도 넣어줄테니까 실망하지말고 공부해보자 8가지를 우선 설명하겠다. 1. 무어의 법칙을 고려한 설계 2. 추상화로 설계하기 3. 반복되는 작업을 빠르게 하기 4. 병렬성을 통한 성능 개선 5. 파이프라이닝 6. 예측 7. 메모리 계층구조 8. 신뢰도를 위한 여유분 영어로는 1. Design for Moore's Law 2. UseUse Abstraction to Simplify Design 3. Make the Common Case Fast 4. Performance via Paralleli..

Elgamal 암호 방법 [컴퓨터보안]

오늘은 RSA 다음으로 Elgamal 방법을 알아보려고 한다. 이산 대수를 구하는 것이 어려운 것을 이용한다. 영어로는 (Discrete Logarithm Problem, DLP) 암호문의 길이가 2배가 되어버린다는 결점을 가지고 있는 암호이다. 어디서 많이 본 식이네?? 암호화 할 때 이 식을 사용할 것이다. P가 소수이고, g 가 원시근일 때, y,g,p를 알고 x를 구하는 것으로 계산한다. P가 큰 소수일 때 x를 구하는 것은 시간상으로 불가능에 가깝다. Elgamal 암호에서는 x가 개인키, y가 공개키로 사용된다. 그 전에 알아야 할 것이 몇 개 있다. ++간단하게 설명하겠다. 원시근(primitive root)란 (n)집합 A가 있고 원소로는 {a,b,c,d}를 포함하고 있을 때, a부터 d까..

프로젝트 계획(12) 상세 설계 - 디자인 패턴 [소프트웨어공학]

소프트웨어 설계이 이유는 소프트웨어 솔루션을 위한 문제 해결과 계획 과정이라고 할 수 있다. 하지만 큰 그림만 그려서는 완성이 안된다. 이제 디테일, 세부사항에 대해 들어가보자 아키텍쳐 설계 단계에서는 추상 수준은 높다 그렇지만 모듈 추상 수준은 조금 낮다. 상세 설계에서는 추상 갭을 메우기 위하여 클래스 인터페이스와 내부에 대한 설계, 영구적 데이터에 대한 설계 작업이 필요하다. 그런데 위에 제목에서 말했듯이 디자인 패턴, 즉 어떤 패러다임을 사용하느냐에 따라 상세 설계가 많이 달라진다 ++ 우리는 2가지를 배웠다. 구조적 방법, 객체지향 방법 1.구조적 방법 프로시저 안의 로직 (알고리즘) 설계 2. 객체지향 방법 클래스 안의 메소드 설계 // 이미 글을 처음부터 봤으면 다 알 것이다. 소프트웨어 시..

프로젝트 계획(11-2) 미들웨어 [소프트웨어공학]

이번에는 미들웨어를 알아보자 미들웨어 딱 들으면 뭔가 중간에 있는 ?? 그런 느낌이 난다 진짜인지 아닌지 알아보자 소프트웨어 아키텍쳐는 빌딩 아키텍쳐와 비슷하다고 말하곤 하는데 빌딩을 설계할 때 여러 각도에서 설계도를 작성하고 빌딩의 구조와 기하학 및 특성을 나타내도록 한다. 다시 말해서 설계는 요구를 기초로 건축 공간, 기능, 미학적 또는 기능적 품질 , 예산을 고려해서 표현한다. 설계도를 이제 정말 시공회사가 건축할 수 있을 정도로 바꾸려면 더 많은 작업이 필요한데 예를 들어서 벽, 바닥 레이아웃, 계단, 전기 시스템, 수도 등등 추가로 설계할 것들이 엄청나게 많다. 위에 설명을 왜 했느냐??? 다 미들웨어를 설명하기 위해서 했다. 미들웨어를 건축에 비유하자면 배관이나 배선에 해당하는 부분이라고 할 ..

RSA 공개 키 암호방식

우선 RSA라는게 공개 키 알고리즘의 하나인데 RSA 이름은 어떻게 만들어졌냐 하면?? • 개발자 3명의 이름 • Ron Rivest, Adi Shamir, Leonard Adleman의 이니셜(Rivest- Shamir-Adleman) 호랑이는 가죽을 남기고 사람은 이름을 남긴다라는 말이 언제나 맞는 것같다. 암호화 방법과 복호화 방법은 정말 간단하다. ?? 뭐야?? 이렇게 간단해?? 라고 생각하면 맞긴 한데... 뒤에서 설명하겠다. 우선 RSA 암호의 구성을 살펴보자 공개키로 암호화 하고 개인키로 복호화 하는 방식이다 그렇지?? 그렇다면 공개키, 개인키 등 암호에 필요한 숫자들을 어떻게 구하는지 알아봐야겠지?? 키를 만드는 순서는 이렇다. 1) N을 구한다 2) L을 구한다 (L은 키 쌍을 생성할 때..

프로젝트 계획(11-1) 아키텍쳐 스타일 [소프트웨어공학]

6가지는 이전 글에서 설명했으니 첫 번째 부터 차차 살펴볼까? 계층 구조 스타일 그림을 보면 살짝 감이 오겠지만 고전적인 방법으로 각 서브시스템이 하나의 계층이 되어 하위층이 제공하는 서비스를 상위층의 서브시스템이 사용하도록 구성된다. 즉 상위층은 클라이언트가 되며 하위층이 서버처럼 작동하고 미리 정의된 API를 이용하여 상호작용을 한다. ++N-tier 아키텍쳐 스타일은 각 층을 보다 개선된 버전으로 교체할 수 있다. 예를 들어 시스템을 여러 플랫폼에 이식할 때 사용자 인터페이스 층을 교체할 수 있다. (물론 어떤 층의 교체가 하위층에 영향을 주어서는 안된다.) ++N -tier 아키텍쳐 스타일은 대화형 시스템을 위한 스타일로 자주 사용된다. (꼭 대화형 시스템만을 위한 것은 아니다. 대부분 운영체제가..

프로젝트 계획(11) 아키텍쳐 설계 과정 [소프트웨어공학]

오늘은 설계과정 살짝 맛만보자 소프트웨어 시스템의 아키텍쳐 설계 과정은 의사 결정 과정이면서 동시에 인지적인 과정이란다. 시스템의 타입이 아키텍쳐 스타일에 큰 영향을 주는데 그래서 내가 무엇을 만드는지, 목적이 무엇인지 설계하면서 방향성을 잃지 않아야 한다. 아키텍쳐 설계는 반복적인 과정이다. **시스템이 서브 시스템으로 구성되어 있고 그 서브 시스템은 컴포넌트나 다른 서브 시스템으로 구성되어있으니까. 그림을 보고 이해해보자 ,아키텍쳐 설계과정이다. 말로 한 번 더 설명해보자면 Step 1. 목표를 설정한다. 전체 시스템에 대한 설계 목표가 파악되고 결정되어야 한다. Step 2. 시스템의 타입을 결정한다. 시스템이나 서브시스템의 타입을 결정한다. // 그래야 스타일 결정하지 Step 3. 아키텍처 스타..

728x90
반응형