Tải bản đầy đủ (.pdf) (20 trang)

Giáo an Bài giảng: Công nghệ thông tin về các hệ điều hành hiện nay

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (925.36 KB, 20 trang )

Chương 1
TỔNG QUAN
I. KHÁI NIỆM VỀ HỆ ĐIỀU HÀNH
Hệ điều hành là một bài toán mở và không có một định nghĩa thật chuẩn xác. Theo định nghĩa
của Silberschatz “Hệ điều hành là chương trình quản lý phần cứng máy tính”. Tuy nhiên,
quan điểm về một hệ điều hành tùy thuộc nhiều vào nhu cầu và góc nhìn của người dùng vào
hệ thống. Quan điểm thứ nhất cho rằng hệ điều hành là một bộ điều phối tài nguyên. Ở quan
điểm này, hệ điều hành nắm giữ các tài nguyên, nó có nhiệm vụ cấp phát và thu hồi các tài
nguyên này cho người dùng luân phiên nhau. Tài nguyên ở đây bao gồm CPU, bộ nhớ, thiết
bị giao tiếp mạng, thiết bị nhập xuất, và ổ đĩa. Trong quan điểm thứ hai, hệ điều hành là một
máy ảo. Nghĩa là hệ điều hành cung cấp cho mỗi người dùng một máy ảo. Máy ảo này có thể
giống máy vật lý thật, có thể là một máy tính hoàn toàn khác, có thể là một máy tính mạnh
hơn. Điều quan trọng là máy ảo tạo cho người dùng tin rằng họ sở hữu riêng các tài nguyên
phần cứng cần thiết cho nhu cầu của mình. Một góc nhìn khác nữa là xem hệ điều hành như
một bộ trợ giúp chia sẽ tài nguyên chung. Hệ điều hành chịu trách nhiệm phân chia, phòng
chống xâm phạm tài nguyên giữa các người dùng. Đồng thời quản lý sự cộng tác của người
dùng trong việc sử dụng chung nguồn tài nguyên hạn hẹp. Đây cũng là góc nhìn kinh tế, vì
chúng ta không thể mua sắm hết tất cả tài nguyên cần thiết.
Theo ba quan điểm ở trên về hệ điều hành, nếu chúng ta có thể cung cấp đủ phần cứng cho
mọi người dùng, nghĩa là giải quyết được bài toán quản lý chia xẻ tài nguyên, thì liệu chúng ta
có còn cần đến hệ điều hành! Thực tế, ngoài việc chia xẻ tài nguyên chung, hệ thống cần cung
cấp các giao diện trung gian, giúp người dùng dễ dàng sử dụng các dịch vụ, các tính năng của
phần cứng. Giao diện trung gian ở ngôn ngữ bậc cao luôn tạo sự tiện lợi và thân thiện với
người dùng.
Không có sự phân biệt rõ ràng giữa phần mềm ứng dụng và hệ điều hành. Tuy nhiên, đôi khi
vấn đề này cũng được tranh cãi. Thí dụ trường hợp Bộ Tư pháp Mỹ và Microsoft tranh
cãi trình duyệt Internet Explorer có phải là một phần của hệ điều hành Windows không.
Cấu tạo bên trong mỗi hệ điều hành khác nhau đáng kể, bởi vì hệ điều hành được cấu thành
bởi rất nhiều thành phần khác nhau. Để thiết kế một hệ điều hành, thì mục tiêu của hệ thống
phải được xác định trước. Vì nó ảnh hưởng đến việc lựa chọn cấu trúc cũng như các thuật
toán bên trong hệ điều hành.


Bởi vì hệ điều hành là một giải pháp lớn và phức tạp. Để triển khai nó, người ta phải chia
thành nhiều phần nhỏ. Các phần phải được phác họa một cách chi tiết, tỉ mỉ với các định
nghĩa rõ ràng về đầu vào, đầu ra, các thủ tục trong mỗi thành phần.
II. CHỨC NĂNG CHÍNH YẾU CỦA HỆ ĐIỀU HÀNH
II.1 Quản lý chia sẻ tài nguyên
Tài nguyên của hệ thống (CPU, bộ nhớ, thiết bị ngoại vi, ) vốn rất giới hạn, nhưng trong các
hệ thống đa nhiệm, nhiều người sử dụng có thể đồng thời yêu cầu nhiều tài nguyên. Để thỏa
mãn yêu cầu sử dụng chỉ với tài nguyên hữu hạn và nâng cao hiệu quả sử dụng tài nguyên, hệ
điều hành cần phải có cơ chế và chiến lược thích hợp để quản lý việc phân phối tài nguyên.
Ngoài yêu cầu dùng chung tài nguyên để tiết kiệm chi phí, người sử dụng còn cần phải chia sẻ
thông tin (tài nguyên phần mềm) lẫn nhau, khi đó hệ điều hành cần đảm bảo việc truy xuất
đến các tài nguyên này là hợp lệ, không xảy ra tranh chấp, mất đồng nhất.
II.2 Giả lập một máy tính mở rộng
Hệ điều hành làm ẩn đi các chi tiết phần cứng, người sử dụng được cung cấp một giao diện
đơn giản, dễ hiểu, dễ sử dụng và không phụ thuộc vào thiết bị phần cứng cụ thể.
Thực tế, ta có thể xem hệ điều hành như là một hệ thống bao gồm nhiều máy tính trừu tượng
xếp thành nhiều lớp chồng lên nhau, máy tính mức dưới phục vụ cho máy tính mức trên. Lớp
trên cùng là giao diện trực quan nhất để chúng ta điều khiển.
Ngoài ra có thể chia chức năng của hệ điều hành theo bốn chức năng sau:
 Quản lý tiến trình (process management)
 Quản lý bộ nhớ (memory management)
 Quản lý hệ thống lưu trữ (storage management)
 Giao tiếp với người dùng (user interface)
Khi phải xây dựng một hệ điều hành mới, chúng ta sẽ phải đưa ra giải pháp cho các vấn đề cốt
lõi sau:
 Giao diện tương tác với nhân hệ điều hành: nghĩa là máy ảo mà hệ điều hành cung cấp
cho người dùng phải như thế nào? Chức năng , giao diện của các hàm, thủ tục (system
calls) sẽ được cung cấp cho các ứng dụng người dùng.
 Quản lý tài nguyên: tài nguyên phần cứng được điều phối (cấp phát và thu hồi) giữa
nhiều người dùng như thế nào.

 Chia xẻ: tài nguyên được chia xẻ và bảo vệ giữa những người dùng chung như thế
nào.
 An toàn: làm sao để bảo vệ người dùng, bảo vệ các chương trình giữa các chương
trình khác. Làm sao để bảo vệ an toàn cho các thiết bị dùng chung giữa các chương
trình khác nhau, giữa các người dùng khác nhau.
 Truyền thông: các ứng dụng giao tiếp với nhau như thế nào, khi chúng trên cùng một
máy, hoặc khác máy.
 Cấu trúc: tổ chức các thành phần bên trong hệ điều hành như thế nào.
 Đồng thời: làm sao để nhiều chương trình có thể thực thi đồng thời. Nghĩa là khi một
chương trình chờ đợi tác vụ nhập xuất thì chương trình khác có thể sử dụng CPU.
 Thực thi: làm sao để mọi ứng dụng đều thực thi nhanh.
 Tin cậy: làm sao để tránh việc “treo”, “sụp” hệ thống. Nếu dữ liệu đầu vào là đúng thì
kết quả thực thi phải đúng.
 Bền vững: làm sao để dữ liệu không bị mất, hoặc có thể phục hồi được khi chương
trình kết thúc bất ngờ, hay máy tính mất nguồn điện.
 Sổ sách: làm sao để lưu vết các tài nguyên đang sử dụng.
 Phân tán: làm sao để các máy tính dễ dàng hợp tác nhau.
 Tính mở rộng: làm sao để hệ điều hành vẫn vận hành tốt khi mà khối lượng công việc,
hoặc năng lực phần cứng tăng lên.
III. CÁC THÀNH PHẦN CỦA HỆ ĐIỀU HÀNH
Về cơ bản, một hệ điều hành thông thường sẽ bao gồm các hệ thống quản lý sau,
 Hệ thống quản lý tiến trình
 Hệ thống quản lý bộ nhớ
 Hệ thống quản lý nhập xuất
 Hệ thống quản lý tập tin
 Hệ thống bảo vệ
 Hệ thống dịch lệnh
 Quản lý mạng
III.1 Quản lý tiến trình
Tiến trình là phiên bản của một chương trình đang thực thi. Trong máy tính von Neumann,

mỗi CPU chỉ có thể thực thi một tiến trình duy nhất tại một thời điểm. Các máy tính cá nhân
trước đây, khi sử dụng hệ điều hành MS-DOS, phiên bản hệ điều hành đầu tiên của Microsoft,
cũng dừng lại ở giới hạn này. Từ đầu những năm 1960, hệ điều hành cho các máy tính lớn,
mainframe, đã hỗ trợ đa nhiệm. Các hệ điều hành hiện nay đều cho phép nhiều chương trình
thực thi đồng thời thông qua cơ chế đa nhiệm dù chỉ với một CPU.
Hệ quản lý tiến trình chịu trách nhiệm triển khai cơ chế đa nhiệm cho hệ thống. Thông thường
một máy tính chỉ có một CPU với một lõi duy nhất, nên việc cho phép đa nhiệm đồng nghĩa
với việc phải chuyển đổi giữa các tiến trình một cách nhanh chóng. Hệ quản lý tiến trình sẽ
tính toán việc phân phối CPU cũng như những tài nguyên khác cho tiến trình. Hầu hết các hệ
điều hành phân loại độ ưu tiên cho các tiến trình, để một số tiến trình ưu tiên được cấp thời
gian sử dụng CPU nhiều hơn, hay chiếm được nhiều phần trên bộ nhớ hơn các tiến trình khác.
Các tiến trình xử lý ngắt luôn được thực thi với độ ưu tiên cao nhất. Trong nhiều hệ thống,
tiến trình nền được triển khai. Tiến trình này được thực thi mỗi khi hệ thống rãnh rỗi. Ví dụ
như tiến trình System Idle trong hệ điều hành Windows.
III.2 Quản lý bộ nhớ
Kiến trúc máy tính đương đại sắp xếp các bộ nhớ máy tính theo phân lớp, bắt đầu bằng các
thanh ghi với tốc độ truy cập rất nhanh, đến CPU cache, bộ nhớ chính (RAM - Random
Access Memory), bộ nhớ ngoài (đĩa cứng). Hệ quản lý bộ nhớ chịu trách nhiệm quản lý, cấp
phát, thu hồi, phối hợp giữa các vùng nhớ để mang lại hiệu quả cao nhất. Công việc quan
trọng và cũng nhiều thử thách đó là việc xây dựng và quản lý vùng nhớ ảo. Tạo ra một vùng
nhớ lớn hơn nhiều so với bộ nhớ chính, để giúp cho nhiều tiến trình có thể được thực thi song
song với nhau. Kĩ thuật thông thường là sử dụng một phần của đĩa cứng làm vùng nhớ phụ
cho bộ nhớ chính. Nhưng nếu các tiến trình yêu cầu vùng nhớ quá lớn so với phần cứng có
sẳn, hệ thống sẽ rơi vào sự trì trệ (thrashing). Điều này xảy ra bởi vì có sự luân chuyển dữ liệu
liên tục giữa RAM và ổ cứng.
Một phần quan trọng khác trong quản lý bộ nhớ là việc quản lý địa chỉ ảo. Vì mỗi tiến trình sẽ
nhìn thấy toàn bộ địa chỉ ảo, từ 0 đến tối đa. Vì vậy hệ quản lý bộ nhớ không cho phép các
tiến trình xâm phạm vùng địa chỉ lẫn nhau. Kĩ thuật hay được sử dụng là bảng trang, để quản
lý ánh xạ từ trang ảo đến trang thật trong bộ nhớ vật lý. Hệ quản lý bộ nhớ sẽ lưu giữ thông
tin tiến trình nào được lưu giữ trong trang nào. Một khi tiến trình kết thúc, các trang này sẽ

được thu hồi lại để cấp cho tiến trình mới. Một kĩ thuật để tăng tốc độ truy xuất dữ liệu là sử
dụng cache. Cache là vùng nhớ nhỏ nhưng truy xuất rất nhanh, các dữ liệu thường xuyên
được truy xuất có thể lưu tạm trên cache để tăng tốc độ thực thi của chương trình. Cũng với
mục tiêu tăng tốc, hệ thống cũng có thể nạp trước những dữ liệu của một tiến trình mới.
III.3 Quản lý hệ thống tập tin
Các hệ điều hành thường hỗ trợ một số hệ thống tập tin khác nhau. Về mục đích chung thì các
hệ quản lý tập tin là giống nhau, nhưng cài đặt thực tế thì có thể khác nhau. Hai ví dụ đơn
giản là việc phân biệt kí tự in hoa hay kí tự thường và dấu phân cách giữa các thư mục trong
một đường dẫn. Trong khi Unix và các hệ gần Unix thì có phân biệt kí tự hoa, kí tự thường
trong tên tập tin, thư mục. Còn Windows thì không phân biệt. Unix thì sử dụng dấu “/” để
phân tách các thư mục trong một đường dẫn. Còn MS-DOS sử dụng “\”.
Các hệ quản lý tập tin phải cho phép phục hồi tập tin khi máy tính gặp sự cố bất ngờ, như mất
nguồn điện hoặc bị “treo”.
Việc quản lý tập tin phụ thuộc vào cấu trúc của bảng quản lý tập tin, thư mục. Windows hỗ
trợ cho các hệ thống tập tin FAT 12, FAT 16, FAT 32, và NTFS. Windows Embedded CE 6.0
giới thiệu kiến trúc ExFAT. Nhiều phiên bản của Linux hỗ trợ ext2, ext3, ReiserFS, Reiser4,
GFS, GFS2, OCFS, OCFS2 và NILFS. FAT 12 là kiến trúc sử dụng ở đĩa mềm 1.4MB, ngày
nay gần như không còn sử dụng nữa. Mac OS X hỗ trợ HFS+ như là kiến trúc chính, ngoài ra
cũng hỗ trợ FAT 16, FAT 32, NTFS, và ZFS.
III.4 Quản lý nhập xuất
Việc điều khiển các thiết bị nối kết với máy tính cũng là một mãng chính trong việc thiết kế
hệ điều hành. Bởi vì các thiết bị nhập xuất khá đa dạng cả về tính năng lẫn tốc độ (chuột, bàn
phím, ổ đĩa, CD-ROM). Nên cần nhiều phương cách khác nhau để điều khiển chúng.
Công nghệ sản xuất thiết bị nhập xuất phát triển theo hai hướng xung đột nhau. Hướng thứ
nhất là tăng cường chuẩn hóa giao diện giao tiếp của cả phần mềm lẫn phần cứng. Hướng này
giúp các thiết bị dễ dàng gắn kết và các máy tính và hệ điều hành có sẳn. Nhưng ở hướng thứ
hai, nhà sản xuất có chiều hướng đa dạng hóa thiết bị nhập xuất. Sự đa dạng hóa dẫn đến có
nhiều thiết bị mới quá khác với thiết bị cũ, dẫn đến việc khó gắn kết với hệ thống máy tính và
hệ điều hành đang có sẳn. Thách thức này xuất hiện khi kết hợp giữa phần cứng và phần
mềm. Các thành phần cơ bản của một thiết bị nhập xuất cũng khá đa dạng, ví dụ cổng, bus, bộ

điều khiển thiết bị. Vì vậy hệ điều hành phải có một mô đun tích hợp trình điều khiển thiết bị.
Mô đun này phải cung cấp một giao diện giao tiếp chuẩn đến các thiết bị cụ thể. Cũng giống
như các hàm hệ thống (system calls) cung cấp giao diện cho chương trình người dùng gọi các
dịch vụ bên trong hệ điều hành.
III.5 Hệ thống dịch lệnh
Đây là một trong những bộ phận quan trọng của hệ điều hành. Nó đóng vai trò giao diện giữa
người dùng và hệ điều hành. Nó chịu trách nhiệm nhận các chỉ thị điều khiển từ người dùng,
ví dụ chương trình shell, phiên dịch thành các lệnh gửi cho hệ điều hành xử lý. Hệ thống
thông dịch giúp cho người dùng có thể trực tiếp sử dụng máy tính mà không cần phải lập
trình.
III.6 Đảm bảo an toàn hệ thống
Các hệ điều hành thường triển khai hệ thống an toàn ở những mức độ nhất định. An toàn cho
hệ thống dựa trên hai tiêu chí chính:
1. Hệ điều hành quản lý quyền truy cập các tài nguyên, trực tiếp hoặc gián tiếp, ví dụ như
tập tin, hàm hệ thống, thông tin tài khoản người dùng, hay các dịch vụ của các chương
trình đang thực thi trên máy tính.
2. Hệ điều hành phải phân biệt được một yêu cầu là được phép hay không được phép.
Các hệ thống thường dùng định danh của đối tượng yêu cầu để xác định quyền. Đối
tượng này được chia làm hai trường hợp:
a. Bên trong: nghĩa là mỗi tiến trình đang thực thi có một định danh. Một số hệ
thống không giới hạn quyền truy cập từ tiến trình đang thực thi. Đa số hệ thống
là kiểm tra quyền của mỗi yêu cầu truy cập tài nguyên.
b. Bên ngoài: một yêu cầu từ bên ngoài hệ thống, ví dụ như đăng nhập hệ thống.
Trước khi định danh đối tượng truy cập hệ thống, thì quá trình xác thực cần
được thực hiện. Thường là đối tượng truy cập được chứng thực bằng nhập tên
đăng nhập và mật mã.
III.7 Quản lý mạng
Hầu hết các hệ điều hành ngày nay đều cài đặt bộ giao thức TCP/IP. Nghĩa là một máy tính có
thể trở thành một thành viên trên mạng và các máy tính trên cùng mạng có thể chia xẻ tập tin,
máy in, máy scan… thông qua đường truyền có dây hoặc không dây.

Ngoài ra các hệ điều hành cũng hỗ trợ các giao thức mạng khác DECnet, IPX/SPX, Apple
Talk. Với sự ra đời và phát triển như vũ bảo của Internet, các máy tính ngày nay đều trang bị
nhiều thiết bị để truyền thông, cả có dây lẫn không dây.
IV. PHÂN LOẠI HỆ ĐIỀU HÀNH
IV.1 Hệ thống xử lý theo lô
Trong hệ thống xử lý theo lô, hệ điều hành phân loại các công việc thành từng nhóm, thường
là dựa trên đặc tính tương đồng của dữ liệu đầu vào.
Khi một công việc chấm dứt, hệ thống sẽ thực hiện công việc kế tiếp mà không cần sự can
thiệp của người lập trình, do đó thời gian thực hiện sẽ mau hơn. Một chương trình, còn gọi là
bộ giám sát thường trực được thiết kế để giám sát việc thực hiện dãy các công việc một cách
tự động, chương trình này luôn luôn thường trú trong bộ nhớ chính.
CPU thường hay nhàn rỗi do tốc độ làm việc của các thiết bị nhập xuất (thường là thiết bị cơ)
chậm hơn rất nhiều lần. Cho dù là một CPU chậm nhất, nó cũng nhanh hơn rất nhiều lần so
với thiết bị nhập xuất. Do đó phải có các phương pháp để đồng bộ hóa việc hoạt động của
CPU và thao tác nhập xuất.
 Xử lý ngoại tuyến: xử lý ngoại tuyến là thay vì CPU phải đọc trực tiếp từ thiết bị nhập
và xuất ra thiết bị xuất, hệ thống dùng một bộ lưu trữ trung gian. CPU chỉ thao thác
với bộ phận này. Việc đọc hay xuất đều thực hiện với bộ lưu trữ trung gian.
 Spooling (simultaneous peripheral operation on-line) là cơ chế cho phép bên gửi
chuyển dữ liệu vào một vùng nhớ tạm. Bên nhận sẽ đọc dữ liệu này vào một thời điểm
nào đó trong tương lai.
IV.2 Hệ thống đa chương (multiprogram)
Khi hệ thống muốn tận dụng nguồn tài nguyên hiện có, cho phép nhiều công việc cùng truy
xuất lên thiết bị. Hệ thống phải điều phối các tài nguyên giữa các công việc này. Hệ thống này
được gọi là đa chương (multiprogram), mục tiêu chính là gia tăng khai thác CPU bằng cách
tổ chức các công việc sao cho CPU luôn luôn phải trong tình trạng làm việc.
Ý tưởng như sau, hệ điều hành lưu giữ một phần của các công việc trong bộ nhớ. CPU sẽ lần
lượt thực hiện các phần công việc này. Khi đang thực hiện, nếu có yêu cầu truy xuất thiết bị
thì CPU không nghỉ mà thực hiện tiếp công việc thứ hai, và tiếp tục như vậy.
Với hệ đa chương hệ điều hành ra quyết định cho người sử dụng vì vậy, hệ điều hành đa

chương rất tinh vi. Hệ phải xử lý các vấn đề lập lịch cho công việc, lập lịch cho bộ nhớ và cho
cả CPU.
IV.3 Hệ thống chia xẻ thời gian (timesharing)
Hệ thống chia xẻ thời gian là một cải tiến của hệ đa chương, với mục tiêu chính là tăng tốc độ
phản hồi của máy tính cho người dùng. Hệ thống này còn được gọi là hệ thống đa
nhiệm (Multitasking). Nhiều công việc cùng được thực hiện thông qua cơ chế chuyển đổi của
CPU như hệ đa chương nhưng thời gian mỗi lần chuyển đổi diễn ra rất nhanh.
Hệ thống chia xẻ được phát triển để cung cấp việc sử dụng bên trong của một máy tính có giá
trị hơn. Hệ điều hành chia xẻ thời gian dùng kĩ thuật điều phối CPU và đa chương để cung
cấp cho mỗi người sử dụng một phần nhỏ trong máy tính chia xẻ. Một chương trình khi thi
hành được gọi là một tiến trình. Trong quá trình thi hành của một tiến trình, nó phải thực hiện
các thao tác nhập xuất và trong khoảng thời gian đó CPU sẽ thi hành một tiến trình khác.
Hệ điều hành chia xẻ cho phép nhiều người sử dụng chia xẻ máy tính một cách đồng bộ do
thời gian chuyển đổi nhanh nên họ có cảm giác là các tiến trình đang được thi hành cùng lúc.
Hệ điều hành chia xẻ phức tạp hơn hệ điều hành đa chương. Nó phải có các chức năng: quản
trị và bảo vệ bộ nhớ, sử dụng bộ nhớ ảo. Nó cũng cung cấp hệ thống tập tin truy xuất trực
tuyến. Các hệ điều hành hiện đại ngày nay sử dụng cơ chế chia xẻ.
IV.4 Hệ thống song song
Ngoài các hệ thống chỉ có một bộ xử lý còn có các hệ thống có nhiều bộ xử lý cùng chia
xẻ bus truyền dữ liệu, đồng hồ, bộ nhớ và các thiết bị ngoại vi. Các bộ xử lý này liên lạc bên
trong với nhau.
Có nhiều nguyên nhân xây dựng dạng hệ thống này. Với sự gia tăng số lượng bộ xử lý, công
việc được thực hiện nhanh chóng hơn. Nhưng không phải theo đúng tỉ lệ tuyến tính thời gian,
nghĩa là có n bộ xử lý không có nghĩa là sẽ thực hiện nhanh hơn n lần.
Hệ thống với máy nhiều bộ xử lý sẽ tối ưu hơn hệ thống có nhiều máy có một bộ xử lý vì các
bộ xử lý chia xẻ các thiết bị ngoại vi, hệ thống lưu trữ, nguồn … và rất thuận lợi cho nhiều
chương trình cùng làm việc trên cùng một tập hợp dữ liệu.
Một lý do nữa là độ tin cậy. Các công việc được xử lý trên nhiều bộ xử lý và sự hỏng hóc của
một bộ xử lý sẽ không làm “sụp” đến toàn bộ hệ thống.
Hệ thống đa xử lý thông thường sử dụng cách đa xử lý đối xứng, trong cách này mỗi bộ xử

lý chạy với một bản sao của hệ điều hành, những bản sao này liên lạc với nhau khi cần thiết.
Một số hệ thống sử dụng đa xử lý bất đối xứng, trong đó mỗi bộ xử lý được giao một công
việc riêng biệt. Một bộ xử lý chính kiểm soát toàn bộ hệ thống, các bộ xử lý khác thực hiện
theo lệnh của bộ xử lý chính hoặc theo những chỉ thị đã được định nghĩa trước. Mô hình này
theo dạng quan hệ chủ tớ. Nghĩa là bộ xử lý chính sẽ lập lịch cho các bộ xử lý khác.
Một ví dụ về hệ thống xử lý đối xứng là version Encore của UNIX cho máy tính Multimax.
Hệ thống này có hàng chục bộ xử lý. Ưu điểm của nó là nhiều tiến trình có thể thực hiện thật
sự cùng lúc. Một hệ thống đa xử lý cho phép nhiều công việc và tài nguyên được chia xẻ
tự động trong những bộ xử lý khác nhau.
Hệ thống đa xử lý không đồng bộ thường xuất hiện trong những hệ thống lớn, trong đó hầu
hết thời gian hoạt động đều dành cho xử lý nhập xuất.
IV.5 Hệ thống phân tán
Hệ thống này cũng tương tự như hệ thống chia xẻ thời gian nhưng các bộ xử lý sở hữu bộ
nhớ, đồng hồ cục bộ riêng. Các bộ xử lý thông tin với nhau thông qua các mạng truyền thông,
hoặc những bus tốc độ cao.
Các bộ xử lý trong hệ phân tán thường khác nhau về tốc độ xử lý và chức năng. Nó có thể bao
gồm máy tính cá nhân, máy chủ, thiết bị cầm tay, và những hệ thống máy lớn. Các bộ xử lý
thường được gán với nhiều tên khác nhau như site, node, computer v.v tùy thuộc vào chức
năng của chúng.
Sự cần thiết một hệ thống phân tán bởi vì:
 Chia xẻ tài nguyên: Một người sử dụng A có thể sử dụng máy in laser của người sử
dụng B và người sử dụng B có thể truy xuất những tập tin của A. Tổng quát, chia xẻ
tài nguyên trong hệ thống phân tán cung cấp một cơ chế để chia xẻ tập tin ở xa, xử lý
thông tin trong một cơ sở dữ liệu phân tán, in ấn tại một vị trí ở xa, sử dụng những
thiết bị ở xa để thực hiện các thao tác.
 Tăng tốc độ tính toán: Một thao tác tính toán được chia làm nhiều phần nhỏ cùng
thực hiện một lúc. Hệ thống phân tán cho phép phân chia việc tính toán trên nhiều vị
trí khác nhau để tính toán song song.
 Bền vững: Nếu một vị trí trong hệ thống phân tán bị hỏng, các vị trí khác vẫn tiếp tục
làm việc.

 Thơng tin liên lạc với nhau: trong nhiều trường hợp, các chương trình cần chuyển đổi
dữ liệu với nhau. Nếu các chương trình này thuộc về các máy tính khác nhau, thì
chúng cần sự liên lạc với nhau. Hệ thống phân tán giúp cho các máy tính liên lạc cũng
như đồng bộ dữ liệu với nhau được dễ dàng. Ví dụ trong hệ thống Windows, thường
có sự chia xẻ và chuyển đổi dữ liệu giữa các ứng dụng. Trong một hệ thống mạng,
việc trao đổi dữ liệu diễn ra sn sẻ.
IV.6 Hệ thống thời gian thực
Hệ thống xử lý thời gian thực được sử dụng khi có những đòi hỏi khắt khe về thời gian ở kết
quả đầu ra. Thường chia làm hai loại: thời gian thực cứng và thời gian thực mềm.
Hệ thống thời gian thực cứng là cơng việc được hồn tất đúng lúc. Hệ thống khơng chấp nhận
bất kỳ một sự trễ hạn nào. Việc xử lý theo thời gian thực có thể gây ra xung đột với tất cả hệ
thống liệt kê ở trên.
Dạng thứ hai là hệ thống thời gian thực mềm, việc thỉnh thoảng xảy ra sự trễ hạn là có thể
chấp nhận được. Một số lĩnh vực có thể phù hợp với khái niệm này là multimedia hay thực tại
ảo.
Một hệ điều hành xử lý thời gian thực phải được xử lý nhanh. Hệ thống phải cho kết quả
chính xác trong khoảng thời gian xác định trước.
V. CẤU TRÚC CỦA HỆ ĐIỀU HÀNH
Để xây dựng một hệ thống lớn và phức tạp như các hệ điều hành hiện đại là cơng việc hết sức
khó khăn. Một cách tiếp cận thơng thường là chia một cơng việc khổng lồ thành những cơng
việc nhỏ hơn. Mỗi cơng việc nhỏ phải được định nghĩa một cách rõ ràng về thơng tin đầu vào,
kết quả ở đầu ra, các chức năng bên trong. Trong phần này, chúng ta sẽ trình bày một số cấu
trúc cơ bản của hệ điều hành.
V.1 Cấu trúc đơn giản
Những hệ điều hành khởi đầu nhỏ, đơn giản, trong hệ thống nhỏ. MS-DOS là một ví dụ. Mục
tiêu của hệ điều hành này là cung cấp nhiều tiện ích, tính năng trong khơng gian giới hạn. Vì
vậy nó khơng chia thành các mơ đun chun biệt. Hình V-1 minh họa cấu trúc của MS-DOS


Chương trình ứng dụng

Chương trình hệ thống thường trú
Trình điều khiển thiết bò
Trình điều khiển ROM-BIOS

Hình V-1. Cấu trúc MS-DOS
Trong MS-DOS, chức năng và giao diện của các hàm khơng có phân biệt rõ ràng. Ví dụ, các
chương trình ứng dụng có thể truy cập trực tiếp các hàm nhập xuất để xuất dữ liệu ra màn
hình hay ổ đĩa. Điều này làm cho MS-DOS dễ dàng bị “sụp” khi mà chương trình ứng dụng bị
lỗi.
V.2 Cấu trúc phân lớp
Với sự hỗ trợ thích hợp của phần cứng, hệ điều hành có thể chia thành các phần nhỏ và thích
hợp hơn. Mỗi phần có chức năng đặc tính riêng biệt. Người lập trình có nhiều tự do hơn khi
phát triển chi tiết bên trong mỗi thành phần.
Một hệ thống có thể mơ đun hóa theo nhiều cách. Phân lớp là một trong những phương cách
có thể lựa chọn, với cách này hệ điều hành được chia thành nhiều lớp. Lớp thấp nhất (lớp 0) là
phần cứng; lớp cao nhất (lớp N) là giao diện giao tiếp người dùng, Hình V-2.


Lớp 0
phần
cứng
Giao diện người dùng
lớp N


Hình V-2. Hệ điều hành theo cấu trúc phân lớp
Lớp thứ M chuẩn bị dữ liệu, phương thức cho các lớp cấp cao hơn sử dụng. Đương nhiên, lớp
M có thể gọi các hàm ở các lớp cấp thấp hơn. Ưu điểm của cấu trúc phân lớp là việc dễ tìm
kiếm, sửa lỗi cũng như kiểm chứng tính đúng đắn của từng phân hệ trong hệ điều hành.
Hình V-3 là ví dụ về phân lớp trong hệ điều hành UNIX truyền thống.



Điều khiển màn
hình
Điều khiển thiết
bò lưu trữ
Điều khiển bộ
nhớ
Giao tiếp giữa nhân và phần cứng
Hàm hệ thống-giao tiếp với nhân hệ điều hành
Điều phối CPU
Quản lý bộ nhớ ảo
Giao tiếp với thiết bò nhập xuất, màn hình
Nhân
Shell
Thư viện trình thông dòch
(người dùng)

Hình V-3. Cấu trúc hệ điều hành UNIX
Thử thách của hệ phân lớp là làm sao để thiết kế các phân lớp một cách hợp lý nhất. Bởi vì
các lớp ở trên chỉ sử dụng được các chức năng được cung cấp bởi các lớp bên dưới. Một giới
hạn khác của hệ phân lớp là khi một hàm được gọi thực thi, nó phải trãi qua nhiều phân lớp,
với tham số đầu vào có thể thay đổi theo từng phân lớp. Như vậy hiệu quả thực thi của hệ
thống bị giảm.
V.3 Lõi nhân tối thiểu
Khi một hệ điều hành phát triển, phần nhân thường phình to lên và khó quản lý. Vào giữa
những năm 1980, các nhà nghiên cứu ở đại học Carnegie Mellon (CMU) phát triển hệ điều
hành Mach, sử dụng cách tiếp cận đơn giản hóa nhân. Phương pháp này loại bỏ tất cả các
thành phần khơng thiết yếu ra khỏi nhân hệ điều hành. Để giữ một nhân nhỏ và giản đơn, các
thành phần khơng nhất thiết ở trong nhân sẽ được cài đặt ở phần khơng gian người dùng, hoặc

một lớp hệ thống ở trung gian.
Ưu điểm của cấu trúc nhân đơn giản là việc mở rộng hệ điều hành chỉ phải phát triển các dịch
vụ trong khơng gian người dùng, khơng phải thay đổi phần nhân. Khi phần nhân cần phải thay
đổi, thì việc sửa đổi cũng sẽ ít, vì phần nhân nhỏ. Như vậy hệ điều hành cũng dễ dàng thích
ứng với nhiều phần cứng khác nhau. Tính an tồn của hệ thống cũng được nâng cao vì hầu hết
các tiến trình là tiến trình người dùng chứ khơng phải tiến trình hệ thống.
Mặt trái của thiết kế này là phần nhân có thể bị q tải, vì số lượng hàm hệ thống ít trong khi
phải phục vụ nhiều u cầu từ phần dịch vụ, cũng như tiến trình người dùng.
V.4 Mơ đun
Có lẽ phương thức thiết kế hệ điều hành tốt nhất hiện nay là dựa trên tư tưởng thiết kế hướng
đối tượng. Nhân hệ điều hành được cấu thành bởi một tập các thành phần lõi, chúng được liên
kết động với nhau. Tùy theo cơng việc hiện hành mà thành phần nào sẽ được nạp lên. Ví dụ
cấu trúc của hệ điều hành Solaris, hinh, có bảy mơ đun xung quanh phần lõi nhân.
Thiết kế này cho phép cung cấp các dịch cơ bản của nhân hệ điều hành, đồng thời cũng cho
phép thêm vào hệ thống các dịch vụ mới, như trình điều khiển thiết bị.


Lõi nhân
Solaris
Hệ thống
tập tin
Hàm hệ
thống
Điều phối
Điều khiển
thiết bò và bus
Mô đun hỗn
hợp
Mô đun
STREAMS

Mô đun
thực thi

Hình V-4. Cấu trúc hệ điều hành Solaris
Hệ điều hành Mac OS X của máy Apple sử dụng cấu trúc lai. Nghĩa là Mac OS X sử dụng
phân lớp, trong đó phần nhân (được xem như một lớp) sử dụng kiến trúc nhân nhỏ của hệ điều
hành Mach.
VI. LỊCH SỬ PHÁT TRIỂN HỆ ĐIỀU HÀNH
Lịch sử hệ điều hành gắn liền với lịch sử phát triển phần cứng máy tính. Chúng tôi sẽ lượt qua
các thế hệ máy tính để giới thiệu các hệ điều hành đi cùng với chúng.
VI.1 Thế hệ thứ nhất (1945-55) bóng đèn chân không – một người dùng – không có
hệ điều hành
Sự khởi đầu của máy tính có thể xem là từ giữa những năm 1940, khi mà Howard Aiken
(Harvard), John von Neumann (Viện nghiên cứu cao cấp Princeton), J. Presper Eckert and
William Mauchley (Đại học Pennysalvania), Konrad Zuse (Đức) và một số người khác xây
dựng thành công máy làm tính đầu tiên. Máy tính đầu tiên sử dụng rơle cơ khí, nhưng mà rất
chậm, thời gian xử lý mỗi lệnh được xử lý tính theo giây. Sau đó rơle được thay bằng bong
đèn chân không. Nên các máy tính lúc này rất lớn, bằng cỡ căn phòng vì được trang bị bởi vài
chục nghìn bóng đèn chân không. Nhưng thật sự nó chậm hơn cả hàng triệu lần so với máy
tính cá nhân rẻ tiền nhất ngày nay.
Trong thời kỳ đầu, chỉ có một nhóm nhỏ người vừa thiết kế, sản xuất, lập trình, điều hành và
bảo trì máy tính. Tất cả các chương trình được viết theo ngôn ngữ máy. Ngôn ngữ lập trình
lúc này chưa được biết đến (chưa có hợp ngữ), tất nhiên là chưa có khái niệm về hệ điều hành.
Để thực thi một phép tính, người điều khiển phải nhập dữ liệu vào bằng một plusboard và có
thể phải chờ vài giờ đồng hồ để nhận được kết quả. Nếu có một bóng đèn nào bị hỏng, thì
phép tính có thể cho ra kết quả sai.
Đầu những năm 1950, thẻ đục lỗ (punched card) được sử dụng. Nó cho phép lập trình cũng
như nhập dữ liệu trên đó thay cho plusboard.
VI.2 Thế hệ thứ hai (1955-65) ống bán dẫn và hệ thống đơn chương – xử lý tuần tự
theo lô

Với việc ra đời của công nghệ bán dẫn (transistor) vào giữa những năm 1950 đã thay đổi đáng
kể về máy tính. Máy tính có đủ độ tin cậy để sản xuất và bán. Đây là lần đầu tiên có sự phân
biệt rõ ràng công việc của người thiết kế, người sản xuất, người điều hành, lập trình viên, và
người bảo trì.
Các máy tính thời đó, được gọi là máy tính lớn (mainframes), được đặt trong một phòng điều
hòa đặc biệt. Và chỉ có những chuyên gia mới có thể sử dụng chúng. Việc nạp chương trình
vào máy tính vẫn sử dụng thẻ đục lỗ. Tuy nhiên hệ thống cho phép một khay chứa nhiều thẻ,
vì vậy nhiều công việc có thể đưa vào máy cùng một lúc. Các công việc này sẽ được thực hiện
theo tuần tự bởi một hệ điều hành đơn giản, gọi là hệ thống theo lô. Nghĩa là các công việc sẽ
được thực hiện theo thứ tự. Thời gian xử lý một công việc vẫn khá lâu, vì vậy việc hệ điều
hành máy tính khá rãnh rỗi.
VI.3 Thế hệ thứ 3 (1965-1980) mạch tích hợp (IC) và đa chương
Đầu những năm 1960, các nhà sản xuất máy tính phát triển sản phẩm theo hai hướng khác
nhau. Một hướng là phát triển dòng máy tính lớn dành cho khoa học, với định hướng dùng từ
làm đơn vị chuẩn. Ở một hướng khác là phát triển dòng máy thương mại, với định hướng là
dùng kí tự làm chuẩn.
Lúc bấy giờ, để duy trì và phát triển đồng thời hai hướng này khá tốn kém. Thêm vào đó,
nhiều khách hàng khởi đầu cần một máy tính nhỏ, sau đó lại muốn một máy tính mạnh hơn.
IBM đã đưa ra dòng máy System/360 như là một giải pháp cho bài toán tạo sự tương thích
cho hai dòng sản phẩm khác nhau ở trên. Dòng sản phẩm này chỉ khác nhau về giá cả bởi vì
tốc độ xử lý, kích thước bộ nhớ, số lượng cổng nhập xuất. Còn kiến trúc và tập lệnh là giống
nhau, nên các phần mềm có thể thực thi trên cả các dòng máy khác nhau.
Máy tính 360 là dòng sản phẩm đầu tiên sử dụng công nghệ mạch tích hợp. Nên có sự cải
thiện đáng kể về giá cả cũng như tốc độ so với thế hệ thứ hai.
Ý tưởng về một hệ thống phần mềm trợ giúp cho các máy tính khác nhau có thể tương thích
với nhau ra đời. Và kết quả là một hệ điều hành cồng kềnh và phức tạp với hàng triệu dòng
lệnh hợp ngữ, được lập trình bởi hàng nghìn lập trình viên ra đời. Đó là OS/360, hệ điều hành
này chứa hàng nghìn lỗi, mà khi có một phiên bản mới sửa các lỗi cũ thì lại phát sinh thêm
các lỗi mới.
Mặc dù hệ điều hành OS/360 cồng kềnh và có nhiều vấn đề, nhưng mà nó được chấp nhận bởi

đại đa số người dùng. Hệ điều hành này cũng phát triển một số tính năng không có trong thế
hệ máy tính thứ hai. Quan trọng nhất có lẽ là khái niệm đa chương.
Giải pháp cho đa chương là chia bộ nhớ thành nhiều phần, mỗi phần dành riêng cho một
chương trình. Khi một chương trình đợi nhập xuất thì hệ điều hành cấp CPU cho một chương
trình khác.
Nhu cầu của việc cần phản hồi nhanh của máy tính đã dẫn đến hệ thống chia xẻ thời gian
(timesharing) ra đời. Đây là một biến thể của đa chương. Hệ thống chia xẻ thời gian chính
thức đầu tiên là CTSS (Compatible Time Sharing System) được phát triển bởi đại học MIT.
Sau thành công của CTSS, thì đại học MIT, Bell Labs, và công ty General Electric (GE)
mong muốn thiết kế một máy tính có thể hỗ trợ hàng trăm người dùng cùng lúc. Và dự án về
hệ điều hành chia xẻ thời gian MULTICS (MULTIplexed Information and Computing
Service) khởi xướng vào năm 1964. Đây là một trong những hệ điều hành chia xẻ thời gian có
ảnh hưởng nhiều nhất lúc bấy giờ. Hệ điều hành này kết thúc tuổi thọ của nó vào năm 2000 tại
bộ quốc phòng Canada.
MULTICS được cài đặt với nhiều ý tưởng mang tính phôi thai của khoa học máy tính. Nhưng
việc chuyển thành một sản phẩm thương mại không dễ dàng như mong đợi. Nên lần lượt Bell
Labs rồi GE rời bỏ dự án. MIT tiếp tục theo đuổi và cuối cùng MULTICS ra đời vào năm
1970 và tồn tại trong 30 năm. Mặc dù không thành công trong thương mại, nhưng MULTICS
lại có tầm ảnh hưởng rất nhiều với các hệ điều hành sau này.
Một trong những nhà khoa học của Bell Labs từng làm việc trong dự án MULTICS, Ken
Thompson, phát triển phiên bản MULTICS một người dùng. Sau này được phát triển lên
thành hệ điều hành UNIX, khá phổ biến trong giới học thuật. Bởi vì việc chia xẻ mã nguồn
của UNIX, nên có nhiều hướng phát triển khác nhau. Hai phiên bản chính là System V của
AT&T và BSD của đại học Berkeley. IEEE cũng đã chuẩn hóa UNIX với phiên bản POSIX.
Năm 1987, Tanenbaum cho ra đời MINIX, phiên bản nhỏ của UNIX, để dành riêng cho học
thuật. Với ý niệm cho ra đời một hệ điều hành miễn phí, Linus Torvalds phát triển từ MINIX
cho ra đời hệ điều hành Linux.
VI.4 Thế hệ thứ 4 (1980 – hiện nay) máy tính cá nhân
Với sự phát triển của mạch tích hợp lớn (LSI – large scale Intergration), chip có khả năng
chứa đến hàng nghìn transistor trên một centimet vuông, thế hệ máy tính cá nhân ra đời.

Năm 1974, Intel cho ra đời sản phẩm 8080, 8-bit CPU, và đặt hàng Gary Kildall viết hệ điều
hành cho máy 8080. Hệ điều hành CP/M (Control Program for Microcomputer) ra đời (lúc
bấy giờ thuật ngữ dùng cho máy tính cá nhân là Microcomputer về sau này mới dùng Personal
Computer).
Đầu những năm 1980, IBM cho ra đời sản phẩm IBM PC (Personal Computer). IBM liên lạc
Bill Gates để mua bộ phiên dịch BASIC và cũng có ý định đặt hàng Bill Gates viết một hệ
điều hành cho máy PC. Bill Gates giới thiệu đến Kildall, lúc này là ông chủ của hãng Digital
Research - hãng lớn nhất về phát triển hệ điều hành lúc này. Kildall đã có một quyết định sai
lầm lớn nhất trong kinh doanh ngành máy tính, đó là từ chối trực tiếp gặp gỡ IBM, mà giao
cho trợ lý đi gặp. Điều tồi tệ hơn nữa là luật sư của Kildall từ chối ký vào bản hợp đồng
không tiết lộ sản phẩm máy tính PC, lúc đó chưa được công bố. Và rồi IBM quay trở lại đặt
hàng Bill Gates viết hệ điều hành cho máy PC.
Gates tìm thấy một hãng sản xuất máy tính ở địa phương có một hệ điều hành tương ứng DOS
(Disk Operating System). Gates mua lại hệ điều hành này với giá 50,000 đô la Mĩ, và mua
được dễ dàng. Gates tạo ra sản phẩm đóng gói DOS/BASIC và bán cho IBM. IBM đồng ý
mua nhưng yêu cầu phải có một số sửa đổi nhất định. Gates lúc đó mới thuê người đã viết
DOS, Tim Paterson về làm cho mình và thành lập công ty Microsoft. Hệ điều hành này được
chuyển thành tên MS-DOS (Microsoft-Disk Operating System). Sau đó MS-DOS nhanh
chóng thống trị thị trường máy tính cá nhân cùng với máy tính của IBM. Trong khi đó Kildall
lại phải bán từng sản phẩm riêng lẻ khó khăn.
CP/M, MS-DOS và một số hệ điều hành cho máy cá nhân lúc này dựa trên cơ chế dòng lệnh,
nghĩa là người dùng nhập lệnh điều khiển từ bàn phím. Ý tưởng về phát triển đồ họa (GUI-
Graphic User Interface) xuất hiện từ những năm 1960 bởi Doug Engelbart thuộc viện nghiên
cứu Stanford.
Tình cờ Steve Jobs, người đồng sang lập hãng Apple, thăm PARC và nhìn thấy giao diện đồ
họa. Ngay lập tức Steve nhận ra tìm năng của của một hệ điều hành sử dụng giao diện đồ họa.
Và máy tính với giao diện đồ họa đầu tiên ra đời là của hãng Apple. Tuy nhiên dòng sản
phẩm đầu tiên mang tên Lisa bị thất bại, Steve thử một lần nữa và cho ra đời Apple
Macintosh. Sản phẩm này thành công vang dội vì không những rẻ hơn Lisa và còn thân thiện
người dùng hơn. Nghĩa là giúp cho người sử dụng không cần có hiểu biết nhiều về máy tính

vẫn có thể sử dụng được dễ dàng.
Sự thành công Macintosh đã thúc đẩy Microsoft phải phát triển MS-DOS để trở thành hệ điều
hành với giao diện đồ họa. Sản phẩm Windows, hệ hỗ trợ GUI, chạy trên nền MS-DOS (nghĩa
là nó giống một shell hơn là một hệ điều hành) ra đời. Trong suốt 10 năm, từ 1983 đến 1993,
từ một bộ giao diện đồ họa, Windows phát triển thành một hệ điều hành đồ họa độc lập,
Windows 95. Widnows 95 chỉ sử dụng MS-DOS để khởi động máy và chạy các ứng dụng
trên DOS. Hệ điều hành này chứa một lượng lớn mã nguồn hợp ngữ, sử dụng 16-bit địa chỉ.
Một hệ điều hành khác nữa của Microsoft là Windows NT (New Technology). Đây là hệ 32-
bit địa chỉ, có tương thích một phần với Windows 95. Người thiết kế Windows NT, David
Culter, đã muốn loại bỏ MS-DOS ra khỏi hệ điều hành, tuy nhiên đến phiên bản Windows NT
4.0 thì mới thực hiện được hồn tồn. Sau đó Microsoft, với vị trí thống lãnh thị trường hệ
điều hành, cho ra đời liên tục các phiên bản Windows 98, Me, XP, Vista, Windows 7 dựa trên
phiên bản Windows 95. Còn dòng sản phẩm Windows 2000, Windows Server 2003,
Windows Server 2008 là bắt nguồn từ hệ điều hành Windows NT.
VII. PHẦN CỨNG MÁY TÍNH
Về cơ bản, một máy tính cá nhân gồm có CPU, bộ nhớ, và các thiết bị nhập xuất chúng được
kết nối với nhau qua một bus truyền, minh họa ở Hình VII-1. Cấu trúc của máy tính cá nhân
hiện đại phức tạp hơn vì liên quan đến nhiều bus truyền. Ở đây chúng tơi tạm thời đề cập đến
mơ hình máy tính cơ bản, cấu trúc bus truyền phức tạp sẽ được trình bày ở cuối phần này.
VII.1 Bộ xử lý (processor)
CPU là bộ não của một máy tính. Nó đọc lệnh từ bộ nhớ, giải mã lệnh để xác định loại và
phép tốn cụ thể, xong thực thi nó. Rồi lại quay lại vòng lặp đọc lệnh, giải mã, thực thi. Các
vòng lặp như vậy được thực hiện cho đến khi chương trình hồn tất.
Mỗi CPU có một tập lệnh riêng vì vậy hai CPU khác nhau (ví dụ Pentium và SPARC) khơng
thể thi hành chương trình lẫn nhau. Vì việc truy cập bộ nhớ để đọc lệnh hay dữ liệu chậm hơn
nhiều so với thi hành một phép tính, nên CPU chứa một số thanh ghi để lưu các biến chính
hoặc kết quả tạm thời.


CPU

MMU
Bộ nhớ
Điều khiển
màn hình
Màn hình
Điều khiển
bàn phím
Bàn phím
Điều khiển
ổ đóa
ổ đóa

Hình VII-1. Một vài thành phần trong máy tính cơ bản
Ngồi các thanh ghi chung, hầu hết máy tính đều có những thanh ghi đặc biệt. Đầu tiên là
thanh ghi chỉ lệnh (program counter hoặc instruction pointer). Thanh ghi này lưu địa chỉ
của lệnh kế tiếp trong bộ nhớ sẽ được gọi thực thi. Thanh ghi quan trọng khác là thanh ghi
stack (stack pointer), trỏ đến đỉnh của stack hiện tại trong bộ nhớ. Một thanh ghi quan trọng
nữa là PSW (Program Status Word). Thanh ghi này chứa các bit mã, ví dụ như lưu độ ưu
tiên, mode (người dùng hay hệ thống), và các mã điều khiển khác. Thanh ghi PSW đóng vai
trò quan trọng trong quản lý hàm hệ thống và nhập xuất.
Multithreaded và Multicore Chips
Định luật Moore cho rằng cứ 18 tháng thì số lượng transistor trên một chip tăng gấp đôi. Định
luật Moore đã đúng trong ba thập kỷ qua và kì vọng sẽ vẫn còn đúng ít nhất một thập kỷ nữa.
Vấn đề khi số lượng transistor tăng lên, CPU phải thay đổi tính năng cũng như các logic tính
toán để sử dụng hết khả năng của chip. Intel Pentium 4 giới thiệu multithreading (còn gọi
hyperthreading). Pentium 4 cho phép CPU lưu trạng thái của hai tiểu trình (một chương
trình nhỏ đang thực thi) và có thể chuyển đổi chúng trong nano giây. Nếu một tiểu trình đang
đọc một giá trị từ bộ nhớ, thì CPU có thể chuyển qua tiểu trình khác cho thực thi.
Multithreading không cung cấp cơ chế thực thi song song thực thụ, nghĩa là chỉ có một tiến
trình có thể thực thi tại một thời điểm, tuy nhiên thời gian chuyển đổi giữa hai tiểu trình là

nano giây.
Multithread chip cho phép hệ điều hành thấy mỗi thread là một CPU. Nếu một hệ thống có
hai CPU vật lý, mỗi CPU có hai thread. Thì hệ điều hành sẽ thấy hệ thống có bốn CPU luận
lý.
Một chip đa lõi (mulitcore chip) Hình VII-2, có thể chứa bốn chip nhỏ trên nó, mỗi chip là
một bộ xử lý độc lập. Để tận dụng hệ thống nhiều lõi CPU vật lý thì buộc phải sử dụng hệ
điều hành đa bộ xử lý (multiprocessor operating systems).


Core 1
Core 2
Core 3
Core 4
L2 cache
(a)
Core 1
Core 2
Core 3
Core 4
(b)
L2
L2
L2
L2
L1 cache

Hình VII-2. (a) Quad-core chip dùng cache chia xẻ (b) Quad-core chip dùng cache riêng biệt.
VII.2 Bộ nhớ
Thành phần chính thứ hai trong máy tính là bộ nhớ. Về lý tưởng, bộ nhớ phải nhanh, lớn và
rẻ. Với công nghệ hiện tại, chúng ta chưa thể đạt được các yêu cầu trên. Hệ thống bộ nhớ

được cấu trúc phân lớp như trong Hình VII-3. Trên đỉnh là tốc độ nhanh, dung lượng nhỏ hơn
và đắt tiền hơn tầng kế tiếp bên dưới.


Toỏc ủoọ
Dung lửụùng
Volatile
Non-Volatile

Hỡnh VII-3. Phõn cp b nh tiờu biu
Phn b nh chớnh (primary storage) thuc nhúm volatile, ngha l ni dung b nh ny s b
mt nu mỏy tớnh mt ngun cung cp nng lng hoc do khi ng li. Phn b nh non-
volatile thỡ ngc li, ni dung s c lu tr ngay c khi mỏy tớnh ó tt i.
Cỏc thanh ghi (register) l phn b nh truy cp nhanh nht, chỳng c lm cựng vt liu vi
CPU nờn tc nhanh nh CPU (1 nano giõy). Tc truy xut nhanh k tip l cache (2
nano giõy), c qun lý chớnh bi phn cng. Cỏc CPU hin i thng cú hai cache. Cp
th nht gi l cache L1 (dung lng thng l 16 MB), c t bờn trong CPU dựng lu
v cung cp cỏc lnh ó gii mó cho b phn thi hnh. Cache L2 cú sc cha vi MB. S khỏc
bit ca cache L1 v cache L2 l tc truy cp, cache L2 tc truy cp khong mt n
hai vũng ng h. Trong h thng nhiu lừi CPU, cache L2 c minh ha nh trong Hỡnh
VII-2.
Phn b nh chớnh ln nht l RAM (Random Access Memory), dung lng t 512 MB n
4GB. Mt phn b nh quan trng khỏc l ROM (Read Only Memory) thng c lp trỡnh
sn ca t nh sn xut, v khụng th thay i v sau. Mt s thit b nhp xut cú phn ROM
cha cỏc lnh iu khin thit b cp thp.
Mt loi b nh khỏc na l CMOS, thuc nhúm volatile, thng c dựng lu gi v
ngy. CMOS c nuụi bi mt ngun pin nh vỡ vy ngay c khi tt mỏy, ngy v gi vn
c cp nht.
VII.3 a
a l thit b lu tr ngoi chớnh, gm nhiu lp kim loi hoc thy tinh c ph t, hỡnh

trũn vi tc quay 5400, 7200, hay 10.800 vũng trờn phỳt.


(a)
(b)
Hỡnh VII-4. (a)
Bờn trong a (b) u c a cng
Nhiu mỏy tớnh s dng b nh o, tho lun chi tit trong chng 5, b nh ny ln hn b
nh chớnh, vỡ vy mt phn b nh o s c t trờn cỏc v trớ (sector) c bit trờn cng.
Ngy nay dung lng cng dao dng t 100 GB n vi TB.
VII.4 Thit b nhp xut
Qun lý cỏc thit b nhp xut cng l mt phn chớnh yu trong mt h iu hnh. Cỏc thit
b thng gm hai phn, nh trong Hỡnh VII-1 gm cú thit b v b iu khin. B iu
khin l mt hay mt tp cỏc chip iu khin cỏc thit b. Nú nhn lnh t h iu hnh v
thc thi chỳng.


CPU
Boọ ủieu
khieồn ngaột
ủieu khieồn
oồ ủúa
oồ ủúa
1
2
3
4

Hỡnh VII-5. Cỏc bc khi ng thit b nhp xut v nhn ngt
Bi vỡ cú nhiu loi b iu khin khỏc nhau, nờn cn nhiu phn mm khỏc nhau iu

khin chỳng. Phn mm trc tip gi lnh, nhn kt qu t b iu khin gi l trỡnh iu
khin thit b (device driver). Mi h iu hnh khỏc nhau thng dựng trỡnh iu khin khỏc
nhau vi cựng mt thit b, nờn nh sn xut thit b thng cung cp nhiu trỡnh iu khin
cho cỏc h iu hnh ph dng.
Vic nhp hay xut ra thit b cú th c lm theo ba cỏch:
 Busy waiting: người dùng gọi hàm hệ thống, trình điều khiển khởi động việc nhập
xuất và chờ đợi đến khi hồn thành, trả về kết quả cho hệ điều hành. HĐH trả kết quả
về cho người dùng.
 Ngắt: xem Hình VII-5 bước 1, trình điều khiển thiết bị ra lệnh cho bộ điều khiển thơng
qua các thanh ghi của thiết bị. Bước 2, thiết bị thực thi xong (đọc/ghi) thì báo cho bộ
điều khiển ngắt. Bước 3, bộ điều khiển ngắt phát sinh ngắt cho CPU biết. Bước 4 là bộ
điều khiển ngắt ghi mã số thiết bị để CPU biết thiết bị nào mới hồn thành cơng việc.
 Sử dụng một chip đặc biệt DMA (Direct Access Memory). Chip DMA sẽ điều khiển
dòng dữ liệu giữa bộ nhớ và bộ điều khiển thiết bị thay vì phải có sự theo dõi thường
xun của CPU. Khi việc nhập xuất xong thì DMA phát sinh ngắt báo cho CPU.
VII.5 Bus truyền


Level 2
cache
Cache bus
CPU
Local bus
PCI
bridge
Bộ nhớ
chính
Memory bus
SCSI
SCSI bus

USB
Chuột
Bàn phím
USB bus
ISA
bridge
IDE
Disk
IDE bus
PCI bus
Thiết bò
đồ họa
Màn hình
Modem
Sound
card
Printer
ISA bus
Hình VII-6. Cấu trúc
bus truyền
Trong thời kì đầu của máy tính cá nhân (lúc đó hay gọi minicomputer) thì cả máy tính dùng
chung một bus truyền. Máy tính cá nhân ngày nay với tốc độ của bộ nhớ và bơ xử lý tăng lên
rất nhiều. Nên nhiều bus truyền được thêm vào để tận dụng được sức mạnh của các thiết bị,
cũng như tránh sự tắt nghẽn.


Level 2
cache
Cache bus
CPU

Local bus
PCI
bridge
Bộ nhớ
chính
Memory bus
SCSI
SCSI bus
USB
Chuột
Bàn phím
USB bus
ISA
bridge
IDE
Disk
IDE bus
PCI bus
Thiết bò
đồ họa
Màn hình
Modem
Sound
card
Printer
ISA bus
Hình VII-6 mơ tả
tám bus truyền cơ bản trong máy tính cá nhân ngày nay: cache, local, memory, PCI, SCSI,
USB, IDE, ISA.
Hai bus truyền chính là PCI (Peripheral Component Interconnect) và ISA (Industry Standard

Architecture) có nguồn gốc từ máy tính cá nhân của IBM. ISA bus có thể truyền với tốc độ tối
đa đến 16.67 MB/giây. PCI bus có thể lên đến 528 MB/giây.
USB (Universal Serial Bus) bus ra đời để kết nối các thiết bị nhập xuất chậm, ví dụ chuột, bàn
phím. USB 1.0 có thể đạt tốc độ 1.5 MB/giây, USB 2.0 đạt đến 60 MB/giây.
SCSI (Small Computer System Interface) bus là bus truyền tốc độ cao, nhắm đến các thiết bị
có tốc độ truy xuất nhanh. Tốc độ lên đến 160 MB/giây.
Một bus truyền khác nữa là IEEE 1394 (khơng có trong hình ở trên). Bus truyền này có thể
đạt tốc độ 100 MB/giây nhắm vào việc truyền các dữ liệu video, như kết nối với máy quay
phim hoặc tivi.
VII.6 Khởi động máy tính (booting)
Một máy Pentium được khởi động như sau. Mỗi máy Pentium đều chứa một bản mạch chính
(parentboard trước kia được gọi là motherboard). Trên bản mạch chính có một chương trình
gọi là BIOS (Basic Input Output System). BIOS chứa các lệnh nhập xuất cấp thấp như đọc từ
bàn phím, ghi ra màn hình và các lệnh nhập xuất khác. Ngày nay BIOS được lưu trên flash
RAM, là phần bộ nhớ non-volatile nhưng mà hệ điều hành có thể cập nhật trên bộ nhớ này
được.
Khi máy tính được khởi động lên, BIOS được thực thi đầu tiên. Đầu tiên nó kiểm tra dung
lượng RAM, và các thiết bị có được gắn vào máy tình và có phản hồi hay khơng như bàn
phím, chuột. Sau đó nó quét qua ISA và PCI bus để nhận dạng các thiết bị gắn vào máy. Nếu
có thiết bị mới gắn vào so với lần tắt máy cuối cùng, thì thiết bị mới được cập nhật.
BIOS sẽ quyết định thiết bị khởi động máy kế tiếp trong danh sách thiết bị trong vùng nhớ
CMOS. Thông thường là kiểm tra có đĩa khởi động trong ổ đĩa mềm không, rồi kiểm tra trong
ổ CR-DOM. Nếu không có thì BIOS sẽ chọn ổ cứng. Sector đầu tiên của thiết bị khởi động sẽ
được đọc lên bộ nhớ. Sector này chứa chương trình kiểm tra partition nào trong ổ cứng đang
là partition chính (active). Hệ điều hành được đọc từ partition này và nắm quyền điều khiển
máy tính.
Hệ điều hành lấy thông tin cấu hình hệ thống thông qua BIOS. Nó kiểm tra trình điều khiển
của mỗi thiết bị, nếu không có thì yêu cầu cài đặt. Một khi có đầy đủ trình điều khiển thiết bị,
hệ điều hành nạp chúng vào phần nhân. Sau đó tạo các bảng chứa thông tin quản lý, khởi
động các tiến trình nền, khởi động chế độ đồ họa, đăng nhập.



×