Hệ điều hành
máy tí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.
I. 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.
II. 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.
IV. 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.
V. 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.
VI. 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.
VII. 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 .
VII. 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.
VII. Giao diện đối với bên ngoài
1. 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.