728x90

전체 글 288

가상화 기술

가상화란? 가상화란 단일 시스템에서 특정 환경을 위한 전용 리소스를 임시로 할당하는 기술 말한다. 가상화하는 대상에 따라 가상머신, 가상OS 등으로 불릴 수 있다. 가상머신은 하드웨어를 소프트웨어적으로 구현한 것을 말한다. virtual box 같은 것들을 통해 만드는 것이 바로 가상머신이다. 우리는 virtual box 를 통해 원하는 CPU, 메모리, 디스크를 할당해서 간단하게 하드웨어를 구현할 수 있다. 이렇게 구현한 가상머신 위에 OS를 설치하면 가상OS가 되는 것이다. 그런데 하드웨어에는 기본적으로 OS가 따라오기 때문에 가상머신 == 가상OS 라고 생각해도 무방하다. ​ 하이퍼바이저(hypervisor) 가상화를 구현하기 위한 기반기술이다. 가상화를 통해 여러 OS가 존재할 경우 각 OS에서는..

Base/개념정리 2021.04.02

운영체제

사전 용어 정리 프로그램 : 명령어 집합으로 컴파일된 결과물뿐만 아니라, 프로그래머가 작성한 소스 코드까지도 포함한다. 소프트웨어 : 프로그램뿐만 아니라 CD, 설명서, 제품 포장 등 패키지 전체를 뜻하기도 한다. 프로세스 : 동작 중인 프로그램을 의미한다. 스레드 : 프로세스 안에 하나 이상 존재할 수 있다. 명령어가 CPU를 통해서 수행되는 객체의 단위이다. 컴퓨터는 크게 CPU, 메모리, 디스크로 구성된다. 이러한 물리적 요소들을 하드웨어라고 하는데 CPU는 연산을, 메모리는 순간 기억을, 디스크는 저장하는 기능을 각각 수행하게 된다. ​ 프로그램이 수행되기 위해서는 이런 하드웨어들이 적절하게 데이터틀 주고 받으며 논리적인 일들을 해야 하는데 하드웨어들은 그냥 각자 자신의 역할만 수행할 뿐이다. ​..

Base/OS, Network 2021.04.02

CPU 스케줄링

CPU는 한번에 제한된 갯수의 스레드만 처리할 수 있기 때문에 이에 대한 스케줄링 작업이 필요하다. 이것은 스레드가 어떤 우선순위를 가지고 CPU를 얼만큼 사용할 것인지 결정하고 수행하는 과정으로 시간당 처리되는 건수를 높여서 CPU의 효율을 높여주기 위함이다. ​ 이러한 스케줄링 알고리즘은 크게 선점형과 비선점형으로 나뉜다. 선점형은 먼저 수행 중인 스레드의 CPU 사용권이 다른 스레드에 의해 빼앗길 수 있는 알고리즘으로 스레드의 작업이 끝나지 않은 상황에서 중지하고 다른 스레드가 수행될 경우 다시 돌아와서 이어서 작업을 수행해야 하기 때문에 지금까지 수행한 모든 내용을 보관해 둔 후, 새로 시작하는 작업에 대한 내용을 새로 적재해 주어야 하는데 이를 문맥교환(Context Switching)이라 한다..

Base/OS, Network 2021.04.02

L4, L7 스위치 정리

일단 둘 다 스위치이다. L4는 ip+port 로 구분해서 적절한 서버로 요청을 보낼 수 있다. L7은 ip+port+패킷의 url,쿠키 등의 정보 등도 체크해서 적절한 서버로 요청을 보낼 수 있다. 이로 인해 L7은 L4가 가지고 있는 기능들을 모두 수용하면서 불필요한 트래픽을 차단할 수 있다. ​ 스위치는 일반적으로 이중화 혹은 로드벨런싱 용도로 사용된다. 스위치 처리과정을 간단하게 정의하면 아래와 같다. 1. 사용자가 브라우저 주소창에 도메인을 입력하면 pc에 설정된 로컬 DNS 서버로 DNS Query를 한다. 2. 로컬 DNS 서버는 해당 도메인을 관리하는 DNS 서버에 다시 DNS Query 요청을 해서 해당 도메인 스위치의 vip주소를 획득한다. 3. 로컬 DNS서버는 브라우저에게 해당 도메..

Base/OS, Network 2021.04.02

Linux crontab

어떠한 작업을 일정주기로 반복적으로 수행하게 해준다. /usr/local/test.sh 라는 쉘파일이 있고 그걸 수행시킨다고 가정하고 정리한다. ​ 현재 등록되어 있는 crontab 을 확인하려면? crontab -l crontab 을 등록하려면? 아래와 같이 입력하면 수행할 명령을 입력할 수 있는 편집기가 호출된다. crontab -e 만약 수행할 작업이 root 권한이 필요한 작업이라면? sudo crontab -e 편집기를 반드시 vim으로 띄우고 싶다면? sudo EDITOR=vim crontab -e 만약 매시 30분 마다 test.sh 라는 쉘을 실행시키고 싶다면 아래와 같이 입력하고 저장하면 된다. /usr/local 이 PATH에 등록되어 있다면 그냥 test.sh 로 호출해도 된다. 30..

Base/OS, Network 2021.04.02

ssh-keygen

ssh키를 통한 인증을 할 경우 인증서버에 ssh공개키를 미리 알려줘야 한다. 이와 관련하여 가장 흔하게 접할 수 있는게 github 인데 로컬 PC에서 github 원격저장소의 소스를 내려 받기 위해서 checkout 명령을 수행할 때 github 입장에서는 checkout 명령을 보낸 클라이언트(로컬PC)를 인증해야 하는데 그 인증 수단으로 id/password 를 사용할 수도 있지만 이는 네트워크 패킷에 그대로 노출되는 문제가 있어 ssh 공개키 암호화 방식을 사용한다. 이때 github에 공개키를 등록해놓고 클라이언트는 개인키를 가지고 ssh 인증을 시도한다. ​ ssh키는 ssh-keygen 을 이용하면 되는데 ssh가 설치되어 있다면 기본적으로 함께 설치되어 있다. 기본적으로 아래와 같이 아무..

Base/OS, Network 2021.04.02

싱글쓰레드와 멀티쓰레드, 동기와 비동기

개념이 자꾸 헷갈려서 정리해 놓는다. ​ 싱글쓰레드 : 하나의 쓰레드로 일을 수행한다. 멀티쓰레드 : 다수의 쓰레드로 일을 수행한다. 동기 : 이전작업이 종료된 뒤에 다음 작업을 수행한다. 비동기 : 이전작업의 종료여부과 관계없이 다음 작업을 수행한다. ​ 써놓고보니 더 헷갈린다. 싱글쓰레드==동기, 멀티쓰레드==비동기 같은데 다들 아니라고 한다. 싱글쓰레드도 내부작업은 비동기로 할 수 있고, 멀티쓰레드도 내부작업은 동기로 할 수 있다. 싱글쓰레드, 멀티쓰레드는 단순히 일을 하는 사람이 몇명인지로 구분하고 동기, 비동기는 실제로 일을 어떤식으로 처리하는지로 구분한다. 에초에 연관지어서 생각하면 안된다. ​ 예를 내가 우체국 사장이라고 생각해보자. 아침에 우편배달을 업무를 시작하는데 집배원은 한명이라면 싱..

Base/개념정리 2021.04.02

32비트, 64비트 차이점?

컴퓨터는 모든 데이터를 2진수로 변환해서 처리한다. 2진수란 0, 1로만 구성된 숫자를 의미한다. 이때 하나의 자릿수가 1bit의 공간을 차지한다. ​ 2bit의 공간으로는 아래와 같은 데이터를 나타낼 수 있다. 00 01 10 11 ​ 3bit라면 아래와 같다. 000 001 010 011 100 101 110 111 ​ 4bit라면 아래와 같다. 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 ​ nbit는 2^n까지의 정보를 나타낼 수 있으며 1bit가 증가할 때마다 정보량도 2배로 증가한다. 다르게 말하면 비트가 클수록 한번에 표현할 수 있는 정보도 커진다. 극단적으로 생각하자면 땅을 판다고 할 때 삽으..

Base/개념정리 2021.04.02

TCP/UDP 그리고 IP

TCP와 UDP는 둘 다 정보를 패킷 형태로 인터넷에서 전송할 때 쓰이는 프로토콜이다. IP(Internet Protocol) 위에 설계된 프로토콜로 IP주소가 있는 곳으로 정보를 전달하는데 그 방법으로 TCP와 UDP가 있는 것이다. ​ TCP는 데이터를 전송하기 전에 상대방이 준비가 되었는지 확인하고 준비가 되었을 때 별도의 소켓을 연결해서 전송을 시작한다. 또한 전송이 모두 끝났으면 잘 받았는지 확인하고 제대로 가지 않았다면 재전송을 시도한다. 이런 이유로 연결지향형 프로토콜이며 신뢰성 서비스라고도 부른다. 다만 TCP는 데이터를 전송할 때 패킷단위로 잘게 나눠서 전송을 하기 때문에 받는 쪽에서는 이를 다시 재조립하는 과정이 필요하다. ​ UDP는 TCP와 달리 상대방이 준비가 되었는지, 전송은 잘..

Base/개념정리 2021.04.02

HTTP1.0 , HTTP1.1, HTTP2.0

일단 http의 정의는 다음과 같다. 인터넷에서 하이퍼텍스트(hypertext) 문서를 교환하기 위하여 사용되는 통신규약이다. 하이퍼텍스트는 문서 중간중간에 특정 키워드를 두고 문자나 그림을 상호 유기적으로 결합하여 연결시킴으로써, 서로 다른 문서라 할지라도 하나의 문서인 것처럼 보이면서 참조하기 쉽도록 하는 방식을 의미한다. [네이버 지식백과] HTTP [hypertext transfer protocol] (두산백과) 여기에서 중요한 것은 하이퍼텍스트인데 처음부터 하이퍼텍스트가 제공 되었던 것은 아니고 초기에는 단순히 새로운 텍스트를 연결하는 링크만 제공할 뿐이었다. 그러다가 그림, 동영상 같은 미디어 결합이 추가되면서 서서히 발전해나갔고 그 과정 속에서 http1.0, http1.1, http2.0 ..

Base/개념정리 2021.04.02
728x90