Kernel คืออะไร ทำไม Huawei เคลมแรง Kernel HarmonyOS NEXT ประสิทธิภาพสูงกว่า Linux 3 เท่า

By - 02 กุมภาพันธ์ 2024

Kernel คืออะไร ทำไม Huawei เคลมแรง Kernel HarmonyOS NEXT ประสิทธิภาพสูงกว่า Linux 3 เท่า

เมื่อไม่กี่วัน เราอ่านข่าวประกาศของ Huawei ในการพัฒนา HarmonyOS NEXT ตัวใหม่เพื่อเป็นระบบปฏิบัติการของอุปกรณ์ของ Huawei ซึ่งเขาเคลมว่า Kernel ของ OS ตัวนี้ประสิทธิภาพจะสูงกว่าการใช้ Linux Kernel ถึง 3 เท่าจุก ๆ วันนี้เรามาเล่าให้อ่านในเชิงเทคนิค มันเป็นไปได้ขนาดไหน

Kernel คืออะไร ?

Kernel คือ Software ตัวหนึ่งที่ทำงานเป็นเหมือนแกนกลางของ Operating System (OS) หรือระบบปฏิบัติการที่เราใช้งานกัน ทำหน้าที่ในการควบคุม Hardware ตั้งแต่พวก CPU, หน่วยความจำ และ อุปกรณ์ต่อเชื่อมต่าง ๆ ทั้งหมด เป็นโปรแกรมจะที่เริ่มทำงานขึ้นมาเป็นโปรแกรมแรกเมื่อ OS เริ่มทำงาน และจะยังทำงานอยู่จนเราปิดเครื่องไปเลยทีเดียว

นอกเรื่องนิดนึง การที่เราเปิดเครื่องคอมพิวเตอร์ขึ้นมา เราไม่ได้เริ่มจากการโหลด OS ขึ้นมาทำงานทันที ถ้าเราสังเกตดี ๆ เราจะเห็นว่า มันจะมีหน้าจอดำ ๆ อะไรสักอย่าง ยิ่งเมื่อก่อนมันมีขึ้น Memory Check Passed อะไรด้วย (คอมพิวเตอร์ใหม่ ๆ เราใช้พวก FastBoot มันจะไม่เห็นหน้าจอแบบนี้) พวกนี้มันคือ BIOS มันทำการ Self-Check เมื่อผ่านแล้วจึงค่อยเริ่มกระบวนการการโหลด OS ตอนที่เราเห็นหน้า Animation ซึ่งส่วนแรกที่มัน Start ขึ้นมาก็คือ Kernel นั่นเอง และเมื่อมันโหลดเสร็จแล้ว BIOS ถึงจะย้ายสิทธิ์ในการควบคุมส่วนต่าง ๆ ของคอมพิวเตอร์ให้กับ OS นั่นเอง

มองง่าย ๆ คือ มันเป็นเหมือนกาว ที่เชื่อมระหว่าง Hardware ที่อยู่ด้านล่าง กับ ผู้ใช้งาน เช่นพวก Standard Library และ User Application โดยผู้ใช้ด้านบนสามารถติดต่อกับ Kernel ได้ผ่านสิ่งที่เรียกว่า System Call ถ้าได้เรียนวิชา OS มาอาจจะคุ้นเคยกับการเรียกมาไม่มากก็น้อย และส่วนที่ติดต่อกับ Hardware จริง ๆ มีหลายตัวมาก ๆ แต่ Software ที่สำคัญคือ Driver หรือเป็นการบอก Kernel ถึงช่องทางว่า เราจะติดต่อกับ Hardware นั้น ๆ อย่างไร จะสั่งการทำงานอย่างไร มันทำอะไรได้บ้าง นั่นทำให้ เวลาเราเชื่อมต่อ Hardware ใหม่เข้าไปในเราจำเป็นต้องติดตั้ง Driver เข้าไป แต่สาเหตุที่ในระบบใหม่ ๆ เราไม่จำเป็นต้องมานั่งติดตั้งเองแล้ว เป็นเพราะ ระบบจัดการ Driver ที่มันวิ่งไปหา Driver มาติดตั้งได้ด้วยตัวเอง เพื่ออำนวยความสะดวกแก่ผู้ใช้

Unix top command

หน้าที่หนึ่งที่สำคัญมาก ๆ ของ Kernel คือการจัดการ Resource และ Process การทำงานต่าง ๆ เราสามารถดู Process ที่กำลังทำงานบน OS ได้ ถ้าบน Linux เราสามารถรันคำสั่ง top ขึ้นมา หรือใน Activity Monitor บน macOS และ Task Manager ใน Windows

ถ้าเราสังเกตดูดี ๆ เราจะเห็นว่า Process มันมีเยอะกว่า CPU Core ที่เรามี ดังนั้นหนึ่งในหน้าที่ของ Kernel คือการ Scheduling หรือการเรียงลำดับว่า Process ไหนจะได้ทำงาน หรือ Process ไหนต้องรอถึงเมื่อไหร่ เช่น บางครั้งเวลาเราพับหน้าจอสักโปรแกรมลงไป OS จะไล่ Process ของโปรแกรมที่เราพับไปสู่สถานะ Sleep และสั่งให้ Process อื่น ๆ ที่ต้องทำงานตื่นขึ้นมาทำงานไป แต่เราขอไม่ลงไปลึกถึงระดับว่า Process มันมี Lifecycle และ Permission อะไรยังไงละกัน ไว้ถ้าได้มีโอกาสเรียนน่าจะได้เจอแหละ

เมื่อพูดถึง Process อีกส่วนที่ทำงานร่วมกันคือ Memory Management ที่ OS มีหน้าที่ในการจัดการ การใช้งาน Memory ของทั้งตัวเอง และ Application ต่าง ๆ ที่เปิดขึ้นมา เช่นการป้องกัน Application เข้าถึง Memory ที่ไม่ใช่ของตัวเอง และยังต้องจัดการการอ่านและเขียน เพราะใน OS ใหม่ ๆ เขาจะมีกลไกที่เรียกว่า Virtual Addressing Memory หรือการใช้ที่อยู่ใน Memory แบบจำลองขึ้นมา เพื่อให้ Developer สามารถจัดการการเรียกใช้ Memory ได้มีประสิทธิภาพมากขึ้น รวมไปถึงการป้องกัน การเข้าถึง Memory ในส่วนที่ยังไม่ได้รับอนุญาติอีกด้วย และจริง ๆ มันมีกลไกอีกมากมายในการจัดการ Memory ที่ถูก Implement ลงไปใน Kernel ถ้าเอามาเล่าทั้งหมดน่าจะยาว ขอเล่าเท่านี้ละกัน

จากสิ่งที่เราเล่ามาทั้งหมด เราจะเห็นว่า Kernel เป็นอีกหนึ่งส่วนที่สำคัญมาก ๆ ใน OS เลยก็ว่าได้ ทำหน้าที่เป็นนาง Manage จัดการตั้งแต่ Resource อย่าง CPU และ Memory จนไปถึงการพูดคุยกับอุปกรณ์ต่อเชื่อมต่าง ๆ เพื่อให้เครื่องคอมพิวเตอร์ของเราทำงานได้อย่างมีประสิทธิภาพ และเชื่อมต่อกับอุปกรณ์ที่เราต้องการได้

GitHub - torvalds/linux: Linux kernel source tree
Linux kernel source tree. Contribute to torvalds/linux development by creating an account on GitHub.

ในปัจจุบัน เรามี Kernel ให้เราเลือกใช้งานหลายตัว ตามความเหมาะสม ของระบบที่เราทำงาน และ อุปกรณ์เชื่อมต่อต่าง ๆ แต่หลัก ๆ Kernel ที่เราใช้งานกันเยอะที่สุดน่าจะเป็น Linux Kernel เพราะ OS หลายตัวเลือกใช้ Linux Kernel ตั้งแต่ คอมพิวเตอร์บนรถ โทรศัพท์ จนไปถึง Supercomputer เลยทีเดียว ถ้าใครเรียนคอมพิวเตอร์มา น่าจะเคยได้ยินชื่อ Linus Torvalds มาก่อน ใช่แล้ว เขาเป็นคนที่เขียน Linux ขึ้นมาให้เราใช้งานกันนี่แหละ เราคือเทิดทูลเป็น The God เลยละ

Kernel เปลี่ยนแปลงตามเทคโนโลยี

Kernel ของ OS ได้รับการพัฒนามาเรื่อย ๆ ตามการเปลี่ยนแปลงของเทคโนโลยี เช่น ในสมัยก่อน CPU เรามี Core เดียว ไม่รองรับการทำ Hyperthreading ด้วยซ้ำ ดังนั้นใน Kernel เองโดยเฉพาะ Process Scheduler ก็ต้องออกแบบมาให้รองรับการทำงานในลักษณะนี้ แต่เมื่อ CPU ได้รับการพัฒนาให้เป็น Multicore มี หลาย Core ตัว Scheduler ก็ต้องออกแบบมาเพื่อรองรับอีก ซึ่งเป็นส่วนที่ผู้ใช้จะไม่ได้เห็น แต่มันสัมผัสได้จาก Performance ที่เราได้มา

หรืออีกตัวอย่างคือ การทำ Memory Addressing ถ้าใครเกิดทัน น่าจะเคยได้ยินคำว่า คอมพิวเตอร์แบบ 32-bits และ 64-bits และตอนนั้น OS เขาแยกเวอร์ชั่นนะว่า อันนี้สำหรับ 32-bits อันนี้สำหรับ 64-bits เป็นเพราะเรื่องของการทำ Memory Address บน Kernel ด้วย เช่น ถ้า CPU เรารองรับ Memory Address ขนาด 64-bits แต่เราลง OS แบบ 32-bits ไป ตัว Kernel ของ OS ก็จะเข้าถึง Memory ได้เพียงส่วนหนึ่งเท่านั้น แต่ในปัจจุบันคอมพิวเตอร์ส่วนใหญ่ที่เราซื้อใหม่ก็จะมาพร้อมกับ CPU ที่รองรับ Memory Address ขนาด 64-bits อยู่แล้ว เลยไม่จำเป็นต้องมีการแยกเหมือนช่วงเปลี่ยนผ่านตอนเราเด็ก ๆ

Asymmetric multiprocessing ความลับการประหยัดพลังงานของ Apple Silicon
ตั้งแต่ Apple Silicon เปิดตัวมา เรียกเสียงฮือฮ่าได้เยอะมาก ๆ เพราะประสิทธิภาพและการประหยัดพลังงานที่เหลือล้น จนออก M2 ทายาทออกมาแล้ว ความลับนึงที่ทำให้แตกต่างกันนั่นคือการออกแบบ Core ที่มีทั้ง P และ E Core มันต่างกันยังไง อ่านได้ในบทความนี้เลย

ในปัจจุบัน เรามีการทำ CPU ที่มี CPU Core หลายประเภทอยู่ใน CPU ตัวเดียวกัน หรือที่เราเรียกว่า Heterogenous CPU เช่นใน Apple Silicon เอง เขาจะมีทั้ง Performance และ Efficiency Core อยู่ด้วยกัน ซึ่ง Kernel เองก็ต้องถูกปรับแต่งมาเพื่อรองรับการทำงานด้วยเช่นกัน โดยเฉพาะส่วนที่เป็น Process Scheduler ที่จะต้องมีการกระจายงานตาม Core ที่มีและงานที่มี เพื่อให้ประหยัดพลังงานสูงสุด

ดังนั้น เมื่อเทคโนโลยีของ Hardware พัฒนาขึ้นเรื่อย ๆ Kernel ของ OS ต้องมีการพัฒนาเพิ่มขึ้นด้วยเช่นกัน ทำให้การพัฒนา Kernel ใหม่ ๆ จึงเกิดขึ้นตลอดเวลา เพื่อให้ได้ Kernel ที่ทำงานได้อย่างมีประสิทธิภาพสูงสุดใน Hardware ที่ใช้งาน

Huawei เคลม Kernel ของ Harmony NEXT OS มีประสิทธิภาพสูงกว่า Linux Kernel ถึง 3 เท่า

ก่อนหน้านี้ หลังจาก OS ที่ใช้งานบนอุปกรณ์ของ Huawei เช่น Smart Phone และ Tablet ทั้งหมด ใช้ Android เป็นพื้นฐาน และเขียน UI หรือหน้าจอเป็นเหมือน Skin ทับเข้าไปในชื่อว่า HarmonyOS แต่เราน่าจะได้ข่าวมาบ้างแล้วละว่า Huawei ถอด Google Service ออกจากอุปกรณ์ของตนไป เพราะ Android และ Google เป็นบริษัทที่อยู่ใน USA แต่ Huawei เป็นของจีนที่มีสงครามทางเศรษฐกิจกันอยู่

Huawei มารอบนี้บอกเลยว่า เราได้ทำการพัฒนา OS เป็นของตัวเอง และ พูดชัดเจนว่า OS ตัวนี้จะเป็น OS ที่ผลิตขึ้นมาเองใน Huawei ทั้งตัว ไม่ได้เป็น Skin ทับระบบอื่น ๆ อีกที และยังเคลมหนักมากว่า Kernel ที่ Huawei ผลิตขึ้นมานั้นจะมีประสิทธิภาพสูงกว่า Linux Kernel ถึง 3 เท่าเลย

โดยสาเหตุที่มันประสิทธิภาพสูงกว่านั้น เขาบอกว่า เขาใช้สิ่งที่เรียกว่า "heterogenous native-like" หรือก็คือ ออกแบบมาเพื่อ Heterogenous CPU ไปเลย เพื่อให้ OS สามารถให้ประสบการณ์การใช้งานที่ลื่นไหลได้ ซึ่งเราจะบอกว่ามันไม่ได้เป็นเรื่องใหม่อะไรนะ เพราะอย่างที่เราบอกไปว่า การออกแบบ Kernel พวกนี้ เราทำกันมานานแล้ว โดยเฉพาะบนโทรศัพท์ ที่ ARM เริ่มออกสถาปัตยกรรม big.LITTLE ซึ่งเป็น Heterogenous CPU นั่นเอง

เรื่องนี้เราคิดว่า มันคล้ายกับ Apple ที่เมื่อ เขาควบคุม Hardware เอง และเขียน Software มาเพื่อรองรับเป๊ะ ๆ ทำให้เขาสามารถดึงประสิทธิภาพของ Hardware ออกมาได้ดีมากขึ้นนั่นเอง ส่วนที่เขาเคลมว่า มันทำประสิทธิภาพได้ดีกว่า Linux ถึง 3 เท่า เราแอบมองว่าเป็นไปได้ เพราะ อย่างที่บอกคือ เมื่อเขาทำ Software ที่เฉพาะกับ Hardware เขาสามารถดึงประสิทธิภาพเพิ่มได้แน่ ๆ ในขณะที่ Linux เขาออกแบบมาให้ทำงานกับคอมพิวเตอร์ที่หลากหลายมากกว่า แต่ตรงกันข้ามอาจจะดึงประสิทธิภาพได้แย่กว่า

นอกจากนั้น HarmonyOS NEXT นั้นยังให้ความสำคัญกับความปลอดถัย เขาบอกว่ามันรองรับมาตรฐานความปลอดภัยทั้ง CC EAL 6+, ASIL-D และ IEC61508

สรุป

ดูจากสิ่งที่เกิดขึ้น การลงทุนเขียน OS ขึ้นมาทั้งตัว เป็นเรื่องที่แพงมาก ๆ ใช้งานมหาศาลมาก ๆ แต่ Huawei ก็เลือกที่จะทำ ซึ่งเราเข้าใจว่า น่าจะเป็นที่เรื่องความ Sanctions ทางการค้าของทั้ง จีน และ USA ทำให้ Huawei ต้องทำให้ตัวเองสามารถอยู่ได้ ถึงแม้ว่าจะไม่มี Technology ของ USA เลยเลือกที่จะทำแบบนี้ อาจจะต้องรอดูนะว่า สิ่งที่เขาเคลมมันจะเป็นจริงได้หรือไม่ และถ้า Kernel ที่ทำมามันเจ๋งกว่า Linux แล้วเป็น Open Source ก็น่าสนใจไม่น้อยเลยนะ

Read Next...

ทำไมภาษา Programming สมัยใหม่ ถึงไม่มี Pointer Concept

ทำไมภาษา Programming สมัยใหม่ ถึงไม่มี Pointer Concept

ทำไมภาษาบางตัวอย่างภาษา C มี Pointer ในขณะที่ภาษาใหม่ ๆ หลายตัว ไม่มี ทำไมการ Implement Concept หรือเครื่องมือเหล่านี้ถึงไม่ได้รับความนิยม วันนี้เราจะมาเล่าข้อดีข้อเสียของ Feature นี้ในภาษา Programming กัน...

รีวิว Yubikey C Bio ตัวใหม่ มีลายนิ้วมือแล้วนะ

รีวิว Yubikey C Bio ตัวใหม่ มีลายนิ้วมือแล้วนะ

หลังจากรอบก่อน เราซื้อ Yubikey มา เวลาผ่านไป ตอนนี้เขามีรุ่นใหม่ออกมาแล้ว บอกเลยว่า ตอนที่เห็น คืออยากได้มาก ๆ จนเวลาผ่านไปชาติเศษ ในที่สุด เราได้มันมาแล้ว กับ Yubikey C Bio จะมีอะไรใหม่ อะไรสนุก ๆ พิเศษกว่าตัวอื่นอย่างไร วันนี้เราจะมารีวิวให้ได้อ่านกัน...

Synology NAS และ SSD Cache จำเป็นจริง ๆ เหรอ เหมาะกับระบบแบบใด

Synology NAS และ SSD Cache จำเป็นจริง ๆ เหรอ เหมาะกับระบบแบบใด

ใน Synology NAS มีความสามารถนึงที่น่าสนใจคือ การใช้ SSD เป็น Cache สำหรับระบบ ที่ทำให้ Performance ในการอ่านเขียน เร็วขึ้นกว่าเดิมมาก ๆ แน่นอนว่า เราลองละ วันนี้เราจะมาเล่าให้อ่านกันว่า หากใครคิดที่จะทำ มันเหมาะ หรือ ไม่เหมาะกับการใช้งานของเรา...

รีวิว Photomator App แต่งรูปรับจบทั้ง macOS, iPad และ iPhone มี AI ด้วยนะ

รีวิว Photomator App แต่งรูปรับจบทั้ง macOS, iPad และ iPhone มี AI ด้วยนะ

หลายปีที่ผ่านมาพยายามหาโปรแกรมอื่นมาแทน Lightroom เพื่อจะได้ไม่ต้องจ่าย Subscription จนวันนี้เรามาเจอแล้ว ตัวเต่งเข้ามาที่หนึ่งตอนนี้เลย กับ Photomator จะแทนได้มั้ย อ่านได้ในรีวิวนี้เลย...