3 분 소요

cs 기초

하드웨어를 알아야 하는 이유

* 컴퓨터의 기본 구조를 이해하고 컴퓨터에서 동작하는 소프트웨어에 대한 개발이 이루어져야 Clean Code를 작성할 수 있음!!

What is Computer?

Compute+er


Computation vs Calculation

"calculation" implies a strictly arithmetic process,

whereas "computation" might involve applying rules in a sysematic way

Computer vs Calculator

  • Stored Program computer -> Computer
    • Stores and Executes instructions
  • Fixed Program computer -> Calculator
    • just calculate

Computer Science and Engineering

  • 컴퓨터의 소프트웨어를 다루는 학문
  • 컴퓨터라는 물리적 기기를 연구하는 것이 아닌 Computer의 개념과 구조를 이해하고 구현하는 학문

Basic Computer architecture

  • Program counter - contains the address (location) of the instruction being executed at the current time
  • ALU(Arithmetic Logic) - +, -, *, /, AND, OR, NOT

Architecture Naming

  • x86

8080 - 8bit

8086 - 16bit

8088 - 8bit

80286 - 16bit

80386 - 32bit

Architecture Naming

  • IA64

    Itanium - IA64 based 64bit, 1999

    ….

  • AMD64

    Opteron - x86-64based 64bit, 2003

    Athlon, AMD Phenom, AMD FX

    Ryzen

    ..

  • Intel64 == AMD64

    Xeon - x86-64 based 64bit, 2004

    Core2

    Core i Series

CISC&RISC Architecture

  • Complex Instruction Set Computers
    • 복잡한 명령구조
    • 어드레싱에 강점
    • 전력 신경쓸 필요없이 고성능 컴퓨팅에 사용
    • Intel x86, AMD64, ..
  • Reduced Instruction Set Computers
    • 명령어의 단순화
    • 메모리 접근 횟수가 적음
    • 저전력 프로세싱에 사용
    • SPARC, ARM, ..

Memory

  • 컴퓨터에서 사용할 수 있도록 정보를 저장하는 공간

  • Random Access Memory
    • 자유롭게 읽고 쓸 수 있는 주기억장치
    • 메모리의 주소로 그 위치에 접근
    • RAM의 어떤 위치로든 같은 시간에 접근(Random Access)
    • 컴퓨터가 느려지면 재부팅을 하세요!
  • Read Only Memory
    • 전원이 공급되지 않아도 그 정보를 유지하는 주기억장치
    • 비싸거나 느려서 안정적인 정보를 저장해야 할 때 사용
    • BIOS, OS, Firmware 정보 저장에 쓰임

OS

  • Operating System : 운영체제
  • 시스템 하드웨어를 관리하고, 응용 프로그램 실행을 위한 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어

Kernel

  • 하드웨어와 응용프로그램을 이어주는 운영체제의 핵심 시스템소프트웨어

Operating System == Kernel??

운영체제의 핵심 역할 수행

  • 하드웨어, 프로세스 보안
  • 시스템 자원 관리(스케줄링)
  • 하드웨어 추상화 - 일관성 있는 인터페이스 제공

  • Windows 10 - Windows NT 10.0
  • MacOS - NXU/Darwin
  • Linux - Linux

Type

  • Single-tasking / Multi-tasking
    • 한번에 1개 / n개의 프로그램을 동시 수행(achieved by time-sharing)
  • Single-user / Multi-user

  • Distributed

Hardware <–> Operating System <–> Application Software <–> User

Chronicles of OS

Unix

  • Starting in the 1970s by AT&T
  • Ken Thompson, Denis Ritchie, ..

Unix-like

  • Solaris
  • BSD
  • MacOS

Linux

  • Unix-clone OS
  • GNU/Linux
  • Sep 17 1991 by Linus Torvalds

Distribution of Linux

  • Android
  • Tizen
  • Chrome OS
  • ..

Windows

  • CP/M-DOS -> MS-DOS
  • Windows 1
  • ..
  • Windows 10
  • Windows 95
  • Windows 98
  • Windows 2000
Windows 9x vs Windows NT

MS-DOS based -> 16bit

WindowsNT Kernel(3.1) based -> 32bit

WindowsNT Kernel(6.1) based -> x86-64(AMD64)


Database

data

  • 컴퓨터가 처리할 수 있는 문자, 숫자, 소리, 그림 따위의 형태로 된 정보.
  • Latin “Datum”의 복수형 “Data”에서 유래

Database

  • 체계화된 데이터의 모임
  • 여러 응용 시스템들의 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터들의 묶음

DB?? DBMS??

DBMS(DataBase Management System)

  • 데이터의 모임인 Database를 만들고, 저장, 관리 할 수 있는 기능을 제공하는 응용프로그램
  • Oracle, Mysql, MariaDB, DB2, MS SQL Server, ..

DBMS의 조상님

dBASE

  • 마이크로컴퓨터용 최초의 DBMS
  • 1979년 Ashton이 개발
  • SQL이 아닌 독자 스크립트 언어로 실행 -> dbf 파일 생성

Characteristics

  • 데이터의 무결성
  • 데이터의 중복 방지
  • 보안 (추상화, 접근권한)
  • 성능 향상
  • 프로그램 수정과 유지 보수 용이

Differences between DataBase & File System

자기기술성

File System

  • .hwp -> 한글
  • .doc -> Microsoft Word
  • .xls -> Microsoft Excel

DB

  • Only SQL(RDBMS)

SQL(Structured Query Language)

데이터 관리를 위해 설계된 특수 목적의 프로그래밍 언어

SQL - 데이터 정의언어 (DDL)

데이터를 정의

CREATE - DB 개체 정의

DROP - DB 개체 삭제

ALTER - DB 개체 정의 변경

SQL - 데이터 조작언어 (DCL)

데이터 검색, 등록, 삭제, 갱신

INSERT - 행, 테이블 데이터 삽입

UPDATE - 테이블 업데이트

DELETE - 특정 행 삭제

SELECT - 테이블 검색 결과 집합

SQL - 데이터 제어언어(DML)

데이터 액세스 제어

GRANT - 작업 수행권한 부여

REVOKE - 권한 박탈

RDBMS vs NoSQL

구분 RDBMS NoSQL
형태 Table Key-value, Document, Column
데이터 정형 데이터 비정형 데이터
성능 대용량 처리시 저하 잦은 수정시 저하
스키마 고정 Schemeless
장점 안정적 확장성, 높은 성능
유명 Mysql, MariaDB, PostgreSQL MongoDB, CouchDB, Redis, Cassandra

ppt 44까지 했음

댓글남기기