Tại sao đôi khi tôi cần phải khởi động lại máy tính của mình sau khi cài đặt phần mềm mới và vào những lúc khác thì không?
Có bất kỳ lý do tại sao nó cần khởi động lại này hoặc tại sao nó không phải luôn luôn theo cách này hay cách khác?
Tại sao đôi khi tôi cần phải khởi động lại máy tính của mình sau khi cài đặt phần mềm mới và vào những lúc khác thì không?
Có bất kỳ lý do tại sao nó cần khởi động lại này hoặc tại sao nó không phải luôn luôn theo cách này hay cách khác?
Câu trả lời:
Nó phụ thuộc.
Nếu phần mềm đang được cài đặt ảnh hưởng đến một phần không thể thiếu của hệ điều hành thì cần phải khởi động lại. Ví dụ một kernel mới cho hệ điều hành.
Trên các hệ thống Windows, nó thường được sử dụng vì người dùng bị coi là quá ngu ngốc khi sử dụng máy tính của họ đúng cách. Ví dụ, Microsoft công bố chi tiết về cách thay đổi "Loại nút" được sử dụng để kết nối mạng trên trang web của mình , bao gồm hướng dẫn "khởi động lại máy tính" khi tất cả những gì được yêu cầu là khởi động lại dịch vụ mạng như chi tiết tại đây . Bởi vì chúng tôi, vì người dùng quá ngu ngốc để khởi động lại một dịch vụ, chúng tôi được yêu cầu khởi động lại mọi thứ.
Đối với một số phần mềm, tôi đã đi đến kết luận rằng đó là một thói quen và thường không cần thiết ngay cả khi được yêu cầu làm như vậy. Nếu tôi không nghĩ rằng một phần mềm đáng lẽ phải làm bất cứ điều gì quan trọng đối với hệ điều hành, tôi có xu hướng không bận tâm và không gặp phải bất kỳ vấn đề nào (và nếu có vấn đề thì họ sẽ dễ dàng giải quyết).
Đôi khi một phần mềm sẽ tạo ra một sự thay đổi không thể có hiệu lực trong khi máy tính đang sử dụng. Một số lý do có thể là - một tệp đang được sử dụng, sự thay đổi chỉ có thể xảy ra trong quá trình khởi động máy tính, có thể có một vấn đề bảo mật chỉ có thể được thực hiện trước khi máy tính hoạt động mạng, có thể trình quét vi-rút sẽ can thiệp vào cài đặt, dựng lên.
Đôi khi, đó chỉ là lập trình cẩu thả của các nhà phát triển.
Tôi chắc chắn có nhiều hơn nữa.
Thông thường khi bạn cài đặt phần mềm mới, một dll (tệp) được sử dụng bởi nhiều gói phần mềm khác cần phải được nâng cấp lên phiên bản mới. (Điều này rất có thể là trường hợp khi nâng cấp ứng dụng bạn đã cài đặt.)
Nếu dll đang được sử dụng bởi một ứng dụng đang chạy, một phần của nó sẽ được tải vào bộ nhớ và phần còn lại sẽ được đọc từ đĩa khi cần thiết. Do đó, dll sẽ bị khóa trên đĩa. (Hãy nghĩ về các vấn đề nếu nó không bị khóa!)
Một DLL bị khóa không thể được cập nhật, vì vậy trình cài đặt sẽ yêu cầu các cửa sổ thay thế DLL bằng phiên bản mới vào lần tiếp theo khi máy được khởi động lại. Do đó cần phải khởi động lại.
Một số trình cài đặt tốt hơn sẽ cho bạn biết các ứng dụng nên được đóng lại trước khi chạy trình cài đặt, vì vậy hãy để DLL được cập nhật mà không cần khởi động lại. Tuy nhiên, điều đó làm cho giao diện người dùng của trình cài đặt phức tạp hơn và dẫn đến nhiều cuộc gọi hỗ trợ hơn.
Trình cài đặt cho một ứng dụng cũng có thể khiến ứng dụng lưu trạng thái của nó, tự tắt nó, sau đó khởi động lại sau khi DLL được cập nhật. Điều này chỉ có thể được thực hiện nếu DLL được sử dụng bởi một ứng dụng duy nhất. Hầu hết các ứng dụng tự cập nhật làm điều này - đây sẽ là chuẩn mực cho các ứng dụng thị trường đại chúng khi có nhiều người dùng.
Tất cả những điều trên có thể dẫn đến logic phức tạp khó kiểm tra. Trình cài đặt thử nghiệm mất nhiều thời gian, vì bạn cần cố gắng đoán mọi trạng thái mà máy của người dùng có thể ở. Vì vậy, tốt nhất là trình cài đặt phải đơn giản và luôn hoạt động, ngay cả khi nó dẫn đến một vài lần khởi động lại cho người dùng .
Thông thường, người dùng quyết định mua một ứng dụng khác do khởi động lại trình cài đặt, vì vậy người bán dành thời gian (tiền) làm việc cho những gì cần thiết để khiến người dùng mua ứng dụng của họ.
Bạn có thường xuyên gặp sự cố sau khi cài đặt một ứng dụng tự sắp xếp khi bạn khởi động lại không? Hãy nghĩ về chi phí hỗ trợ của rất nhiều người dùng gọi điện với các vấn đề được sắp xếp chỉ với một lần khởi động lại. Nó có thể nhanh chóng trở thành một nhà phát triển để luôn luôn khiến người dùng thực hiện khởi động lại sau khi cài đặt phần mềm của bạn ngay cả khi bạn nghĩ rằng nó không cần thiết.
Hầu hết các hệ điều hành và phần mềm được viết vào thời mà đĩa và bộ nhớ tốn rất nhiều tiền. Hiện tại có một động thái cho các ứng dụng có một bản sao riêng của tất cả các dll họ sử dụng, do đó thực hiện nâng cấp tẩy, nhưng sử dụng nhiều không gian lưu trữ hơn.
Trên các máy chủ, việc này được thực hiện với "container", tuy nhiên "container" không hoạt động tốt cho phần mềm máy tính để bàn, vì bạn muốn có thể truy cập dữ liệu được lưu bởi một ứng dụng bằng ứng dụng bao phấn. (Nếu không, chỉ cần sử dụng iPhone.)
Lý do là bởi vì nếu bạn không: bạn sẽ sụp đổ. Từ Raymond Chen :
Ngay cả khi bạn thay thế một tệp đang sử dụng, vẫn có thể có mã trong hệ thống muốn sử dụng phiên bản cũ. Ví dụ: giả sử bạn có hai tệp hoạt động cùng nhau:
- A.dll
- B.dll
Bạn phát hành một bản vá cập nhật cả hai tệp, nhưng
A.dll
đang được sử dụng. Không vấn đề gì. Bạn chỉ cần thay thế cả hai. Do đó, các chương trình vẫn đang sử dụngA.dll
tiếp tục sử dụng phiên bản cũ, nhưng các chương trình mới sẽ sử dụng phiên bản mới. Và tất cả các chương trình có được phiên bản mới củaB.dll
.Bây giờ một chương trình đang sử dụng cái cũ
A.dll
quyết định gọi một hàm. Nó tự nhiên mong đợi phiên bản cũ củaB.dll
, nhưng thay vào đó nó lại có phiên bản mới. Tùy thuộc vào loại thay đổi bạn đã thực hiệnB.dll
, cuộc gọi này có thể hoạt động hay hoặc nó có thể bị sập. Cả hai DLL đều cho rằng đối tác của nó đến từ cùng một bộ phù hợp.
Thành thật mà nói, nó ít hoạt động hơn (và do đó ít $$ hơn) về phía các nhà phát triển phần mềm cho rằng các bản cập nhật sẽ luôn dẫn đến việc khởi động lại. Đây có lẽ là một quyết định của các quầy đậu như của các nhà phát triển.
Cuối cùng, có rất ít bản cập nhật không thể, trong một thế giới lý tưởng, được thực hiện mà không cần khởi động lại, nhưng phải mất rất nhiều kế hoạch trước, và có một số rủi ro, với nhiều loại cấu hình có thể có mà một hệ thống có thể có.
Nó phải được thực hiện với thực tế là rất khó để thay đổi mã vì nó đang chạy mà không gây ra một số vấn đề lớn. Giải pháp: dừng mọi thứ trước khi thay đổi mã, theo cách đó bạn có thể chắc chắn không có gì đang chạy. Đây là một vụ tấn công vũ phu mà phần lớn không cần thiết nhiều lần được cho là bắt buộc, nhưng nó có thể thực sự cần thiết, đặc biệt nếu bạn tình cờ cập nhật mã đặc biệt quan trọng. Thực sự có cả một công ty chuyên thực hiện các bản cập nhật mà KHÔNG yêu cầu khởi động lại cho mã đặc biệt quan trọng này. Cách mà họ làm là trong bài viết này http://www.ksplice.com/apers .
Bạn được yêu cầu khởi động lại khi các tệp hệ thống quan trọng cho Windows đang được sửa đổi, vì Windows không cho phép các tệp này được sửa đổi trong khi chúng đang được sử dụng. Vì vậy, hầu hết các bản cập nhật từ Windows Update đều yêu cầu khởi động lại, cũng như các chương trình tự tích hợp vào Windows (như phần mềm chống vi-rút). Cho đến khi bạn khởi động lại, Windows không thể thực hiện vài bước cuối cùng cần thiết để "cài đặt" chương trình.
Bạn có thể so sánh điều này với Linux, điều hiếm khi yêu cầu bạn khởi động lại. Ngay cả khi bạn được yêu cầu khởi động lại, bạn thường chỉ cần đăng xuất và đăng nhập lại. Điều này là do môi trường Linux điển hình bao gồm nhiều chương trình riêng biệt khác nhau hoạt động cùng nhau để tạo ra một hệ điều hành hoàn chỉnh. Nếu một tệp quan trọng được sửa đổi trong khi cài đặt, bạn thường chỉ phải khởi động lại một chương trình cụ thể sử dụng tệp đó.