มีอะไรใหม่ภายใน Windows 8

by lew
30 October 2012 - 02:27

การอัพเกรดไปยัง Windows 8 อาจจะทำให้คนตื่นเต้นกับหน้าจอ Windows 8 UI แต่จริงๆ แล้วการอัพเกรดระบบปฎิบัติการ มีส่วนสำคัญคือการอัพเกรดเคอร์เนลภายในที่ต้องมีการยกเครื่องกันจำนวนมาก ตอนนี้หลายเว็บก็เริ่มมีรายงานว่าภายในมีอะไรปรับปรุงกันบ้างแล้ว

Sandbox: ฟีเจอร์สำคัญที่มาพร้อมกับระบบ Tile ของ Windows 8 UI จากเดิมที่แอพพลิเคชั่นจะทำงานเสมือนว่า "ผู้ใช้" เป็นคนทำด้วยตัวเอง ทำให้แอพพลิเคชั่นสามารถทำอะไรก็ได้ที่ผู้ใช้ทำได้ทั้งที่บางทีเป็นอันตราย เช่น ลบข้อมูลทั้งหมดของผู้ใช้คนนั้น ในระบบ Sandbox จะคล้ายกับแอนดรอยด์ที่แอพพลิเคชั่นต้องประกาศตัวก่อนอย่างละเอียดว่าจะทำอะไรบ้าง เช่น เข้าอ่านภาพใน Gallery (เขียนไม่ได้), หรือเชื่อมต่ออินเทอร์เน็ต ระบบนี้ทำให้แม้แอพพลิเคชั่นจะมีบั๊กจนถูกโจมตี ความเสียหายก็ยังจำกัดอยู่ในสิทธิที่ขอไว้เท่านั้น

Application lifecycle: จากเดิมที่แอพพลิเคชั่นจะรันอยู่เสมอไม่ว่าเราจะใช้งานมันหรือไม่ ใน Windows 8 แอพพลิเคชั่นที่เป็น Windows 8 UI จะถูกจัดการด้วยระบบ lifecycle แบบใหม่ ที่คล้ายกับระบบปฎิบัติการแบบโมบายรุ่นใหม่ๆ ของค่ายอื่น โดยแอพพลิเคชั่นจะถูกแบ่งออกเป็น 3 โหมด คือ Running (ผู้ใช้ใช้งานอยู่), Suspended (ผู้ใช้หยุดใช้แล้ว แต่เตรียมรอเผื่อเรียก), NotRunning (ผู้ใช้ปิดแอพพลิเคชั่น หรือระบบสั่งปิดเอง)

ระบบการรันแบบนี้ทำให้ระบบปฎิบัติการสามารถจัดการแอพพลิเคชั่นที่ไม่ถูกใช้งานมาเป็นเวลานานๆ ให้ออกไปจากหน่วยความจำได้ โดยยังมีกระบวนการเรียกคืนข้อมูลกลับมาให้เหมือนเดิม ในกรณีที่ระบบปฎิบัติการเป็นตัวปิดแอพพลิเคชั่นเองโดยผู้ใช้ไม่ได้สั่ง

Connected Standby: คือส่วนจัดการพลังงานใหม่ที่ทำงานเข้ากับ ARM มันสามารถลดการทำงานลงอย่างรวดเร็วเมื่อผู้ใช้ปิดหน้าจอ และเมื่อเกิด event ที่ซีพียูต้องกลับมาทำงาน เช่น มีข้อมูลเน็ตเวิร์คเข้ามา ก็สามารถกลับมาทำงานได้อย่างรวดเร็วอีกเช่นกัน การรองรับฟีเจอร์นี้ทำให้เครื่องไม่จำเป็นต้องมีโหมด Sleep อีกต่อไป เพราะเปิดเครื่องไว้เฉยๆ แต่ทำงานในโหมดนี้ก็ได้ผลใกล้เคียงกัน

สำหรับ x86 โหมด Connected Standby คือการรองรับฟีเจอร์ S0ix ของอินเทลที่มีใน Moorestown, Medfield, และ Clover Trail (ที่ดูเหมือนจะทำไม่ทัน แต่ในงานเปิดตัวผมเห็นแท็บเล็ตบางตัวใช้งานแล้ว) รวมถึง Haswell ที่จะออกในปีหน้าด้วย โดยมีสองโหมดสำคัญคือ S0i1 ที่ผู้ใช้หยุดทำงานมองหน้าจอเฉยๆ จะสามารถเข้าโหมดนี้ได้ภายใน 600uS และออกจากโหมดนี้ได้ภายใน 1.2mS นั่นคือเอามือแตะจอก็กลับมาทำงานในโหมด S0 ประมวลผลต่อได้ ส่วนอีกโหมดที่กินพลังงานต่ำกว่าคือ S0i3 จะปิดการทำงานทุกส่วนเหลือแต่แรม สามารถเข้าโหมดนี้ได้ใน 450uS และออกจากโหมดนี้ใน 3.1mS เรียกว่ากดสวิตซ์เปิดก็มาทันที

tickless kernel: ระบบการจัดการงานของซีพียูในวินโดวส์ก่อนหน้านี้ คือ เคอร์เนลจะเข้ามาจัดการงานทุกๆ 15.6mS สำหรับ Windows 7 หากเรากำหนดงานล่วงหน้าไว้นานกว่านั้น เช่น sleep(100mS) งานจะถูกนำไปรอที่รอบการทำงานของเคอร์เนลรอบที่ใกล้เวลาที่กำหนดที่สุด สภาพเช่นนี้ทำให้ซีพียูไม่สามารถหาช่วงเวลาหยุดทำงานนานๆ ได้แม้จะไม่มีงานทำ เพราะเคอร์เนลต้องขึ้นมาตรวจสอบงานทุกๆ 15.6mS ใน Windows 8 จึงอาศัยคิวงานจริงๆ ของเคอร์เนลว่าต้องรอไปอีกนานเพียงใดจึงมีงานต่อไป เช่นหากมีคำสั่ง sleep(100mS) แล้วไม่มีงานอื่น เคอร์เนลก็จะตั้งเวลาไปอีก 100mS ข้างหน้าแล้วขึ้นมาจัดการงานตามเวลาจริง ทำให้ซีพียูสามารถเข้าสู่โหมดประหยัดพลังงานในช่วงเวลาที่นานขึ้นเมื่อมีโอกาส

ความสามารถนี้ต้องอาศัยตัวจับเวลาในซีพียู ที่ชื่อว่า High Precision Event Timer มีมาในซีพียูตั้งแต่ช่วงปี 2007 และลินุกซ์รองรับแทบจะทันทีโดยความช่วยเหลือของอินเทล (Linux Symposium) ส่วนไมโครซอฟท์นั้นรองรับให้เรียกใช้ผ่าน API ได้แต่ไม่ได้ใช้กับเคอร์เนลของตัวเองจนกระทั่ง Windows 8

High Entropy ASLR: ระบบ ASLR (Address Space Layout Randomization) เป็นการ "ซ่อน" ไลบรารีจากแฮกเกอร์ที่เจาะเข้ามาในแอพพลิเคชั่นได้สำเร็จ ทำให้สามารถวางโค้ดที่รันได้แทนไลบรารี เพราะหน่วยความจำในพื้นที่ที่เป็นข้อมูลนั้น ไม่สามารถส่งบอกให้ซีพียูมารันได้ ปัญหาคือ ASLR ก่อนหน้านี้ไม่ได้ออกแบบมาให้ "สุ่ม" ดีพอจนบางครั้งแฮกเกอร์สามารถคาดเดาที่อยู่ของไลบรารีได้สำเร็จ แต่ HEASLR จะเป็นการบังคับให้การสุ่มมีสูงมากในพื้นที่หน่วยความจำ 64 บิต การหาไลบรารีจึงเป็นเรื่องยากมาก โดยการสุ่มพื้นที่หน่วยความจำ จะใช้ตัวสุ่มแบบฮาร์ดแวร์ของ Ivy Bridge เข้ามาประกอบทำให้เลขที่สุ่มได้คาดเดาได้ยากขึ้น

ห้ามเคอร์เนลรันโค้ดใน userspace: บั๊กความปลอดภัยอย่างหนึ่งที่เจอกัน คือ แฮกเกอร์สามารถวางข้อมูลไว้ในหน่วยความจำส่วนของผู้ใช้ได้สำเร็จ จากนั้นจึงกระตุ้นบั๊กบางอย่างของเคอร์เนลเพื่อให้เคอร์เนลมารันโค้ดส่วนนั้น ใน Windows 8 และ Ivy Bridge ในฟีเจอร์ Supervisor Mode Execution Prevention (SMEP) หน่วยความจำของเคอร์เนลจะถูกแยกออกจากผู้ใช้มากขึ้น เมื่อรันในโหมดเคอร์เนล จะไม่สามารถไปเรียกโค้ดในส่วนของผู้ใช้ขึ้นมารันได้อีก ลดความเสี่ยงในกรณีที่มีบั๊กในเคอร์เนลลงไปได้

Copy-on-Write Memory: หน่วยความจำของแต่ละโปรเซสในเครื่องนั้นมักมีข้อมูลเหมือนๆ กันจำนวนมาก เพราะการเปิดไลบรารีตัวเดียวกัน ที่ผ่านมาเมื่อมีการเรียกไลบรารีตัวเดียวกัน เคอร์เนลก็จะชี้ให้โปรเซสทั้งหมดชี้ไปที่หน่วยความจำกายภาพ (physical memory) ที่เดียวกันเพื่อประหยัดพื้นที่ แต่ใน Windows 8 เพิ่มขึ้นมาว่า หากหน่วยความจำพื้นที่ใดๆ ที่ข้อมูลเหมือนกัน จะถูกรวมให้ชี้ไปที่หน่วยความจำกายภาพเดียวกัน โดยไม่สนใจว่าเป็นไลบรารีหรือไม่ และหากมีการเปลี่ยนแปลงข้อมูลจากโปรเซสใด จึงค่อยสำเนาหน่วยความจำชุดนั้นแล้วให้โปรเซสที่เขียนชี้ไปยังหน่วยความจำผืนใหม่ ส่วนนี้แล้วแต่ว่างานที่ทำมีหน่วยความจำเหมือนกันเยอะหรือไม่ เช่น Virtualization หากเครื่องเสมือนที่รันอยู่ใช้ระบบปฎิบัติการรุ่นเดียวกันหมด ข้อมูลก็จะซ้ำกันจำนวนมาก

ที่มา - ArsTechnica, AnandTech, MSDN

Blognone Jobs Premium