ทำไมฉันต้องรีสตาร์ทคอมพิวเตอร์หลังจากติดตั้งซอฟต์แวร์ใหม่


38

ทำไมบางครั้งฉันต้องรีสตาร์ทคอมพิวเตอร์หลังจากติดตั้งซอฟต์แวร์ใหม่และในเวลาอื่น ๆ ที่ฉันไม่ได้?

มีเหตุผลใดที่ทำให้ต้องมีการรีบูตครั้งนี้หรือทำไมมันไม่ได้เป็นอย่างใดอย่างหนึ่งหรือไม่?


2
โดยพื้นฐานแล้วการอัปเดตรีจิสทรี
Dwayne Samuels

4
ในบางกรณีคุณสามารถรีสตาร์ทเซอร์วิสแทนการรีบู๊ต
ccook


8
@dwayne ปัญหาส่วนใหญ่อยู่กับไฟล์ที่ถูกล็อค (ที่กำลัง) ไม่ใช่รีจิสทรี มีการใช้รีจิสตรีเพื่อบอก windows ให้ไฟล์แทนที่ในการรีสตาร์ท แต่ไม่ใช่เหตุผลที่จำเป็นต้องรีสตาร์ท
Ian Ringrose

คำตอบ:


38

มันขึ้นอยู่กับ.

หากซอฟต์แวร์ที่ติดตั้งมีผลกระทบกับส่วนหนึ่งของระบบปฏิบัติการจำเป็นต้องรีสตาร์ท ตัวอย่างเช่นเคอร์เนลใหม่สำหรับระบบปฏิบัติการ

สำหรับระบบ Windows นั้นมักจะใช้เพราะผู้ใช้นั้นถือว่าโง่เกินกว่าที่จะใช้คอมพิวเตอร์ได้อย่างถูกต้อง ตัวอย่างเช่น Microsoft เผยแพร่รายละเอียดของวิธีที่จะเปลี่ยน "ประเภทโหนด" ใช้สำหรับเครือข่ายในเว็บไซต์ของตนรวมทั้งคำแนะนำในการ "รีสตาร์ทคอมพิวเตอร์" เมื่อสิ่งที่จะต้องเป็นผู้เริ่มต้นใหม่ของการให้บริการเครือข่ายตามรายละเอียดที่นี่ เนื่องจากเราในฐานะผู้ใช้ที่โง่เกินกว่าจะรีสตาร์ทบริการเราจึงได้รับคำสั่งให้รีสตาร์ททุกอย่าง

สำหรับซอฟต์แวร์บางชิ้นฉันได้ข้อสรุปว่ามันเป็นนิสัยและมักไม่จำเป็นแม้ว่าจะบอกให้ทำเช่นนั้นก็ตาม หากฉันไม่คิดว่าซอฟต์แวร์ชิ้นหนึ่งควรทำสิ่งใดก็ตามที่สำคัญกับระบบปฏิบัติการฉันมักจะไม่รำคาญและยังไม่เคยประสบปัญหาใด ๆ (และหากมีปัญหาพวกเขาก็จะแก้ปัญหาได้ง่าย)


6
ฉันเห็นด้วย. ทุกวันนี้เว้นแต่ว่าพวกเขาจะอัพเดทไฟล์ระบบหรือไดรเวอร์ที่สำคัญไม่มีเหตุผลที่จะต้องรีสตาร์ทระบบ บ่อยครั้งที่นักพัฒนาซอฟต์แวร์ที่ต้องการให้แน่ใจว่าพวกเขา "ครอบคลุมฐานทั้งหมด"
surfasb

1
หากเป็นตัวติดตั้งที่เก่ากว่าก็อาจขอรีบูตโดยไม่คำนึงถึง หากเป็นนักพัฒนาที่ไร้เดียงสาอาจถูกตั้งค่าให้พร้อมท์ให้รีสตาร์ทโดยไม่คำนึงว่าจำเป็นหรือไม่ ตัวติดตั้งรุ่นใหม่ที่ใช้ประโยชน์จากฟีเจอร์อย่างถูกต้องใน MSI นั้นสามารถรายงานได้ว่าแอปพลิเคชั่นใดที่กำลังถือไฟล์ที่จำเป็น (dll, ฯลฯ ) เปิดขึ้นมาและแจ้งให้ผู้ใช้หยุดมัน - เฉพาะเมื่อพวกเขาเลือก สำหรับการรีสตาร์ท มันค่อนข้างเลอะเทอะไม่มีอะไรบังคับให้ devs ใช้ MSI แต่ก็ใช้งานได้ไม่ถูกต้อง
สเตฟานี

15

บางครั้งซอฟต์แวร์บางส่วนจะทำการเปลี่ยนแปลงที่ไม่สามารถมีผลบังคับใช้ในขณะที่คอมพิวเตอร์กำลังใช้งานอยู่ อาจมีสาเหตุบางประการ - ไฟล์กำลังถูกใช้งานการเปลี่ยนแปลงสามารถเกิดขึ้นได้ในระหว่างการบูทเครื่องคอมพิวเตอร์อาจมีปัญหาด้านความปลอดภัยซึ่งสามารถทำได้ก่อนที่คอมพิวเตอร์จะมีเครือข่ายที่ใช้งานอยู่อาจสแกนไวรัสอาจรบกวน ติดตั้ง

บางครั้งมันเป็นเพียงการเขียนโปรแกรมเลอะเทอะโดยนักพัฒนา

ฉันแน่ใจว่ามีอีกมากมาย


1
โดยเฉพาะอย่างยิ่งการเปลี่ยนแปลงใดที่ไม่สามารถมีผลเมื่อคอมพิวเตอร์ใช้งานอยู่
Anderson Green

13

บ่อยครั้งที่คุณติดตั้งซอฟต์แวร์ใหม่ dll (ไฟล์) ที่ใช้โดยแพคเกจซอฟต์แวร์อื่น ๆ จำนวนมากจำเป็นต้องได้รับการอัพเกรดเป็นเวอร์ชั่นใหม่ (นี่น่าจะเป็นกรณีที่อัพเกรดแอพพลิเคชั่นที่คุณติดตั้งไว้แล้ว)

หาก dll กำลังถูกใช้งานโดยแอปพลิเคชันที่กำลังทำงานส่วนหนึ่งของมันจะถูกโหลดลงในหน่วยความจำและส่วนที่เหลือจะถูกอ่านจากดิสก์เมื่อจำเป็น ดังนั้น dll จะถูกล็อคบนดิสก์ (คิดว่าปัญหาถ้ามันไม่ได้ล็อค!)

ไม่สามารถอัปเดต DLL ที่ถูกล็อกดังนั้นโปรแกรมติดตั้งจะขอให้ windows แทนที่ DLL ด้วยเวอร์ชันใหม่ในครั้งถัดไปที่รีสตาร์ทเครื่อง ดังนั้นจึงจำเป็นต้องรีสตาร์ท

โปรแกรมติดตั้งที่ดีกว่าบางตัวจะบอกแอปพลิเคชันที่ควรปิดก่อนที่จะเรียกใช้โปรแกรมติดตั้งดังนั้นให้อัปเดต DLL โดยไม่ต้องรีสตาร์ท อย่างไรก็ตามสิ่งนี้ทำให้ UI ของโปรแกรมติดตั้งนั้นซับซ้อนและนำไปสู่การสนับสนุนที่มากขึ้น

โปรแกรมติดตั้งสำหรับแอปพลิเคชันยังสามารถรับแอปพลิเคชันเพื่อบันทึกสถานะปิดตัวเองลงแล้วรีสตาร์ทหลังจาก DLL ได้รับการปรับปรุง สิ่งนี้สามารถทำได้ก็ต่อเมื่อมีการใช้ DLL โดยแอปพลิเคชันเดียว แอปพลิเคชันที่อัปเดตด้วยตนเองส่วนใหญ่ทำสิ่งนี้ - นี่ควรเป็นบรรทัดฐานสำหรับแอปพลิเคชันในตลาดที่มีผู้ใช้จำนวนมาก

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

ไม่บ่อยครั้งที่ผู้ใช้ตัดสินใจซื้อแอปพลิเคชันอื่นเนื่องจากการติดตั้งรีสตาร์ทดังนั้นผู้จำหน่ายจึงใช้เวลา (เงิน) ในการทำงานกับสิ่งที่จำเป็นเพื่อให้ผู้ใช้ซื้อแอปพลิเคชันของตน

คุณมีปัญหาบ่อยครั้งหลังจากติดตั้งแอปพลิเคชันที่แยกตัวเองออกเมื่อคุณรีบูตหรือไม่ นึกถึงค่าใช้จ่ายในการสนับสนุนของผู้ใช้จำนวนมากที่พูดโทรศัพท์ด้วยปัญหาที่แยกออกเพียงรีบูต มันสามารถกลายเป็น temping อย่างรวดเร็วในฐานะนักพัฒนาเพื่อให้ผู้ใช้ทำการรีบูตหลังจากติดตั้งซอฟต์แวร์ของคุณแม้ว่าคุณคิดว่าไม่จำเป็นก็ตาม

----------

ระบบปฏิบัติการส่วนใหญ่และซอฟต์แวร์ที่ถูกเขียนขึ้นในสมัยเมื่อ diskspace และหน่วยความจำมีค่าใช้จ่ายจำนวนมากของเงิน ขณะนี้มีการย้ายแอปพลิเคชันที่จะมีสำเนาส่วนตัวของ dll ทั้งหมดที่ใช้ดังนั้นจึงทำการอัพเกรดยางลบ แต่ใช้พื้นที่เก็บข้อมูลเพิ่มเติม

บนเซิร์ฟเวอร์สิ่งนี้กำลังดำเนินการกับ "ตู้คอนเทนเนอร์" อย่างไรก็ตาม "ตู้คอนเทนเนอร์" ใช้งานไม่ได้กับซอฟต์แวร์เดสก์ท็อปเนื่องจากคุณต้องการเข้าถึงข้อมูลที่บันทึกไว้โดยแอปพลิเคชันเดียวด้วยแอปพลิเคชัน anther (ไม่เช่นนั้นใช้ iPhone)


7

เหตุผลก็เพราะถ้าคุณไม่: คุณจะผิดพลาด จากRaymond Chen :

แม้ว่าคุณจะแทนที่ไฟล์ที่ใช้งานอยู่อาจยังมีรหัสในระบบที่ต้องการใช้เวอร์ชันเก่า ตัวอย่างเช่นสมมติว่าคุณมีสองไฟล์ที่ทำงานร่วมกัน:

  • A.dll
  • B.dll

คุณออกชุดข้อมูลแก้ไขที่อัพเดตทั้งสองไฟล์ แต่A.dllใช้งานอยู่ ไม่มีปัญหา. คุณเพียงแค่แทนที่พวกเขาทั้งสอง เป็นผลให้โปรแกรมที่ยังคงใช้งานอยู่A.dllใช้รุ่นเก่า แต่โปรแกรมใหม่จะใช้โปรแกรมใหม่ B.dllและโปรแกรมที่ทุกคนได้รับรุ่นใหม่ของ

ตอนนี้โปรแกรมที่ใช้ตัวเก่าA.dllตัดสินใจที่จะเรียกใช้ฟังก์ชั่นมันเป็นไปตามธรรมชาติคาดว่าจะเป็นเวอร์ชั่นเก่าB.dllแต่จะได้รับเวอร์ชั่นใหม่แทน การB.dllโทรนี้อาจใช้งานได้ - หรืออาจขัดข้องทั้งนี้ขึ้นอยู่กับประเภทของการเปลี่ยนแปลงที่คุณทำ DLLs ทั้งสองสมมติว่าคู่ค้ามาจากชุดที่ตรงกันเหมือนกัน


มีวิธีแก้ไขสิ่งที่คุณอธิบาย แต่พวกเขาต้องการความคิด
Daniel R Hicks

2

เพื่อความซื่อสัตย์อย่างสมบูรณ์มันใช้งานได้น้อยลง (และน้อยกว่า $$) ในส่วนของผู้พัฒนาซอฟต์แวร์ที่จะสมมติว่าการอัพเดตจะส่งผลให้มีการรีสตาร์ทเสมอ นี่อาจเป็นการตัดสินใจของตัวนับถั่วมากเท่าที่เป็นของผู้พัฒนา

ในที่สุดมีการอัปเดตน้อยมากที่ไม่สามารถทำได้ในโลกอุดมคติโดยไม่ต้องรีสตาร์ท แต่ใช้การวางแผนล่วงหน้าจำนวนมากและมีความเสี่ยงเนื่องจากมีการกำหนดค่าที่หลากหลายที่ระบบอาจมี


0

มันเกี่ยวข้องกับความจริงที่ว่ามันยากที่จะเปลี่ยนรหัสเพราะมันทำงานโดยไม่ทำให้เกิดปัญหาที่สำคัญ วิธีแก้ปัญหา: หยุดทุกอย่างก่อนที่จะเปลี่ยนรหัสด้วยวิธีนี้คุณจะมั่นใจได้ว่าไม่มีอะไรทำงาน มันเป็นแฮ็คที่ดุร้ายซึ่งส่วนใหญ่ไม่จำเป็นหลายครั้งที่มันถูกคาดคะเน แต่มันก็มีความจำเป็นอย่างยิ่งโดยเฉพาะอย่างยิ่งถ้าคุณเกิดการอัพเดทรหัสสำคัญ จริงๆแล้วมีทั้ง บริษัท ที่เชี่ยวชาญด้านการปรับปรุงที่ไม่ต้องรีบูตสำหรับรหัสที่สำคัญอย่างยิ่ง วิธีการที่พวกเขาทำมันอยู่ในบทความนี้http://www.ksplice.com/paper


-1

คุณต้องเริ่มต้นใหม่เมื่อไฟล์ระบบที่สำคัญสำหรับ Windows กำลังถูกแก้ไขเนื่องจาก Windows ไม่อนุญาตให้แก้ไขไฟล์เหล่านี้ขณะที่ใช้งานอยู่ ดังนั้นการอัปเดตส่วนใหญ่จาก Windows Update จึงจำเป็นต้องรีบูตเช่นเดียวกับโปรแกรมที่รวมตัวเองเข้ากับ Windows (เช่นโปรแกรมป้องกันไวรัส) จนกว่าคุณจะเริ่มระบบใหม่ Windows จะไม่สามารถดำเนินการตามขั้นตอนสองสามขั้นตอนสุดท้ายที่จำเป็นในการ "ติดตั้ง" โปรแกรม

คุณสามารถเปรียบเทียบสิ่งนี้กับ Linux ซึ่งไม่ค่อยต้องการให้คุณรีบูต แม้ว่าคุณจะถูกขอให้รีบูตก็ตามคุณก็แค่ต้องออกจากระบบและกลับมาใหม่เพราะนี่เป็นเพราะสภาพแวดล้อม Linux โดยทั่วไปประกอบด้วยโปรแกรมที่แตกต่างกันมากมายที่ทำงานร่วมกันเพื่อสร้างระบบปฏิบัติการที่สมบูรณ์ หากไฟล์สำคัญถูกแก้ไขในระหว่างการติดตั้งโดยปกติคุณจะต้องรีสตาร์ทโปรแกรมเฉพาะโปรแกรมหนึ่งที่ใช้ไฟล์นั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.