λ λ¬ κ°μ κ°λ° λμ Linus Torvaldsλ λμ λ 컀λ λ¦΄λ¦¬μ€ Linux 6.19κ°μ₯ μ£Όλͺ©ν λ§ν λ³κ²½ μ¬νμΌλ‘λ λΌμ΄λΈ μ λ°μ΄νΈ μ€μΌμ€νΈλ μ΄ν° μλΈμμ€ν , PCIe λ§ν¬ μνΈν μ§μ, listens μμ€ν νΈμΆ, io_uringμ μ λ‘ μΉ΄νΌ μμ λͺ¨λ, ARM MPAM νμ₯ μ§μ, λΌμ΄λΈ ν¨μΉ μμ±μ μν klp-build, LoongArch32 μν€ν μ² μ§μ, s2idleμ© QoS, κ°μ¬ μλΈμμ€ν μ΅μ ν, Spectre 보νΈλ₯Ό μν Intel LASS, SHA-3 λ° BLAKE2b ν΄μ μ§μ, κΈ°λ° VMBus λ©μ»€λμ¦, λ€νΈμν¬ μλΈμμ€ν μ TX μ΅μ ν, CAN XL νλ‘ν μ½, HDR μΆλ ₯ νλμ¨μ΄ κ°μμ© API λ±μ΄ μμ΅λλ€.
μ λ²μ λ°νμμ 리λμ€λ λ€μ 컀λ 릴리μ€μ λ²νΈλ₯Ό 7.0μΌλ‘ μ νλ€κ³ λ°ννμ΅λλ€. 6.x λΈλμΉκ° λμ λμ΄ λ²μ λ²νΈμ 첫 λ²μ§Έ μ리λ₯Ό λ³κ²½ν΄μΌ ν λ§νΌ λ§μ 릴리μ€κ° λ°μνκΈ° λλ¬Έμ λλ€(6.0 릴리μ€λ 5.19 λ¦΄λ¦¬μ€ λ€μμ λμμ΅λλ€). λ²νΈ λ³κ²½μ λ―Έμ μΈ μ΄μ μ΄λ©°, μ리μ¦μ λ¦΄λ¦¬μ€ μκ° λ§μμ§λ©΄μ λ°μνλ λΆνΈν¨μ ν΄μνκΈ° μν 곡μμ μΈ μ‘°μΉμ λλ€. 리λμ€λ μκ°λ½κ³Ό λ°κ°λ½μ μ¬μ©ν΄μΌ ν μ λλ‘ ν° μ«μ λλ¬Έμ νΌλμ€λ¬μ λ€κ³ λλ΄νκΈ°λ νμ΅λλ€. νμ§λ§ 곡μμ μΌλ‘λ λ²μ λ²νΈμ μ€μν λ³κ²½μ λν μ΄μ κ° μμ΅λλ€. λ€μ Rustμ λν λ¦΄λ¦¬μ€ μ§μ κ²°μ νλ€ μ€νμ μΈ κΈ°λ₯μ ν΅μ¬ 컀λ κΈ°λ₯μΌλ‘ μ νν©λλ€.
μ λ²μ μλ 2237λͺ μ κ°λ°μκ° μ 곡ν 15657κ°μ μμ μ¬νμ΄ ν¬ν¨λμ΄ μμΌλ©°, ν¨μΉ ν¬κΈ°λ 52MBμ λλ€(λ³κ²½ μ¬νμ 13682κ°μ νμΌμ μν₯μ λ―Έμ³€μΌλ©°, 794649μ€μ μ½λκ° μΆκ°λκ³ 335498μ€μ΄ μμ λμμ΅λλ€). μ΄μ 릴리μ€μλ 2217λͺ μ κ°λ°μκ° μ 곡ν 15035κ°μ μμ μ¬νμ΄ ν¬ν¨λμμΌλ©°, ν¨μΉ ν¬κΈ°λ 45MBμμ΅λλ€. 6.19 λ²μ μ μ 체 λ³κ²½ μ¬ν μ€ μ½ 40%λ μ₯μΉ λλΌμ΄λ²μ κ΄λ ¨μ΄ μμΌλ©°, μ½ 13%λ νλμ¨μ΄ μν€ν μ² κ΄λ ¨ μ½λ μ λ°μ΄νΈ, 12%λ λ€νΈμν¬ μ€ν, 5%λ νμΌ μμ€ν , κ·Έλ¦¬κ³ 3%λ λ΄λΆ 컀λ νμ μμ€ν κ³Ό κ΄λ ¨μ΄ μμ΅λλ€.
컀λ 6.19μ μ£Όμ μλ‘μ΄ κΈ°λ₯ (1, 2, 3):
- λμ€ν¬ νμ μμ€ν
, I/O λ° νμΌ μμ€ν
- Π Btrfs νμΌ μμ€ν κ²μ¬ νλ‘μΈμ€(μ€ν¬λ½) λ° μ₯μΉ κ΅μ²΄ λ 보기 κ·Έλ€μ μ°¨λ¨νμ§ μμ΅λλ€ μμ€ν μ΄ μ μ λͺ¨λλ‘ μ νλ©λλ€(μ μ λͺ¨λ μ§μ μ μ€ν¬λ½ κ²μ¬ μνκ° μ μ₯λλ©°, μ μ λͺ¨λμμ κΉ¨μ΄λ ν μ€ν¬λ½ κ²μ¬κ° κ³μλκ³ μ₯μΉ κ΅μ²΄ μμ μ΄ λ€μ μμλ©λλ€). RAID56 ꡬνμ΄ λ©λͺ¨λ¦¬ νμ΄μ§ ν¬κΈ°λ³΄λ€ ν° λΈλ‘μ μ§μνλλ‘ μ λ°μ΄νΈλμμ΅λλ€. μ΄λ¬ν μ§μμ μν μ€λΉκ° μλ£λμμ΅λλ€. fscryptκ³΅κ° μμ½ κ΄λ ¨ μμ μ μ κΈ μ²λ¦¬ μ±λ₯μ΄ ν₯μλμμ΅λλ€. μΆκ°λ¨ νμΌ μμ€ν μ μ΄λ―Έ μ€ν μ€μΈ μμ μ μλ£λ₯Ό μλνμ§λ§ λͺ¨λ μ μμ μ μ°¨λ¨λλ μνλ‘ μ νν μ μλ μ’ λ£ ioctl μμ μ λν μ§μμ΄ μ 곡λ©λλ€.
- νμΌ μμ€ν μμ Ext4 ν¬ν¨ λ λ©λͺ¨λ¦¬ νμ΄μ§ ν¬κΈ°λ³΄λ€ ν° λΈλ‘(x86 μμ€ν μμ >4KB) μ§μ. λν λΈλ‘ μ¬μ© κ·Έκ²μ μ μμ΅λλ€ λ²νΌλ§λ μ°κΈ° μμ μ μ±λ₯μ νκ· 50% ν₯μμν€μ§λ§, 체ν¬μ¬ κ³μ° μκ° μ¦κ°λ‘ μΈν΄ μ§μ I/O μ±λ₯μ μ νλ©λλ€. μ λ²μ μλ λν μΆκ° μ¨λΌμΈ μ‘°κ° λͺ¨μ μν μ μ²λ¦¬λμ ν₯μμν€λ μ΅μ ν.
- νμ μμ€ν μμ ν¨μ¦ λμ©λ νμΌ μ¬μ© μ λ²νΌλ§ μ½κΈ° μ§μμ΄ κ°μ λμμ΅λλ€. κΈ°μ΅μ νμ΄μ§λ€μ ν΄λ¦¬μ€ (λμ©λ ν΄λ¦¬μ€). iomapμ μ΄μ λΆλΆμ μΌλ‘ νμ¬ ν΄λ¦¬μ€λ₯Ό μΆμ νμ¬ λ²νΌμ μλ λ°μ΄ν°λ§ λ€μ΄λ‘λνλ λ° μ¬μ©λ©λλ€.
- Π Vfs μ·¨μ κ°λ₯ν λλ ν°λ¦¬ μμμ λν μ§μμ΄ μΆκ°λμ΄ κ΅¬νμ΄ κ°λ₯ν΄μ‘μ΅λλ€. NFS μλ²μμ ν΄λΌμ΄μΈνΈλ‘ λλ ν°λ¦¬ μ μ΄κΆμ μ΄μ νμ¬ NFS ν΄λΌμ΄μΈνΈκ° NFS μλ²μ μ°κ²°νμ§ μκ³ λ λ‘컬 μΊμλ₯Ό μ¬μ©νμ¬ λλ ν°λ¦¬ μνλ₯Ό λ 립μ μΌλ‘ λͺ¨λν°λ§ν μ μλλ‘ ν©λλ€. λ€λ₯Έ NFS ν΄λΌμ΄μΈνΈκ° μ΄ λλ ν°λ¦¬λ₯Ό λ³κ²½νλ©΄ 첫 λ²μ§Έ ν΄λΌμ΄μΈνΈμ μ μ΄κΆμ΄ ν΄μ λ©λλ€.
- NFSμ κ²½μ° μΆκ° μ§μ I/O λͺ¨λμμμ μ½κΈ°λ₯Ό μ§μν©λλ€. ꡬνλ¨ /sys/kernel/debug/nfsd/io_cache_read λ° /sys/kernel/debug/nfsd/io_cache_write μ€μ μ μΊμ± λ° μ§μ I/O μμ μ ν¬ν¨ μ¬λΆλ₯Ό μ μ΄ν©λλ€. μ΄λ¬ν μ€μ μ μ‘°μνλ©΄ λκ·λͺ¨ I/O μμ μ μνν λ NFS ν΄λΌμ΄μΈνΈ μΈ‘μ μ€λ²ν€λλ₯Ό μ€μΌ μ μμ΅λλ€.
- Π NTFS μ’ λ£ ioctl μμ μ λν μ§μμ΄ κ΅¬νλμμ΅λλ€. ν¬ν¨ λ κΈ°λ³Έ λ§μ΄νΈ μ΅μ μΈ ACLκ³Ό μ¬μ ν λΉ κΈ°λ₯μ΄ μΆκ°λμμΌλ©°, 1970λ 1μ 1μΌ μ΄μ νμμ€ν¬νμ λν μ§μμ΄ μΆκ°λμμ΅λλ€.
- μ λΈλ‘ μ₯μΉ λ° νμΌ μμ€ν ν¬ν¨ κΈ°λ³Έμ μΌλ‘ CPUλ³ κ°μ²΄ μΊμ±μ΄ λΆλ¦¬λμ΄ μμ΅λλ€.λ°μ΄μ€Β» (λΈλ‘ I/O), νμ± μ λ ₯/μΆλ ₯ μμ μ μ μν©λλ€.
- λ©λͺ¨λ¦¬ λ° μμ€ν
μλΉμ€
-
ν΅μ¬μΌλ‘ ν¬ν¨ λ νμ μμ€ν μ€μκ° μ λ°μ΄νΈ μ€μΌμ€νΈλ μ΄ν° LUO(Long Unit Open)λ μμ€ν , μ₯μΉ λ° νλ‘μΈμ€μ μνλ₯Ό μμ€νκ±°λ μλμ μ€λ¨νμ§ μκ³ μ 체 μ¬λΆν λ° μ»€λ μ λ°μ΄νΈλ₯Ό μνν μ μλλ‘ ν©λλ€. LUO μλΈμμ€ν μ μ΄μ μ 컀λμ μΆκ°λ λ©μ»€λμ¦μ κΈ°λ°μΌλ‘ ν©λλ€. μ½ (Kexec HandOver)λ μμ€ν μνλ₯Ό μμ€ μμ΄ κΈ°μ‘΄ 컀λμμ μ 컀λλ‘ μ νν μ μλλ‘ ν λΏλ§ μλλΌ, μ₯μΉ λ° RAM μν 보쑴, DMA λ° μΈν°λ½νΈ μ²λ¦¬μ κ΄λ ¨λ μμ μ°μμ± λ³΄μ₯κ³Ό κ°μ λ¬Έμ λ₯Ό ν΄κ²°ν©λλ€. μμ€ν μνλ μ 컀λλ‘ μ ννκΈ° μ μ 보쑴λκ³ , μ 컀λμ΄ νμ±νλ ν μμ€ν λ° μ¬μ©μ κ³΅κ° μ ν리μΌμ΄μ μμ μνλλ μ°μμ μΈ μ₯μΉ μμ μ μ€λ¨νμ§ μκ³ λ³΅μλ©λλ€.
-
μΆκ°λ¨ listns() μμ€ν νΈμΆμ /proc/ λλ ν 리λ₯Ό μννμ§ μκ³ μμ€ν μ μ‘΄μ¬νλ λ€μμ€νμ΄μ€ λͺ©λ‘μ κ°μ Έμ€λ λ° μ¬μ©λ©λλ€. λͺ¨λ νλ‘μΈμ€μ λν΄ /ns/λ₯Ό μ¬μ©ν©λλ€.
io_uring λΉλκΈ° I/O μμ€ν μ μ΄μ μ΄μ 릴리μ€μμ κ²°κ³Ό ν(CQE) λ΄μ©μ ν¬κΈ°λ₯Ό νΌν©ν μ μμλ κ²μ²λΌ μ μΆ ν νλͺ©(SQE)μ ν¬κΈ°κ° λ€λ₯Έ μμλ₯Ό λ°°μΉν μ μλλ‘ μ§μν©λλ€. μ΄μ μλ νμ λͺ¨λ μμκ° λμΌν ν¬κΈ°μ¬μΌ νκΈ° λλ¬Έμ λͺ¨λ μμμ μ΅λ ν¬κΈ°λ₯Ό μ¬μ©ν΄μΌ ν΄μ λ©λͺ¨λ¦¬ μ¬μ©λμ΄ κ³Όλνκ² λ°μνμ΅λλ€.
io_uringμ 컀λκ³Ό μ¬μ©μ κ³΅κ° κ°μ λ°μ΄ν°λ₯Ό 볡μ¬νμ§ μκ³ μμ νλ zcrx(μ λ‘ μΉ΄νΌ μμ ) λ©μ»€λμ¦μ λν μ§μμ μΆκ°ν©λλ€. λν SQ(μ μΆ ν) λ° CQ(μλ£ ν)μ λν λ©λͺ¨λ¦¬ λ μ΄μμ 쿼리 μ§μμ΄ μΆκ°λμ΄ IORING_SETUP_NO_MMAP λ° IORING_MEM_REGION_TYPE_USER νλκ·Έλ₯Ό μ¬μ©νμ¬ μ¬μ©μ μ μ λ©λͺ¨λ¦¬ ν λΉμ νμν λ§ λ²νΌ ν¬κΈ° μ 보λ₯Ό μ»μ μ μμ΅λλ€.
perfμ κ°μ λꡬλ₯Ό μ¬μ©νμ¬ λΉ λ₯Έ μ€ν μΆμ μ κ°λ₯νκ² νκΈ° μν΄ νΈμΆ μ€ν μΈμμΈλ μ 보λ₯Ό ν¬ν¨νλ SFrame νμμ λν μ§μμ΄ μΆκ°λμμ΅λλ€. SFrameμ μ΄λ―Έ GCCμ binutilsμμ μ§μλλ©° μ±λ₯ μ νλ₯Ό μΌμΌν€μ§ μκ³ , DWARF νμκ³Ό λ¬λ¦¬ μ€ν μΆμ μ νμν μ΅μνμ μ λ³΄λ§ ν¬ν¨ν©λλ€.
-
μ±λ₯ μ νΈλ¦¬ν°μμ μΆκ° JSON νμμ λ©νΈλ¦ λ° μ΄λ²€νΈμ λν ν΅ν© μ€λͺ κ³Ό μ¬μ©μ 곡κ°μμμ νΈμΆ μ€ν μ§μ° μΈμμΈλ©μ μ§μν©λλ€.
μ AMD νλ‘μΈμ μ μΆλ ₯ μ₯μΉκ° λ°μ΄ν°λ₯Ό λ¨Όμ RAMμ μ μ₯νμ§ μκ³ CPUμ L3 μΊμμ μ§μ μ μ₯ν μ μλλ‘ νλ λ°μ΄ν° λ체 λ©μ»€λμ¦μ΄ ꡬνλμμ΅λλ€.
μΆκ° μ§μ MPAM (λ©λͺ¨λ¦¬ μμ€ν 리μμ€ λΆν λ° λͺ¨λν°λ§)ARMv8-A λͺ λ Ήμ΄ μΈνΈ μν€ν μ²μ νμ₯ κΈ°λ₯μΌλ‘, κ° λ©λͺ¨λ¦¬ μ κ·Όμ νν°μ ID(PARTID)μ λͺ¨λν°λ§ κ·Έλ£Ή ID(PMG)λ₯Ό νκ·Έν μ μμ΅λλ€. PARTIDλ₯Ό μ¬μ©νλ©΄ λ©λͺ¨λ¦¬ λμνμ΄λ μΊμ ν¬κΈ°μ κ°μ 리μμ€ μ¬μ©λμ μ ννμ¬ λ¨μΌ μμ κ·Έλ£Ήμ΄ λͺ¨λ 리μμ€λ₯Ό λ μ νλ κ²μ λ°©μ§ν μ μμ΅λλ€. λͺ¨λν°λ§ μΈ‘λ©΄μμ PMGμ PARTIDλ₯Ό ν¨κ» μ¬μ©νλ©΄ νΉμ μν¬λ‘λμμ λ©λͺ¨λ¦¬ 리μμ€ μ¬μ©λμ μΆμ ν μ μμ΅λλ€.
μ νΈ μμ ν νλ‘μΈμ€κ° λΉμ μμ μΌλ‘ μ’ λ£λλ©΄, μ’ λ£λ νλ‘μΈμ€μ PIDFDλ₯Ό κ°μ§ λ€λ₯Έ νλ‘μΈμ€λ ν΄λΉ νλ‘μΈμ€κ° μ’ λ£λ μμΈμ΄ λ μ νΈ λ²νΈλ₯Ό νμΈν μ μμ΅λλ€.
μ¬μμ κ°λ₯ν μνμ€μ ꡬνμ μ¬μμ νμ΅λλ€. (μ¬μμ κ°λ₯ν μνμ€) μ΄λ₯Ό ν΅ν΄ μ ν리μΌμ΄μ μ λͺ λ Ήμ΄ κ·Έλ£Ήμ μ μ¬ μμμ μ΄κ³ μ€λ¨ λΆκ°λ₯ν μ€νμ ꡬμ±ν μ μμ΅λλ€(λ€λ₯Έ μ€λ λμ μν΄ μ€λ¨λ κ²½μ°, ν΄λΉ μνμ€λ λ€μ μλλ©λλ€). μλ‘μ΄ κ΅¬νμ μ±λ₯μ΄ ν₯μλμμ΅λλ€.
-
μ BPF νλ‘κ·Έλ¨ κ΅¬ν BPF_JMP, BPF_X, BPF_JA λͺ λ Ήμ΄λ μ ν ν μ΄λΈμ νΉμ μμΉλ‘ κ°μ μ νλ₯Ό μννκΈ° μν κ²μ λλ€. λμ ν¬μΈν° κ°λ μ΄ μΆκ°λμμ΅λλ€.λ€μ΄ννΈλ₯΄κ΅¬μ‘°νλ νμΌμμ λ°μ΄ν°λ₯Ό μ½μ μ μλλ‘ ν΄μ€λλ€. μΆκ°λ¨ λ€νΈμν¬ ν¨ν·μ μ¬λ¬ λ°μ΄νΈμ λ©νλ°μ΄ν°λ₯Ό 첨λΆν μ μλ κΈ°λ₯.
νμ΄μ¬ λͺ¨λ컀λ λ¬Έμ μ²λ¦¬μ μ¬μ©λλ νμΌλ€μ΄ λ³λμ tools/lib/python λλ ν λ¦¬λ‘ μ΄λλμμ΅λλ€.
-
μΆκ°λ κΈ°λ₯ mempool_alloc_bulk() μ¬λ¬ κ°μ²΄μ λν΄ λ©λͺ¨λ¦¬ νμμ μμλ₯Ό μμ νκ² ν λ²μ ν λΉνκΈ° μν΄μμ λλ€.
-
κ³μλλ μ§μ μμ λ³κ²½ μ¬νμ μ μ‘ν©λλ€ λ¬μ€νΈμ©-Linuxμ¬μ©κ³Ό κ΄λ ¨λ Rust μΈμ΄ λλΌμ΄λ² λ° μ»€λ λͺ¨λ κ°λ°μ μν λ λ²μ§Έ μΈμ΄λ‘ Rustλ₯Ό μ§μν©λλ€(Rust μ§μμ κΈ°λ³Έμ μΌλ‘ νμ±νλμ΄ μμ§ μμΌλ©°, Rustκ° μ»€λμ νμ λΉλ μ’ μμ± λͺ©λ‘μ ν¬ν¨λμ§ μμ΅λλ€). μ λ²μ μμλ 컀λμ΄ ν¬ν¨λμ΄ μμ΅λλ€. λ΄μ₯ λμκ΄ "κ° SYNRust μ½λ νμκ° μΆκ°λμ΄ λ³΅μ‘ν λ§€ν¬λ‘ μμ±μ΄ κ°μνλμμ΅λλ€. 컀λ, pin-init, rbtree λΌμ΄λΈλ¬λ¦¬μ κΈ°λ₯μ΄ νμ₯λμμ΅λλ€. μ μ μ‘°μμ μν Integer νΈλ μ΄νΈκ° ν¬ν¨λ num λΌμ΄λΈλ¬λ¦¬κ° μΆκ°λμμ΅λλ€. `module!` λ§€ν¬λ‘μ μ μ λ§€κ°λ³μ μ§μμ΄ μΆκ°λμμ΅λλ€. Rustλ‘ μμ±λ 컀λ λͺ¨λμ λ‘λν λ λ§€κ°λ³μλ₯Ό μ§μ ν μ μλ κΈ°λ₯μ΄ κ΅¬νλμμ΅λλ€. νμ μμ€ν μ λν μΆμν κΈ°λ₯μ΄ κ΅¬νλμμ΅λλ€. I2C ΠΈ PWM (νμ€ ν λ³μ‘°)
-
μΆκ°λ¨ `at_least` λ§€ν¬λ‘(μ: `param[at_least 7]`)λ ν¨μμ μ λ¬λλ λ°°μ΄μ μ΅μ νμ© ν¬κΈ°λ₯Ό λνλ λλ€. μ΄λ³΄λ€ μμ μμλ₯Ό κ°μ§ λ°°μ΄μ΄ ν¨μμ μ λ¬λλ©΄ μ»΄νμΌλ¬λ κ²½κ³ λ₯Ό λ°μμν΅λλ€.
-
ꡬ쑰 ν¬ν¨λ¨ klp-build μ€ν¬λ¦½νΈλ ν¨μΉ νμΌμ κΈ°λ°μΌλ‘ μ€ν μ€μΈ 컀λμ μμ νλ 컀λ λͺ¨λ(λΌμ΄λΈν¨μΉ)μ μμ±ν©λλ€. objtool μ νΈλ¦¬ν°λ λΌμ΄λΈν¨μΉ μμ±μ μ§μνλλ‘ μ λ°μ΄νΈλμμ΅λλ€.
-
Π μ¬μ©μ λͺ¨λ Linux (컀λμ μ¬μ©μ νλ‘μΈμ€λ‘ μ€ννλ©΄) λ©ν°νλ‘μΈμ±μ λν μ νμ μΈ μ§μμ΄ μΆκ°λμμ§λ§, λμΌν νλ‘μΈμ€ λ΄μ μ€λ λλ μμ§ λμμ μ€νλ μ μμ΅λλ€. μμλ¨ μ¬μ©μ λͺ¨λ ν¬ν Linux λμκ΄μΌλ‘ λ리λΈμ¨.
-
μΆκ°λ¨ μν€ν μ² μ§μ λ‘±μμΉ32 (LA32R, LA32S) μΈμλ LoongArch64κ° μμ΅λλ€.
-
μΆκ°λ¨ μ μ λͺ¨λμμ νλ‘μΈμμ μ¨μ΄ν¬μ μλμ λν QoS μ νμ μ€μ ν μ μλ κΈ°λ₯ s2μμ΄λ€ (Suspend-To-Idle)μ μ¬μ©μ 곡κ°μ νλ‘μΈμ€ μ€νμ μΌμ μ€μ§νμ§λ§ 컀λμ μΌλΆ νΈλ€λ¬λ νμ±νλ μνλ‘ μ μ§ν©λλ€.
-
μΆκ°λ¨ 컨νΈλ‘€λ¬μ© λ©λͺ¨λ¦¬ νμ΄μ§ ν μ΄λΈ κ΄λ¦¬ μ§μ μμ΄μ€λ¬΄ (μ μΆλ ₯ λ©λͺ¨λ¦¬ κ΄λ¦¬ μ₯μΉ)νλμ¨μ΄ μ₯μΉκ° μΈμνλ κ°μ μ£Όμλ₯Ό 물리μ μ£Όμλ‘ λ³ννκ³ , κ°μ μ£Όμλ³λ‘ DMA μμ μ νν°λ§νκ³ , I/O μμ μ μ ν λ° κ²©λ¦¬νλ κΈ°λ₯μ μ 곡ν©λλ€.
μ΄μ μμ€ν νΈμΆ μΆμ μ΄λ²€νΈμμ μ¬μ©μ κ³΅κ° λ²νΌλ₯Ό μ½κ³ ν΄λΉ λ΄μ©(μ: νμΌ μ΄λ¦)μ μΆμ μΆλ ₯μ ν¬ν¨νλ κΈ°λ₯μ μ§μν©λλ€.
-
**κ°μ견 λ©λͺ¨λ¦¬ νμ΄μ§(( (λ³΄νΈ νμ΄μ§)μ κ·Ό μ μμΈκ° λ°μνκ³ νλ‘μΈμ€κ° λΉμ μμ μΌλ‘ μ’ λ£λλ(SIGSEGV) μ€λ₯κ° μ΄μ λ°μν©λλ€. νμλμ΄ μμ΅λλ€ νμΌ /proc/PID/smapsμ νΉμ νμκ° μμ΅λλ€.
-
μΆκ°λ¨ μ μ΄ κ°λ₯μ± λμ©λ λ©λͺ¨λ¦¬ νμ΄μ§ (ν¬λͺ ν ν° νμ΄μ§) ꡬμλ³ κΈ°κΈ°μ κ°μΈ λ©λͺ¨λ¦¬μ μ μ₯λ©λλ€.
-
μ₯μΉμμ μ¦λλ©λͺ¨λ¦¬ λ΄ μ€μ νν°μ μ μμΆ μ μ₯μ μ¬μ©λ©λλ€. ꡬν λ°°μΉ λͺ¨λ(μ°κΈ° λ°°μΉ)μμ μ¬λ¬ "λ°μ΄μ€" ꡬ쑰(λΈλ‘ I/O)λ₯Ό νλ¬μνλ κΈ°λ₯μ μ§μν©λλ€.
κΈκΌ΄μ΄ ν¬ν¨λμ΄ μμ΅λλ€. μ’ λ¨ 10Γ18μ΄λ₯Ό ν΅ν΄ μ€κ° ν΄μλ(1440Γ900)μ λ ΈνΈλΆ νλ©΄μμ μ½μ μ 보μ κ°λ μ±μ΄ ν₯μλ©λλ€.
-
λ§μ μ΅μ ν λ μΌ κ°μ¬ νμ μμ€ν β κ°μ λΉκ° 2λ°°λ‘ κ°μν κ²μΌλ‘ λνλ¬μ΅λλ€.
-
- κ°μν λ° λ³΄μ
- μΈν νλ‘μΈμμμ μ 곡νλ κΈ°λ₯μ λν μ§μμ΄ μΆκ°λμμ΅λλ€. λΆμ μ ν μ£Όμ κ³΅κ° λΆλ¦¬(LASS)λ νλμ¨μ΄ κΈ°λ°μΌλ‘ μ¬μ©μ 곡κ°κ³Ό 컀λ 곡κ°μ μ£Όμ λ²μλ₯Ό λΆλ¦¬νμ¬ λ³΄μμ κ°ννλ κΈ°μ μ λλ€. μ£Όμ 곡κ°μ μ£Όμμ μ΅μμ λΉνΈλ₯Ό κΈ°μ€μΌλ‘ λλλλ°, μ΅μμ λΉνΈκ° μ€μ λ μ£Όμ 곡κ°μ μ λ°μ 컀λμμ μ¬μ©νκ³ , λλ¨Έμ§ μ λ°μ μ¬μ©μ 곡κ°μμ μ¬μ©ν©λλ€. λͺ λ Ήμ΄ μ€ν μ΄κΈ°(ν¬κΈ°μ μ€ν μ )μ μ΅μμ λΉνΈκ° μ€μ λ μ£Όμμ λν μ¬μ©μ κ³΅κ° μ κ·Όμ΄ νμ©λλμ§, κ·Έλ¦¬κ³ κ·Έ λ°λμ κ²½μ°λ νμ©λλμ§ νμΈνλ κ²μ¬κ° μνλ©λλ€. μ΄λ¬ν λΆλ¦¬λ ν¬κΈ°μ μ€ν μ€μλ 컀λ λ©λͺ¨λ¦¬κ° μ¬μ©μ 곡κ°μΌλ‘ μ μΆλλ μ¬μ΄λ μ±λ 곡격μ λ°©μ§νλ―λ‘, LASSλ μλΉν μ€λ²ν€λ μμ΄ λ©νΈλ€μ΄ λ° μ€νν° κ³΅κ²©μΌλ‘λΆν° 보νΈνλ λ° μ ν©ν©λλ€.
- νμ±ν κΈ°λ₯μ μΆκ°νμ΅λλ€. νμ₯ κΈ°λ₯ PCI Express λ²μ€ 보μ κ°ν κΈ°λ₯μΈ PCIe λ§ν¬ μνΈν λ° PCIe μ₯μΉ μΈμ¦μ Intel TDX(Trusted Domain Extensions) λ° AMD SEV-SNP(Secure Nested Paging)λ‘ λ³΄νΈλλ PCIe μ₯μΉμ κ°μ λ¨Έμ κ°μ ν΅μ μ±λμ μΈμ¦νκ³ μνΈνν©λλ€. μ΄λ¬ν κΈ°μ μ νΈμ€νΈ μμ€ν λλ λ€λ₯Έ μ₯μΉμ μ‘μΈμ€ν λ DMA νΈλν½μ λ°μ΄ν° κ°λ‘μ±κΈ°, λΆμ λ° μ½μ μ λ°©μ§ν©λλ€.
- λ΄μ₯ μνΈν λΌμ΄λΈλ¬λ¦¬μμ μΆκ° SHA-3 μκ³ λ¦¬μ¦(SHA3-224, SHA3-256, SHA3-384, SHA3-512) SHAKE128, SHAKE256 λ° BLAKE2bλ₯Ό μ§μν©λλ€.
- LSM λͺ¨λμ κ²½μ° (Linux 보μ λͺ¨λ) λ° νΉν SEμ κ²½μ°Linux, ꡬν memfd λμ€ν¬λ¦½ν°μ μμ± κ³Όμ μ μΆμ νμ¬ ν΄λΉ λμ€ν¬λ¦½ν°μ μ°κ²°λ κ°μ²΄μ 보μ μ μ± μ μ μ©ν μ μλ κΈ°λ₯.
- LSM λͺ¨λμμ IPE (μ²λ ΄μ± μ μ± μνμ 체 μμ€ν μ μΌλ°μ μΈ λ¬΄κ²°μ± μ μ± μ μ μνλ )μ νλκ·Έ μ§μμ΄ μΆκ°λμμ΅λλ€. AT_EXECVE_CHECK κΈ°λ₯μμ μ€ννλ€()μ¬κΈ°μλ μΈν°ν리ν°κ° μ€ν¬λ¦½νΈλ₯Ό μ€ννκΈ° μ μ μ€ν¬λ¦½νΈμ 무결μ±μ νμΈνλ κ³Όμ μ΄ ν¬ν¨λ©λλ€.
- μ¬μ©μ κ³΅κ° λ°μ΄ν°μ λν μ νλ μ κ·Όμ μν΄ scoped_user_read_access(), scoped_user_write_access() λ° scoped_user_rw_access() κΈ°λ³Έ ν¨μλ₯Ό μΆκ°νμ΅λλ€. 보νΈλ°λ μΆμΈ‘μ± κ³΅κ²©.
- μΆκ°λ¨ λ©μ»€λμ¦ μ§μ κΈ°λ° VMBusHyperV νμ΄νΌλ°μ΄μ μμ κΈ°λ° λͺ¨λ(AMD SNP λ° Intel TDX κΈ°μ κΈ°λ°μ λ©λͺ¨λ¦¬ μνΈν λ° λ μ§μ€ν° 격리 ν¬ν¨)λ‘ μ€νλλ κ²μ€νΈ μμ€ν κ³Ό κΈ°λ° λ°μ΄ν°λ₯Ό μ²λ¦¬νλ μ₯μΉμ μ‘μΈμ€νλ νλΌλ°μ΄μ κ°μ λ³μ‘° λ°©μ§ ν΅μ μ μ¬μ©λ©λλ€.
- μΆκ°λ¨ pidfd λ©μ»€λμ¦μ ν΅ν΄ μΆ©λν νλ‘μΈμ€μ λν μ 보(μ½μ΄λ€ν μμ±μ©)λ₯Ό μ μ‘νλ κΈ°λ₯μ λλ€. pidfd μλ³μλ νΉμ νλ‘μΈμ€μ μ°κ²°λμ΄ μμΌλ©° λ³κ²½λμ§ μμ΅λλ€. λ°λ©΄ PIDλ ν΄λΉ PIDμ μ°κ²°λ νμ¬ νλ‘μΈμ€κ° μ’ λ£λ ν λ€λ₯Έ νλ‘μΈμ€μ ν λΉλ μ μμ΅λλ€. pidfdλ₯Ό μ¬μ©νλ©΄ νλ‘μΈμ€ μ€νμ μ°¨λ¨ν μ μμ΅λλ€. 곡격 μΆ©λν suid νλ‘μΈμ€λ₯Ό λ€λ₯Έ νλ‘μΈμ€λ‘ κ΅μ²΄ν¨μΌλ‘μ¨, 컀λμ΄ μΆ©λ μ²λ¦¬λ₯Ό μμν μ§ν, νμ§λ§ μ¬μ©μ κ³΅κ° νΈλ€λ¬κ° νλ‘μΈμ€ λ§€κ°λ³μλ₯Ό νμΈνκΈ° μ μμ μ κ²½μ μ‘°κ±΄μ΄ λ°μν©λλ€.
- λ€νΈμν¬ νμ μμ€ν
- λ€νΈμν¬ νμ μμ€ν μΌλ‘ μ λ ₯ λ°μ΄ν° μ μ‘(TX) ν¨μ¨ ν₯μμ μν μ΅μ ν. __dev_queue_xmit() ν¨μμμ μ€νλ½μ μ κ±°νκ³ λ½μ΄ νμ μλ llist ꡬ쑰λ₯Ό μ¬μ©ν©λλ€. νμ©λ κ³ΌλΆν μνμμ μ±λ₯μ 4λ°° ν₯μμν€κ³ ν¨ν· μ μ‘ μλλ₯Ό λ λ°°λ‘ λμ΄λ λμμ CPU λΆνλ₯Ό μ λ°μΌλ‘ μ€μ λλ€.
- μ μν΄ μ 곡 κΈ°ν λ¨μ κ°λ³ λ€νΈμν¬ μμΌμ κ²½μ° μμ€ν λ©λͺ¨λ¦¬ μ νμ΄ λΉνμ±νλ©λλ€(μ΄ κ²½μ° κ°λ³ 컨ν μ΄λμ μ€μ λ μ 체 λ©λͺ¨λ¦¬ μ νμ΄ μ¬μ©λ©λλ€). μ΄λ¬ν μ νμ λΉνμ±ννλ €λ©΄ `net.core.bypass_prot_mem` sysctl λͺ λ Ήκ³Ό `bpf_setsockopt` ν¨μμ `SK_BPF_BYPASS_PROT_MEM` νλκ·Έλ₯Ό μ¬μ©νμμμ€.
- μΆκ°λ¨ νμ₯ μ§μ RFC 5837μ΄λ ν¨ν·μ TTL(Time-to-Live)μ΄ λ§λ£λ λ λ°νλλ ICMP Time Exceeded λ©μμ§μ μμ λ€νΈμν¬ μΈν°νμ΄μ€μ λν μ 보λ₯Ό μΆκ°νμ¬ traceroute μ νΈλ¦¬ν°λ₯Ό μ¬μ©νμ¬ κ²½λ‘λ₯Ό μΆμ ν λ λ μμΈν μ 보λ₯Ό μ»μ μ μλλ‘ ν©λλ€.
- μΆκ°λ¨ μ§μ° μκ°μ μ΅μνν΄μΌ νλ μ ν리μΌμ΄μ μ μν΄ λ³λμ 컀λ μ€λ λμμ μ§μμ μΈ λΉμ§ ν΄λ§μ μ§μνμ¬ RX/TX νμμ λμ€ν¬λ¦½ν°λ₯Ό μΆμΆν©λλ€.
- μΆκ°λ νλ‘ν μ½ μ§μ CAN XL (Controller Area Network eXtended Length, 컨νΈλ‘€λ¬ μμ λ€νΈμν¬ νμ₯ κΈΈμ΄)λ λ°μ΄ν° νλ ν¬κΈ°λ₯Ό 2048λ°μ΄νΈλ‘ λλ € λ€νΈμν¬μμ ν΅ν©μ 보μ₯ν©λλ€. TCP/IPμ΄λλ· νλ μ ν°λλ§ κΈ°λ₯μ΄ κ΅¬νλμκ³ μ§μμ΄ μΆκ°λμμ΅λλ€. νμ€ ν λ³μ‘°μ΄λ₯Ό ν΅ν΄ 20Mbps μ΄μμ μλλ‘ λ°μ΄ν°λ₯Ό μ μ‘ν μ μκ² λμμ΅λλ€.
- μΆκ°λ¨ μ§μ§ ꡬ쑰 μλ§ μ£Όμ ν¬κΈ°κ° μ‘°μ λμ§ μμsockaddr ꡬ쑰μ λ³νμΌλ‘, λ°°μ΄μ μ¬μ©ν©λλ€. μ μ°ν μμ κ³ μ ν¬κΈ° λ°°μ΄(sa_data[14] λμ sa_data[]) λμ λ€λ₯Έ λ ν° κ΅¬μ‘°λ₯Ό μ°Έμ‘°νλ λ° μ¬μ©λμμ΅λλ€.
- io_uring μλΈμμ€ν μ ν΅ν΄ getsockname λ° getpeername κΈ°λ₯μ μ¬μ©ν μ μλλ‘ νμ΅λλ€.
- sysctlμ μΆκ°νμ΅λλ€. net.ipv4.tcp_rcvbuf_low_rtt ΠΈ net.ipv4.tcp_comp_sack_rtt_percent TCP μ΅μ νλ₯Ό μν΄.
- μΆκ°λ¨ 1600Gbps(1.6T) μ²λ¦¬λμ λ§ν¬λ₯Ό μ§μν©λλ€.
- ΠΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
- DRM(Direct Rendering Manager) μλΈμμ€ν μ νλμ¨μ΄ μμ λ³ν κΈ°λ₯μ νμ©ν μ μλ APIκ° μΆκ°λμ΄ μ °μ΄λλ CPU κΈ°λ° μ½λ μ€νμ΄ νμ μμ΄μ‘μ΅λλ€. HDR μ½ν μΈ μΆλ ₯ μ, μ΄μ μννΈμ¨μ΄ ν©μ± λ°©μμΌλ‘ μ΅μ’ λμ€νλ μ΄ λ²νΌμ μ½ν μΈ λ₯Ό λ£λ λμ , λμ€νλ μ΄ μ»¨νΈλ‘€λ¬μμ λΈλ λ© μ νμ 볡μ‘ν μμ λ³νμ μνν μ μμ΅λλ€. μ΄ κΈ°λ₯μ HDR μΆλ ₯ κ΅¬μ± μ μ€λ²ν€λμ μ λ ₯ μλΉλ₯Ό μ€μ¬μ€ λΏλ§ μλλΌ, λΉλμ€ λλ μ΄λ―Έμ§ νΈμ§κΈ°μμ μ νν μμ ννμ 보μ₯νλ λ°μλ μ¬μ©ν μ μμ΅λλ€.
- μΆκ°λ¨ Arm Ethos U65 λ° U85 NPUμ© ethosu λλΌμ΄λ²λ AI λͺ¨λΈμ νλμ¨μ΄ κ°μμ μν΄ μ€κ³λμμ΅λλ€.
- Lunar Lake λ° κ·Έ μ΄ν GPUμ© i915 λλΌμ΄λ²λ νλμ¨μ΄ μ§μ μ λͺ λ ν₯μ κΈ°λ₯μ μΆκ°ν©λλ€.
- κ³μλλ μΈν Xe μν€ν μ² κΈ°λ° GPUμ© Xe DRM(Direct Rendering Manager) λλΌμ΄λ² κ°λ°μ΄ μ§ν μ€μ λλ€. μ΄ μν€ν μ²λ Tiger Lake νλ‘μΈμλΆν° μμνλ©°, νΉν Intel Arc μλ¦¬μ¦ κ·Έλν½ μΉ΄λμ ν΅ν© κ·Έλν½μ μ¬μ©λ©λλ€. μ΄κΈ° λ¨κ³μμλ Crescent Island GPUμ ν΅ν© κ·Έλν½μ΄ νμ¬λ Nova Lake μ νκ΅° νλ‘μΈμμ μ¬μ©λλ Xe3P μν€ν μ²μ λν μ§μμ΄ μΆκ°λμμ΅λλ€.
- AMDGPU λλΌμ΄λ²κ° μ΄μ κΈ°μ‘΄μ Radeon λλΌμ΄λ²λ₯Ό μ¬μ©νλ AMD GCN 1.0 "Southern Island" λ° 1.1 "Sea Islands" μ νκ΅° κ·Έλν½ μΉ΄λλ₯Ό μλ²½νκ² μ§μν©λλ€. AMDGPU λλΌμ΄λ²λ Radeon λλΌμ΄λ²μ λμΌν μμ€μΌλ‘ κ°μ λμμΌλ©°, μ΄λ¬ν GPUμμ κΈ°λ³Έμ μΌλ‘ νμ±νλ©λλ€. GCN 1.x μΉ΄λλ 2012λ λΆν° 2019λ κΉμ§ μΆμλμμΌλ©°, Radeon HD 77xx/78xx/79xx/87xx/88xx/89xx, Radeon R9 280, FirePro W4000-W9000, Radeon Sky 700/900, Radeon R9 265/270/370, Radeon R9 290/390, HD 7790/8870 λ° Radeon RX 200/RX 300 μ νκ΅°μ κΈ°ν λΉλμ€ μΉ΄λλ₯Ό ν¬ν¨ν©λλ€. μ¦κ°νλ€ νκ· 24%μ μ±λ₯ ν₯μμ κ°μ Έμ¨ AMDGPUλ‘μ μ νμ ν΅ν΄ μ΄λ¬ν GPUμμ Vulkan 1.3 κ·Έλν½ APIλ₯Ό μ§μν μ μκ² λμμ΅λλ€. λν AMDGPUλ μλ λ‘κ·Έ 컀λ₯ν°μ λΉλμ€ μ½λ© μμ§ 1.0(VCE) μ§μμ μΆκ°νμΌλ©°, Bonaire λ§μ΄ν¬λ‘μν€ν μ² κΈ°λ° GPU(Radeon HD 7790)μ λν΄ λμ€νλ μ΄ μ½μ΄(DC) μ€νμ κΈ°λ³Έμ μΌλ‘ νμ±ννμ΅λλ€.
- λ보 λλΌμ΄λ²μμ ꡬν Tegra210 SoCμ νμ¬λ NVJPG νλμ¨μ΄ κ°μκΈ°λ₯Ό μ§μν©λλ€.
- νν λ₯΄ λλΌμ΄λ²μμ μΆκ° Mali-G1 GPU μ§μ λ° MediaTek MT8196 μΉ© μ΄κΈ° μ§μ.
- μΆκ°λ¨ μΈν λ Έλ° λ μ΄ν¬ S μΉ©μ μ€λμ€ μλΈμμ€ν , HDA CS35L41μ΄ νμ¬λ HP λ ΈνΈλΆ, CIX IPBLOQ HD λ° μ¨μΏ SE-300PCIE μ€λμ€ μΈν°νμ΄μ€λ₯Ό μ§μν©λλ€.
- νλ§ λ§μ΄ν¬λ‘μν€ν μ² κΈ°λ°μ NVIDIA GeForce RTX 2000 μ리μ¦λΆν° μ¬μ©λλ GSP νμ¨μ΄κ° νμ¬λ NVIDIA GPUμ© Nova λλΌμ΄λ² κ΅¬μ± μμ ν΅ν© μμ μ΄ κ³μ μ§ν μ€μ λλ€. λλΌμ΄λ²λ Rustλ‘ μμ±λμμ΅λλ€. RPC λ° μμ ν GSP(GPU μμ€ν νλ‘μΈμ) 보쑰 νλ‘μΈμμ λ‘λ© κ΅¬ν.
- μΆκ°λ¨ ARM 보λ, SoC λ° μ₯μΉ μ§μ: Bananapi r4 pro, LinkEase EasePi R1, Qualcomm MSM8937(Snapdragon 430), Renesas R-Car X5H, FriendlyElec NanoPi R76S, TI AM62L, Black Sesame Technologies C1200, Aspeed AST2600, Genio 1200 EVK, grinn geniosbc-510/700, Tanix TX9 Pro, Radxa Dragon Q6A, Tinker Board 3/3S, Aquila AM69, phyBOARD-Segin-i.MX91, i.MX 95 Verdin νκ° ν€νΈ, Toradex SMARC iMX95, VIDIA Jetson Nano 2GB, Renesas rz/g3s, Indiedroid Nova, 24κ° λ³΄λ μ΅μ Enclustra Mercury.
- Mediatek MT6582(Alcatel YarisXL), Nvidia Tegra124(Xiaomi Mi Pad), Qualcomm MSM8939(ASUS ZenFone 2) SoC κΈ°λ° μ€λ§νΈν° λ° νλΈλ¦Ώμ λν μ§μμ΄ μΆκ°λμμ΅λλ€. Huawei MateBook E 2019μ κ°μ Qualcomm SDM850 SoC κΈ°λ° λ ΈνΈλΆμ λν μ§μλ μΆκ°λμμ΅λλ€.
- RISC-V μν€ν μ² κΈ°λ° SoC λ° λ³΄λ μ§μμ΄ μΆκ°λμμ΅λλ€. μ§μλλ 보λλ OrangePi R2S, OrangePi RV, Anlogic dr1v90, Tenstorrent Blackholeμ λλ€.
λμμ, λΌν΄ μλ©λ¦¬μΉ΄ μμ μννΈμ¨μ΄ μ¬λ¨ νμ±λ Π²Π°ΡΠΈΠ°Π½Ρ μμ λ¬΄λ£ μ»€λ 6.19 - Linux-libre 6.19-gnuμ μ‘°μ¬μμ μ¬μ© λ²μκ° μ νλ λ μ κ΅¬μ± μμ λλ μ½λ μΉμ μ ν¬ν¨νλ νμ¨μ΄ λ° λλΌμ΄λ² μμκ° μ κ±°λμμ΅λλ€. 6.19 릴리μ€μμλ SDCA μ¬μ΄λ μλΈμμ€ν μμ λ°μ΄λ리 νμ¨μ΄ λ‘λ© μ½λκ° μ κ±°λμμ΅λλ€. Intel XE, Nova-Core, Qualcomm Iris, Venus λ° Q6V5, TI PRUeth, Intel iwlwifi, Marvell mwifiex, FourSemi fs210x, Realtek rt1320 λ° TI tas2783 μ€λμ€ μ½λ±μ© λλΌμ΄λ²μ λΈλ‘ μ 리 μ½λκ° μ λ°μ΄νΈλμμ΅λλ€. ARM μΉ©μ© dts νμΌ(devicetree)μ λΈλ‘ μ΄λ¦μ΄ μ 리λμμ΅λλ€. 컀λμμ μ κ±°λ STM C8SECTPFE DVB λλΌμ΄λ²μ λΈλ‘ μ 리λ μ€λ¨λμμ΅λλ€.
μΆμ² : linux.org.ru
