1. 펄스 부호 변조(PCM)에 대해서
PCM이란 아날로그 데이터를 디지털화 시키는 작업을 의미한다.
아날로그 신호 -> 데이터 크기에 따라 높이가 다른 펄스열로 나열한 방법(1차 펄스변조) -> 이러한 멀티 레벨 신호를 0/1의 2진 신호로 바꾸어 주는 작업(펄스 부호 변조)
컴퓨터에 전송되는 아날로그 신호는 대부분 PCM을 거친다.
과정: PAM이라 불리는 샘플링(Sampling) -> 양자화(Quantization) -> 부호화(Encoding)
2. CPU 레지스터 종류
Accumulator(AC): 연산 과정의 데이터를 일시적으로 저장하는 레지스터
Program Counter(PC): 다음에 인출될 명령어의 주소를 보관하는 레지스터
Memory Address Register(MAR): PC에 저장된 명령어 주소가 사용되기 전에 일시적으로 저장되는 주소 레지스터
Memory Buffer Register(MBR): 기억장치에 저장될 데이터 혹은 기억장치로부터 읽힌 데이터가 일시적으로 저장되는 버퍼 레지스터
Instruction Register(IR): 가장 최근에 인출된(현재 실행중인) 명령어가 저장된 레지스터
Status Register(SR): 현재 CPU의 상태를 보관하는 레지스터
3. 소수점 진수 변환하는 방법
계속 곱해서 정수 부분만 가져온다.
4. 네트워크 토폴로지
성형(Star)
장점: 장애 발견이 쉽고, 관리가 용이
단점: 주 노드에 문제 발생 시 전체 네트워크 사용 불가
버스형(Bus)
장점: 노드의 추가/삭제가 용이, 특정 노드의 장애가 다른 노드에 영향을 미치지 않음
단점: 공통 배선의 대역폭을 공유하기 때문에 노드 수가 증가하면 네트워크 성능 저하
링형(Ring)
장점: 단 방향 통신으로 신호 증폭이 가능하여 거리 제약이 적다.(계속 증폭 시켜주면 되니까)
단점: 노드의 추가/삭제가 불편
망형(Mesh) - 모든 노드가 서로 일대일로 연결된 상태
장점: 특정 노드의 장애가 다른 노드에 영향x / 회선장애에 유연한 대처 가능
단점: 회선 구축 비용이 많이 들고, 새로운 노드 추가 시 비용 부담 발생
5. RAID 레벨에 대해서
RAID란?
Redundant Array of Independent Disk (독립된 디스크의 복수 배열) 이다.
RAID 사용 시 기대효과?
1. 대용량의 단일 볼륨 효과
2. 디스크 I/O 병렬화로 인한 성능 향상(RAID 0, 5 6 등)
3. 데이터 복제로 인한 안정성(RAID 1 등)
RAID는 기계적인 한계로 성능이 느린 하드디스크를 보완하기 위해 만들어진 기술이다.
RAID를 구성하는 디스크의 개수가 많아도 RAID 구성방식에 따라서 성능, 용량이 달라진다.
이 구성방식을 RAID 레벨이라고 부른다.
RAID 0 ~ 6 까지 있지만,
최근에는 RAID 0, 1, 5, 6만 가능하다.
1) RAID 0
스트라이핑이라고 부른다.
최소 2개의 디스크가 필요하다.(min(N) == 2)
장점: 전체 디스크를 모두 동시에 사용하기 때문에 성능은 N배가 된다. 용량도 N배가 된다.
단점: 하나의 디스크라도 깨지면, 전체 RAID가 깨진다. 즉 안정성은 1/N으로 줄어든다.
성능과 용량은 최대한으로 사용하는 대신, 안정성은 극악이라 할 수 있습니다
2) RAID 1
미러링이라고 부른다.
최소 2개의 디스크가 필요하다.
RAID 1은 모든 디스크에 데이터를 복제하여 기록합니다.
즉, 동일한 데이터를 N개로 복제하여 각 디스크에 저장합니다. 실제 사용 용량 = 디스크의 용량과 같다.
장점: read 시 전체 디스크에서 읽어오기 때문에 빠르다.(단일 디스크의 N배의 성능) // 최대 강점은 안정성이 높다는 것!
단점: write시에 데이터를 복제하기 때문에 시간이 조금 걸린다.
안정성이 중요한 시스템에서 사용 할 수 있겠으나, 비용 문제로 인해 거의 사용하지 않습니다.
3) RAID 2
현재 사용하지 않는 RAID 레벨이다. 최소 3개로 구축 가능함!
bit 단위로 스트라이핑하고, error collection을 위해 Hamming Code를 사용한다.
m+1개의 데이터 디스크와 m개의 패리티 디스크로 구성되는 것 같습니다. (즉 N == (m+1) + m)
그리고 1개의 디스크 에러 시 복구 가능합니다. (2개 이상의 디스크 에러 시 복구 불가능)
4) RAID 3
현재 사용하지 않음, 최소 3개의 디스크 구축 가능
Byte 단위로 스트라이핑하고 error collection을 위해 1개의 패리티 디스크 사용함.
용량 대비 성능이 단일 디스크에 비해 (n-1)배 상승! -1은 패리티 디스크 용도
그리고 1개의 디스크 에러 시 복구 가능합니다. (2개 이상의 디스크 에러 시 복구 불가능)
5) RAID 4
현재 거의 사용되지 않음,
Block 단위로 스트라이핑한다. Error Collection을 위해 1개의 패리티디스크 사용.
용량 및 성능이 N-1 배이다.
Block 단위로 스트라이핑하는 것은 RAID 5,6과 동일하지만, 패리티 비트를 하나의 디스크에 모두 저장해서,
패리티 디스크 사용량이 높아져 패리티 디스크의 수명이 줄어든다.
RAID 4의 단점을 개선시킨 것이 RAID 5 입니다.
6) RAID 5
제일 사용빈도가 높은 RAID 레벨이다. 디스크 최소 3개 필요
Block 단위로 스트라이핑하고, error collection을 위해 1개의 디스크에 패리티 비트를 저장하는데, 매번 다른 디스크에 저장한다.
성능은 단일 디스크의 N-1배이다.
1개의 디스크 에러시 복구 가능(2개 이상부터 불가능)
RAID 0에서 성능, 용량을 조금 줄이는 대신 안정성을 높인 RAID Level이라 보시면 됩니다.
7) RAID 6
RAID 5레벨보다 성능, 용량을 줄이고 안정성을 택한 것. 최소 4개로 구축 가능
Block 단위로 스트라이핑하고, error collection을 위해 매번 2개의 패리티 비트를 다른 디스크에 저장한다.
성능은 단일 디스크의 N-2배이다.
그리고 2개의 디스크 에러 시 복구 가능합니다. (3개 이상의 디스크 에러 시 복구 불가능)
조금 더 안정성을 높여야 하는 서버 환경에서 주로 사용합니다.
8) Nested RAID(중첩 RAID)
여러가지 조합해서 만듬.
6. 다중 스레드
장점:
1) 각 스레드가 속한 프로세스의 메모리를 공유하므로 시스템 자원의 낭비가 적다.
2) 하나의 스레드가 작업을 할 때, 다른 스레드가 별로 작업을 할 수 있어서 사용자와의 응답성도 높다.
단점: 한 스레드에서 문제가 발생하면 전체 프로세스에 영향이 미칠 수 있다.
각 스레드가 서로 교체될때, 문맥교환(Context Switching)이 발생한다. 오버헤드 증가. 그러나 프로세스만큼은 아님.
오히려 많은 양의 단순한 계산은 단일 스레드가 더 성능이 좋을 수 있다.
* 가비지 컬렉터
데몬 스레드를 사용하는 가장 대표적인 예이다.
할당한 메모리 중 더 이상 사용하지 않는 메모리를 자동으로 찾아주어 해제하는 역할을 한다.
보통 가비지 컬렉터가 동작하는 동안, 프로세서가 일시적으로 중단되어 필연적으로 성능 저하가 온다.
7. OSI 7계층
물리: 통신 케이블을 통해 전기 신호를 사용하여 비트 스트림을 전달(데이터 종류나 에러 확인은 하지 않는다.)
데이터링크: 네트워크 계층에서 받은 데이터를 프레임(frame)이라는 논리적인 단위로 구성하고 전송에 필요한 정보를 덧붙여 물리 계층으로 전달한다. 물리계층의 데이터 전송 시 오류 감지 역할(오류 발생하면 재전송)
네트워크: 전송 데이터를 목적지까지 경로를 찾아 전달하는 역할(라우팅 작업 이루어짐)
전송: 데이터를 전송하고, 전송 속도를 조절하고, 오류 발생한 부분은 다시 맞춰주는 역할(TCP 프로토콜을 사용하게 됨) (데이터 전송 단위: TCP: Segment, UDP: Datagram 이다.)
세션: 전송하는 두 종단 프로세스 간 접속(session)을 설정하고, 유지하고 종료하는 역할을 한다.(TCP/IP 세션을 만들고 없앰)
표현: 전송하는 데이터의 표현 방식을 관리하고 암호화하거나 데이터를 압축하는 역할을 한다.(인코딩, 디코딩 이루어짐)
응용: 사용자를 위한 인터페이스 지원
8. 캐시 기억장치 교체 알고리즘
1. LRU: 가장 오랫동안 사용되지 않은 페이지 교체
2. FIFO: 가장 오래된 페이지 교체함
3. LFU(Least Frequently used): 참조 횟수가 가장 작은 페이지 교체
4. Random: 사용횟수와 무관하게 임의로 블록을 교체함
5. Optimal: 가장 오랫동안 사용되지 않을 페이지 교체(구현 불가능, 다른 알고리즘과 비교 연구 목적)
6. MFU(Most Frequently Used): LFU 의 반대로 참조 횟수가 가장 많은 페이지 교체
9. 공개키 암호화 vs 비공개키 암호화
공개키 암호화: 공개키와 비밀키가 존재(공개키는 누구나 알 수 있지만, 그에 대응하는 비밀키는 키 소유자만 알 수 있다.)
-> 이 방식에서 핵심은 공개키를 통해 암호화(데이터 보안 중점)한 것은 개인키를 통해 복호화할 수 있고 개인키를 통해서 암호화(인증 과정에 중점 -> 데이터 제공자의 신원이 보장됨)한 것은 공개키를 통해서 복호화할 수 있다는 것이다.
공개키 암호와의 대표적인 알고리즘은 데이터 암호화 표준(Data Encryption Standard)이다.
비공개키 암호화: 동일한 키로 암호화, 복호화를 동시에 할 수 있는 방식
비밀키 암호화는 암호화와 복호화 과정에서 서로 다른 키를 사용하는 비대칭 암호화(asymmetric encryption)이다.
공개키 암호화가 비공개키 암호화보다 느리다.(비공개키가 더 빠름)
10. 세마포어와 뮤텍스
세마포어(semaphore): 공유된 자원의 데이터를 여러 프로세스가 접근하지 못하도록 막는 것
뮤텍스(Mutex): 공유된 자원의 데이터를 여러 스레드가 접근하지 못하도록 막는 것
* Critical Section이란?
OS에서 Critical Section은 아주 중요한 부분이다.
다중 프로그래밍 운영체제에서 여러 프로세스가 데이터를 공유하고 있을 때, 각 프로세스에서 공유 데이터를 액세스하는 프로그램 코드를 가리키는 말이다.
11. 이진 트리
완전 이진 트리: 마지막 레벨을 제외한 모든 노드들이 꽉 차 있고, 마지막 레벨은 왼쪽부터 마지막 노드까지 차례대로 차있는 상태
포화 이진 트리: 마지막 레벨까지 꽉 채워진 상태
이진 트리 순회 종류
1) 전위 순회: 뿌리 -> 왼쪽 -> 오른쪽(깊이 우선 느낌)
2) 중위 순회: 왼쪽 -> 뿌리 -> 오른쪽
3) 후위 순회: 왼쪽 -> 오른쪽 -> 뿌리
4) 층별 순회: 뿌리부터 층별로 순회(너비우선 느낌)
12. 프로세스 스케쥴링(비선점 - 빼앗지 않음, 선점 - 빼앗음)
비선점:
1) FCFS(First Come First Serve Schedule): 비선점, CPU 를 먼저 요청한 프로세스가 먼저 CPU 를 배정 받는 스케줄링 방법이다.
2) SJF: 비선점형, 실행시간이 짧은 작업(프로세스)부터 처리하므로 평균 대기 시간이 FCFS보다 짧다.
선점:
1) Round-Robin: 우선순위가 적용되지 않는 단순한 선점형 방식이다.
2) 다단계 큐(Multi-level Queue): 우선순위에 따라 준비된 큐 여러개를 사용하는 방식이다.
우선순위가 낮은 하위 단계의 프로세스가 실행중이어도, 우선순위가 높은 단계의 프로세스가 들어오면 CPU 빼앗김
3) SRT(Shortest Remaining Time): CPU 할댱량이 적은게 들어오면 그거 먼저 빠르게 처리함
* 프로세스 상태
생성 - 준비 - 실행 - 대기 - 종료
13. TCP/IP 프로토콜 스택이란?
4개의 계층으로 나뉨(응용, 전송, 네트워크, 데이터링크)
데이터링크: LAN,WAN, MAN과 같은 네트워크 표준과 같은 프로토콜을 정의한다. 두 호스트의 물리적인 연결의 표준을 담당함
네트워크: 물리적 연결 완료 후 경로 설정 단계. 경로는 비 연결적이다. 일정한 경로를 제공하지 않고, 중간에 경로가 바뀔 시 데이터 손실 발생할 수 있음. - 오류 발생에 대한 대비가 되어있지 않다.
전송: 두 호스트간 데이터 송/수신 방식에 대한 약속(TCP/UDP) 결정. TCP는 보내고 받았는지 확인하지만, UDP는 보내기만 함.(확인없음)
응용: 클라이언트와 서버간의 데이터 송수신에 대한 약속들
* 아래는 각 계층 별 주요 프로토콜
14. 갖가지 법칙들
1) 무어의 법칙: 인텔 공동 창립자인 고든 무어가 말한거, 2년마다 칩에 집적할 수 있는 트랜지스터 수가 2배씩 증가함
2) 암달의 법칙: 암달의 저주라고도 불림, 컴퓨터 일부를 개선할 때, 전체적으로 얼만큼의 성능 향상이 일어나는지 계산.
3) 구스타프슨의 법칙: 컴퓨터 과학에서 대용량 데이터 처리는 효과적으로 병렬화할 수 있다.
4) 폰노이만 아키텍쳐: 컴퓨터 설계 관점 분석할 때, 사용되는 구조.(프로그램 내장 방식의 컴퓨터)
폰노이만 이전(애니악 시절) 1+1 계산 시에는 직접 전선을 뺏다가 껴야하는데, 폰노이만 구조의 컴퓨터는 CPU라는 프로그램이 안에 내장되어 있어서 바로 계산 가능.
5) 리틀의 법칙: 프로세스의 안정상태에서의 재고와 산출율 그리고 흐름 시간의 상관관계를 나타낸 법칙, IT에서는 성능평가에 사용됨.
암달의 법칙은 Latency에 기준, 구스타프슨은 Throughput에 기준을 둠.
15. 슈퍼스칼라란?
한 프로세스 사이클 동안에 하나 이상의 프로세서를 실행시킬 수 있는 프로세서 아키텍처를 의미한다.
16. 분기 예측 기법이란?
다음 실행될 조건문이 어느 곳으로 분기할 것인지 확실히 알게 되기 전에 예측하는 CPU 기술
17. VLIW란?
VLIW(Very Long Instruction Word)는 명령어를 여러개 처리 할 수 있는 방식으로, 동시에 여러 명령어를 실행할 수 있도록 하는 연산 처리 기술중 하나이다.
18. SIMD란? - 하나의 명령어로 여러개의 데이터를 한번에 처리하는 기법이다.
SIMD란 Single Instruction Multiple Data의 약자로, 하나의 명령어로 여러개의 데이터를 한번에 처리하는 기법입니다. 일반적인 프로그램의 경우 대부분 SISD(Single Instruction Single Data)으로 구현되어 있고, 이것은 기본적인 폰노이만 컴퓨터가 사용하는 방식입니다. 하지만 동영상 인코딩, 그래픽 렌더링 등의 작업에 SIMD를 적용하였을 때는 성능적으로 큰 이득을 취할 수 있습니다.
19. 아날로그 컴퓨터 vs 디지털 컴퓨터
연산방식: 아날로그는 미적분, 디지털은 사칙연산
입력 형식: 아날로그는 길이, 전압, 전류, 디지털은 멀티미디어 자료
출력 형식: 아날로그는 곡선, 그래프, 디지털은 멀티미디어
회로 구성: 아날로그는 증폭회로,릴레이 방식, 디지털은 논리회로이다.
20. 스레싱이란?
너무 페이지 부재가 자주 발생하는 현상이다.
어떤 프로세스가 계속적으로 페이지 부재가 일어나서,
페이지 교체가 자주 발생하여 프로세스 처리시간보다 페이지 교체 시간이 더 많아지는 현상.
* 스레싱과 페이지 부재(교체)는 정비례관계
21. SCM이란?
공급망 관리(공급망 전체를 하나의 통합된 개체로 보고 이를 최적화하고자 하는 경영 방식)
22. ERP란?
Enterprising Resource Planning의 약자로, 기업 내 생산, 물류, 회계, 재무, 영업, 구매, 재고 등을 통합적으로 관리하는 프로그램.
23. EDI란?
Electronic Data Interchange의 약자로, 표준화된 상거래 서식, 공공서식을 서로 합의하여 전자 문서로 만들어 컴퓨터나 통신을 매체로 서로 교환하는 방식이다.
24. KMS란?
Knowledge Management System의 약자로 조직이나 기업의 인적자원이 축적하고 있는 개별적인 지식을 체계화하여 공유함으로서 경쟁력을 향상시키기 위한 기업 정보 시스템이다.
25. 관계 대수 연산
프로젝트: 릴레이션의 수직적 부분집합이라고 볼 수 있다.
셀렉트: 릴레이션에서 주어진 조건을 만족하는 튜플을 고르는 연산
* 조인도 있다.
* 디비전도 있다.
26. 코틀린이란
오답: 그래픽 요소를 강화한 게임 개발 전용 언어이다.
정의: 자바가 실행될 수 있는 환경에서 자바를 대체할 수 있도록 개발된 언어이다. 주로 웹앱의 백엔드, 안드로이드 앱
* 자바는 컴파일된 프로그램이 JVM상에서 인터프리터 방식으로 실행되는 플랫폼 독립적 프로그래밍 언어이다.
Java ----> 컴파일 ----> class ---> 인터프린터 ----> 실행
즉 하이브리드 방식이다.!
27. 페트리넷이란?
프로세스 마이닝의 가장 기본이 되는 프로세스 모델이다.
가장 간단한 형태로 프로세스를 나타낼 수 있다.
28. 자료흐름도는 구조적인 관점에서 분석할 때 사용된다.
29. 동적 관점의 시스템 기술 시 필요한 것.
사건추적도: 사건 추적도란 일반적으로 사건이 일어나는 일종의 시나리오를 작성하여 사건을 추적한다. 사건 추적도에서는 사건의 순서와 사건을 주고받는 객체나 시스템을 표현하며, 사건의 흐름은 화살표로 표시한다
상태변화도: state transition diagram은 시스템이 가지고 있는 값을 표시하는 상태와 외부에서 가해지는 사건이다.
페트리넷도 동적 관점에서 필요하다.
30. 중복 검사
1) 순환중복검사
2) 수직 중복 검사
수직 패리티 체크 = 수직 중복 검사
3) 수평 중복 검사
4) 해밍코드는 오류가 발생한 부분을 검출한 후 직접 수정까지 하는 방법이다.
5) 체크섬은 중복검사의 한 형태이다. 송신된 자료의 무결성을 검증하는 용도로 사용됨.
31. 이진탐색트리의 삭제
1) 마지막 단말 노드 삭제 시 -> 그냥 삭제하면 된다.
2) 중간 노드 삭제시
2-1) 왼쪽 자식만 있는 노드라면, 노드의 하위 노드 중 가장 큰 값(즉 제일 오른쪽 하위)로 대체해준다.
2-2) 오른쪽 자식만 있는 노드라면, 노드의 하위 노드 중 가장 작은 값(즉 제일 왼쪽 하위)로 대체해준다.
3) 왼쪽, 오른쪽 자식이 모두 있는 노드의 삭제(오른쪽 서브 트리의 가장 왼쪽 노드를 찾는다.)
32. 리눅스 fork()에 대해서!
33. 최대힙 삽입/삭제
34. SYN-Flooding 공격
위의 2번단계에서 목적지서버(B)는 소스서버(A)가 ACK패킷을 보내주기를 계속적으로 기다리는 것이 아니라일정시간 후 요청이 오지 않으면
백로그큐(Backlog Queue)가 허용하는 공간에 연결정보(로그)를 보관하게 됩니다.
이러한 상태가 지속적으로 요청되어 연결정보(로그)가 쌓이게 되면 목적지서버(B)의 특정서비스가 마비될 수 있습니다.
이러한 공격을 DOS공격의 일종인 SYN Flooding 공격이라고 합니다.
35. 부동소수점 vs 고정소수점
부동
고정
16. RIP 프로토콜
37. 서브넷마스크 관련(reakwon.tistory.com/69)
* MPEG-2
'IT' 카테고리의 다른 글
Django 설치 및 프로젝트 생성 - Ver 2 (0) | 2021.01.30 |
---|---|
Django 설치 및 프로젝트 생성 (0) | 2021.01.30 |
Mac에 Emacs 연동안될 때 (0) | 2020.11.03 |
코딩 폰트에 대해서 (0) | 2020.10.29 |
터미널 실행 시 명령어 자동 실행 (0) | 2020.10.29 |