본문 바로가기
320x100

Study/OS & Network5

[OS] 뮤텍스와 세마포어 개요 뮤텍스(Mutex)와 세마포어(Semaphore)는 모두 '동시성 프로그래밍에서 공유 자원(임계 영역)을 상호 배제를 통해 안전하게 관리하기 위해 고안된 방법' 이다. 여기서 상호 배제(Mutual Exclusion)이란, 공유 불가능한 자원의 동시 사용을 피하기 위해 사용되는 알고리즘을 뜻한다. 조금 더 쉽게 풀어서 이야기하자면, 수많은 프로세스와 스레드 내에서 함께 사용할 수 없는 자원을 관리하기 위해 고안된 방법들인 것이다. 뮤텍스 뮤텍스는 여러개의 스레드를 사용할 때 공유 자원에 대한 접근을 관리하기 위한 동기화 방식이다. 뮤텍스는 기본적으로 공유 자원이 사용중이라면 Lock을 걸어서 다른 스레드가 사용할 수 없도록 막는다. 그리고 해당 자원에 대한 사용이 끝나면 이를 해제하고 다음 스레드가.. 2021. 12. 23.
[Network] TCP/IP와 Handshaking TCP/IP란? TCP(Transmission Control Protocol)는 네트워크 상 두 호스트의 연결 지향 통신을 위한 프토토콜이다. OSI 7 계층 중 4계층에 속한다. 여기서 연결 지향이란, 말 그대로 서로의 통신 연결이 유지되는 것을 지향하는 프로토콜을 이야기한다. (이에 반대되는 비 연결 지향 프로토콜으로 UDP가 존재한다) TCP는 연결 지향 프로토콜이기때문에 두 호스트 간의 데이터를 신뢰성 있게 전달할 수 있다. 네트워크망 속에서 호스트 간의 통신을 위한 데이터는 엄청나게 많은 노드를 거쳐가게 된다. 이러한 과정 속에서 먼저 전송한 데이터가 나중에 전달되거나, 데이터가 중간에 유실되는 등 다양한 문제가 발생할 수 있다. IP는 패킷이 제대로 전달되었는지를 확인하지 않기 때문에 IP 위.. 2021. 12. 14.
[Network] 대칭/비대칭 암호화와 HTTPS 개요 대칭/비대칭 암호화 과정과 이를 활용한 HTTPS 통신 과정에 대해 알아보려고 한다. 대칭키 대칭키 방식은 하나의 키(대칭키)를 가지고 있다면, 누구나 해당 키를 이용하여 데이터를 암호화하고, 복호화할 수 있는 암호화 방식을 말한다. 대칭키는 하나의 키만 있으면 되기 때문에 심플하고 컴퓨터의 입장에서도 연산과정이 상대적으로 훨씬 가볍다는 장점이 있다. 그러나 대칭키 방식은 키를 전달하는 과정에서 키가 탈취된다면 전혀 의미가 없어지는 암호화 방식이라는 단점이 존재한다. 비대칭키(공개키) 비대칭키 방식은 두개의 키를 이용하여 암호화하는 방식이다. 한쪽 키로 암호화한다면, 다른 한쪽 키로만 복호화할 수 있다. 여기서 암호화하는 키를 공개키라고 부르고 복호화하는 키를 개인키라고 부른다. 비대칭키는 대칭키보.. 2021. 12. 11.
[OS] (멀티)프로세스와 (멀티)스레드, 그리고 동시성 프로세스 프로세스란, 실행된(실행되고 있는) 프로그램을 의미한다. 이 프로세스 단위로 OS에서 시스템 자원을 할당받게 된다. 구체적으로 프로세스는 각각 Code영역, Data영역, Stack영역, Heap영역을 할당받는다. 이 프로세스들은 서로 독립된 메모리 영역에 있기 때문에 다른 프로세스에 접근하기 위해서 IPC(Inter-process communication)를 사용해야 한다. 프로그램은 단지 짜여진 코드일 뿐이다. 프로그램이 프로세스가 되기 위해서는 메모리에 필요한 자원들과 함께 자리를 할당받아야 한다. 그때부터 프로그램은 비로소 프로세스가 될 수 있다. 또한 운영체제는 PCB(Process Control Block)에 해당 프로세스의 정보들을 저장한다. 이 정보들에는 PID, Pointer, .. 2021. 12. 10.