Hệ điều hành là gì ?
Hệ điều hành tiếng anh là Operating system (OS) là phần mềm hệ thống quản lý phần cứng máy tính, tài nguyên hệ thống và cung cấp dịch vụ phổ biến cho các chương trình ứng dụng.
Vì sao cần hệ điều hành ?
Hệ điều hành thực hiện nhiệm vụ chia sẻ các tài nguyên hệ thống để sử dụng hiệu quả và phân bổ tài nguyên của bộ xử lý, lưu trữ hàng loạt, in ấn và các tài nguyên khác.
Cái gì điều khiển máy tính ?
Đối với các phần cứng như đầu vào và đầu ra và cấp phát bộ nhớ, hệ điều hành đóng vai trò trung gian giữa các chương trình và phần cứng máy tính, mặc dù mã nguồn ứng dụng thường được phần cứng thực thi trực tiếp nhưng hệ điều hành có vai trò điều phối và cấp phát các tài nguyên phần cứng. Hệ điều hành được thấy trên nhiều thiết bị không chỉ máy tính, từ điện thoại di động, máy chơi video game đến máy chủ web và các siêu máy tính.
Hệ điều hành máy tính để bàn và laptop (máy tính cá nhân – PC) chiếm ưu thế là Microsoft Windows với thị phần khoảng 82,74%. macOS của Apple Inc ở vị trí thứ hai (13,23%) và các hệ điều hành họ Linux được xếp chung ở vị trí thứ ba (1,57%).
Trong lĩnh vực di động (bao gồm cả điện thoại thông minh và máy tính bảng ), thị phần của Google Android chiếm tới 70% trong năm 2017. Theo dữ liệu quý 3 năm 2018, thị phần của Android trên điện thoại thông minh chiếm ưu thế với 87,5% và tăng trưởng 10,3% mỗi năm, tiếp theo là Apple’s iOS với 12,1% nhưng thị phần có xu hướng giảm 5,2% mỗi năm, trong khi các hệ điều hành khác chỉ còn 0,3%.
Các hệ điều hành họ Linux chiếm ưu thế trong các lĩnh vực máy chủ và siêu máy tính, ngoài ra còn các nhánh chuyên biệt khác của hệ điều hành này, như hệ thống nhúng và thực thi thời gian thực, được sử dụng cho nhiều ứng dụng.
Phân loại hệ điều hành
Đơn nhiệm vụ và đa nhiệm
Một hệ điều hành đơn nhiệm chỉ có thể chạy một chương trình tại một thời điểm, trong khi hệ điều hành đa nhiệm cho phép nhiều chương trình chạy đồng thời. Điều này được hệ điều hành thực hiện bằng cách chia sẻ thời gian, trong đó thời gian sử dụng bộ xử lý được chia thành nhiều luồng.
Các luồng này được đan xen lặp lại và được quản lý bởi một hệ thống con có nhiệm vụ lập lịch tác vụ của hệ điều hành. Trong đa nhiệm ưu tiên, hệ điều hành sẽ chia thời gian sử dụng CPU và dành một khoảng nhất định cho mỗi chương trình.
Các hệ điều hành giống Unix, như Solaris và Linux, AmigaOS Hỗ trợ đa nhiệm ưu tiên. Đa nhiệm hợp tác, CPU được chia thành các luồng để phân bổ thời gian sử dụng cho các luồng. Các phiên bản 16 bit của Microsoft Windows đã sử dụng đa nhiệm hợp tác. Các phiên bản 32 bit của cả Windows NT và Win9x đều sử dụng đa nhiệm ưu tiên.
Người dùng đơn và đa người dùng
Hệ điều hành một người dùng không có chức năng phân biệt người dùng về mặt sử dụng tài nguyên phần cứng (định nghĩa này khác với nhiều acc đăng nhập trên một máy), nhưng có thể cho phép nhiều chương trình chạy song song.
Hệ điều hành nhiều người dùng mở rộng khái niệm cơ bản về đa tác vụ với các phương thức xác định các tiến trình và tài nguyên, như không gian đĩa, cho nhiều người dùng và hệ thống cho phép nhiều người dùng tương tác với hệ thống cùng một lúc (ví dụ: nhiều người dùng trong cùng một mạng LAN sử dụng chung 1 ổ cứng và hệ điều hành).
Hệ điều hành phân tán là gì ?
Một hệ điều hành phân tán quản lý một nhóm các máy tính riêng biệt và kết hợp chúng như là một máy tính duy nhất. Sự phát triển của các máy tính nối mạng có thể được liên kết và giao tiếp với nhau đã tạo ra điện toán phân tán (Cloud computing). Tính toán phân tán được thực hiện trên nhiều máy. Khi các máy tính trong một nhóm hợp tác giải quyết một vấn đề, chúng tạo thành một hệ thống phân tán.
Templated
Trong một hệ điều hành, bối cảnh điện toán phân tán và điện toán đám mây, templating đề cập đến việc tạo một hình ảnh máy ảo duy nhất như một hệ điều hành khách, sau đó lưu nó làm công cụ cho nhiều máy ảo đang chạy. Kỹ thuật này được sử dụng cả trong ảo hóa, quản lý điện toán đám mây và phổ biến trong các trung tâm máy chủ lớn.
Hệ thống nhúng là gì ?
Hệ điều hành nhúng được thiết kế để sử dụng trong các hệ thống máy tính nhúng. Chúng được thiết kế để hoạt động trên các máy nhỏ như máy PDA với ít tài nguyên hơn. Nó có thể hoạt động với một số lượng tài nguyên hạn chế. Chúng được thiết kế rất nhỏ gọn và cực kỳ hiệu quả. Windows CE và Minix 3 là một số ví dụ về hệ điều hành nhúng.
Các thành phần của hệ điều hành
Nhiệm vụ chính của hệ điều hành
Các thành phần của một hệ điều hành có nhiệm vụ điều khiển các phần cứng của máy tính hoạt động cùng nhau. Tất cả phần mềm người dùng cần phải đi qua hệ điều hành để sử dụng bất kỳ phần cứng nào, dù đơn giản như chuột hay bàn phím hay phức tạp như Internet.
Lõi Kernel hệ điều hành là gì ?
Lõi hệ điều hành kết nối phần mềm ứng dụng với phần cứng của máy tính.
Với sự trợ giúp của phần mềm điều khiển và trình điều khiển thiết bị (driver), kernel (lõi) cung cấp mức độ kiểm soát cơ bản nhất đối với tất cả các thiết bị phần cứng của máy tính. Nó quản lý truy cập bộ nhớ cho các chương trình trên RAM, nó xác định chương trình nào có quyền truy cập vào tài nguyên phần cứng nào, nó thiết lập hoặc đặt lại trạng thái hoạt động của CPU để hoạt động tối ưu mọi lúc và tổ chức dữ liệu để lưu trữ tập tin trên các phương tiện như đĩa, băng, bộ nhớ flash, v.v.
Thực thi chương trình
Hệ điều hành cung cấp giao diện giữa chương trình ứng dụng và phần cứng máy tính, để chương trình ứng dụng chỉ có thể tương tác với phần cứng bằng cách tuân theo các quy tắc và quy trình được lập trình của hệ điều hành.
Hệ điều hành cũng là một tập hợp các dịch vụ giúp đơn giản hóa việc phát triển và thực thi các chương trình ứng dụng. Thực thi một chương trình ứng dụng liên quan đến việc tạo ra một quy trình bởi nhân hệ điều hành cấp phát không gian bộ nhớ và các tài nguyên khác, thiết lập mức độ ưu tiên cho chương trình trong các hệ thống đa tác vụ, tải mã nhị phân chương trình vào bộ nhớ và bắt đầu thực thi chương trình ứng dụng sau đó tương tác với người dùng và các thiết bị phần cứng.
Ngắt của hệ điều hành là gì ?
Ngắt là trung tâm của hệ điều hành, chúng cung cấp một cách hiệu quả để hệ điều hành tương tác và phản ứng với môi trường. (Phương án thay thế – hệ điều hành “xem” các nguồn đầu vào khác nhau là các sự kiện yêu cầu hành động – có thể được tìm thấy trong các hệ thống cũ có ngăn xếp rất nhỏ 50 hoặc 60 byte nhưng không thông dụng trong các hệ thống hiện đại có ngăn xếp lớn).
Lập trình dựa trên ngắt được hỗ trợ trực tiếp bởi hầu hết các CPU hiện đại. Các ngắt cung cấp cho máy tính một cách tự động lưu bối cảnh đăng ký cục bộ và chạy mã cụ thể để đáp ứng với các sự kiện. Ngay cả các máy tính rất cơ bản cũng hỗ trợ ngắt phần cứng và cho phép lập trình viên chỉ định mã có thể chạy khi sự kiện đó diễn ra.
Khi nhận được một ngắt, phần cứng của máy tính sẽ tự động tạm dừng bất kỳ chương trình nào đang chạy, lưu trạng thái của nó và chạy mã máy tính được liên kết trước đó với ngắt; điều này tương tự với việc đặt dấu trang vào một cuốn sách để đáp lại một cuộc gọi điện thoại. Trong các hệ điều hành hiện đại, các ngắt được xử lý bởi kernel của hệ điều hành. Ngắt có thể đến từ phần cứng của máy tính hoặc chương trình đang chạy.
Khi một thiết bị phần cứng kích hoạt ngắt, nhân của hệ điều hành quyết định cách xử lý sự kiện này, thường bằng cách chạy một số mã xử lý. Lượng mã được chạy tùy thuộc vào mức độ ưu tiên của ngắt (ví dụ: một người thường phản ứng với báo động phát hiện khói trước khi trả lời điện thoại).
Việc xử lý các ngắt phần cứng là một nhiệm vụ thường được giao cho trình điều khiển thiết bị, có thể là một phần của lõi kernel hệ điều hành, một phần của chương trình khác hoặc cả hai. Trình điều khiển thiết bị sau đó có thể chuyển tiếp thông tin đến một chương trình đang chạy bằng nhiều cách khác nhau.
Một chương trình cũng có thể kích hoạt một ngắt cho hệ điều hành. Ví dụ, nếu một chương trình muốn truy cập phần cứng, nó có thể làm gián đoạn kernel của hệ điều hành, điều này khiến cho điều khiển được chuyển trở lại kernel. Nhân sau đó xử lý yêu cầu. Nếu một chương trình muốn có thêm tài nguyên (hoặc muốn loại bỏ tài nguyên) như bộ nhớ, thì nó sẽ kích hoạt ngắt để báo cho kernel.
Chế độ chạy của hệ điều hành
Các thiết lập đặc quyền cho kiến trúc vi xử lý x86 có sẵn trong chế độ bảo vệ. Hệ điều hành xác định quá trình nào chạy trong mỗi chế độ.
Bộ vi xử lý hiện đại (CPU hoặc MPU) hỗ trợ nhiều chế độ hoạt động. CPU có khả năng cung cấp ít nhất hai chế độ: chế độ người dùng và chế độ giám sát (Supervisor). Khi hoạt động ở chế độ giám sát cho phép truy cập không hạn chế vào tất cả các tài nguyên máy, bao gồm tất cả các hướng dẫn MPU.
Hoạt động ở chế độ người dùng đặt giới hạn cho việc sử dụng lệnh và thường không cho phép truy cập trực tiếp vào tài nguyên máy. CPU cũng có thể có các chế độ khác tương tự chế độ người dùng, chẳng hạn như chế độ ảo để mô phỏng các loại bộ xử lý cũ hơn, như bộ xử lý 16 bit trên bộ xử lý 32 bit hoặc bộ xử lý 32 bit trên bộ xử lý 64 bit.
Khi bật nguồn hoặc reset, hệ thống bắt đầu ở chế độ giám sát. Khi một kernel hệ điều hành đã được tải và bắt đầu, ranh giới giữa chế độ người dùng và chế độ giám sát (còn được gọi là chế độ kernel) có thể được thiết lập.
Chế độ giám sát được sử dụng bởi kernel cho các tác vụ cấp thấp cần truy cập không hạn chế vào phần cứng, chẳng hạn như kiểm soát cách truy cập bộ nhớ và giao tiếp với các thiết bị như ổ đĩa và thiết bị hiển thị video.
Chế độ người dùng, ngược lại, được sử dụng cho hầu hết mọi thứ khác. Các chương trình ứng dụng, chẳng hạn như bộ xử lý văn bản và trình quản lý cơ sở dữ liệu, hoạt động trong chế độ người dùng và chỉ có thể truy cập tài nguyên máy bằng cách chuyển quyền điều khiển sang kernel, một quá trình gây ra chuyển đổi sang chế độ giám sát.
Thông thường, việc chuyển điều khiển sang kernel bằng cách thực hiện một lệnh ngắt. Việc ngắt phần mềm khiến bộ vi xử lý chuyển từ chế độ người dùng sang chế độ giám sát và bắt đầu thực thi mã cho phép kernel kiểm soát.
Trong chế độ người dùng, các chương trình thường có quyền truy cập vào một tập hợp các lệnh vi xử lý bị hạn chế và thường không thể thực hiện bất kỳ lệnh nào có khả năng gây gián đoạn cho hoạt động của hệ thống. Trong chế độ giám sát, các hạn chế thực thi lệnh thường được loại bỏ, cho phép truy cập không hạn chế vào tất cả các tài nguyên máy.
Thuật ngữ “tài nguyên chế độ người dùng” thường dùng để chỉ một hoặc nhiều thanh ghi CPU, chứa thông tin mà chương trình đang chạy không được phép thay đổi. Nỗ lực thay đổi các tài nguyên này thường gây ra sự chuyển đổi sang chế độ giám sát, trong đó hệ điều hành có thể xử lý hoạt động bất hợp pháp mà chương trình đang cố gắng, ví dụ, bằng cách buộc chấm dứt (“giết chết”) chương trình.
Quản lý bộ nhớ
Lõi hệ điều hành đa nhiệm phải chịu trách nhiệm quản lý bộ nhớ hệ thống đang được các chương trình sử dụng. Điều này đảm bảo rằng một chương trình không can thiệp vào bộ nhớ đã được sử dụng bởi một chương trình khác. Mỗi chương trình phải có quyền truy cập độc lập vào phần bộ nhớ mình được cấp phát.
Quản lý bộ nhớ hợp tác, được sử dụng bởi nhiều hệ điều hành ban đầu, giả định rằng tất cả các chương trình sử dụng trình quản lý bộ nhớ của nhân hệ điều hành một cách tự nguyện và không vượt quá bộ nhớ được phân bổ của chúng.
Hệ thống quản lý bộ nhớ này hầu như không còn sử dụng nữa, vì các chương trình thường chứa các lỗi có thể khiến chúng vượt quá bộ nhớ được phân bổ. Nếu một chương trình gặp lỗi, nó có thể khiến bộ nhớ được sử dụng bởi một hoặc nhiều chương trình khác bị ảnh hưởng hoặc ghi đè.
Các chương trình hoặc vi-rút độc hại có thể cố ý thay đổi bộ nhớ của chương trình khác hoặc có thể ảnh hưởng đến hoạt động của chính hệ điều hành. Với quản lý bộ nhớ hợp tác, chỉ cần một chương trình hoạt động sai đủ để làm sập cả hệ thống.
Bảo vệ bộ nhớ cho phép lõi hệ điều hành giới hạn quyền truy cập vào bộ nhớ của máy tính. Có nhiều phương pháp bảo vệ bộ nhớ khác nhau, bao gồm phân đoạn bộ nhớ và phân trang. Tất cả các phương pháp đều yêu cầu một số mức hỗ trợ phần cứng, không giống nhau trong tất cả các máy tính.
Trong cả phân đoạn và phân trang, các thanh ghi chế độ được bảo vệ nhất định chỉ định cho CPU địa chỉ bộ nhớ nào sẽ cho phép chương trình đang chạy truy cập. Nỗ lực truy cập các địa chỉ khác kích hoạt một ngắt làm cho CPU vào lại chế độ giám sát, chuyển quyền điều khiển về lõi.
Đây được gọi là vi phạm phân đoạn hoặc viết tắt là Seg-V và vì rất khó để xác định hành vi cho hoạt động đó và nó thường là dấu hiệu của chương trình xử lý sai, nên lõi hệ điều hành thường dùng đến việc chấm dứt chương trình vi phạm và báo cáo lỗi.
Các phiên bản Windows 3.1 đến ME có một số mức bảo vệ bộ nhớ, nhưng các chương trình có thể dễ dàng tránh được. Một lỗi bảo vệ chung sẽ được tạo ra, cho thấy đã xảy ra vi phạm bộ nhớ; tuy nhiên, hệ thống thường sẽ bị sập
Bộ nhớ ảo là gì ?
Nhiều hệ điều hành có thể “lừa” các chương trình sử dụng bộ nhớ nằm rải rác trên đĩa cứng và RAM như thể nó là một bộ nhớ liên tục, được gọi là bộ nhớ ảo.
Việc sử dụng địa chỉ bộ nhớ ảo (như phân trang hoặc phân đoạn) có nghĩa là kernel có thể chọn bộ nhớ mà mỗi chương trình có thể sử dụng tại bất kỳ thời điểm nào, cho phép hệ điều hành sử dụng cùng một vị trí bộ nhớ cho nhiều tác vụ.
Nếu một chương trình cố gắng truy cập bộ nhớ không nằm trong phạm vi bộ nhớ có thể truy cập hiện tại của nó, kernel sẽ bị gián đoạn theo cách tương tự như chương trình vượt quá bộ nhớ được phân bổ. Trong UNIX loại ngắt này được gọi là lỗi trang .
Khi kernel phát hiện ra lỗi trang, nó thường điều chỉnh phạm vi bộ nhớ ảo của chương trình đã kích hoạt, cấp cho nó quyền truy cập vào bộ nhớ được yêu cầu. Điều này mang lại cho lõi Kernel quyền tùy ý chọn nơi lưu trữ bộ nhớ của một ứng dụng cụ thể hoặc thậm chí liệu nó có thực sự được phân bổ hay không.
Trong các hệ điều hành hiện đại, bộ nhớ được truy cập ít thường xuyên hơn có thể được lưu trữ tạm thời trên đĩa hoặc phương tiện khác để cung cấp không gian cho các chương trình khác sử dụng. Điều này được gọi là hoán đổi, vì một vùng bộ nhớ có thể được sử dụng bởi nhiều chương trình và những gì vùng nhớ chứa có thể được hoán đổi hoặc trao đổi theo yêu cầu.
“Bộ nhớ ảo” cung cấp cho người lập trình hoặc người dùng giả lập rằng có một lượng RAM lớn hơn nhiều trong máy tính so với thực tế.
Hệ điều hành đa nhiệm là gì ?
Đa nhiệm đề cập đến việc chạy nhiều chương trình máy tính độc lập trên cùng một máy tính; nó đang thực hiện nhiều nhiệm vụ cùng một lúc. Vì hầu hết các máy tính có thể thực hiện một hoặc nhiều việc cùng một lúc, điều này thường được thực hiện thông qua chia sẻ thời gian, điều đó có nghĩa là mỗi chương trình sử dụng một phần thời gian của máy tính để thực thi.
Lõi kernel hệ điều hành chứa một chương trình lập lịch xác định thời gian mỗi tiến trình thực hiện và trong đó điều khiển thực thi theo thứ tự sẽ được chuyển đến các chương trình. Điều khiển được chuyển đến kernel, cho phép chương trình truy cập vào CPU và bộ nhớ. Sau đó, điều khiển được trả về kernel thông qua một số cơ chế, để chương trình khác có thể được phép sử dụng CPU. Cái gọi là chuyển điều khiển giữa kernel và ứng dụng này được gọi là chuyển đổi ngữ cảnh .
Một cơ chế ban đầu chi phối việc phân bổ thời gian cho các chương trình được gọi là đa nhiệm hợp tác. Trong cơ chế này, khi điều khiển được chuyển đến một chương trình bởi kernel, nó có thể thực thi bao lâu tùy thích sau đó trả lại quyền điều khiển cho kernel. Điều này có nghĩa là một chương trình độc hại hoặc gặp trục trặc có thể ngăn chặn bất kỳ chương trình nào khác sử dụng CPU, và nó có thể treo toàn bộ hệ thống nếu nó chạy một vòng lặp vô hạn.
Các hệ điều hành hiện đại mở rộng các khái niệm về quyền ưu tiên ứng dụng cho trình điều khiển thiết bị và kernel, do đó hệ điều hành cũng có quyền kiểm soát ưu tiên đối với thời gian chạy.
Cơ chế đa nhiệm ưu tiên là đảm bảo rằng tất cả các chương trình đều được cung cấp thời gian thường xuyên trên CPU. Vì vậy tất cả các chương trình đang chạy phải được giới hạn trong khoảng thời gian chúng được phép sử dụng CPU mà không bị gián đoạn. Để thực hiện điều này, lõi kernel hệ điều hành sử dụng một ngắt thời gian. Bộ định thời được quản lý bởi lõi kernel sẽ kích hoạt trở về chế độ giám sát sau khi hết thời gian đã chỉ định. (Xem các phần trên về Ngắt.)
Trên một số hệ điều hành đơn người dùng, đa nhiệm hợp tác có thể phù hợp, vì máy tính cá nhân thường chạy một số lượng nhỏ các chương trình được thử nghiệm tốt. Windows NT là phiên bản đầu tiên của Microsoft Windows thực thi đa nhiệm được ưu tiên, nhưng nó không đến được thị trường người dùng phổ thông cho đến khi Windows XP phát hành (Windows NT được nhắm đến các chuyên gia).
Truy cập ổ cứng và hệ thống tập tin (định dạng ổ cứng)
Hệ thống tệp cho phép người dùng và chương trình sắp xếp các tệp trên máy tính thông qua việc sử dụng các thư mục.
Truy cập dữ liệu được lưu trữ trên ổ cứng là tính năng lõi của tất cả các hệ điều hành. Máy tính lưu trữ dữ liệu trên các đĩa bằng các tệp được cấu trúc theo các cách cụ thể để cho phép truy cập nhanh hơn, độ tin cậy cao hơn và để sử dụng tốt hơn không gian có sẵn của ổ cứng.
Cụ thể trong đó các tệp được lưu trữ trên ổ cứng được gọi là hệ thống tệp và cho phép các tệp có tên và thuộc tính. Nó cũng cho phép chúng được lưu trữ trong một hệ thống phân cấp các thư mục hoặc thư mục được sắp xếp trong cây thư mục .
Các hệ điều hành ban đầu thường hỗ trợ một loại ổ cứng duy nhất và chỉ một loại hệ thống tệp. Các hệ thống tệp ban đầu bị giới hạn về khả năng, tốc độ và loại tên tệp và cấu trúc thư mục mà chúng có thể sử dụng. Những hạn chế này thường giới hạn các hệ điều hành khiến cho chúng rất khó hỗ trợ nhiều hơn một hệ thống tệp.
Mặc dù nhiều hệ điều hành đơn giản hơn hỗ trợ một loạt các tùy chọn để truy cập các hệ thống lưu trữ, các hệ điều hành như UNIX và Linux hỗ trợ một công nghệ được gọi là hệ thống tệp ảo hoặc VFS.
Hệ điều hành như UNIX hỗ trợ một loạt các thiết bị lưu trữ, bất kể thiết kế hay hệ thống tệp của chúng, cho phép chúng được truy cập thông qua giao diện lập trình ứng dụng chung (API). Điều này khiến các chương trình không cần biết hệ thống tệp của thiết bị nó đang truy cập.
VFS cho phép hệ điều hành cung cấp cho các chương trình quyền truy cập vào số lượng thiết bị không giới hạn với vô số hệ thống tệp được cài đặt trên chúng, thông qua việc sử dụng trình điều khiển thiết bị và trình điều khiển hệ thống tập tin.
Một thiết bị lưu trữ được kết nối, như ổ cứng, được truy cập thông qua trình điều khiển thiết bị. Trình điều khiển thiết bị hiểu ngôn ngữ của ổ đĩa và có thể dịch ngôn ngữ đó sang ngôn ngữ tiêu chuẩn được sử dụng bởi hệ điều hành để truy cập tất cả các ổ đĩa.
Khi lõi kernel có trình điều khiển thiết bị phù hợp, nó có thể truy cập nội dung của ổ đĩa ở định dạng thô, có thể chứa một hoặc nhiều hệ thống tệp. Trình điều khiển hệ thống tệp được sử dụng để dịch các lệnh truy cập từng hệ thống tệp cụ thể vào một nhóm lệnh tiêu chuẩn mà hệ điều hành có thể sử dụng để thao tác với tất cả các hệ thống tệp.
Các chương trình sau đó có thể xử lý các hệ thống tệp này trên cơ sở tên tệp và thư mục/thư mục, được chứa trong cấu trúc phân cấp. Nó có thể tạo, xóa, mở và đóng tệp, cũng như thu thập thông tin khác nhau về chúng, bao gồm quyền truy cập, kích thước, không gian trống và ngày tạo và sửa đổi.
Sự khác biệt giữa các hệ thống tệp làm cho việc hỗ trợ tất cả các hệ thống tệp khó khăn. Các ký tự được phép trong tên tệp, sự hiện diện của các loại thuộc tính tệp khác nhau làm cho việc thực hiện một giao diện duy nhất cho mọi hệ thống tệp là một nhiệm vụ khó khăn.
Các hệ điều hành có xu hướng khuyến nghị sử dụng các hệ thống tệp được thiết kế riêng cho chúng; ví dụ: NTFS trong Windows và ext3 và ReiserFS trong Linux. Tuy nhiên, trên thực tế, trình điều khiển của bên thứ ba thường có sẵn để hỗ trợ cho các hệ thống tệp được sử dụng rộng rãi nhất trong hầu hết các hệ điều hành (ví dụ: NTFS có sẵn trong Linux thông qua NTFS-3gvà ext2/3 và ReiserFS có sẵn trong Windows thông qua phần mềm của bên thứ ba).
Trong Windows, mỗi hệ thống tệp thường bị giới hạn trong ứng dụng đối với một số phương tiện nhất định; ví dụ: CD phải sử dụng ISO 9660 hoặc UDF và kể từ Windows Vista, NTFS là hệ thống tệp duy nhất mà hệ điều hành có thể được cài đặt trên đó.
Có thể cài đặt Linux lên nhiều loại hệ thống tệp. Không giống như các hệ điều hành khác, Linux và UNIX cho phép mọi hệ thống tệp được sử dụng cài đặt và bất kể phương tiện lưu trữ, cho dù đó là ổ cứng, đĩa (CD, DVD …), ổ flash USB hay thậm chí chứa trong một tập tin nằm trên một hệ thống tập tin khác
Trình điều khiển thiết bị là gì ?
Vai trò của hệ thống điều khiển
Một trình điều khiển thiết bị là phần mềm được phát triển để cho phép tương tác với các thiết bị phần cứng. Thông thường, điều này tạo thành một giao diện để giao tiếp với thiết bị phần cứng, thông qua bus máy tính hoặc hệ thống liên lạc cụ thể mà phần cứng được kết nối, cung cấp các giao diện cần thiết cho hoạt động của hệ thống hoặc chương trình ứng dụng.
Đây là một chương trình máy tính dành cho phần cứng chuyên biệt và một hệ điều hành cụ thể cho phép một chương trình ứng dụng chạy dưới nhân hệ điều hành tương tác với thiết bị phần cứng.
Mục tiêu thiết kế chính của trình điều khiển thiết bị là sự khác nhau giữa các thiết phần cứng (ngay cả trong cùng một loại thiết bị). Các thiết kế phần cứng mới hơn được phát hành bởi các nhà sản xuất cung cấp hiệu suất đáng tin cậy hơn hoặc tốt hơn nhưng các thiết kế mới hơn này thường có cách thức giao tiếp khác với thế hệ trước.
Hệ điều hành không thể biết cách điều khiển mọi thiết bị, cả hiện tại và trong tương lai. Để giải quyết vấn đề này, về cơ bản, các hệ điều hành tạo cơ chế kiểm soát và nhận dạng mọi loại thiết bị. Sau đó, chức năng của trình điều khiển thiết bị là dịch các thao tác của hệ điều hành này thành các thao tác cụ thể với thiết bị phần cứng.
Về lý thuyết, một thiết bị mới, được điều khiển theo cách mới, sẽ hoạt động chính xác nếu có trình điều khiển phù hợp. Trình điều khiển mới này đảm bảo rằng thiết bị hoạt động như bình thường theo yêu cầu của hệ điều hành.
Trong các phiên bản Windows trước Vista và các phiên bản Linux trước 2.6, tất cả các thực thi với trình điều khiển đều theo cơ chế hợp tác, nghĩa là nếu một trình điều khiển đi vào một vòng lặp vô hạn thì nó sẽ đóng băng hệ thống.
Các phiên bản mới hơn của các hệ điều hành kết hợp tính năng ưu tiên kernel (tương tự như cách hệ điều hành phân bổ thời gian sử dụng CPU cho các chương trình), trong đó kernel tự tách khỏi trình điều khiển để thực hiện các tác vụ khác cho đến khi nhận được phản hồi từ trình điều khiển thiết bị hoặc thực hiện nhiệm vụ khác.
Mạng
Hiện nay hầu hết các hệ điều hành đều hỗ trợ nhiều giao thức mạng, phần cứng và ứng dụng để sử dụng chúng. Điều này có nghĩa là các máy tính chạy hệ điều hành không giống nhau có thể tham gia vào một mạng chung để chia sẻ các tài nguyên như tệp, máy in và máy quét … Sử dụng kết nối có dây hoặc không dây.
Mạng về cơ bản có thể cho phép hệ điều hành truy cập vào tài nguyên của máy tính khác từ xa để sử dụng các chức năng tương tự. Điều này bao gồm mọi thứ từ giao tiếp đơn giản, đến sử dụng các hệ thống tệp được nối mạng hoặc thậm chí chia sẻ phần cứng đồ họa hoặc âm thanh của máy tính khác.
Một số dịch vụ mạng cho phép tài nguyên của máy tính được truy cập trực tiếp chẳng hạn như SSH cho phép người dùng nối mạng truy cập trực tiếp vào giao diện dòng lệnh của máy tính.
Mạng máy khách/máy chủ cho phép một chương trình trên máy tính (được gọi là máy khách) kết nối qua mạng với máy tính khác (được gọi là máy chủ). Máy chủ cung cấp các dịch vụ khác nhau cho các máy tính khách.
Các dịch vụ này thường được cung cấp thông qua các cổng hoặc các điểm truy cập được đánh số trên địa chỉ IP của máy chủ. Mỗi cổng thường được liên kết với một chương trình đang chạy, chịu trách nhiệm xử lý các yêu cầu tới cổng đó. Một ‘daemon’, là một chương trình người dùng, có thể lần lượt truy cập tài nguyên phần cứng của máy tính đó bằng cách chuyển yêu cầu đến kernel hệ điều hành.
Nhiều hệ điều hành cũng hỗ trợ một hoặc nhiều giao thức mạng mở hoặc dành riêng cho nhà cung cấp, ví dụ SNA trên các hệ thống IBM, DECnet trên các hệ thống từ Digital Equipment Corporation và các giao thức dành riêng cho Microsoft (SMB) trên Windows.
Các giao thức cụ thể cho các tác vụ cũng có thể được hỗ trợ như NFS để truy cập tệp. Các giao thức như ESound hoặc esd có thể dễ dàng được mở rộng qua mạng để cung cấp âm thanh từ các ứng dụng cục bộ, trên phần cứng âm thanh của hệ thống từ xa.
Bảo mật của hệ điều hành là gì ?
Một máy tính được bảo mật phụ thuộc vào một số công nghệ. Hệ điều hành hiện đại cung cấp quyền truy cập vào một số tài nguyên, có sẵn cho phần mềm chạy trên hệ thống và cho các thiết bị bên ngoài như mạng thông qua kernel.
Hệ điều hành phải có khả năng phân biệt giữa các yêu cầu nên được phép xử lý và các yêu cầu khác không được xử lý. Mặc dù một số hệ thống có thể chỉ đơn giản phân biệt giữa “đặc quyền” và “không đặc quyền”, các hệ thống thường có phương pháp dạng nhận dạng người yêu cầu, chẳng hạn như tên người dùng. Để thiết lập quá trình xác thực danh tính.
Thông thường tên người dùng phải được phân quyền và mỗi tên người dùng có thể có mật khẩu. Các phương pháp xác thực khác, như thẻ từ hoặc dữ liệu sinh trắc học, có thể được sử dụng thay thế.
Trong một số trường hợp, đặc biệt là các kết nối từ mạng, tài nguyên có thể được truy cập mà không cần xác thực (chẳng hạn như đọc tệp qua chia sẻ mạng). Cũng được xác định bởi khái niệm danh tính người yêu cầu là ủy quyền ; các dịch vụ và tài nguyên cụ thể mà người yêu cầu có thể truy cập sau khi đăng nhập vào hệ thống được gắn với tài khoản người dùng của người yêu cầu hoặc với các nhóm người dùng được cấu hình khác nhau mà người yêu cầu thuộc nhóm đó.
Ngoài mô hình cho phép hoặc không cho phép bảo mật, một hệ thống có mức độ bảo mật cao cũng cung cấp các tùy chọn kiểm soát. Cho phép theo dõi các yêu cầu truy cập vào tài nguyên (chẳng hạn như “ai đã đọc tệp này?”). Bảo mật nội bộ hoặc bảo mật từ một chương trình đã chạy chỉ có thể nếu tất cả các yêu cầu phải được thực hiện thông qua các ngắt đến lõi kernel hệ điều hành. Nếu các chương trình có thể truy cập trực tiếp vào phần cứng và tài nguyên, chúng không thể được bảo mật.
Bảo mật bên ngoài liên quan đến một yêu cầu từ bên ngoài máy tính, chẳng hạn như đăng nhập từ xa hoặc một loại kết nối mạng nào đó. Các yêu cầu bên ngoài thường được chuyển qua trình điều khiển thiết bị đến kernel của hệ điều hành, nơi chúng có thể được chuyển qua các ứng dụng hoặc được thực hiện trực tiếp.
Bảo mật hệ điều hành từ lâu đã là một mối quan tâm vì dữ liệu rất nhạy cảm được lưu trữ trên máy tính, cả về bản chất thương mại và quân sự. Chính phủ Hoa Kỳ, Bộ Quốc phòng (DoD) tạo ra các tiêu chuẩn Hệ thống đánh giá tính tin cậy (TCSEC) là một tiêu chuẩn mà bộ yêu cầu cơ bản để đánh giá hiệu quả của an ninh.
Điều này trở nên quan trọng đối với các nhà sản xuất hệ điều hành, bởi vì TCSEC được sử dụng để đánh giá, phân loại và chọn hệ điều hành đáng tin cậy đang được xem xét để xử lý, lưu trữ và truy xuất thông tin nhạy cảm.
Các dịch vụ mạng bao gồm các dịch vụ như chia sẻ tệp, dịch vụ in, email, trang web và giao thức truyền tệp (FTP), hầu hết có thể bị xâm phạm bảo mật. Ở tuyến đầu của bảo mật là các thiết bị phần cứng được gọi là tường lửa hoặc hệ thống phát hiện/ngăn chặn xâm nhập.
Ở cấp độ hệ điều hành, có một số phần mềm tường lửa có sẵn, cũng như các hệ thống phát hiện/ngăn chặn xâm nhập. Hầu hết các hệ điều hành hiện đại bao gồm tường lửa phần mềm, được bật theo mặc định. Một tường lửa phần mềm có thể được cấu hình để cho phép hoặc từ chối lưu lượng mạng đến từ một dịch vụ hoặc ứng dụng chạy trên hệ điều hành.
Giải pháp thay thế là kiểu hộp cát (sandbox) cho những hệ điều hành không đáp ứng được các yêu cầu bảo mật. Nó cung cấp cơ chế cho hệ điều hành không chạy chương trình người dùng dưới dạng mã gốc, mà thay vào đó, giả lập bộ xử lý hoặc cung cấp máy ảo cho chương trình thực thi.
Bảo mật nội bộ đặc biệt phù hợp với các hệ thống nhiều người dùng; nó cho phép mỗi người dùng hệ thống có các tệp riêng tư mà người dùng khác không thể truy xuất được. Bảo mật nội bộ cũng rất quan trọng, vì một chương trình có khả năng vượt qua hệ điều hành, bao gồm việc bỏ qua kiểm soát.
Giao diện người dùng là gì ?
Các hệ điều hành máy tính cá nhân đều có giao diện người dùng . Giao diện người dùng thường được gọi là shell và cần thiết để hỗ trợ tương tác của con người. Giao diện người dùng thể hiện cấu trúc thư mục và yêu cầu các dịch vụ từ hệ điều hành, thu thập dữ liệu từ các thiết bị phần cứng đầu vào, như bàn phím, chuột hoặc đầu đọc thẻ và yêu cầu hệ điều hành hiển thị lời nhắc, thông báo trạng thái trên các thiết bị phần cứng đầu ra, như màn hình hoặc máy in.
Hai hình thức phổ biến nhất của giao diện người dùng trước đây là giao diện dòng lệnh, trong đó các lệnh được gõ từng dòng và giao diện người dùng đồ họa, nơi có môi trường trực quan (phổ biến nhất là WIMP ).
Giao diện người dùng đồ họa
Hầu hết các hệ thống máy tính hiện đại đều hỗ trợ giao diện người dùng đồ họa (GUI). Trong một số hệ thống máy tính, chẳng hạn như các phiên bản Mac OS cổ điển, GUI được tích hợp vào kernel.
Mặc dù về mặt kỹ thuật, giao diện người dùng đồ họa không phải là dịch vụ của hệ điều hành, việc kết hợp vào lõi kernel hệ điều hành có thể cho phép GUI phản ứng nhanh hơn bằng cách giảm số lượng chuyển đổi ngữ cảnh cần thiết để GUI thực hiện các chức năng đầu ra.
Các hệ điều hành khác có thể tách giao diện đồ họa khỏi lõi kernel hệ điều hành. Trong những năm 1980 UNIX, VMS và nhiều hệ điều hành được xây dựng theo cách này. Linux và macOS cũng được xây dựng theo cách này.
Các bản phát hành hiện nay của Microsoft Windows như Windows Vista triển khai một hệ thống con đồ họa cho giao diện người dùng; tuy nhiên, các phiên bản giữa Windows NT 4.0 và Windows Server 2003 được tích hợp vào lõi kernel.
Nhiều hệ điều hành máy tính cho phép người dùng cài đặt hoặc tạo bất kỳ giao diện người dùng nào họ muốn. Các giao diện Window X kết hợp với GNOME hoặc KDE Plasma 5 là một điển hình trên các hệ điều hành Unix như hệ thống (BSD, Linux, Solaris).
Một số giao diện (theme) Windows đã được phát hành cho Microsoft Windows, cung cấp các lựa chọn thay thế cho giao diện Windows đi kèm, nhưng bản thân giao diện đồ họa không thể tách rời khỏi Windows.
Nhiều GUI dựa trên Unix đã tồn tại theo thời gian, hầu hết có nguồn gốc từ X11. Sự cạnh tranh giữa các nhà cung cấp Unix (HP, IBM, Sun) khác nhau đã dẫn đến sự phân mảnh, mặc dù nỗ lực chuẩn hóa vào những năm 1990 của COSE và CDE thất bại vì nhiều lý do, và cuối cùng bị lu mờ bởi Gnome và K .
Giao diện người dùng đồ họa phát triển theo thời gian. Ví dụ: Windows đã sửa đổi giao diện người dùng của mình mỗi khi một phiên bản Windows chính được phát hành và GUI Mac OS đã thay đổi đáng kể với sự ra mắt của Mac OS X vào năm 1999.
Hệ điều hành thời gian thực
Hệ điều hành thời gian thực (RTOS) là một hệ điều hành dành cho các ứng dụng có thời hạn cố định (tính toán thời gian thực). Các ứng dụng này bao gồm một số hệ thống nhúng nhỏ, bộ điều khiển động cơ ôtô, robot công nghiệp, tàu vũ trụ, điều khiển công nghiệp và một số hệ thống máy tính quy mô lớn.
Một ví dụ ban đầu về hệ điều hành thời gian thực quy mô lớn là trung tâm xử lý giao dịch được phát triển bởi American Airlines và IBM cho Hệ thống đặt chỗ hàng không Sabre .
Các hệ thống nhúng có thời hạn cố định sử dụng hệ điều hành thời gian thực như VxWorks, PikeOS, eCos, QNX, MontaVista Linux và RTLinux. Windows CE là một hệ điều hành thời gian thực chia sẻ các API tương tự với Windows trên máy tính để bàn nhưng không chia sẻ cơ sở mã nguồn. Hệ điều hành Symbian cũng có nhân RTOS (EKA2) bắt đầu với phiên bản 8.0b.
Một số hệ thống nhúng sử dụng các hệ điều hành như Palm OS , BSD và Linux , mặc dù các hệ điều hành này không hỗ trợ tính toán thời gian thực.
Phát triển hệ điều hành như một sở thích
Trong một số trường hợp, người dùng có thể tự phát triển hệ điều hành theo ý thích sử dụng trên một thiết bị điện toán “homebrew”, ví dụ, một máy tính bảng đơn giản được cung cấp bởi bộ vi xử lý 6502. Hoặc có thể dành cho một kiến trúc đã được sử dụng rộng rãi.
Phát triển hệ điều hành với các tính năng hoàn toàn mới, hoặc có thể bắt đầu bằng cách mô hình hóa một hệ điều hành hiện có. Trong cả hai trường hợp, người dùng thường phát triển cho riêng họ hoặc có thể là một nhóm nhỏ và đôi khi của những cá nhân có cùng sở thích.
Ví dụ về một hệ điều hành tự phát triển cá nhân như Syllable và TempleOS .
Sự đa dạng của hệ điều hành và tính linh hoạt
Phần mềm ứng dụng thường được viết để sử dụng trên một hệ điều hành cụ thể và đôi khi ngay cả đối với phần cứng cụ thể. Khi chuyển ứng dụng chạy trên HĐH khác, chức năng mà ứng dụng đó yêu cầu có thể được hệ điều hành đó thực hiện khác (tên của các chức năng, ý nghĩa của các đối số, v.v.) yêu cầu ứng dụng phải được điều chỉnh hoặc thay đổi.
Unix là hệ điều hành đầu tiên không được viết bằng ngôn ngữ assembly, khiến nó rất dễ tương thích với các hệ thống khác với hệ thống ban đầu của nó.
Chi phí cho việc hỗ trợ đa dạng hệ điều hành có thể tránh được bằng cách viết các ứng dụng dựa trên các nền tảng phần mềm như Java hoặc Qt .
Một cách tiếp cận khác cho các nhà cung cấp hệ điều hành là áp dụng các tiêu chuẩn. Ví dụ, các lớp trừu tượng POSIX và OS cung cấp các điểm tương đồng giúp giảm chi phí chuyển đổi.
Nguồn:tổng hợp + Wikipedia
Xem thêm :