system-calls

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

Linux의 exec() 시스템 호출
system-calls

Linux의 exec() 시스템 호출

따라서협회, 널 포인터로 인수 목록을 종료해야 합니다. 이는 다음과 같이 표현됩니다. 매개변수 목록은 널 포인터로 끝나야 합니다. 내 질문은 왜 널 포인터로 매개변수 목록을 종료해야 합니까? 매개변수 목록의 끝을 알고 싶기 때문에 사용하십시오. 이것은 char에 대한 포인터 배열입니까? ...

Admin

복합 시스템 호출과 같은 것이 구현되지 않는 이유는 무엇입니까?
system-calls

복합 시스템 호출과 같은 것이 구현되지 않는 이유는 무엇입니까?

Syscall(시스템 호출)은 커널과 사용자 공간 간의 격리로 인해 일부 성능 저하를 초래합니다. 따라서 시스템 호출을 줄이는 것이 좋은 생각인 것 같습니다. 그래서 내 생각은 시스템 호출을 하나로 묶을 수 있다는 것입니다. 그래서 아이디어는 시스템 호출과 매개변수를 메모리의 간단한 데이터 구조에 배치하는 것입니다. 그런 다음 이 데이터 구조를 제공하는 새로운 시스템 호출을 도입할 수 있습니다. 그런 다음 커널은 모든 기능을 병렬로 트리거하고 하나(또는 모든) 시스템 호출이 완료되면 스레드를 재개할 ...

Admin

aarch64의 시스템 호출 성능은 x86-64보다 낮습니다.
system-calls

aarch64의 시스템 호출 성능은 x86-64보다 낮습니다.

64비트 Intel CPU(x86-64)보다 64비트 ARM(aarch64)에서 시스템 호출을 실행하는 데 시간이 더 오래 걸리는 이유를 아는 사람이 있습니까? 아래의 벤치마크 설정을 참조하세요. 64비트 ARM CPU: Ampere Altra Q80-30, 80코어, 3GHz 64비트 Intel CPU: Intel Xeon Gold 5317 CPU, 12코어(24스레드), 주파수는 최대 3GHz로 설정됨 운영 체제: Ubuntu 20.04 LTS, Linux 커널: 5.13.0-41-generi...

Admin

현재 정답
system-calls

현재 정답

아키텍처가 동일하다면 Windows .exe 파일이 Linux 시스템에서 실행될 수 있다는 것은 놀라운 일이 아닙니다(RAM에 올바르게 로드된 경우). 그러나 Linux와 Windows의 시스템 호출은 완전히 다릅니다. 따라서 .exe 파일이 Linux에서 시스템 호출을 호출하면 결과는 우리가 기대하는 것과 다릅니다. Wine이 Windows 시스템 호출을 Linux 시스템 호출로 변환한다고 생각하지만 어떻게 될지는 상상이 되지 않습니다. 어쩌면 시스템 호출은 int, syscall, systente...

Admin

시스템 호출 accept4()가 잘못된 값을 반환합니다.
system-calls

시스템 호출 accept4()가 잘못된 값을 반환합니다.

나는 시스템 호출을 기록할 수 있는 "strace"와 유사한 프로그램을 만들었습니다. 또한 웹 서버를 설치하고 "strace"와 내 프로그램의 시스템 호출을 관찰하고 비교했습니다. 각 프로그램에 대해 웹 서버에 간단한 HTTP GET 요청을 보내 여러 시스템 호출을 생성합니다. 내 프로그램에서: 나는 특정 accept4() 실행에서 반환 값이 (-11)이라는 것을 알았습니다. 이는 (마이너스 11)을 의미합니다! 그러나 accept4()의 (-11) 반환 값은 절대 발생해서는 안 됩니다. ac...

Admin

/tmp/.X11-unix/X1에 대한 시스템 호출 폴링 시간이 너무 깁니다.
system-calls

/tmp/.X11-unix/X1에 대한 시스템 호출 폴링 시간이 너무 깁니다.

응답하는 데 너무 오랜 시간이 걸리는 GUI 프로그램이 있어서 strace -T모든 시스템 호출을 보고하곤 했습니다. 프로그램이 느려지는 이유는 poll시간이 너무 많이 걸리기 때문이라는 것을 알았습니다. 예를 들어 결과에는 strace -T다음이 포함됩니다. poll([{fd=9, events=POLLIN}], 1, -1) = 1 ([{fd=9, revents=POLLIN}]) <5.031644> ...... poll([{fd=9, events=POLLIN}], 1, -1) = 1 ([{...

Admin