Hướng dẫn đơn giản về Hệ Điều Hành
lượt xem 47
download
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...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Hướng dẫn đơn giản về Hệ Điều Hành
- Trần Đại Dương Hướng dẫn đơn giản về Hệ Điều Hành Larry Miller 1
- Mục lục Mục lục Lời giới thiệu Thế nào là một Hệ Điều Hành? Lịch sử Hệ Điều Hành Hệ Điều Hành làm được những gì? Định nghĩa các tiến trình Kết luận 2
- Lờ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. 3
- Thế 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 4
- tí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. 5
- Lị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 6
- phí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. 7
- Hệ đ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…. 8
- Mộ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 9
- Ư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ớ 10
- Cá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 đó 11
- đượ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 hành. Hệ điều hành phải cân bằng các nhu cầu của các tiến trình với khả năng của những kiểu bộ nhớ khác nhau, di chuyển dữ liệu trong các khối( gọi là các trang) giữa bộ nhớ có sẵn như lịch biểu của lời gọi các tiến trình. Hệ thống tập tin và đĩa Tất cả hệ điều hành bao gồm hỗ trợ cho một loạt hệ thống tập tin. Các hệ thống tập tin hiện đại do các thư mục cấu thành. Trong khi ý tưởng là tương tự như khái niệm trên tất cả các hệ thống tập tin đa dụng, tồn tại một số điều khác biệt trong việc thực hiện. Hai ví dụ của điều này là ký tự mà được sử dụng cho các thư mục riêng biệt và trường hợp nhạy cảm. Theo mặc định, Microsoft Windows tách các thành phần đường dẫn của nó với dấu gạch chéo và tên của của tập tin không phải trường hợp nhảy cảm. Tuy nhiên, Mac OS có nguồn gốc từ Linux và Unix sử dụng dấu sổ chéo và tên tập tin của chúng thường có trường hợp nhạy cảm. Một số phiên bản của Mac OS( trước thế hệ OS X) sử dụng màu cho dấu phân cách đường dẫn. 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 có ghi chép là tự động. Các hệ thống tập tin thay đổi tùy hệ điều hành, nhưng chung cho tất cả điều này là hỗ trợ cho hệ thống tập tin điển hình được tìm thấy trên các phương tiện di động như CD, DVD và đĩa mềm. Chúng cũng cung cấp cho việc ghi lại CD và DVD như phương tiện lưu giữ. 12
- Mạ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 13
- trọ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 14
- tâm của hệ điều hành. Các hệ điều hành hiện đại hơn thì tách theo mô-đun phân hệ đồ hoạ từ phần lõi. Một GUI là cơ bản các hình ảnh bạn thấy trên màn hình giúp bạn điều hướng máy tính của bạn. Chúng bao gồm các icon và các menu. Nhiều hệ điều hành cho phép người dùng cài đặt hay tạo ra bất kỳ giao diện người dùng nào mà họ muốn. GUI có xu hướng thay đổi và tiến truyển theo thời gian. Ví dụ, Windows đã có thay đổi giao diện người dùng của nó hầu hết thời gian một phiên bản mới của Windows đã được phát hành. GUI của MAC OS đã thay đổi đáng kể với giới thiệu của MAC OS X trong năm 2001. Các driver Một driver là một loại hình cụ thể của phần mềm máy tính được phát truyển để cho phép tương tác với các thiết bị phần cứng. Thông thường, điều này tạo thành một giao diện cho giao tiếp với thiết bị thông qua bus máy tính cụ thể hoặc phân hệ giao tiếp mà phần cứng được kết nối tới. Các driver cung cấp các lệnh and/or nhận dữ liệu từ thiết bị và ở đầu bên kia, các giao diện cần thiết cho hệ điều hành và các phần mền ứng dụng. Bạn không thể có một ổ CD-ROM, ví dụ, không có một driver cho phần cụ thể của thiết bị. Bạn có driver cho máy in, máy quét và thậm chí là con chuột của bạn. Nó là chương trình chuyê sâu về phần cứng cũng như hệ điều hành cụ thể cho phép một chương trình khác – thường là một hệ điều hành hoặc gói phần mềm ứng dụng hay chương trình máy tính chạy dưới Nhân hệ điều hành. Điều đó cho phép hệ thống tương tác minh bạch với thiết bị phần cứng và thường cung cấp xử lý ngắt cần thiết cho bất kỳ giao diện phần cứng phụ thuộc thời gian. Mục tiêu thiết kế then chốt của các driver là sự trừu tượng. Mọi mô hình phần cứng là khác nhau. Các mô hình mới hơn cũng được phát hành bởi các nhà sản xuất cung cấp đáng tin cậy hơn hay hiệu năng tốt hơn và những mô hình mới hơn này thường được kiểm soát khác nhau. Máy tính và hệ điều hành của chúng không được kỳ vọng sẽ biết cách để kiểm soát mọi thiết bị ngay cả hiện tại lẫn tương lai. Để giải quyết vấn đề này, thực chất hệ điều hành ra lệnh cách mỗi loại thiết bị nên được kiểm soát như thế nào. Chức năng của các driver sau đó là dịch các lời gọi hàm dưới dự ủy thác của hệ điều hành thành các lời gọi thiết bị cụ thể. Về lý thuyết, một thiết bị mới được kiểm soát theo một cách thức mới nên chức năng một cách chính xác là một driver thích hợp có sẵn. Driver mới này sẽ đảm bảo rằng thiết bị xuất hiện để hoạt động như bình thường từ quan điểm của hệ điều hành cho bất kỳ cá nhân nào. Một số hệ điều hành đi cùng với các driver được cài đặt sẵn hoặc một loạt các driver phổ biến để lựa chọn. Khi bạn mua một thiết bị phần cứng mới, ví dụ một tay cầm chơi game, chúng sẽ thường đi cùng với một đĩa chứa driver mà bạn có thể cài đặt. Các driver khác hay các driver được cập nhật có sẵn trực tuyến tại trang wed của nhà sản xuất. Giao diện ứng dụng Cũng như các driver cung cấp một cách cho các ứng dụng để làm cho việc sử dụng phân hệ phần cứng mà không cần phải biết mọi chi tiết thao tác của phần cứng. Giao diện chương 15
- trình ứng dụng( API) cho phép người lập trình ứng dụng sử dụng các chức năng của máy tính và hệ điều hành mà không cần phải trực tiếp giữ theo dõi tất cả các chi tiết trong thao tác của CPU. Hãy nhìn vào ví dụ của việc tạo ra một tập tin đĩa cứng để chứa dữ liệu, xem lý do tại sao điều này có thể là quan trọng. Một lập trình viên viết một ứng dụng để ghi dữ liệu từ một dụng cụ khoa học có thể muốn cho phép các nhà khoa học chỉ rõ tên của tập tin được tạo. Hệ điều hành có thể cung cấp một hàm API có tên MakeFile cho việc tạo ra các tập tin. Khi viết chương trình, lập trình viên sẽ chèn thêm một dòng nhìn như thế này: MakeFile [1, %name, 2] Trong ví dụ này, câu lệnh lệnh cho hệ điều hành tạo ra một tập tin mà sẽ cho phép truy cập ngẫu nhiên tới dữ liệu của nó( gán bằng 1 – các tuỳ chọn khác có thể là 0 cho một tập tin nối tiếp), sẽ có một tên được gõ vào bởi người dùng( %name) và sẽ là một kích thước mà phụ thuộc khác nhau vào cách nhiều dữ liệu được lưu trữ trong tập tin( gán là 2 – lựa chọn khác có thể là 0 cho một kích thước cố định, và 1 cho tập tin phát truyển như dữ liệu được thêm nhưng không co lại khi dữ liệu được gỡ bỏ). Bây giờ hãy nhìn những gì hệ điều hành làm để lệnh chuyển thành hành động. Hệ điều hành gửi một truy vấn tới ổ đĩa để có được vị trí của vị trí lưu trữ trống có sẵn đầu tiên. Với thông tin đó, hệ điều hành tạo ra một mục ghi chú trong hệ thống tập tin hiển thị các vị trí bắt đầu và các vị trí kết thúc của tập tin, tên của tập tin, loại tập tin, dù tập tin đã được lưu trữ, người dùng có quyền xem hoặc sửa đổi tập tin, và ngày – giờ tạo tập tin. Hệ điều hành ghi thông tin lúc bắt đầu tập tin nhằm nhận dạng tập tin, thiết lập kiểu có thể truy cập và bao gồm các thông tin khác gắn tập tin vào ứng dụng. Trong tất cả thông tin này, truy vấn đến ổ đĩa và các địa chỉ của điểm đầu và điểm cuối của tập tin theo định dạng phụ thuộc nhiều vào nhà sản xuất và mô hình của ổ đĩa. Vì lập trình viên viết chương trình để sử dụng API cho bộ lưu trữ đĩa, lập trình viên không cần phải theo kịp mã lệnh, các kiểu dữ liệu và mã phản hồi cho mỗi ổ đĩa cứng và ổ băng. Hệ điều hành được kết nối tới các driver cho các phân hệ phần cứng khác nhau, xử lý các chi thiết thay đổi của phần cứng, lập trình viên chỉ cần phải viết mã cho API và tin tưởng hệ điều hành làm phần còn lại. API đã trở thành một trong những lĩnh vực tranh cãi nóng bỏng nhất của ngành công nghiệp máy tính trong những năm trở lại đây. Các công ty nhận ra rằng các lập trình viên sử dụng API của chúng cuối cùng sẽ dịch điều này thành khả năng kiểm soát và thu lợi nhuận từ một bộ phận nào đó của ngành công nghiệp. Đây là một trong những lý do mà nhiều công ty đã sẵn sàng cung cấp các ứng dụng như trình đọc hoặc trình xem miễn phí đến công chúng. Họ biết người tiêu dùng sẽ đòi hỏi các chương trình tận dụng lợi thế của trình đọc miễn phí, và các công ty ứng dụng sẽ sẵn sàng trả tiền bản quyền để cho phép các phần mềm của họ cung cấp các chức năng được đòi hỏi từ người tiêu dùng. Như chúng ta đã đề cập, có hệ điều hành trong mọi sản phẩm không riêng gì máy tính. Điện thoại di động, đầu ghi DVD và máy chơi TiVo cũng có hệ điều hành, tuy nhiên, những hệ điều hành này không thực sự đáng chú ý đến người tiêu dùng và họ không có bất kỳ kiểm soát nào tới chúng. 16
- Định nghĩa các tiến trình Bộ nhớ đệm Khi mua sắm cho máy tính, thường từ “bộ nhớ cache” sẽ đến gần. Có hai loại lưu trữ của bộ nhớ đệm khi nói đến máy tính hiện đại: L1 và L2. Một số bây giờ thậm chí có bộ nhớ đệm L3. Lưu trữ tạm vào bộ nhớ đệm là một tiến trình rất quan trọng khi nói đến máy tính của bạn. Có bộ nhớ đệm, bộ nhớ đệm đĩa phần cứng và phần mềm, bộ nhớ đệm trang và nhiều hơn nữa. Bộ nhớ ảo thậm chí là một hình thức của lưu trữ tạm vào bộ nhớ đệm. Hãy nhìn lưu trữ tạm vào bộ nhớ đệm là gì và tại sao nó rất quan trọng. Lưu trữ tạm vào bộ nhớ đệm là một công nghệ dựa trên phân hệ bộ nhớ của máy tính. Mục đích chính của một bộ nhớ đệm là để tăng tốc máy tính của bạn trong khi giữ giá cả của máy tính thấp. Lưu trữ tạm vào bộ nhớ đệm cho phép bạn thực hiện các tác vụ máy tính của bạn nhanh hơn nữa. Để hiểu ý tưởng cơ bản đằng sau một hệ thống bộ nhớ đệm, chúng ta có thể sử dụng một phép tương đồng đơn giản bằng cách dùng một thủ thư để chứng minh được tiến trình lưu trữ tạm vào bộ nhớ đệm. Nghĩ một thử thư đằng sau chiếc bàn. Anh ấy hoặc cô ấy ở đó để cho bạn những cuốn sách bạn hỏi. Để giữ cho nó đơn giản, chúng ta hãy giả sử rằng bạn không thể có được những cuốn sách chính bạn, bạn phải hỏi thủ thư về cuốn sách mà bạn muốn đọc và anh ấy hoặc cô ấy lấy nó cho bạn từ kệ sách trong kho. Ví dụ đầu tiên là một thủ thư mà không có bộ nhớ đệm. Người đầu tiên đến và hỏi cuốn sách Great Expectations. Thủ thư đi đến kho lấy cuốn sách, quay lại bộ đếm và giao sách tới khới khách hàng. Sau đó, người mượn quay lại để trả lại cuốn sách. Thủ thư lấy sách và trả nó về kho trả lại bộ đếm để chờ khách hàng kế tiếp. Các khách hàng tiếp theo đến vào cũng hỏi cuốn sách Great Expectations. Thủ thư phải quay lại kho để lấy một cuốn sách và xử lý giống như vậy rồi giao nó cho khách. Vậy là về cơ bản, thủ thư phải làm một vòng lặp hoàn chỉnh để tìm nạp mỗi sách – thậm chí một cuốn sách rất phổ biến được yêu cầu thường xuyên. Đó không phải là một hệ thống rất hiệu quả cho thủ thư của chúng ta, đúng không? Tuy nhiên, có một cách để cải thiện hệ thống này. Chúng ta có thể thêm một bộ nhớ đệm trên thủ thư. Để minh hoạ một bộ nhớ đệm, hãy cho thủ thư một chiếc ba lô trong đó anh ấy hoặc chị ấy có thể lưu trữ, chẳng hạn như 10 cuốn sách. Sẽ nghĩa là thủ thư có một bộ nhớ đệm 10 cuốn sách. Trong ba lô này, anh ấy hoặc cô ấy sẽ đặt các cuốn sách khách hàng trả lại lên đến tối đa là 10. Bây giờ, hãy trở lại và ghé thăm kịch bản đầu tiên với thủ thư bộ nhớ đệm của chúng ta. Vào đầu ngày, bộ nhớ đệm của thủ thư là trống rỗng. Người đầu tiên đến và hỏi cuốn sách Great Expectations. Vì thế thủ thư đến kho và giao nó cho khách hàng. Khi khách hàng trở 17
- lại với cuốn sách, thay vì trở lại vào kho, thủ thư đặt cuốn sách vào ba lô đảm bảo nó đầy đủ đầu tiên. Người khác đến và hỏi cuốn sách Great Expectations. Trước khi đi vào kho, thủ thư kiểm tra để xem nếu sách có sẵn trong ba lô. Trông lạ chưa kìa, là nó! Bây giờ tất cả mà anh ấy hoặc chị ấy phải làm là lấy cuốn sách từ ba lô và đưa nó cho khách. Không có thêm năng lượng bị phí tổn bởi thủ thư và khách hàng không cần phải chờ chuyến đi vào kho. Hãy giả sử rằng khách hàng hỏi một tiêu đề không nằm trong ba lô? Trong trường hợp này, thủ thư là kém hiệu quả hơn so với một bộ nhớ đệm vì anh ấy hoặc chị ấy phải dành thời gian để tìm cuốn sách trong ba lô trước tiên. Đó là lý do tại sao một trong những thách thức của thiết kế bộ nhớ đệm là giảm thiểu tác động của tìm kiếm bộ nhớ đệm. Phần cứng hiện đại đã được giảm thời gian trễ này tới 0 trong thực tế. Thời gian cần cho thủ thư để tìm trong bộ nhớ đệm là ít hơn nhiều so với phải chạy vào kho, vì vậy thời gian được lưu lại tự động với bộ nhớ đệm. Bộ nhớ đệm thì nhỏ( chỉ 10 cuốn sách) vì vậy thời gian bỏ lỡ chỉ là một phần rất nhỏ của thời gian cần để đi đến kho. Từ ví dụ này, bạn có thể xem vài sự kiện quan trọng về lưu trữ tạm vào bộ nhớ đệm: Công nghệ bộ nhớ đệm là việc sử dụng một loại bộ nhớ nhỏ hơn nhưng nhanh hơn để tăng tốc kiểu bộ nhớ lớn hơn nhưng chậm hơn. Khi sử dụng một bộ nhớ đệm, bạn phải kiểm tra bộ nhớ đệm để xem nếu một mục ở trong đó. Nếu có, nó được gọi là “bộ nhớ đệm hit”. Nếu không, nó được gọi là “bộ nhớ đệm miss” và máy tính phải chờ một vòng lặp từ vùng bộ nhớ nhanh hơn hoặc chậm hơn. Một bộ nhớ đệm có một số kích thước tối đa nhỏ hơn nhiều so với vùng bộ nhớ lớn hơn. Nó có thể có nhiều lớp của bộ nhớ đệm. Với ví dụ thủ thư của chúng ta, các kiểu bộ nhớ nhỏ hơn nhưng nhanh hơn là ba lô, còn kho thể hiện các kiểu bộ nhớ lớn hơn nhưng chậm hơn. Đó là một bộ nhớ đệm cấp 1. Có thể có nhiều lớp khác của bộ nhớ đệm bao gồm một kệ có thể giữ 100 cuốn sách đằng sau quầy. Thủ thư có thể kiểm tra ba lô rồi kệ và sau đó là kho. Đây chính là một bộ nhớ đệm cấp 2. Một máy tính là một cỗ máy trong đó chúng ta đo thời gian trong sự gia tăng rất nhỏ. Khi bộ vi xử lý truy cập bộ nhớ chính( RAM), nó thực hiện điều đó trong khoảng 60 nano giây( 60 phần tỉ của 1 giây). Điều đó là khá nhanh nhưng nó chậm hơn nhiều so với bộ vi xử lý điển hình. Bộ vi xử lý có thể có thời gian chu kỳ ngắn khoảng 2 nano giây, vì vậy để một bộ vi xử lý tới 60 nano giây có vẻ như là vô cùng. Điều gì sẽ sảy ra nếu chúng ta xây dựng một ngân hàng bộ nhớ đặc biệt trong bo mạch chủ, nhỏ nhưng rất nhanh( khoảng 30 nano giây)? Điều đó thực sự nhanh hơn so với truy cập bộ nhớ chính. Đó được gọi là bộ nhớ đệm cấp 2 hay L2. Điều gì sẽ sảy ra nếu chúng ta xây dựng một hệ thống bộ nhớ thậm chí nhỏ hơn nhưng nhanh hơn trực tiếp vào chip của bộ vi xử lý? Bằng cách đó, bộ nhớ sẽ được truy cập với tốc độ của bộ vi xử lý mà không phải tốc độ của bus bộ nhớ. Đó là bộ nhớ đệm L1, mà trên bộ vi 18
- xử lý Pentium 223MHz thì nhanh hơn 3,5 lần so với bộ nhớ đệm L2 và nhanh hơn 2 lần so với truy cập vào bộ nhớ chính. Một số bộ vi xử lý có 2 mức của bộ nhớ đệm được xây dựng ngay vào chip. Trong trường hợp này, bộ nhớ đệm của bo mạch chủ - bộ nhớ đệm tồn tại giữa bộ vi xử lý và bộ nhớ hệ thống chính - trở thành cấp 3 hay bộ nhớ đệm L3. Có nhiều phân hệ trong một máy tính, bạn có thể đặt bộ nhớ đệm giữa nhiều trong số chúng để cải thiện hiệu suất. Đây là một ví dụ, chúng ta có bộ vi xử lý( thứ nhanh nhất trong máy tính), sau đó có bộ nhớ đệm L1 lưu trữ tạm vào bộ nhớ đệm L2 rồi bộ nhớ đệm L2 lưu trữ tạm vào bộ nhớ chính có thể được sử dụng( và thường được sử dụng) như một bộ nhớ đệm thậm chí cho các ngoại vi chậm hơn như đĩa cứng và CD-ROM. Đĩa cứng cũng được sử dụng như bộ nhớ đệm thậm chí ở một môi trường chậm hơn – kết nối internet của bạn. Kết nối internet của bạn là liên kết chậm nhất trong máy tính của bạn. Vì vậy trình duyện của bạn( Internet Explorer, Nescape,…) dùng đĩa cứng để lưu trữ các trang HTML, đặt chúng vào một thư mục đặc biệt trong đĩa của bạn. Lần đầu tiên bạn hỏi một trang HTML, trình duyệt của bạn hoàn trả nó và một bản sao của nó cũng được lưu trữ trên đĩa của bạn. Lần tiếp theo bạn yêu cầu truy cập tới trang này, trình duyệt của bạn kiểm tra nếu ngày của các tập tin trên internet mới hơn ngày được lưu trữ tạm trong bộ nhớ đệm. Nếu ngày là giống nhau, trình duyệt của bạn sử dụng trang trên đĩa cứng của bạn thay vì tải về từ internet. Trong trường hợp này, hệ thống bộ nhớ nhỏ hơn nhưng nhanh hơn là đĩa cứng của bạn còn hệ thống bộ nhớ lớn hơn nhưng chậm hơn là internet. Bộ nhớ đệm cũng có thể được xây dựng trực tiếp trên thiết bị ngoại vi. Ổ đĩa cứng hiện đại đi cùng với bộ nhớ nhanh, khoảng 512 KB, thêm tính năng bằng phần cứng cho đĩa cứng. Máy tính không trực tiếp sử dụng bộ nhớ này – cứng – bộ điều khiển đĩa cũng vậy. Đối với máy tính, chip bộ nhớ này là chính bản thân đĩa, máy tính yêu cầu dữ liệu từ đĩa cứng. Bộ kiểm soát đĩa cứng kiểm tra bộ nhớ này trước khi để di chuyển các bộ phận cơ khí của đĩa cứng. Điều này thì rất chậm so với bộ nhớ. Nếu tìm thấy dữ liệu mà máy tính yêu cầu trong bộ nhớ đệm, nó sẽ trả về dữ liệu được lưu trong bộ nhớ đệm mà không thực sự truy cập dữ liệu trên chính bản thân đĩa, tiết kiệm rất nhiều thời gian. Đây là một thử nghiệm bạn có thể thử. Máy tính của bạn lưu trữ tạm ổ đĩa mềm của bạn với bộ nhớ chính, và bạn có thể thực sự nhìn nó xảy ra. Truy cập một tập tin lớn từ đĩa mềm của bạn - ví dụ, mở một tập tin văn bản 300 KB trong một trình soạn thảo văn bản. Lần đầu, bạn sẽ nhìn thấy đèn trên đĩa mềm của bạn bật và bạn sẽ chờ. Ổ đĩa mền vô cùng chậm, vì vậy nó sẽ mất 20 giây để nạp tập tin. Bây giờ, đóng trình soạn thảo và mở tập tin như thế lần nữa. Lần thứ hai( không chờ 30 phút hay làm nhiều truy cập ổ đĩa giữa hai lần thử) bạn sẽ không nhìn thấy đèn bật và bạn sẽ không phải chờ. Hệ điều hành kiểm tra trong bộ nhớ đệm của nó cho đĩa mềm và tìm thấy những gì nó đang tìm. Vì vậy thay vì chờ 20 giây, dữ liệu được tìm thấy trong phân hệ bộ nhớ nhanh hơn nhiều so với lần đầu tiên bạn thử nó. Hệ điều hành truy cập tới đĩa mềm mất 120 mili giây, trong khi hệ điều hành truy cập tới bộ nhớ chính mất khoảng 60 nano giây – điều này 19
- nhanh hơn nhiều. Bạn có thể đã chạy thử nghiệm tương tự trên đĩa cứng của bạn nhưng nó rõ ràng hơn trên ổ đĩa mềm của bạn vì nó quá chậm. Để cho bạn bức tranh tổng thể về toàn bộ vấn đề này, đây là danh sách của hệ thống lưu trữ tạm vào bộ nhớ đệm thông thường: Bộ nhớ đệm L1 – bộ nhớ truy cập hoàn toàn ở tốc độ bộ vi xử lý( 10 nano giây, kích thước từ 4 tới 16 KB) Bộ nhớ đệm L2 – bộ nhớ truy cập của loại SRAM( 20 đến 30 nano giây, kích thước từ 128 tới 512 KB) Bộ nhớ chính – bộ nhớ truy cập của loại RAM( khoảng 60 nano giây, kích thước từ 32 tới 128 MB) Đĩa cứng – cơ khí, chậm( khoảng 12 mili giây, kích thước từ 1 GB đến 10 GB) Internet – cực kỳ chậm( giữa 1 giây và 3 ngày, kích thước không giới hạn) Như bạn có thể thấy, bộ nhớ đệm L1 lưu trữ tạm vào bộ nhớ đệm L2 và bộ nhớ đệm L2 lưu trữ tạm vào bộ nhớ chính, bộ nhớ chính có thể sử dụng để lưu trữ tạm vào phân hệ đĩa, vân vân. Một câu hỏi phổ biến vào thời điểm này là “ Tại sao không làm cho tất cả bộ nhớ của máy tính chạy ở cùng một tốc độ như bộ nhớ đệm L1, vì vậy không lưu trữ tạm vào bộ nhớ đệm sẽ được yêu cầu? Sẽ làm được nhưng nó cự kỳ đắt tiền. Ý tưởng đằng sau lưu trữ tạm vào bộ nhớ đệm là để sử dụng một số lượng nhỏ bộ nhớ đắt tiền để tăng tốc độ một lượng lớn bộ nhớ chậm hơn, ít tốn kém hơn. Trong thiết kế một máy tính, mục đích là để cho phép bộ vi xử lý chạy ở tốc độ cao nhất của nó càng ít tốn kém càng tốt. Một chip 500 MHz đi qua 500 triệu chu kỳ trong một giây( mỗi chu kỳ hai nano giây). Không có bộ nhớ đệm L1 và L2, một truy cập tới bộ nhớ chính mất 60 nano giây hoặc khoảng 30 chu kỳ truy cập bộ nhớ bị lãng phí. Khi bạn nghĩ đến chuyện đó, nó là loại không thể tin được tương đương như vậy, lượng nhỏ xíu của bộ nhớ có thể tối ưu việc dùng lượng bộ bộ nhớ lớn hơn. Nghĩ về một bộ nhớ đệm L2 – 256 KB lưu trữ tạm 64 MB của RAM. Trong trường hợp này, 256000 B lưu trữ tạm hiệu quả 64000000 B. Why does that work? Trong khoa học máy tính, có một khái niệm về lý thuyết được gọi là vùng tham chiếu. Nó nghĩa là trong một chương trình khá lớn, chỉ một phần nhỏ được sử dụng tại một thời điểm bất kỳ. Nó như có vẻ lạ, vùng tham chiếu làm việc cho phần lớn của các chương trình. Thậm chí nếu có thể thực thi kích thước 10 MB thì chỉ một số ít các byte từ chương trình đó được sử dụng tại một thời điểm bất kỳ và tỉ lệ của sự lặp lại là rất cao. Bộ nhớ ảo Bợ nhớ ảo là một bộ phận chung của hầu hết các hệ điều hành trên máy tính để bàn. Nó đã trở nên rất phổ biến vì nó cung cấp một lợi ích lớn cho người dùng với một chi phí rất thấp. 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Hướng dẫn lập trình cơ bản với Android - Bài 4
20 p | 230 | 110
-
Hướng dẫn Update BIOS
4 p | 253 | 87
-
Hướng dẫn cài đặt Rsyslog 5.7.x trên nền tản CentOS 5.x
13 p | 278 | 64
-
Hướng dẫn cách hạ cấp từ Windows Vista xuống Windows XP
14 p | 302 | 40
-
5 cách đơn giản để tăng cường bảo mật trong Windows 7
8 p | 185 | 37
-
Hướng dẫn cài đặt hệ điều hành Window XP
21 p | 276 | 34
-
Hướng dẫn sử dụng Proshow Gold dựng phim HD
2 p | 120 | 17
-
Hướng dẫn biến USB thành ổ đĩa cài đặt Mac OS X
4 p | 316 | 12
-
Hướng dẫn Update BIOS Update BIOS có thể mang lại
6 p | 98 | 11
-
Hướng dẫn cài Windows 8 bằng hình ảnh
16 p | 121 | 11
-
Hướng dẫn sử dụng về Windows 7 với Boot Camp
12 p | 143 | 9
-
Điều khiển máy Mac từ xa với Apple Remote Desktop
4 p | 168 | 9
-
Kích hoạt tính năng nhận dạng chữ viết tay trên Windows 7Tính năng nhận dạng
4 p | 92 | 7
-
Cách khắc phục hệ điều hành bị treo
4 p | 123 | 6
-
Thủ thuật bảo vệ và tăng tốc ổ cứng trên Win XP
3 p | 81 | 6
-
Hướng dẫn tải Flash game về máy tính
5 p | 175 | 5
-
Chuyển đổi và kiểm tra lỗi các tập tin audio với Helium Audio Converter
4 p | 57 | 4
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn