ทางบริษัทไมโครซอฟท์ (ประเทศไทย) ได้เป็นเจ้าภาพส่งผมและอาจารย์หลายท่านจากมหาวิทยาลัยไทยไปเข้างานสัมมนาและอบรม 2009 Asia Pacific Windows Core Workshop ระหว่างวันที่ 11-13 เดือนมีนาคมที่ผ่านมา งานนี้จัดขึ้นที่กรุงปักกิ่ง โดยมีไมโครซอฟท์รีเสิร์ชแล็บที่ปักกิ่งเป็นเจ้าภาพร่วมกับทางมหาวิทยาลัยปักกิ่ง งานนี้เขาพาไปสอนการทำงานของวินโดวส์เคอร์แนล และแจกซอร์สมาให้ลองศึกษาเล่นเพื่อสอนเด็กมหาวิทยาลัยไทยครับ สุดยอดมาก
การที่มีการสัมมนานี้เกิดจากทางไมโครซอฟท์พบว่าการเรียนการสอนด้านระบบปฏิบัติการทั้งโลก ถ้าลงลึกแล้วสถาบันการศึกษาส่วนใหญ่จะใช้ยูนิกซ์หรือลีนุกซ์เป็นหลัก เนื่องจากการที่เราจะศึกษาระบบปฏิบัติการให้ลึกแบบนักชีววิทยาเขาผ่ากบนั้น ต้องมีซอร์สโค้ด ทางยูนิกซ์ก็มีซอร์สของบีเอสดี (BSD) ให้เล่น ส่วนลีนุกซ์นั้นหายห่วงมีทุกอย่างให้แกะดูได้หมด ทางไมโครซอฟท์เลยลำบากรับคนมาทีได้แต่คนเล่นลีนุกซ์เสียหมด ดังนั้นทางไมโครซอฟท์รีเสิร์ชเอเชีย (MSRA) จึงได้ขอให้ทีมทางระบบปฏิบัติการจัดทำชุดซอฟต์แวร์สำหรับการเรียนการสอนวิชาระบบปฏิบัติการขึ้น ประกอบด้วย หนึ่ง WRK (Windows Research Kernel) ซึ่งเป็นซอร์สของเคอร์เนลวินโดวส์เซิร์ฟเวอร์ 2003 ที่แก้ไข คอมไพล์ แล้วรันได้จริงๆ (จริงนะครับ ลองทำมากับมือ) สอง CRK (Curriculum Resources Kit) ซึ่งเป็นเอกสารและเพาเวอร์พอยต์กองใหญ่ที่อธิบายเรื่องการออกแบบและการทำงานภายในของวินโดวส์เอ็นที สาม Project OZ ซึ่งเป็นเทคโนโลยีที่จะใช้ศึกษาระบบปฏิบัติการในโหมดของยูสเซอร์โดยไม่ต้องไปแก้เคอร์เนล ของเหล่านี้อยากจะกระตุ้นให้บรรจาอาจารย์ทั้งหลายเอาเรื่องวินโดวส์ไปสอนเด็กมากขึ้น ดูแล้วน่าเล่นมากเลยครับ
พอฝ่าอากาศหนาว (ราว 8 องศา) ในปักกิ่งไปถึงงานสัมมนา โดยสถานที่จัดอยู่ที่ห้องคอมพิวเตอร์ของมหาวิทยาลัยปักกิ่งเป็นส่วนใหญ่ เขาก็เริ่มโดยให้ คุณเดฟ โปรเบิร์ต (Dave Probert) ซึ่งเป็น Kernel Architect จาก Windows Core Operating System Division มาเล่าให้ฟังเรื่องสถาปัตยกรรมของวินโดวส์ ท่านเดฟนี่ระดับเทพเรื่องระบบปฏิบัติการเลยครับ ไม่เชื่อลองดูหนังสือระบบปฏิบัติการแสนฮิต Operating System Principles 7th Edition ของ Silberschatz ที่ใช้กันมากมายในเมืองไทยสิครับ ในบทกิติกรรมประกาศตอนต้นหนังสือบอกเลยว่าบทที่ 22 ที่ว่าด้วยวินโดวส์เอ็กซ์พีนั้นเอามาจากเอกสารที่ท่านเดฟเขียนเอาไว้ครับ ท่านเดฟก็มาเล่าให้ฟังวินโดวส์เอ็นที นั้นเกิดมาจาก VMS นะครับ ดังนั้นหลักการออกแบบจะไม่เหมือนยูนิกซ์ ท่านร่ายยาวว่า ยูนิกซ์นั้นออกแบบมาในยุค 1970 กว่าๆ ที่ ซีพียูช้า แรมน้อย ดิสก์เล็ก เทคนิคที่ดีในสมัยนั้นไม่ใช่ว่าจะดีในสมัยนี้แล้วเพราะไปพยายามแก้ปัญหาที่ไม่ใช่ปัญหาในระบบสมัยนี้ ท่านยังแซวว่าคนที่เรียนเรื่องระบบจากยูนิกซ์ชอบคิดว่าแนวคิดที่พ้นสมัยบางอย่างนั้นเป็นของเลอเลิศโดยไม่รู้เหตุผลเบื้องหลังเลย ส่วนวินโดวส์เอ็นทีนั้นใช้สมมุติฐานการออกแบบมาจากระบบราวปี 1990 คล้ายๆ กับเครื่องยุคปัจจุบัน เดฟยกตัวอย่างของการที่วินโดวส์เอ็นทีคุมการระบุชื่อออปเจค์โดยออปเจคเมเนจอร์ โดยไม่ผูกกับระบบไฟล์เหมือนยูนิกซ์ ทำให้วินโดวส์มีแนวโน้มจะทำพวกไคล์เอนต์แบบไร้ดิสก์ได้ดีกว่าอย่างไร
ผมว่าเวลาสองสามชั่วโมงที่ฟังท่านเดฟเล่าเรื่องวินโดวส์ เหมือนไปขึ้นเขาบู็ตึงฝึกมวยไท้เก๊กกับปรมาจารย์จางซานฟง ยังไงยังงั้น คือ ผมว่างานนี้คนฟังถ้าไม่สำเร็จยุทธก็จะกระอักเลือดฟุบคาโต๊ะแน่นอน โชคดีที่ผมทำงานด้านระบบปฏิบัติการและสอนมาสิบกว่าปี เลยรอดลงเขามาได้ครับ
ตอนกินข้าวโชคดี ทางท่านเดฟมานั่งกับเราชาวไทยแถมนั่งติดกับผม เดฟเล่าให้ฟังว่าตอนนี้เขากำลังออกแบบวินโดวส์ 8 และวินโดวส์ 9 อยู่ และท่านเดฟบอกผมว่าตอนนี้ด้านระบบปฏิบัติการแล้วกำลังน่าสนใจมาก เพราะฮาร์ดแวร์มีการเปลี่ยนแปลงมากไม่ว่าจะเป็นเรื่องมัลติคอร์ การเป็นไฮบริดคอมพิวติ้ง (คือการเอาฮาร์ดแวร์อื่นเช่น การ์ดแสดงผลมาทำงานร่วมประสานกับซีพียู) ทำให้เราต้องคิดออกแบบด้วยหลักการใหม่ๆ ที่จริงท่านท้าในห้องให้พวกเราฉีกตำราทิ้งแล้วถามตัวเองว่าระบบปฏิบัติการแห่งอนาคตสำหรับปี 2010 กว่าๆ น่าจะเป็นอย่างไร
ภาคบ่าย หลังอิ่มมาท่านเดฟก็ร่ายต่ออย่างรวดเร็วจนจบ ตามด้วยทางทีมมาสอนแล็บ ผมว่าดีมากและน่าตื่นตาตื่นใจเป็นที่สุด ทางทีมไมโครซอฟท์มีคุณอาร์คาดี้ รีติกค์ (Arkady Retik) มาพูดคร่าวๆเรื่องการใช้ WRK/CRK ที่ให้และแจกแผ่นซีดีด้วย จากนั้นคุณเซอร์เก ลิดิน (Serge Lidin) มาสอนแลป หลักการคือ ทางไมโครซอฟท์จะแจกเวอร์ช่วลพีซี 2007 (Vistual PC 2007) และเวอร์ชวลแมชีนของวินโดวส์เซิร์ฟเวอร์ 2003 ที่สามารถใช้งานได้ในเวอร์ชวลพีซีมาให้ เราสามารถจะใช้ Visual Studio Express 2005 ที่ลงไว้คอมไพล์และสร้างเคอร์เนลใหม่จากซอร์สที่ให้มาได้
การคอมไพล์เคอร์เนลก็ง่ายและเร็วมากเลยครับ ใช้เวลาไม่กี่นาทีเอง พอได้เคอร์เนลวินโดวส์เป็น DLL แล้ว ก็เอาไปลงใน C:\Windows\System32 ของวินโดวส์ที่รันในเวอร์ช่วลแมชีน หลังจากนั้นก็แก้ Boot Profile อีกหน่อย พอสั่งรีบูทเราสามารถเลือกเคอร์เนลเราได้ทันที เท่มาก ที่เด็ดกว่านั้นคือ เคอร์เนลที่ให้มีดีบักโหมด เราสามารถบอกเวอร์ชวลพีซีให้รอการเชื่อมต่อจากดีบักเกอร์ภายนอกได้ ทำให้เราใช้ดีบักเกอร์ windbg เชื่อมกับเคอร์เนลแล้วหยุดหรือ single step เคอร์เนลในเวอร์ชวลแมชีนได้ แค่นี้ผมก็ตาโตเท่าไข่ห่านแล้วครับ
สำหรับวันที่สอง ตอนเช้าเป็นการให้อาจารย์จากมหาวิทยาลัยในจีนและเกาหลีมาเล่าให้ฟังเรื่องการนำ WRK/CRK ไปสอน ผมว่าเขาลงลึกกว่าเรามาก เขาใช้ TA มากกว่าเราทำให้อาจารย์หนึ่งคนสอนเด็กได้มากกว่าเรามาก ตอนบ่ายก็มีอาจารย์จากมหาวิทยาลัยซินหัว กับ เป่ยหัง มาสอนให้ฟังเรื่องการสร้างซิสเต็มคอลล์ใหม่ในวินโดวส์ว่าทำได้อย่างไร ทำประเดี๋ยวก็ได้เลยครับ ยอดมาก
วันสุดท้าย เป็นการไปเยี่ยมไมโครซอฟท์รีเสิร์ชแล็บที่ปักกิ่ง เข้าไปที่ห้องสาธิตเขาก็แสดงของใหม่ๆ สองสามอย่าง คนก็ไปมุงโต๊ะไมโครซอฟท์เซอร์เฟสกันใหญ่ ผมกับรุ่นน้องแอบค่อนแคะว่าเป็นไอพอดทัชขนาดเท่าโต๊ะนั่นเอง แต่ก็สวยดีนะครับ เขาก็มาแสดงงานใหม่ๆ เช่น ฟีเจอร์ใหม่ๆใน ไมโครซอฟท์เวอร์ชวลเอิร์ธ เป็นต้น บ่ายๆ งานหมดแล้ว ทั้งทีมเลยไปดูวังต้องห้ามกัน หนาวมากๆ เลยแต่สวย ดูแล้วแปลกดี เช้าดูของไฮเทค บ่ายดูของโบราณ แต่ทั้งคู่ก็แสดงให้เราเห็นความยิ่งใหญ่ของจีนครับ
งานนี้ต้องขอบคุณทางไมโครซอฟท์ประเทศไทยที่ทำให้ผมได้เปิดหูเปิดตา ได้แผ่นเพาเวอร์พ้อยต์มาสอนหนังสือเทอมหน้าโดยไม่ต้องเตรียม ขอขอบคุณคุณศิริพรและคุณกิจจาที่ทำตัวเป็นเจ้าภาพที่น่ารักตลอดงาน และทำให้พวกเราได้กินเป็ดปักกิ่งเจ้าเก่าที่ดังที่สุดและอร่อยประทับใจทุกคนครับ (ตัวที่ล้านกว่าแล้วที่เขาย่างขายมาราวร้อยกว่าปี) อาจารย์ท่านใดสนใจก็สามารถสอบถามข้อมูลเพิ่มเติมไปทางไมโครซอฟท์ประเทศไทยได้นะครับ
Comments
น่าอิจฉา + น่าสนใจมากเลย
ทางไมโครซอฟต์มีแจกไฟล์ในเว็บบ้างไหมครับ
แจกในเว็บเค้าคงอดขายของมั้งครับ เพราะรู้สึกว่าจะยัดอะไรๆ เข้า Kernel ไปเยอะเลย (เลยพังง่าย?) ต่างกับฝั่งแมคที่กล้าเปิดเพราะ kernel มันก็พอๆ กะของ Linux ครับ
ผมว่าเค้าคงไม่ได้ใส่อะไรลงไปใน Kernel เยอะหรอกครับ เพราะกิน memory น้อยมากครับส่วนของ kernel และอีกอย่าง เห็นในบทควาบอกว่าคอมไพล์ได้เร็วมากเพียงไม่กี่นาทีด้วย
เอ เอา Windowing system ยัดเข้า Kernel มัน compile ไวได้ยังไงครับเนี่ย (หรือเพราะมัน "ยังไม่เสร็จ" เลยไว -- ผมชอบ concept แบบ X มากกว่าครับ ที่ส่งหน้าต่างข้ามไปมาได้ ตอน NLC เคยโดน remote มาแล้ว xhost + แล้วใช้ zenity ขึ้นมาแชตกันครับ) หรือว่ามีของดีอะไรกัน
ปล. ผม compile Xorg 7 ทั้งคืนครับ อ้าว xorg ก็ 7 เหมือนกันหรอเนี่ย
คำถามเรื่องอะไรพังๆ นี่มีคนถามตอนเรียน เขาก็หัวเราะบอกว่าขอไม่ตอบเพราะไม่ได้เป็นฝ่ายซับพอร์ต (^_^)
ส่วน code ของ kernel จะดีหรือแย่กว่าของ Mac กับ ลีนุกซ์นั้น ผมยังไม่เห็นต้องไล่ดู เพราะของ Linux เรามีแล้ว ผมว่าถ้่าเราไม่มีหลักฐานหรือไม่เห็นของจริงจะไปลงความเห็นว่าของใครดีหรือแย่กว่าก็คงเร็วไปนะครับ ^_^
เขาให้ซอร์สมาราว 800,000 บรรทัด โดยออกตัวว่าให้ได้ไม่หมดเพราะของเขาไม่ใช่ Opensource ต้อง clear Copyright กันมาก แถมยังสารภาพว่าต้องแก้ comment และปรับโครงสร้างแปลกๆออกไปเนื่องจากตอนพัฒนา นักพัฒนาของเขาเอา Debugging Code พวก #ifdef ไว้มากทีเดียว พอใช้ได้แล้วก็ไม่ได้เอาออก ทำให้เข้าใจยากถ้าไม่ได้ clean
อ้อ ตอนเย็นเปิด package ดูให้ Design ที่กำกับแต่ละโมดูลมาเป็น Document ด้วยครับ ดีเหมือนกัน
ไอ้เรื่อง ifdef แล้วไม่ยอมเอาออกตอน Production นี่มันเป็นกันทุกที่จริงๆ แฮะ...
รู้สึกดีกับโค้ดที่เคยเขียนๆ ไปขึ้นเยอะครับ :P
LewCPE
lewcpe.com, @wasonliw
ธรรมดาครับ ของสวยกับของ Work ต้อง Work ก่อนครับ อีกอย่างพอเสร็จก็ต้องไปทำอย่างอื่นแล้วละครับ ^^
อ้อ สำหรับท่าน @LewCPE ก็มาเอาไปได้เลยเพราะท่านยังลงทะเบียนเรียน ป.โท
เดี๋ยวให้คน copy ไปให้นะครับ แต่ห้ามขึ้นเวบ เผื่อจะเอาไปทำวิจัยบ้างครับ
โอ้ เดี๋ยวไปฉกโดยไวเลยครับอาจารย์
LewCPE
lewcpe.com, @wasonliw
ทางไมโครซอฟต์แจกครับ ผ่านทางโครงการ Faculty network และ MSDNAA แต่ต้องเป็นอาจารย์ที่นำไปสอนหนังสือครับ เนื่องจากเอกสารบางส่วนติด Copyright เลยนำไปเผยแพร่ตรงกับสอนทางภาคอุตสาหกรรมไม่ได้
โอ้ ผมขอด้วยนะครับ :D
น่าจะได้นะครับ ผมอยู่ที่ห้องตอนบ่ายๆ ครับ
อยากได้ซอร์สของเคอร์เนลมาเล่นมั่งจัง
อือม ต้องไปลงเรียนหนังสือมังครับ เขาให้แจกได้แต่นักเรียน ผมพยายามจะเอามาสอนเด็กปริญญาโทที่ภาคคอมพิวเตอร์ที่เกษตรปีหน้า ไม่รู้คนจะสนใจแค่ไหน เดี๋ยวนี้ประเทศเราอ่อนแอลงมากเรื่อง system Technology เพราะเด็กมองว่าไม่ตรงที่เขาหากิน ถ้าไม่เรียนได้เป็นดี หรือไม่ค่อยตั้งใจเรียนวิชาพวกนี้เลย ส่วนผมเป็นพวก command line แต่เด็กมองว่าสนุกดีครับ
สำหรับบ้านเราเรียนพวกนี้ไปทำไม ผมว่าการเรียนกลไกทำให้เราใช้ของนั้นได้ดีขึ้น เหมือนเรารู้เรื่องกลไกรถยนตร์ เราก็จะรู้วิธีขับให้ได้ดีประหยัดและมีประสิทธิภาพขึ้น ผมเองไม่ได้มองว่าเราต้องรู้จนออกแบบสร้าง OS กันได้ แต่ความรู้นี้ทำให้เราปรับเพิ่มประสิทธิภาพ ระบบเซอร์ฟเวอร์ เครือข่าย ระบบสตอร์เรจ ได้ดีขึ้นมากครับ ได้แค่นั้นก็เป็นประโยชน์มากมายแล้วกับองค์กร
อืมมม ต้องเรียน ม.6 อีกปี กับ ป.ตรี อีก 4 ปี
-*-
ขอบคุณครับอาจารย์
My Blog / hi5 / Facebook / Follow me
My Blog
ถ้าเปิดสอน เด็กเก่าไปนั่งฟังได้ไหมครับเนี่ย :D สงสัยเกิดเร็วไปหน่อย = ="
อ่านแล้วอยากกลับไปเรียน OS กับอาจารย์อีกรอบเลยครับ
อยากลองใช้ gcc คอมไพล์ เอ้ย นอกเรื่อง
อือม ท้าทาย ท้าทาย ผมว่าลำบากเน้อ
ผมว่า Intel C++ Compiler นี่พอมีลุ้นนะ
LewCPE
lewcpe.com, @wasonliw
เคอร์เนลน่าจะเป็น C ธรรมดานะ เล็กจิ๊ดเดียว นึกหน้าตาตอนใช้ STL ไม่ออก หรือว่า PCB ใช้ STL?
ใช่ไงครับ CPP Compiler เลยน่าจะคอมไพล์ผ่าน
LewCPE
lewcpe.com, @wasonliw
เกินจินตนาการ
mingw?
ผมน่ะอยากลองใส่ Grid ลงไปเหมือน XGrid ของ Apple น่ะ มีใครใจถึงไหมเนี่ย ^_^
ถ้าได้ไปลองนั่งฟังด้วยคงจะดีเหมือนกันน่ะ
ยังไงก็ขอบคุณสำหรับข้อมูลน่ะครับ
แล้วเค้าใช้อะไรคอมไพล์ตัวคอมไพล์เลอร์อะครับ
แล้วก้อจะมีคอมไพล์เลอร์เค้าใช้อะไรคอมไพล์โอเอสอะครับ
อ่านเจอตรงอาจารย์บอก "ต้องแก้ comment" นี่ขำกลิ้งเลย (ส่วนตัวนะครับ) แต่ก่อนเพื่อนๆ มันจะบอกว่า "มรึงลอง grep keyword พวกหยาบๆ ดูดิ" ฮ่าาา เพียบเลยครับ แต่ Kernel คงไม่มีมั๊ง นั่นมัน App
มียุคนึงที่ซอร์สของ Windows 2000 หลุดออกมา นั่นก็เพียบเลยครับ
F_ck Sh_t วิ่งกันเต็มโค้ด
LewCPE
lewcpe.com, @wasonliw
มีเรื่องขำๆ จากคำว่า "หลุดออกมา" คือเมื่อ แปดปีที่แล้ว พันทิพย์พลาซ่า มีแผ่นซีดีรวม (เถื่อน) ในนั้นมี source code MS-DOS 6.22 ติดมาด้วย ขำกันจะตาย มาได้ไง ของจริงด้วยนะ มาครบเลย...
เหมือนผมจะมีซีดีซอร์สโค๊ด Win2000 อยู่ แต่หายไปไหนแล้วไม่รู้ แผ่นสกรีนด้วยนะ สกรีนลายดำๆ
ลองเอาโค้ด Quake 3 มาดูก็ได้ครับ อันนั้นแจกฟังแฟงก็เต็มไปหมดเหมือนกัน
pittaya.com
pittaya.com
วินโดวส์รุ่นหนึ่งๆ เขาใช้คนทำกี่คนกันหรือครับ อ.
นักเรียนผู้น่าสงสาร ก็จะหมดข้ออ้างโดดเรียนว่า "เรียนทำไม Unix ไม่เห็นได้ใช้เลย"
แล้วก็มาบ่นว่า Windows อ่อนจัง แทน ฮิฮิ