2018년 8월 29일 수요일

python에서 두개의 dictionary를 하나로 합치는 방법

How can I merge two Python dictionaries in a single expression?


For dictionaries x and y, z becomes a merged dictionary with values from y replacing those from x.

In Python 3.5 or greater, :
z = {**x, **y}
w = {'foo': 'bar', 'baz': 'qux', **y}  # merge a dict with literal values

In Python 2, (or 3.4 or lower) write a function:
def merge_two_dicts(x, y):
    z = x.copy()   # start with x's keys and values
    z.update(y)    # modifies z with y's keys and values & returns None
    return z

and
z = merge_two_dicts(x, y)

출처: https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression 

2018년 8월 12일 일요일

메가박스 코엑스점 - 마블전시관

메가박스 코엑스점 가서 마블전시전 구경하다가 찍었다. ㅎㅎ











2018년 8월 11일 토요일

종교인이 비과세 대상이라는 법은 존재하지 않는다.

대한민국에서 종교인이 세법상으로 과세대상에서 제외된 적은 단 한 번도 없다.


알고있었는가?

대한민국에서는 단지, 종교과세가 강제성이 없다는 것일 뿐,
내지 않아도 된다는 법은 없다는게 핵심이다.

"최소한 당신들은 종교인들이니, 양심에 따라 내시오" 했더니,
"난 양심따윈 없소!" 하는 격이랄까?

그러더니 언젠가부터 정치인들과 결탁하여 자신들의 비과세를 합법화시키려는 노력을 자행허기에 이르렀다. 2017년 종교세 문제가 또다시 불거지자 갖은 수를 동원해 훼방중이다.


솔직히 종교인들이 부담하는 세금은, 사실상 빈대 코딱지 정도의 적은 돈이다. 
그런데도 왜들이래 반대하는 걸까?

이유는 뻔하다. 바로 "비자금".

 


세금을 책정허게되면 수입과 지출이 너무도 명료해지기때문에, 자기맘대로 횡령하는게 어려워진다. (이러니 그렇게 반대하고 ㅈㄹ들인거지.. ㅉㅉ)


다음은 2017년, "종교인 과세 2년 유예 법안"을 발의한 정당별 의원 명단이다.

> 더불어민주당(8명)
  • 김진표, 김영진, 김철민, 박홍근, 백혜련, 송기헌, 이개호, 전재수

> 자유한국당(15명)
  • 권석창, 권성동, 김선동, 김성원, 김성찬, 김한표, 박맹우, 안상수, 윤상현, 이우현, 이종명, 이채익, 이헌승, 장제원, 홍문종

> 국민의당(4명)
  • 박주선, 박준영, 이동섭, 조배숙

> 바른정당(1명)
  • 이혜훈




(이런 쓰레기들이 국회의원이라니.. ㅉㅉ)

참고로, 아래는 종교과세에 대해 착실한 "양심적" 종교단체들이다. (출처: 나무위키)
 


그리고 다음은, 종교과세를 거부하는 "비양심적" 종교단체들이다. (출처: 나무위키)


결국, 당연한 개개인의 의무를 반대하고 있는 종교단체는,
기독교불교천태종, 그리고 사이비종교들.
"비양심"을 교리로 삼고있는 무리.
(결국, 이놈들은 사이비종교 무리.. ㅉㅉ) 


1년이 지난 오늘에 와서,
아직도 종교과세법은 지지부진이며, 이러다가 또 얼마지나지않아 흐지부지될테지. ㅉㅉ


사진출처: 시행 5개월째 종교인 과세 어디까지 왔나 (연합뉴스)





데이터베이스 - 요점정리

관계대수와 관계해석

  • 관계해석
    • 튜플관계해석과 도메인관계해석
    • 계산수식과 질의어로 표현됨
    • 비절차적
  • 관계대수
    • 일반집합연산과 순수관계연산
    • 릴레이션으로 이루어짐
    • 절차적

** 관계대수와 관계해석 비교표



관계대수
관계해석 
정의
 - 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해 무엇을 어떻게 유도하는가를 기술하는 절차적인 언어
 - E.F. code가 수학의 Predicate Calculus(술어 해석)에 기반을 두고 관계 데이터베이스를 위해 제안한 질의어로 표현하는 언어 
내용
 - 질의의 내용을 구하기 위해 수행해야 할 연산의 순서를 명시함 : 절차적
 - 원하는 정보가 무엇이라는 것만 정의 : 비절차적 / 원하는 정보를 정의할 떄에는 계산수식 사용
 종류
 - 순수 관계 연산자 : Select, Project, Join, Division
  - 일반 집합 연산자 : Union(합집합), Intersection(교집합), Difference(차집합), Cartesian Product(카타시안 곱, 교차곱)
 - 튜플 관계 해석
 - 도메인 관계 해석 
 기능
 기능면에서는 관계해석과 관계대수가 동등함

순수 관계연산자

  • SELECT: 수평연산, 시그마(σ
  • Project: 수직연산자, 파이(π
  • JOIN:
  • Division: ÷

릴레이션 구성요소

  • Relation: Table로서 표현
  • Instance: 구체적 데이터 값을 가지고 있는 놈들
  • Attribute: Field 와 같은 의미
    • 속성 수Degree.
  • Tuple: Record 와 같은의미
    • 튜플 수Cardinality
  • Domain: 같은 원자의 집합
    • 성별 Attribute의 Domain은 "남", "여". 

무결성의 종류

  1. 개체 무결성: 기본키는 Null이나 중복을 불허
  2. 참조 무결성: 외래키 값은 Null이거나 참조릴레이션의 기본키와 동일해야함
  3. Null 무결성: 특정 속성값이 Null이 될 수 없음
  4. 고유 무결성: 특정 속성값에 대해 각 튜플의 값은 서로 달라야함
  5. 도메인 무결성: 특정 속성값이 도메인에 정의된 값이어야 함
  6. 키 무결성: 하나의 릴레이션에 적어도 하나의 키가 존재해야함
  7. 관계 무결성: 튜플삽입 가능여부, 릴레이션 간 튜플관계의 적절성 여부

CODASYL DBTG

  • 네트워크 데이터 모델 (그래프를 이용한 데이터 논리구조 표현모델)
  • Owner-Member 관계라고도 부름. 
  • 1:1, 1:N, N:M 대응관계 만족
  • DBTG, EDBS, TOTAL 등. 

DBMS 3요소

Definition (정의), Manipulation (조작), Control (제어) 

데이터모델의 구성요소

  1. Structure (구조): 논리적으로 표현된 개체간 관계
  2. Operation (연산): 저장된 실 데이터 처리방법
  3. Constraint (제약조건): 저장가능한 실 데이터의 논리적 제약조건







2018년 8월 10일 금요일

Python으로 만든 데몬을 시작/중지/재시작 시키는 쉘스크립트 예제.

"DaemonManager.sh"


#!/bin/sh
if [ -f ~/.bashrc ]; then
    . ~/.bashrc

PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
export PATH=/usr/local/anaconda3-4.1.0/bin:/usr/local/lib/:$PATH
fi
WORKDIR=~/TEST/BaseUpdateDaemon
DAEMON=daemon.py
LOG=~/TEST/log/daemon.log

function do_start()
{
    cd ${WORKDIR}
    nohup python ${DAEMON} & >> ${LOG}
}

function do_stop()
{
    PID=`ps -ef | grep ${DAEMON} | grep -v grep | awk '{print $2}'`
    if [ "$PID" != "" ]; then
        kill -9 $PID
    fi
}

case "$1" in
    start|stop)
        do_${1}
        ;;

    reload|restart)
        do_stop
        do_start
        ;;
    *)
    echo "Usage: ~/TEST/bin/DaemonManager\.sh {start|stop|restart}"
    exit 1
    ;;
esac







2018년 8월 5일 일요일

운영체제 - 요점정리

하이퍼큐브구조

CPU가 n개의 연결점을 가질때, CPU의 총 개수는 2n개 이다. 

운영체제 성능평가 기준

  • 처리능력(Throughput): 일정시간내 처리량
  • 반환시간(Turn around time): 시스템에 작업을 의뢰한 시간부터 처리완료시까지의 시간
  • 사용가능도(Availability) : 시스템 즉시사용 가능도. 
  • 신뢰도(Reliability): 정확한 문제해결 정도

교착상태 해결기법

  • Prevention: 교착상태 발생의 4가지 조건중 하나를 부정함으로 수행
    • 자원낭비가 심함
    • 상호배제(Mutual Exclusion
    • 점유&대기(Hold & Wait
    • 비선점(Non-preemption
    • 환형대기(Circular Wait
  • Avoidance: 교착생태가 발생하면 적절히 회피
    • 은행원알고리즘:Banker's Algorithm
  • Detection: 교착상태를 점검하여 교착상태인 프로세스나 자원을 발견해냄
    • 자원할당 그래프
  • Recovery: 교착상태중인 프로세스를 종료시키거나 자원을 선점하여 상태를 회복시킴. 

Unix File System

  • 부트블록: 부팅시 필요한 코드 보유
  • 슈퍼블록: 전체 파일시스템 정보 보유
  • I-NODE 블록: 각 파일/디렉터리 정보 보유
    • 파일소유자 사용자번호 및 그룹번호
    • 파일크기
    • 파일타입
    • 생성시기
    • 최종변경시기
    • 최근사용시기
    • 파일권한
    • 파일링크수
    • 데이터저장 포인터
  • 데이터블록: 실제 파일데이터 저장

구역성 (Locality)

  • 프로세스 실행간 주기억장치 참조시, 일부 페이지만 집중적으로 참조 됨. 
  • Denning에 위해 증명
  • 캐시메모리의 이론적 근거. (가상기억장치 관리) 
  • 스레싱 방지를 위한 Working-set 이론
  • 구분
    • 시간구역성(Temporal Locality) : Loop, Stack, Sub Routine, Counting, Totaling
    • 공간구역성(Spatial Locality) : Array Traversal, 순차코드실행

Working Set

  • 프로세스가 자주 참조되는 페이지들의 집합
  • 자주 참조되는 Working set을 상주시켜 페이지부재, 페이지교체 현상을 줄임. 
  • Working set은 시간이 지남에 따라 변경됨

페이지부재 (Page fault)

  • 프로세스 실행시 참조할 페이지가 없는 경우
  • 페이지 부재 빈도(PFF: Page Fault Frequency) 방식
    • Page fault rate에 따라 페이지 프레임 수를 조정하여 적정값으로 유지시킴

페이지 교체기법 

  • OPT(OPTimal replacement, 최적교체): 앞으로 가장 오랫동안 사용하지않을 페이지를 교체
  • FIFO(First In First Out): 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체
  • LRU(Least Recently Used): 가장 오래 사용하지않은 페이지를 교체
  • LFU(Least Frequently Used): 사용 빈도가 가장 적은 페이지를 교체
  • NUR(Not Used Recently): LRU와 유사, 최근 사용하지 않은 페이지를 교체


스레싱(Thrashing)

  • 프로세스 처리시간보다 페이지교체시간이 더 많아지는 현상. 
  • Page fault가 많이 일어나면 Thrashing 역시 많이 발생한다. 

스케줄링

  • 비선점형(Non-Preemptive) 
    • FCFS(First Come First Served)
    • SJF(Shortest Job First) 
    • HRN(Highest Response-ratio Next) 
      • HRN 우선순위 = (대기시간+서비스시간) / 서비스시간
      • 높을수록 우선순위 높음. 
    • 우선순위(Priority)
    • 기한부(Deadline) 
  • 선점형(Preemptive) 
    • SRT(Shortest Remaining Time): SJF의 변형
    • 선점우선순위
    • RR(Round Robin): FCFS의 변형
    • 다단계큐(Multilevel Queue) 
    • 다단계피드백큐(Multilevel Feedback Queue) 

디스크 스케줄링

  • FCFS: 순서대로 서비스
  • SSTF (Shortest Seek Time First): 현 위치에서 가까운놈부터
    • FCFS보다 처리량↑, 평균탐색시간↑
    • 일괄처리에 유리
  • SCAN: 가까윤놈 찾고 그 발향으로 쭉! 
  • C-SCAN (Circular SCAN): 바깥에서 안쪽으로
  • N-step SCAN
    • SCAN이 무한대기에 빠지는 문제를 개선
    • SCAN 진행 중 도착한 요청을 모아 반대진행때 처리
    • SSTF, SCAN보다 응답시간 편차 감소
  • Edchenbach (에센바흐)
    • 헤드 진행 중 각 실린더에 대해, 디스크팬 핸회전 동안만 I/O처리
    • 항공예약시스템을 위해 개발
    • 탐색시간, 회전지연시간을 최적화하기위해 제안됨
  • SLTF (Shortest Latency Time First)
    • 회전시간 최적화 목적
    • 대기큐 요청들을 섹터 위치에 따라 재정렬하고 가장 가까운 섹터부터 서비스
    • 드럼에 많이 쓰임
  • LOOK: SCAN처럼 동작하지만, 진행방향 마지막 처리 후 바로 반대반향으로 진행

기억장치 관리전략

  1. Fetch Strategy
  2. Placement Strategy 
  3. Replacement Strategy 

Loader 의 4대기능

  • Allocation, Linking, Relocation, Loading 

보안요건

  • Confidentiality (기밀성) 
  • Integrity (무결성) 
  • Availability (가용성) 
  • Authentication (인증) 
  • Non-Repudiation (부인방지) 

비밀키와 공용키

  • 비밀키(Private Key System) 
    • DES (Data Encryption Standard) 
    • 동일키로 데이터를 암호화/복호화 하는 대칭 암호화 기법
    • 암호화/복호화 속도가 빠르고 알고리즘이 단순하고 파일 크기가 작다
    • 사용자 수 만큼 관리키가 늘어나 키 분배가 어려움
  • 공용키(Public Key System) 
    • RSA (Rivest Shamir Adleman) 
    • 서로다른 키로 암호화/복호화 하는 비대칭 암호화 기법
    • 암호키는 공개하고 해독키는 비밀로 하여, 누구나 암호키 배포가 가능하나 해독키가 있어야 해독가능
    • 암호화/복호화 속도가 느리고 알고리즘이 복잡하고 파일 크기가 크다

PCB (Process Control Block)의 내용

프로세스 식별정보, 제어정보, 상태정보

페이징기법과 세그먼테이션기법
  • Paging
  • 프로그램 및 주기억장치 영역을 동일한 크기로 나누어 프로그램 적재/실행
  • 나뉘어진 프로그램, 기억장치 영역을 각각 페이지와 페이지프레임 이라 부른다. 
  • 내부단편화, 페이지 맵 테이블 필요
  • Segmentation 
  • 프로그램을 다양한 크기로 나눈 후 주기억장치에 적재/실행
  • 각 세그먼트는 고유한 이름과 크기를 갖는다. 
  • 기억공간 절약이 목적
  • 세그먼트 맵 테이블 필요, 기억장치 보호키 필요




2018년 8월 4일 토요일

소프트웨어 공학 - 요점정리

모델링의 종류

  • 럼바우 (Rumbaugh) 모델링
    • 가장 일반적
    • Object Modeling - 객체다이어그램
    • Dynamic Modeling - 상태다이어그램
    • Function Modeling - 자료흐름도
  • Booch 모델링
    • 미시적(Micro) 개발 프로세스, 거시적(Macro) 개발 프로세스 모두사용
    • 절차지향 프로그램으로 개발하려면 "동사"에 밑줄 긋고, 객체지향 프로그램으로 개발하려면" 명사"에 밑줄 그어라.
  • Jacobson 모델링
    • Use Case를 강조
  • Wirfs-Brock 모델링
    • 분석 설계간 구분이 없음
    • 고객명세서를 평가하여 설계작업까지 한큐! 
  • Coad와 Yourdon 모델링 
    • E-R 다이어그램을 사용하여 개체활동 모델링

LOC기법

각 기능의 원시코드라인의 비관치/낙관치/기대치를 측정/예측

OMA (Object Management Architecture) 레퍼런스 모델의 구성요소

  • ORB (객체요구매개자) 
  • Object Service (객체서비스)
  • Common Facilities (공통기능)
  • Domain Interface (도메인 인터페이스) 
  • Application Interface (응용 인터페이스) 

유지보수의 유형

  • Corrective: 수정 보수
  • Adaptive: 환경변화를 반영하기위한 변경
  • Perfective: 기능의 개선이나 추가
  • Preventive: 예측, 예방을위한 변경

자료사전 표기기호

  • = : is composed of
  • + : 연결 (AND) 
  • ( ) : Optional
  • | : 선택 (OR) 
  • { } : 반복

CASE (Computer Aided Software Engineering)의 종류

  • Upper CASE
  • Lower CASE
  • Integrate CASE

HIPO Chart

  • 시스템의 기능을 여러개의 고유모듈들로 분할, 이들간의 인터페이스를 계층구조로 표현한 도형 또는 도면
  • 종류
    • 가시적 도표: 시스템 전체 기능과 흐름을 보여주는 Tree 구조도 (도식목차) 
    • 총체적 도표: 프로그램 기능들을 기술한 것으로 입력, 출력, 처리에 대한 전반적인 정보를 제공하는 도표 (총괄도표, 개요도표) 
    • 세부적 도표: 총체적 도표에 기술된 기능의 세부 구성요소들을 상세히 기술 (상세도표) 

 소단위명세서(Mini-Spec) 

세분화된 자료 흐름도에서 최하위단계 프로세스의 처리절차를 기술한 것으로 작성툴에는 서술문장, 구조적언어, 의사결정나무, 의사결정표, 그래프 등이있다. 

결합도(Coupling) - 모듈간 의존도

  • Data Coupling: 인수로 변수를 전달(자료만 공유) 
  • Stamp Coupling: 인수로 배열, 구조체를 전달(구조를 공유) 
  • Control Coupling: Handler나 Exception 같은 경우(다른 모듈로 제어신호를 전달) 
  • External Coupling: 전역변수 참조(다른모듈에서 선언된 전역변수를 공유하는 경우) 
  • Common Coupling: 공유메모리 참조
  • Content Coupling: 다른모듈 기능을 참견, 개입


응집도(Cohesion) - 모듈의 독립성

  • Function (기능적): 모듈내 요소들이 단일문제에 연관되어 수행
  • Sequential (순차적): 하나의 행동이 다음 행동의 입력이 되는 경우
  • Communication (교환적): 동일 입출력에 의존하는 요소들이 모임 
  • Procedural (절차적): 다수 관련요소가 순차수행될 경우
  • Temporal (시간적): 특정 시간에 처리되는 요소들이 모임
  • Logical (논리적): 유사한 성격, 분류의 요소들이 모임
  • Coincidental (우연적): 서로 관련없는 요소들이 모임 

화이트박스와 블랙박스

  • 화이트박스
    • 모든경로를 검사
    • 원시코드 따라다니며 직접 확인
    • 전체를 최소한번이상 돌려봄
    • Basic path testing, Condition testing, Loop testing, Data flow testing. 
  • 블랙박스
    • 기능별 테스트
    • 정해진 입력에 대한 출력을 검증
    • Equivalence partitioning testing: 동치분할검사
      • 입력자료에 중점을 두고 검사사례를 만들어 검사
    • Boundary value Analysis: 경계값 분석
    • Cause-Effect Graphing testing: 원인-효과 그래프 검사
      • 입력데이터간의 관계와 출력에 미치는 영향을 체계적으로 분석하여 검사사례 선정
    • Fault Based testing: 오류예측검사
      • 과거경험, 확인자의 감각에 의한 검사
    • Comparison testing: 비교검사
      • 여러버전의 프로그램에 동일한 검사자료를 제공해 결과검증

각종 용어설명

  • Class: 하나이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화
  • Method: 객체상태 참조/변경의 수단. (Operation) 
  • Inheritance: 부모의 속성을 물려받음
  • Message: 객체들간 상호작용시 사용되는 수단. 외부요구사항. 
  • Encapsulation: 데이터, 속성, 처리함수를 하나로 묶는 것. 
  • Information Hiding: 캡슐화에서 가장 중요한 개념, 자신의 정보를 숨기고 자신의 연산만을 통해 접근 허용
  • Abstraction: 추상화. (객체 속성 중 중요한 것에 중점을 두어 모델화) 
  • Polymorphism: 메세지에 의해 객체가 연산을 수행할때 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
  • Component: 객체들의 모임, 대규모 재사용 단위 White-Box Wrapping을 적용하여 내부처리과정을 조사하고 코드를 수정함. 
  • Stub: 하향식 통합 테스트 수행을 위해 일시적으로 필요한 조건만 가지고 임시로 제공되는 시험용 모듈

소프트웨어 재공학의 주요활동

  1. 분석(Analysis): 명세서 확인 → 동작이해 → 재공학 대상선정
  2. 재구성(Restructuring): 추상적 수준에서 표현만이 바뀜(외형 변화 없음) 
  3. 역공학(Reverse Engineering): 기존코드를 복구하는 방법, 분석 및 설계정보를 재발견하거나 다시 만들어내는 작업
  4. 이식(Migration): 기존 소프트웨어를 다른 환경에 이식

Bottom-Up Integration Test 과정

낮은 수준 모듈들을 Cluster로 결합 → Driver 작성 → Cluster 검사 → Driver 제거 → Cluster 상위결합
N-S차트
  • 박스를 기본요소로 하여 연속, 선택, 반복을 표현
  • GOTO나 화살표가 없다. 
  • 복합조건 처리를 시각화하여 명확히 식별하는데 적합
  • 이해는 쉬우나 작성이 어렵고, 코드변환이 용이
  • 총체적 구조표현이 어려움
  • 단일 입구와 단일출구로 표현

COCOMO 모형
  • Boehm이 제안한, LOC(원시코드라인수)에 의한 비용산정기법
  • 개발 소프트웨어의 규모(LOC)를 예측한 후 비용산정 공식을 대입
  • 같은 규모의 프로그램이라도 성격에 따라 비용산정이 달라짐
  • 프로젝트 모드
  • 조직형(Organic Mode: 5만라인,50KDSI 이하) 
  • 반분리형(Semi-detached Mode: 30만라인, 300KDSI 이하) 
  • 내장형(Embedded Mode: 30만라인, 300KDSI 이상) 




















2018년 8월 2일 목요일

전자계산기구조 - 요점정리

불 대수 기본법칙


카르노맵


논리게이트



전파지연 (Propagation Delay)

  • 평균 전이시간: 논리회로에 입력된 신호가 출력으로 전파되는데 걸리는 시간
  • 계산기상 Operation Speed는 전파지연에 반비례
  • 더 빠른 Gate를 사용함으로서 전파지연시간을 줄일 수 있음.
  • ALU의 Parallel-adder에 전파지연을 줄이기 위해 Carry Look Ahead를 사용


전가산기(Full Adder)

  
  • Sum = A⊕B⊕C
  • Carry = (A⊕B)C+AB


반가산기(HA: Half Adder)

  • Sum = A⊕B
  • Carry = AB

디코더(Decoder)


플립플롭 (Flip-flop)


  • 전원이 공급되는 한, 상태가 유지되는 회로
  • 한 개가 1bit를 구성하는 2진 Cell
  • 레지스터 구성의 기본소자
    • 2개의 NAND or NOR Gate로 구성됨

디지털IC의 성능평가 요소

  • 전파지연시간, 전력소모, Fan-Out, 잡음허용치

수치코드

  • BCD Code
    • 가중치코드 (= 8421 Code)
    • 10진수 1자리를 2진수 4bits로 표현
  • Excess-3 Code
    • BCD Code에 3을 더한 코드
    • 3 초과 코드
    • 자보수 코드
    • 비가중치 코드
  • Gray Code
    • Gray Code 산출방법
    • BCD를 XOR연산으로 산출
  • 패리티 코드 (Parity Code)
    • Odd Parity: 1의 수가 홀수가 되게끔 0/1 추가
    • Even Parity: 1의 수가 짝수가 되게끔 0/1 추가
  • 해밍 코드 (Hamming Code)
    • 1,2,4,8,16,32, …, n2번째에 parity bit가 들어감
    • 해밍코드 산출방식:

코드종류



멀티플렉서 (Multiplexer)



채널 (Channel)의 종류

  • Selector Channel: 특정한 한개의 장치를 독점하여 입/출력함
    • 자기디스크, 자기테이프, 자기드럼 등
  • Multiplexer Channel: 동시에 여러개의 입출력장치를 제어
    • 카드리더, 프린터 등
  • Block Multiplexer Channel: 동시에 여러기의 입출력장치를 제어 
    • 고속입출력장치 등

시분할 공유버스

  • 프로세서, 기억장치, 입출력장치들 간에 하나의 버스통신로만 제공하는 방법

Registers

  • PC(Program Counter)
    • 다음 실행명령어의 번지를 기억
  • IR(Instruction Register)
    • 현재 실행중인 명령어 내용을 기억
  • ACC(Accumulator)
    • 연산결과를 일시적으로 저장/연산
  • PSWR(Program Status Word Register)
    • 상태 레지스터, 시스템 내부의 순간상태 기록(PSW)을 기억.
    • Overflow, Underflow, Carry, 계산상태(0, -, +) etc..
  • MAR(Memory Address Register)
    • 기억장치를 출입하는 데이터의 번지를 기억
  • MBR(Memory Buffer Register)
    • 기억장치를 출입하는 데이터가 잠시 기억되는 곳
  • Index Register
    • 주소변경, 서브루틴연결, Loop 연산 등 횟수기억
  • Data Register
    • 연산 데이터를 기억
  • Shift Register
    • Shift 연산수행
  • Major Status Register
    • CPU Major Status를 기억

연산기호

  • AND는 Mask, OR는 Selective Set
  • XOR는 비교(Compare), NOT은 보수(Complement)
  • Shift Left의 경우 1의보수인 경우만 1이 채워진다.
  • Shift Right의 경우 보수법을 사용한 경우 1이 채워진다.

명령어의 형식

  • 3-Address 주소지정: ADD R1, A, B
    • 범용레지스터 구조 (서버 등 특수목적 컴퓨터)
  • 2-Address 주소지정: ADD R1, A
    • 범용레지스터 구조 (PC, 태블릿, 스마트폰 등)
  • 1-Address 주소지정: ADD A
    • 누산기 구조 (구형PC, PDA, 모니터, 공학용계산기 등)
  • 0-Address 주소지정: ADD
    • 스택 구조 (간단한 전자계산기, 전자시계 등)

주소설계 고려사항

  • 표현의 효율성 (다양한 주소지정 사용)
  • 사용의 편리성 (Pointer, Relocate)
  • 주소공간(보조기억)과 기억공간(주기억)의 독립성

인스트럭션 세트 설계시 고려사항

연산자종류, 주소지정방식, 데이터구조, 명령어형식, 사용빈도 및 기억공간

 마이크로 프로그램(Micro Program)

  • 마이크로 프로그램은 ROM에 저장
  • 마이크로 명령어를 사용해서 소프트웨어(Software)방식으로 구현
  • 명령어들을 쉽게 변경할 수 있는 융통성이 좋지만 속도가 Hard-wired 방식보다 느림

명령 처리과정

인스트럭션 패치 → 인스트럭션 디코딩 → 오퍼랜드 패치 → 실행 → 인터럽트 조사

Major Status


Fetch Cycle

  1. MAR ← PC // 명령어 주소번지 획득
  2. MBR ← M[MAR] // 명령어획득 
  3. PC = PC + 1 // PC증가
  4. IR ← MBR[OP] // 인스트럭션패치 (명령어전송)
  5. I ← MBR[I] // 명령어 mode bit를 I Flip-flop에 전송
  6. IF I THEN R ← 1 // Indirect cycle
  7. ELSE F ← 1 // Execute cycle
※ 명령어를 가져오기위해 기억장치에 접근하는 것Fetch상태라고 한다. 

Indirect Cycle

  1. MAR ← MBR[AD] // MBR 명령어번지를 MAR로
  2. MBR ← M[MAR] // MAR이 가지고있는 실 값을 MBR로
  3. F ← 1; R ← 0; //To Execute cycle

Execute Cycle

  1. MAR ← MBR[AD] // MBR의 명령어 번지를 MAR로
  2. MBR ← M[MAR] // 명령어 획득
  3. AC ← AC + MBR // 누산기에 MBR을 추가하여 누산기에 전송
  4. IF F==0 THEN F ← 0; R ← 0; // To Fetch cycle
  5. ELSE IF R==1 THEN F ← 1; R ← 1 // To Interrupt cycle

Interrupt Cycle

  1. MBR[AD] ← PC // 다음실행명령어를 MBR로
  2. PC ← 0 // 복귀주소 0 저장
  3. MAR ← PC // 복귀주소를 MAR로 전송
  4. PC = PC + 1 // 인터럽트 처리 이동을 위해 PC를 1로
  5. M[MAR] ← MBR // MBR에 저장된 다음 실행명령을 0번지에 저장
  6. IEN ← 0 // 인터럽트 단계가 끝날때까지 다른 인터럽트 받지않기
  7. F ← 0; R ← 0; // To Fetch cycle
IEN(Interrupt ENable flip-flop)
※ Folling: 인터럽트 요청신호 Flag를 차례로 검사하여 인터럽트 원인을 판별


인터럽트 작동순서

  1. 인터럽트 요청
  2. 프로그램 실행중단
  3. 프로그램 상태보존
  4. 인터럽트 인지신호 발생
  5. 벡터 인터럽트 처리
  6. 상태 복구
  7. 리턴에 의한 상태 복구 및 프로그램 재개

BUS

  • Address BUS
    • CPU, 메모리, I/O기기의 번지를 지정할때 사용하는 단방향 전송선
    • 주소 전송용 단방향 전송선
  • DATA BUS
    • CPU, 메모리, I/O기기의 번지를 전송하는 양방향 전송선
    • 데이터 전송용 양방향 전송선
  • Control BUS
    • CPU, 메모리, I/O기기에게 제어신호를 전송하는 양방향 전송선
    • 제어신호 전송용 양방향 전송선

명령어(Op-code)

  • 구성
    • OP-Code가 n bit면 최대 2n개의 명령어사용이 가능
    • OPerand가 n bit면 최대 2n개의 주소지정이 가능
  • 4대 기능 
    • 함수연산 기능 : ADD, AND, CPA, CPC, CLA, CLC, ROL, ROR 
    • 전달 기능 : LAD(Load AC), STA(Store AC) 
    • 제어 기능 : JMP(Jump), SMA, SZA 
    • 입출력 기능 : INP, OUT

Operation Code의 기능

  • 함수연산기능: 산술연산 및 논리연산
    • ROR, ROL, ADD, SUB, MUL, DIV, SHIFT, NOT, AND, OR, XOR, ROTATE etc..
  • 자료전달기능: CPU와 기억장치 간 정보전달 기능
    • LOAD, STORE, PUSH, POP, MOVE etc..
  • 제어기능: 실행순서의 변경
    • GOTO, JMP, SNA, SZA, CALL, RETURN etc..
  • 입출력기능: CPU와 I/O, 메모리와 I/O간의 정보전달
    • INPUT, OUTPUT etc..

Pipeline

  • 여러개의 명령을 동시에 병렬처리하는 장치
  • 분업화원리를 이용하여 시간적 병렬처리

복수모듈 기억장치

  • 독자적 데이터를 저장할 수 있는 기억장치 모듈을 여러개 갖춘 기억장치
  • 인터리빙 기법으로 여러 모듈에 동시접근 가능
  • 주기억장치와 CPU의 속도차이를 개선
  • 기억장치의 버스룰 시분할하여 사용
  • 기억장소의 접근을 보다 빠르게 함

사이클스틸(Cycle Stealing) 

채널과 프로세서가 동시에 주기억장치를 액세스하면, 중앙처리장치의 Cycle time을 DMA가 일시적으로 압수하여, 채널에 우선 순위를 주고 프로세서는 주기억장치를 사용하지 못하게 하는 전송 방식이다.

Associative Memory의 특징

  • DRAM보다 비싸다.
  • 구조 및 동작이 복잡함
  • 명령어 랜덤기억
  • 주소보다 내용에 위해 검색

Loader

  • Compile And Go Loader
    • 별도의 로더없이 번역기가 로더 역할까지 수행
    • 연결기능 없이 할당, 재배치
    • 적재작업을 모두 번역기가 담당
  • Absolute Loader
    • 목적프로그램을 기억장소에 적재만
  • Direct Linking Loader
    • 로더의 일반적인 기능을 모두 수행
  • Dynamic Loading Loader
    • 프로그램을 실행시 필요한 일부분만 적재하는 로더. (Load-On-Call) 

SSD(Solid State Drive) 


  1. SLC(Single Level Cell): 하나의 셀에 1비트
  2. MLC(Multi Level Cell): 하나의 셀에 2비트
  3. TLC(Triple Level Cell): 하나의 셀에 3비트

Mapping Process의 종류

  1. Direct Mapping 
  2. Associative Mapping 
  3. Set-associative Mapping 

메모리 IC 핀의 수


  • Address pins: 1024 = 210 = 10개 필요
  • Data pins: Word의 크기와 같음 = 8개 필요
  • Chip select bit: 선택유무 = 1개 필요
  • 따라서, 총 19개 필요

부동소수점 나눗셈 과정

Zero검증 → 레지스터 초기화 및 부호결정 → 피젯수 위치조정 → 지수 뺄셈 → 가수 나눗셈

I/O 제어방식

  • Program에 의한 I/O
  • Interrupt에 의한 I/O
  • DMA에 의한 I/O
  • Channel에 의한 I/O
  • Strobe Pulse
  • Handshaking