Hệ điều hành làm việc như thế nào

Nếu bạn có máy tính thì chắc hẳn bạn đã nghe về hệ điều hành. Bất kì máy tính để bàn hay máy tính xách tay nào mà bạn mua thường được tải trước Window XP.

Giới thiệu

Nếu bạn có máy tính thì chắc hẳn bạn đã nghe về hệ điều hành. Bất kì máy tính để bàn hay máy tính xách tay nào mà bạn mua thường được tải trước Window XP. Máy tính Macintosh thì thường được tải trước OS X. Nhiều máy chủ liên kết sử dụng hệ điều hành Linux hay UNIX. Hệ điều hành (OS) là thứ đầu tiên phải tải về máy- không có hệ điều hành thì máy tính vô dụng.

 Gần đây, hệ điều hành đã bắt đầu xuất hiện ở các máy tính nhỏ hơn. Nếu bạn muốn tìm hiểu các thiết bị điện tử thì bạn có thể phát hiện ra hệ điều hành ở nhiều thiết bị mà chúng ta vẫn sử dụng hàng ngày từ điện thoại di động cho đến các thiết bị truy cập không dây khác. Máy tính được dùng bây giờ không cần nhiều đến sức mạnh vẫn có thể chạy một hệ điều hành và các ứng dụng. Máy tính trong điện thoại di động hiện đại có thể mạnh hơn máy tính để bàn 20 năm trước vì vậy những tiến bộ này là sự phát triển tự nhiên. Trong bất cứ thiết bị nào có hệ điều hành thì cũng thường có cách để thay đổi cách thức thiết bị làm việc. Đây không phải là sự tình cờ ngẫu nhiên; một trong những nguyên nhân hệ điều hành được tạo đó là những đoạn mã chương trình chứ không phải là mạch  điện vật lý cố định và chúng có thể được thay đổi hoặc sửa chữa mà không làm ảnh hưởng đến toàn thiết bị.

 Đối với người sử dụng máy tính để bàn điều này có nghĩa là bạn có thể thêm phần mềm bảo mật cập nhật, bản vá lỗi hệ thống, các ứng dụng mới hay thậm chí là một hệ điều hành hoàn toàn mới mà không phải bỏ máy tính đi và bắt đầu với một máy mới khi bạn muốn thay đổi. Khi bạn hiểu hệ điều hành làm việc như thế nào và kiểm soát nó thì trong nhiều trường hợp bạn có thể thay đổi cách mà nó làm việc. Và điện thoại di động thì cũng như máy tính của bạn.

 Công việc của hệ điều hành là tổ chức và kiểm soát phần cứng và phần mềm để thiết bị chứa hệ điều hành này có thể hoạt động linh hoạt nhưng vẫn dự đoán được. Trong bài này chúng tôi sẽ nói cho bạn biết các phần mềm cần có trong hệ điều hành, hệ điều hành làm việc như thế nào trong máy tính để bàn của bạn và dẫn ra một vài ví dụ làm thế nào để kiểm soát các hệ điều hành khác. 

Bản chất của vấn đề .

 

\"\"

 

Không phải tất cả các máy tính đều có hệ điều hành . Máy tính điều khiển lò vi sóng trong bếp của bạn là một ví dụ không cần đến hệ điều hành.Nó chỉ có các nhiệm vụ cài sẵn, nhập vào trực tiếp và đơn giản ( với các phím số và nút ) không cần thay đổi phần cứng để điều khiển. Đối với máy tính cũng như vậy thì mà không dùng hệ điều hành chỉ làm cho chi phí phát triển và sản xuất phần cứng cao hơn và làm cho thiết bị phức tạp thêm mà không cần thiết. Thay vào đó, máy tính trong lò vi sóng chỉ cần chạy chương trình đơn giản  và không thay đổi .

 Đối với các thiết bị khác, hệ điều hành được dùng để: 

  • Phục vụ những mục đích khác nhau
  • Tương tác với người sử dụng theo những cách phức tạp hơn
  • Theo kịp nhu cầu thay đổi theo thời gian.  

Tất cả các máy tính để bàn đều có hệ điều hành. Hệ điều hành phổ biến là gia đình hệ điều hành Window được phát triển bởi hãng Microsoft, hệ điều hành Macintosh phát triển bởi Apple và gia đình hệ điều hành UNIX( được phát triển bởi các cá nhân, tập đoàn và cộng tác viên). Có hàng trăm hệ điều hành phù hợp với các ứng dụng có mục đích đặc biệt bao gồm chuyên môn hoá cho máy tính lớn, robot, sản xuất , hệ thống kiểm soát thời gian thực... 

 Hệ điều hành làm những gì?

Ở mức độ đơn giản nhất, hệ điều hành làm hai việc: 

  1. Nó quản lý tài nguyên phần cứng và phần mềm của hệ thống. Trong máy tính cá nhân, những tài nguyên này bao gồm bộ xử lý, bộ nhớ, khoảng trống trên đĩa,...( trong điện thoại di động chúng bao gồm phím số, màn hình, sổ địa chỉ, quay số điện thoại, pin và kết nối mạng.)

 

  1. Nó cung cấp cách ổn định và phù hợp cho các ứng dụng xử lý phần cứng mà không cần biết tất cả các chi tiết của phần cứng.  

Nhiệm vụ thứ nhất, quản lý tài nguyên phần cứng và phần mềm, là rất quan trọng , các chương trình khác nhau và cách nhập dữ liệu khác nhau cạnh tranh để có được sự điều khiển của CPU và đưa ra những yêu cầu về bộ nhớ, lưu trữ và dải thông hệ thống vào ra ( I/O ) vì những mục đích riêng . Với những công việc trên, hệ điều hành đóng vai trò như những bậc cha mẹ tốt đảm bảo mỗi ứng dụng có được tài nguyên cần thiết trong khi vẫn chạy các ứng dụng khác, cũng như khéo léo sử dụng các khả năng hạn chế của hệ thống ở mức tốt nhất cho tất cả người sử dụng và những ứng dụng.

 Nhiệm vụ thứ hai , cung cấp giao diện ứng dụng thích hợp , là đặc biệt quan trọng nếu có nhiều hơn một loại máy tính sử dụng hệ điều hành hoặc nếu phần cứng tạo nên máy tính thay đổi. Một hệ giao chương trình ứng dụng (API) thích hợp cho phép nhà phát triển phần mềm viết ứng dụng trên một máy tính và có độ tương thích cao để chạy trên máy tính khác cùng loại, thậm chí nếu dung lượng bộ nhớ hay dung lượng lưu trữ của hai máy khác nhau.

 Thậm chí nếu một máy tính cá biệt là độc nhất thì hệ điều hành có thể đảm bảo rằng các ứng dụng có thể tiếp tục chạy khi nâng cấp phần cứng và cập nhật . Bởi vì hệ điều hành chứ không phải các ứng dụng chịu trách nhiệm quản lý phần cứng và phân phối các tài nguyên. Một trong những thách thức mà nhà phát triển phải đối mặt đó là giữ cho hệ điều hành đủ linh hoạt để chạy phần cứng trong số hàng nghìn các nhà cung cấp sản xuất thiết bị máy tính. Hệ thống ngày nay có thể thích nghi với hàng nghìn máy in khác nhau, ổ đĩa và các thiết bị ngoại vi đặc biệt trong bất kì liên kết nào. 

Phân loại hệ điều hành

Trong đại gia đình hệ điều hành nhìn chung có 4 loại được phân loại dựa trên loại máy tính mà nó điều khiển và loại ứng dụng mà nó hỗ trợ. Bao gồm các loại sau: 

  • Hệ điều hành thời gian thực (RTOS)- Hệ điều hành thời gian thực được dùng để điều khiển máy, các thiết bị khoa học và hệ thống công nghiệp. Một RTOS điển hình có rất ít khả năng giao diện cho người sử dụng và không có những ứng dụng thông thường vì hệ thống chỉ là một cái hộp đóng kín . Một nhiệm vụ quan trọng của RTOS là quản lý tài nguyên của máy tính để một quá trình hoạt động có thể diễn ra trong khoảng thời gian chính xác mỗi khi nó xuất hiện. Trong máy phức tạp, có phần chuyển động nhanh thì hệ thống tài nguyên phải luôn luôn sẵn sàng , nó sẽ là thảm hoạ nếu không chuyển động vì một nguyên nhân nào đó hệ thống bị bận . 

 

  • Một người sử dụng, đơn nhiệm- Như cái tên của nó, hệ điều hành này được thiết kế để quản lý máy tính sao cho một người sử dụng có thể làm một việc hiệu quả một lúc. Hệ điều hành Palm cho các máy tính cầm tay là một ví dụ cho hệ điều hành một người sử dụng, đơn nhiệm. 

 

  • Một người sử dụng, đa nhiệm- Đây là hệ điều hành mà hầu hết mọi người sử dụng trong máy tính để bàn và máy tính xách tay hiện nay. Window của Microsoft và nền tảng MacOS của Apple là hai ví dụ cho hệ điều hành cho phép một người sử dụng chạy nhiều chương trình cùng một lúc. Ví dụ như nó cho phép người sử dụng Window ghi chép trong bộ xử lý word trong khi tải một file từ Internet và in một văn bản của tin nhắn e-mail. 

 

  • Nhiều người sử dụng- Một hệ điều hành nhiều người sử dụng cho phép nhiều người sử dụng khác nhau dùng tài nguyên của máy tính cùng một lúc. Hệ điều hành phải đảm bảo rằng yêu cầu của những người sử dụng khác nhau được cân bằng, và mỗi chương trình mà họ sử dụng có tài nguyên riêng và đầy đủ để vấn đề của mỗi người sử dụng không ảnh hưởng đến cộng đồng người sử dụng. Hệ điều hành Unix, VMS và Mainframe như MVS là những ví dụ cho hệ điều hành nhiều người sử dụng.

  

\"\"

 

Việc phân biệt giữa hệ điều hành nhiều người sử dụng và hệ điều hành một người sử dụng hỗ trợ mạng là rất quan trọng. Window 2000 và Novell Netware có thể hỗ trợ hàng trăm hoặc hàng nghìn người sử dụng mạng nhưng hệ điều hành của chúng không thực sự là hệ điều hành nhiều người sử dụng. Nhà quản trị  hệ thống là người sử dụng duy nhất  Window2000 hay Netware. Hệ điều hành này phải hỗ trợ các ứng dụng trên mạng và cho phép người sử dụng từ xa đăng nhập mạng và chúng được người quản trị mạng cho phép sử dụng .

 Với nhiều loại hệ điều hành khác nhau đã đến lúc xem xét các chức năng cơ bản mà hệ điều hành cung cấp.

 
Gọi hệ điều hành để chạy

 Khi bạn bật máy tính, chương trình đầu tiên mà máy tính chạy thường là một tập hợp chỉ dẫn được lưu trong bộ nhớ chỉ đọc ra (ROM) của máy tính. Mã này kiểm tra hệ thống phần cứng để đảm bảo rằng mọi thứ đang hoạt động phù hợp. Tự kiểm tra khi bật máy (POST) này kiểm tra lỗi của CPU, bộ nhớ và hệ thống vào ra cơ bản để tìm lỗi sau đó lưu kết quả tại một vị trí bộ nhớ cho trước. Khi POST đã hoàn tất thì phần mềm được tải trong ROM ( hoặc được gọi là BIOS hay Firmware) sẽ bắt đầu kích hoạt ổ đĩa cứng của máy tính. Trong hầu hết các máy tính hiện nay, khi máy tính kích hoạt ổ đĩa cứng nó sẽ gặp phần đầu tiên của hệ điều hành : Bootstrap Loader. 

Bootstrap Loader là một chương trình nhỏ có một chức năng duy nhất là tải hệ điều hành vào trong bộ nhớ và cho phép nó bắt đầu hoạt động. Theo hình thức cơ bản nhất thì Bootstrap Loader thiết lập chương trình  nhỏ điều khiển các phần cứng khác nhau của máy tính. Nó cài đặt các phần bộ nhớ nắm giữ hệ điều hành, thông tin người sử dụng và các ứng dụng. Nó thiết lập cấu trúc dữ liệu chứa vô số tín hiệu, cờ ... được dùng để kết nối giữa các hệ thống nhỏ và các ứng dụng của máy tính. Sau đó chuyển quyền điều khiển máy tính cho hệ điều hành.

 

\"\"

 

Hệ điều hành có 6 nhiệm vụ cơ bản: 

  • Quản lý bộ xử lý
  • Quản lý bộ nhớ
  • Quản lý thiết bị
  • Quản lý lưu trữ
  • Giao diện ứng dụng
  • Giao diện người sử dụng

 Trong khi có một số cho rằng hệ điều hành nên có thêm các nhiệm vụ và một số nhà cung cấp hệ điều hành xây dựng thêm nhiều chương trình thiết thực và các chức năng bổ sung cho hệ điều hành thì sáu nhiệm vụ này vẫn là cốt lõi của gần như tất cả các hệ điều hành. Hãy xem các công cụ mà hệ điều hành dùng để thực hiện các chức năng này.

Quản lý bộ vi xử lý

 Quản lý bộ xử lý liên quan đến hai vấn đề chính: 

  • Đảm bảo rằng mỗi quá trình và ứng dụng nhận được đủ thời gian của bộ xử lý để thực hiệc các chức năng phù hợp.
  • Sử dụng bao nhiêu chu kì lệnh bộ vi xử lý cho công việc thực sự là thích hợp.  

Đơn vị cơ bản của phần mềm mà hệ điều hành phân phối theo một kế hoạch được thực hiện bởi CPU gọi là Process hoặc Thread , phụ thuộc vào hệ điều hành .

 Điều này có thể khiến mọi người nghĩ Process là một chương trình ứng dụng nhưng đó là bức tranh chưa đầy đủ về mối quan hệ của các Processvới hệ điều hành và phần cứng. Ứng dụng như bạn có thể thấy ( xử lý word, bảng tính hay game) thì thực sự là một Process , nhưng chương trình ứng dụng có thể cần vài Process khác để bắt đầu thực hiện . Có rất nhiều Process có thể chạy ngầm mà không cần thể hiện cho bạn  nhận thấy sự tồn tại của nó. Ví dụ như Window XP hay UNIX có thể có hàng tá Process chạy để điều khiển mạng, quản lý bộ nhớ, quản lý đĩa, kiểm tra virut...

 Process là phần mềm thực hiện một vài hành động nào đó và có thể được kiểm soát bởi người sử dụng, bởi các chương trình ứng dụng khác hoặc bởi chính hệ điều hành.                                                                                                                    

Những chương trình ứng dụng là những Process mà hệ điều hành điều khiển và lên kế hoạch để CPU thực hiện . Trong hệ thống Đơn nhiệm ( Single-Tasking) kế hoạch làm việc đơn giản . Hệ điều hành cho phép chương trình ứng dụng để bắt đầu chạy , tạm dừng bằng những ngắt ( Interrupt ) và đầu vào từ người dùng .       

Interrupt là tín hiệu đặc biệt mà phần cứng hoặc phần mềm gửi tới CPU. Việc này xảy ra khi một phần nào đó của máy tính yêu cầu sự chú ý của CPU với một sự kiện bất ngờ xảy ra. Đôi khi hệ điều hành sẽ lập mức độ ưu tiên cho các Process để các ngắt được che đi  ( Mask ) có nghĩa là hệ điều hành sẽ phớt lờ Interrupt từ một số nguồn để các công việc đang làm hoàn tất càng nhanh càng tốt. Có một số Interrupt như khi báo lỗi hoặc vấn đề với bộ nhớ có thể quan trọng đến nỗi không thể phớt lờ. Những ngắt không thể chờ được ( Non-Mask , NMI ) này phải được xử lý ngay lập tức bất chấp nhiệm vụ khác đang được thực hiện. 

Trong khi các Interrupt khiến cho việc thực hiện các Process trong hệ thống đơn nhiệm phức tạp thêm thì công việc của hệ điều hành trở nên phức tạp hơn trong hệ đa nhiệm. Hiện tại hệ điều hành phải sắp xếp việc thực hiện các ứng dụng để bạn tin rằng có nhiều việc xảy ra cùng một lúc. Điều này phức tạp bởi vì CPU chỉ có thể làm một việc tại một điểm thời gian. Để đưa ra diện mạo của các việc diễn ra cùng một lúc, hệ điều hành phải chuyển đổi các Process khác nhau hàng nghìn lần một giây. Quá trình như sau: 

  • Một Process chiếm giữ một số lượng nhất định trong RAM. Nó cũng dùng các thanh ghi, ngăn xếp và hàng đợi trong CPU và không gian bộ nhớ của hệ điều hành.
  • Khi hai Process là đa nhiệm thì hệ điều hành phân công một chu kì thực hiện lệnh CPU nhất định đến một chương trình.
  • Sau chu kì thực hiện lệnh CPU đó hệ điều hành copy tất cả các thanh ghi, ngăn xếp và hàng đợi của Process và ghi các điểm mà tại đó Process tạm dừng hoạt động.
  • Sau đó nó tải tất cả các thanh ghi, ngăn xếp và hàng đợi được sử dụng bởi Process thứ hai và cho phép một số chu kì thực hiện lệnh CPU nhất định tiếp theo.
  • Khi tất cả hoàn tất, nó copy tất cả các thanh ghi, ngăn xếp và hàng đợi được sử dụng bởi chương trình thứ hai và tải chương trình thứ nhất.

 

 

 Hình trên mô tả quá trình làm việc của hệ điều hành đa nhiệm

 

Tất cả các thông tin cần để giữ dấu vết của Process khi chuyển đổi được lưu trong một gói tin dữ liệu được gọi là khối điều khiển Process. Khối điều khiển Process này chứa: 

  • Số ID để xác thực Process
  • Con trỏ đến vị trí trong chương trình và dữ liệu nơi xử lý cuối cùng xuất hiện
  • Nội dung thanh ghi
  • Trạng thái của các cờ và điểm chuyển đổi
  • Những con trỏ đến đường biên trên và dưới của bộ nhớ được yêu cầu cho Process
  • Danh sách các file được mở bởi Process
  • Ưu tiên của Process
  • Trạng thái của thiết bị vào ra mà Process cần tới .  

Mỗi Process có trạng thái liên quan với nó. Nhiều quá trình không tiêu tốn thời gian của CPU cho đến khi nó nhận được dữ liệu nhập vào. Ví dụ một quá trình có thể chờ người sử dụng nhập dữ liệu vào. Trong khi nó chờ đợi thì nó không tiêu tốn thời gian CPU mà nó chuyển sang trạng thái treo để lúc này CPU được chuyển đi làm Process khác . Khi dữ liệu được nhập vào thì hệ điều hành thay đổi trạng thái. Khi trạng thái của Process thay đổi từ trạng thái treo sang hoạt động, thông tin trong khối xử lý Process phải được dùng như dữ liệu trong bất kì chương trình nào khác để thực hiện chuyển đổi nhiệm vụ của hệ điều hành. 

Việc chuyển đổi quá trình đó diễn ra mà không có sự can thiệp trực tiếp nào của người sử dụng và mỗi Process nhận được đủ chu kì thực hiện lệnh để phù hợp với nhiệm vụ trong khoảng thời gian thích hợp Vấn đề có thể xảy ra do người sử dụng cố gắng thực hiện quá nhiều Process cùng một lúc. Hệ điều hành tự nó yêu cầu một số chu kì CPU để thực hiện lệnh lưu giữ và chuyển đổi tất cả các thanh ghi, hàng đợi và ngăn xếp của những Process ứng dụng. Nếu có nhiều Process ở mức nào đó được khởi động và nếu hệ điều hành không được thiết kế cẩn thận thì hệ thống có thể bắt đầu sử dụng phần lớn các chu kì lệnh của  CPU để thực hiện việc chuyển đổi giữa các Process hơn là chạy chúng. Khi điều này xảy ra, nó được gọi là sự thảm bại ( Thrashing ) và nó thường yêu cầu một số sự can thiệp trực tiếp của người sử dụng để dừng những Process và lập lại trật tự cho hệ thống. 

Một cách mà nhà thiết kế hệ điều hành dùng để giảm thiểu cơ hội Thrashing là giảm nhu cầu những Process mới để thực hiện các nhiệm vụ khác nhau. Một số hệ điều hành cho phép khái niệm dùng những tài nguyên của Process - “Process-Lite” - được gọi là Thread, có thể xử lý tất cả công việc của chuyên dùng CPU nhưng không xử lý được các kiểu thiết bị đầu cuối thông thường và không tạo nên những yêu cầu khối chuyên điều khiển Proces của những Process thông thường . Một Process có thể bắt đầu nhiều Thread hoặc các Process khác nhưng một Thread không thể bắt đầu một Process . 

Cho đến giờ thì tất cả các danh mục mà chúng tôi thảo luận liên quan một bộ vi xử lí  . Trong một hệ thống với hai hay nhiều CPU thì hệ điều hành phải phân chia khối lượng công việc giữa các CPU cố gắng cân bằng nhu cầu của các Process với các chu kỳ thích hợp trong các CPU khác nhau. Hệ điều hành không đối xứng sử dụng một CPU cho những công việc riêng và phân chia các Process ứng dụng giữa các CPU còn lại. Hệ điều hành đối xứng phân chia giữa các CPU khác nhau cân bằng nhu cầu ngược lại khả năng sẵn có của CPU thậm chí khi hệ điều hành đang chạy. 

Thậm chí khi hệ điều hành là phần mềm duy nhất thực hiện các công việc thì CPU không phải là tài nguyên duy nhất được xử lí. Quản lý bộ nhớ là bước kế tiếp để đảm bảo rằng tất cả quy trình hoạt động tốt.

 

 

 Lưu trữ bộ nhớ và quản lý

 Khi một hệ điều hành quản lý bộ nhớ của máy tính, có hai nhiệm vụ lớn cần thực hiện: 

  1. Mỗi Process phải có đủ bộ nhớ để thực hiện và nó không thể chạy sang không gian bộ nhớ của một Process khác cũng như  một quy trình khác chạy sang nó.
  2. Các kiểu bộ nhớ khác nhau trong hệ thống phải được sử dụng phù hợp để mỗi Process có thể chạy hiệu quả.  

Nhiệm vụ đầu tiên yêu cầu hệ điều hành thiếp lập ranh giới cho các loại phần mềm và cho các ứng dụng riêng biệt.

 

Ví dụ : Hệ thống nhỏ với bộ nhớ RAM 1 MB (1,000 KB). Trong suốt quá trình khởi động , hệ điều hành của máy tính trên được thiết kế để tới vùng cao nhất của bộ nhớ có sẵn và sau đó sao chép đủ để đáp ứng nhu cầu của chính hệ điều hành. Có thể nói rằng hệ điều hành cần 300 KB để chạy. Sau đó hệ điều hành đến phần thấp nhất RAM và bắt đầu xây dựng phần mềm Driver khác nhau cần thiết để kiểm soát hệ thống phần cứng phụ của máy tính. Trong máy tính ví dụ trên, những Driver cần 200 KB để hoạt động. Như vậy sau khi hệ điều hành được tải hết thì còn 500 kilobyte cho các xử lí các chương trình ứng dụng. 

Khi những ứng dụng bắt đầu được nhập vào bộ nhớ thì chúng được tải vào các khối bộ nhớ với kích thước định sẵn do hệ điều hành quyết định. Nếu kích thước khối là 2 KB thì mỗi Proces được tải vào sẽ nhận được một khoảng bộ nhớ có dung lượng là bội của 2 KB. Các ứng dụng sẽ được tải vào trong các khối này với kích thước cố định , các khối bắt đầu và kết thúc ở đường ranh giới tạo ra từ 4 đến 8 byte. Những khối và đường ranh giới này giúp đảm bảo rằng ứng dụng sẽ không được nhập lẫn vào của không gian khác khi tính toán sai một chút . Với sự đảm bảo này, câu hỏi lớn hơn là cần làm gì khi không gian ứng dụng 500 KB đã đầy. 

Trong hầu hết các máy tính, việc thêm bộ nhớ vào dung lượng gốc là có thể thực hiện được. Ví dụ như bạn có thể mở rộng RAM thêm 1MB đến 2 MB. Việc này có thể làm được nhưng lại khá tốn kém , nhưng hầu hết các thông tin một ứng dụng lưu giữ trong bộ nhớ không được sử dụng ngay . Một bộ xử lý có thể truy cập bộ nhớ từ một vị trí nào đó do đó phần lớn các RAM chưa dùng đến trong lúc đó sẽ chuyển thông tin trong RAM sang đĩa cứng có thể mở rộng không gian của RAM mà không hề tốn kém. Kĩ thuật này được gọi là quản lý bộ nhớ ảo. 

Những đĩa lưu trữ là một kiểu bộ nhớ mà có thể được quản lí bởi hệ điều hành và nó có tốc độ thấp nhất . Xếp về tốc độ thì bộ nhớ trong máy tính gồm các loại: 

  • Bộ nhớ Cache tốc độ cao- Đây là bộ nhớ nhanh nhất , có dung lượng tương đối nhỏ thích hợp với CPU thông qua kết nối nhanh nhất. Mạch điều khiển bộ nhớ dự báo trước loại dữ liệu CPU sẽ cần và chuyển nó từ bộ nhớ chính sang bộ nhớ tốc độ cao để nâng cao hiệu suất của hệ thống.
  • Bộ nhớ chính- Đây là RAM mà bạn có thể thấy được tính bằng MB khi bạn mua máy tính.
  • Bộ nhớ thứ cấp- Đây là bộ lưu trữ bằng từ tính cho các ứng dụng và dữ liệu luôn sẵn có để dùng và được xem như RAM ảo dưới sự kiểm soát của hệ điều hành.  

Hệ điều hành phải cân bằng nhu cầu của các quy trình khác nhau với các loại bộ nhớ sẵn có khác nhau để lên kế hoạch các lệnh trong Process để chuyển dữ liệu trong các khối ( gọi là Trang – Page ) cho phù hợp .

\"\"

Quản lí thiết bị

 Đường dẫn giữa hệ điều hành và tất cả phần cứng trên Mainboard của máy tính đi qua một chương trình đặc biệt gọi là bộ phận điều khiển hay Driver. Phần lớn chức năng của Driver là chuyển đổi tín hiệu điện của hệ thống phần cứng  và ngôn ngữ lập trình cấp cao của hệ điều hành và chương trình ứng dụng. Driver lấy dữ liệu mà hệ điều hành định nghĩa là một file và dịch chúng sang dòng bit được đặt ở một vị trí cụ thể trong thiết bị lưu trữ hay một loạt các xung laze trong máy in. 

Do có sự khác biệt lớn trong phần cứng được kiểm soát thông qua các Driver nên cách các chương trình Driver hoạt động cũng khác nhau, nhưng hầu hết được chạy khi thiết bị được yêu cầu và thực hiện các chức năng như các Process khác. Hệ điều hành sẽ thường xuyên chỉ định các khối ưu tiên cho các Driver để tài nguyên phần cứng có thể được sẵn sàng để sử dụng càng nhanh càng tôt. 

Một lý do mà Driver tách rời khỏi hệ điều hành đó là để chức năng mới có thể được thêm vào Driver và do đó thêm chức năng cho hệ thống phần cứng mà không yêu cầu hệ điều hành phải thay đổi, biên tập lại và thực hiện lại. Thông qua sự phát triển của thiết bị Driver phần cứng mới, sự phát triển thường có được nhờ các nhà sản xuất phần cứng tương ứng hơn là của nhà cung cấp hệ điều hành, nên khả năng của thiết bị đầu cuối của toàn hệ thống cắm thêm có thể được nâng cao đáng kể. 

Quản lý hệ thống vào ra là vấn đề quản lý hàng đợi và bộ đệm , điều kiện lưu trữ đặc biệt đưa dòng những Bit ra khỏi thiết bị, có thể là bàn phím hay cổng nối tiếp, giữ những Bit này gửi chúng đến CPU với tốc độ đủ để CPU có thể nhận ra. Chức năng này đặc biệt quan trọng khi một số Process đang chạy và chiếm thời gian của bộ xử lý để nhận biết những tín hiệu từ thiết bị I/O. Hệ điều hành sẽ chỉ dẫn bộ đệm tiếp tục lấy dữ liệu vào từ thiết bị nhưng ngừng việc gửi dữ liệu đến CPU trong khi quy trình sử dụng dữ liệu vào bị treo. Sau đó, khi Proces cần dữ liệu vào được kích hoạt một lần nữa, hệ điều hành sẽ điều khiển bộ đệm gửi dữ liệu. Quy trình này cho phép bàn phím hoặc một bộ điều giải xử lý người sử dụng bên trong hoặc máy tính với tốc độ cao thậm chí nếu có thời gian khi bộ xử lý không sử dụng dữ liệu vào từ những nguồn này. 

Quản lý tất cả tài nguyên của hệ thống máy tính là một chức năng lớn của hệ điều hành và trong trường hợp hệ điều hành thời gian thực có thể thực hiện tất cả các chức năng ảo được yêu cầu. Đối với hệ điều hành khác, việc cung cấp một phương thức đơn giản thích hợp cho ứng dụng và giúp con người sử dụng sức mạnh của phần cứng là một lý do quan trọng cho sự tồn tại của hệ điều hành. 

Giao diện đối với bên ngoài

 Giao diện ứng dụng.

 

            Trong khi các Driver đưa ra cách để ứng dụng tận dụng hệ thống phần cứng phụ mà không phải biết mọi chi tiết về hoạt động của phần cứng thì Giao diện lập trình ứng dụng (application program interfaces - API) cho phép nhà lập trình ứng dụng sử dụng chức năng của máy tính và hệ điều hành mà không phải kiểm tra tất cả chi tiết trong hoạt động của CPU. Hãy cùng xem ví dụ tạo ra file đĩa cứng cho các dữ liệu để thấy tại sao điều này lại quan trọng. 

Một nhà lập trình viết một ứng dụng để ghi lại dữ liệu từ một thiết bị khoa học cho phép nhà khoa học chỉ định tên của file được tạo ra. Hệ điều hành có thể cung cấp chức năng API có tên MakeFile để tạo các file. Khi viết chương trình, nhà lập trình sẽ chèn một dòng như sau: 

             MakeFile [ 1, %Name, 2] 

Trong ví dụ này, những lệnh sẽ thông báo cho hệ điều hành tạo ra file cho phép truy cập ngẫu nhiên đối với dữ liệu của nó (được chỉ định bởi số 1- có thể lựa chọn là số 0 với file nối tiếp) , sẽ có tên do người sử dụng đánh vào (%Name) và sẽ có kích cỡ khác nhau phụ thuộc vào lượng dữ liệu được lưu trữ trong file ( được chỉ định bởi số 2- có thể lựa chọn số 0 cho cỡ cố định và 1 cho tệp tin có dung lượng lớn thêm khi có thêm dữ liệu nhưng không co lại khi dữ liệu được chuyển đi) . Bây giờ hãy cùng xem làm thế nào mà hệ điều hành có thể chuyển các lệnh thành hành động.

Hệ điều hành gửi truy vấn đến ổ đĩa cứng để nhận vị trí của nơi sẵn sàng còn trống cho việc lưu trũ đầu tiên.

 

Với thông tin đó, hệ điều hành tạo ra một lối vào trong hệ thống tệp tin cho biết điểm đầu và cuối của tệp tin, tên của tệp tin, loại tệp tin, liệu tệp tin đã được lưu trữ hay chưa, người sử dụng nào có quyền xem hay sửa chữa tệp tin, ngày và thời gian tạo ra tệp tin.

 

Hệ điều hành viết thông tin ở phần đầu của tệp tin cho phép nhận diện tệp tin, cài đặt loại truy cập thích hợp và các thông tin khác liên quan tệp tin . Trong số các thông tin này, những truy cấn tới ổ đĩa cứng và những điah chỉ của điểm đầu và điểm cuối của tệp tin trong định dạng phụ thuộc nhiều vào nhà sản xuất và loại ổ đĩa cứng.

 

Do nhà lập trình viết chương trình sử dụng API để lưu trữ đĩa, nhà lập trình không cần phải tuân theo mã lệnh, loại dữ liệu và mã trả lời đối với mọi đĩa cứng và ổ đĩa từ. Hệ điều hành, được kết nối tới những Driver cho các hệ thống phần cứng phụ khác nhau xử lý các chi tiết thay đổi của phần cứng- nhà lập trình phải viết mã cho API và để hệ điều hành làm nốt phần việc còn lại.

 

API trở thành một trong những khu vưc giao tranh nóng bỏng nhất của ngành máy tính trong những năm gần đây. Các công ty nhận thấy rằng nhà lập trình sử dụng API của họ sẽ dịch nó sang khả năng kiểm soát và thu lợi từ những lĩnh vực nhất định trong ngành công nghiệp này. Đây là một trong những lý do mà nhiều công ty sẵn sàng cung cấp ứng dụng đọc và xem miễn phí cho người sử dụng. Họ biết rằng người tiêu dùng sẽ yêu cầu chương trình có chương trình đọc miễn phí và các công ty ứng dụng sẽ sẵn sàng trả tiền bản quyền tác giả để cho phép phần mềm cung cấp các chức năng thêm do khách hàng yêu cầu.

 

Giao diện người sử dụng.

 

Trong khi API cung cấp một phương thức thích hợp cho các ứng dụng sử dụng tài nguyên của hệ thống máy tính, giao diện người sử dụng ( UI – User Interface ) cung cấp cấu trúc cho tương tác giữa người sử dụng và máy tính. Trong thập kỉ trước, hầu hết sự phát triển trong giao diện người sử dụng thuộc lĩnh vực giao diện người dùng đồ hoạ (GUI – Graphic User Interface ) với hai mẫu là Macintosh của Apple và Windows của Microsoft đã thu hút sự chú ý của người tiêu dùng và chiếm phần lớn thị phần. Hệ điều hành Linux nguồn mở phổ biến cũng hỗ trợ cho giao diện người dùng đồ hoạ.

 

\"\"

 
          Có giao diện người dùng khác, một số là giao diện đồ hoạ và một số không phải giao diện đồ hoạ cho các hệ điều hành khác.

 

Ví dụ như hệ điều hành Unix có giao diện người dùng gọi là Shell có giao diện người dùng linh hoạt và mạnh hơn hệ điều hành chuẩn với giao diện dựa trên văn bản . Các chương trình như Korn Shell và C Shell là những giao diện dựa trên văn bản có thêm các tính năng quan trọng nhưng mục đích chủ yếu của chúng là giúp người sử dụng dễ dàng vận dụng các chức năng của hệ điều hành. Cũng có giao diện đồ hoạ như X-Windows và Gnome giống máy tính sử dụng Windows và Macintosh

 

Cần nhớ rằng trong tất cả các ví dụ trên, giao diện người dùng là một chương trình hay là một số chương trình được xem là lớp ở phía trên hệ điều hành.  Chức năng hệ điều hành- quản lý hệ thống máy tính- nằm trong nhân của hệ điều hành. Quản lí hiển thị ( Display manager ) là riêng biệt cho dù nó được gắn chặt vào phía dưới nhân. Mối quan hệ giữa nhân hệ điều hành và giao diện người dùng, tiện ích và phần mềm khác cho thấy sự khác biệt trong hệ điều hành hiện nay và sẽ còn khác biệt trong tương lai. 

 Tầm quan trong ngày càng lớn của mạng. 

Đối với hệ thống máy tính để bàn, truy cập tới mạng LAN hay Internet đã trở thành một tính năng được kì vọng đến mức thật khó mà nhắc đến hệ điều hành mà không nhắc đến khả năng kết nối của nó với các máy tính và máy chủ khác.Nhà phát triển hệ điều hành đã coi Internet là phương thức chuẩn để cung cấp bản cập nhật và sửa lỗi hệ điều hành quan trọng. Mặc dù có thể nhận những bản cập nhật này thông qua CD nhưng cách này ngày càng lạc hậu. Thực tế, một số hệ điều hành chỉ được cung cấp thông qua nhà phân phối trên Internet. 

Hơn nữa, một quá trình gọi là NetBooting có dòng dữ liệu có khả năng chuyển hệ điều hành đang làm việc của Máy tính – Kernel chuẩn của khách hàng , giao diện người sử dụng và của tất cả những liên quan tới máy tính mà nó điều khiển . Điều này chỉ có thể thực hiện được đối với người sử dụng nhiều kinh nghiệm về nền tảng nhiều người sử dụng như Unix và với một bộ các ứng dụng chuyên dụng. NetBooting cho phép hệ điều hành của một máy tính được phục vụ thông qua kết nối mạng, bởi một máy tính từ xa được kết nối bất cứ nơi nào trong mạng. Một máy chủ NetBoot có thể đáp ứng hệ điều hành của một tá máy khách cùng một lúc và đối với người sử dụng ngồi trước mỗi máy khách giống như họ đang sử dụng hệ điều hành máy tính để bàn quen thuộc như Windows hay MacOS. 

Nguồn mở.

 

\"\"

 

Một câu hỏi về tương lai của hệ điều hành xoay quanh khả năng phân phối khoa học các phần mềm để tạo ra hệ điều hành hữu dụng cho cả các tập đoàn và người tiêu dùng. 

Hệ điều hành Linux được tạo ra và phân phối theo nguyên tắc nguồn mở có tác động quan trọng đến hệ điều hành nói chung. Hầu hết những hệ điều hành, những Driver và các chương trình tiện ích được viết ra bởi các tổ chức thương mại phân phối phiên bản có thể thực hiện được của phần mềm của họ- phiên bản không thể nghiên cứu và chỉnh sửa.

Nguồn mở yêu cầu việc phân phối nguồn tài liệu có thể nghiên cứu, sửa đổi và xây dựng và kết quả được phân phối miễn phí. Trong thế giới máy tính để bàn, điều này sẽ dẫn đến sự phát triển và sự phân phối các ứng dụng có ích và miễn phí như chương trình xử lý hình ảnh GIMP và máy chủ web phổ biến Apache. Trong thế giới thiết bị người tiêu dùng việc sử dụng Linux đã mở đường cho người sử dụng cá nhân có quyền kiểm soát hoạt động thiết bị theo cách riêng của họ.

 

\"\"\"\"