system-calls

mmap()은 모든 페이지 오류 후에 페이지 테이블을 업데이트합니까?
system-calls

mmap()은 모든 페이지 오류 후에 페이지 테이블을 업데이트합니까?

mmap()에 대한 연구를 통해 mmap은 페이지 오류로 인해 가상 메모리 주소에 도달한 경우에만 요청 페이징을 사용하여 데이터를 커널 페이지 캐시에 복사한다는 것을 알고 있습니다. 페이지 캐시보다 큰 파일을 읽는 경우 페이지 캐시의 일부 오래된 페이지를 재활용을 위해 교체 해야 합니다 . 그래서 제 질문은 페이지 테이블이 업데이트되어 해당 가상 메모리 주소를 캐시의 오래된 오래된 페이지(이제 새 데이터가 포함되어 있음) 주소에 매핑됩니까?입니다. 어떻게 이런일이 일어 났습니까? 이것이 mmap() ...

Admin

getdents() 시스템 호출이 컨테이너 내에서 다른 결과를 반환하는 것 같습니다.
system-calls

getdents() 시스템 호출이 컨테이너 내에서 다른 결과를 반환하는 것 같습니다.

파일 형식을 읽으려고 합니다 /dev/null. 사용하면 stat()문자장치라고 정확하게 보고됩니다. 을 사용하면 getdents()문자 장치라고 보고됩니다. 컨테이너에서 실행하지 않는 한 일반 파일이라고 표시됩니다! 컨테이너에서 실행하면 왜 다른 결과가 나오나요? 이 이미지를 사용하여 최신 버전의 docker 및 podman에서 테스트한 결과는 동일했습니다 ubuntu:22.04. 복사할 코드는 다음과 같습니다. 이 코드는 stat()항상 작동하지만 getdents컨테이너 내에서 실행될 때 어설션이...

Admin

커널에서 사용자 공간 스레드를 "깨우는" 방법은 무엇입니까?
system-calls

커널에서 사용자 공간 스레드를 "깨우는" 방법은 무엇입니까?

데이터를 수신하는 커널 장치 드라이버와 데이터를 기다리는 사용자 공간 스레드가 있다고 가정합니다. 사용자 공간 스레드를 차단하고 커널 드라이버가 데이터를 처리하고 적절한 버퍼에 넣은 후 깨어나도록 하여 주기 낭비를 피하고 싶을 것입니다. 이를 수행하는 적절한 방법은 무엇입니까? 신호 사용에 대한 복잡한 아이디어에 대해 읽었습니다. ...

Admin

Linux 시스템 호출: sendfile에 비해 copy_file_range의 장점은 무엇입니까?
system-calls

Linux 시스템 호출: sendfile에 비해 copy_file_range의 장점은 무엇입니까?

내가 이해한 바로는 Linux 커널은 전통적으로 새로운 시스템 호출을 추가하는 데 보수적이었습니다. 그러나 존재를 조사해 보니 copy_file_range똑같은 일을 하는 것 같습니다 sendfile. 내가 찾을 수 있는 유일한 차이점은 다음과 같습니다. 소켓에서는 전혀 작동하지 않으며 올바른 일반 파일에서만 작동합니다. 입력 및 출력 오프셋 설정 가능 그러나 일반 파일의 경우 a는 seek동일한 오프셋 의미 체계를 구현할 수 있으므로 copy_file_range시스템 호출의 기능이 기존 시스템 ...

Admin

1GB보다 훨씬 작은 크기(예: 64MB)에 SHM_HUGE_1GB 사용이 미치는 영향
system-calls

1GB보다 훨씬 작은 크기(예: 64MB)에 SHM_HUGE_1GB 사용이 미치는 영향

저는 Linux에서 공유 메모리를 실제로 사용하는(그리고 이해하지 못하는) 것에 비교적 익숙하지 않습니다. 저는 현재 공유 64MB 메모리의 연속 블록을 할당해야 하는 상황을 다루고 있습니다. 공유 메모리를 올바르게 사용하는 방법을 배우는 동안 나는 몇 가지 거대한 TLB 옵션을 우연히 발견 했습니다 shmget.SHM_HUGE_2MBSHM_HUGE_1GBhttps://man7.org/linux/man-pages/man2/shmget.2.html). 이제 나는 거대한 TLB가 대규모 연속 메모리에 매...

Admin

동기식 시스템 호출 및 중단 없는 절전 모드
system-calls

동기식 시스템 호출 및 중단 없는 절전 모드

내 애플리케이션이 중단 없이 절전 모드로 전환됩니다. 프로세스가 중단되었습니다 linkat. ❯ sudo cat /proc/1308028/syscall 265 0xffffffffffffff9c 0x7fbd9f32a120 0xffffffffffffff9c 0x7fbd9f395930 0x400 0x7fbd9f3c1c70 0x7ffff745b7c0 0x7fbda231b1fd ❯ sudo cat /proc/1308028/stack [<0>] cv_wait_common+0xaa/0x130 [spl...

Admin

stat(2) 쓰기 후 읽기는 write(2)와 일치합니까?
system-calls

stat(2) 쓰기 후 읽기는 write(2)와 일치합니까?

man 2 write상태: POSIX에서는 write() 반환 후에 발생하는 read(2)가 새 데이터를 반환한다는 것을 입증할 수 있어야 합니다. 모든 파일 시스템이 POSIX와 호환되는 것은 아닙니다. stat(2)Linux에서 이는 및 fstat(2)특히 회원에게도 적용됩니까 stat.st_size? 특히, stat 또는 fstat를 사용하여 파일을 열고 해당 파일에 948427바이트를 성공적으로 쓰면 948427바이트가 O_CREAT표시됩니까 ? (그렇다면 이는 POSIX 파일 시스템의...

Admin

EINTR을 유발하는 신호는 어디에서 오는가?
system-calls

EINTR을 유발하는 신호는 어디에서 오는가?

나는 이것이 EINTR소위 인터럽트 가능한 시스템 호출에 의해 반환될 수 있는 오류라는 것을 알고 있습니다. 내 질문은 EINTR을 유발하는 신호가 어디에서 오는가입니다. Python으로 작업할 때 종종 이 문제에 직면합니다 fnctl. ctrl+ 와 같은 인터럽트 명령을 실행하지 않았습니다 c. ...

Admin

이상한 EACCES(권한 반환) 권한 오류 디버깅
system-calls

이상한 EACCES(권한 반환) 권한 오류 디버깅

ac 프로그램에서는 읽을 수 없지만 누구나 읽을 수 있는 파일에 대한 심볼릭 링크가 있습니다. 구성을 자동으로 redshift가져와야 $HOME/.config/redshift/redsihft.conf하지만 그렇지 않습니다. 어떤 파일이 시도되고 있는지 확인하기 위해 시스템 호출을 추적해 보았습니다. debian-x1-7th][redshift-1.12][130]$ strace -fe trace=file redshift execve("/usr/bin/redshift", ["redshif...

Admin

매뉴얼 페이지, 시스템 호출 및 libc
system-calls

매뉴얼 페이지, 시스템 호출 및 libc

epoll_create라이브러리 함수(맨 페이지, 섹션 3)로 나열되지 않았지만 accept라이브러리 함수로 나열되는 이유는 무엇입니까 ? 두 기능 모두 커널 시스템 호출에 의해 제공되고 libc둘 다 커널 시스템 호출을 참조하지만? 나는 "왜"라는 질문이 일반적으로 인기가 없는지 알고 있지만, 이것은 이러한 개념과 섹션 2 및/또는 3에 무언가를 추가하는 표준 사이, 그리고 libc 관계 방식 사이의 관계를 더 잘 이해하기 위한 나의 요청입니다. 및 시스템 호출(모든 libc는 C 프로그램용 인터페...

Admin

이유: 오류: 'sys_close' 함수의 암시적 선언?
system-calls

이유: 오류: 'sys_close' 함수의 암시적 선언?

Debian 12에 최신 NVIDIA 드라이버를 설치하려고 합니다. 프로세스의 일부에는 일부 커널 모듈이 포함됩니다. 대부분은 오류 없이 컴파일되지만 마지막에 실패합니다(그게 무슨 뜻인지는 약 96%). 로그에는 이 오류가 여러 번 표시됩니다. 그 내용은 다음과 같습니다 nv-caps.c. CC [M] /tmp/selfgz170986/NVIDIA-Linux-x86_64-525.125.06/kernel/nvidia/nv-caps.o /tmp/selfgz170986/NVIDIA-Linux...

Admin

어셈블리의 터미널 시스템 호출
system-calls

어셈블리의 터미널 시스템 호출

저는 Linux용 체스 엔진을 작성하고 싶습니다. C/C++ 또는 기타 고급 언어 외부 라이브러리 없이 순수 X64 어셈블리 언어로 작성됩니다. 전체 화면 텍스트/콘솔/터미널 모드에서 실행됩니다. 그래픽 사용자 인터페이스가 없습니다. 유니코드 문자를 사용하여 조각을 표시합니다. Windows 콘솔 API에서 구현하는 방법을 알고 있습니다. 터미널에 직접 액세스하고 글꼴을 유니코드 인식 글꼴로 변경하는 것과 관련된 Linux 커널 시스템 호출은 무엇입니까? 나는 분명히 그것을 조사했지만 주로 32비트에...

Admin

Linux: 시스템 호출을 실행할 때 사용자 영역 스레드의 우선순위가 더 높습니까?
system-calls

Linux: 시스템 호출을 실행할 때 사용자 영역 스레드의 우선순위가 더 높습니까?

내가 이해한 바에 따르면 Linux에는 커널 선점 기능이 있습니다. 즉, 시스템 호출을 실행하는 스레드를 선점하고 다음 에포크에서 실행되도록 일정을 조정할 수 있습니다. 이로 인해 일정을 다시 잡을 때 시스템 호출의 스레드에 우선 순위가 높아지는지 궁금합니다. 예를 들어, SCHED_OTHER가 있고 우선 순위가 20인 사용자 모드 프로세스가 있다고 가정해 보겠습니다(0은 가장 낮음, 139는 가장 높음). 이 프로세스는 표준 읽기 시스템 호출을 사용하여 sysfs에서 i2c eeprom 파일을 읽습...

Admin

Linux의 병렬성과 I/O
system-calls

Linux의 병렬성과 I/O

저는 Linux 커널이 I/O 작업 중에 병렬 처리를 어떻게 처리하는지(병렬 처리가 가능한 경우)에 대해 약간 혼란스럽습니다. 파일 설명자에서 동시에 작동할 수 있다고 가정하지만 파일, 네트워크 소켓 등을 읽을 때 병렬성을 달성합니까? 아니면 백그라운드 일시 중지/재개 작업(비동기)인가요? 이 시나리오에서는 어떤 일이 발생합니까? 여러 스레드가 동일한 파일을 읽습니다. 서로 다른 파일을 읽는 다중 스레드 파일 및 네트워크 소켓의 멀티스레드 읽기 ...

Admin