반응형

분류 전체보기 136

[Tech] IEEE754 부동 소수점(Floating Pointing)

일반적으로 사람은 정수를 표현할 때 10진수를 사용하여 표현합니다. 하지만 컴퓨터는 사람과 달리 2진수를 이용해 수를 표현해야 하기 때문에 자릿수에 따라 의미를 부여하는 방식을 이용해 수를 표현하곤 합니다. 대표적인 방식으로 부호화 방식이 있는데, 2진수로 표현된 수의 제일 앞자리를 부호비트로 사용하여 0일 경우 양수로 표현하고 1일 경우 음수로 표현하는 방법입니다. 그렇다면 음수는 어떻게 표현할까요? 음수를 표현하는 방식은 크게 두 가지로 나누어집니다. 고정 소수점 정수를 표현하는 비트와 소수를 표현하는 비트의 비트 수를 사전에 미리 정해두고 해당 비트만큼 의미를 부여하여 소수를 표현하는 방식입니다. 예를 들어 실수 표현에 4byte(32bit)를 사용하고, 부호 표현에 1bit, 정수 표현에 16bi..

[OS] 메모리 단편화(Memory Fragmentation) : 페이징, 세그멘테이션

우리가 컴퓨터에서 어떤 프로그램을 실행하거나 어떠한 작업을 할 때 컴퓨터는 메모리에 해당 프로그램을 올리고 실행하게 됩니다. 그때 메모리의 공간을 연속적인 형태로 할당하여 사용하게 되는데요. 이러한 식으로 RAM에서 메모리 공간이 조각처럼 나뉘게 될 경우 사용 가능한 메모리가 충분히 존재하지만 할당이 불가능한 상태를 메모리 단편화가 발생한다고 이야기 합니다. 그렇다면 메모리 단편화의 종류에 관해 살펴보도록 하겠습니다. 메모리 단편화는 내부 단편화와 외부 단편화로 구분이 가능합니다. 내부 단편화(Internal Fragmentation) 메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비되는 상황을 이야기합니다. 예를 들어 어떤 프로그램을 실행시..

Computer Science/OS 2020.03.30

[Tech] 암호화 알고리즘

무언가 서비스를 개발하게 된다면 필수적으로 고려되어야 하는 사항이 바로 보안입니다. 보안은 다양한 방법으로 고려될 수 있지만 그 중 가장 기본적이면서도 중요한 것이 바로 암호화가 아닐까 싶습니다. 하지만 암호화란 그 종류가 다양하고, 지금도 계속해서 새로운 암호화 알고리즘이 개발되고 있습니다. 저 역시 서버 개발을 해오며 암호화를 해왔지만, 암호화의 종류에 대해 깊이 알지는 못했는데 http, https를 공부하며 다양한 암호 알고리즘이 존재하고 필요에 따라 선택하여 사용한다는 사실을 알게되어 공부한 내용을 바탕으로 해당 포스팅을 작성하게 되었습니다. 먼저 암호화 알고리즘에서 자주 사용하는 단어들을 정리하고 넘어가도록 하겠습니다. 평문(Pnaintext) : 해독 가능한 암호화 되지 않은 메세지. 암호문..

[Network] http와 https 차이

HTTPS란? HTTP는 Hyper Text Protocol의 약자로써 www(world wide web)사에서 정보를 주고 받는 프로토콜니다. 이름에서도 알 수 있듯이 http는 텍스트 교환방식이기 때문에 누군가 네트워크에서 신호를 가로챈다면 내용이 노출된다는 보안상의 문제가 있습니다. 이러한 문제를 해결하기 위해 나온 것이 바로 https입니다. https는 인터넷 상에서 정보를 암호화하는 SSL(Secure Socket Layer) 프로토콜을 이용해서 클라이언트와 서버가 데이터를 주고받는 통신 규약입니다. 따라서 http보다 보안상에 우위에 있습니다. SSL / TLS 인터넷 상에서 데이터를 안전하게 전송하기 위한 인터넷 암호화 통신 프로토콜을 의미합니다. 데이터를 송신할 때 http는 애플리케이션..

[OS] Synchronization 동기화란?

1. 동기화란? 동기화란 컴퓨터 공학의 영역 뿐만 아니라 클라우드 저장소와 같은 우리가 일상 생활 속에서 흔히 접하는 많은 애플리케이션이나 기기에서 접할 수 있는 단어입니다. 그 말의 뜻에서도 알 수 있듯이 무언가 연동된다라는 느낌이 있는 단어입니다. 컴퓨터 공학에서 뜻하는 동기화 역시 이와 다르지 않으며, 동기화란 프로세스 또는 스레드들이 수행되는 시점을 조절하여 서로가 알고 있는 정보가 일치하는 것을 의미합니다. 우리가 알다시피 컴퓨터는 프로세스 또는 스레드로 작업을 실행합니다. 예를 들어 a = 2 라는 자원이 있다고 해보겠습니다. P1이라는 프로세스는 a라는 값을 이용해서 어떠한 로직을 수행합니다. 그런데 만약 그 사이 P2라는 프로세스가 a의 값을 3으로 바꾸게 된다면 어떻게 될까요? 아마 프로..

Computer Science/OS 2020.03.27

[OS] 운영체제 스케줄링

운영체제 스케줄링의 개념과 용어 운영체제 스케줄링이란 시스템의 목표를 달성할 수 있도록 프로세서를 할당하는 일련의 과정을 이야기 합니다. 즉 어떤 프로세스가 cpu를 사용할지를 결정하는 것입니다. 스케줄링 알고리즘은 여러가지가 있는데 이러한 알고리즘의 성능의 기준은 아래와 같습니다. 프로세서 사용률 : 높은게 좋음. 단위 시간당 처리율 : 높은게 좋음. 반환 시간 : 작업이 시스템에서 완전이 끝날 때까지 걸리는 시간. 짧은게 좋음. 대기시간 : ready 큐에서 기다렸던 시간. 짧은게 좋음. 아래는 운영체제 스케줄링에서 사용되는 용어들과 그에 대한 설명들 입니다. PCB (processor control block) 특정 프로세스를 관리할 필요가 있는 정보를 포함하는 운영체제 커널의 자체 자료구조입니다...

Computer Science/OS 2020.03.23

[Database] 트랜젝션

트랜잭션이란? 한번 쿼리를 실행하면 모두 수행되거나, 모두 수행되지 않는 작업 수행의 논리적인 단위를 이야기 합니다. 트랜잭션의 4가지 특징이란? 트랜잭션에는 4가지 특징이 있습니다. 이를 앞글자만 따서 ACID라고 부릅니다. acid는 정보처리기사 시험이나 면접에서도 자주 출제되는 중요한 특성이니 꼭 기억해두는 것이 좋습니다. Atomicity(원자성) 어떤 트랜젝션 안의기능들이 모두 수행되거나 모두 수행되지 않아야 합니다. Consistency(일관성) 트랜젝션 발생 전후로 DB의 일관성이 깨지지 않아야 합니다. Isolation(독립성) 각 트랜젝션은 독립적으로 이루어져 서로에게 간섭할 수 없습니다. Durability(지속성) 트랜젝션 발생 후 디비의 변경 사항은 지속적으로 유지되어야 합니다. c..

[Network] TCP 신뢰성의 특징: 흐름제어 / 혼잡제어

TCP의 가장 큰 특징은 신뢰성입니다. 신뢰성이란 중간에 데이터가 유실되지 않는 것을 이야기하는데 이러한 신뢰성을 구성해주는 대표적인 방법으로 흐름제어와 혼잡제어가 있습니다. 흐름제어 먼저 흐름제어에 대해 알아보겠습니다. 흐름제어란 송신 측과 수신 측의 데이터 처리 속도 차이를 해결하기 위한 기법입니다. 수신측이 송신측 보다 처리 속도가 빠르다면 문제가 될 것이 없지만, 만약 송식 측이 수신 측보다 전송 속도가 빠르게 되면 전송된 패킷은 수신측의 제한된 저장 용량을 초과하여 이후에 도착하는 데이터가 손실될 수 있습니다. 만약 데이터가 손실 된다면 추가적으로 응답과 데이터의 재전송이 이루어져야 하기 때문에 리소스의 낭비로 이어질 수 있습니다. 이러한 위험을 줄이기 위해 송신측의 데이터 전송량을 수신측의 처..

[Network] TCP / UDP

TCP TCP란 인터넷 상에서 데이터를 메세지 형태로 보내기 위해서 ip와 함께 사용하는 프로토콜 입니다. TCP는 아래와 같은 특성을 가지고 있습니다. 1. 연결형 서비스 입니다. 2. 높은 신뢰성을 가지고 있습니다. 3. 3 way-hand-shaking으로 연결하고 4way-handshaking으로 해제합니다. 4. UDP보다 속도가 느립니다. 3-way handshaking 1. 클라이언트에서 Server로 연결 요청을 하기위해 SYN 데이터를 보냅니다. 2. 서버에서 해당 포트를 LISTEN하고 있는 상태로 SYN 데이터를 받고, 정상적으로 데이터를 받았다는 대답(ACK)와 client도 포트를 열어달라는 SYN데이터를 함께 보냅니다. 3. 클라이언트에서는 SYN + ACK를 받고 ESTABLI..

[Javascript] Tutorial(5): 싱글 스레드 기반 이벤트 루프와 비동기

이번 포스팅에서는 조금은 자바스크립트에서 벗어난 이야기를 해볼 예정입니다. 바로 이벤트 루프라는 녀석 때문입니다. 자바스크립트 튜토리얼이나 책에서 이벤트 루프에 관해서는 잘 언급하지 않습니다. 왜냐하면 정확히 이야기하자면 ECMAScrpt 스펙에는 이벤트 루프가 포함되어있지 않습니다. 이벤트 루프는 브라우저나 Node.js가 담당하는 부분이기 때문입니다. 하지만 이 튜토리얼에서 이벤트 루프를 언급하는 이유는 자바스크립트가 브라우저나 Node.js와의 연관성은 필연적이기 때문에 이 시점에서 비동기와 함께 짚고 넘어가는 것이 좋다고 생각했기 때문입니다. 이번 포스팅에서는 총체적인 접근이 조금 필요할 것 같습니다. 그래서 먼저 동기/비동기의 개념을 다루고, 자바스크립트에서 비동기가 적용되는 이벤트 루프에 대해..

반응형