프로그래밍 QnA

trymp의 이미지

kernel crash dump 시에 secod 커널 로딩에 관한 문의입니다.


kernel 에서 panic 발생시 kdump 로 메모리 상태를 dump 하는것으로 아는데요

이때 panic 이 발생하면 원래 커널이 아니라 dump용 커널이 로딩된다고 들었습니다.(crashkernel=auto)

그럼 이 커널은 별도의 다른 커널 이미지 파일이 있는건가요?

아니면 원래 커널 이미지와 동일한 이미지로 예약된 메모리영역에 로딩이 되는건가요?

커널 이미지 파일이 두개인지? 아니면 하나인데 다른 메모리 공간인지 햇갈려서 질문드립니다.

neo2014의 이미지

리눅스 커널 스케쥴링에서 정책과 선점/비선점의 관계에 대해 문의드립니다.

리눅스 커널 공부하다가 헷갈리는게 있어서 문의드립니다.
스케쥴링 정책으로 SCHED_OTHER가 일반 프로세스의 스케쥴링정책이고 리얼타임으로 하고 싶으면 SCHED_FIFO로 설정을 하면 된다고 알고있었는데요

다음과 같은 내용을 보고 혼란이 생기고 있습니다.
"리눅스 커널은 선점형 기능을 제공하고 있으며 프로세스가 동작중에 인터럽트가 발생하면 해당 인터럽트핸들러가 수행된 이후에 선점스케쥴링이 수행된다." 라는 말을 책에서 봤는데요.
저는 선점 스케쥴링이 SCHED_FIFO로 설정한 프로세스일 경우에만 선점되는걸로 이해를 하고 있었는데 그게 아닌가요?

스케쥴링 정책(SCHED_OTHER이든 SCHED_FIFO)이 무엇이든 상관없이 인터럽트 수행 후 선점스케쥴링이 동작하는것인지요?

kkb의 이미지

clock_gettime 못읽어오는 경우.

	clock_gettime(CLOCK_REALTIME, &tp);

이와 같이 특정 이벤트 발생시 현재 시간을 가져와서 저장하려는데
불특정하게 아주아주 가끔씩 1970년 1월 1일로 가져오는 경우가 생깁니다.

어떤 경우에 실패하는 경우가 있을까요?

에러 리턴을 따로 처리하고 있지는 않지만
man page 에러 리턴값에는 EFAULT, EINVAL, EPERM 등으로 위의 경우에는 모두 해당되지 않을 것 같아서요.

hwyuji0424의 이미지

[Json -c] json_tokener_parse 로 만든 object가 free가 안됩니다.

안녕하세요.
c 언어로 json 파싱 프로그램을 만들고 있습니다.
아래와 같이 간단한 소스를 만들어 테스트 해봤는데, 메모리 프리가 안되는 현상이 발생했습니다.

garnete의 이미지

void * 사용 방법

안녕하세요

typedef	struct
{
  char name[2];
  ...      
}st_A;
 
typedef	struct
{
  char name[3];
  ...
}st_B;

소켓으로 받은 데이터가 경우에 따라 A, B의 구조로 되어 있습니다.
내부 변수명은 동일하기 때문에 void* 변수로 받아 사용을 하려고 하는데 오류가 발생 합니다.
방법이 없을까요?

jwkim0911의 이미지

CRT detected that the application wrote to memory after end of heap buffer 오류 해결

해당 코드를 실행하게 되면 중단점 명령 실행됨이라는 오류가 발생하게 됩니다. 이것이 정확히 무엇을 의미하고 어떠한 방식으로 해결할 수 있는지 궁금합니다. 또한 CRT detected that the application wrote to memory after end of heap buffer 라는 오류 화면 또한 볼 수 있었습니다.

trymp의 이미지

리눅스커널에서 메모리 영역을 판별하는 함수가 있을까요?


리눅스 커널에서 주소 어드레스값(유저메모리주소 아님)을 가지고

heap 영역인지, stack 영역인지, Text 영역인지

간단하게 판별하는 함수가 있을까요?

커널에서 그런 API 가 있는지 궁금합니다.

waka@Google의 이미지

C++이나 C#에서 RAM내부의데이터를 다른위치로 옮기는 효율적인 방법이 있을까요?

RAM에 올라와있는 데이터중 대략 1~3GB정도의 데이터를 RAM의 다른 위치로 옮기는 작업을 하려고 합니다.
(여러번 반복해서 수행합니다)

Parallel.For문 안에서 Buffer.MemoryCopy함수를 이용해서 옮겨보니, CPU점유율도 너무 많이 사용하고, 시간도 오래걸리네요

지금 프로그램에서 다른 연산을 수행하느라 이미 점유율을 8~90%정도 사용하고있어서 리소스를 대기하느라

오래걸리는 것 같기도 합니다.

DMA같은 방식도 찾아보았는데, 이건 주변장치와 통신할때만 가능한 것으로 보이네요.

혹시 CPU점유율을 최소화 하거나, 빠른 속도로 RAM내부의 데이터를 다른 위치로 옮기는 방법을 아시는분이 있으실까요??

페이지

프로그래밍 QnA 구독하기