ทำไมบางครั้งฉันต้องรีสตาร์ทคอมพิวเตอร์หลังจากติดตั้งซอฟต์แวร์ใหม่และในเวลาอื่น ๆ ที่ฉันไม่ได้?
มีเหตุผลใดที่ทำให้ต้องมีการรีบูตครั้งนี้หรือทำไมมันไม่ได้เป็นอย่างใดอย่างหนึ่งหรือไม่?
ทำไมบางครั้งฉันต้องรีสตาร์ทคอมพิวเตอร์หลังจากติดตั้งซอฟต์แวร์ใหม่และในเวลาอื่น ๆ ที่ฉันไม่ได้?
มีเหตุผลใดที่ทำให้ต้องมีการรีบูตครั้งนี้หรือทำไมมันไม่ได้เป็นอย่างใดอย่างหนึ่งหรือไม่?
คำตอบ:
มันขึ้นอยู่กับ.
หากซอฟต์แวร์ที่ติดตั้งมีผลกระทบกับส่วนหนึ่งของระบบปฏิบัติการจำเป็นต้องรีสตาร์ท ตัวอย่างเช่นเคอร์เนลใหม่สำหรับระบบปฏิบัติการ
สำหรับระบบ Windows นั้นมักจะใช้เพราะผู้ใช้นั้นถือว่าโง่เกินกว่าที่จะใช้คอมพิวเตอร์ได้อย่างถูกต้อง ตัวอย่างเช่น Microsoft เผยแพร่รายละเอียดของวิธีที่จะเปลี่ยน "ประเภทโหนด" ใช้สำหรับเครือข่ายในเว็บไซต์ของตนรวมทั้งคำแนะนำในการ "รีสตาร์ทคอมพิวเตอร์" เมื่อสิ่งที่จะต้องเป็นผู้เริ่มต้นใหม่ของการให้บริการเครือข่ายตามรายละเอียดที่นี่ เนื่องจากเราในฐานะผู้ใช้ที่โง่เกินกว่าจะรีสตาร์ทบริการเราจึงได้รับคำสั่งให้รีสตาร์ททุกอย่าง
สำหรับซอฟต์แวร์บางชิ้นฉันได้ข้อสรุปว่ามันเป็นนิสัยและมักไม่จำเป็นแม้ว่าจะบอกให้ทำเช่นนั้นก็ตาม หากฉันไม่คิดว่าซอฟต์แวร์ชิ้นหนึ่งควรทำสิ่งใดก็ตามที่สำคัญกับระบบปฏิบัติการฉันมักจะไม่รำคาญและยังไม่เคยประสบปัญหาใด ๆ (และหากมีปัญหาพวกเขาก็จะแก้ปัญหาได้ง่าย)
บางครั้งซอฟต์แวร์บางส่วนจะทำการเปลี่ยนแปลงที่ไม่สามารถมีผลบังคับใช้ในขณะที่คอมพิวเตอร์กำลังใช้งานอยู่ อาจมีสาเหตุบางประการ - ไฟล์กำลังถูกใช้งานการเปลี่ยนแปลงสามารถเกิดขึ้นได้ในระหว่างการบูทเครื่องคอมพิวเตอร์อาจมีปัญหาด้านความปลอดภัยซึ่งสามารถทำได้ก่อนที่คอมพิวเตอร์จะมีเครือข่ายที่ใช้งานอยู่อาจสแกนไวรัสอาจรบกวน ติดตั้ง
บางครั้งมันเป็นเพียงการเขียนโปรแกรมเลอะเทอะโดยนักพัฒนา
ฉันแน่ใจว่ามีอีกมากมาย
บ่อยครั้งที่คุณติดตั้งซอฟต์แวร์ใหม่ dll (ไฟล์) ที่ใช้โดยแพคเกจซอฟต์แวร์อื่น ๆ จำนวนมากจำเป็นต้องได้รับการอัพเกรดเป็นเวอร์ชั่นใหม่ (นี่น่าจะเป็นกรณีที่อัพเกรดแอพพลิเคชั่นที่คุณติดตั้งไว้แล้ว)
หาก dll กำลังถูกใช้งานโดยแอปพลิเคชันที่กำลังทำงานส่วนหนึ่งของมันจะถูกโหลดลงในหน่วยความจำและส่วนที่เหลือจะถูกอ่านจากดิสก์เมื่อจำเป็น ดังนั้น dll จะถูกล็อคบนดิสก์ (คิดว่าปัญหาถ้ามันไม่ได้ล็อค!)
ไม่สามารถอัปเดต DLL ที่ถูกล็อกดังนั้นโปรแกรมติดตั้งจะขอให้ windows แทนที่ DLL ด้วยเวอร์ชันใหม่ในครั้งถัดไปที่รีสตาร์ทเครื่อง ดังนั้นจึงจำเป็นต้องรีสตาร์ท
โปรแกรมติดตั้งที่ดีกว่าบางตัวจะบอกแอปพลิเคชันที่ควรปิดก่อนที่จะเรียกใช้โปรแกรมติดตั้งดังนั้นให้อัปเดต DLL โดยไม่ต้องรีสตาร์ท อย่างไรก็ตามสิ่งนี้ทำให้ UI ของโปรแกรมติดตั้งนั้นซับซ้อนและนำไปสู่การสนับสนุนที่มากขึ้น
โปรแกรมติดตั้งสำหรับแอปพลิเคชันยังสามารถรับแอปพลิเคชันเพื่อบันทึกสถานะปิดตัวเองลงแล้วรีสตาร์ทหลังจาก DLL ได้รับการปรับปรุง สิ่งนี้สามารถทำได้ก็ต่อเมื่อมีการใช้ DLL โดยแอปพลิเคชันเดียว แอปพลิเคชันที่อัปเดตด้วยตนเองส่วนใหญ่ทำสิ่งนี้ - นี่ควรเป็นบรรทัดฐานสำหรับแอปพลิเคชันในตลาดที่มีผู้ใช้จำนวนมาก
จากทั้งหมดที่กล่าวมาสามารถนำไปสู่ตรรกะเชิงซ้อนที่ยากต่อการทดสอบ การติดตั้งการทดสอบใช้เวลานานเนื่องจากคุณต้องลองเดาว่าทุกสถานะของเครื่องของผู้ใช้อาจเป็นเรื่องที่ดีที่สุดที่โปรแกรมติดตั้งจะใช้งานง่ายและใช้งานได้เสมอ .
ไม่บ่อยครั้งที่ผู้ใช้ตัดสินใจซื้อแอปพลิเคชันอื่นเนื่องจากการติดตั้งรีสตาร์ทดังนั้นผู้จำหน่ายจึงใช้เวลา (เงิน) ในการทำงานกับสิ่งที่จำเป็นเพื่อให้ผู้ใช้ซื้อแอปพลิเคชันของตน
คุณมีปัญหาบ่อยครั้งหลังจากติดตั้งแอปพลิเคชันที่แยกตัวเองออกเมื่อคุณรีบูตหรือไม่ นึกถึงค่าใช้จ่ายในการสนับสนุนของผู้ใช้จำนวนมากที่พูดโทรศัพท์ด้วยปัญหาที่แยกออกเพียงรีบูต มันสามารถกลายเป็น temping อย่างรวดเร็วในฐานะนักพัฒนาเพื่อให้ผู้ใช้ทำการรีบูตหลังจากติดตั้งซอฟต์แวร์ของคุณแม้ว่าคุณคิดว่าไม่จำเป็นก็ตาม
ระบบปฏิบัติการส่วนใหญ่และซอฟต์แวร์ที่ถูกเขียนขึ้นในสมัยเมื่อ diskspace และหน่วยความจำมีค่าใช้จ่ายจำนวนมากของเงิน ขณะนี้มีการย้ายแอปพลิเคชันที่จะมีสำเนาส่วนตัวของ dll ทั้งหมดที่ใช้ดังนั้นจึงทำการอัพเกรดยางลบ แต่ใช้พื้นที่เก็บข้อมูลเพิ่มเติม
บนเซิร์ฟเวอร์สิ่งนี้กำลังดำเนินการกับ "ตู้คอนเทนเนอร์" อย่างไรก็ตาม "ตู้คอนเทนเนอร์" ใช้งานไม่ได้กับซอฟต์แวร์เดสก์ท็อปเนื่องจากคุณต้องการเข้าถึงข้อมูลที่บันทึกไว้โดยแอปพลิเคชันเดียวด้วยแอปพลิเคชัน anther (ไม่เช่นนั้นใช้ iPhone)
เหตุผลก็เพราะถ้าคุณไม่: คุณจะผิดพลาด จากRaymond Chen :
แม้ว่าคุณจะแทนที่ไฟล์ที่ใช้งานอยู่อาจยังมีรหัสในระบบที่ต้องการใช้เวอร์ชันเก่า ตัวอย่างเช่นสมมติว่าคุณมีสองไฟล์ที่ทำงานร่วมกัน:
- A.dll
- B.dll
คุณออกชุดข้อมูลแก้ไขที่อัพเดตทั้งสองไฟล์ แต่
A.dll
ใช้งานอยู่ ไม่มีปัญหา. คุณเพียงแค่แทนที่พวกเขาทั้งสอง เป็นผลให้โปรแกรมที่ยังคงใช้งานอยู่A.dll
ใช้รุ่นเก่า แต่โปรแกรมใหม่จะใช้โปรแกรมใหม่B.dll
และโปรแกรมที่ทุกคนได้รับรุ่นใหม่ของตอนนี้โปรแกรมที่ใช้ตัวเก่า
A.dll
ตัดสินใจที่จะเรียกใช้ฟังก์ชั่นมันเป็นไปตามธรรมชาติคาดว่าจะเป็นเวอร์ชั่นเก่าB.dll
แต่จะได้รับเวอร์ชั่นใหม่แทน การB.dll
โทรนี้อาจใช้งานได้ - หรืออาจขัดข้องทั้งนี้ขึ้นอยู่กับประเภทของการเปลี่ยนแปลงที่คุณทำ DLLs ทั้งสองสมมติว่าคู่ค้ามาจากชุดที่ตรงกันเหมือนกัน
เพื่อความซื่อสัตย์อย่างสมบูรณ์มันใช้งานได้น้อยลง (และน้อยกว่า $$) ในส่วนของผู้พัฒนาซอฟต์แวร์ที่จะสมมติว่าการอัพเดตจะส่งผลให้มีการรีสตาร์ทเสมอ นี่อาจเป็นการตัดสินใจของตัวนับถั่วมากเท่าที่เป็นของผู้พัฒนา
ในที่สุดมีการอัปเดตน้อยมากที่ไม่สามารถทำได้ในโลกอุดมคติโดยไม่ต้องรีสตาร์ท แต่ใช้การวางแผนล่วงหน้าจำนวนมากและมีความเสี่ยงเนื่องจากมีการกำหนดค่าที่หลากหลายที่ระบบอาจมี
มันเกี่ยวข้องกับความจริงที่ว่ามันยากที่จะเปลี่ยนรหัสเพราะมันทำงานโดยไม่ทำให้เกิดปัญหาที่สำคัญ วิธีแก้ปัญหา: หยุดทุกอย่างก่อนที่จะเปลี่ยนรหัสด้วยวิธีนี้คุณจะมั่นใจได้ว่าไม่มีอะไรทำงาน มันเป็นแฮ็คที่ดุร้ายซึ่งส่วนใหญ่ไม่จำเป็นหลายครั้งที่มันถูกคาดคะเน แต่มันก็มีความจำเป็นอย่างยิ่งโดยเฉพาะอย่างยิ่งถ้าคุณเกิดการอัพเดทรหัสสำคัญ จริงๆแล้วมีทั้ง บริษัท ที่เชี่ยวชาญด้านการปรับปรุงที่ไม่ต้องรีบูตสำหรับรหัสที่สำคัญอย่างยิ่ง วิธีการที่พวกเขาทำมันอยู่ในบทความนี้http://www.ksplice.com/paper
คุณต้องเริ่มต้นใหม่เมื่อไฟล์ระบบที่สำคัญสำหรับ Windows กำลังถูกแก้ไขเนื่องจาก Windows ไม่อนุญาตให้แก้ไขไฟล์เหล่านี้ขณะที่ใช้งานอยู่ ดังนั้นการอัปเดตส่วนใหญ่จาก Windows Update จึงจำเป็นต้องรีบูตเช่นเดียวกับโปรแกรมที่รวมตัวเองเข้ากับ Windows (เช่นโปรแกรมป้องกันไวรัส) จนกว่าคุณจะเริ่มระบบใหม่ Windows จะไม่สามารถดำเนินการตามขั้นตอนสองสามขั้นตอนสุดท้ายที่จำเป็นในการ "ติดตั้ง" โปรแกรม
คุณสามารถเปรียบเทียบสิ่งนี้กับ Linux ซึ่งไม่ค่อยต้องการให้คุณรีบูต แม้ว่าคุณจะถูกขอให้รีบูตก็ตามคุณก็แค่ต้องออกจากระบบและกลับมาใหม่เพราะนี่เป็นเพราะสภาพแวดล้อม Linux โดยทั่วไปประกอบด้วยโปรแกรมที่แตกต่างกันมากมายที่ทำงานร่วมกันเพื่อสร้างระบบปฏิบัติการที่สมบูรณ์ หากไฟล์สำคัญถูกแก้ไขในระหว่างการติดตั้งโดยปกติคุณจะต้องรีสตาร์ทโปรแกรมเฉพาะโปรแกรมหนึ่งที่ใช้ไฟล์นั้น