💽 디지털 공학 개론

  • 정보 표현 가능한 수 체계: 10, 2, 8, 16진수
  • 10진수
    • 한 자리에 0에서 9까지의 수를 사용하여 수 표현
    • 9보다 큰 수는 여러 개의 숫자를 사용하여 표현
    • 각 숫자의 자릿수(가중치)가 10의 거듭 제곱을 가진다
    • MSD(Most Significant Digit): 가장 큰 자릿수
    • LSD(Least Significant Digit): 가장 작은 자릿수
  • 2진수
    • 한 자리에 0에서 1까지의 수를 사용하여 수 표현
    • 2진 숫자(binary digit) / 비트(bit)
    • 디지털 시스템과 회로 설계에 적합(전압 허용 레벨)
    • 저장된 데이터에 왜곡 발생 >> 허용 전압 레벨(1.5v에서 3.5v 사이의 전압 처리X)에 의해 원래 신호값으로 재생 >> 신뢰도 높음
  • 비트 수에 따른 10진수 표현 범위
    • 4비트: 0~15
    • 8비트: 0~255
    • 16비트: 0~65535
  • 2진수를 10진수로 변환하는 방법
    • 각 2진 비트에 자릿수를 곱한 후, 모두 더한다
  • 10진수를 2진수로 변환하는 방법
    • 10진수를 2로 더이상 나눌 수 없을 때까지 나눈 후, 그 몫과 나머지를 역으로 읽는다
  • 정해진 비트를 가지고 컴퓨터에서 문자와 숫자, 특수문자를 저장하거나 처리한다
    • 7비트 문자코드: ASCII 코드

💻 마이크로프로세서

  • 마이크로프로세서 종류
    • 인텔 80 계열
    • 모토롤라 68 계열
  • 인텔 80 계열
    • 4비트 마이크로프로세서 4004가 최초
    • 8비트 8080부터 대중적 사용
    • CP/M 운영체제 등장과 함께 PC용 CPU로 널리 사용
  • 자이로그
    • 8080 개량하여 만든 8비트 Z8, Z88C00, Z89 계열
  • 모토롤라 680 계열
    • 8비트 mc68XX 개발
    • MC6801 개발 이후, 68HC11, 68HC16, 68332 등으로 발전
  • Mos 테크놀로지
    • 널리 사용되는 8비트 6502 개발(애플 컴퓨터 CPU)
  • 삼성전자
    • 4비트 마이크로컨트롤러 KS51, KS56, KS57 계열 개발 시작
    • 자이로그의 super9 코어 도입 >> KS88 계열
    • 16비트 KS16계열, 32비트 KS32계열
  • 80 계열(인텔)
    • 8비트: 8080
    • 8비트 성능 향상: 8085
    • 16비트: 8088(XT 컴퓨터), 데스크탑
    • 80286(향상된 16비트), 80386, 80486, 80586 >> 팬티엄
  • 68 계열(모토롤라)
    • 8비트: 6800
    • 8비트 성능 향상: 6809, 6502(MOS, 애플)
    • 16비트: 68000(매킨토시) >> 현재는 팬티엄 사용
  • 8비트
    • 인텔: 8051 계열
    • 마이크로칩: PIC 계열
    • 아트멜: AVR 계열
    • 모토롤라: 68k 계열
    • 자이로그: Z88 계열
  • 32비트
    • 인텔: 80960
    • 모토롤라: 68332
    • ARM 계열
  • 인텔 8051 계열
    • CISC 방식
    • 마이크로컨트롤러 개발 초기에 8비트 시장에서 큰 인기를 누림
    • 직접 생산
    • 현재, 아트멜, 필립스 등에서 호환 프로세서를 생산함
    • 8051 코어(대표)는 아직도 많은 전자 제품에서 사용(안전성)
    • 내부 데이터 RAM(128) / 내장 특수 기능 레지스터(128) / 내부 프로그램 메모리(4K >> 4096) / 외부 확장 프로그램 메모리(60K) / 외부 프로그램 메모리(4K)
  • 마이크로칩 PIC 계열
    • RISC 방식, 8비트 마이크로컨트롤러
    • 속도, 내부 메모리 용량, 내장 디바이스 특성에 따라 PIC12, PIC14, PIC16, PIC17, PIC18 계열
    • 동작 전원 범위(2.0V~6.0V)가 넓고 소비 전류 수는 mA 이하이며, 파워 on Reset과 원 칩 타이머, ROM 등을 내장 >> 소형 제품에 적합
  • 아트멜 AVR 계열
    • ATiny, AT90S, ATmega 계열
    • 동작 전원 범위(1.8V~5.5V)가 넓음
    • 프로그램 코드를 저장할 플래시 메모리
    • 데이터를 저장할 EEPROM, SRAM 등 다양한 메모리
    • 모든 계열이 ROM writer와 같은 별도의 장비 없이 PC에서 AVR의 내부 플래시 메모리로 프로그램을 저장하는 ISP(In-System Programming) 기능을 갖추고 있음
  • 동작 속도 비교
    • PIC: 5Mips(20MHz >> 1/4 분주)
    • 8051: 2.5~3Mips(20M >> 1/7~8 분주)
    • AVR: 8Mips(8MHz >> 분주X), 가장 빠름
  • 명령어 개수 비교
    • PIC: 약 35개, 배우기는 편하지만 프로그램 작성 어려움
    • 8051: 약 111개
    • AVR: 약 120개
  • 가격 비교
    • PIC, 8051: OTP(One-Time Programmable), 1OTP(1회만 쓰기 가능 >> MASK, P ROM)
    • AVR: OTP 타입 없고 플래시 메모리만 제공 >> 단가가 높음
  • 데이터 메모리(RAM) 비교
    • PIC: 128~256바이트
    • 8051: 128 + 외부 RAM(최대 64K 바이트)
    • AVR: 512 + 외부 RAM(최대 64K 바이트) >> 가장 큼
  • 프로그램 메모리(ROM) 비교
    • PIC, 8051: 초기에 ROM, EPROM 타입만 제공 >> 요즘에는 플래시 타입 모델도 출시
    • AVR: 모든 계열에서 플래시 타입을 제공 >> 단가가 높음
  • 프로그래밍 방식 비교
    • PIC, 8051: 일부 모델은 ROM 라이터자외선 이레이저(UV erasure) 필요 / 플래시 타입은 ISP로 편리하게 프로그래밍
    • AVR: 모든 계열을 ISP 방식으로 프로그래밍 할 수 있다는 장점
  • 개발 언어
    • 8051: 어셈블리어와 C언어 >> C언어는 느림
    • PIC: 어셈블리어가 좋고 C언어는 하드웨어 구조상 문제 많으며 코드의 효율도 좋지 않음
    • AVR: 어셈블리어와 C언어 모두 좋음 / C언어의 경우, 속도 차이 있지만 무시할만한 수준
    • 8051 / PIC는 C 컴파일러가 고가 >> 일부 기능 제한하여 무료로 제공
    • AVR은 상용에 뒤지지 않는 무료 버전인 AVR-GCC 있음 / 8비트 중에서 유일하게 gcc 포함
    • 최근 8051은 무료로 제공하는 SDCC도 있음
  • 정리
    • PIC: 부품 가격 저렴하고 심플 + 컨트롤러 성격 강함 >> 양산용
    • 8051: AVR과 PIC의 중간 >> 플래시 타입 이용시 업그레이드 가능
    • AVR: 기존 마이크로프로세서에 RAM과 ROM 부착 >> 교육용 / 부품 가격 비싸고 업그레이드 비교적 용이 >> 계측기 / 고급 기종
  • ARM 코어
    • 임베디드 시스템에서 저전력, 저발열, 고성능의 이점
    • ARM7을 필두로 ARM9, ARM11 등 >> 제조 업체의 폭넓은 지지
    • 현재 PDA, 게임기, PMP, 태블릿 PC 등 저전력을 요구하는 소형 기기 혹은 네트워크 장비인 IP 공유기나 라우터 등에 사용
  • 인텔 8051 계열 마이크로 컨트롤러
    • MCS-51 계열: 8051 기본 구조를 중심으로 일부 변형된 CPU 통칭
    • 하버드 구조, CISC 머신
    • 4K바이트 프로그램 메모리(ROM)와 128바이트 데이터 메모리(RAM)를 내장
    • 16비트 타이머 2개
    • 64K바이트 외부 프로그램 메모리 공간과 64K바이트 외부 데이터 메모리 공간
    • 내장된 프로그램 메모리는 MROM(Mas ROM)
  • 인텔 MCS-51 계열 주요 모델 특징
    • WDT(Watchdog Timer): 32비트 분주기를 이용하여 카운트
    • 시스템 RC 오실레이터로부터 클럭 제공
  • 아트멜 8051 계열 마이크로 컨트롤러
    • 인텔의 오리지널 모델에 새로운 I/O 기능을 추가
    • 처리 속도 높여 성능을 향상시킨 다양한 MCS-51 호환 기종 등장
    • 내부 프로그램 메모리를 플래시 메모리로 사용
    • 사용자 편의성을 높이거나 패키지의 핀 수를 20개로 소형화
  • 아트멜 MCS-51 계열 주요 모델 특성
    • PWM(Pulse Width Modulation): 펄스폭 변조
  • 필립스: 초저가형, 저전압형, 플래시 메모리형 >> 다양한 모델의 제품군
  • 달라스: 배터리 백업 기능 / RTC 기능이 내장된 모델 출시

💾 시스템 프로그래밍

  • 커널
    • 리눅스의 핵심
    • 프로세스와 메모리, 파일 시스템, 장치 관리
    • 컴퓨터의 모든 자원 초기화제어 기능
    • 사용자 인터페이스
    • 명령 해석
    • 프로그래밍 기능
  • 리눅스 기본 쉘(배시 쉘)
    • 응용 프로그램
    • 각종 프로그래밍 개발 도구
    • 문서 편집 도구
    • 네트워크 관련 도구
  • 유닉스/리눅스 시스템 프로그래밍
    • 유닉스, 리눅스에서 제공하는 시스템 호출(시스템 콜, 시스템 함수)을 사용해 프로그램을 작성하는 것
  • 시스템 호출
    • 유닉스 시스템이 제공하는 서비스를 이용해 프로그램을 작성할 수 있도록 제공되는 프로그래밍 인터페이스
    • 기본적인 형태는 C언어의 함수 형태로 제공
    • 리턴값 = 시스템 호출명(인자1, 인자2, ...)
  • 라이브러리 함수
    • 라이브러리: 미리 컴파일된 함수들을 묶어서 제공하는 특수한 형태의 파일
    • 자주 사용하는 기능을 독립적으로 분리하여 구현 >> 프로그램의 개발과 디버깅을 쉽게하고 컴파일을 좀 더 빠르게 할 수 있음
    • /lib, /user/lib에 위치 >> lib*.a 또는 lib*.so 형태로 제공
  • 시스템 호출 vs 라이브러리 함수
    • 시스템 호출은 커널의 서비스 모듈을 직접 호출하지만 라이브러리 함수는 직접 호출하지 않음
    • 시스템 호출은 man(명령어 사용법) 페이지가 섹션 2에 속하지만 라이브러리 함수는 man 페이지가 섹션 3에 속함
    • 시스템 호출은 성공하면 0을 리턴하고 실패하면 -1을 리턴하지만 라이브러리 함수는 오류가 발생하면 일반적으로 NULL을 리턴하고 함수의 리턴값이 int형이면 -1을 리턴한다
    • 둘 모두 errno 변수오류 코드를 저장한다
  • C언어
    • 데니스 리치 개발
    • 뛰어난 기능과 융통성
    • 대부분의 시스템 소프트웨어를 구현하는 언어
    • 고급 언어이면서 저급 언어처럼 비트나 바이트 처리하고 포인터에 의해 주소를 처리함
    • 리눅스와 리눅스 애플리케이션 대부분이 C언어로 작성되어 있다

📠 운영체제

  • 제어 프로그램: 감시 프로그램, 작업 관리 프로그램, 데이터 관리 프로그램
  • 감시 프로그램(Supervisor)
    • 가장 중요한 역할
    • 각종 프로그램의 실행과 처리 등 프로그램의 흐름 전체를 관리/감독하고 제어한다
  • 작업 관리(Job Management) 프로그램
    • 작업이 수행되도록 준비 / 지시
    • 작업이 끝나면 마무리
    • 다른 작업으로의 이동을 처리
    • 작업이 연속적으로 이루어질 수 있도록 시스템 스케쥴자원을 할당
  • 데이터 관리(Data Management) 프로그램
    • 입출력 데이터를 관리
    • 주기억장치와 보조기억장치 사이의 데이터 전송과 수정, 삭제, 보관 등의 유지보수 기능을 제공
  • 통신 관리(Communication Management) 프로그램
    • CPU와 연결된 각 주변 장치 간의 신호 교환이 원활히 이루어지도록 통제
    • 외부 통신 회선과 연결된 통신망의 통신 제어 담당
  • 처리 프로그램: 언어 번역 프로그램 / 서비스 프로그램 / 문제 프로그램
  • 언어 번역 프로그램
    • 저급언어, 고급언어로 작성한 프로그램을 기계어로 변역
    • 컴파일러, 어셈블러, 인터프리터
  • 서비스 프로그램
    • 컴퓨터 시스템을 효율적으로 사용할 수 있도록 지원
    • 사용 빈도 높음
    • 연결 편집 프로그램 / 링커
    • 로더
    • 정렬/병합 프로그램
    • 유틸리티 프로그램
  • 문제 프로그램
    • 특정 업무 및 해결을 위해 사용자가 작성한 프로그램
    • 편집기, 데이터베이스, 통신용 프로그램, 그래픽 프로그램 등 사용자의 응용 처리를 위해 사용하는 프로그램
  • 자원 관리 기능
    • 컴퓨터 시스템을 구성하는 CPU, 기억장치, 주변장치 등의 자원을 관리
  • 프로세스 관리
    • 프로세스와 스레드 스케줄링
    • 생성과 제거
    • 시작, 정지, 재수행
    • 동기화 및 통신 관리
  • 주기억장치 관리자와 협업
    • 메모리 상태 추적
    • 할당 및 회수
    • 가상 기억 장치 / 페이징 장치
  • 장치 관리자 / 파일 관리자와 협업
    • 입출력 장치 / 주변장치 스케줄링
  • 파일 관리
    • 생성, 삭제, 변경, 유지
    • 위치와 사용 여부, 상태 추적
  • 운영체제의 서비스
    • 프로그램을 실행하기 위한 환경 제공
    • 프로그램과 사용자들에게 정해진 서비스 제공
    • 운영체제마다 제공되는 서비스가 다르다
  • 부트스트랩 서비스
    • 부트스트래핑, 부팅: 운영체제가 적재되는 과정
    • 부트스트랩 로더는 디스크 트랙 0에, 나머지는 디스크의 다른 부분에 적재
  • 사용자 서비스
    • 프로그래머가 프로그래밍 작업을 쉽게 수행할 수 있도록 제공
  • 사용자 인터페이스
    • 운영체제와 사용자 간의 통신 및 대화를 하기 위한 서비스
    • GUI, CUI(Character User Interface), CLI
  • 프로그램 수행
    • 프로그램을 메모리에 적재하여 실행
    • 프로그램을 정상적 혹은 비정상적으로 끝냄
  • 입출력 동작
    • 수행 중인 프로그램은 입출력 요구, 파일 또는 입출력 장치 지정
  • 파일 시스템 조작
    • 파일을 정확히 읽고 기록
    • 파일 생성, 삭제
  • 통신
    • 하나의 프로세스와 또 다른 프로세스 사이
    • 같은 컴퓨터 시스템 내부에서 수행되는 프로세스 사이
    • 네트워크로 연결된 각각 다른 컴퓨터 시스템 간
  • 오류 발견
    • 컴퓨터 시스템의 모든 장치에서 일어나는 오류를 탐지
  • 시스템 서비스
    • 자원 할당: 다수의 사용자 혹은 다수의 작업이 동시에 실행될 때, 데이터 혹은 자원들이 각각의 작업에 할당
    • 보호: 다중 사용자 컴퓨터 시스템에 저장된 정보의 소유자는 다른 사람이 자신의 정보에 접근하는 것을 제한
    • 계정: 다중의 사용자가 컴퓨터 시스템을 사용하는 기록 보관 / 컴퓨터 시스템 사용량을 알거나, 시스템 사용량 청구, 시스템 사용 통제 등의 관리
  • 시스템 호출 서비스
    • 실행 중인 프로그램과 운영체제 간의 인터페이스
    • 시스템 호출을 통해 운영체제의 기능을 서비스
    • API(Application Programming Interface): 프로세스 제어 / 파일 조작 /장치 조작 / 정보 관리 / 통신

📺 전산 개론

  • 컴퓨터 역사
    • 초기의 계산기: 중국 주판(최초의 수동 계산기) / 네이피어의 봉
    • 기계식 계산기: 장치를 이용한 계산기
    • 파스칼의 톱니바퀴 계산기: 최초의 기계식 수동 계산기
    • 배비지: 해석 기관(입력장치, 처리기, 제어기능, 기억 장소 및 출력장치)
    • 튜링: 튜링 머신 >> 이론적 제안(컴퓨터의 논리적 근거 제시)
    • ABC: 전자식 디지털 계산기 >> 2진수로 데이터 표현
    • MARK-1: 하버드 에이큰 교수가 배비지의 해석기관 원리 구현전기 기계식 자동 계산기
    • ENIAC: 모클리와 에키트가 개발 >> 배선판을 이용한 외부 프로그래밍 방식
    • 프로그램 내장 방식: 노이만(현대 컴퓨터) >> 실행할 데이터와 프로그램을 주기억장치에 적재 후 명령에 순서대로 실행하는 방식
    • EDSAC: 윌킨스가 프로그램 내장 방식 도입, 이후 ENIAC을 EDVAC에 구현하여 컴퓨터 시대 개막
  • 제 1세대 컴퓨터
    • 세계 최초로 개발된 상업용 디지털 전자 계산기 UNIVAC
    • 인구 조사 자료 처리
    • 진공관 사용
    • 기계어로 작성
  • 제 2세대 컴퓨터
    • 쇼클리가 트랜지스터 발명
    • IBM 회사
    • 컴퓨터의 크기가 대폭 축소, 전력 소모량 상당히 감소, 계산 속도 훨씬 빠름, 신뢰성 높음
    • 활용 분야 확산: 비즈니스, 산업계, 항공사, 대학교
    • FORTRAN, COBOL(고급 언어)
  • 제 3세대 컴퓨터
    • 노이스가 IC(Integrated Circuit) 칩 처음 개발
    • 트랜지스터 소자가 IC칩으로 대체
    • IC칩 대량 생산 >> 컴퓨터 가격 저렴해짐 / 컴퓨터의 성능 대폭 향상
    • 메인프레임 컴퓨터: IBM 360
    • 3세대 후반기: 미니 컴퓨터 성장, 최초 미니 컴퓨터 PDP-8
  • 제 4대 컴퓨터
    • 수천 개의 소자를 포함하는 LSI(Large Scale Integration) >> V(ery)LSI >> U(ltra)LSI
    • 메인프레임: IBM 370 계열, UNIVAC 1100 계열, CDC 170 계열
    • 미니컴퓨터: VAX-11 계열, MV 8000
  • 마이크로프로세서 칩 개발
    • 하나의 실리콘 칩에 중앙처리 장치(CPU) 포함
    • PC, 슈퍼 컴퓨터 CRAY-1
  • 개인용 컴퓨터
    • 컴퓨터 대중화에 큰 역할
    • ALTO, 애플 컴퓨터(APPLE 1, APPLE 2)
    • Intel 80088칩 >> IBM-PC XT, Intel 80286칩 >> IBM-PC AT >> 시장의 90% 차지
    • 노트북 컴퓨터, 넷북, 스마트폰으로 발전
  • 기관 위주의 컴퓨팅 시대
    • 메인프레임: 대기업, 정부 기관, 대학 등 큰 조직
    • 현대: 복잡한 계산 필요한 공학 및 과학 분야, 기업, 군사적 응용
  • 개인 컴퓨팅 시대: 사무 자동화
  • 사람 간의 컴퓨팅 시대
    • WAN 네트워크를 통해 연결
    • 이더넷을 이용한 LAN 활성화
    • 인터넷망 탄생 후, 웹서비스 개발
    • 마이크로소프트사의 인터넷 익스플로러 >> 인터넷 대중화에 큰 역할
  • 임베디드 및 유비쿼터스 컴퓨팅 시대
    • 마이크로프로세서 칩 개발 이후, 가전 제품을 위한 특수 목적의 마이크로프로세서칩과 메모리칩 개발
    • 모든 디지털 가전제품과 자동차에 내장(임베디드)
    • 유비쿼터스 환경 >> 곳곳에 숨겨짐 >> 센서
  • 메인 컴퓨터와 슈퍼 컴퓨터
    • 메인 컴퓨터: 은행, 항공사, 대기업, 정부 기관 >> 큰 조직
    • 슈퍼 컴퓨터: 일기예보, 유전 탐사, 시뮬레이션, 의학 이미지 처리 >> 복잡하고 빠른 계산
    • 일본 요코하마 지구과학 연구소의 NEC가 가장 빠름
  • 서버와 워크스테이션
    • 서버 컴퓨터: 다수의 사용자를 동시에 지원 >> 미니 컴퓨터 or 워크스테이션
    • 워크스테이션: 계산 기능이 우수한 고성능 데스크탑 컴퓨터 >> 전문인들이 사용
    • 최근에는 PC의 성능이 향상되어 워크스테이션과의 경계 불투명
  • PC와 노트북
    • PC: 개인용 컴퓨터, 데스크탑 컴퓨터
    • 저렴한 가격
    • 노트북: 휴대성 강조, 랩탑 컴퓨터 >> 태블릿으로 발전
  • 모바일 컴퓨터
    • 휴대성 강조, 포켓용 컴퓨터
    • PDA, 스마트폰, 넷북
    • 무선 인터넷 기능 >> 실시간에 무선으로 인터넷 액세스
  • 임베디드 컴퓨터
    • 특수 용도의 마이크로프로세서 칩이 가정용 기기 혹은 가전제품에 내장
    • 실제적으로 90% 이상의 마이크로프로세서 칩이 임베디드 컴퓨터 형태
profile
There's Only One Thing To Do: Learn All We Can

0개의 댓글