티스토리 툴바


'CS./Computer Science'에 해당되는 글 11건

  1. 2011/03/22 Multithreading models by sosal
  2. 2011/03/16 File system-call assignment. by sosal (3)
  3. 2011/03/08 Operating system 기본 개념. by sosal
  4. 2011/03/08 DBMS 시스템 개요 by sosal (1)
  5. 2011/02/24 DBMS 기본 DB 개념 및 용어 by sosal
  6. 2010/08/31 네트워크 소프트웨어의 계층 구조 by sosal
  7. 2010/08/27 데이터 압축 (Data compression) by sosal
  8. 2010/08/25 컴퓨터 과학에서의 추상화 by sosal
  9. 2010/08/25 알고리즘의 역할, 과학 by sosal
  10. 2010/08/19 number system ~ Data storage by sosal

/*
 http://sosal.tistory.com/
 * made by so_Sal
 */


Thread는 CPU-utilization의 기본 단위이다.
Program counter, register set, stack, thread ID로 구성되어있다.
하나의 프로세스에 다양한 스레드가 붙어있으며, 그 스레드들은 프로세스의
code section을 공유한다. 즉 프로세스에서 새로운 스레드로 실행하고자 하는 루틴을
함수 형태로 지정하여 스레드를 생성하게 되는데, 그때 공유하는 code section이 바로 함수이다.




코드 전영역을 공유하지 않고, 지정된 함수만 받아 사용한다는 것.

이 스레드는 유저의 어플리케이션에서 멀티프로그래밍을 위해 사용되기도 하지만
서버에서 다양한 client들에게 thread를 새로 생성하여 리소스를 제공한다.
특히 웹서버의 데이터베이스 접근 등에 스레드 풀들 많이 사용한다. (아래 그림)


 

The benefits of multithreaded programming

1. Responsiveness.
어떤 루틴을 실행하는 동시에 원하는 영역을 동시에 실행할 수 있다.

2. Resource sharing.
각 스레드마다 전역변수 혹은 포인터 등을 공유할 수 있게 되는데,
멀티 프로세스 프로그래밍이 필요할 때 훨씬 더 경제적인 방법으로 이를 수행할 수 있게된다.

3. Economy.
스레드는 프로세스 안에 속해있기 때문에, 운영체제에 의해 관리되어질 필요가 없다.
즉 관리 대상이 프로세스 이므로, multi-executing이 더욱 빠르고 경제적이다.

4. Scalability
Single-threaded process는 비록 프로세서가 다수일지라도 오직 하나의 루틴만 실행할 수 있다.
하지만 멀티스레딩은 병렬성을 더욱 증가시킨다.


Many - to - One model.



Many-to-One model은 user-level의 많은 thread들을 하나의 커널 thread로써 관리한다.
이것은 커널이 관여하지 않는 사용자단 멀티 스레딩 기법이다.
따라서 시스템 입장에서는 매우 효율적인 방법이다.
하지만 하나의 커널 스레드에 달려있는 프로세스이기 때문에,
실행되고 있는 thread 들이 block 등을 건다고 하면 프로세스 전체가 멈출 위험이 있다.




One-to-One model.



이경우는 커널이 하나의 프로세스의 모든 스레드를 관여하는 방법이다.
운영체제에서 정밀하게 관여해주기 때문에 user단의 multi-threading인 Many-to-One 기법보다
훨씬 concurrency(동시에 실행) 하며, 한 스레드가 다른 스레드의 실행을 block하거나 하는 경우가 없다.
하지만 스레드를 만듬과 동시에 시스템콜이 실행되어야 하기 때문에
운영체제의 퍼포먼스가 조금 떨어질 수 있다.



Many-to-Many model.



Many-to-One 과 One-to-One 의 중간 형태로,
One-to-One만큼 완벽한concurrency는 가지지 않지만
보다 효율적으로 리소스르 사용하기 때문에, 부담없이 thread를 만들 수 있다.
역시 병렬 멀티 프로세서에서 실행 가능하며,
Many-to-One처럼 스레드가 전체 프로세스를 block 시킬 위험도 없다.


To-level model.


여러가지 형태의 스레딩 모델을 사용하는 방법.

참고도서 : Operating system concepts - 8th edition. Silberschatz, Galvin, Gagne.

저작자 표시 비영리 변경 금지

'CS. > Computer Science' 카테고리의 다른 글

Multithreading models  (0) 2011/03/22
File system-call assignment.  (3) 2011/03/16
Operating system 기본 개념.  (0) 2011/03/08
DBMS 시스템 개요  (1) 2011/03/08
DBMS 기본 DB 개념 및 용어  (0) 2011/02/24
네트워크 소프트웨어의 계층 구조  (0) 2010/08/31
Posted by sosal

댓글을 달아 주세요

/*
 http://sosal.tistory.com/
 * made by so_Sal
 */

파일구조론 Assignment1. 발표자료였습니다.

 The programming of  Basic  file system-call.

1st
Input file name, and make file.
Save the content written by user in the file.
If user enter the buffer “The end”, then end the program.

2nd

Input  2 files name, and make file1, file2.
Save the content written by user in the file.
If user enter the buffer “The end”, then end the program.
Append the content on the file2.
Repeat 1-4 level.  ( quit  option added in level1.)


 

Assignment 1.



The source code of program.

fcntl.h : Header file
                  To use file system call.

Open( buffer, O_WRONLY | O_CREAT, 00644);

File name: contents of ‘buffer’.

FD attribute:  O_WRONLY,O_CREAT
only writing mode.
unless file exists, make the new file.

Permission:  r w - | r - - |  r - -

write( fd,  buffer, strlen(buffer));

Write contents of the buffer on the file which 'fd' point

 

Assignment 2.



Source code, and annotation.

Rewind : return FD to fisrt side of file

Memset : Initialize the buffer.

저작자 표시 비영리 변경 금지

'CS. > Computer Science' 카테고리의 다른 글

Multithreading models  (0) 2011/03/22
File system-call assignment.  (3) 2011/03/16
Operating system 기본 개념.  (0) 2011/03/08
DBMS 시스템 개요  (1) 2011/03/08
DBMS 기본 DB 개념 및 용어  (0) 2011/02/24
네트워크 소프트웨어의 계층 구조  (0) 2010/08/31
Posted by sosal

댓글을 달아 주세요

  1. Custom Assignment Writing 2011/06/08 04:37  댓글주소  댓글쓰기 수정/삭제

    yes...:) great work ! I definitely enjoying every little bit of it I have you bookmarked to check out new stuff you post

  2. law thesis proposal 2012/04/24 22:50  댓글주소  댓글쓰기 수정/삭제

    I am searching for my search of my law topics ... thanks for the post it just make me smile

/*
 http://sosal.tistory.com/
 * made by so_Sal
 */

Computer system은 4개의 구성요소로 나눌 수 있다.
1. Hardware.
2. Operating system.
3. Application program.
4. Users. ( machine user도 포함한다.)



이렇게, Operating system은 User가 hardware에 쉽게 접근하도록 도와주는 역할을 한다.

Definition : A program that acts as an intermediary between a user of computer and hardware.

OS는 굉장히 작게 시작하여 점점 내용들이 덧붙여졌는데, 앞으로도 어떻게 더욱 커질지는 알 수 없다.
따라서 정확히 정의되지 않고, 책 혹은 사전마다 정의가 다르다.





OS is a resource allocator.
여기서 resource는 computer hardware를 말하는데,
프로세스들이 hardware를 점거하기 위해 os에 요청을 보내면,
효율적이고 공정하게 프로세스에게 resource를 사용하도록 허가하는 역할을 한다.

OS is a control program.
컴퓨터의 에러나 잘못된 resource 사용으로부터 보호해주는 controller 역할을 한다.




그림 : A modern computer system.

Resource를 사용하기 위해 사용자는 OS에게 operation을 요청하는데,
모든 operation은 memory를 거치게 된다.
CPU는 직접 접근할 수 있는 메모리는 RAM밖에 없다. (Cache는 예외)
프로세스는 자신의 모든 Instruction, Data를 RAM에 올려놓고 CPU에게 제어를 맡긴다.

하나의 CPU로는 하나의 프로세스 instruction set을 실행할 수 밖에 없는데,
이때 OS는 concurrent한 작업을 수행하기 위해 multiprogramming 과 time-sharing 2가지 방법을 쓴다.

Multiprogramming
CPU가 하나의 프로세스를 실행하는데, 프로세스가 대기상태를 가지게 되면 ( I/O 작업 등에 의한)
다른 프로세스의 루틴으로 switch 하게된다.

Timesharing
각 프로세스마다 시간을 부여해서 계속 switching 하는 방법이다.
respnse time의 단위는 매우 짧다.

Context switch
대기상태의 프로세스가 CPU를 점거하려 할 때,
현재 실행되고있는 프로세스의 Register set들을 저장한 후
자신의 Register set을 CPU에 적재한 후 실행상태로 바꾸는 과정


Context switch 과정에서 interrupt가 발생한다.

Interrupt
Service routine을 바꿔주는 신호.
프로세스가 인터럽트 신호를 받게되면
현재 실행되는 instruction의 Program counter는 저장되어
다시 CPU 제어권을 찾았을 때 이전에 실행하던 위치부터 다시 실행된다.





DMA : Direct Memory Access
I/O 가 Resource를 굉장히 많이 사용하는데, CPU가 메모리 싸이클을 중재해주기 때문이다.
Device와 Memory가 직접 연결되어있으면 항상 CPU를 거쳐야 하는 비효율적 구조를 극복할 수 있다.

Symmetric Multiprocessing, Dual-core design



경재적인 이유 때문에, 대부분 dual-core를 사용한다.



User-mode, Kernel-mode

System-call
OS에서 지원하는 함수들로 User가 하드웨어에 직접적으로 접근할 수 있는 권한을 얻는 유일한 방법.



read, write, unlink, rmdir 등, 하드에 파일을 새로 만들거나 읽는 하드웨어 접근을 하기 위해서는
운영체제에 권한을 얻어야 한다. 이렇게 권한을 둔 이유는 보안상 이유때문이며
일반유저가 하드웨어에 직접적으로 접근하는 유일한 수단이기도 하다.


참고도서 : Operating system concepts 8th edition. - Wiley
               Abraham Silberschatz, Peter B. Galvin, Greg Gagne.

저작자 표시 비영리 변경 금지

'CS. > Computer Science' 카테고리의 다른 글

Multithreading models  (0) 2011/03/22
File system-call assignment.  (3) 2011/03/16
Operating system 기본 개념.  (0) 2011/03/08
DBMS 시스템 개요  (1) 2011/03/08
DBMS 기본 DB 개념 및 용어  (0) 2011/02/24
네트워크 소프트웨어의 계층 구조  (0) 2010/08/31
Posted by sosal

댓글을 달아 주세요

/*
 http://sosal.tistory.com/
 * made by so_Sal
 */

DBMS : Database Management System. 데이터베이스 관리 시스템
대규모 데이터를 유지 및 관리하는데 도움이 되도록 설계된 소프트웨어.
A very large, integrated collection of data.



Why use a DBMS?

1. 데이터 독립성, 효율적인 접근.
DBMS는 추세부사항을 은닉하는 데이터의 추상적인 관점을 제공하며,
일반적인 file-system을 이용한 정보관리보다 더 효과적인 저장, 검색 기술을 이용하여 효과적이다.

2. 데이터 무결성, 보안성

3. 데이터 관리

4. 동시접근 및 손상복구
Concurrency Control : Multi user가 동시접근하며, Inconsistency가 일어나지 않도록 돕는다.


Data model : 고수준의 논리적인 데이터를 기술하는 구성자들의 집합.
사용자에게 불필요한 저수준의 내용들은 감추고,
사용자가 원하는 데이터를 데이터 모델에 의하여 정의할 수 있도록 돕는다.
오늘날 대부분의 DBMS은 Relational data model (관계모델) 에 기반한다.

Relational model of data // most widely model today.
관계모델은 중요한 데이터 기술 구성자는 relation이며, relation은 record들의 집합이다.

* Schema
어떤 relation에 의거한 데이터 기술을 schema라고 하는데,
한 관계모델에서의 schema는 relation의 이름, 필드 (attribute or row)의 이름과 타입을 명세한다.

ex) 어떤 홈페이지의 회원정보는 다음과 같은 스키마를 가진 relation으로 정의할 수 있다.
Member(ID:string, Name:string, Age:integer, No:Integer)



위 예는 4개의 필드 (ID, Name, Age, No.)를 가지는 Member relation의 instant이다.

각 record (혹은 tuple)들은 Member relation의 schema를 따른다.
schema는 record의 템플릿으로 간주할 수 있다.

DBMS - Levels of Abstraction.
DDL (Data Definition Language)는 외부 스키마와 (External Schema == view)
개념 스키마 (Conceptual Schema)를 정의하기 위해 사용된다.



view == External Schema.

3단계의 계층.


혹은 Sub-Schema - schema 의
2단계 계층으로 DBMS의 abstraction을
표현하기도 한다.








Physical Schema.
데이터베이스에 저장되는 relation들이 secondary storage에 어떤식으로 저장되는지를 명시한다.
물리적 스키마는 데이터가 일반적으로 어떻게 접근되는가에 대한 이해를 기반으로 하여 결정한다.

Conceptual Schema : 모든 relation 들을 기술하는 부분.
개념 스키마는 오직 Logical Data만 서술한다. (자료의 유무만을 서술)
실제로 저장되어있는 방법 등은 Physical Schema가 관리한다.

ex) Member(ID:string, Name:string, Age:integer, No:Integer)

External Schema.
DBMS의 정보들을 사용하는 사람 혹은 프로그래머들의 수준에서
그들이 원하는 정보에 따라 데이터가 주어진다.
Conceptual Schema에 있는 다양한 relation들 중에서 필요한 정보를 모아
사용자에게 맞는 새로운 Schema를 보여준다.



Data independence
데이터의 독립성은 Abstraction of data 로부터 달성된다.

1. Logical Data independency
기초가 되는 Conceptual Schema가 변경될 경우,
이전과 동일한 View (External schema) relation이 계산되도록
View (External Schema)의 정의가 수정 될 수 있다.
이러한 특성을 Logical Data independency 라고 한다.

2. Physical data independency
Conceptual Schema 에서는 Logical Data만 서술할 뿐,
물리적인 세부 데이터들은 서술하지 않는다.
이러한 특성을 Physical data independency 라고 한다.



Transaction.
트랜섹션은 DBMS의 논리적인 작업 단위를 뜻한다.
(An atomic sequence of database action / read, write)
하나의 트랜섹션이 끝나기 전까지는 DBMS 의 데이터는 변경되지 않으며
중간에 단 하나의 오류라고 있다면, 이 트랜섹션은 재 실행되도록 한다.

//
금융결제를 예로 들면, 입금이 진행되는 마지막 부분에서 결제가 취소되었을 때
이 트랜섹션이 성공적으로 완료된다면 금융적인 오류가 발생하므로 굉장히 위험에 처하게 된다.


Concurrency Control
DBMS는 Multuiple user가 동시 접근하며, inconsistence가 일어나지 않도록 돕는다.
이것은 Locking protocol에 의해 실현 되는데, 여러 트랜젝션들이 interleave 하게 되어
데이터들이 서로 간섭하는 결과가 나오지 않도록 돕는다.

- Strict 2PL Locking protocol
2PL : Two Phase locking : 하나의 트랜젝션 안에, L- U은 섞어서 나오지 않는다.
- LLLLLLLL UUUUUU -



참고서적 : 데이터베이스 시스템 3rd Edition. Raghu Ramakrishnan, Johannes Gehrke.
저작자 표시 비영리 변경 금지

'CS. > Computer Science' 카테고리의 다른 글

File system-call assignment.  (3) 2011/03/16
Operating system 기본 개념.  (0) 2011/03/08
DBMS 시스템 개요  (1) 2011/03/08
DBMS 기본 DB 개념 및 용어  (0) 2011/02/24
네트워크 소프트웨어의 계층 구조  (0) 2010/08/31
데이터 압축 (Data compression)  (0) 2010/08/27
Posted by sosal

댓글을 달아 주세요

  1. 2011/09/15 22:55  댓글주소  댓글쓰기 수정/삭제

    비밀댓글입니다

*
 http://sosal.tistory.com/
 * made by so_Sal
 */


DBMS와 관련된 기본 용어들.

Data : 자료.
Table : 표 형식으로의 Data 묶음.
Database : Table의 집합. ( = DB)
DBMS : Database management system : DB를 관리하는 소프트웨어
record : 테이블의 행
field or column : 테이블의 열
Data type : 각 field에 들어갈 데이터의 형식
Primary key : record를 식별하기 위한 비어있지 않은 유일한 값.
Foreign key : 다른 테이블의 Primary key와 대응되는 필드
SQL : Structured Query Language. 구조화된 질의 언어
         DB에서 정보를 생성, 혹은 갱신하여 사용할 수 있도록 정의된 표준 언어






ID는 중복되어선 안된다. 즉 사용자 ID정보를 관리하는 Table에서
ID라는 데이터는 모두 유효해야만 하며 유일해야한다. => Primary key.

Foreign Key : 두 개의 테이블을 연결시켜주는 필드이다.
수강신청 사이트에서 과목을 선택하려 해도 ID가 없다면 수강신청을 할 수 없다.
이경우 ID가 학생정보를 저장하는 테이블과 수강신청 관리 테이블 사이의 Foreign Key가 될 것이다.

저작자 표시 비영리 변경 금지

'CS. > Computer Science' 카테고리의 다른 글

Operating system 기본 개념.  (0) 2011/03/08
DBMS 시스템 개요  (1) 2011/03/08
DBMS 기본 DB 개념 및 용어  (0) 2011/02/24
네트워크 소프트웨어의 계층 구조  (0) 2010/08/31
데이터 압축 (Data compression)  (0) 2010/08/27
컴퓨터 과학에서의 추상화  (0) 2010/08/25
Posted by sosal

댓글을 달아 주세요

/*
 http://sosal.tistory.com/
 * made by so_Sal
 */



네트워크 소프트웨어의 주요 작업은, 다양한 컴퓨터들 사이에서 필요한 메시지를
주고받기 위해 필요한 인프라를 제공하는 것이다.

위 계층 구조는, 택배에 많이 비유한다.
1. 선물을 보낸 사람이 물건과 목적지를 적음.                    //사용자 계층
2. 회사가 가져간 후, 컨테이너에 넣어 항공사에 전달.         //전송 회사
3. 항공사가 목적지 도시에 전달 (중간 기착지들을 거친다)  //항공사
4. 도시에서 정확한 목적지까지 물건을 전달.

네트워크 소프트웨어라고 다를것 없다.

응용계층, 전송계층, 네트워크 계층, 링크 계층으로 택배와 유사하게 동작한다.



(에고, 허접하지만 -_-; 힘들게 그렸습니다 ㅠㅠ)

일단 그림을 보시면, 가장 왼쪽 상단에서 메시지 전송이 시작됩니다.

응용계층 : 메시지를 준비하고, 목적지 주소를 붙인다.
전송계층 : 메시지들을 패킷들로 작게 분할한다.
네트워크 : 각 패킷에 중개지 주소를 지정한다.
링크계층 : 패킷을 중개지 주소로 전달한다.

중간에 [네트워크 <-> 링크] 부분은, 새로운 중개지 주소를 지정하고,
네트워크를 통해 또 다시 전송하기 위해서 링크계층에게 돌려주는 중개지점입니다.




좀더 자세히?

응용계층 (Application layer)은 작업 수행을 위해 인터넷 통신을 사용하는
사용자의 어플리케이션, 또는 서버의 다양한 프로그램들로 이루어집니다.
메신져, ftp, telnet 등의 프로그램들을 예로 들 수 있습니다.
메시지를 다른 컴퓨터에게 보낼 때, 전송계층에서 사용할 수 있는
도착지점의 주소를 제공하는것이 응용계층의 책임입니다.

전송계층 (Transport layer)의 주된 작업은 응용계층으로 받은 메시지를
인터넷에 전송하기 위해 적절한 형식으로 변형하는 일입니다.
응용계층에서 받은 메시지를 인터넷 상에서 전송할 수 있는 크기들로 조각내어
인터넷에 전송하는 역할을 합니다.
조각난 메시지들은 주소를 붙여서 패킷으로 만든 후 네트워크 계층에 넘깁니다.

네트워크 계층 (Network layer)은 패킷들이 최종 목적지에 도착할 때 까지
인터넷상의 한 네트워크에서 받아서, 다른 네트워크로 전달하는 일을 합니다.
패킷의 다음 목적지가 결정되면, 네트워크 계층은 그 주소를 패킷에
중간 주소로 추가한 다음, 링크 계층으로 넘깁니다.

링크게층 (Link layer)은 네트워크 계층이 보내준 중간주소가 포함된 패킷을 전달하는 역할을 담당합니다.
패킷을 전송하면, 메시지에 부착된 지역 주소에 의해 지정된 컴퓨터의 링크계층에서 수신합니다.
수신받은 컴퓨터에서는 현재 위치와, 최종 목적지를 비교하기 위해 잠깐 네트워크 계층으로
넘긴 후, 최종 목적지와 현재 위치가 일치하지 않다면 다시 중간 주소를 추가 한 후, 네트워크 계층에
돌려주고, 일치하다면 전송, 응용 계층(어플리케이션)까지 보내주게 됩니다.


요약하자면, 인터넷 소프트웨어 각 계층의 상호작용에 의해 인터넷 통신이 이뤄진다는 것입니다.
저작자 표시 비영리 변경 금지

'CS. > Computer Science' 카테고리의 다른 글

DBMS 시스템 개요  (1) 2011/03/08
DBMS 기본 DB 개념 및 용어  (0) 2011/02/24
네트워크 소프트웨어의 계층 구조  (0) 2010/08/31
데이터 압축 (Data compression)  (0) 2010/08/27
컴퓨터 과학에서의 추상화  (0) 2010/08/25
알고리즘의 역할, 과학  (0) 2010/08/25
Posted by sosal

댓글을 달아 주세요

/*
 http://sosal.tistory.com/
 * made by so_Sal
 */


데이터의 저장, 전송을 위해서 원래의 정보를 유지하면서도
데이터 크기를 줄이는 것은 경우에 따라서 효율적이고, 필수적이다.
이러한 기법을 데이터 압축이라 부름.

데이터 압축 : 1. 무손실 압축 방법,
                   2. 손실 압축 방법.

무손실 압축방법이란 압축 과정에서 완벽히 정보를 다시 복원할 수 있는 방법이며,
손실 압축방법은 압축 과정에서 본래의 정보를 읽을 수도 있는 방법이다.

RLE (Run-Length Encoding) : 동일한 값이 연속하여 나타나는 긴 열이 있을 경우,
                                           반복되는 원소와 반복 횟수를 나타내는 코드로 대체한다.
빈도 종속 인코딩
(Frequency-dependent encoding): 데이터 항목을 표현하기 위해 사용되는 비트 패턴의 길이를
                                                  해당 항목이 사용되는 빈도의 역과 관련시켜 결정하는 방법.
위 코드들은 가변 길이 코드로, 2바이트 유니코드와는 달리 항목에 따라 서로 다른 길이의 패터능로
표현하는 것을 의미한다. 빈도 종속 인코딩에 사용되는 알고리즘을 개발한 허프만의 이름을 따서
허프만 코드 (Huffman code)라고 부른다.

동영상의 경우, 압축될 데이터 스트림의 단위가, 바로 앞 단위와 약간씩만 다른 여러개의 단위로
이루어지는 경우가 상당히 많은데, 이 경우에는 차등 인코딩(Differential encoding)으로도
알려져 있는 상대적 인코딩(Relative encoding)을 사용하는 기법이 도움이 된다.

널리 쓰이는 또 다른 압축 방식에 사전 인코딩(Dictionary encoding) 기법에 기초한 것들이 있다.
사전이라는 용어는 압축될 메시지를 구성하는 항목들의 집합이며,
압축된 데이타 스트림은 항목에 대한 일련의 참조 표시로 인코딩 된다.

저작자 표시 비영리 변경 금지

'CS. > Computer Science' 카테고리의 다른 글

DBMS 기본 DB 개념 및 용어  (0) 2011/02/24
네트워크 소프트웨어의 계층 구조  (0) 2010/08/31
데이터 압축 (Data compression)  (0) 2010/08/27
컴퓨터 과학에서의 추상화  (0) 2010/08/25
알고리즘의 역할, 과학  (0) 2010/08/25
number system ~ Data storage  (0) 2010/08/19
Posted by sosal

댓글을 달아 주세요

/*
 http://sosal.tistory.com/
 * made by so_Sal
 */



추상화 개념은 컴퓨터과학이라는 학문과 컴퓨터 시스템 설계 곳곳에서 이용되고 있다.

추상화 (Abstraction) 이라는 용어는 개체의 외적 속성과, 내적 구성의 세부사항을
구별하는것을 가리킨다.

우리는 추상화를 통해서 컴퓨터, 자동차, 전자레인지, 또는 프로그래밍의 함수 등에서
복잡하고 어려운 내적 세부사항을 무시한 채 하나의 도구, 또는 장비로 파악하여
간단하게 사용할 수 있게 된다.
더욱이 이렇게 복잡한 시스템을 설계하고 제작할 수 있는 것도 추상화를 통해서이다.
컴퓨터, 자동차 등의 여러 큰 물품 등은 각기 여러 부품들이 사용되어 제작되는데,
물품을 구성하는 이러한 부품들 또한 작은 부품들로 구성되어진다.

하지만 물품을 사용하는 이용자 입장에서, 이러한 작은 부품들이 어디에 사용되는지,
어떻게 사용되는지, 사용하는 방법 등의 세부적인 사항을 모르더라도
쉽게 제품을 사용할 수 있도록 제품들이 제작되었다.
이것이 추상화가 우리에게 주는 편리성이다.

추상화를 통해 우리는 복잡한 하나의 개체들을 또다른 물품의 구성요소로써
하나의 상위 계층 구성요소를 형성하는지에 대해서 집중할 수 있게 된다.
-> 세부사항에 빠져 헤매지 않고, 당면 작업에 관계된 시스템 부분을 파악할 수 있게 된다.

대형 소프트웨어 시스템의 개발은 모듈 방식으로 이루어지는 것을 살펴볼 수 있는데,
이러한 방식에서 각 모듈이 더 큰 모듈에서 하나의 추상적 도구로 사용되는것을 알 수 있다.
저작자 표시 비영리 변경 금지

'CS. > Computer Science' 카테고리의 다른 글

네트워크 소프트웨어의 계층 구조  (0) 2010/08/31
데이터 압축 (Data compression)  (0) 2010/08/27
컴퓨터 과학에서의 추상화  (0) 2010/08/25
알고리즘의 역할, 과학  (0) 2010/08/25
number system ~ Data storage  (0) 2010/08/19
Turing model 로써의 컴퓨터  (0) 2010/08/19
Posted by sosal

댓글을 달아 주세요

/*
 http://sosal.tistory.com/
 * made by so_Sal
 */



알고리즘 : 작업을 수행하는 방법을 정의하는 단계들의 집합.

ex ) 음식을 만드는 알고리즘, 길을 찾아가기 위한 알고리즘, 악기 연주를 위한 악보를 보는 알고리즘 등.


컴퓨터가 어떤 작업을 수행하기 위해서, 먼저 그 작업을 수행하기 위한 일련의 명령집합 (알고리즘)을
만들고, 이를 처리할 수 있는 형식으로 표현해줘야만한다.
ex ) 컴퓨터 -> 프로그램

프로그램을 컴퓨터가 처리할 수 있는 형식으로 인코딩하여
컴퓨터 안에 저장시키는 과정을 프로그래밍(programming)이라고 한다.
프로그램들과 이들이 나타내는 알고리즘을 함께 묶어 소프트웨어(software)라고 부르는데,
이는 하드웨어(hardware)라고 불리는 컴퓨터 장비 자체와 대비되는 표현이다.

알고리즘을 찾는 작업의 목표는 특정 유형의 모든 문제들을
해결할 수 있는 방법을 서술하는 일련의 명령들을 찾는것이다.




이전에는 제한적인 하드웨어의 능력때문에, 복잡한 알고리즘들을 활용하지 못하였지만
이러한 제한들이 사라지기 시작하면서, 컴퓨터는 보다 복잡하고, 큰 업무에 적용되었다.
복잡한 업무들을 알고리즘으로 표현하려는 시도가 사람들에게 부담을 초래하게 되었으며,
이것은 알고리즘과 프로그래밍 작업과정에 대한 연구를 활성화하는 계기가 되었다.

오늘날 기술 발전으로 나타난 알고리즘 처리과정에 대한 여러 문제들을 조사해오고 있는데,
이것이 바로 컴퓨터 과학이라는 새로운 학문 분야의 등장을 알리는 서막이었다.


-> 컴퓨터 과학은 방대하며, 수학, 공학, 심리학, 생물학, 경영학, 언어학 등에 걸친
다양한 주제를 보괄하는 학문이다.

컴퓨터 과학에서 알고리즘의 핵심적 역할
알고리즘 - 실행, 전달, 표현, 발견, 분석, 한계 등
저작자 표시 비영리 변경 금지

'CS. > Computer Science' 카테고리의 다른 글

네트워크 소프트웨어의 계층 구조  (0) 2010/08/31
데이터 압축 (Data compression)  (0) 2010/08/27
컴퓨터 과학에서의 추상화  (0) 2010/08/25
알고리즘의 역할, 과학  (0) 2010/08/25
number system ~ Data storage  (0) 2010/08/19
Turing model 로써의 컴퓨터  (0) 2010/08/19
Posted by sosal

댓글을 달아 주세요

/*
 http://sosal.tistory.com/
 * made by so_Sal
 */

Foundation of computer science 2~3장을 리뷰하고있습니다. ㅎㅎㅎ

컴퓨터의 수체계에 대해서 설명하나보네요.
컴퓨터는 on off, 딱 2가지의 경우가 있죠?
이를 수로 나타낸게 2진수로, 010101101010 뭐 이런식 -.-ㅋ;

2진수, 8진수, 10진수, 16진수를 흔히 볼 수 있죠 ㅎㅎ
자세한 사항은 생략~!

0과 1을 bit라고 합니다. 이를 수로 나타낸게 (2진법) bit pattern~!

즉, 1bit : 2가지 경우의 수
4bit : 16가지 경우의 수
8bit : 256가지 경우의 수

8비트를 1바이트로 표현

1byte = 256가지 경우의수
1000 byte = 1 kb.
1000kb = 1 mb
1000mb = 1 gb....
... 생략~

단순 8바이트로는 양수밖에 표현하지 못하죠
그래서, 맨 첫번째 비트를 음수로 표현하자는 방법이 나왔습니다.
1000 0001 = -1
0000 0001 = 1
좋은방법이지만, -0과 0은 같은숫자인데 중복이 됩니다.
덧셈 뺄샘 연산도 그닥 좋아보이지가 않네요

그래서 만든게 2의 보수!!

일단 0000 0000 ~ 0111 1111 은 (0~127) 당연히 모두 양수로 두는데,
마이너스인 값이 덧셈이 되도 뺄샘연산이 된것처럼 하게 하기 위해서 만든게 2의 보수!

0111 1111 과 (127) 어떤수를 빼야 0이 될까요? -127이죠.
그렇다면 -127은 1000 0001 이렇게 생겼겠네요. (overflow)

0000 00001 과 1111 1111 을 더해야 0이 되니까
즉 1111 1111은 -1이 되겠네요.
즉 1 0000 0000 에서 x를 뺀 값이 -x라는 뜻! ㅎㅎ

이렇게해서 2의 보수도 쉽게 정리되었;;;;습니다.
뭐 단순 리뷰니까요~ ^^, 특히 오버플로우 개념에 대해선 숙지하셔야..
(two's complement representation : 2의 보수 표현법)


그럼, 정수는 이렇게 쉽게 표현할 수 있는데..
소수 (예를들면 float, double)은 어떻게 표현할 수 있을까?? (물론 근사값이죠? ㅎㅎ)

IEEE standards : IEEE has defined several standards for stroing floating-point number.
float-point 자료형의 저장방식을 뭐 정의했다고 하네요..


4바이트 (32bit) float 자료형의 구조입니다.
         byte :     1           8               23
excess_127 [sign] [exponent] [Mantissa]

sign 비트가 1이면 음수, 0이면 양수겠죠?
exponent는 지수입니다. 자릿수를 나타내겠죠.
Mantissa는 가수.. 라고 하는데, 뭐 자릿수의 근사값이라 생각하면 되겠습니다 ㅎㅎ
excess 127의 뜻은 exponent가 127일떄 첫째자리라는 뜻입니다.
(exponent : 127 : 0111 1111)

127은 0 ~ 255 까지 표현 가능한 지수를 절반에 해당하는 수로
지수값의 절반을 양의 지수로 절반의 음의 지수로 사용하고자 절반에
해당하는 127을 bias로 설정한 것입니다.

8바이트 (64bit) double 자료형의 구조입니다.
          byte :      1           11               52
exxcess_1023 [sign] [exponent] [Mantissa]
(exponent : 1023 : 011 1111 1111)
저작자 표시 비영리 변경 금지

'CS. > Computer Science' 카테고리의 다른 글

네트워크 소프트웨어의 계층 구조  (0) 2010/08/31
데이터 압축 (Data compression)  (0) 2010/08/27
컴퓨터 과학에서의 추상화  (0) 2010/08/25
알고리즘의 역할, 과학  (0) 2010/08/25
number system ~ Data storage  (0) 2010/08/19
Turing model 로써의 컴퓨터  (0) 2010/08/19
Posted by sosal

댓글을 달아 주세요