자신이 좋아하는것

2010년 11월 28일 일요일

ER 모델링 에 관하여

ER 모델링 ( 개체 관계 모델링)
    
ER 모델링은 데이터베이스 설계를 용이하게 하기 위해 P.P.Chen 이 1976년에 제안한 후 많은 학자들이 이 모델을 강화시켰으며 현재는 EER(Enhanced Entity Relationship) 모델이 데이터베이스 설계 과정에 널리 사용되고 있습니다. 개념적 설계를 위한 인기 있는 모델로서, 높은 수준으로 추상화하며, 이해하기 쉬우며, 구문들의 표현력이 뛰어나고 사람들이 응용에 대해 생각하는 방식과 가깝고, 많은 CASE 도구들에서 지원이 됩니다.

ER 모델은 실세계를 엔티티, 애트리뷰트, 엔티티들 간의 관계로 표현하면 ER 다이어그램은 엔티티 타입, 관계 타입, 이들의 애트리뷰트들을 그래픽하게 표현합니다. ER 모델은 적은 노력으로 쉽게 배울 수 있고, 전문가가 아니어도 이해하기 쉬우며, 자연어보다는 좀 더 정형적으로, 구현에 독립적이어서 데이터베이스 설계자들이 최종 사용자들과 의사소통을 하는데 적합합니다.
 

ER 모델링 용어

- 엔티티(Entity) : 데이터베이스 테이블
- 속성(Attribute) : 데이터베이스 컬럼, 열
- 인스턴스(Instance) : 튜플, 행
- 주식별자(Primary identifier) : 기본키(Primary key)
- 외래식별자(Foreign identifier) : 외래키(Foreign key)


1. 엔티티 (개체, Entity)

엔티티란 사람, 장소, 사물, 사건 등과 같이 독립적으로 존재하면서 고유하게 식별이 가능한 실세계의 객체로 업무의 관심 대상이 되는 정보를 갖고 있거나 그에 대한 정보를 알아야 하는 유형, 무형의 사물이나 객체입니다. 엔티티의 종류는 실체가 있는 것도 있지만 생각이나 개념과 같이 추상적인 것도 있습니다.


유형 엔티티 
: 물리적인 형태가 있는 엔티티 (고객, 사원 등) 

무형 엔티티
: 물리적인 형태가 없고 개념적으로 존재하는 엔티티 (생산계획, 부서조직 등)

문서 엔티티
: 업무 절차상에서 사용되는 문서나 장부, 전표에 대한 엔티티 (거래명세서, 입출금전표, 주문서)

이력 엔티티
: 업무상 반복적으로 이루어지는 행위나 사건의 내용을 일자별, 시간별로 저장하기 위한 엔티티 (입고 이력, 출고 이력 등)

코드 엔티티
: 무형 엔티티의 일종으로 각종 코드를 관리하기 위한 엔티티 (국가코드, 색상 코드등)


엔티티를 정의할 때는 엔티티 안에 중복되는 데이터가 없어야 하며, 엔티티 이름을 지을 때는 한번에 알 수 있게 지어야 하고, 축약어를 쓸 경우 정해진 룰에 따라 지어야 합니다. 데이터의 중복은 데이터의 정합성을 해칠 가능성이 그 만큼 높아지며, 모호한 이름을 사용하는 경우와 축약어가 중구난방으로 쓰여진 경우에는 가독성을 해치게 됩니다. 
   
2. 애트리뷰트 (Attribute, 속성)

하나의 엔티티에 연관된 애트리뷰트들의 집합으로 한 애트리뷰트의 도메인은 그 애트리뷰트가 가질 수 있는 모든 가능한 값들의 집합을 의미합니다. 테이블에서 컬럼을 말하며 객체로 본다면 객체의 속성을 말합니다. 키 애트리뷰트는 한 애트리뷰트 또는 애트리뷰트들의 모임으로서 한 엔티티 타입 내에서 각 엔티티를 고유하게 식별합니다. ER 다이어그램에서 기본키에 속하는 애트리뷰트는 밑줄을 그어 표시합니다.

  • 기본 속성 : 업무 분석을 통해 현실 세계로 부터 얻어낸 속성 (제품명, 원가, 이름, 나이 등)
  • 설계 속성 : 현실 세계에 존재하지 않지만 설계 과정에서 만들어진 속성 (국가코드, 부서코드 등)
  • 유도 속성 : 다른 속성으로부터 계산이나 변형에 의해 나온 속성 (금액 = 수량 * 단가 등)
   
  
3. 관계와 관계 타입 (Relationship)

개체와 다른 개체와의 연관 관계를 표현합니다. 즉, 객체 집합 구성원소 사이의 대응성을 mapping 합니다. 관계성에는 일대일(One-to-One), 일대다(One-to-Many), 다대다(Many-to-Many) 관계가 있습니다.

  
- 일대일 ( One-to-One ) 관계 








회원 = { 회원 인덱스 + 이름 } , 회원정보 = { 회원 인덱스 + 나이 + 주소 + 성별 } 이렇게 두 테이블이 있다면 이 두 테이블은 일대일 대응관계를 가지고 있습니다. 이럴 때는 하나의 테이블로 통합하여 관리하는 것이 좋습니다. 테이블을 통합하거나 유지할 때는 용도, 편리성, 저장 공간을 고려하여 결정해야 합니다.


- 일대다 ( One-to-Many ) 관계 








회원 = { 인덱스 + 이름 }, 취미 = { 회원 인덱스 + 취미 } 이 경우는 회원이 가질 수 있는 취미의 종류가 많기 때문에 한 회원이 다양한 취미를 가질 수 있습니다. 이런 관계가 일대다 관계인데요. 하나에 해당하는 테이블에는 기본키를 가지고 다에 해당하는 테이블에는 기본키를 외래키로 추가하여 연결하는 방법입니다. 하나로 관리하면 Null 값이 많이 생겨 공간의 낭비가 발생할 때 새로운 테이블을 생성하여 테이블을 나누는 것이라 볼 수 있습니다.


- 다대다 ( Many-to-Many ) 관계








다대다 관계는 회원 = { 이름 + 나이 + 주소 }, 상품 = { 상품명 + 제조사 + 가격 } 같이 상품을 구매하는 경우 발생합니다. 이 때는 각각의 개체를 테이블로 작성한 후 기본키를 새로 작성한 구매 = { 회원(FK) + 상품(FK) + 수량 } 테이블을 생성하여 테이블의 관계를 맺는 방법을 사용합니다. 
 
 
 
ER모델링이란 세상에 존재하는 모든 사실이나 현상을 실체와 관계라는 개념으로 표현하는 것입니다.  연구실과 학생이라는 실체는 소속이라는 관계에 의해 연관되어 있다고 할때  '학생은 연구실에 소속되어 있다'라는 사실로 표현할 수 있습니다.
 
그리고 ER 모델링에서 표현하는 방법도 찾아 보았는데요.
 
ER 모델링에서 표현하는 방법은 여러가지가 있으며 대표적인 것은
ER 모델링을 제창한 P.chen 에 의한 표기법과 
Crow's Foot 표기법,
Rein85표기법, 
IDEF1X 라는 표기법의  4가지가 있습니다.                                                                         4. IDEF1X ERD
 
 
 
                                                        ER 모델링 표현 상징 사이의 차이점




                                                                             1. Chen ERD




                                                                  2. The Crow's Foot ERD




                                                                             3. The Rein85












http://blog.naver.com/e_life2000?Redirect=Log&logNo=120095439833  - 그림 출처 (PDF파일)
http://hell_titan.blog.me/130095290141
http://blog.naver.com/pinkpigsong?Redirect=Log&logNo=80118179132
 

2010년 11월 21일 일요일

file extension

file extension (파일 확장자)

파일 확장자는 컴퓨터 파일의 이름에서 파일의 종류와 그 역할을 표시하기 위해 사용하는 부분이다. 많은 운영체제들은 파일 이름에서 마지막 점(.) 뒤에 나타나는 부분을 확장자로 인식한다. (예를 들어, readme.txt의 확장자는 txt이며, index.ko.html의 확장자는 html이다.)

VMS, CP/M 과 그로부터 파생된 도스 등의 운영체제 - 확장자가 실제로는 파일 이름과 분리되어 있으며, 확장자를 실행 파일을 나타내는 등의 특수한 용도로 사용한다.

유닉스 계열 운영체제 - 확장자가 파일 이름의 일부분일 뿐으로, 도스 등의 운영체제보다는 확장자에 덜 의존한다.

그래픽 사용자 인터페이스(GUI) (마이크로스프트 윈도, 맥 오에스 텐, GNOME, KDE등) -
파일 확장자를 단순히 종류를 나타내는 것뿐만이 아니라 인터페이스 상에서 파일의 아이콘이나 그에 연관된 작업들을 결정하는 데 사용한다.
 예를 들어서 특정한 파일을 열었을 때, .txt 확장자는 텍스트 편집기를, .htm이나 .html 확장자는 웹 브라우저를, .png, .gif 등의 확장자는 그래픽 편집기를, .doc, .odt 등의 확장자는 워드 프로세서를 실행하는 등의 동작을 지정할 수 있다. 특히 마이크로소프트 도스와 윈도 운영체제에서는 .exe, .com, .bat, .cmd 등의 확장자를 가진 파일을 실행 파일로 인식한다.

이런 특성 때문에 파일 확장자는 일종의 메타데이터로 볼 수 있다.

파일 확장자의 대안

맥 오에스에서는 전통적으로 파일 확장자를 쓰지 않고, 파일의 종류를 나타내는 타입코드와 그 파일을 열었을 때 어떤 응용 프로그램이 실행될지를 나타내는 크리에이터 코드를 대신 썼다. 하지만 NEXTSTEP에서 기반한 현재의 맥 오에스 텐에서는 유닉스 계열 운영체제와 같이 파일 확장자를 사용하며, 맥 오에스 텐 10.4부터는 옛 타입 코드와 크리에이터 코드와 유사한  고유 종류 식별자(UTI)를 지원한다.

네트워크 상에서 전달되는 데이터들은 비트들의 연속으로 간주되며 별도의 파일 이름이나 확장자를 가지지 않는다. 하지만 HTTP 등의 여러 프로토콜에서는 MIME Content - Type 헤더를 사용하여 데이터의 종류를 전달한다. BeOS등의 일부 운영체제에서는 이런 MIME Content-Type 값을 파일의 메타데이터에 기록할 수 있다.

     여기서 뜬금없이 mime content type (혹은MIME) 이라는 단어가 나와서 검색을 해보았더니
     MIME (Multipurpose Internet Mail Extension Type) 이란 다음과 같았다.
 
MIME은 아스키 데이터만을 처리할 수 있는 원래의 인터넷 전자우편 프로토콜, 즉 SMTP(Simple Mail Transfer Protocol : 메일 전송 프로토콜)를 확장하여 오디오, 비디오, 이미지, 응용프로그램, 기타 여러가지 종류의 데이터 파일들을 주고받을 수 있도록 기능이 확장된 프로토콜이다
1991년에 SMTP를 확장하여 인터넷 클라이언트 및 서버들이 아스키 텍스트 이외의 다른 종류의 데이터들도 인식하고 처리할 수 있도록 할 것을, 벨 코어의 Nathan Borenstein Internet Engineering Task Force에 제안하였다. 그 결과로, 새로운 파일 형식들이 IP가 지원하는 파일 형식으로서 메일에 추가되었다.

서버들은 어떤 웹 전송에라도 시작부분에 MIME 헤더를 집어넣으며, 클라이언트들은 헤더가 나타내는 데이터 형식에 따라 이를 재생시키기 위한 적절한 응용프로그램을 선택한다. 이러한 재생용 프로그램들 중 일부는 웹 클라이언트, 즉 브라우저에 기본적으로 탑재되며 (예를 들어 모든 브라우저는 HTML 파일의 처리뿐 아니라 GIF와 JPG 이미지를 보여줄 수 있는 능력을 가지고 있다), 그 외의 프로그램들은 필요할 때마다 다운로드된다.  새로운 MIME 데이터 형식들이 생기면 IANA 에 등록된다.

7개 타입으로 구성되며 각각 text, multipart, message, application, image, audio, video 이다. 그리고 각 타입의 하위로 그 아래의 타입들이 존재한다.

                                                                  출처 http://orozsun.blog.me/140097291022


유닉스 계열 운영체제들은 파일 확장자와 관계 없이 파일의 내용을 바탕으로 그 종류를 추측하는 file(1) 프로그램을 지원한다. 이 프로그램은 파일 포맷들이 자신을 나타내기 위해 사용하는 고유한 매직 넘버를 바탕으로 경험적 방법을 통해 결과를 반환한다. GNOME과 KDE에서는 이 결과를 토대로 MIME Content-Type 값을 추출하여 사용한다.

이번 과제를 시작하면서 평소 보던 파일 확장자라 해봤자 .exe .hwp .mp3 .avi .smi .txt 등 뿐이라 조금 편하게 file extension 에 대해 조사를 해보았는데 의외로 관련된 내용이 많았다. 각 운영체제들 사이에도 파일확장자를 나타내는 방법이 달랐고 파일 확장자와 그 의미가 유사한  MIME 라는 것이 있는것도 새롭게 알게 되어 뿌듯한것 같다. 


출처

위키백과
http://blog.naver.com/pyukcho?Redirect=Log&logNo=100027537093  ( MIME type by content type)

2010년 11월 12일 금요일

address binding 에 관하여

10단원에서는 operating system 에 대해서 배웠는데 이 단원을 마치고

과제를 하기에 앞서 운영체제에 대해 검색해보았습니다.


운영체제(Operating System)은 하드웨어와 사용자 프로그램 사이에서 자원의 활용을 극대화 하고 시스템을 비롯한 프로그램 사용을 용이하게 해주는 것 이다. 뭐... 쉽게 말해서 컴퓨터를 사람(개발자 혹은 사용자)이 편리하게 사용하게 해주는 시스템이다.
라고 한다.. 이제껏 운영체제는 윈도, 리눅스등등으로만 어렴풋이 알고 있었던는데...

아무튼 운영 체제에 대한 완전한 정의는 없다고 하니 이번 단원은 운영체제가

무엇인지 보다는 운영체제가 무엇을 하는지에 관심을 가지고 공부해야겠다.
아무튼 이번에는 memory management  부분에서 address binding 에 관하여 조사를 해보았다.

전공 관련 프로그래밍 시간에 c언어교재나 java교재에는


 source file을 컴파일 해서 기계어로 되어 있는 object file을 만든다. 이러한 여러 object file들과 start-up code를 Link시켜 execution file을 만든다. 그렇게 만들어진 execution(실행) file을 실행하면 실행된다.

 그리고 자료형과 함수 배열등을 배우는 동안 memory의 얼마를 차지하며 무슨 영역에 자리 잡는다는 등의 설명이 불쑥 튀어 나온다. 또한 일반적으로 많이 사용하는 지역변수 영역(stack)과 동적 할당 영역(heap)에 대해 언급하는 것이 주를 이룬다.


라는 부분이 나온다.

프로세스(간단히 말해서 실행중인 프로그램)가 생성되어 실행되기 위해서는 실행 프로그램 파일을 메모리(RAM)에 적재해야 한다.

(why??? -  프로세스의 실행은 결국 CPU가 하는데 이 CPU는 Bus라는 녀석으로 Main-Memory와 연결되어 의사소통을 하기 때문이다.)
이렇게 메모리에 적재 된 실행 프로그램 파일은 CPU에 의해 처리되며 비로소 프로세스라는 명칭으로 불릴 수 있는 것이다.
 하지만, 이러한 실행 프로그램 파일을 무턱대고 메모리에 적재하는 것이 아니라
 [코드 영역][데이터 영역][스텍영역]으로 분류 되어 적재된다.

▷ 코드 영역:  기계어 코드로된 프로그램 실행코드가 적재 되는 영역이며 CPU는
    이 영역의명령을 읽어들여 차례로 프로그램을 수행하게 된다.

▷ 데이터 영역: 전역변수아 같이 프로세스가 종료될 때까지 게속 사용되는 변수들을
    위한 영역

▷ 스택 영역: 함수 호출 과정과 같이 임시로 존재하는 변수들을 저장하는 영역


( CPU에 의한 메모리 읽기/쓰기 )


  전형적인 명령어 실행은 먼저 메모리로 부터 한 명령어를 가져오는 데서부터 시작된다. 명령어를 읽어오는 과정에서는 명령어 주소 레지스터(IP: Instruction Pointer, 또는 PC: Program Counter)에 있는 코드 영역의 주소를 메모리에 전달하고 읽기 작업을 실행한다. 그 다음 명령어를 해독하고, 메모리에서 피연산자(operand)를 가져와 피연산자에 대해 명령어를 실행한 후에 계산 결과를 메모리에 다시 저장한다. 전역 변수에 대응되는 데이터 영역의 주소나 스택 주소 레지스터(SP: Stack Pointer)에 기록된 스택 영역의 주소를 메모리에 전달하고 읽기나 쓰기 작업을 실행한다.

 이처럼 CPU가 Memory를 읽거나 쓰는 작업을 하기 위해선 메모리에 로드 된 실행프로그램파일의 명령코드나 데이터의 저장 주소를 알아야 한다. 즉, [Figure.02]와 같이 소스프로그램이 메모리에 적재될때까지의 과정중에 저장되어야 할 코드의 주소들은 여러가지 다른 표현 방식을 거치게 되고, 코드 영역이나 데이터 영역이 적재될 주소가 결정되면, 코드 영역의 내용 중에 함수의 주소나 변수의 주소가 있는 부분을 결정된 주소에 맞게 수정해야 하며 이러한 작업을 주소 바인딩(address binding)이라고 한다.


( 소스파일에서 메모리 적재 까지의 처리 과정 )



소스 프로그램에서 주소는 숫자가 아닌 심볼 형태로 표현되고, 컴파일러는 이 심볼 주소를 재배치 가능 주소(예를 들면 "이 모듈의 첫번째 바이트로부터 열네번째 바이트 주소")로 바인딩시키고, 추후에 연결 편집기(linkage editor)나 로더(loader)가 이 재배치 가능 주소를 절대 주소(예를 들면 74014번지)로 바인딩 시킨다. 
 


또한, 메모리 주소 공간에서 명령어와 데이터의 바인딩은 그 바인딩이 이루어지는 시점에 따라 다음과 같이 구분된다.
  • 컴파일 타임(compile time) 바인딩
    프로세스가 메모리 내에 들어갈 위치를 컴파일 시간에 미리 알 수 있으면 컴파일러는 절대 코드를 생성할 수 있다. 예를 들면 사용자 프로세스가 R번지부터 시작한다는 것을 미리 알 수 있다면 컴파일러는 번역할 코드를 그 위치에서 시작해 나간다. 그러나 만일 이 위치가 변경되어야 한다면 이 코드는 다시 컴파일 되어야 한다. 예)MS-DOS의 .COM양식 프로그램
  • 적재 시간(load time) 바인딩
    컴파일 시점에서 메모리 적재 위치를 알지 못하면 컴파일러는 일단 이진 코드를 재배치 가능 코드로 만들고 심볼과 진짜 번지와의 바인딩은 프로그램이 메모리로 실제로 적재되는 시간에 이루어지게 된다. 이렇게 만들어진재배치 가능 코드는 시작 주소가 변경되면 아무 때나 사용자 코드를 다시 적재하면 된다.
  • 실행 시간(execution time) 바인딩프로세스가 실행하는 중간에 메모리 내의 한 세그먼트로부터 다른 세그먼트로 옮겨질 수 있으려면 "바인딩이 반드시 실행 시간까지 연기되어야 한다". 요즈음 대부분의 운영체제는 이 방식의 바인딩을 체택하고 있다.

이렇게 내가 조사한 address binding 기법은 이것만 이해하면 되는게 아니라 이 기법을

가능하게 하는 하드웨어인 MMU(Memory Management Unit)에 대해서도 함께 알아야 한단다.

복잡하지만 이부분은 나중에 좀더 조사를 해봐야 겠다.

2010년 10월 28일 목요일

pep/8 으로 프로그램 만들기

세개이상의 임의의 숫자를 입력받아서 그 숫자들을 다시 큰 순서대로 나열하는 프로그램을 제작해보았습니다.

지금 배우고 있는 java 같은 high level language도 버거운 제게 assembly language란...

하여튼 먼저 여러개의 숫자를 받을때 num1, num2, num3 이렇게 미리 값을 받을 공간을
정해놓고 하기보다는 배열을 사용하여서 매번 값을 받을때 조건문을 사용해서 그다음에
배열에 입력받은 값을 넣은 후 값들을 비교하는것이 편리할것이라고 생각해서 아래와
같이 생각했습니다.
  for (int i = 0; i < data.length; i++)
                      {  
                                 for (int j = i+1; j < data.length; j++)
                                 {
                                            if( data[i] < data[j] )
                                            {
                                                       int temp = data[i];
                                                       data[i] = data[j];
                                                       data[j] = temp;
                                            }
                                 }
                      }

이런식으로 크기순으로 나열하면 되겠다고 생각했는데
막상 pep/8으로 만들자하니 너무 막막했습니다.
pep/8를 뒤지다보니 example에 배열과 관련된 부분이 있었지만




이를 응용하는것과 중첩된 조건문들을 만드는것이 예상외로 어려웠는데요.
4개의 숫자를 받아서 대충 만들긴했는데 조건문을 한없이 돌기만하고
output이 나오지 않아서 그냥 3개로 정해진  값을 받아 큰값 순으로 정렬하는
프로그램을 만들었습니다.

if (a > b) {
   temp = a;
   a = b;
   b = temp;
  }
-------------------------------------------------------------------------------



여기서 CHARO  0x020,i  는 숫자들 사이에 스페이스를 한번 출력하라는 뜻입니다.
아래 아스키코드표를 참고했습니다.



위와같이 만든 프로그램이 작동하는 화면입니다.


3개보다 많은 여러 숫자값을 받아 정렬하는 프로그램은 나중에 assembly language에 대해
더 배워  pep/8의 사용법을 숙지하고 올려야 겠네요.

2010년 10월 24일 일요일

나의 컴퓨터



평소에 컴퓨터를 사용할줄만 알았지 조립하는 방법이나 컴퓨터 부품의 세부사항에는 관심이 없었고 잘 몰랐었던 터라 이번 단원의 과제는 조금 힘든 과제인것 같습니다. 시험마치고 탱자탱자놀다가 주말에야 과제 생각이 나서 이렇게 급히 하게 되어서 처음에 예상했던 가격을 한 십만원정도 벗어나게 견적이 나오게 되었는데요. 아무튼 제가 이렇게 견적을 낸 이유는 다음과 같습니다.

1. cpu

 cpu의 제조사는 '인텔',  'AMD',  'VIA' 등이 있는데요.
네이버 지식인에 검색을 해보니
돈을  좀 더 지불하고 안정적인 성능을 원한다면 '인텔'을
좀 저렴하게 좋은 성능을 갖고 싶다면 'AMD' 를 선택하라고 하기에
저는 전자를 택해서 "인텔 코어 2 듀오 7600"을 선택했습니다.

2. 메인보드

메인보드는 컴퓨터의 모든 부품들을 연결해주는 아주 매우 중요한 부품입니다.
이러한 메인보드는 복잡한 구조를 가지는데 간단히 소개하면 다음과 같습니다.
1 - cpu소켓 : 미리 정해둔 cpu와의 호환성을 알아본다
2 - 칩셋 : 칩셋에 따라 사용할 수 있는 부품들과 가격이 책정된다고 보면 된다
     당연히 최신 칩셋일 수록 신기술이 많이 적용되어 있고 비싸다
3 - 메모리 슬롯 : 2개인지 4개인지 6개인지 보고 최대 지원 용량과 지원속도 등도 확인한다
4 - 확장슬롯 : 하드디스크와 그래픽카드 등을 얼마나 장착 가능한지 본다.
5 - sata/e-ide : 요즘엔 e-ide를 거의 안쓰지만 집에 남는 부품등을 설치해서
     쓸 생각이라면 확인해본다.
6 - 후면패널 : 사용후기나 인지도 있는 회사제품을 사용할것!

그리고 메인보드 칩셋은 노스브릿지와 사우스브릿지  이 두개로 나뉩니다.
그외의 정확한 구조에 관해서는 잘 모르고 어려워서 생략하겠습니다..  ;; ^^

나의 경우 메인보드의 제조사는 대세를 따라서 Gigabyte브랜드로 했습니다.
좁디 좁은 하숙방에는 작은 크기의 pc가 필요해서 폼팩터(메인보드크기)는
작고 슬림한 'micro-ATX'를 선택했습니다. 그리고  앞서 내가 선택한
cpu 소켓이 775이어서 이를 고려하고 , 메모리 종류는 이 또한 요즘 대세를
따라서 DDR3로 선택하였습니다.  이렇게 여러 사항의 조건을 생각하여
GIGABYTE  GA- G41MT - D3 이걸로 정했습니다.

3. 램
지금보다 컴퓨터에 대해서 아무것도 모를 때에  램은 컴퓨터속도와 관련하여
많이 달수록 컴퓨터가 빨라지고 좋아진다고 생각한적이 있습니다.
요즘은 당연히 무조건 많이 단다고 좋은것은 아니라는걸 알지만 조금 부끄러운 과거네요.

제조사는 그냥 삼성껄로 선택했습니다... 반도체=삼성 이라고 들었기에...
그리고 메인보드와의 호환성을 보고 DDR3 종류중에서 골라보았습니다.
지금 쓰고있는 노트북의 메모리용량이 너무 대단한편이 아니라 간단한
크레이지아케이드 같은 3D게임도 돌아가지 않기에 4G 를 골랐습니다.
원래 게임을 즐겨 하지 않는 편이더라도 이 정도면 가끔씩 FPS나 WOW
같은 풀 3D온라인 게임을 할 수 있을것 같네요. 
  
4. 그래픽카드
다른 부품에 비해서 그래픽카드를 고를때 조금 신경을 썻습니다.
보통 컴퓨터를 쓰는 용도가 기본 인터넷 검색을 하거나 과제를 하는것을
제외하고는 영화나 드라마를 보는게 주 인데요. 노트북 사양이 낮아서
720p 이상의 5,6기가 이상의 영화를 볼 경우 재생이 안되는 터라  이점을
감안하여 지금 노트북의 그래픽 카드보다는 성능이 좋은걸로 택했습니다.
그렇게 선택한것이 "Rextech 지포스 GTS250" 인데요. 뒤에 GTS가 의미하는게 
뭔지 궁금해서 찾아보니 등급별로 나눈 코드이더군요.

* LE - 동급중에 가장 성능이 낮은 계열입니다.
* GS - 기본모델입니다.
* GT - 기본모델에서 성능을 높힌 주력모델입니다.(가장 많이 출시되는 제품)
* GTS, GTO  - GT보다 성능을 조금 향상시킨 모델로서, 한단계위의 그래픽칩셋중 낮은
   성능을 지닌 칩셋을 가져다 장착하는 것입니다.
* GTX - 최상급의 성능을 가진 모델입니다.
* Ultra - 해당 그래픽 카드 계열에서 가장 성능이 높은 모델입니다.


5. 하드디스크

예전에 비해 값이 싸진 1테라바이트용량의 하드디스크중 웨스턴디지털사의 하드디스크를
선택했습니다. 제품설명을 보니 하드디스크내의 플래터가 기존의 3장이 들어간 제품에서
2장이 들어간 신형이 나오면서 저전력과 저소음을 강화 했다고 나와있었는데요. 웨스턴디지털의 하드디스크는 성능이나 저전력등에서 green, blue, black 으로 나뉘는데  그린제품이 가장 저전력이고  느리며 블랙제품이 가장 빠르고 고성능입니다. 블루제품은 최신형의 버퍼 64M 같이 빠른 제품은 아니지만  가격대비 성능에서 가장 무난한 제품이여서 선택하였습니다. 
(버퍼 - 하드디스크의 캐시 메로리 같은 역할을 하는 메로리로 하드디스크 플래터에 저장된 데이터를 cpu 메모리로 전달하는 역할을 하는 중요한 개체 (naver 지식in))
A/S를 고려한다면 삼성제품도 좋을것 같았지만 소음이 웨스턴디지털사 보다는 크게 난다기에  그냥 "WD 1TB Caviar Blue WD10EALS"  이것으로 했습니다.

6. ODD
CD나 DVD는 모두 레이저를 이용해, 데이터를 읽고 저장하는 광학 미디어입니다.
또, CD나 DVD를 읽고 저장하는 레코더를 통털어 광학 드라이브 또는 줄여서
ODD라고 부릅니다.

ODD에 대해서는 자세히 알지 몰라서 검색을해보고 리스트중에 가장 인기가 있는 걸로 골랐습니다. 위에서 말했듯이 저는 컴퓨터를 주로 영화나 드라마 등을 보는데 사용하는편입니다.
이러한 이유로 silent play ( 프로그램 설치, 영화, 음악 파일 재생등 드라이브를 사용할때, 자동으로 발생하는 소음을 최소화하는 기술)기능   과 Jamless play ( DVD영화 타이틀 감상시, 지문이나 스크래치로 인한 손상이 디스크에 있더라도 멈추지 않고 부드럽게 감상할 수 있게 하는 기능) 기능이 있는 LG전자 Super-Multi GH-22LS50  제품을 선택했습니다.  자세히는 저도 잘몰라서 다른 블로그 글을 읽고 이해를 했는데요. 간단한 설명을 보시려면 아래 주소로 ~ ~


7. 케이스
비교적 무난한 GMC H-80 풍III 250mm Ver2.0 으로 했습니다. 개인적으로 검은색을 좋아해서
케이스 색깔도 검은색으로 맞추었습니다. 전면에 개폐식 팬커버가 있어서 공기흐름에 도움을 주고 청소 또한 쉽게 할수 있을것 같습니다. 

8. 파워
파워를 검색해보니 중저가 제품중에 눈에 띄는 것들이 히로이찌, FSP, 파워렉스, 마이크로닉스 등이 있었는데요.  컴퓨터에 장착하게될 주변기기를 고려하고 안정성 또한 고려하여서 Heroichi HEC-Rapter 600WA 를 선택하였습니다.

9.마우스&키보드
가난한 하숙생이라 최대한 돈을 아껴야 하기에 마우스와 키보드는 최대한 싼 제품으로
골랐습니다. ㅠㅠ
마우스 - 로지텍 G1 Optical Mouse 정품벌크 
키보드 - LG전자 ST - 220

10. 스피커
소개된 위메이트 LS-5000HT 가 매우 탐났지만  가난한 하숙생으로 돈을 아껴야 하기에 
비교적 무난한 2.1채널 스피커인 포헨즈코리아 FOHENZ FS-8000 Q10을 선택하였습니다.

여기서 스피커를 살때 채널이란?
*2.1ch 은 스피커 두개와 서브우퍼 한개로 구성이 됩니다.
일반적으로 저음이 약할때 보강을 위해서 서브우퍼를 붙여서 사용하는 경우죠...
이런 제품은 pc용 스피커가 주로 이런 시스템으로 나옵니다.
*5.1ch 은 멀티채널이라고 해서 홈시어터로 구성할 때 사용을 합니다.
메인스피커, 센터스피커, 리어스피커, 서브우퍼로 구성이 되고 스피커의 갯수는
총 6개 입니다.
이 외에 6.1ch, 7.1ch,9.1ch 등등이 있습니다.

11. 모니터
학기 초부터 지금까지 14인치의 노트북 화면으로만 각종 드라마나 예능프로, 영화를 보며
생활해오다보니 조금 더 큰 치수의 모니터가 탐나서 욕심을 내어서 24인치 삼성전자 싱크
마스터 B2430L를 골랐습니다. 이정도면 더이상 여한이 없겠네요.. ㅎㅎ


지금까지 제가 예상한 컴퓨터부품의 견적과 선택이유를 적어 보았습니다.
다나와 사이트에 글을 올렸는데 다른 네티즌분들이 댓글을 달아주시지 않아서 
그냥 견적비용과 선택이유만 게시하였습니다.
하루빨리 구린 노트북에서 벗어나 꿈의 컴퓨터를 갖고싶네요.

2010년 10월 5일 화요일

순차회로에 대하여

책 4.5 부분에서 많은 종류의 memory circuits 들이 디자인 되었다고 적혀있는데
저는 이러한 여러 종류의 latch 를 조사했습니다.
latch는 정적 기억소자로 조합 논리회로와 더불어 순차 논리회로를 구성하는데요.
조사한 latch 들을 말하기 전에 간단히 설명하자면 다음과 같습니다.  

순차논리회로(Sequential Logic Circuit)
 현재의 입력과 이전의 출력 상태에 의하여 현재 출력이 결정되는 회로
 이전 상태를 저장하는 기억 소자와 귀환기능을 포함
 메모리 상태는 시간순차에 의해 결정
순차 논리회로의 분류
 - 동기(Synchronous) 순차 논리회로
    ·클럭(clock)을 이용하여 새로운 입력의 순차와 응답의 출력 생성이
     일정한 시간 간격을 둔 상태에서 제어된다
    ·일정한 시간 지연 디자인 과정의 단순화
 - 비동기(Asynchronous) 순차 논리회로
    ·출력이 외부로부터의 관리에 의해서가 아닌 내부의 지연에 의해
     일정하지 않은 시간 간격을 두고 발생한다
순차 논리회로의 구성

        기억 소자  +  조합 논리회로

 -  기억 소자(Memory Element)
   ·시스템의 상태를 기억(저장)
   ·현재 상태 = 기억 소자의 현재 저장 값

 - 조합 논리회로
 ·현재의 입력신호와 기억 소자의 현재 상태 값
  을 이용하여 출력값과 다음의 상태 값을 산출
 ·동기 순차 논리회로는 클럭을 이용하여 조합
  논리회로에서 산출된 다음 상태 값을 기억 소자에 저장하여 상태 값을 갱신한다


동기 순차 논리회로의 종류

 - 밀리(Mealy) 순차회로
    · 조합회로의 출력이 현재의 입력과 현재 상태 값에 의해 결정되는 회로

 - 무어(Moore) 순차회로
    · 조합회로의 출력이 단지 현재 상태 값에 의해 결정되는 회로

기억 소자(Memory Element)
순차 논리회로에서 현재의 상태 값을 저장하기 위해 사용


                                                         기억 소자 분류




이때 Latch / Flip-Flop 는 쌍안정 기억 소자라고 하는데요. 두 개의 출력을 가지는데, 하나의 출력이 논리값 ‘1’을 가지면 다른 출력은 논리값 ‘0’을 가집니다. 그리고 출력 값의 변화를 전압 전위 이동으로 이루어지는데 이러한 점을 시소에 비유할수 있습니다.

-----------------------------------------------------------------------------------------------------------------

이제 제가 원래 조사하려고 했던 래치의 종류에 대해서 말해보자 합니다.

lSR(Set-Reset) 래치
     l래치(Latch)는 기억 소자 중에서 가장 간단한 소자
     l래치는 입력 신호의 레벨에 의해 출력이 제어되는 레벨-감지 기억 소자
     l두 개의 nor 게이트나 nand가 상호결합(cross-coupled)하여 구성
     l가장 기본적인 래치
2개의 NOR 또는 2개의 NAND 로 구성이 되는데 책에는 NAND로 구성된 레치회로 밖에 없어서 NOR로 구성된 래치회로도 찾아보았습니다.

                                                        SR(Set-Reset) 래치의 동작 분석


lJK 래치
     l셋과 리셋 입력이 동시에 인가될 수 없다는 제한을 제거한 변형된 SR 래치

l T(Toggle) 래치
     l JK 래치의 입력을 같이 연결한 변형된 JK 래치
     l JK 래치와 T 래치는 출력 진동으로 인해 실제 존재하지 않음

lD(Data) 래치
     lSR 래치에서 셋과 리셋 입력이 동시에 1이 인가되는 것을 방지
     lTransparent latch – 입력 신호를 그대로 기억하여 출력

l게이트된 래치(Gated Latch)
기본 래치는 래치의 입력 레벨이 바뀔 때에 래치의 내용이 바뀌는 비동기적인 동작 방식으로 인해 동기 순차회로에 적용하기 힘들다
클럭(clock) 또는 가능(enabling) 신호를 입력에 추가하여 래치의 기억 내용이 갱신되는 시기를 제어 순차 논리회로에 포함되어 있는 조합 논리회로의 신호 지연이 갖는 다양성으로 인해 기억 소자의 내용을 동시에 변경하기 힘든 경우 기억 소자 갱신의 동기화가 요구될 때에 필요



====================================================================