CS/면접을 위한 CS 전공지식 노트 9

[CH3.2] 메모리

1. 메모리 계층구성 개념휘발성 여부속도(빠른 순위)기억 용량(큰 순위)가격(높은순위)레지스터CPU 안의 작은 메모리O141캐시L1, L2, (L3) 캐시O232주기억장치(RAM)데이터 임시 저장. 필요시 CPU 전달O323보조기억장치HDD, SSDX414 캐시데이터를 미리 복사해 놓는 임시 저장소속도 차이에 따른 병목 현상 감축을 위한 메모리지역성의 원리(시간/공간) : 캐시 계층을 두는 것이 아닌 캐시 직접 설정 시시간 지역성최근 사용한 데이터에 다시 접근하려는 특성공간 지역성최근 접근한 데이터를 이루는 공간 혹은 그 공간에 접근하는 특성 캐시히트와 캐시미스캐시히트 : 캐시에서 원하는 데이터 찾음 ( 위치 가까움, 빠름 )캐시미스 : 해당 데이터가 캐시에 없어서 주 메모리에서 데이터 찾아오는 것 ( ..

[CH3.1] 운영체제와 컴퓨터

1. 운영체제 역할 및 구조역할CPU 스케줄링 및 프로세스 관리메모리 관리디스크 파일 관리I/O 디바이스 관리구조GUI 없고 CUI만 있는 리눅스 서버도 존재 시스템콜운영체제가 커널에 접근하기 위한 인터페이스유저 프로그램이 커널 함수 호출할 때 사용컴퓨터 자원에 대한 직접 접근 차단추상화 계층 - 낮은 단계 영역 처리를 크게 신경 쓰지 않아도 됨 modebit유저 모드(유저 접근에 제한 둠) / 커널 모드(모든 컴퓨터 자원 접근 가능) 구분1 / 0의 값을 갖는 플래급 변수운영체제를 통해 작동하도록 할 때 사용 2. 컴퓨터의 요소 CPU산술논리연산장치 + 제어장치 + 레지스터메모리에 존재하는 명령어 해석 및 실행, 연산제어장치프로세스 조작을 지시입출력장치 간 통신 제어, 명령어 해석, 데이터 처리 순서 ..

[CH2.5] HTTP

1. HTTP / 1.0RTT 증가TCP의 3웨이 핸드셰이크 계속 열어야 함 -> RTT 증가RTT 증가 해결 방안이미지 스플리팅 : 대용량 이미지 과부하 방지를 위해 많은 이미지가 합쳐 있는 하나의 이미지 다운 -> backgroud-image의 position으로 이미지 표기코드 압축 : 코드를 압축해서 코드 크기 최소화이미지 Base64 인코딩 : 이미지 파일을 64진법으로 이루어진 문자열로 인코딩. 이미지를 서버에 HTTP 요청할 필요 없음. 2. HTTP / 1.1- (매번 TCP 연결 X) 한 번 TCP 초기화 -> keep-alive로 여러 개 파일 송수신- 한 번 TCP 3-웨이 핸드셰이크 발생하면 그 후 발생 X HOL Blocking네트워크에서 같은 큐에 있는 패킷이 그 첫 번째 패킷에..

[CH2.4] IP 주소

1. ARPARPIP 주소로부터 MAC 주소를 구하는 IP와 MAC 주소의 다리 역할가상 주소(IP주소) -> 실제 주소(MAC주소) 변환주소 찾는 과정 : 장치가 ARP 브로드캐스트 보냄 -> IP 주소에 해당하는 MAC 주소 탐색 -> 일치하는 장치가 MAC 주소 반환 홉바이홉 통신IP 주소를 통해 통신하는 과정패킷 전달 과정 : '라우팅 테이블'의 IP를 통해 시작 주소부터 '라우팅' 과정을 거쳐 최종 목적지에 패킷 도달 라우팅 테이블라우터에 들어 있는 목적지 정보들, 목적지로 가기 위한 방법이 들어 있는 리스트게이트웨이 : 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간 통신을 변환하여 가능하게 하는 관문netstat -r //라우팅 테이블 확인 방법 IP주소 체계32비트->8비트 단위 표..

[CH2.3] 네트워크 기기

1. 네트워크 기기 처리 범위계층별 처리 범위애플리케이션 계층 : L7 스위치인터넷 계층 : 라우터, L3 스위치데이터 링크 계층 : L2 스위치, 브리지물리 계층 : NIC, 리피터, AP 2. 애플리케이션 계층을 처리하는 기기L7 스위치 (= 로드밸런서)스위치 : 여러 장비를 연결하고 데이터 통신을 중재하며 목적지가 연결된 포트로만 전기 신호를 보내 데이터를 전송하는 통신 네트워크 장비서버의 부하를 분산하는 기기장애 발생한 서버는 헬스 체크를 이용하여 감시L4 스위치 (= 로드밸런서)전송 계층 처리하는 기기IP와 포트를 기반으로 트래픽 분산*적용 예*클라우드 서비스 - L7 스위치 로드밸런싱(ALB) , L4 스위치 로드밸런싱(NLB) 로드밸런서를 이용한 서버 이중화2대 이상의 서버를 기반으로 서비스..

[CH2.2] TCP/IP 4계층 모델

0. TCP/IP인터넷 프로토콜 스위트 : 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜 집합 1. 계층 구조TCP/IP 4계층 VS OSI 7계층 공통점특정 계층 변경되었을 때 다른 계층 영향 X차이점OSI는 애플리케이션 계층을 세 개(애플리케이션/프레젠테이션/세션)로 쪼갬.OSI는 링크 계층을 두 개(데이터 링크/물리)로 쪼갬 1) 애플리케이션 계층FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층웹 서비스, 이메일 등 서비스 제공 2) 전송 계층송신자와 수신자를 연결하는 통신 서비스 제공애플리케이션과 인터넷 계층 사이 데이터가 전달될 때의 중계 TCP, UDP프로토콜 종류순서 보장수신 여부 확인패킷 교환 방식TCPOO가상회선 패킷 교환 방식UDP..

[CH2.1] 네트워크의 기초

0. 네트워크의 기초네트워크 : 노드와 링크가 서로 연결되어 있으며 리소스를 공유하는 집합노드 : 서버, 라우터, 스위치 등의 네트워크 장치링크 : 유선 / 무선 1. 처리량과 지연 시간처리량(bps) : 링크 내에서 성공적으로 전달된 데이터양 = 얼마만큼의 트래픽을 처리했는가트래픽 : 링크 내에 흐르는 데이터의 양대역폭 : 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수지연 시간(bps) : 요청이 처리되는 시간 = 어떤 메시지가 두 장치 사이를 왕복하는 데 걸린 시간매체 타입(무선, 유선), 패킷 크기, 라우터의 패킷 처리 시간 영향 받음 2. 네트워크 토폴로지와 병목 현상네트워크 토폴로지 : 노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 연결 형태 트리 토폴로지 : 계층형..

[CH1.2] 프로그래밍 패러다임

0. 프로그래밍 패러다임함수형 프로그래밍 지원 - 하스켈여러 패러다임 지원 - C++, Python, JavaScript, Java(jdk 1.8 이후) 1. 선언형과 함수형 프로그래밍선언형 프로그래밍 : '무엇을' 해야하는지를 기술하고 '어떻게' 하는지는 숨기는 패러다임함수형 프로그래밍 : '순수 함수'들을 블록처럼 쌓아 로직을 구현, '고차 함수'로 재사용성을 높인 패러다임 => JavaScript순수 함수 : 출력이 입력(매개변수)에만 의존고차 함수 : 함수가 함수를 매개변수로 받음 2. 객체지향 프로그래밍객체지향 프로그래밍 : 데이터를 객체로 취급하여 객체 내부에 선언된 메서드 사용하는 방식, 처리 속도 느림특징추상화 : 복잡한 시스템으로부터 핵심적 개념 또는 기능을 단순화한 것캡슐화 : 객체의 ..

[CH1.1] 디자인패턴

0. 디자인 패턴라이브러리 : 공통으로 사용될 수 있는 기능들을 모듈화한 것. 규칙 없고 내가 직접 컨트롤하며 사용.프레임워크 : 공통으로 사용될 수 있는 기능들을 모듈화한 것. 규칙 있고 컨트롤되어 있는 것을 사용.디자인 패턴 : 프로그램 설계 시의 문제점들을 해결할 수 있도록 '규약' 형태로 만들어 놓은 것 1. 싱글톤 패턴정의 : 클래스 하나에 인스턴스 하나인 패턴사용 예 : 데이터베이스 연결 모듈에 많이 사용, I/O 바운드(네트워크, DB, file system에 요청) 작업에 많이 사용장점 : 해당 인스턴스를 다른 모듈이 공유하며 사용하므로 인스턴스 생성 비용 감소단점 : 해당 인스턴스에 의존성 높아짐. TDD(Test Driven Development)에 불리함. 단위 테스트할 때 독립적인 ..