CS
-
Network 이해하기 - 1 (간단한 요약)CS 2022. 5. 20. 16:38
계기 AWS 설정을 하면서 용어가 헷갈리고 모르는게 많아 이론을 한번 정립하고 갈 필요를 느껴서 network 관련 복습을 해보려고 한다. 실제 물리적 장비와 같이 알면 더 이해가 쉬울거라고 생각해서 장비와 연관지어서 알아보자. OSI 7 layer data는 보낼 때 하나의 layer를 지날때마다 헤더를 붙여서 생성하고 받을 때 헤더를 decapsulation을 통해 경로를 찾는다. Physical Layer: 0,1 로 된 데이터를 전기적 신호로 변경해준다. 실질적으로 전송을 담당한다. 간단하게 랜선이라고 보면 된다. TCP/IP에서는 이 영역이 의미가 없다고 생각하여 L2로 합쳤다. Datalink Layer: 물리적 링크를 통하여 데이터를 신뢰성 있게 전송하는 계층이고, 받은 데이터를 물리 계층으..
-
HTTP와 HTTPSCS 2021. 12. 12. 18:59
HTTP(Hyper Text Transfer Protocol) 서버, 클라이언트에서 데이터를 주고 받기 위한 프로토콜이다. 80포트를 사용한다. 어플리케이션 레벨의 프로토콜이고 TCP/IP위에서 동작한다. Stateless 프로토콜이고 Method, Path, Headers, Body, ...etc로 구성된다. 1.1 Ver 부터 Keep-Alive 기능을 지원한다. (Client, server 연결을 유지시켜 Handshake 과정을 생략함으로써 성능을 향상시켰다.) HTTPS(Hyper Text Transfer Protocol Secure) HTTP에 데이터 암호화가 추가 된 프로토콜이다. 443번 포트를 사용한다. 공개 키 암호화를 지원한다.
-
TCP와 UDP의 차이점CS 2021. 12. 12. 17:07
TCP 연결 지향형 프로토콜 이기 때문에 가상 회선을 만들어서 흐름 제어, 혼잡 제어, 오류 제어를 통해 신뢰성을 보장한다. 연결 할 때 3way handshake를 사용하고 해제할 때 4 way handshake를 사용한다. 3way handshake 클라이언트가 서버에게 연결 요청 Client -> Server : SYN(n) 서버가 응답과 동시에 연결 됐음을 알림 Server -> Client : ACK(n+1), SYN(m) 클라이언트가 확인 Client -> Server: SYN(m+1) 4way handshake 클라이언트가 서버에게 연결 해제를 통보 서버가 클라이언트에게 해제했음을 통보 클라이언트는 확인 혹시 추가로 올 패킷에 대비해 일정 시간 대기 UDP 데이터를 데이터그램 단위로 전송하고..
-
교착 상태와 기아 상태CS 2021. 12. 12. 16:51
교착 상태 (Dead lock) 서로 다른 프로세스가 서로 점유하고 있는 자원의 반납을 대기하고 있는 상태 발생 조건 상호 배제 : 한 번에 한 프로세스만 해당 자원을 사용할 수 있어야 한다. 즉, 자원을 사용하는 프로세스에서 자원 점유를 해제 할 때까지 기다려야 한다. 점유 대기 : 할당된 자원을 가진 상태에서 점유를 해제하지 않고 다른 프로세스가 사용하고 있는 자원을 기다린다. 비선점 : 다른 프로세스가 자원의 사용을 끝낼 때 까지 기다려야만 한다. 즉, 뺏을 수 없다. 순환 대기 : 각 프로세스가 순환적으로 다음 프로세스가 필요로 하는 자원을 가지고 있다. 해결 방법 예방: 4가지 조건 모두를 만족되지 않도록 한다. 회피: 알고리즘을 잘 설계하여 데드락을 회피한다. 회복: 교착 상태 발생 시 해결한..
-
뮤텍스와 세마포어 (mutex and semaphore)CS 2021. 12. 5. 18:20
개념 세마포어는 프로세스간 공유된 자원에 대해서 여러 프로세스 또는 쓰레드가 정해진 갯수 이상으로 동시에 접근하는 것을 막는다. 뮤텍스는 쓰레드간 공유된 자원에 대해 여러 프로세스 또는 쓰레드가 동시에 접근하는 것을 막는다. 차이점 세마포어는 정수 값을 갖고 접근할 수 있는 최대 허용치 만큼 동시에 사용자 접근을 허용하지만 뮤텍스는 1,0의 값만 갖고 최대 하나의 접근만 허용한다. 세마포어는 소유할 수 없으므로 작업중이 아닌 다른 프로세스 또는 쓰레드가 세마포어를 해제할 수 있지만 뮤텍스는 락을 획득한 프로세스 또는 쓰레드만이 락을 해제할 수 있다. 세마포어는 파일 형태로 존재하며 시스템 전체에서 공유되지만 뮤텍스는 프로세스 내에서만 공유되며 프로세스 종료 시 자동으로 clear 된다.
-
좀비 프로세스, 고아 프로세스 (zombie process, orphan process)CS 2021. 12. 5. 18:18
좀비 프로세스 자식 프로세스가 부모 프로세스보다 먼저 종료될 때 발생한다. 자식 프로세스가 종료되었는데 부모 프로세스가 이를 인지하지 못해 리소스 낭비가 이루어 질 수 있는 상태이다. 보통 자식 프로세스가 exit 시스템 콜을 사용하여 종료되었음을 알리고 부모 프로세스에서 wait 시스템 콜을 통해 이를 인지하고 리소스를 해제시켜야 한다. 이 때 자식 프로세스에서 exit 한 뒤 부모 프로세스가 wait하기 전인 이 사이에 있는 프로세스는 좀비 프로세스라고 할 수 있다. 고아 프로세스 부모 프로세스가 자식 프로세스보다 먼저 종료될 때 발생한다. 자식 프로세스가 exit 시스템 콜을 할 때 이를 부모 프로세스가 wait 시스템 콜을 이용해서 종료를 수집해야 하는데 이미 종료되었기 때문에 wait 시스템 콜..
-
프로세스와 쓰레드CS 2021. 12. 5. 18:11
Process, thread 간단하게 말하면 process 란 os로부터 자원을 할당받아서 프로그램을 실행하는 단위이고 thread란process내의 실행 단위이다. Process는 code, data, stack, heap 영역을 할당 바고 서로 접근이 불가능하다. 만약 통신을 하기위해서는 ipc를 사용해아 한다. (파이프, 파일, 소켓, …etc) thread는 process로부터 code, data, heap 영역을 공유하고 stack영역만 따로 할당받아서 동작한다. golang에는 goroutine이라고 있는데 이는 thread 보다 훨씬 적은 resource를 사용하여 자원을 더 효율적으로 사용한다. 멀티 process, thread 개념 멀티 process: 하나의 프로그램을 여러개의 proc..