본문 바로가기
728x90

11

13.다양한 입출력 함수들 리눅스 기반에서의 send & recv 함수를 소개하겠습니다. #include ssize_t send(int sockfd,const void * buf, size_t nbytes,int flags); ->성공 시 전송된 바이트 수, 실패 시 -1 반환 sockfd 데이터 전송 대상과의 연결을 의미하는 소켓의 파일 디스크립터 전달. buf 전송할 데이터를 저장하고 있는 버퍼의 주소 값 전달 nbytes 전송할 바이트 수 전달 flags 전송 시 적용할 옵션 정보 전달 #include ssize_t recv(int sockfd, void * buf, size_t nbytes,int flags); ->성공 시 수신한 바이트 수(단 EOF 는 0), 실패 시 -1 반환 sockfd 데이터 수신 대상과의 연결을 .. 2020. 5. 1.
12. I/O Multiplexing 멀티프로세스 서버는 프로세스마다 별도의 메모리 공간을 유지하기 때문에 상호간에 데이터 교환에 복잡한 방법을 택할 수 밖에 없습니다. 즉 IPC가 좀 복잡한 통신 방법인거죠. 이 대안 법이 'IO 멀티플렉싱' 입니다. IO 멀티플렉싱 서버는 프로세스의 생성을 동반하지 않으면서 다수의 클라이언트에게 서비스를 제공할 수 있습니다. 멀티플렉싱의 단어의 이해가 필요 합니다. '하나의 통신 채널을 통해 둘 이상의 데이터(시그널)를 전송하는데 사용되는 기술' 입니다. 시(time)분할 멀티플렉싱 기술 -> 여러명에서 대화를 오고가는 느낌 주파수(frequency) 분할 멀티플렉싱 기술 -> 여러명이 한번에 이야기 하는데 목소리로 구분 하는 느낌 -select 함수의 이해 Select 함수는 멀티플렉싱 서버 구현에 있.. 2020. 4. 28.
11.프로세스 간 통신 (Inter Process Communication) 이번 챕터에서는 두개의 프로세스 상호간에 데이터를 주고받는 방법에 대해 알아보겠다. 이는 서버의 구현에 직접적인 연관은 없지만 운영체제를 이해한다는 측면에서도 의미가 있다. 프로세스간 통신이 가능 -> 데이터 주고 받음 -> 동시에 접근 가능한 메모리 공간 존재해야함 하지만 프로세스는 서로 완전히 별개의 메모리 공간을 지닌다. 따라서 fork 함수 호출을 통해 생성된 자식 프로세스 조차 부모 프로세스와 메모리 공간을 조금도 공유하지 않는다. 그래서 다른 방법을 통해 이루어질 수 있다. 두 프로세스 간의 통신을 위해 파이프라는 것을 생성해야한다. 위 그림처럼 파이프는 프로세스에 속한 것이 아니다. 파이프는 소셋과 마찬가지로 운영체제에 속하는 자원이다->그러므로 fork함수의 복사 대상이 아니다. 이렇게 운.. 2020. 4. 25.
리버싱핵심원리_2 03 리틀 엔디언 표기법 바이트 오더링(Byte Ordering) : 데이터를 저장하는 방식 -빅 엔디언(Big Endian) 직관적, 대형 UNIX 서버에 사용되는 RISC 계열의 CPU에서 많이 사용. 네트워크 프로토콜에 빅 엔디언이 사용 -리틀 엔디언(Little Endian) 데이터 역순 저장, Intel x86 CPU, 산술연산고 데이터 타입의 확장/축소될때 더 효율적 04 IA-32 Register 기본설명 -CPU 레지스터란? CPU 내부에 존재하는 다목적 저장 공간 CPU가 RAM에 있는 데이트를 액세스(Access)하기 위해서는 시간이 오래 걸림 레지스터는 CPU와 한 몸이기 때문에 고속으로 데이터 처리 가능 IA-32의 레지스터 Basic program execution register.. 2020. 4. 18.
728x90