본문 바로가기

네트워크, 서버12

(멀티쓰레딩) 동시성과 병렬화 동시성과 병렬성의 의미 동시성 : 하나의 작업 주체가 여러 작업을 빠르게 바꿔가며 마치 동시에 진행하는 것처럼 하는것으로 멀티 쓰레딩이라고 보면 된다. 동시에 실행되기 때문에 하나의 공유자원에 접근한다면 레이스컨디션과 같은 임계영역 문제가 발생하기 쉽다. 그렇기에 항상 사용하는 자원에 대해 lock을 걸고 접근해야 하는 규칙이 존재한다. 병렬화 : 여러 작업주체가 자신의 할당량을 수행하여 작업 시간을 단축하는것으로 cpu의 멀티코어에 의한 멀티 프로세싱 이라고 보면 된다. 동시성과 병렬성의 적용 문제 동시성은 CPU Bound 보다 IO Bound에 적용하면 더 좋은데, CPU Bound에서는 컨텍스트 스위치 비용이 더 커질 수 있기 때문이다. 반면 처리속도가 느려 스위칭 횟수가 적은 IO Bound에서.. 2020. 9. 9.
(소켓, 프로토콜)엔디안 변환 CPU의 종류에 따라 메모리에 바이트를 저장하는 순서가 달라진다. Little Endian은 우리가 주로 사용하는 Intel, ARM CPU방식이다. 바이트의 순서를 정할때 큰자리의 비트가 뒤쪽부터 채워지게 된다. 그에 반에 Big Endian은 IBM, 모토로라에서 사용되며 바이트의 순서는 큰자리의 비트가 앞쪽부터 채워진다. 개발자가 상식적으로 생각할때는 당연히 Big Endian이 익숙하고 자연스럽다. 그러면 굳이 왜 Intel과 ARM은 Little Endian을 선택해서 우릴 혼란스럽게 만드는 걸까? Little Endian도 몇가지 장점이 있다. 만약 해당 바이트의 하위 값을 쓰고자 할때는 하위 바이트가 앞에나온 Little Endian이 유리하다. 또한 가산기에서 덧셈을 하는 방식 중 아래 자.. 2020. 9. 8.
(소켓,프로토콜)소켓 프로토콜 프로토콜이란? 네트워크 통신을 위한 상호간의 약속이라고 보면 된다. 소켓프로그래밍에서도 상호간의 전달방식을 규정하는 프로토콜을 정의해야 한다. 소켓을 만드는 함수에서 사용자는 소켓의 프로토콜을 정의할수 있는데 한번 알아보도록 하자. int socket(int domain, int type, int protocol) domain -> 소켓이 사용할 프로토콜 체계정보 type -> 소켓의 데이터 전송 방식 protocol -> 두 컴퓨터 간 통신에 사용되는 프로토콜 정보전달 - 프로토콜 체계(sys/socket.h) PF_INET IPV4 인터넷 프로토콜 PF_INET6 IPV6 인터넷 프로토콜 PF_LOCAL 로컬통신 위한 UNIX 프로토콜 체계 PF_PACKET LowLevel 소켓을 위한 프로토콜 체계.. 2020. 7. 2.
(소켓,프로토콜)Linux와 Windows에서의 소켓 컴퓨터와 컴퓨터끼리의 네트워크 통신을 위해서 여러 과정이 필요하지만 나처럼 SW를 프로그래밍하는 사람에겐 복잡한 과정을 대신 해주는 소켓이라는 아주 고마운 도구가 있다. 이번에는 Linux와 Windows 운영체제에 따른 전반적인 소켓의 특성에 대해 공부한걸 써보고자 한다. 먼저 Linux에서 소켓이란 단순히 파일로 취급된다. 리눅스에서 각 파일에 매겨지는 정수를 파일 디스크립터라고 하는데 위와 같이 0,1,2번은 표준입출력으로 고정되어있다. (표준입력은 키보드로 입력된 파일, 표준출력은 모니터로 출력될 파일을 생각하면 된다.) 그래서 소켓과 같은 파일들은 3번부터 할당되고 사용자는 해당 디스크립터를 통해 원하는 파일을 쉽게 찾는다. (설명링크 https://dev-ahn.tistory.com/96) 소.. 2020. 6. 30.