, 나는 위해 'process.c에서 커널 소스가 더 엔트로피, 즉 특정 라인에가있는 스택 주소를 만들 수정 (그냥 재미를위한) 시도했다 :스택을 페이지 정렬해야하는 이유는 무엇입니까? 리눅스에서
sp -= get_random_int() % 8192;
나도이 변경 많이, 커널이 멈추거나 겉으로보기에는 정의되지 않은 동작을합니다. 나는 이것이 PAGE_ALIGN()이 어떤 식 으로든 실패하게 만들 것이라고 추측하고있다. 나는 PAGE_ALIGN()이 특히 실패하거나, 커널의 어떤 코드가 실패했는지에 관심이 없다. (알기는 너무 좋지만). 스택이 특정 영역에 있어야하는 이유에 대해 더 관심이 많습니다. 이것의 뒤에 건축 이유 그리고 동기 부여는 무엇인가? 이것은 GDT/LDT가 보호 모드에서 작동하는 방식과 관련이 있습니까?
그냥 내가 부탁 해요 무엇인지 명확하게하기 :왜 스택 형식 (32 비트)에 0xbfXXXXXX을해야합니까? 스택이 왜 예일 수 없습니까? 0xaaXXXXXX 또는 다른 값?
x86 8K는 * kernel * stack의 기본 크기입니다. 코드 OP는 * user * stack에 영향을 미치며 크기는 고정되어 있지 않습니다. –