프로그래밍 QnA

trymp의 이미지

thread poll 을 이용해서 간단한 웹서버를 구현할 때 질문입니다.


CentOS 에서 8개의 CPU core 를 가지고 웹서버를 구현할 때,

웹서버를 개발하려고 하는데요. 간단한 것임.

1000개 정도의 thread pool 을 만들고 sleep 상태로 만든 다음,

main thread 에서 accept 받아서 소켓을 작업 thread 에 할당하고

깨워서 일을 시키는 방식입니다.

잠재우고 깨우는 것은 mutex 를 가지고 할 생각입니다.

이때 깨워서 일 시킬 때, 접속이 많은 상태라면

깨우더라도 스케쥴러로 부터 time slice 를 늦게 할당 받아

제시간에 작업을 처리 못할까 하는 걱정입니다.

그냥 1 대 1 PC 에서는 많은 접속을 수행해 보았는데요.

실제로 많은 접속이 있는 경우 thread 가 제때 작업을 처리 못해서

timeout 이 나지 않을까 의문입니다.

고수님들의 의견 부탁드립니다.

jwpark0921의 이미지

malloc() 함수 호출 시 호출되는 공간 (커널영역 or 프로세스 영역 or 그외 빈공간)

C 함수에서 malloc()을 호출하게 되면 요구하는 특정 공간만큼의 메모리를 할당하는 것으로 알고 있습니다.
이 때에 할당되는 공간이 사실상 커널 함수에서 사용되는 힙 영역인지, 프로세스 주소 공간 상의 힙 영역인지, 아니면 사용되지 않는 영역인지를 알고 싶습니다.
다시 말씀드리면 malloc() 수행 시 실제적으로 kmalloc()을 호출하는 것인지, vmalloc()을 호출하는지에 대하여 궁금합니다.

AppleInc의 이미지

문자상수열 및 define문을 통한 디버그 출력시

질문드립니다.

아래와 같이 디파인을 한 다음

//========================================================================
#if (HOST_CHIPSET_CONFIG == HOST_CHIPSET_X86)
#define LOGPRINT(format,args...) \
do { \
printf("[%s:%d][%s]" format, __FILE__, __LINE__,__FUNCTION__ , ## args);\
} while(0)
#else
//do nothing.
#endif
//========================================================================

#if 조건절에 부합하지 않을때
하기와 같이 사용하게 될 경우 아래 구문의 문자열상수가 메모리에 잡히는지요?

djen10의 이미지

파일입출력 ㅠㅠ

#include
#include

void Fileoutput();
void Fileread();
void Showresult();

int main()
{
Fileoutput();
Fileread();
Showresult();

return 0;
}

void Fileoutput()
{
FILE * fp=fopen("text.txt", "rt");
char read[20];

if(fp==NULL)
puts("파일오픈 실패!");
while(feof(fp))
{
while(fgets(read, sizeof(read), fp)!=NULL)
{
fgets(read,sizeof(read),fp);
printf("%s\n", read);
}
}

qkrwncks593의 이미지

입력버퍼의 위치는 어디죠?

제목대로 입력버퍼가 실제 어디에 위치하는지 궁금합니다.

문자열을 입력받는함수로 문자열을 입력하면 입력버퍼에서 할당된버퍼로 이동하는데

입력버퍼는 어떤영역에 위치하나요?

CPU 내부의 저장공간에 위치하는지 ... 아니면 메모리상에 위치하는지

만약에 메모리상에 위치하면 주소값이 있으니 접근이 가능한가요?

리눅스에서의 입력버퍼의 위치가 궁금합니다.

spicka7의 이미지

Makefile 에러ㅠㅠ영문을 모르겠어요

일단 putty로 했구요
소스 코드인 num1~5.c문제 없습니다. 비쥬얼로 다 돌려봤고 실행도 완벽하게되고,
putty안에서도 따로 ./num1 이렇게 실행하면 멀쩡해요

그런데 Makefile 만들어 make all 후 make run1 이런식으로 하나씩실행해보면 결과도 잘 출력되는데 항상 마지막줄에

make: *** [run2] 오류 31
make: *** [run2] 오류 10
make: *** [run2] 오류 190

이런 에러들이 하나씩 붙어요 이유가 뭔가요??ㅠㅠㅠ

Makefile 코드입니다

hunjaege의 이미지

ASP.NET 웹서버로(IIS) 게시를 하면 dllimport 오류가 납니다.

제 컴퓨터에서는 아주 잘 돌아가는데,
ASP.NET 웹서버로(IIS) 게시를 하면 dllimport 오류가 납니다.

the server responded with a status of 500 (Internal Server Error)
Sorry, an error occurred while processing your request.

코드는 이렇구요

mandugukbap의 이미지

Socket API read() hooking해서 읽은 데이터를 수정 했을 때

socket API의 read()를 후킹해서 대략 아래처럼 처리 하였습니다.

원래의 read(3)를 orginal_read(3)로 포인터 변경하였고, read(3)을 아래처럼 새로 썼습니다.

ssize_t read(int fd, char* buf, ssize_t count)
{
    ssize_t cnt1 = original_read(fd, buf, count);
 
    // 아래의 change_buf 함수는 buf에 저장된 데이터를 cnt2 크기로 줄입니다.
    ssize_t cnt2 = compress_buf(buf, cnt1);
 
    return cnt2;
}

프로그램 하나를 테스트 했는데, original_read()가 120바이트를 읽어서 compress_buf()로 압축한 100바이트를 반환 했더니, 중간에 계속 블로킹된 상태로 멈추어 버리더군요.

페이지

프로그래밍 QnA 구독하기