CS (30) 썸네일형 리스트형 [직렬화 버퍼] string 다루기 직렬화 버퍼에서 가장 많이 사용하는 데이터 유형 중 하나가 문자열입니다.오늘은 string을 >를 오버로딩을 통해 사용하는 방법에 대해 알아보겠습니다. 기본적으로 직렬화 버퍼의 >를 오버로딩 할 때 가장 중요한 점은, 짝을 맞추는 것이라고 생각합니다.넣는 방법과 동일하게 빼야 합니다.string에서 필요한 정보는 기본적으로 문자열 데이터 그 자체와, 그 문자열의 크기입니다.크기를 알아야 이어지는 문자열을 직렬화 버퍼에서 정확하게 빼올 수 있습니다.string과 wstringstring은 한글자를 1byte wstring은 wide_char를 사용하기 때문에 글자당 2byte를 먹습니다.https://basaeng.tistory.com/31 [뇌를 자극하는 윈도우즈 시스템 프로그래밍] 2장. 아스키코드 .. [CS] 프로세스 메모리 구조 개요이번에는 간단하게 프로세스 메모리 구조에 대해 알아보겠습니다. 프로세스 메모리 구조는 하나의 프로세스의 메모리가 가지는 공간의 구성을 보여줍니다.프로세스의 메모리 여기서 말하는 프로세스의 메모리란 프로그램을 시작했을 때 할당되는 가상메모리를 의미합니다.x86이라면 4GB(유저영역 2GB) , x64라면 256TB(128TB)입니다. 물론 실제 사용하는 공간만 매핑됩니다. Windows x86 Process Virtual Memory Layout(개념도, 실제 배치는 ASLR/로더/할당 상태에 따라 달라짐)높은 주소0xFFFFFFFF +--------------------------------------+ | Kernel Space |0.. [1일 1CS] OSI 7계층 개요OSI 7계층은 네트워크 모델 중 가장 일반적이며 개념적으로 설명하는 개념입니다. 오늘은 간단하게 해당 개념에 대해 복습하고자 합니다.7계층네트워크의 전송을 7가지의 계층을 나눠 설명합니다.1. Physical Layer2. Datalink Layer3. Network Layer4. Transport Layer5. Session Layer6. Presentation Layer7. Application Layer하나하나 간단하게 보겠습니다.1. Physical Layer(물리 계층)네트워크 상의 물리적인 통신을 담당하는 계층입니다.가정 내의 랜선이 물리 계층에 대표적인 예시라고 할 수 있습니다. 전기신호 자체를 담당합니다.2. Datalink Layer(데이터링크 계층)데이터링크 계층은 기기하나를 식별.. 왜 유저모드 동기화를 쓰라고 함? 개요멀티스레드 프로그래밍을 공부하다보면 나오는 말이 있습니다."커널모드 동기화 객체(Mutex 등)는 비용이 크기 때문에 유저모드 동기화 객체를 사용하자" 라는 것입니다. 실제로 측정해보면 커널 동기화 객체인 Mutex와 유저 동기화 객체인 CriticalSection은 거의 10배 가까운 속도의 차이를 보입니다. (아래 포스팅의 예시 기준)https://basaeng.tistory.com/86 [서버 이것저것] 로직 성능 측정해보기개요코드(로직)의 성능을 측정하는 것이 개발에서 중요하다는 것은 개발을 배우는 모든 사람이 알고있습니다.다만 성능을 어떻게 측정하지? 또는 시간은 측정할 수 있는데 그 다음에는 어떻게basaeng.tistory.com 왜 CriticalSection과 Mutex는 이렇게 큰 .. Windows 스레드 스케줄링 간단하게 알아보기 개요프로그래머가 자신의 프로그램이 동작하는 운영체제의 스케줄링 방식을 알고있다면 버그, 성능 등에 대해 더욱 논리적인 판단이 가능할 것입니다.특히 멀티스레드 프로그램을 만든다면 스레드 간 스케줄링 방식을 이해함으로서 스레드 간 경합, 기아현상 등에 대해서 이해가 쉬워집니다. 또한 싱글스레드 프로그램이더라도 Windows에서는 시스템 스레드, I/O 처리, 메시지 큐 등 운영체제에 의해 실행 흐름이 간접적으로 영향을 받기 때문에, 스레드 스케줄링에 대한 이해는 안정성과 응답성을 확보하는 데 중요합니다.스케줄러스케줄링은 wait상태에 있는 thread 중 다음에 실행될 thread를 고르는 것이고 이를 행하는 것이 스케줄러(short-term)입니다.Windows의 스케줄링은 priority(우선순위) + .. Overlapped I/O 알아보기 - 2 개요https://basaeng.tistory.com/93 Overlapped I/O 알아보기 - 1개요오늘은 고성능 서버에서 사용하는 Overlapped IO에 대해서 알아보겠습니다.Overlapped IO는 말그대로 입출력을 중첩하는 방식입니다. 자세히 알아보기 전에 먼저 쉬운 이해를 위해 blocking, non-blockinbasaeng.tistory.com저번 포스팅에 이어 Overlapped I/O 특히 Completion Port 모델에 대해 알아보겠습니다. Completion Port는 Windows 운영체제에만 존재하는 기능입니다.https://learn.microsoft.com/ko-kr/windows/win32/fileio/i-o-completion-ports I/O 완료 포트 - W.. Overlapped I/O 알아보기 - 1 개요오늘은 고성능 서버에서 사용하는 Overlapped IO에 대해서 알아보겠습니다.Overlapped IO는 말그대로 입출력을 중첩하는 방식입니다. 자세히 알아보기 전에 먼저 쉬운 이해를 위해 blocking, non-blocking IO과 동기, 비동기 IO를 생각해보겠습니다. blocking IOblocking IO는 입출력 요청 시 해당 입출력이 전부 완료될 때까지 해당 스레드가 wait상태에서 대기하고, IO가 완료된다면 그 때 함수가 return되어 이후 로직이 실행되는 방식입니다. non-blocking IOnon-blocking은 입출력의 완료 여부와 상관없이, 함수가 return합니다. 따라서 해당 thread는 blocking과 다르게 바로 wait상태가 되지 않습니다. 만약 실패한다면.. [네트워크 개념 복습] L7에서의 버퍼(링버퍼) 개요 https://basaeng.tistory.com/81 [네트워크 개념 복습] 소켓 알아보기개요소켓은 L4계층의 데이터를 윗계층과 주고받을 수 있는 통로와 같습니다. L5부터는 커널이 아닌 유저모드의 영역이므로 이를 연결한다고도 볼 수 있습니다.https://basaeng.tistory.com/80 [네트워크basaeng.tistory.com이전에 알아보았듯이 L4와 애플리케이션 단이 소통하기 위해 사용하는 소켓은 L7에서 L4로 데이터를 전달할 때는 L4의 송신버퍼로 전달하고, L4에서 L7으로 데이터를 전달할 때는 L4의 수신버퍼에서 L7으로 데이터를 전달한다. 이 때 L7에서 일어날 수 있는 일에 대해 생각해보자. L7에서의 L4로의 데이터 송신 시 상황기본적으로 논블로킹 소켓을 사용해 통신한.. 이전 1 2 3 4 다음