Khác biệt giữa bản sửa đổi của “Nhân hệ điều hành”

Nội dung được xóa Nội dung được thêm vào
Không có tóm lược sửa đổi
Không có tóm lược sửa đổi
Dòng 26:
 
Trong hầu hết các trường hợp, [[boot loader]] bắt đầu thực thi nhân hệ điều hành trong [[supervisor mode]],<ref name="supervisor">The highest privilege level has various names throughout different architectures, such as supervisor mode, kernel mode, CPL0, DPL0, Ring 0, etc. See [[Ring (computer security)]] for more information.</ref> Nhân hệ điều hành sau đó được nạp phần đầu của nó và thi hành tiến trình đầu tiên. Sau khi khởi động hoàn tất, nhân hệ điều hành không được thực thi ngay lập tức, nó chỉ nằm trong lời trả lời cho sự kiện bên ngoài(''Ví dụ:'', thông qua [[hàm hệ thống]],các ứng dụng sẽ yêu cầu dịch vụ từ nhân hệ điều hành, hoặc thông qua [[ngắt]] được sử dụng bởi phần cứng để thông báo cho nhân hệ điều hành về các sự kiện xảy ra). Ngoài ra, nhân hệ điều hành còn đặc biệt cung cấp một vòng lặp được thực thi bất cứ lúc nào mà không có tiến trình nào được thực thi; nó thường được gọi là ''tiến trình nhàn rỗi''.
 
== Quản lý tài nguyên ==
Các khía cạnh chính cần thiết trong quản lý tài nguyên là xác định miền thực thi (không gian địa chỉ) và cơ chế bảo vệ được sử dụng để làm trung gian cho quyền truy cập vào tài nguyên trong miền.<ref name="Wulf742">Wulf 1974 pp.337–345</ref> Kernels cũng cung cấp các phương pháp để [[đồng bộ hóa]] và [[giao tiếp liên tiến trình]] (IPC). Các triển khai này có thể nằm trong chính hạt nhân hoặc hạt nhân cũng có thể dựa vào các tiến trình khác đang chạy. Mặc dù kernels phải cung cấp IPC để cung cấp quyền truy cập vào các phương tiện được cung cấp bởi [[tiến trình]] khác, kernels cũng phải cung cấp các chương trình đang chạy với một phương thức để thực hiện yêu cầu truy cập các phương tiện này. Kernel cũng chịu trách nhiệm chuyển đổi ngữ cảnh giữa các tiến trình hoặc [[Luồng (điện toán)|threads]].
 
== Quản lý bộ nhớ ==
{{More|Quản lý bộ nhớ}}Kernel có toàn quyền truy cập vào bộ nhớ của hệ thống và phải cho phép các tiến trình truy cập an toàn vào bộ nhớ này khi chúng yêu cầu. Thường thì bước đầu tiên để thực hiện việc này là định địa chỉ ảo, thường đạt được bằng cách phân trang và/hoặc phân đoạn. Định địa chỉ ảo cho phép kernel chuyển đổi một địa chỉ vật lý nhất định dường như là một địa chỉ khác, địa chỉ ảo. Không gian địa chỉ ảo có thể khác nhau đối với các tiến trình khác nhau; bộ nhớ mà một tiến trình truy cập tại một địa chỉ (ảo) cụ thể có thể là bộ nhớ khác với bộ nhớ mà một tiến trình khác truy cập tại cùng một địa chỉ. Điều này cho phép mọi chương trình hoạt động như thể nó là chương trình duy nhất (ngoại trừ hạt nhân) đang chạy và do đó ngăn chặn các ứng dụng gây lỗi cho nhau.<ref name="OS-Concepts">Silberschatz 1991</ref>
 
Trên nhiều hệ thống, địa chỉ ảo của chương trình có thể tham chiếu đến dữ liệu hiện không có trong bộ nhớ. Lớp định hướng được cung cấp bởi địa chỉ ảo cho phép hệ điều hành sử dụng các kho lưu trữ dữ liệu khác, chẳng hạn như [[Ổ đĩa cứng|ổ cứng]], để lưu trữ những gì nếu không sẽ phải lưu lại trong bộ nhớ chính ([[RAM]]). Kết quả là hệ điều hành có thể cho phép các chương trình sử dụng nhiều bộ nhớ hơn so với bộ nhớ vật lý có sẵn của hệ thống. Khi một chương trình cần dữ liệu hiện không có trong RAM, CPU báo hiệu cho hạt nhân và hạt nhân phản hồi bằng cách ghi nội dung của khối bộ nhớ không hoạt động vào ổ đĩa (nếu cần) và thay thế nó bằng dữ liệu được chương trình yêu cầu. Sau đó, chương trình có thể được tiếp tục lại từ điểm đã dừng. Đề án này thường được gọi là phân trang nhu cầu.
 
Định địa chỉ ảo cũng cho phép tạo các phân vùng ảo của bộ nhớ trong hai vùng riêng biệt, một vùng được dành riêng cho hạt nhân ([[kernel space]]) và vùng còn lại cho ứng dụng ([[Không gian người dùng|user space]]). Bộ xử lý không cho phép các ứng dụng xử lý bộ nhớ dành cho kernel,do đó ngăn ứng dụng làm hỏng kernel đang chạy. Phân vùng cơ bản của không gian bộ nhớ này đã đóng góp nhiều vào các thiết kế hiện tại của các kernel có mục đích chung thực tế và gần như phổ biến trong các hệ thống, mặc dù một số nhân nghiên cứu (ví dụ, Singularity) có các cách tiếp cận khác.
 
== Quản lý thiết bị ==
Để thực hiện các chức năng hữu ích, các tiến trình cần quyền truy cập vào các [[thiết bị ngoại vi]] được kết nối với máy tính, được điều khiển bởi nhân thông qua [[trình điều khiển thiết bị]]. Trình điều khiển thiết bị là một chương trình máy tính cho phép hệ điều hành tương tác với thiết bị phần cứng. Nó cung cấp cho hệ điều hành thông tin về cách điều khiển và giao tiếp với một phần cứng nhất định.Trình điều khiển là một phần quan trọng và quan trọng đối với một ứng dụng chương trình. Mục tiêu thiết kế của một trình điều khiển là sự trừu tượng; chức năng của trình điều khiển là chuyển các lệnh gọi hàm trừu tượng do hệ điều hành ủy quyền (lệnh gọi lập trình) thành các lệnh gọi thiết bị cụ thể. Về lý thuyết, thiết bị sẽ hoạt động chính xác với trình điều khiển phù hợp. Trình điều khiển thiết bị được sử dụng cho những thứ như card màn hình, card âm thanh, máy in, máy quét, modem và card mạng LAN.
 
Ở cấp độ phần cứng, các phần tóm tắt phổ biến của trình điều khiển thiết bị bao gồm:
 
* Giao tiếp trực tiếp
* Sử dụng giao diện cấp cao (Video [[BIOS]])
* Sử dụng trình điều khiển thiết bị cấp thấp hơn (trình điều khiển file sử dụng trình điều khiển đĩa)
* Mô phỏng công việc với phần cứng, trong khi thực hiện một điều gì đó hoàn toàn khác
 
Và ở cấp độ phần mềm, tóm tắt trình điều khiển thiết bị bao gồm:
 
* Cho phép hệ điều hành truy cập trực tiếp vào tài nguyên phần cứng
* Chỉ triển khai nguyên thủy
* Triển khai giao diện cho phần mềm không phải trình điều khiển như [[TWAIN]]
* Triển khai một ngôn ngữ (thường là một ngôn ngữ cấp cao như [[PostScript]])
 
Ví dụ, để hiển thị cho người dùng một cái gì đó trên màn hình, một ứng dụng sẽ đưa ra một yêu cầu tới hạt nhân, nó sẽ chuyển tiếp yêu cầu tới trình điều khiển hiển thị của nó, sau đó sẽ chịu trách nhiệm thực sự vẽ ký tự/pixel.<ref name="OS-Concepts" />
 
Kernel phải duy trì một danh sách các thiết bị có sẵn. Danh sách này có thể được biết trước (ví dụ trên một [[hệ thống nhúng]] trong đó hạt nhân sẽ được viết lại nếu phần cứng có sẵn thay đổi), do người dùng định cấu hình (điển hình trên các PC cũ hơn và trên các hệ thống không được thiết kế cho mục đích cá nhân) hoặc được phát hiện bởi hệ điều hành tại thời điểm chạy (thường được gọi là [[plug and play]]).Trong các hệ thống plug-and-play, trình quản lý thiết bị trước tiên thực hiện quét trên các bus phần cứng khác nhau, chẳng hạn như [[PCI|Peripheral Component Interconnect]] (PCI) hoặc [[USB|Universal Serial Bus]] (USB), để phát hiện các thiết bị đã cài đặt, sau đó tìm kiếm trình điều khiển thích hợp.
 
Vì quản lý thiết bị là một chủ đề rất cụ thể về [[hệ điều hành]], các trình điều khiển này được xử lý khác nhau theo từng loại thiết kế nhân, nhưng trong mọi trường hợp, nhân phải cung cấp I/O để cho phép trình điều khiển truy cập vật lý vào thiết bị của chúng thông qua một số [[Cổng máy tính|cổng]] hoặc bộ nhớ vị trí. Các quyết định quan trọng phải được đưa ra khi thiết kế hệ thống quản lý thiết bị, vì trong một số thiết kế, quyền truy cập có thể liên quan đến chuyển mạch ngữ cảnh, làm cho hoạt động rất tốn CPU và dễ gây ra chi phí hiệu suất đáng kể.
 
== Xem thêm ==
{{thể loại Commons|Operating system kernels}}
* [[Giao tiếp liên tiến trình|Giao tiếp liên tiến trình.]]
* [[Hệ điều hành|Hệ điều hành.]]
Hàng 71 ⟶ 103:
*[[David A. Peterson]], [[Nitin Indurkhya]], Patterson, ''Computer Organization and Design'', [[Morgan Koffman]] <small>(ISBN 1-55860-428-6)</small>;
*[[B.S. Chalk]], ''Computer Organisation and Architecture'', Macmillan P.(ISBN 0-333-64551-0).
 
{{sơ khai công nghệ}}
== Liên kết ngoài ==
{{Sơ khai tin học}}
{{thể loại Commons|Operating system kernels}}{{Wikiversity|Kernel Models|at=Operating Systems/Kernel Models}}
 
* [http://widefox.pbwiki.com/Kernel%20Comparison%20Linux%20vs%20Windows Detailed comparison between most popular operating system kernels]
{{Hệ điều hành}}