리눅스의 아버지는 마침내 설득당했다: 30년 된 리눅스 커널 C 언어가 C11로 업그레이드될 것이다
최근에 사용하던 C언어 리눅스 커널의 1989년 버전이 드디어 대대적인 업그레이드를 했다는 소식이 있습니다. 현대 기술의 속도는 멈출 수 없습니다. 오늘날 Linux 오픈 소스 커뮤니티는 커널의 C 언어 버전을 C11 표준으로 업그레이드하려는 강력한 계획을 발표했습니다. 이번 대대적인 개편은 오는 5월인 리눅스 버전 5.18 이후부터 적용될 것으로 예상된다. 이 중요한 움직임은 Linux 커널에 무한한 잠재적 기회를 제공하고 최신 기술의 요구 사항에 더 잘 적응하는 데 도움이 될 것입니다.
이 결정은 질문을 시작한 후 공식 성명을 발표하는 데 불과 일주일이 걸렸습니다. Linux의 완고한 아버지 인 Linus Torvalds를 설득하는 것은 쉽지 않습니다. 문제의 이유는 약간 우연한 것 같습니다.
이 문제는 지난주 Linux 커뮤니티 토론에서 발생했습니다.
Jakob Koschel이라는 박사과정 학생이 커널 연결 목록 프리미티브와 관련된 추측 실행 취약점을 방지하는 방법을 연구하던 중 이러한 문제를 발견했습니다.
Linux 커널은 struct list_head에 의해 정의된 이중 연결 목록을 광범위하게 사용합니다.: 으아악 이 구조는 종종 다른 구조에 포함됩니다. 이러한 방식으로 관련 구조 유형을 사용하여 연결된 목록을 만들 수 있습니다.
또한 커널은 연결된 목록을 탐색하고 조작하는 데 사용할 수 있는 수많은 함수와 매크로도 제공합니다. list_for_each_entry()는 그 중 하나이며 제어 구조로 위장한 매크로입니다. 문제는 이 매크로에 있습니다. 커널에 다음 구조가 포함되어 있다고 가정합니다.
으아악list의 요소는 foo 구조의 이중 연결 목록을 만드는 데 사용할 수 있습니다. 이러한 연결 목록의 선두로 선언된 foo_list라는 구조가 있다고 가정해 보겠습니다. 이 연결 목록은 다음 코드를 사용하여 탐색할 수 있습니다. 으아악
list 인수는 foo 구조 내의 list_head 구조 이름을 매크로에 알려줍니다. 이 루프는 목록의 각 요소에 대해 한 번 실행되며 반복자는 해당 요소를 가리킵니다. 이로 인해 USB 하위 시스템에 버그가 발생했습니다. 매크로에 전달된 반복자는 매크로를 종료한 후에도 계속 사용할 수 있습니다.이것은 위험한 것이므로 Koschel은 루프 후 반복자 사용을 중지하여 버그를 수정한 수정 사항을 제출했습니다.
리누스를 설득하세요

그러나 Linus Torvalds 자신은 이 패치를 별로 좋아하지 않으며 투기 실행 취약점과의 관계를 보지 않습니다. Koschel이 이에 대해 자세히 설명한 후 Linus는 이것이 단지 일반적인 버그일 뿐임을 인정했습니다.
그러나 상황은 그리 간단하지 않았고 Linus는 곧 실제 근본 원인을 깨달았습니다. 링크된 목록 순회 매크로에 전달된 반복자는 루프 자체 외부의 범위에서 선언되어야 합니다. 이 예측할 수 없는 버그는 C89에 "루프에 변수 선언"이 없기 때문에 발생합니다.list_for_each_entry()와 같은 매크로는 루프 자체에서 반복자 변수를 선언할 수 없기 때문에 본질적으로 항상 루프 외부의 마지막 HEAD 항목을 누출합니다.
자신을 선언할 수 있는 반복자 목록 순회 매크로를 작성할 수 있다면 반복자는 루프 외부에 표시되지 않으며 그러한 문제도 발생하지 않습니다. 그러나 커널은 C89 표준을 따르기 때문에 루프 내에서 변수를 선언할 수 없습니다.
Linus는 업그레이드하기로 결정했습니다. 아마도 C99 표준으로 전환해야 할 때일 것입니다. 20년이 넘었지만 적어도 C89보다 최신 버전이며 루프 내에서 변수를 선언할 수 있습니다.
C89는 너무 오래됐는데 왜 그렇게 오랜 세월이 지나도 변하지 않았나요? Linus는 일부 고대 gcc 컴파일러 버전에서 이상한 문제가 발생하여 쉽게 업그레이드할 수 없었기 때문이라고 말했습니다.
그러나 이제 Linux 커널은 gcc에 대한 최소 요구 사항을 버전 5.1로 높였으므로 과거의 이상한 버그는 사라져야 합니다.

결국 Torvalds는 "알겠습니다. 5.18 병합 창 초기에 시도해 보겠습니다."라는 아이디어를 내놓았습니다. C11로 이동하면 예상치 못한 버그가 발생할 수 있지만 모든 것이 순조롭게 진행된다면 다음 Linux는 커널 버전은 공식적으로 C11로 이동됩니다.
위 내용은 리눅스의 아버지는 마침내 설득당했다: 30년 된 리눅스 커널 C 언어가 C11로 업그레이드될 것이다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Linux의 시작 프로세스에는 다음이 포함됩니다. 1. 시작 Bios/UEFI, 2.로드 그럽, 3.로드 커널 및 initrd, 4. Init Enit Process, 5. 시스템 서비스 시작, 6. 로그인 관리자 시작; Windows의 시작 프로세스에는 다음이 포함됩니다. 1. 시작 Bios/UEFI, 2. Load WindowsBootmanager, 3. Load Winload.exe, 4. Load Tonskrnl.exe 및 Hal, 5. 시스템 서비스 시작, 6. 로그인 화면 시작; Linux는 더 많은 사용자 정의 옵션을 제공하는 반면 Windows는 사용자 경험과 안정성에 더 많은주의를 기울입니다.

이 안내서는 SystemD를 사용하여 Linux에서 자동 서비스 재시작을 구성하고 시스템 안정성 향상 및 다운 타임을 최소화하는 방법에 대해 자세히 설명합니다. 시스템 관리자는 종종 웹 서버 (APA와 같은 중요한 서비스를 보장하기 위해이 기능에 의존합니다)

Linux 사용자로서, 우리는 종종 일반적으로 사용되는 명령 LS, Grep, Awk, Sed 및 작업을 완료하는 데 의존합니다. 그러나 Linux에는 시간을 절약하고 작업을 자동화하며 워크 플로우를 단순화 할 수있는 많은 덜 알려진 명령이 있습니다. 이 기사는 더 많은 관심을받을만한 과소 평가되었지만 강력한 Linux 명령을 살펴볼 것입니다. 이름 바꾸기 - 효율적인 배치 파일의 이름을 바꿉니다 이름 바꾸기 명령은 한 번에 여러 파일의 이름을 바꿔야 할 때 구세주입니다. MV가 포함 된 루프를 사용하지 않고 이름 변경을 사용하면 복잡한 이름 변경 패턴을 쉽게 적용 할 수 있습니다. 모든 .txt 파일을 .log로 변경하십시오. 이름 바꾸기 's/\. txt $/\. log/' *

Linux 시스템은 다양한 시스템 서비스 (예 : 프로세스 관리, 로그인, Syslog, Cron 등) 및 네트워크 서비스 (예 : 원격 로그인, 이메일, 프린터, 웹 호스팅, 데이터 저장, 파일 전송, 도메인 이름 해상도 (DHCP 사용) 등)을 제공합니다. 기술적으로 서비스는 백그라운드에서 지속적으로 실행되는 프로세스 또는 프로세스 그룹 (일반적으로 데몬이라고 함)으로 들어오는 요청 (특히 클라이언트)을 기다립니다. Linux는 일반적으로 프로세스 또는 서비스 관리자를 통해 서비스를 관리하는 다양한 방법 (시작, 중지, 다시 시작, 시스템 시작에서 자동 시작 가능)을 지원합니다. 거의 모든 최신 Linux 배포판은 이제 동일하게 사용합니다

크로스 오버 25로 Linux에서 Windows 소프트웨어 및 게임 실행 Codeweavers의 Crossover 25 덕분에 Linux에서 Windows 응용 프로그램 및 게임을 실행하는 것이 그 어느 때보 다 쉬워졌습니다. 이 상용 소프트웨어 솔루션은 Linux 사용자가 다양한 바람을 불어 넣을 수 있습니다.
![Pcloud- 가장 안전한 클라우드 스토리지 [50% 할인 제안]](https://img.php.cn/upload/article/001/242/473/174580357418126.jpg?x-oss-process=image/resize,p_40)
Pcloud : Linux 설치에 대한 포괄적 인 안내서로 데이터를 보호하십시오. 보안 클라우드 스토리지 서비스 인 Pcloud는 파일 및 데이터를 관리하기위한 강력한 플랫폼을 제공합니다. 이 안내서는 Linux 시스템의 설치 프로세스를 자세히 설명합니다. 에 대한

Mangohud : Linux 게임 성능의 실시간 모니터링을위한 강력한 도구 Mangohud는 게이머, 개발자 및 시스템 성능을 실시간으로 모니터링하려는 사람을 위해 설계된 강력하고 가벼운 도구입니다. Vulkan 및 OpenGL 응용 프로그램의 오버레이 역할을하며 FPS, CPU 및 GPU 사용량, 온도 등과 같은 중요한 정보를 표시합니다.이 기사는 MangoHud의 기능, 작업 원칙 및 사용을 탐색하고 Linux 시스템에 MangoHud를 설치하고 구성하기위한 단계별 지침을 제공합니다. 망고 후드는 무엇입니까? 망고 후드

아카이브 파일 관리는 Linux에서 일반적인 작업입니다. 두 부분으로 구성된 시리즈 중 첫 번째 기사 인이 기사는 5 가지 강력한 명령 줄 아카이브 도구를 탐색하여 기능과 사용법을 예제로 자세히 설명합니다. 1. TAR 명령 : 다재다능한 아카이브 유틸리티 티


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)
