Trong các hệ thống lớn, hệ điều hành là giống như một cảnh sát giao thông, đảm bảo cho những người dùng và các chương trình khác nhau đang chạy cùng một lúc trên những hệ thống khác nhau
Trang 1Trần Đại Dương
Hướng dẫn đơn giản về
Hệ Điều Hành
Larry Miller
Trang 3Lời giới thiệu
Cơ thể của chúng ta không thể vận hành mà không có não Não ra lệnh cho các bộ phận khác nhau của cơ thể cách để làm việc và tương tác Không có não, chúng ta không có khả năng
để làm bất kỳ điều gì Hệ điều hành giống như bộ não của máy tính Bạn có một nhóm phần cứng giống như tháp CPU, màn hình và bàn phím nhưng không có một CPU thì chúng ta không thể làm được bất cứ điều gì trong khi nguồn bật và mở máy Hệ điều hành tổ chức các tập tin và để cho phần cứng biết nó nên làm gì
Vào những buổi sơ khai của máy tính, chỉ có một Hệ Điều Hành Khi máy tính tiến triển , OS
đã chuyển hướng vào MS-DOS, nhưng các máy tính thực sự không có khả năng làm được nhiều mà không có phần mềm Sau đó Bill Gates đã đẩy mạnh vấn đề này Với sự thành lập của Microsoft, Hệ điều hành máy tính trở thành người làm chủ và đưa máy tính đến với các cấp độ mới về chức năng và công nghệ Mặc dù thương hiệu của các hệ điều hành còn ít, chúng thực hiện các tác vụ khác nhau phù thuộc vào các yêu cầu của người dùng máy tính Trong khi hệ điều hành nổi trội hiện nay là Microsoft Windows, các loại hệ điều hành khác nhau cung cấp các tính năng khác nhau Bao gồm Linux, Unix và OS X
Trong kỷ nguyên công nghệ của chúng ta, có nhiều hơn một hệ điều hành trong một máy tính Nhiều điện thoại di động tinh vi có hệ điều hành riêng của chúng và các điểm truy cập không giây cũng có hệ điều hành riêng để cung cấp internet không giây tới các khách hàng Trong thực tế, máy tính trong một điện thoại di động ngày nay thì mạnh hơn máy tính 20 năm trước đây Như bạn có thể thấy, công nghệ hệ điều hành đã và đang tiếp tục tiến triển
Có vẻ Microsoft luôn đưa ra một hệ điều hành mới hơn và tốt hơn mà làm cho mọi người tự hỏi: hệ thống mà họ đang sử dụng có thực sự là tốt nhất? Nó có thể bị gây lầm lẫn Nhưng điều đó là không thể! Trong các trang của cuốn sách này, chúng ta sẽ đi sâu khám phá hệ điều hành Bạn sẽ học về cách chúng làm việc và những hệ thống cụ thể mà chúng có thể đáp ứng Cuối cùng, việc lựa chọn OS tùy thuộc vào sở thích nhưng nó giúp bạn thực sự nhận được khi chọn một hệ điều hành
Trang 4Thế nào là một hệ điều hành?
Hệ điều hành là một tập hợp các chương trình máy tính quản lý tài nguyên phần cứng và phần mềm của máy tính Hệ điều hành vận hành các thiết bị điện tử để đáp ứng hợp lý các lệnh được chấp thuận bởi hệ thống
Ở nền tảng của mọi phần mềm hệ thống, một hệ điều hành thực hiện các tác vụ cơ bản như kiểm soát và cấp phát bộ nhớ, ưu tiên các yêu cầu hệ thống, kiểm soát các thiết bị nhập/ xuất, tạo điều kiện thuận lợi cho giao tiếp mạng và quản lý các tập tin Hệ điều hành còn có thể cung cấp giao diện đồ hoạ với những tính năng cao cấp hơn Thực chất, hệ điều hành hình thành một nền tảng cho các phần mềm hệ thống khác cũng như các phần mềm ứng dụng
Hệ điều hành là chương trình quan trọng nhất chạy trên máy tính Không có hệ điều hành thì máy tính của bạn sẽ không làm việc Nó sẽ không có khả năng để xử lý các yêu cầu như
in, tính toán đơn giản hay bất cứ chức năng nào khác OS thực sự là bộ não vận hành các thiết bị
Đối với các hệ thống lớn, hệ điều hành có trách nhiệm lớn hơn so với một PC Trong các hệ thống lớn, hệ điều hành là giống như một cảnh sát giao thông, đảm bảo cho những người dùng và các chương trình khác nhau đang chạy cùng một lúc trên những hệ thống khác nhau không can thiệp vào nhau Nó còn hoạt động như một bộ phận an ninh, đảm bảo
những người dùng trái phép thì không thể truy cập vào hệ thống
Các hệ điều hành máy tính được chia làm bốn loại, đó là:
Nhiều người dùng: cho phép hai hay nhiều người dùng chạy các chương trình cùng
một lúc Một số hệ điều hành cho phép hàng trăm hay thậm chí hàng nghìn người
cùng sử dụng
Đa xử lý: hỗ trợ chạy một chương trình trên nhiều hơn một CPU
Đa nhiệm: cho phép nhiều hơn một chương trình chạy đồng thời
Đa luồng: cho phép các phần khác nhau của một chương trình chạy đồng thời
Thời gian thực: phản ứng đầu vào ngay lập tức Các hệ điều hành đa dụng như
Windows và UNIX không phải là thời gian thực
Các hệ điều hành cung cấp một nền tảng phần mềm trên cùng cho các chương trình khác có thể chạy Các chương trình ứng dụng phải được viết để chạy trên một hệ điều hành cụ thể Lựa chọn hệ điều hành của bạn nghĩa là xác định một phạm vi lớn các ứng dụng bạn có thể chạy Đối với các PC, hệ điều hành phổ biến nhất là DOS, OS/2 và Windows, nhưng một số khác cũng có thể sử dụng, như Linux
Trong bất kỳ thiết bị nào có hệ điều hành, thường có một cách để làm thay đổi cách các thiết
bị làm việc Đó không hề là một sự sung sướng ngẫu nhiên; một trong những lý do các hệ điều hành được làm bằng “mã linh động” thay vì các mạch vật lý lâu dài là vì để chúng có thể được thay đổi hoặc sửa đổi mà không phải bỏ đi toàn bộ thiết bị Đối với người dùng máy
Trang 5tính để bàn, điều này có nghĩa là bạn có thể thêm một bản cập nhật bảo mật mới, bản vá hệ thống, ứng dụng mới hay thậm chí một OS mới hoàn toàn, bạn không cần phải loại bỏ máy tính của bạn và bắt đầu lại với một máy tính mới khi bạn cần thay đổi Miễn là bạn hiểu một
hệ điều hành làm việc như thế nào và biết cách tiếp cận được nó, có thể trong nhiều trường trường hợp bạn cần thay đổi một số cách hành xử Và, chiếc máy tính của bạn giống như cái điện thoại di động của bạn vậy
Thực chất, khi bạn bật máy tính, chương trình đầu tiên là một tập hợp các lệnh lưu trong ROM của máy tính Các lệnh này kiểm tra phần cứng hệ thống để đảm bảo mọi thứ đang hoạt động đúng “Tự kiểm tra khởi động” này kiểm tra lỗi của CPU, bộ nhớ và hệ thống I/O
cơ bản( BIOS) và lưu trữ kết quả ở một vị trí bộ nhớ đặc biệt Khi kiểm tra đã hoàn thành, phần mềm nạp vào ROM( đôi khi gọi là BIOS hay firmware) sẽ bắt đầu kích hoạt các ổ đĩa của máy tính Trong hầu hết các máy tính hiện đại, khi máy tính kích hoạt ổ đĩa cứng( HDD),
nó tìm thấy phần đầu tiên của hệ điều hành: trình nạp khởi động
“Trình nạp khởi động” là một chương trình nhỏ có một chức năng duy nhất: nạp hệ điều hành vào bộ nhớ và cho phép bắt đầu thao tác Trong hình thức cơ bản nhất, trình nạp khởi động thiết lập các driver và điều khiển các phân hệ (hệ thống con) phần cứng khác nhau của máy tính Nó thiết lập các bộ phận của bộ nhớ( nơi lưu hệ điều hành), thông tin người dùng
và các ứng dụng Nó tạo lập các cấu trúc dữ liệu để giữ vô số các tín hiệu, các cờ và các cờ hiệu được dùng để giao tiếp bên trong và giữa các phân hệ và các ứng dụng của máy tính Sau đó chuyển kiểm soát của máy tính qua đệ điều hành
Trang 6Lịch sử hệ điều hành
Các máy tính sơ khai không có hệ điều hành Đầu những năm 1960, các nhà cung cấp máy tính thương mại cung cấp các công cụ khá bao quát cho hợp lý hoá sự phát truyển, lập kế hoạch, và thực hiện các công việc trên các hệ thống xử lý bó
Vào những năm 1960, một số khái niệm được phát truyển đã đẩy sự phát truyển của các hệ điều hành IBM System 360 đã sản xuất một họ máy tính lớn phục vụ người tiêu dùng với sức mạnh và giá cả khác nhau Một hệ điều hành đơn giản đã được lên kế hoạch cho các máy tính này thay vì phát triển các chương trình chung cho mỗi mô hình cá nhân Khái niệm của
hệ điều hành đơn giản này phù hợp với toàn bộ dòng sản phẩm, điều này rất quan trọng cho
sự thành công của System 360 Trong thực tế, các hệ điều hành máy tính lớn hiện giờ của IBM là họ hàng xa của hệ thống gốc này Ưu điểm ở đây là các ứng dụng viết cho hệ OS 360 vẫn có thể được chạy trên các máy móc hiện đại OS của System 360 cũng chứa một số tiến
bộ quan trọng khác, ảnh hưởng đến các máy tính ngày nay: sự phát truyển của một thiết bị đĩa cứng lưu trữ cố định mà IBM gọi là DASD
Một sự phát truyển then chốt thứ hai là là khái niệm kỹ thuật phân thời (chia sẻ thời gian)
Kỹ thuật phân thời liên quan tới chia sẻ tài nguyên của các máy tính đắt tiền cho nhiều người dùng máy tính tương tác theo “thời gian thực” với hệ thống Những điều đó thực chất
có nghĩa là tất cả người dùng có ảo giác độc quyền truy cập vào máy Nổi tiếng nhất của hệ thống phân thời là Multics Multics là nguồn cảm hứng cho một số hệ điều hành phát truyển trong những năm 1970 Đáng lưu ý nhất là hệ thống Unix Một số hệ điều hành máy tính mini thương mại phổ biến là VMS
Các máy vi tính đầu tiên không có khả năng hay hữu ích cho các hệ điều hành tinh vi mà đã được phát truyển trước đây cho các máy tính lớn và mini Các hệ điều hành nhỏ hơn được phát triển và thường được nạp từ ROM và được gọi là các bộ giám sát
Một nổi bật của hệ điều hành trên nền đĩa cứng trước đây là CP/M được hỗ trợ trên nhiều các máy vi tính sơ khai và phần lớn đã được nhân bản khi MS-DOS được tạo ra MS-DOS trở thành cực kỳ phổ biến như là hệ điều hành được lựa chọn cho IBM PC
Các hệ điều hành liên tiếp bắt nguồn từ MS-DOS của Microsoft- một trong những công ty có lợi nhuận lớn nhất trên thế giới với sự phát truyển của Windows Giải pháp thay thế duy nhất trong suốt những năm 1980 là Mac OS đã được gắn liền mật thiết với máy tính Apple McIntoch Những năm 1990, máy vi tính đã phát truyển đến mức độ đã trở nên ngày càng được mong muốn Mọi người muốn có một máy tính gia đình Microsoft đã đưa ra với
Windows 95 và 98, nhưng mọi người khao khát năng suất hơn và nhiều tuỳ chọn hơn Phản ứng của Microsoft tới thay đổi này là phát truyển Windows NT phục vụ như là cơ sở cho các dòng hệ điều hành máy tính để bàn của Microsoft đã phát hành vào năm 2001 Apple cũng
đã xây dựng lại hệ điều hành của riêng họ dựa trên lõi Unix, đó là Mac OS X, và cũng đã phát hành vào năm 2001 và phát truyển thành một trong những kình địch lớn nhất của giới kinh doanh công nghệ Ngày nay, các hệ điều hành của chúng ta thường có giao diện người dùng đồ hoạ( GUI) dùng thiết bị trỏ như là chuột của bút trỏ cho đầu vào bổ sung tới bàn
Trang 7phím Các hệ thống cũ hơn chúng( thực sự cũ) thì sử dụng dấu nhắc lệnh cho các lệnh được nhập vào qua bàn phím
Cả hai mô hình được tập trung vào một “vỏ” mà chấp nhận và xử lý các lệnh từ người dùng Người dùng có thể được hỏi để chọn một nút hay gõ một lệnh khi có dấu nhắc lệnh trên màn hình
Cho đến nay, hệ điều hành phổ biến nhất được sử dụng là Windows XP (nhưng Window 7 đang vươn lên mạnh mẽ) nhưng Microsoft đã vừa phát hành dự án mới nhất của Windows – Windows 8 Linux cũng là một hệ điều hành phổ biến như Unix
Xem xét sự bùng nổ của thị trường công nghệ, nó thực sự là một bất ngờ, rằng có rất ít hệ điều hành tồn tại Đó thực sự không là lời giải thích dễ dàng cho điều này, nhưng nó là một thực tế Nó sẽ chỉ có vẻ logic với tất cả các nhà sản xuất máy tính khác nhau ra khỏi đó, sẽ có nhiều lựa chọn một hệ điều hành hơn những gì có Nó chắc chắn là bất thường trong thế giới của công nghệ máy tính Vì vậy, chính xác hệ điều hành làm gì? Kể từ khi chúng thực sự
là “bộ não” của máy tính, chúng làm khá hơn một chút
Trang 8Hệ điều hành làm được những gì?
Là người dùng, bạn thường tương tác với hệ điều hành thông qua một bộ lệnh Ví dụ, hệ điều hành DOS chứa các lệnh như COPY và RENAME cho sao chép tập tin và đổi tên của tập tin tương ứng Các lệnh được chấp nhận và được thi hành bởi một phần của hệ điều hành gọi là bộ xử lý lệnh hay bộ thông dịch dòng lệnh GUI cho phép bạn nhập lệnh bằng cách trỏ
và nhấp chuột vào đối tượng xuất hiện trên màn hình Nhưng điều đó thực sự không giải quyết theo những cách khác nhau mà hệ điều hành làm cho máy tính của bạn làm việc dễ dàng và hiệu quả hơn Năng lực cụ thể của chúng là những gì làm cho chúng giúp máy tính của bạn hoạt động như một thiết bị thân thiện với người dùng Hãy quan sát cụ thể vào
những gì một hệ điều hành làm
Quản lý tiến trình
Một chương trình chạy trên máy tính dù nó là một dịch vụ nền hay một ứng dụng thì đều được gọi là một tiến trình Miễn là kiến trúc Von Neumann được dùng để xây dựng một máy tính, chỉ một tiến trình trên mỗi CPU có thể được chạy tại một thời điểm Các hệ điều hành
cũ hơn như MS-DOS không cố gắng để vượt qua giới hạn này với ngoại trừ xử lý ngắt và chỉ một tiến trình có thể được chạy dưới chúng Các hệ điều hành máy tính lớn đã có khả năng
đa nhiệm từ những năm đầu 1960 Các hệ điều hành hiện đại cho phép thực hiện đồng thời nhiều tiến trình một lúc thông qua đa nhiệm ngay cả với một CPU
Quản lý tiến trình là một cách phân phát của hệ điều hành để chạy nhiều tiến trình cùng một lúc Vì rằng hầu hết các máy tính chứa một bộ xử lý với một lõi, đa nhiệm được làm bằng cách chỉ đơn giản là chuyển đổi nhanh chóng các tiến trình Tuỳ thuộc vào hệ điều hành, khi nhiều hơn một tiến trình chạy, hoặc là mỗi khoảng thời gian sẽ trở nên nhỏ hơn hoặc chúng
sẽ trì hoãn lâu hơn trước khi mỗi tiến trình đưa ra thay đổi để chạy Quản lý tiến trình liên quan đến tính toán và phân phối thời gian CPU cũng như các tài nguyên khác Hầu hết các
hệ điều hành cho phép một tiến trình được gán một quyền ưu tiên ảnh hưởng phân phối thời gian CPU của nó Các “hệ điều hành tương tác” cũng sử dụng một số mức độ phản hồi, trong đó tác vụ mà người dùng đang làm việc nhận được ưu tiên cao hơn
Các tiến trình điều khiển ngắt sẽ chạy bình thường ở một ưu tiên rất cao Trong nhiều hệ thống, có một tiến trình nền như System Idle Process( tiến trình nhàn rỗi hệ thống) trong Windows sẽ chạy khi không có tiến trình nào khác đang chờ CPU
Nó là khuynh hướng để nghĩ một tiến trình như một ứng dụng, nhưng điều đó cho một hình ảnh không đầy đủ của cách tiến trình liên quan đến hệ điều hành và phần cứng Ứng dụng bạn thấy( trình xử lý văn bản, bảng tính hoặc trò chơi) thực sự là một tiến trình, nhưng ứng dụng đó có thể khiến một vài tiến trình khác bắt đầu các tác vụ như giao tiếp với các thiết bị khác hay với các máy tính khác
Cũng có nhiều tiến trình chạy mà không cho bạn bằng chứng thuyết phục rằng chúng đã từng tồn tại Ví dụ, Windows XP và Unix có thể có hàng chục tiến trình nền đang chạy để xử
lý mạng, quản lý bộ nhớ, quản lý ổ đĩa, kiểm tra virus…
Trang 9Một tiến trình, sau đó là phần mềm, thực hiện một số hành động và có thể được kiểm soát bởi người dùng hoặc các ứng dụng khác hay bởi hệ điều hành Nó là tiến trình chứ không phải là ứng dụng, hệ điều hành kiểm soát và lên lịch biểu cho việc thi thành bởi CPU Trong một hệ thống đơn nhiệm, lịch biểu thì đơn giản Hệ điều hành cho phép ứng dụng bắt đầu chạy, trì hoãn việc thi hành chỉ đủ dài để đối phó với các ngắt và đầu vào người dùng
Ngắt là tín hiệu đặc biệt được gửi bởi phần cứng hoặc phần mềm tới CPU Nếu một số bộ phận của máy tính đột ngột dơ tay lên yêu cầu sự chú ý của CPU trong một cuộc họp sinh động (lâu lâu cũng phải văn vẻ một chút) Đôi khi hệ điều hành sẽ lên lịch biểu quyền ưu tiên của các tiến trình để ngắt được che đậy – nghĩa là hệ điều hành sẽ bỏ qua ngắt từ một
số nguồn sao cho một công việc đặc biệt có thể được hoàn thành nhanh nhất có thể Có một
số ngắt như các điều kiện lỗi hay các vấn đề với bộ nhớ mà rất quan trọng đến nỗi chúng không thể được bỏ qua Các non-markable interrupt(NMI)( ngắt không che đậy được) phải được xử lý ngay lập tức bất kể các tác vụ khác tại chỗ Trong khi các ngắt thêm một số phức tạp nào đó vào việc thi hành của tiến trình trong một hệ thống đơn nhiệm, công việc của hệ điều hành trở nên phức tạp hơn nhiều trong một hệ thống đa nhiệm Bây giờ, hệ điều hành phải sắp đặt việc thi hành các ứng dụng để bạn tin có một vài thứ đang diễn ra cùng một lúc Điều này là phức tạp vì CPU chỉ có thể làm một thứ tại một thời điểm, để ghi nhận việc xuất hiện của nhiều thứ đang xảy ra cùng một lúc, hệ điều hành phải chuyển đổi giữa hàng ngàn tiến trình khác nhau trong mỗi giây Đây là cách nó diễn ra:
Một tiến trình chiếm một lượng nhỏ của RAM Nó cũng làm sử dụng thanh ghi, ngăn xếp và hàng đợi bên trong CPU và không gian bộ nhớ hệ điều hành
Khi hai tiến trình là đa nhiệm, hệ điều hành phân phối một lượng nhất định của chu
kỳ thực thi CPU tới một chương trình
Sau các chu kỳ đó, hệ điều hành tạo ra các bản sao của tất cả các thanh ghi, các ngăn xếp và hàng đợi được dùng bởi các tiến trình và chú thích điểm mà tại đó tiến trình tạm dừng trong việc thi hành của nó
Sau đó nó nạp tất cả các thanh ghi, các ngăn xếp và hàng đợi được dùng bởi tiến trình thứ hai và cho phép một lượng nhất định của chu kỳ CPU
Khi hoàn thành, nó tạo ra các bản sao của tất cả các thanh ghi, các ngăn xếp và hàng đợi được dùng bởi tiến trình thứ hai, và nạp chương trình đầu tiên
Toàn bộ thông tin cần để theo dõi một tiến trình khi chuyển đổi là giữ trong một gói dữ liệu được gọi là một process control block(PCB)( khối điều khiển tiến trình) Khối điều khiển tiến trình điển hình chứa:
Một số ID nhận dạng tiến trình
Con trỏ tới các vị trí trong chương trình và dữ liệu của nó nơi xử lý cuối cùng xảy ra
Nội dung thanh ghi
Trạng thái của các cờ và những chuyển đổi khác nhau
Danh sách của các tập tin được mở bởi tiến trình
Trang 10 Ưu tiên của tiến trình
Tình trạng của tất cả các thiết bị I/O cần bởi tiến trình
Mỗi tiến trình có một tình trạng liên quan với nó Nhiều tiến trình không tiêu tốn thời gian CPU cho đến khi chúng được một số sắp xếp của đầu vào Ví dụ, một tiến trình có thể chờ bấm phím từ người dùng Trong khi nó đang chờ bấm phím, nó không dùng thời gian CPU Trong khi nó đang chờ, nó được “tạm hoãn”
Khi tới nhấn phím, hệ điều hành thay đổi tình trạng của nó Khi tình trạng của tiến trình thay đổi, từ sẵn sàng đến hoạt động, hoặc từ tạm hoãn đến chạy, thông tin trong khối điều khiển tiến trình phải được dùng như dữ liệu trong bất kỳ chương trình nào để thực hiện trực tiếp tác vụ( chuyển đổi của hệ điều hành)
Hoán đổi tiến trình này diễn ra mà không có sự can thiệp từ trực tiếp người dùng và mỗi tiến trình có đủ các chu kỳ CPU để hoàn thành tác vụ của nó trong một khoảng thời gian hợp
lý Sự cố có thể xảy ra nếu người dùng cố gắng để có quá nhiều tiến trình hoạt động cùng một lúc Bản thân hệ điều hành yêu cầu một số chu kỳ CPU thực hiện lưu và hoán đổi các thanh ghi, các ngăn xếp và hàng đợi của các tiến trình ứng dụng
Nếu đủ các tiến trình được bắt đầu và nếu hệ điều hành không được thiết kế cẩn thận, hệ thống có thể bắt đầu sử dùng phần lớn các chu kỳ CPU có sẵn để hoán đổi giữa các tiến trình chứ không phải chạy các tiến trình Khi điều này xảy ra, nó được gọi là “trận đòn” và nó thường yêu cầu một số sắp xếp từ sự can thiệp trực tiếp của người dùng để dừng các tiến trình và mang trật tự trở lại hệ thống (cái này có vẻ giống một cuộc chiến)
Một cách mà những người thiết kế hệ điều hành làm giảm nguy cơ của trận đòn là bằng cách giảm nhu cầu cho các tiến trình mới để thực hiện nhiều tác vụ Một số hệ điều hành cho phép một “process lite”( tạm dịch là: tiến trình hàm lượng thấp) gọi là luồng( hay tiểu
trình) có thể xử lý với tất cả công việc CPU-chuyên sâu của một tiến trình bình thường, nhưng thường thường không xử lý nhiều loại khác nhau của I/O và không thiết lập các cấu trúc yêu cầu khối điều khiển tiến trình mở rộng của một tiến trình bình thường Một tiến trình có thể bắt đầu cho nhiều luồng hoặc các tiến trình khác, nhưng một luồng không thể bắt đầu một tiến trình
Cho đến nay, tất cả các lịch biểu chúng ta đã được thảo luận chỉ liên quan tới một CPU duy nhất Trong một hệ thống với hai hay nhiều CPU, hệ điều hành phải chia khối lượng công việc giữa các CPU, cố gắng cân bằng đòi hỏi của các tiến trình được yêu cầu với các chu kỳ
có sẵn trên các CPU khác nhau Các hệ điều hành bất đối xứng dùng một CPU cho nhu cầu riêng của chúng và chia các tiến trình ứng dụng giữa các CPU còn lại Các hệ điều hành đối xứng chia bản thân chúng cho các CPU khác nhau, sự cân bằng đòi hỏi chống lại tính sẵn sàng CPU thậm chí khi bản thân hệ điều hành là tất cả mọi thứ đang chạy Thậm chí nếu hệ điều hành là phần mền duy nhất với nhu cầu thi hành, CPU không phải là tài nguyên duy nhất được lên lịch biểu Quản lý bộ nhớ là bước quan trọng tiếp theo trong việc đảm bảo
rằng mọi tiến trình chạy trơn tru
Quản lý bộ nhớ
Trang 11Cách máy tính được xây dựng, bộ nhớ được sắp đặt trong một cách phân cấp Nó bắt đầu với các thanh ghi nhanh nhất, bộ nhớ đệm CPU, RAM và bộ nhớ đĩa Quản lý bộ nhớ của một
hệ điều hành phối hợp sử dụng các kiểu bộ nhớ khác nhau này bằng cách giám sát cái nào sẵn sàng, cái nào nên được cấp phát hoặc xoá cấp phát và cách để di chuyển dữ liệu giữa chúng Chức năng này được xem như quản lý bộ nhớ ảo và gia tăng số lượng bộ nhớ có sẵn đối với mỗi tiến trình bằng cách làm cho bộ nhớ đĩa có vẻ như bộ nhớ chính Có một hình phạt tốc độ kết hợp với sử dụng các đĩa hoặc các lưu trữ chậm hơn khác như là bộ nhớ Nếu việc chạy các tiến trình đòi hỏi RAM nhiều hơn đáng kể so với hiện có, hệ thống có thể bắt đầu “trận đòn” hoặc làm chậm lại Điều này có thể xảy ra do một tiến trình đòi hỏi một
lượng lớn RAM hoặc vì hai hay nhiều tiến trình cạnh tranh cho một lượng lớn hơn bộ nhớ hiện có Điều này sau đó dẫn đến chuyển giao hằng số của dữ liệu của mỗi tiến trình để lưu trữ chậm hơn
Phần quan trọng khác của quản lý bộ nhớ là quản lý địa chỉ ảo Nếu nhiều tiến trình ở trong
bộ nhớ cùng một lúc, chúng phải được dừng lại từ việc can thiệp vào bộ nhớ của lẫn nhau trừ khi có một yêu cầu rõ ràng để tận dụng bộ nhớ dùng chung Điều này đạt được bởi có các không gian địa địa riêng biệt Mỗi tiến trình nhìn thấy toàn bộ không gian địa chỉ ảo, thường địa chỉ 0 đến kích thước tối đa của bộ nhớ ảo như duy nhất được gán cho nó Hệ điều hành duy trì một bảng trang phù hợp các địa chỉ ảo cho các địa chỉ vật lý Các cấp phát
bộ nhớ này được giám sát để khi kết thúc một tiến trình, toàn bộ bộ nhớ được dùng bởi tiến trình đó có thể được chuẩn bị sẵn cho các tiến trình khác
Hệ điều hành cũng có thể ghi các trang bộ nhớ không hoạt động để lưu trữ thứ cấp Tiến trình này được gọi là “phân trang” hoặc “hoán đổi” Thuật ngữ này khác nhau giữa các hệ điều hành Nó cũng điển hình cho hệ điều hành để sử dụng bộ nhớ vật lý không dùng đến cách khác như bộ nhớ đệm trang Bộ nhớ đệm trang chứa yêu cầu dữ liệu từ một thiết bị chậm hơn và có thể được giữ lại trong bộ nhớ để cải thiện hiệu suất hệ điều hành cũng có thể nạp sẵn bộ nhớ đệm trong bộ nhớ thường trú với dữ liệu có thể được yêu cầu bởi người dùng trong tương lai gần
Tác vụ đầu tiên của quản lý bộ nhớ yêu cầu hệ điều hành thiết lập ranh giới bộ nhớ cho các loại phần mềm và cho các ứng dụng cá nhân Lấy ví dụ, hãy nhìn một hệ thống nhỏ tưởng tượng với 1MB( 1000 KB) của RAM Trong tiến trình khởi động, hệ điều hành của máy tính tưởng tượng của chúng ta được thiết kế để đi lên trên cùng của bộ nhớ hiện có và sau đó
“lùi” đủ xa để đáp ứng nhu cầu của bản thân hệ điều hành Hãy nói rằng hệ điều hành cần
300 KB để chạy Bây giờ, hệ điều hành đi xuống dưới cùng vùng chứa của RAM và bắt đầu việc tích luỹ với các driver khác được yêu cầu để kiểm soát các phân hệ phần cứng của máy tính Trong máy tính tưởng tưởng của chúng ta, các driver lấy mất 200 KB Vì là sau khi hệ điều hành được nạp vào hoàn toàn, có 500 KB còn lại cho các tiến trình ứng dụng Khi các ứng dụng bắt đầu được nạp vào bộ nhớ, chúng được nạp trong các khối có kích thước xác định bởi hệ điều hành Nếu kích thước khối là 2KB, sau đó mọi tiến trình được nạp sẽ được cho một khúc dữ liệu của bộ nhớ là một bội số của 2 KB Các ứng dụng sẽ được nạp vào các khối có kích thước cố định, với các khối bắt đầu và kết thúc trên ranh giới được thành lập bởi word 4 hoặc 8 byte Các khối và ranh giới này giúp đảm bảo các ứng dụng sẽ không được nạp lên trên một không gian khác bởi một bit tính toán kém hoặc hai Cùng với đó
Trang 12được đảm bảo, câu hỏi lớn hơn là những gì để làm khi không gian ứng dụng 500 KB được lấp đầy Trong hầu hết các máy tính, có thể thêm bộ nhớ vượt quá dung lượng gốc Ví dụ, bạn có thể mở rộng RAM từ 1 đến 2 MB Điều này làm việc tốt, nhưng xu hướng này tương đối đắt tiền Nó còn bỏ qua một thực tế cơ bản của tính toán – hầu hết thông tin mà ứng dụng lưu trữ trong bộ nhớ không được sử dụng tại bất kỳ thời điểm nào Một bộ xử lý chỉ có thể truy cập một vị trí trong bộ nhớ tại một thời điểm, cho nên đại đa số RAM là chưa được
sử dụng tại bất kỳ thời điểm nào Từ khi không gian đĩa rẻ so với RAM, sau đó việc di
chuyển thông tin trong RAM tới đĩa cứng có thể mở rộng rất nhiều không gian RAM hoàn toàn miễn phí Kỹ thuật này được gọi là quản lý bổ nhớ ảo Bộ nhớ đĩa chỉ là một trong các loại bộ nhớ phải được quản lý bởi hệ điều hành và là chậm nhất Xếp hạng thứ tự theo tốc
độ, các loại bộ nhớ trong một hệ thống máy tính là:
Bộ nhớ đệm tốc độ cao: lượng bộ nhớ tương đối nhỏ hiện có cho CPU thông qua các kết nối nhanh nhất Bộ kiểm soát bộ nhớ đệm dự đoán phần dữ liệu mà CPU sẽ cần đến tiếp theo và kéo nó từ bộ nhớ chính đến bộ nhớ đệm tốc độ cao để tăng tốc hiệu suất hệ thống
Bộ nhớ chính: đây là RAM mà bạn thấy, được đo bằng MB khi bạn mua máy tính
Bộ nhớ thứ cấp: phổ biến nhất là bộ nhớ từ tính quay giữ các ứng dụng và dữ liệu sẵn
có để được sử dụng, và được dùng như là RAM ảo dưới sự kiểm soát của hệ điều
Các hệ thống tập tin hoặc là có ghi chép hoặc là không có ghi chép Một hệ thống tập tin “có ghi chép” là một thay thế an toàn hơn trong trường hợp sập hệ thống Nếu một hệ thống dừng lại đột ngột trong một kịch bản sập, hệ thống tập tin “không có ghi chép” sẽ cần phải được kiểm tra bằng các tiện ích kiểm tra hệ thống Mặt khác, khôi phục một hệ thống tập tin
Trang 13Mạng
Một khía cạnh khác của một hệ điều hành phải làm với khả năng kết nối mạng chứa trong mỗi máy tính Mạng liên kết các máy tính riêng biệt với nhau từ những vị trí khác nhau Hầu hết các hệ điều hành hiện tại có khả năng sử dụng giao thức kêt nối mạng TCP/IP Điều
đó có nghĩa là một hệ thống có thể xuất hiện trên một mạng của các máy tính khác và chia
sẻ tài nguyên như tập tin, máy in và máy quét sử dụng cả kết nối có dây lẫn không dây
Bảo mật
Bảo mật rất quan trọng trong bất kỳ hệ thống máy tính nào Hệ điều hành cung cấp một mức độ bảo mật có thể bảo vệ máy tính của bạn và dữ liệu trên đó Bảo mật hệ thống được dựa trên hai nguyên tắc:
Hệ điều hành cung cấp truy cập vào nhiều tài nguyên cả trực tiếp lẫn gián tiếp Điều
đó có thể nghĩa là các tập tin trên đĩa cục bộ, các lời gọi hệ thống đặc quyền, thông tin
cá nhân về người dùng và các dịch vụ được cung cấp bởi các chương trình chạy trên
hệ thống
Hệ điều hành có khả năng phân biệt giữa những người được phép truy cập tài nguyên
và những người bị cấm làm như vậy Trong khi một số hệ thống có thể đơn giản phân biệt giữa “đặc quyền” và “không đặc quyền”, thông thường nhất có một hình thức nhận dạng đăng ký như một tên người dùng
Những yêu cầu thông tin được chia thêm thành hai loại:
Bảo mật nội bộ trong một chương trình đang chạy Trên một số hệ thống, mỗi khi một chương trình đang chạy, nó không có hạn chế, nhưng thông thường chương trình có một nhận dạng mà nó giữ Nhận dạng đó được dùng để kiểm tra tất cả các yêu cầu của
nó về tài nguyên
Bảo mật ngoài như là một yêu cầu mới từ bên ngoài máy tính Điều này có thể là trong hình thức của một yêu cầu mới từ bên ngoài hệ thống như đăng nhập tại một giao diện điều khiển kết nối hay một số loại kết nối mạng Để thiết lập nhận dạng, đó có thể
là một tiến trình xác thực
Thường một tên người dùng phải được nhập và mỗi tên người dùng nên có một mật khẩu Các phương pháp xác thực như thẻ từ hoặc dữ liệu sinh trắc có thể được dùng để thay thế Trong một số trường hợp, nhất là kết nối từ mạng, tài nguyên có thể được truy cập mà
không cần xác thực một chút nào
Ngoài ra để cho phép/không cho phép mô hình bảo mật, một hệ thống với một mức bảo mật cao cũng sẽ đưa ra kiểm định các tuỳ chọn Điều này cho phép giám sát các yêu cầu cho truy cập tới tài nguyên như trong “ai được đọc tập tin này?”
Bảo mật hệ điều hành từ lâu đã là mối quan tâm của các lập trình viên vì dữ liệu có nhạy cảm cao được giữ trên một số máy tính Đó là cả thương mại và tính chất quân sự
Bộ quốc phòng chính phủ Hoa Kỳ đã tạo ra tiêu chí riêng của họ về các tiêu chuẩn đặt ra yêu cầu cơ bản cho đánh giá hiệu quả của bảo mật hệ điều hành Điều đó trở thành tầm quan
Trang 14trọng sống còn cho các nhà sản xuất hệ điều hành vì hệ thống này được dùng để phân loại
và chọn hệ thống được xem xét cho xử lý, thu hồi thích hợp lưu trữ cho thông tin nhạy cảm
hay thông tin mật
Bảo mật nội bộ
Bảo mật nội bộ có thể được nghĩ như một cách để bảo vệ tài nguyên của máy tính từ các chương trình chạy đồng thời trên hệ thống Hầu hết các hệ điều hành thiết lập các chương trình đang chạy tự nhiên trên bộ xử lý của máy tính Điều đó mang lại vấn đề làm thế nào để dừng các chương trình từ làm tác vụ giống nhau và có các đặc quyền tương tự như hệ điều hành mà cũng là một chương trình
Các bộ xử lý dùng cho các hệ điều hành đa dụng được tự động ngăn chặn từ việc sử dụng các lệnh phần cứng đã biết như read hoặc write từ các thiết bị gắn ngoài như đĩa Thay vào
đó, chúng phải hỏi chương trình đặc quyền để read hoặc write Do đó, hệ điều hành có cơ hội để kiểm tra nhận dạng của chương trình và cho phép hoặc từ chối yêu cầu
Một chiến lược thay thế hiện có trong các hệ thống không đáp ứng yêu cầu thiết lập trước thì hệ điều hành sẽ không chạy các chương trình người dùng như mã gốc Thay vào đó, chúng hoặc mô phỏng một bộ xử lý hoặc cung cấp một máy chủ cho một “mã giả” dựa trên
hệ thống như là Java
Bảo mật nội bộ là đặc biệt quan trọng với hệ thống nhiều người dùng, nó cho phép mỗi người dùng của hệ thống để có các tập tin cá nhân mà người dùng khác không thể làm xáo trộn hoặc đọc Bảo mật nội bộ cũng là quan trọng nếu việc kiểm định là để được bất kỳ sử dụng một chương trình có thể có khả năng né tránh hệ điều hành mà không né tránh kiểm
định
Bảo mật bên ngoài
Thông thường, một hệ điều hành đưa ra các dịch vụ khác nhau cho các máy tính nối mạng
và người dùng khác Những dịch vụ này thường được cung cấp thông qua cổng hay các điểm truy cập được đánh số vượt ngoài địa chỉ mạng hệ điều hành Các dịch vụ bao gồm những đề nghị như là chia sẻ tập tin, in, thư điện tử, trang wed và các giao thức truyền tập tin(FTP)
Ở tuyến đầu của bảo mật là các thiết bị phần cứng gọi là tường lửa Ở cấp độ hệ điều hành
có một số tường lửa phần mềm có sẵn Hầu hết các hệ điều hành hiện đại bao gồm một tường lửa phần mềm được kích hoạt mặc định
Một tường lửa phần mềm có thể được cấu hình để cho phép hay từ chối lưu lượng truy cập mạng hoặc từ một dịch vụ hay ứng dụng chạy rên hệ điều hành Vì thế, hệ điều hành có thể cài đặt và chạy một dịch vụ không an toàn như Telnet hay FTP và không phải bị đe doạ bởi một vi phạm bảo mật vì tường lửa sẽ từ chối tất cả lưu lượng cố gắng kết nối tới dịch vụ
trên cổng đó
Giao diện người dùng đồ hoạ
Ngày nay, hầu hết hệ điều hành chứa giao diện người dùng đồ hoạ( GUI) Một vài hệ điều hành cũ hơn được tích hợp chặt chẽ GUI tới phần lõi – một trong những thành phần trung