Skip to main content

Vee-Validate Custom Validation

· One min read

커스텀 validation을 추가해야할 때가 있다. created에 $validator 인스턴스를 확장해주면 된다.

const option = {
created: function () {
this.$validator.extend("customRule", {
getMessage: function (field, args) {
return "오류 메세지";
},

validate: function (value, args) {
// 체크 로직
return true;
},
});
},
};

모듈형태거나 전역설정이면 import { Validator } from 'vee-validate'; 후에 Validator.extend로 접근하면 된다.

사용법

추가한 룰 이름으로 v-validate 속성에 넣어주면 끝이다.

<input type="text" name="help" v-validate="'required|customRule'" />

스크립트 상에서 추가

attach 메소드로 붙히면 된다.

this.$validator.attach("help", "customRule");

다른 사용법은 공식문서를 참조하자

Laravel - Migration으로 FK 생성이 안될 때

· One min read

참조할 테이블의 PK가 increment로 정의되어 있고, 연결할 테이블의 FK가 integer로 되어있는데, SQL Syntax ERROR가 날 경우에 다음과 같이 처리하면 된다.

increment가 기본적으로 unsigned이기 때문에 외래키를 걸 컬럼이 unsigned인지 확인해보자. (컬럼 타입이 완전히 같은지 확인해보자.)

<?php
...
// FK
$table->integer('pk_id')->unsigned();

// PK
$table->increment('id');
...

여담

ALTER TABLE CONSTRAINT FORIEN KEY 구문에 문제가 있는 줄 알고 한참 삽질

컴퓨터네트워크

· 51 min read

단말기와 단말기 사이를 전송매체가 연결하여 데이터를 주고받는 행위

컴퓨터 통신망의 역사

  • 1958 - SAGE: 최초의 컴퓨터 통신 시스템, 대공방어장치
  • 1961 - TSS: 최초의 시분할 통신시스템, Time Sharing System
  • 1968 - ARPA: 최초의 패킷 교환방식
  • 1968 - ALOHA: 하와이 대학 최초의 무선 패킷 교환 통신망
  • 1974 - SNA: 체계화된 컴퓨터 통신망, System Network Architecture

컴퓨터 통신망의 목적

  • 자원의 공유와 신뢰도 향상
  • 처리 기능의 부산과 프로세스 간 통신제공
  • 시스템 간 호환성 확대
  • 최소의 비용으로 최대의 성능 제공

통신망의 목적 자원의 공유와 신뢰도 향상 및 처리기능의 분산과 프로세스 간의 통신 제공

컴퓨터 통신망의 서비스

  • 데이터
  • 음성
  • 이미지
  • 영상
  • 멀티미디어

데이터 통신 시스템

  • 데이터 처리계: 컴퓨터
  • 데이터 전송계: 단말, 데이터 전송장치, 통신제어장치 등

데이터 단말장치

  • DTE: Data Terminal Equipment
  • 전송할 데이터를 부호로 변환하거나 처리하는 장치
  • 컴퓨터, 프린터, 터미널

데이터 단말장치 기능

  • 입출력 기능
  • 데이터 수집과 저장
  • 데이터 처리
  • 통신, 통신제어

데이터 회선종단장치

  • DCE: Data Circuit terminating Equipment
  • 신호변환장치
  • DTE에서 처리된 신호를 변환하거나 통신회선상에 놓여 있는 신호를 변환하는 장치
  • 모뎀, 랜 어댑터, DSU 등이 해당

데이터 회선종단장치 기능

  • 신호변환
  • 전송신호의 동기제어
  • 송수신 확인 기능
  • 전송오류검출 및 정정 기능

통신 소프트웨어

  • 컴퓨터 상호 간에 접속하여 정보를 교환할 수 있게 하는 소프트웨어

응용 소프트웨어

  • 특정 분야에 대해 망의 접근을 가능케 하는 소프트웨어
  • 메세지 핸들링 시스템

상호접속 소프트웨어

  • 망내의 각 지점을 서로 연계하여 작동하도록 기능하는 소프트웨어
  • 프로토콜
  • X.25, TCP/IP

컴퓨터 통신망 프로토콜

  • 특정 단말기 사이의 상호통신을 위한 규약

프로토콜 3요소

  • 문법: syntax
  • 타이밍
  • 의미: semantic

프로토콜 주요 기능

  • 흐름제어
  • 오류제어
  • 순서화 전달
  • 주소지정
  • 다중화
  • 전송
  • 분할과 병합
  • 캡슐화
  • 연결

계층

물리 계층

  • 회선구성, 데이터 전송방식, 접속형태, 물리적인 링크 설정 유지 해제 의 기능
  • V.24, V.28(RS-232C)
  • X.21, X.21bis
  • I.430, I.431 ISDN

데이터링크 계층

  • 노드 대 노드 전달, 주소 지정, 전송되는 데이터 동기 확인, 흐름제어, 오류 제어
  • HDLC
  • LAN의 LCC, MAC
  • LAPB

네트워크 계층

  • 발신지 대 목적지 전달, 논리주소 지정, 주소 변환, 논리적 링크 구성, 라우팅, 다중화
  • IP
  • ICMP, ARP, RARP

전송 계층

  • 데이터 전송 종단 간의 신뢰성 제어, 포트 주소 지정, 분할과 병합, 연결제어
  • TCP, UDP

세션 계층

  • 송수신 프로세스 간의 연결 확립, 연결 해제, 송신권 제어, 동기점 표시

표현 계층

  • 통신을 위한 데이터 포맷 형태의 변환기능, 데이터 암호화, 데이터 압축, 네트워크 안전성 보장

응용계층

  • 사용자가 직접 접하는 부분

전송 코드

보도 코드

  • Baudot code
  • 이진수로 만들어진 코드화된 최초의 문자표
  • 국제 전신인쇄기에서 사용

ASCII 코드

  • American Standard Code for Information Interchange
  • 미국 표준기구에 정한 표준 부호
  • 7개의 정보 비트와 1개의 패리티 비트로 구성
  • 7개의 정보비트로 128개 조합 가능
  • 숫자와 영문자 모두 사용
  • 짝, 홀 패리티에 의해 오류 발생 여부를 알 수 있음

EBCDIC 코드

  • 확장 이진화 10진 코드
  • Extended Binary Coded decimal Interchange Code
  • BCD 코드를 확장
  • 256개의 비트패턴이나 문자로 표현

전송방식

단방향

  • Simplex
  • 라디오, TV, 전광판

반이중

  • Half-duplex
  • 양방향 전송이 가능하지만 동시에는 불가능
  • 무전기, 팩스

전이중

  • Full-duplex
  • 양방향 전송가능, 두 개의 전송 채널이 필요
  • 전송 효율이 높으나 비용이 많이 듦
  • 전화

직렬 전송

  • serial transmission
  • 전송하고자 하는 각 데이터 비트를 직렬화한 뒤 하나의 통신회선을 이용해 한 비트씩 순차적으로 전송하는 방식
  • 원거리 전송에 적합
  • 저속 통신 방식이 사용

병렬 전송

  • perallel transmission
  • 전송하고자 하는 데이터를 비트별로 통신회선을 따로 두고 동시에 복수 비트를 한꺼번에 전송
  • 근거리 데이터 전송에 이용
  • 고속 전송에 적합

베이스밴드 전송

  • 디지털 데이터를 그대로 보내거나 전송부호로 변환시켜 전송하는 방식
  • RZ, NRZ, AMI, Manchester, CMI 등이 전송부호로 사용
  • 주로 LAN에 사용
  • 가까운 거리

브로드밴드 전송

  • 하나의 전송매체에 여러 채널의 데이터를 실어서 동시에 전송하는 방식
  • 데이터 신호보다 높은 반송파에 실어서 변조를 거친 후 전송하기 때문에 원거리 전송에 유리
  • 하나의 전송매체로 멀티미디어 서비스 제공 가능
  • 주파수 분할 다중화에 적합
  • 홈 네트워크와 케이블 TV

전송모드

동기식 전송

  • 전송된 데이터를 정확히 수신하기 위해 송수신 측 간의 타임이을 일치시켜 전송하는 방식
  • 데이터를 한 묶음의 문자열로 전송할 수 있음
  • 비트마다 동기를 취해 긴 데이터를 송신할 수 있다.
  • 전송효율과 전송속도가 높음

비동기식 전송

  • 전송하고자 하는 문자 앞 뒤에 시작 비트와 정지 비트를 첨부하여 전송하는 방식
  • 동기는 바이트 단위로 이뤄지며 저속용 데이터 전송에 사용

전송효율

코드효율

  • 코드효율 = 실제정보 비트 수 / 전체 정보 비트 수

전송효율

  • 전송효율 = 정보 비트 수 / 전체 비트 수

전체효율

  • 전체효율 = 코드효율 X 전송효율
  • 실제 전송되는 전체 비트 중에서 실제 데이터가 차지하는 비율

위상변조 잡음에 강하고, 레벨 변화의 영향을 적게 받으며, 일정한 크기의 대역폭을 필요로 한다. 간단한 회로 구성

동기화 송신 측과 수신 측 사이에 정보를 보내는 시점을 합의하는 절차

PCM 신호를 양자화, 표본화, 부호화하여 펄스 변조하는 불연속 펄스 변조 펄스코드변조

전송매체

꼬임선 케이블

  • 두 가닥의 절연된 구리선이 균일하게 서로 감겨 있는 형태

UTP

  • Unshielded Twisted Pair, 비 차폐 이중 꼬임선
  • 가격 저렴, 설치가 쉽고 유연하다
  • 랜선
  • 최대 100m
  • RJ-45 커넥터

STP

  • Shielded Twisted Pair, 차폐 이중 꼬임선
  • UTP에 비해 비쌈
  • 외부전류로부터 보호를 위해 금속박막을 접지하는 특별한 커넥터를 사용해 설치가 복잡
  • 백본의 최대 사용길이는 100m로 제한

동축 케이블

  • 내부 단일 전선과 외부 도체로 구성
  • 이중 나선보다 처리율이 좋다
  • 베이스밴드와 브로드밴드 전송 방법을 사용할 수 있다.
  • 수백 Mbps의 고속전송이 가능
  • 바다나 땅에 묻어도 성능에 큰 지장이 없음
  • 전력 손실이 적고 높은 주파수에서 빠른 데이터 전송 가능
  • 차폐성이 좋아 간섭이 적음
  • 1km 마다 리피터를 필요로 한다.

종류

  • RG-8, 9, 11: 굵은 이더넷
  • RG-58: 얇은 이더넷
  • RG-75: TV

얇은 동축 케이블

  • Thin 이더넷 또는 10BASE-2
  • 반드시 같은 케이블로만 연결해야한다.
  • 최대 사용 길이는 185m

굵은 동축 케이블

  • Thick 이더넷 또는 10BASE-5
  • 네트워크 백본으로 사용
  • 최대 사용길이는 500m
  • 설치와 취급이 어렵다.

광섬유

  • 유리 세관이나 다른 투명한 재료를 섬유로 하여 그 내부에 적당한 굴절률을 분포시켜 부호화된 신호의 빛이 전송될 수 있도록 한 전송매체
  • 넓은 대역폭
  • 케이블 다발이 아주 작고 무게가 가벼움
  • 감쇠도가 현저히 낮다, 간섭에 강하다.
  • 오류 발생이 적으나 탭을 이용해 분기선을 내기가 힘들다.
  • 넓은 리피터 설치 간격
  • multi mode, single mode
  • 광송신기는 전기신호를 광신호로, 광수신기는 반대로
  • 설치시에 기술력이 필요

단일 모드

  • 단계 지수 광섬유를 사용
  • 광선을 수평에 가까운 작은 영역의 각도로만 제한
  • 광원을 고도로 집중

다중 모드

  • 광원으로 나온 여러 개의 광선이 중심부에서 서로 다른 경로를 가지고 이동

무선통신매체

지상 마이크로파

  • Terrestrial microwave
  • 접시형 파라볼라 안테나
  • 안테나의 직경은 10ft 내외로 안테나를 고정하고 수신 안테나 방향으로 가느다란 빔을 발사
  • 장애물이 없는 고지대에 위치

위상 마이크로파

  • 통신위성은 마이크로파 중계국으로 2개 또는 그 이상의 지상 송신국을 서로 연결
  • 어떤 주파수 대역을 수신해 이를 증폭해서 아날로그 전송ㅇ르 하거나, 재생해 디지털 전송으로 다른 주파수로 송신
  • 사용 빈도수가 높은 국제간의 통신용으로서 가장 좋은 매체
  • 위성전송의 주파수 범위는 1~10GHz

라디오파

  • 다방향성
  • AM, FM, 초단파(VHF), 극초단파(UHF)
  • 감쇠 정도가 낮고 대역 확산의 경우 여러 주파수를 동시에 사용 가능
  • 특정 주파수를 사용하고 있는 네트워크와 인접하지 않은 곳에서 주파수 대역을 재사용 가능
  • 30MHz ~ 10GHz
  • 대기 반사에 기인한 상호 간의 간섭을 일으키지 않음
  • 주요한 손상 요인은 다중경로 간섭이다.

통신선로

점대점 선로

  • point to point
  • 연결 개수가 많아질수록 성능이 좋지만, 전송 매체의 길이가 증가해 비용이 많이 든다.
  • 네트워크 트래픽이 많은 구간에는 전송매체의 수를 늘리고 않은 구간은 줄이는 게 해결책

멀티드롭 선로

  • 브로드캐스팅 방식
  • 전송매체 하나에 여러 단말기를 공유하여 연결
  • 분기장치를 설치하고 3개소 이상의 지점을 연결하는 방식
  • 사용률이 낮은 여러 단말기들을 하나의 회선에 여러 개 접속해서 회선사용효율을 높이는 것이 가능해진다.
  • 버스 방식

네트워크 형태

스타형

  • 중앙의 제어 스테이션으로부터 모든 장치는 점대점 방식 연결
  • 고장 발견이 쉽다

버스형

  • 버스에 모든 노드가 연결
  • 버스의 끝에는 terminator를 둔다.
  • 노드의 고장이 망 다른부분에 전혀 영향을 미치지 않는다.
  • 보통 CSMA/CD 방식 사용

링형

  • 단방향 점대점 형태
  • 분산 제어와 checking, recovery가 간으하나 노드의 변경이나 추가가 비교적 어렵다.
  • 노드의 고장에 대처하기 어렵다.
  • 광섬유에 잘 맞음

허브/트리형

  • 허브에 연결된 스타형

메시형

  • 단말기들이 모두 연결된 형태

데이터 교환

회선교환

축적교환

  • 데이터를 송신 측의 교환기에 임시 저장시켰다가 수신 측 터미널에 전송하는 방식

메세지 교환 방식

  • 각 메세지마다 전송경로를 결정하고 수신측 주소를 붙여 전송
  • 전송 메세지는 추후 검색이 가능
  • 응답시간이 느려 대화형 데이터 전송에는 부적합

패킷 교환 방식

  • 메세지를 일정한 길이의 패킷으로 분할하여 전송하는 방식
  • 네트워크 계층
  • 회선 이용률이 매우 높다
  • 송신 측으로 분할되어 전송된 데이터를 수신 측에서 재결합
  • 응답시간이 빨라 대화형 데이터 전송에 적합

교환 방식

회선 교환 방식

  • 데이터를 전송할 때마다 통신경로를 설정하여 데이터를 교환하는 방식
  • 회선의 설정, 데이터의 이도으, 회선의 단절
  • 매번 통신경로를 설정
  • 통신경로 접속시간이 1초 이내
  • 길이가 길고 통신 밀도가 높은 데이터 통신에 유리
  • 접속된 동안엔 두 시스템 간의 통신회선이 독점

메세지 교환 방식

  • 축적 교환 방식으로 데이터의 논리적 단위인 메세지를 교환
  • 교환기가 메세지를 받았다가 보내주는 방식
  • 회선 효율이 증대
  • 비동기 전송이 가능
  • 연결 설정이 불필요
  • 다중 전달이 쉽다
  • 실시간이나 빠른 응답시간에는 부적합
  • 지연이 상적으로 길다
  • 음성 신호 전송에는 불가능

패킷 교환 방식

  • 수신 측 주소에 따라 적당한 통신경로를 선택해 전송하는 교환 방식
  • 전송하고자 하는 정보를 일정한 크기의 데이터로 분할하여 송수신 주소인 헤더를 각각 부가한 패킷 단위로 전송
  • 데이터그램과 가상회선 방식
  • 경로 설정, 트래픽 제어, 오류 제어
  • 오류 발생시 해당 패킷만 복구하면 됨
  • 회선 다중화로 효율 증대
  • 교환기에 축적 전송 가능
  • 부가서비스 제공
  • 패킷이 파일화 되진 않는다.

다중화기

  • 하나의 전송로에 여러 개의 데이터 신호를 혼합시켜 전송하는 방법
  • 다수의 저속회선 사용자를 하나의 고속전용선에 접속시켜 통신망을 이용가능하게 한다.
  • 시분할 다중화, 주파수분할 다중화 방식이 있다.

집중화기

  • 수신 단말기로의 데이터 전송을 위해 여러 단말기로부터 데이터를 고속전용선에서 조합하거나 형태를 변경시킬 수 있는 장치
  • N개의 선을 M개의 선으로 출력
  • 실제 전송할 데이터가 있는 단말에만 회선을 동적 할당

단말기

  • 터미널
  • 컴퓨터나 컴퓨팅 시스템에 데이터를 입력하거나 표시하는데 쓰이는 하드웨어적인 기기

종류

  • 텍스트 터미널: 테긋트 입력 및 표시를 위한 직렬 컴퓨터 인터페이스
  • 단순 단말기: 덤 터미널, 기계식 타자기가 하는 것처럼 똑같은 제한된 기능
  • 그래픽 단말기: 씬 클라이언트, RDP, X11과 같은 프로토콜 사용

베이스밴드 신호

  • 단말에서 출력되는 디지털 정보를 부호화하여 변조과정을 거치지 않고 전송하는 방식
  • 고주파 영역이 차단될 수 있어 베이스밴드 신호를 전송로에 적합하게만 변환한다.
  • 단극, 복류, 단류 RZ, 복류 RZ, NRZ, 바이폴라, 맨체스터, 차분적 맨체스터, CMI 등의 전송방식

변복조기

  • 모뎀

단말장치 주요기능

  • 입출력 기능
  • 전송제어 기능
  • 기억 기능: 일시적 데이터 저장

신호변환장치의 주요기능

  • 신호 변환 기능
  • 전송신호의 동기 제어기능
  • 송수신 확인 기능
  • 전송오류의 검출 및 정정 기능

변복조

  • 아날로그 신호를 디지털 신호로 변환하거나 그 반대

디지털 데이터 네트워크 인터페이스

  • DCE와 DTE 사이의 경계조건의 규정
  • X.20, X.21, X.25, X.28, X.29

음향 결합기

  • 공중전화교환망 (PSTN)
  • 수화기를 모뎀 위에 얹어 놓으면 송화기에서 들리는 소리를 매개로 데이터를 주고 받게되는 원리
  • 주파수 편이변조 방식을 사용(FSK)
  • 저속 데이터 전송(600bps, 1200bps)

전처리장치

  • 전방처리기, FEP, Front-End Processor
  • 호스트 컴퓨터와 단말기 사이에 설치되어 입출력 작업을 전담하도록 개발된 특수용도의 컴퓨터
  • 데이터 교환 기능, 프로토콜 변환기능, 통신 회선 및 터미널의 제어, 전송 메세지 검사 기능 등

폴링/셀렉팅 방식

  • polling / selecting
  • 폴링과 선택에서 송수신을 권유하는 것
  • 하나의 통신회선상에 3개 이상의 단말이 있는 분기회선에 있어 단말기 상호간 데이터링크를 확립하는 방식

라운드 로빈 방식

  • 시분할 시스템

다중화 정적인 채널의 공유 방안, 채널에서 주파수 대역이나 타임슬롯을 사전에 할당, 입출력의 비트율(용량)이 일치한다.

통신제어

임의접근제어

  • discretionary access control
  • 시스템상의 객체에 대한 접근을 개인 또는 그룹의 식별자를 기반으로 한다.

부 네트워크

  • 대규모 네트워크를 구성하는 데 있어 개별적인 소규모 네트워크를 의미

통신제어 구조

  • 회선접속부, 전송제어부, 연산부

원격처리장치

  • RP, Remote Processor
  • 단말기와 접속해 복수단말회선의 집선 역할과 동시에 단말기 제어, 정보량의 제어 등의 기능을 수행한 후 한 가닥의 고속통신회선에 의해 주 컴퓨터로 송신

전처리장치

  • 통신회선 및 단말기 제어의 지능, 다중화기능, 데이터의 형식변환 및 메세지 통신제어
  • 마이크로 프로세서 내장

후처리장치

  • 주 컴퓨터 후단에 설치되어 주 컴퓨터가 수신한 데이터 중 별도로 처리할 필요가 있을 때 사용하는 장치

통신 기능

  • 통신망 운영 및 관리
  • 전송상 오류검출과 정정
  • 통신회선의 효율적인 활용
  • 통신회선의 접속과 데이터링크 확립
  • 링크의 개방, 상태 감시
  • 통신회선 차단
  • 최적의 경로선택 및 제어
  • 보안

통신 기능의 종류

  • 온라인 처리 방식
  • 오프라인 처리 방식
  • 실시간 처리 방식
  • 일괄 처리 방식: Batch Processing

네트워크 아키텍쳐

  • 컴퓨터와 단말기 또는 망의 기능이 서로 알맞게 나눠 최적의 상태로 통신망이 구축되게하는 기본 구조나 기술

OSI 7 레이어

  • 네트워크 의존계층: 물 데 네
  • 전송계층: 전
  • 응용지향계층: 세 표 응
  • 상위 계층에서 하위계층으로 데이터가 전달되면서 헤더정보가 추가 전달
  • 하위 계층에서 상위계층으로 데이터가 전달되면서 헤더정보가 삭제
  • 헤더가 삭제되는 과정을 decapsulation

이진동기통신

  • BSC, Binary Synchronous Communication
  • 1964년 IBM에서 개발되어 사용되고 있는 데이터링크 프로토콜
  • 점대점 방식과 다중점 구성에 쓰인다.
  • 정지-대기 ARQ, 흐름제어, 오류 정정 등을 사용하는 반이중 전송방식 지원

이진동기통신 프레임

  • 프레임은 2개 이상의 동기 문자로 시작
  • SYN SYN STX data ETX BCC(블록검사 계산 LRC CRC)
  • 다중 블록 프레임의 경우 STX data ITX BCC STX data ETX BCC

HDLC

  • 고급 데이털이크 제어, High level DataLink Control
  • 비트중심 프로토콜
  • 불균형 구성: 하나의 장치가 주국이며 기타 다른 모든 장치는 종국
  • 대칭 구성
  • 균형 구성

통신모드

  • 정규응답모드: NRM, 종국은 전송 전 반드시 주국의 허가가 필요
  • 비동기응답모드: ARM, 채널이 사용되지 않으면 주국 허가 없이 전송 가능
  • 비동기균형모드: ABM, 모든 지국이 동등하며 점대점으로 연결된 조합국만 사용

프레임

  • 정보 프레임: I프레임, 사용자 데이터와 그에 관련된 제어정보 전송
  • 감시 프레임: S프레임, 제어정보 전송 및 데이터링크 계층의 흐름제어와 오류제어
  • 무번호 프레임: U프레임, 시스템 관리를 위해 예약, 링크 자체를 관리할 목적
  • 시작 플래그, 주소, 제어, 정보, FCS, 종료 플래그로 구성

표준화

ITU-T

  • ITU 산하의 표준화 기구로 전화, 팩스, 패킷 교환 데이터 통신 등의 공중 통신망에 대한 국제 표준화를 담당

ISO

  • 1946년 창설되어 다양한 분야의 표준을 개발하기 위한 국제 표준화 기구

ISOC

  • 인터넷 설계 및 운영을 위한 조정 위원회

IEEE

  • 미국전기전자학회 LAN 표준화

FCC

  • 미국연방통신위원회

클록 드리프트 클록 속도가 달라 비트 간 발생시간이 다르거나, 송수신단의 독립적인 두 개의 클록이 정확하게 일치되지 않는 클록의 어긋남

비트 동기

  • 각 비트마다 타이밍을 맞추는 것
  • 7~8비트로 구성된 비트열을 하나의 단위로서 타이밍을 취한다.
  • 동기 방식: 비트 위치를 알려주는 동기신호를 사용하는 방식
  • 비동기 방식: 정보 처음에 정보의 시작을 상대에게 알려주는 비트를 첨가
  • 동기 신호를 보낸 송수신 측에서 동기를 취한 다음 일정한 주기로 신호를 구분하는 방법

주소 지정

물리 주소

  • 컴퓨터의 메인 메모리를 접근할 때 사용하는 주소
  • 기억장치의 주소 레지스터에 적재

논리 주소

  • 실제 주소와 구분하여 사용자 관점에서 본 논리적인 프로그램의 주소
  • mapping 하드웨어에 의해 실제주소로 변경

포트 주소

  • 물리적인 전용선은 하나이지만 여러 응용 프로그램이 서로 나눠 사용하기 위해 도출된 개념
  • MAC 주소: 데이터 링크 계층 주소 (노드 대 노드)
  • IP 주소: 네트워크 계층 주소(호스트 대 호스트)
  • PORT 주소: 전송계층 주소(프로세스 대 프로세스)

기호 주소

  • Symbolic Address
  • 정보의 위치와 무관하게 특정 언어, 함수 또는 다른 정보를 지정하는데 쓰이는 레이블
  • 프로그램에서 기억 장소를 지정하는데 사용하는 영숫자 레이블
  • 프로그램을 작성할 때 사람이 알기 쉽게 적당한 명칭을 붙혀 표시한 주소

오류 제어

오류 제어 방식

  • 오류에 중복성을 부가하는 방식: 패리티 비트, 해밍 코드, 순환 중복 검사
  • 전송 방법에 중복성을 부가하는 방식: 반송대조 방식(에코 검사), 3연속 전송방식

오류 정정 방식

  • 자동반복요청 방식(ARQ)
  • 순방향 오류정정 방식(FEC)

패리티 비트 검사

블록합 검사

  • 패리티 비트가 각 문자에 대해 짝수의 배수만큼 비트에 오류가 발생하면 오류를 검출하지 못하는 단점을 보완
  • 수직 수평 패리티 비트 검사를 통해 오류 검출

순환 중복 검사

  • CRC, 귀환 오류 제어
  • 다항식을 이용
  • CRC는 나머지로 작용

전진 오류 수정

  • FEC, Forward Error Correction
  • 문자나 프레임에 부가적인 정보를 추가해 오류가 존재하는 경우 수신 측이 오류검출뿐 아니라 정확한 정보가 어떤 것인지 수신한 비트열로부터 유추할 수 있는 방식
  • 데이터 비트 프레임에 잉여 비트를 추가해 오류를 검출, 수정한다.

넘버링 방법

  • 해밍 코드 방식에 준한 방법

흐름 제어

  • 송수신 양측 간 처리속도가 다른 경우에 데이터 양이나 통신속도가 수신 측의 처리 능력을 초과하지 않도록 조정하는 기능

정지-대기 방식

  • 각 프레임을 보낸 후 확인 응답을 기다리고 다음 프레임을 전송
  • ACK, NAK
  • 가장 간단한 형태며 한 번에 1개의 프레임만 전송 가능
  • 거리가 멀 수록 전송 효율이 떨어짐

슬라이딩 윈도우

  • 여러 개의 프레임을 전송함으로써 효율을 높인 방식
  • 송신 측은 수신 측으로부터 확인 메세지를 받지 않더라도 윈도우의 한도까지 계속 프레임을 전송할 수 있으므로 전송 효율이 높다.

혼잡 제어

  • 체증제어
  • 통신 네트워크로 유입되어 전송되는 정보량을 조절하여 네트워크가 혼잡해지지 않게 조절하는 것

TCP 혼잡제어

  • 셀프 클록 방식

AIMD

  • Additive Increase/Multiplicative Decrease
  • 패킷을 하나씩 보내고 문제없으면 윈도우의 크기를 1씩 증가시키면서 전송하는 방법
  • 실패 또는 타임아웃시 크기를 절반으로 감소
  • 네트워크가 혼잡해진 다음에야 대역폭을 줄이는 방법

느린 시작

  • slow start
  • 패킷이 문제 없이 도착하면 ACK 패킷마다 윈도우의 크기를 1씩 늘린다.
  • 한 주기가 지나면 창 크기가 2배가 된다.
  • 혼잡 시에 윈도우의 크기를 1로 감소시킨다.

빠른 재전송

  • 잘 도착한 마지막 패킷의 순번을 ACK에 실어서 보낸다.
  • 순번이 3번 중복되면 재전송을 하고, 윈도우 크기를 줄인다.

빠른 회복

  • 혼잡해지면 윈도우 크기를 반으로 줄여 선형 증가시키는 방법

주파수분할 다중화

  • FDM
  • 주파수 대역을 여러 개의 작은 주파수 대역으로 분할하여 데이터를 동시에 전달하는 방식
  • TV 방송
  • 간섭이 발생하지 않게 채널과 채널 사이에 보호대역(Guard Band)가 있다.

시분할 다중화

  • TDM
  • 하나의 회선 전체를 일정한 시간 간격을 두고 반복해서 각각의 단말에 데이터를 할당하는 방식

동기식

  • 기존 시분할 다중화 방식
  • 실제로 데이터가 없어도 타임슬롯이 할당되어 낭비될 수 있음

비동기식

  • 실제로 보낼 데이터가 있는 단말에만 동적으로 각 채널에 타임슬롯을 할당하는 방식
  • 대역폭에 낭비를 줄이고 전송 효율 증가
  • 주소 정보가 데이터에 첨가

시간 홈 예약 방법

  • 전송 데이터가 있는 경우에만 타임 슬롯을 배정하여 전송하는 방법
  • 고정길이의 데이터와 함께 주소 정보로 구성되는 셀을 챈러에 차례로 할당해 효율적으로 타임슬롯을 배정

ARQ 자동 반복 요구, Automatic Repeat reQuest

Checksum 데이터의 정확성을 검사하기 위한 용도로 사용되는 오류 검출 방식 1의 보수 연산을 사용

OSI

응용 계층

  • FTP, Telnet, SMTP, DB 등

표현 계층

  • 표준 방식으로 데이터를 코딩하는 문제를 다룬다.
  • 단말기의 데이터 표현 방법이 서로 다르면 상대방의 데이터를 이해할 수 있도록 적절하게 변환하는 과정이 필요
  • 데이터 암호화, 압축, 코드 변환

세션 계층

  • 사용자에게 원격 파일 전송이나 원격 접속 등 세션 기능을 제공
  • 대화 제어, 토큰 제어, 동기 기능 제공
  • 세션 연결의 설정과 종료, 반이중, 동기, 예외보고
  • T.62, ISO 8327

전송계층

  • 송신 프로세스와 수신 프로세스를 직접 연결하는 end-to-end 통신 기능 제공
  • 전송오류율, 전송속도, 흐름제어, 목적지 주소 지정, 메세지 우선권, 무결성 보장, 다중화

네트워크 계층

  • 라우팅 문제를 처리
  • 전송 데이터를 패킷이라고 부른다.
  • 경로 배정 및 중계, 통신망 연결 접속, 흐름제어, 순서제어
  • X.25

데이터링크 계층

  • 물리계층을 통해 전송되는 데이터의 물리적 전송오류를 해결
  • 전송 데이터를 프레임이라고 부른다.
  • 두 단말기가 1:1로 직접 연결된 환경에서 데이터 전송기능을 지원
  • 흐름제어, 노드 대 노드의 주소지정, 전송제어, 오류제어

물리 계층

  • 물리적 인터페이스
  • 비트열의 데이터를 받아 전기적 신호로 변환 후 전송매체를 통해 수신측에 전송
  • DTE, DCE 간의 인터페이스
  • RS-232C

하위 계층에서 상위 계층으로 데이터가 이동할 때 헤더는 삭제되고 상위 계층에서 하위 계층으로 데이터가 이동할 때 헤더는 추가된다.

TCP/IP

  • ARPA에서 갭라한 네트워크를 통해 컴퓨터가 통신하는 방법을 규정
  • 물리, 데이터링크, 네트워크, 전송, 응용 계층으로 구성
  • TCP/IP의 응용계층은 OSI의 세션, 표현, 응용을 합친 계층

PDU 프로토콜 데이터 단위 계층 구성의 프로토콜에서 상위 프로토콜 계층으로부터 송신을 위해 주어지는 데이터 단위 LLC의 부계층에서 만들어 진다. 응용계층: 메세지, 전송계층: 세그먼트, 네트워크계층: 데이터그램, 데이터링크계층: 프레임

IP

  • 인터넷 프로토콜
  • 신뢰성을 제공하지 않는 비연결형 데이터그램 프로토콜
  • 패킷을 분할, 병합하는 기능 수행
  • 헤더 체크섬만 제공
  • 클래스 A~C는 유니캐스팅에서 사용하고 클래스 D는 멀티캐스팅에 사용, 클래스 E는 예비주소체계
  • A에서 C로 갈수록 규모가 작은 네트워크

UDP

  • 사용자 데이터그램 프로토콜, User Datagram Protocol
  • 상위계층에서 받은 데이터를 IP 프로토콜에 전달하지만 데이터그램이 목적지까지 제대로 도착했는지 확인하지 않음
  • 포로토콜을 처리하는 기능이 작아 TCP보다 처리가 빠르다.
  • 헤더, 데이터 모두 체크섬 기능 제공
  • 헤더는 송신포트, 수신포트, 길이, 체크섬으로 구성

TCP

  • 분할 단위는 세그먼트
  • 연결형 서비스 제공
  • 신뢰성 있는 데이터 전송 보장
  • 전이중 방식
  • 헤더는 송신, 수신포트, 순서번호, 응답번호, 데이터 오프셋, 예약, 윈도우, 체크섬, 긴급 포인터로 구성

피기백킹 piggybacking, 수신한 패킷에 대한 확인 응답을 전송하는 패킷에 포함하여 같이 전송

TCP 헤더 플래그 비트

  • URG: 긴급 포인터 필드가 유효한지
  • ACK: 응답번호 필드가 유효한지
  • PSH: 현제 세그먼트의 데이터를 상위 계층에 즉시 전달하도록 지시
  • RST: 연결의 리셋이나 유효하지 않은 세그먼트에 대한 응답
  • SYN: 연결 설정 요구
  • FIN: 연결 종료 의사

주소변환

ARP

  • 주소 결정 프로토콜, Address Resolution Protocol
  • IP 주소를 MAC 주소로 변환

RARP

  • 역순 주소 결정 프로토콜, Reverse Address Resolution Protocol
  • MAC 주소를 IP 주소로 변환

ICMP

  • Echo request, Echo reply: 반향 요청, 반향 응답, 네트워크의 신뢰성을 검증
  • Destination unreachable: 목적지 도착 불가능
  • Source quench: 소스 억제
  • Time Exceeded: 실행시간 초과
  • 인터넷 환경에서 오류 처리를 지원하는용도로 사용
  • IP 패킷의 데이터 부분에 캡슐화되어 송신 호스트로 전달

IGMP

  • 임의의 호스트가 멀티캐스트 그룹에 가입하거나 탈퇴할 때 사용하는 프로토콜
  • 자신이 IGMP 메세지에 표시된 멀티캐스트 주소의 멤버임을 다른 호스트와 라우터에 알리는 용도

DHCP

  • Dynamic Host Configuration Protocol, 동적 호스트 설정 통신규약
  • TCP/IP 통신을 실행하기 위해 필요한 설정 정보를 자동적으로 할당, 관리하기 위한 통신규약
  • RFC 1541에 규정
  • DHCP를 사용하지 않는 경우에는 각 컴퓨터마다 IP 주소가 수작업으로 입력되어야 한다.
  • 네트워크 관리자가 중앙에서 IP 주소를 관리하고 할당하며, 컴퓨터가 네트워크의 다른 장소에 접속되었을 때 자동으로 새롱누 IP 주소를 전송
  • IP 주소가 일정 시간 동안만 컴퓨터에서 유효하도록 하는 임대 개념

IPv6

  • 128 비트

LAN

  • 단일 기관 소유
  • 연결성
  • 경로 선택이 필요 없음
  • 광대역 전송매체 사용으로 고속통신 가능
  • 높은 신뢰도
  • 자원 공유
  • 분산 처리
  • 분산 제어
  • 정보 교환

스타형 / 별형 LAN

버스형 LAN

  • 보통 CSMA/CD 방식 이용, 토큰 버스 방식도 이용

베이스 밴드 특정 반송파를 변조하기 위해 사용되는 모든 신호에 의해 얻어지는 주파수 대역 기저대역

CSMA/CD

  • Carrier Sense Multiple Access with Collision Detection
  • 반송파 감지 다중 접속 및 충돌탐지
  • 호스트가 회선의 상태를 감시하여 충돌을 피하는 방식
  • 충돌이 확인되면 일정시간 대기 후 다시 충돌을 확인하고 충돌이 감지되지 않을 경우 데이터를 전송
  • IEEE 802.3
  • 버스형 네트워크

토큰 버스

  • IEEE 802.4
  • 물리적으로는 버스구조, 논맂거으로는 링형태의 구성
  • 부하 증가에 딸느 영향이 적다.
  • 부하가 적어도 기본적인 오버헤드

링형 LAN

  • 광섬유의 특성에 잘 맞는 형태

토큰 링

  • IEEE 802.5
  • 부하의 증가에 따른 영향을 적게 받음
  • 부하가 적어도 기본적인 오버헤드가 있다.

트리형 / 허브형 LAN

메시형 LAN

전송 매체에 따른 분류

  • 이중 꼬임선 LAN
  • 동축 케이블 LAN
  • 광섬유 LAN
  • 무선 LAN: RF, Microwave, 적외선, 위성파

전송 방식에 따른 분류

  • 베이스밴드 LAN: 신호 변조 없이 송신하는 방식, 중소규모 형태
  • 브로드밴드 LAN: 모뎀 등에 의해 변조시켜 송신하는 방법, 주파수 변조와 위상 변조, 대규모

매체접근 방법에 의한 분류

  • 고정할당방식: FDM, TDM
  • 랜덤할당방식: ALOHA, CSMA, CSMA/CD
  • 요구할당방식: token passing, register, insertion, slotted

근거리 통신망의 구성요소

하드웨어

  • 서버 컴퓨터
  • 리피터: 케이블에 전송되는 전기적인 데이터 신호를 재생하고 중계하는 장치, 물리계층
  • 허브: 클라이언트들을 네트워크에 연결하는 가장 기본적인 공유연결장치, 물리계층
  • 브리지: 서로 다른 두 네트워크를 연결할 때 사용하는 가장 기본적인 장치, 물리 데이터링크 계층
  • 라우터: 서로 다른 세그먼트 간에 브로드캐스트 패킷이 전달되지 않도록 트래픽을 분리하는 역할 및 원격지에 있는 랜과 랜을 연결해주는 역할, 물리 데이터링크, 네트워크 계층
  • LAN 스위치: 데이터 전송 시 멀티미디어 데이터가 많은 경우 각 노드 간에 패킷 재전송 작업이 많이 발생하여 네트워크 성능이 떨어지고 대역폭 부족이 발생하는데 이런 문제점을 해결하기 위한 장비
  • 게이트웨이: 사용하는 매체나 각종 프로토콜이 일치하지 않는 서로 다른 네트워크 구조의 네트워크 사용자끼리도 통신이 가능하도록 해주는 장치

CIU

  • Computer Interface Unit
  • 컴퓨터 접속장치 및 네트워크 연결장비
  • 랜 카드, 허브, 브리지, 라우터, 스위치, 게이트웨이 장비 등

BIU

  • Basic Information Unit
  • 네트워크에서 데이터 전송 시 사용되는 기본 정보 단위

통신망 노드

  • 컴퓨터 네트워크는 컴퓨터, 데이터 통신망, 단말장치 등으로 구성

LAN의 논리 링크 제어

LLC 계층

  • 논리링크제어, Logical Link Control
  • 슬라이딩 윈도우 프로토콜 사용

MAC 계층

  • 공유 버스 방식의 이더넷
  • 토큰 링 방식

IEEE 802 프레임 형식

  • IEEE 802.3에서 제정한 1-persistent CSMA/CD 방식의 근거리 통신망 환경에 관해 규정한 표준안

802.3 이더넷 프레임 구조

  • 필드 크기는 바이트
  • Preamble, Start delimiter, destination addr, source addr, length, data, pad, checksum

MAU Media Attachment Unit 호스트 컴퓨터상의 부착 유닛 인터페이스 포트를 UTP 또는 동축 케이블 등과 같은 이더넷 네트워크 매체에 접속하기 위한 장치

공통키 암호 방식

  • 관용암호 방식, Conventional Encryption System
  • 환자 암호: Substitution Cipher 평문 문자를 암호문 문자로 일대일 대응시켜 암호화하는 방식
  • 전치 암호: Transpose Cipher 평문 문자의 순서를 어떤 특별한 절차에 따라 재배치하여 평문을 암호화 하는 방식, 순열 암호
  • 적 암호: Product Cipher 암호 강도를 향상시키기 위해 전치와 환자를 혼합한 암호 방식

공개키 암호 방식

키 분배 프로토콜

  • 키 분배: 키가 생성된 위치로부터 암호 알고리즘에서 사용된 위치로 암호화 키를 전송하는 과정
  • 키 사전분배: key predistribution 한 가입자가 키를 만들어 상대 가입자 또는 양측 가입자에게 전달하는 방식
  • 키 동의: key agreement 암호 방식을 이용하려는 상대자가 서로 키를 설정하는데 공동으로 참여하는 방식

DES CBC, CFB, OFD, ECB 모드

베스천 호스트 철저한 방어정책이 구현된 방화벽 외부로부터의 일차적인 연결을 받아들이는 시스템

Laravel - Migration 특정 파일만 실행하기

· One min read

전체를 migration 하지 않고 부분만 migration하고 싶을 때 다음과 같이 하면 된다.

database/migrations 아래에 selected 폴더를 생성하고 옮기고 싶은 마이그레이션 파일을 넣는다.

path 옵션을 주어 selected 폴더만 migrate한다.

$ php artisan migrate --path="database/migrations/selected"

여담

파일을 직접지정해서 실행하는 방법은 없나보다.

Alpine Linux AWS Cli 설치

· One min read

차례대로 실행만 해주면 된다.

# python 설치 안 된 경우
# $ apt install python

# pip 설치
$ curl -O https://bootstrap.pypa.io/get-pip.py
$ python get-pip.py --user

# PATH 등록
$ export PATH=~/.local/bin:$PATH
# aws cli 설치
$ pip install awscli --upgrade --user

$ aws --version

SSHD 보안 - fail2ban, port 변경

· 2 min read
$ cat /var/log/secure | grep 'sshd.*Failed' | grep -Po "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" | sort | uniq -c

# 실패 카운트와 IP
6 100.34.214.24
6 101.109.152.219
6 101.164.141.36

기본 포트를 사용 중이라면 어마어마한 IP 목록이 나올 것이다.

SSH 포트 변경

SSH 설정 변경

/etc/ssh/sshd_config 에 포트 설정을 변경한다.

/etc/ssh/sshd_config
Port 2020

SElinux 포트 추가

$ semanage port -a -t ssh_port_t -p tcp 2020

방화벽 포트 추가

$ firewall-cmd --permanent --zone=public --add-port=2020/tcp
$ firewall-cmd --reload

SSH 재시작

$ systemctl restart sshd

Fail2ban

일정 시도 이상을 실패하면 해당 IP 를 차단시키는 Fail2ban 을 설치하자

설치

# repo가 없다면
# $ yum install -y epel-release

$ yum install -y fail2ban

SSH 설정 추가

/etc/fail2ban/jail.local 또는 jail.conf 를 열어 [sshd] 의 enabled 속성을 true 로 변경한다.

서비스 시작

$ systemctl enable fail2ban
$ systemctl start fail2ban

더 쉬운 방법

쉘스크립트로 포트변경, 방화벽 룰 추가, Fail2ban 까지 한 방에 끝내버리자.

$ wget https://raw.githubusercontent.com/FunctionClub/Fail2ban/master/fail2ban.sh && bash fail2ban.sh 2>&1 | tee fail2ban.log

명령문에 따라 입력만 해주면 된다. 자세한 설명은 FunctionClub/Fail2ban 참고하자.

컴퓨터시스템구조

· 62 min read

세대별 구분

1세대

  • 진공관
  • 프로그램 내장방식
  • 전력소모 크고 발열 심함
  • 기계어, 어셈블리어

2세대

  • 트랜지스터
  • 진공관 컴퓨터에서 1/100 축소
  • 고급언어 (COBOL)

3세대

  • 집적회로 (IC: Integrated Circuit)
  • 고급언어 (베이직)

4세대

  • 고밀도 집적회로 (LSI: Large Scale Integrated circuit)
  • 초고밀도 집적회로 (VLSI: Very Large Scale Integrated Circuit)
  • PC
  • 고급언어, 문제지향적 언어

컴퓨터 시스템의 전체적 구성

시스템 버스

  • CPU, 기억장치, I/O 장치들을 상호 연결해주는 중심 통로
  • 단방향 어드레스 버스, 양방향 데이터 버스, 양방향 제어버스로 구성

입력장치

출력장치

기억장치

중앙처리장치

  • 연산장치, 제어장치, 레지스터로 구성
사람컴퓨터
감각입력장치
뇌세포기억장치
신경망중앙처리장치
움직임출력장치

운영체제

  • HW와 SW 자원을 관리하고 제어
  • 편리한 인터페이스 제공
  • 입출력의 보조적 기능 수행
  • 오류 처리

자원관리

  • 프로세스 관리
  • 주기억장치 관리
  • 보조기억장치 관리
  • 입출력장치 관리
  • 파일 관리

컴파일러, 인트프리터: 고급언어를 기계어로 변환하기 위한 번역기

분류

성능과 규모

  • 마이크로 컴퓨터: 현재 범용컴퓨터
  • 미니컴퓨터: 멀티유저 시스템
  • 메인프레임: 범용목적의 대형컴퓨터, 다수의 터미널 사용
  • 슈퍼컴퓨터

구조

  • 병렬컴퓨터: 동시에 여러 개의 마이크로프로세서 사용
  • 분산컴퓨터: 데이터가 네트워크 상에 분산되어 있을 때
  • 클라우드컴퓨터

사용목적

  • 전용컴퓨터: 군사용, 기상예보용, 천문학 등
  • 범용컴퓨터: 여러 분야의 다양한 업무 처리할 목적으로 설계된 컴퓨터 (과학계산, 통계 등)

처리방법

  • 일괄처리 컴퓨터: 일정 시점 단위로 한꺼번에 처리
  • 실시간 처리 컴퓨터: real-time, 온라인 처리 시스템, 즉시처리 시스템

자료표현

  • 디지털 컴퓨터
  • 아날로그 컴퓨터: 자료를 입력받아 곡선이나 그래프로 출력하는 컴퓨터
  • 하이브리드 컴퓨터: 아날로그, 디지털 데이터 모두 처리, A/D (Analog-Digital conveter) 변환기, D/A(Digital-Analog converter)로 데이터 변형 출력 가능

발달과정

특징컴퓨터
최초 기계식마크원
최초 전자식ENIAC
최초 프로그램내장EDSAC
최초 상업용UNIVAC-I

진공관 > TR > IC > LSI > VLSI 폰노이만 모델: 기억장치에 프로그램과 데이터를 넣고 순서대로 처리하는 방식 (프로그램 내장방식) 시스템버스: 어드레스 버스, 데이터 버스, 제어 버스

컴퓨터 명령어

주소필드

  • mode, operation code, address 필드로 구성
  • mode = 0 => 주소가 직접번지, mode = 1 => 주소가 간접번지
  • 주소필드는 주소 || 레지스터 || 데이터를 나타냄
  • 16bit 명령어의 경우: 1bit, 3bit, 12bit

3주소 명령어

  • 범용 레지스터 구조의 컴퓨터에서 사용
  • 연산코드와 3개의 주소필드로 구성
  • 프로그램은 간단하나 명령어의 길이가 너무 길다

2주소 명령어

  • 범용 레지스터 구조의 컴퓨터에서 사용
  • 연산코드와 2개의 주소필드로 구성
  • 연산시에 주소1의 내용은 실행 후에 출력값으로 저장되므로 원래 주소1의 내용은 없어진다.

1주소 명령어

  • 단일 누산기 방식의 컴퓨터에서 사용
  • ACC와 Operand의 연산결과는 다시 ACC에 저장되는 형식
  • 입력으로 사용된 누산기는 결과값이 저장되어 원래 값은 없어진다.

0주소 명령어

  • STACK

주소지정방식

의미주소지정

  • Implied Addressing Mode
  • 묵시적 주소지정방식
  • 데이터의 위치를 지정하지 않아도 묵시적으로 정해져 있음
  • PUSH, POP: Stack Pointer 사용
  • SHL, SHR: ACC의 내용을 시프트
  • 명령어가 짧다

즉치주소지정

  • Immediated Addressing Mode
  • Operand의 내용이 연산에 사용될 실제 데이터
  • 프로그램상에서 레지스터나 변수의 초기값을 설정하는데 사용

레지스터 주소지정

  • Register Addressing Mode
  • 레지스터에 데이터가 존재
  • 레지스터를 지정하는 오퍼랜드가 4bit라면 16개의 레지스터를 지정할 수 있음
  • 메모리를 액세스하지 않아 실행시간 단축
  • 데이터를 저장하는 공간이 레지스터로 한정

레지스터 간접주소지정

  • Register Indirect Addressing Mode
  • 레지스터의 내용이 유효주소가 되기 때문에 지정된 레지스터의 내용이 메모리 주소가 되어 유효 데이터를 가져옴
  • 레지스터가 10bit면 2^10B, 20bit면 1MB의 메모리 영역을 지정 가능
  • 데이터 인출을 위해 한 번만 메모리를 액세스하면 된다.

직접주소지정

  • Direct Addressing Mode
  • 오퍼랜드가 데이터의 유효주소
  • 데이터 인출을 위해 한 번만 메모리 액세스

간접주소지정

  • Indirect Addressing Mode
  • 오퍼랜드의 데이터가 가리키는 기억장소의 데이터가 유효주소 (2번)
  • 오퍼랜드가 nbit면 최대 2^n개의 주소공간
  • 명령어의 I비트가 0이면 직접주소, 1이면 간접주소

상대주소지정

  • Relative Addressing Mode
  • 명령어의 주소필드에 PC(Program Counter) 값이 더해져서 유효주소가 결정되는 방식
  • 기준 주소는 명령어의 주소, 변위는 PC
  • 주로 분기명령어에서 사용

인덱스된 주소지정

  • Indexed Addressing Mode
  • 인덱스 레지스터의 내용과 주소필드의 내용이 더해져서 유효주소가 결정
  • 기준 주소는 명령어의 주소, 변위는 인덱스 레지스터

베이스 레지스터 주소지정

  • Base Register Addressing Mode
  • 베이스 레지스터의 내용과 주소필드의 내용이 더해져서 유효주소가 결정
  • 기준 주소가 베이스 레지스터, 변위는 명령어의 주소필드

명령어의 종류

데이터 전송명령

  • 데이터가 변경되지 않고 위치만 옮기는 명령
명령어부호기능
loadLDmem => reg
storeSTreg => mem
moveMOVreg 간 전송
inputIN입력장치 => reg
outputOUTreg => 출력장치
pushPUSHreg => stack
popPOPstack => reg

데이터 처리 명령

  • 실제로 연산이 이뤄지는 명령
  • 산술연산명령어, 논리연산명령어, 비트처리명령어, 시프트명령어로 구분

산술연산

명령어부호기능
addADD덧셈
subtractSUB뺄셈
multiplyMUL곱셈
incrementINCmem, reg 1 증가
decrementDECmem, reg 1 감소
negateNEG2의 보수
add with carryADDC올림수와 함께 덧셈

논리연산

명령어부호기능
ANDAND특정부분 0으로 셋
clearCLR모든 비트 0으로 셋
clear carryCLRC캐리비트를 0으로 셋
enable interruptEI인터럽트 가능
disable interruptDI인터럽트 불가능

시프트

명령어부호기능
logical shift rightSHR오른쪽 논리 시프트
logical shift leftSHL왼쪽 논리 시프트
rotate rightROR현재값 유지하면서 오른쪽 자리이동
rotate lestROL현재값 유지하면서 왼쪽 자리이동

프로그램 제어명령

조건에 따라 PC가 변경되어 수행순서가 달라진다

명령어부호기능
branchBR지정된 주소로 분기
jumpJMP지정된 주소로 점프
skipSKPPC값 증가 후 다음 명령으로 skip
callCALLPC값 저장, 서브루틴 콜
returnRET리턴 주소를 PC에 저장
compareCMP두 수 크기 비교

프로그램 인터럽트

외부 인터럽트

  • 입출력장치, 전원 등 외부 요인으로 발생
  • 입출력장치의 데이터 전송 요구, 정보전송의 마감, timeout, 전원공급이 끊어질 때 발생
  • 프로그램 외적인 상황에서 발생

내부 인터럽트

  • 올바르지 않은 명령어나 데이터 사용시 발생
  • overflow, div 0, stack overflow, 메모리 보호영역 침범 등
  • 프로그램 자체에서 주로 발생

소프트웨어 인터럽트

  • 특수한 CALL 명령어로 프로그래머가 원하는 위치에서 인터럽트 발생
  • supervisor call instruction
  • 사용자 모드엥서 supervisor 모드로 CPU 상태를 변환

외부 인터럽트 처리

  1. 외부 인터럽트 발생
  2. CPU는 현재 수행하는 명령어의 실행 사이클 종료
  3. 다음 실행할 PC의 내용을 스택에 저장
  4. 인터럽트 서비스 루틴의 시작주소를 PC에 저장
  5. 인터럽트 처리 후 스택영역에 저장된 PC를 복구
  6. 프로그램 복귀 후 계속 실행

복합, 단축 명령어 컴퓨터

CISC

  • Complex Instruction Set Computer
  • 다양한 데이터와 주소방식 제공
  • 많은 명령어와 주소지정방식을 구현하기 위해 많은 하드웨어 필요
  • 실행속도가 느림

RISC

  • Reduced Instruction Set Computer
  • Load와 Store를 제외하고는 레지스터 간의 연산으로 구성
  • 고정된 명령어 형식 사용
  • 복잡한 간접주소지정방식은 사용하지 않음

시스템 버스

  • 컴퓨터 시스템의 각각의 장치를 연결하여 정보를 전송하는 공유전송매체
  • CPU를 중심으로 주기억장치, 보조기억장치, 입력장치, 출력장치가 데이터를 주고받는 통로

주소버스

  • Address Bus
  • 주기억장치에 데이터를 읽기/쓰기 위해서 주소를 지정하기 위한 선들의 집합
  • 단방향 전송
  • 주소 버스가 16bit이면 2^16 => 65536개의 주소 지정

데이터버스

  • 각각의 장치들 사이의 데이터를 전송하는 선들의 집합
  • 양방향 전송
  • 버스의 폭은 주소를 지정하고 한 번에 R/W하는 비트의 수
  • 주소당 32bit 씩 데이터를 전송한다면 데이터 버스의 수는 32개

제어버스

  • CPU, I/O장치, Memory 장치를 제어하는 신호선들의 집합
  • 인터럽트 요구 신호
  • 인터럽트 승인 신호
  • 버스요구 신호
  • 버스승인 신호
  • 기억장치 읽기 신호
  • 기억장치 쓰기 신호
  • 입출력장치 읽기 신호
  • 입출력장치 쓰기 신호
  • 리셋 신호
  • 버스 클록
  • 전송 확인 (transfer acknowledge)

동기식버스

  • 클록 펄스에 의해 데이터 전송이 발생
  • 마스터와 슬레이브는 모두 같은 클록 펄스에 동기
  • 인터페이스 회로가 간단
  • 클록의 주기보다 짧은 동작은 다음 주기까지 기다려야하는 단덤

비동기식버스

  • 핸드셰이킹 프로토콜 사용
  • 속도의 차이가 많은 장치에서 사용
  • 복잡
  • 소규모에선 비동기, 중형이상에선 동기방식을 주로 사용

버스중재

  • 동시에 여러 장치에서 버스를 요구할 때 필요 = 버스 경합

중앙집중식 중재방식

  • centralized arbitration scheme
  • 시스템 내에 중재기가 1개

분산식 중재방식

  • decentralized arbitration scheme
  • 여러 개의 버스중재기가 존재

대표적 버스 중재기: 데이지 체인, 폴링 방식

내부버스

  • 칩들 사이에 신호를 전달

외부버스

내부 버스를 경유해 CPU와 상호간을 연결하는 버스

VME

  • VMEbus 컴퓨터 버스 표준
  • 모토로라, 톰슨 사 등이 개발한 32bit, 64bit 버스 규격

멀티 버스

  • 인텔에서 개발한 범용 버스 시스템
  • 현재 산업용으로 사용
  • 멀티플렉서를 통해 다른 소자와 데이터를 송수신
  • 다중처리 가능
  • 마스터나 슬레이브로 동작
  • 마스터는 버스사용권을 얻어 데이터 전송 가능
  • 슬레이브는 스스로 버스를 제어할 수 없음

ISA 버스

  • Industry Standard Architecture bus
  • CPU와 각종 주변장치를 연결하여 정보를 전달하는 버스 설계 규격
  • AT 버스라고도 한다.
  • 16bit 버스 구조, 현재는 PCI 버스로 대체

EISA 버스

  • Extended Industry Standard Architecture bus
  • 32bit ISA 버스
  • 비싸서 사용 안함

VESA 로컬 버스

  • Video Electronics Standards Association local bus
  • 버스 제어기를 통하지 않고 직접 CPU와 데이터를 송수신하는 방식

PCI 버스

  • ISA, EISA, VESA의 후속
  • 32bit, 64bit 사용 가능
  • CPU의 종류가 달라도 CPU와 버스 사이의 브릿지 회로만 있으면 사용 가능
  • 독자적으로 작업을 처리할 수 있음

GPIB 버스

  • General Purpose Interface bus
  • 병렬 데이터를 전송하고 제어할 수 있는 버스
  • 테스트 및 측정장치를 컴퓨터와 연결하여 자동 테스트 시스템을 만든다.

마이크로 연산

  • 레지스터 사이의 전송정보 동작
  • Micro Operation

레지스터 종류

  • 소자는 플립플롭
  • 고유의 주소값을 가진다.
  • MAR, PC, SP, R0 등
  • 데이터 레지스터, 주소 레지스터, 상태 레지스터로 구분
  • 범용 레지스터 (GPR), 특수레지스터 (SPR)로 구분

주소 레지스터

  • Address Register

MAR

  • 메모리 주소 레지스터
  • 주소를 먼저 지정

PC

  • 프로그램 카운터
  • 다음 명령어의 주소를 지정
  • PC의 내용은 MAR로 전송되고 MAR의 내용이 주소 버스를 통해 메모리 주소를 지정

SP

  • 스택 포인터
  • 서브루틴 또는 인터럽트가 발생시 현재 레지스터의 내용을 저장하는데 레지스터를 저장하기 위한 스택 영역 메모리의 주소를 기억

CMAR

  • Control Memory Address Register
  • 마이크로프로그램이 있는 메모리의 주소를 기억

XR

  • 인덱스 레지스터
  • 기준 되는 주소에 XR의 변위값을 더해서 유효 주소를 발생
  • 데이터 블록 전송에 사용

BR

  • 베이스 레지스터
  • 베이스 레지스터에 기준이 되는 주소가 있고 여기에 변위값이 더해져 유효주소를 발생

데이터 레지스터

MBR

  • Memory Buffer Register
  • 주기억장치에서 데이터를 읽거나 데이터를 주기억장치에 기록할 때 사용되는 레지스터

ACC

  • ACCucmulator
  • 연산장치의 입력값을 저장하거나 연산이 끝난 후의 결과값을 저장
  • ACC => MBR => 데이터 버스 => 주기억장치 저장

TR

  • T buffer = Temporary Register
  • 연산 중에 중간값을 임시 저장

PSR

  • Program Status Register
  • CPU에서 수행되고 있는 프로그램의 상태정보를 기억하고 있는 레지스터
  • Carry, Negative, oVerflow, Zero, Interrupt 플래그의 내용 표시

레지스터 전송

직렬전송

  • 한 클록에 1bit씩 전송
  • 워드 타임 (Word time): 4bit 모두 전송하는데 걸리는 시간

병렬전송

  • 데이터 전송이 한 클록 펄스 동안 이루어지는 전송

산술 마이크로 연산

덧셈, 뺄셈, 1 증가, 1 감소, 보수 image from hexo

논리 마이크로 연산

SET

  • 특정 비트를 강제로 1로 만들 때 사용
  • OR 연산

MASK

  • 특정 비트를 강제로 0으로 만들 때 사용
  • AND 연산

Selective Complement

  • 특정 비트를 강제로 보수로 만들 때 사용
  • XOR 연산

시프트 마이크로 연산

논리 시프트

  • Logical Shift
  • 버리고 0 삽입

순환 시프트

  • Circular Shift = Rotate
  • 버린걸 반대편 끝으로 삽입

산술 시프트

  • Arithmatic Shift
  • 부호 비트를 고려하여 수행되는 시프트
  • 부호 비트는 남기고 데이터 비트만 시프트

처리장치의 구성요소

  • ALU: 제어장치에서 명령어를 해독한 다음 실질적으로 연산을 수행하는 장치
  • 연산장치는 산술연산장치와 논리연산장치로 구성

단일 누산기 CPU의 내부 버스

3개의 레지스터 간 병렬전송

  • 레지스터가 n비트면 6n개의 신호선

단일 버스에 연결된 레지스터 선택회로

  • 4개의 레지스터 선택시 2X4 디코더 필요

ALU

  • 산술/논리 연산장치 = Arithmatic and Logical Unit
  • 산술, 논리, 시프트 등을 수행하는 장치
  • 가산기(산술연산장치), 시프트, 논리연산회로, 보수기(complementer), 상태레지스터(PSR)로 구성

산술연산장치

  • 전가산기를 이용한 병렬 가산기
  • n비트의 2진 병렬가산기는 n개의 전가산기로 구성

image from hexo

상태 레지스터와 flag

  • C: Carry bit
  • S: Sign bit
  • Z: Zero bit, 값이 0일시 1로 셋
  • V: oVerflow bit
  • 연산 결과에 따라 1 또는 0

논리연산장치

  • AND, OR, NOT, XOR
  • 멀티플렉서와 조합논리회로 (& | ! ^) 게이트를 이용하여 구성 가능

시프터

제어단어

  • Control word
  • 하드와이어드 제어방식과 마이크로프로그램 제어방식 (제어장치 구현방법)
  • 마이크로 프로그램 제어방식은 제어장치 내의 기억장치에 마이크로 명령어를 저장하여 마이크로 연산을 순차적으로 수행시키는데 이 마이크로 명령어를 제어단어라고 한다.

파이프라인 처리구조

  • 명령어 파이프라인: CPU에서 명령어를 읽어 순차적으로 실행, 하나의 명령어가 실행되는 도중에 다른 명령어 실행을 시작하는 식으로 동시에 여러 개의 명령어를 실행하는 기법

실행과정

  • 명령어 인출: Instruction Fetch
  • 명령어 해독: Instruction Decode
  • 오퍼랜드 인출: Operand Fetch
  • 실행: Excute

마이크로프로그램 제어

  • 마이크로 명령어들의 집합

제어장치

  • 주기억장치에 있는 프로그램, 명령어를 순서대로 읽어옴
  • 명령어를 해독
  • 각 장치에 신호를 보내 프로그램 처리

제어장치 제어기능

  • 오퍼레이션 부분과 오퍼랜드로 구성 (Op Code와 Address)
  • 명령어 수행단계는 인출단계와 실행단계로 나뉨

제어장치 구성

  • IR (Instruction Register): 명령 레지스터, 주기억 장치에서 인출된 명령어를 기억하는 레지스터
  • Instruction Decoder: 명령 해독기, 명령 레지스터로부터 명령코드를 받아서 해독하고 결과는 제어신호 발생기에 전송
  • 제어신호 발생기: 타이밍 발생회로와 제어회로로 구성
  • Program Counter: 프로그램 계수기, 다음 실행될 명령어를 가진 주기억장치의 주소를 기억하는 레지스터

명령어 수행 과정

  1. PC의 주소를 MAR로 전송
  2. MAR 번지에 있는 명령어를 읽어 MBR로 전송, PC 1 증가
  3. MBR에서 IR로 전송, OP Code와 주소필드를 각각 해독기와 주소 레지스터로 전송
  4. MAR에서 데이터와 Operand 주소를 계산하고 주기억장치에 접근
  5. 제어신호 발생기에서는 연산자를 해독하여 명령수행을 위한 제어신호 발생
  6. 반복

명령어 사이클

상태기능
Fetch1. 명령어를 주기억장치에서 읽음
2. 명령어 해독
3. 1사이클이면 실행 후 fetch로 이동
4. 아니면 유효주소를 계산해 간접주소면 indirect, 직접이면 execute
Indirect1. 주소를 주기억장치에서 읽음
2. 간접주소이면 다시 indirect
3. 분기명령이면 실행 후 fetch
4. 아니면 execute
Execute1. 데이터를 주기억장치에서 읽음
2. 실행 후 fetch
Interrupt1. PC 내용을 스택에 저장
2. PC는 인터럽트 시작주소로 변경
3. PSR I bit에 1 처리
4. 인터럽트 처리루틴의 fetch로 이동
플리플롭메이저 상태
0 0Fetch
0 1Indirect
1 0Execute
1 1Interrupt

Fetch Cycle

  1. MAR <= PC
  2. MBR <= M[MAR], PC <= PC + 1
  3. IR <= MBR

Indirect Cycle

  1. MAR <= IR(addr)
  2. MBR <= M[MAR]
  3. IR(addr) <= MBR

Execute Cycle

  • ADD X
    1. MBR <= M[MAR]
    2. AC <= AC + MBR
  • LDA X: X번지에서 데이터를 읽어 누산기에 저장하는 명령어 (LOAD)
    1. MBR <= M[MAR]
    2. AC <= MBR
  • STA X: 누산기의 내용을 X번지에 저장하는 명령어 (STORE)
    1. M[MAR] <= AC
  • ISZ X: X번지의 내용을 1증가 시키고 결과값이 0이면 다음 명령어를 실행하지 않고 건너뛰는 명령 (Increment & Skip if Zero)
    1. MBR <= M[MAR]
    2. MBR <= MBR + 1
    3. M[MAR] <= MBR, if( MBR = 0 ) then ( PC <= PC + 1 )
  • AND X: 누산기와 X번지 내용을 AND 연산해 결과값을 누산기에 저장하는 명령어
    1. MBR <= M[MAR]
    2. AC <= AC & MBR

Interrupt Cycle

  1. MBR <= PC
  2. MAR <= SP, PC <= ISR (Interrupt Service Routine)
  3. M[MAR] <= MBR

마이크로 연산

한 개의 클록펄스 동안 레지스터의 데이터가 실행하는 기본 동작

수평 마이크로 명령어

  • 제어신호필드, 조건분기필드, 주소필드
  • 마이크로 명령어는 0, 1로 제어신호 출력
  • 한 개의 비트가 하나의 마이크로 연산을 지정
  • 조건분기필드는 branch에 사용
  • 주소필드는 다음에 실행될 마이크로 명령어의 주소 지정
  • 동작속도가 빠르고 하드웨어를 효율적으로 사용하는 장점
  • 긴 제어단어가 필요해 비용이 많이 드는 단점

수직 마이크로 명령어

  • 디코딩을 통해 제어신호 발생
  • 제어단어의 비트 수가 줄어든다
  • nbit로 2^n개의 마이크로 연산 표시 가능
  • 디코더 필요

단일 사이클 제어

모든 레지스터의 이동은 클록 펄스에 의해 제어

  • 마이크로 사이클: 하나의 마이크로 연산이 수행되는 과정
  • 마이크로 사이클 타임
  • 마이크로 오퍼레이션: 마이크로 사이클 동작
  • 동기식과 비동기식으로 구분
  • 하드웨어 제어방식
  • 1개의 클록 사이클에 1개의 명령어를 실행

동기 고정식

  • 가장 수행시간이 긴 것을 사이클 타임으로 설정
  • 모든 마이크로 연산의 시간이 유사한 경우 사용
  • 구현 간단
  • CPU 처리시간 낭비 발생

동기 가변식

  • 유사한 것끼리 몇 개의 군으로 모아서 마이크로 사이클 타임을 설정
  • CPU의 성능을 높이고 전체적으로 속도 향상
  • 제어 복잡

비동기식

  • 각각의 마이크로 연산에 대해 서로 다른 마이크로 사이클 타임을 설정
  • 하나의 마이크로 연산이 끝나면 다음 마이크로 연산 타임이 신호가 발생
  • 복잡해서 안 사용함

하드웨어 제어

2X2bit 인 경우 4개의 AND 게이트와 2개의 반가산기 필요

파이프라인 제어

하나의 프로세서를 서로 다른 기능을 가진 여러 개의 서브 프로세서로 나누어 각 프로세서가 동시에 서로 다른 데이터를 처리하도록 하는 기법

명령어 집합

마이크로 명령어의 형식

  • 연산 필드
  • 조건 필드: 상태 비트 조건 선택 필드
  • 분기 필드
  • 주소 필드: 다음 주소 지정

처리장치

명령어 해독기

  • instruction decoder
  • op code를 해독하고 연산의 시작주소를 결정

제어주소 레지스터

  • CAR = Control Address Register
  • 제어 메모리의 주소를 지정하는 레지스터
  • 다음 실행할 마이크로 명령어의 주소를 저장

제어기억장치

  • Control Memory
  • 마이크로프로그램이 저장된 내부기억장치

제어 버퍼 레지스터

  • CBR = Control Buffer Register
  • 제어 메모리에서 읽은 마이크로 명령어를 일시적으로 저장하는 레지스터

서브루틴 레지스터

  • SBR = Subroutine Register
  • 서브루틴이 발생한 경우 현재 제어주소 레지스터(CAR)의 내용을 일시적으로 저장하는 레지스터

순서제어 모듈

  • Sequencing Module
  • 마이크로 명령어의 실행순서를 결정하는 모듈

명령어 주소 결정

  1. 제어주소 레지스터 1 증가
  2. 무조건 분기와 상태 비트 조건에 따른 조건부 분기
  3. 명령어의 op code로부터 제어기억장치의 주소로 매핑
  4. 서브루틴 call, return

제어기

순서 레지스터와 디코더를 이용한 방식

  • 각 상태마다 하나의 출력신호가 발생하도록 디코더를 사용
  • nbit의 순서 레지스터는 n개의 플리플롭과 게이트로 구성
  • 2bit의 경우 2^2 = 4개의 상태 표시, 2X4 디코더 필요

상태 플리플롭을 이용한 제어방식

  • 각 상태에 한 개의 플립플롭이 필요
  • 한 순간에 여러 개의 플립플롭 중에 단 한 개만 1이 된다.
  • 다수의 플립플롭이 필요
  • 상태 수가 증가하면 상당히 복잡해진다
  • 설계는 간편

CISC

  • Complex Instruction Set Computer
  • 다양한 어드레싱 기능
  • 명령어 길이와 실행시간이 가변적
  • 명령어 복잡

RISC

  • CPU의 명령어 개수를 줄여 하드웨어 구조를 좀 더 간단하게 만드는 방식
  • 높은 처리속도
  • 단순 구조
  • 주기억장치 액세스 명령어의 제한
  • 주소지정방식의 단순화

사상(Mapping): 각 명령어의 실행 전용 루틴을 찾는 것

기억장치

참조 지역성

공간적 지역성

  • Spatial locality
  • 특정 데이터가 참조되면 그 부근의 데이터가 참조될 확률이 높아짐

시간적 지역성

  • 특정 데이터를 액세스하면 빠른 시간 내에 그 데이터를 다시 참조하는 확률이 높음
  • 캐시의 이유

기억장치 성능평가 요인

  • 기억용량: capacity
  • 접근시간: access time
  • 사이클타임: 하나의 액세스 시작부터 다음 액세스를 시작할 때까지의 시간
  • 기억장치 대역폭: bandwidth 1초동안 송수신할 수 있는 비트 수
  • 가격

속도 순서: 레지스터 > 캐시 > 주기억장치 > 보조기억장치 (디스크 > 테이프)

주기억장치

폰 노이만 병목현상: 주기억장치를 이용하는데 CPU와 입출력장치가 경쟁해 주기억장치에 병목 현상이 발생하는 것

복수모듈기억장치

  • 독자적으로 데이터를 저장할 수 있는 기억장치 모듈을 여러 개 가진 기억장치
  • 기억장치 버스를 시분할하여 사용

메모리 인터리빙

CPU가 각 모듈로 전송할 주소를 교대로 배치한 후 차례대로 전송하여 여러 모듈을 병행 접근하는 기법

  • 기억장치 접근시간을 효율적으로 높임
  • 캐시, 고속 DMA 전송에 사용
  • 각 모듈을 번갈아가며 접근 가능

연관기억장치

  • CAM = Content Addressable Memory)
  • 워드에 접근하여 원하는 정보를 찾는 기억장치
  • bit serial, bit parallel 구조
  • 내용에 의한 검색
  • 캐시 내부에서 사용
  • 외부 인자와 내용을 비교하기 위해 병렬판독논리회로, 하드웨어 장치가 필요

캐시기억장치

  • 주기억장치보다 빠른 기억소자로 구성해 CPU와 주기억장치 속도차를 줄임
  • 주기억장치에서 캐시로 워드를 전송할 때 그 주위 워드도 같이 전송됨 => 그 블록을 캐시로 이동
  • 히트: 액세스하려는 단어가 캐시에 있을 경우
  • 미스: 액세스하려는 단어가 캐시에 없을 경우
  • 캐시에 공간이 없으면 희생 블록을 선택해야한다.

적중률 = 히트 수 / 전체 메모리 참조 수 교체알고리즘: FIFO, random, LRU (미사용 중 가장 오래된 것부터), LFU (최소 사용부터)

캐시 사상방식

  • 직접사상: tag와 index 필요, 캐시와 주기억장치 인덱스 부분이 같은 경우에만 데이터가 저장
  • 연관사상: 데이터와 주기억장치의 주소도 함께 저장
  • 집합연관사상: 캐시 인덱스에 서로 다른 2개 이상의 데이터 블록을 저장

가상기억장치

  • 대용량 보조기억장치 일부를 주기억장치로 사용
  • 프로그램 명령어가 사용하는 주소를 가상주소, 주기억장치에 접근하기 위한 주소를 물리적 주소
  • CPU에서 참조하는 가상주소는 주기억장치의 실제 주소로 변환되어야 하며 이 것을 사상(mapping) 이라고 함
  • 사상방식에는 페이징 기법과 세그먼트 기법이 있다.

페이징 기법

  • 가상기억공간과 실제기억공간의 프로그램 블록의 크기가 같고 각 블록의 크기도 모두 동일할 때 이 블록을 페이지라고 한다.
  • 주기억장치에서 페이지를 찾지 못하는 경우를 page fault

세그먼트 기법

  • 프로그램의 논리적 구조에 따라 세그먼트를 다양하게 나누는 방법

보조기억장치

자기디스크

  • 블록: 자기디스크에서 주소에 의해 지정될 수 있는 정보의 단위
  • 트랙: 디스크 표면의 동심원
  • 헤드가 트랙을 지나가며 R/W
  • 액세스 암: 금속 끝에 헤드가 달려 있음
  • 이동 헤드 디스크: 플로피
  • 고정 헤드 디스크: 하드
  • 탐색시간: 헤드를 트랙까지 이동하는데 걸리는 시간
  • 회전지연시간: 섹터의 시작주소에 헤더가 도달하는데 걸리는 시간
  • 전송시간: 섹터에서 데이터를 읽어 주기억장치로 옮기는 데 걸리는 시간
  • 디스크 access time = seek time + rotational delay + transfer time

자기테이프

  • 순차접근방식
  • 용량이 커 장시간 보관 용도로 사용
  • DEBDIC 코드는 9트랙, BCD 코드는 7트랙
  • BPI: Byte Per Inch 1인치당 저장하는 바이트 수
  • 시작점은 BOT 끝점은 EOT
  • IRG: Inter Record Gap 레코드 사이의 갭
  • IBG: Inter Block Gap 블록 사이의 갭

RAID

Redundant Array of Inexpensive Disks 여러 개의 하드를 하나듸 하드로 다루는 방법

  • 하드웨어 RAID: 안정적이지만 고가
  • 소프트웨어 RAID: 운영체제에서 레이드 구성, 신뢰성은 떨어져도 저렴하게 데이터 저장 가능
  • 디스크 인터리빙: 데이터를 여러 개의 디스크에 분산 저장하는 기술

RAID-0

  • 빠른 입출력을 목적으로 하는 데이터를 여러 개의 하드에 분산 저장하는 스트라이핑 방법 사용
  • 하나의 디스크에 저장하는데 걸리는 시간을 여러 개의 디스크에 동시적으로 분산하여 저장하는 방식
  • 동영상 편집과 출판에 적합
  • 장애 발생시 뻑남

RAID-1

  • 미러링 기법
  • 한 드라이브에 기록되는 모든 데이터를 다른 드라이브로 복사
  • 하드 용량을 50%만 사용가능

RAID-2

  • 에러 검출 능력이 없는 드라이브를 위해 검사 디스크를 추가하고 해밍코드로 에러 검출 및 정정
  • 요즘은 오류 검출기능을 달고 나와서 거의 안씀

RAID-3

  • RAID-0의 빠른 I/O에 에러 보정 기술이 추가
  • 별도의 패리티 드라이브를 사용
  • 장애시 패리티 정보를 이용한 복구 가능

RAID-4

  • RAID-3에다가 각 드라이브에 데이터를 블록 단위로 분산 저장
  • 데이터 출력시 빠른 성능이지만 저장시 패리티 블록도 변경해야하는 단점
  • 최소 3개의 드라이브

RAID-5

  • RAID-3과 4의 단점 보완
  • 패리티 갱신을 위한 디스크 액세스가 분산되어 패리티 디스크에 대한 병목현상이 사라져 쓰기를 병렬로 수행 가능

RAID-6

  • RIAD-5에 다차원 패리티 체계를 구축한 시스템
  • 2개의 패리티 블록을 저장
  • 쓰기시 2개의 패리티를 갱신해야함

광기억장치

CD-ROM

  • Compact Disk Read Only Memory
  • 데이터는 트랙에 따라 순차적 저장
  • 액세스는 순차적이 아닌 직접 액세스 방식

DVD

  • 용량은 4.7~8.5GB
  • 2장의 얇은 디스크가 겹쳐져 있는 형태

1ns = 10^-9 s

입출력 제어기

입출력장치

  • 데이터를 저장하고 시스템에서 처리한 결과를 출력

입출력장치 제어기

  • 입출력장치를 움직이는 구동장치
  • 보통 입출력 장치에 포함

입출력장치 인터페이스

  • 입출력 포트 = I/O port
  • CPU 내부 레지스터와 입출력장치 간의 정보전송을 제어

입출력 버스

  • 데이터 전달 경로
  • 고성능 시스템에서는 입출력 제어기를 통해 주기억장치 버스에 연결

주기억장치 버스

  • 주소 버스
  • 데이터 버스
  • 제어 버스

CPU에 의한 입출력 => DMA에 의한 입출력 => 채널에 의한 입출력

버스

  • 버스에 연결된 장치는 master와 slave로 나뉨
  • master는 데이터 전달회선의 사용권 획득 및 실제 데이터 전송에 필요한 데이터를 제어
  • slave는 데이터 전달에 필요한 작업을 하는 장치

주기억장치버스

  • 주기억장치의 데이터 버스 비트 수는 주기억장치 워드의 비트수와 같다
  • R/W

입출력 버스

  • 입출력에만 이용
  • 한 쪽에는 입출력 인터페이스, 다른 쪽에는 입출력 제어기
  • 입출력 데이터 버스의 비트 수는 1Byte
  • 양방향
  • 주소버스의 bit는 장치번호의 bit 수와 같다.

버스 중재 방식

중앙집중식 병렬중재

  • centralized parallel arbitration
  • 하나의 버스에 하나의 중재기를 사용하는 방식
  • 모든 장치는 각각 버스 요청과 버스 허용회선에 의해 중재기에 연결됨
  • 중재기 내의 장치들의 우선순위를 정해주는 논리회로가 있어야한다.

데이지 체인

  • 직렬중재 = daisy chain
  • 중재기 버스 사용의 우선순위는 외부 데이지 체인 하드웨어에서 결정
  • 우선순위 높은 장치가 버스를 독점할 수 있다.
  • 직렬연결이라 한 장치가 고장나면 다음 장치는 버스허용신호를 못 받는다.

폴링

  • polling = 주기적 검사방식
  • 버스중재기가 각 master에게 버스 사용 여부를 체크하는 방식
  • 하드웨어 폴링: 버스 중재를 위해 폴링 회선이 따로 중재기와 각 장치에 연결, 중재기가 각 장치의 고유번호를 순차적으로 발생시키므로 버스 사용권을 받기까지 시간이 길다.
  • 소프트웨어 폴링: 폴링의 순서를 CPU가 관리하는 방식으로 우선 순위 또는 융통성이 좋다. 하드웨어보다 느리다.

전송 제어 방식

스트로브 제어

  • 데이터 전송시간을 맞추기 위해 제어회선이 추가
  • 제어회선을 통해 송수신측에 데이터를 전송할 때 제어신호를 보낸다.
  • 수신쪽에서 데이터를 받았는지, 송신쪽에서 데이터를 보냈는지 확인 불가

핸드쉐이킹

입출력장치 인터페이스

Busy Done입출력 데이터 버퍼 상태
0 0입출력장치 휴지 상태
0 1금지 상태
1 0입출력 작업 중 상태
1 1입력 데이터 버퍼에서 데이터를 읽거나 출력 데이터 버퍼에서 데이터를 기억시킬 수 있는 상태

데이터 전달방법

직렬전송방식

입출력장치 인터페이스 내에 있는 입출력 데이터 버퍼는 시프트 레지스터

병렬전송방식

CPU 내의 레지스터 사이 데이터 전송방법과 같다.

에러 체크

  • 패리티 비트: 데이터를 첨가하는 비트가 1bit
  • 되울림: echo back 키보드에 입력한 문자를 화면에 나타내어 확인
  • 입출력 반복: retry 한 바이트가 잘못 읽어지면 반복해서 읽어오는 방식
  • 오류검사/수정코드: 오류가 검출될 때 수정할 수 있는 기능이 있음

입출력 제어기

주기억장치 사상 입출력

하나의 공통된 버스를 공유하는 입출력 시스템에서 주소를 지정하는 방식으로는 기억장치사상 입출력 방식과 고립형 입출력 방식이 있다.

기억장치 사상 입출력

  • 하나의 주소공간
  • 공통의 버스와 제어선

고립형 입출력

  • 입출력장치의 주소영역은 주기억장치의 주소영역과는 별도로 지정
  • 분리된 제어신호
  • 2개의 제어선으로 지정된 주소가 주기억장치 워드에 해당되는지 입출력을 위한 인터페이스 레지스터를 지정하는 것인지 구분

CPU에 의한 입출력

프로그램에 의한 입출력 방식

  • CPU가 입출력장치의 처음부터 끝까지 제어
  • 저속 컴퓨터에 적합
  • 매번 플래그 검사를 해야하기 때문에 가장 비효율적

인터럽트 처리에 의한 입출력 방식

  • 전송할 데이터가 준비되면 인터페이스가 CPU에 입출력을 요청하는 인터럽트 발생

DMA를 사용한 입출력

  • CPU의 개입 없이 입출력장치와 주기억장치 사이에 데이터를 직접 전송시키는 방법
  • Direct Memory Access
  • DMA에 의한 입출력이 수행되면 CPU는 주기억장치 버스를 제어하지 못함
  • DMA 제어기 신호: 버스 요청, 버스 승인, 인터럽트 신호
  • DMA 전송 방식
    • DMA burst transfer: DMA 대량전송 방식, DMA가 주기억장치 제어권을 가지고 있을 때 여러 개의 워드로 구성된 블록이 연속으로 전송
    • 사이클 스틸 방식: 한 번에 하나의 데이터 원드를 전송하고 주기억장치의 버스 제어를 CPU에 돌려줌

채널에 의한 입출력

  • DMA는 초기화 데이터가 필요하며, 여러 입출력장치가 있을 때 많은 DMA 제어기가 필요
  • 입출력 장치와 직접 통신하는 전용 프로세서
  • CPU와 동급의 성능
  • 고유의 입출력 명령어를 인출하고 실행
  • 산술, 논리, 연산작업 수행 가능

selector channel

  • 선택된 입출력장치의 모든 동작이 완료될 때까지 어느 한 입출력장치의 전용인 것처럼 운용되는 채널
  • 고속 입출력 장치와 입출력을 위해 사용
  • burst 방식으로 블록 데이터 전송

바이트 멀티플렉서 채널

  • 하나의 채널에 저속에 많은 입출력장치를 구동시키는데 알맞은 방식
  • 채널을 시분할 공유

블록 멀티플렉서 채널

  • 동시에 여러 고속 입출력장치를 공유하여 데이터를 고속으로 전송
  • 대형 컴퓨터

채널 제어기의 연결형태: 고정 채널 제어기, 가변 채널 제어기 CPU가 DMA제어에 보내는 초기화정보: R/W를 수행할 주기억장치의 시작주소, 전송할 데이터 워드 카운트, R/W 전송모드 지정, 입출력 수행할 장치주소

컴퓨터 시스템의 성능

  • 처리능력: Throughput 작업량
  • 처리속도: response time
  • 신뢰도: reliability 정확하게 해결하는지
  • 사용 가능도: usability 신속하게 사용 가능한지

처리속도

MIPS

  • Millions of Instruction Per Second
  • 1초에 처리되는 총 명령어의 수
  • 1MIPS는 1초에 106개 명령어

MFLOPS

  • Millions of Floating-Point Operation Per Second
  • 메가플롭스
  • 부동 소숫점 처리 속도를 나타내는 단위
  • 1MFLOPS는 초당 10^6개 부동소수점 연산 가능

병렬컴퓨터

플린의 분류

SISD

  • Single Instruction stream, Single Data stream
  • 명령어가 하나씩 순차로 실행
  • 현재 많이 쓰는 컴퓨터 구조

SIMD

  • Single Instruction stream, Multiple Data stream
  • 배열처리기 = array processor
  • 모든 처리기들의 동작은 모두 하나의 제어장치의 지시를 받음

MISD

  • 여러 개의 처리기에서 수행되는 명령어는 다르지만 전체적으로 하나의 데이터 스트림을 갖고 있는 형태
  • 사용하지 않음

MIMD

  • 대부분의 다중 프로세서 시스템과 다중 컴퓨터시스템
  • 처리기들간의 상호작용 정도에 따라 밀결합 시스템, 소결합 시스템으로 나뉨
  • 밀결합 시스템: tightly coupled system, 공유기억장치구조, 다중 프로세서 시스템
  • 소결합 시스템: loosely coupled system, 지역기억장치를 가진 독립적인 컴퓨터 모듈, 프로세서 간 메세지 방식 통신, 다중 컴퓨터 시스템

팽의 분류

병렬 수행정도에 따라 분류

  • WSBS: Word-Serial, Bit-Serial
  • WPBS: Word-Parallel, Bit-Serial
  • WSBP: Word-Serial, Bit-Parallel
  • WPBP: Word-Parallel, Bit-Parallel

WBSP는 가장 많이 사용하는 방식으로 한 번에 한 워드씩 처리

구조에 의한 분류

  • 분산처리: 하드웨어 자원이 프로세스 작업에 대해 상대적으로 약하게 결합하여 동작하는 것, 컴퓨터 네트워크 등
  • 병렬처리: 프로세스 작업에 대해 강하게 결합되어 동작하는 것, 다중컴퓨터, 다중처리기로 구분됨

공유기억장치 시스템

  • 공유기억장치를 갖는 다중처리기구조는 처리기와 기억장치 모듈사이에 완전한 연결성이 있는 강결합 시스템
  • 기억장치 요청이 지역적인지 비지역적인지를 판단하기 위해 기억장치 대응장치(MMU: Memory Mapping Unit)이 필요

메세지 전달 시스템

  • 데이터 통신이 메세지를 통해 이뤄짐
  • 메세지는 여러 개의 고정된 길이를 갖는 패킷으로 구성
  • 단순성과 확장성의 성질을 포함해 대규모에서 좋은 성능

다중 프로세서의 고려사항

  • 병렬성
  • 기억장치 (충돌, 접근 효율성, 캐시 일관성)
  • 스케줄링
  • 동기화
  • 시스템 균형

병렬처리기

파이프라인 처리기

시간적 병렬성 활용

파이프라인: 하나의 프로세스를 서로 다른 기능을 가진 여러 개의 서브프로세스로 나ㅜ너 각 서브프로세스가 서로 다른 데이터를 취급하도록 하는 방식

배열 처리기

  • 처리장치(PE)를 배열 형태로 갖고 있음
  • PE는 레지스터, 연산장치, 지역기억장치로 구성
  • PE는 상호연결망에 의해 데이터 교환 가능
  • 벡터, 행렬 계산에 사용

다중처리기

  • multiple processor
  • 시스템상의 여러 처리기들에 여러 개의 독립적인 작업을 각각 배정하여 2개 이상의 처리기를 동시에 수행할 수 있는 기능을 갖춘 시스템
  • 하드웨어 시스템 구성은 주로 기억장치와 처리기, 기억장치와 입출력 채널 간 상호연결구조에 의해 결정

데이터 흐름 컴퓨터

  • 프로그램 내의 모든 명령어를 수행에 필요한 피연산자들이 모두 준비될 때 명령어의 순서와 관계없이 수행시키는 것
  • Data Driven 방식

VLSI 처리기

  • 병렬 알고리즘을 직접 하드웨어로 구현하는 처리기
  • 파이프라인 기법을 이용한 다중처리 기법
  • systolic array 구조가 있는데 영상이나 신호처리를 위한 특수분야에 사용

상호연결망 구조

처리요소를 가진 병렬시스템에서 처리요소와 기억장치 사이를 연결해주는 네트워크

  • 대역폭: bandwidth 네트워크를 통해 전송될 수 있는 최대 데이터 전송률, 단위는 MB/s
  • 네트워크 지연: 네트워크를 통해 메세지 전송시 소요되는 지연시간
  • 기능성: functionality 네트워크 데이터 경로설정, 동기화, 인터럽트 처리 및 메세지 송수신과 같은 동작을 어느정도 지원해 주는지
  • 확장가능성: scalability 새로운 하드웨어 추가시 네트워크 확장이 가능한지
  • 하드웨어 복잡성: hardware complexity 네트워크 구현시 필요한 하드웨어, 부품의 수와 복잡성

정적 상호연결망

성형

허브에 모두 연결됨

선형

노드가 차례대로 연결

링형

선형의 끝이 연결된 원형

2진 트리

완전한 트리형태, 통신거리가 상대적으로 김

펫 트리

채널의 크기가 상위계층으로 올라갈 수록 커져서 상위 수준에서의 병목현상 해결

메시, 토러스

노드가 2차원 사방으로 연결, 배열처리기에 적합

하이퍼큐브

  • 처리기의 수가 증가하면 연결점 및 하드웨어가 급증하므로 많은 처리기를 연결할 때 좋은 효율
  • 높은 확장성
  • 모든 노드가 같은 경로배정방법 사용 가능

동적 상호연결망

버스

  • 단일 버스 구조: 미니컴퓨터나 마이크로 컴퓨터에서 사용
  • 다중 버스 구조: 고성능 시스템

크로스바

  • 네트워크 규모가 커지면 비용이 크지만 지역적인 기반구조로 유용
  • P개의 처리기와 M개의 기억장치 모듈을 동시에 연결

다단계 네트워크

  • multistage network
  • 근원지와 목적지 사이에 여러 개의 스위치 요소가 있는 상호연결망

파이프라이닝

  • 어떤 일을 실행하는 데 있어서 하나의 일을 여러 단계로 나눠 중첩하여 실행함으로써 선능을 높이는 방법
  • 수행 단계별로 2단계, 4단계, 6단계가 있다.

Vue Developer Tools 켜기

· One min read

Devtools inspection is not available because it's in production mode 란 메세지와 함께 Vue 개발자 도구가 표시되지 않을 경우에 script 상단에 아래 구문을 추가한다.

Vue.config.devtools = true;

개발자 도구에 Vue 탭이 없을 때

ctrl+shift+i 키를 Vue 탭이 보일 때 까지 반복해서 눌러준다.

Laravel 5.5로 업그레이드

· 2 min read

Laravel 5.4 에서 5.5 로 업그레이드 후기

공홈을 참조해도 된다. composer.json에서 아래 패키지의 버전을 바꿔준다.

dependencies

  • laravel/framework: 5.5.*
  • phpunit/phpunit: ~6.0

dev-dependencies

  • filp/whoops: ~2.0
$ composer clearcache
$ composer update

이슈

Session, DB 문제

$ php artisan cache:clear

const UPDATE_AT 문제

const UPDATED_AT = null;처럼 timestamps 필드 중 하나를 disable 했을 때 5.5 버전에선 오류가 발생한다. 아래 처럼 모델에 setUpdatedAt 함수를 추가해주면 된다.

<?php
public function setUpdatedAt($value) {
return $this;
}

request has 문제

request->has와 같은 기능으로 동작하려면 request->filled로 바꿔줘야한다.

<?php
// 5.5에서는 name 값이 비던 안 비던 true
if ($request->has('name')) {

}

// 이게 구버전 has의 기능과 동일하다.
// name 값이 있을 경우만 true
if ($request->filled('name')) {

}

Laravel - Socialite InvalidStateException

· One min read

가끔 가다가 인증이 안 되는 경우가 있다.

stateless

Socialite::driver('인증 타입')->stateless()->user(); 로 가져오자.

session 명 변경

config/session.phpcookie 값을 변경해준다.

session domain 변경

config/session.phpdomain 값을 null 에서 내 도메인으로 변경한다.

그리고 아래 두 명령어를 실행해주자.

$ php artisan cache:clear
$ composer dump-autoload

여담

socialite 설명에선 나오지 않았지만, Socialite 구문을 try/catch로 감싸주는게 좋았다.

<?php
try {
$user = Socialite::driver('facebook')->stateless()->user();
} catch (\Exception $e) {
return redirect()->route('login');
}