Hệ tháng file cāa UNIX cũng đ°ợc phân cấp theo một cây th° mÿc có các thuộc tính để kiểm soát thẩm quyền: quyền đọc, quyền sửa, quyền thực hiện cho bản thân ng°ßi tạo ra file, nhóm ng°
Khỏi niòm hò điÁu hành
Cỏc thành phần hò thống
- Bao gãm các tài nguyên c¡ bản cāa máy tính nh° CPU, bộ nhớ, các thiết bị I/O
Hệ điều hành (operating system):
- Phân phái tàinguyên, điều khiển và phái hợp các hoạt động cāa các ch°¡ng trình trong hệ tháng
Ch°¡ng trình ứng dÿng (application programs):
- Sử dÿng hệ thỏng tài nguyờn để giải quyết một bài toỏn tớnh toỏn nào đú cāa ng°òi sử dÿng
- Ví dÿ: compilers, database systems, video games, business programs
Users (people, machines, other computers).
Chāc năng cÿa hò điÁu hành
Phõn chia thòi gian xử lý và định thòi CPU
Phái hợp và đãng bộ hoạt động giữa các processes (coordination & synchronization) Quản lý tài nguyên hệ tháng (thiết bị I/O ,bộ nhớ, file chứa dữ liệu,&)
Thực hiện và kiểm soát access control, protection
Duy trì sự nhất quán (integrity) cāa hệ tháng, kiểm soát lỗi và phÿc hãi hệ tháng khi có lỗi (error recovery)
Cung cấp giao diện làm việc cho users.
Quá trình phát triển cÿa HĐH
- Cấu trúc đ¡n giản - MS-DOS
- Cấu trúc phức tạp h¡n – UNIX
- Cấu trúc vi nhân (client – server)
Phân loại HĐH
D°òi gúc đỏ loại mỏy tớnh
- Hệ điều hành Multiprocessor Systems
- Hệ điều hành Real time system
- Hệ điều hành Desktop system
- Hệ điều hành Distributed Systems
- Hệ điều hành Gaming system
- Hệ điều hành IOS (Internetwork Operating System)
Mainframe là loại máy tính gồm nhiều thành phần hoạt động độc lập nhưng có thể phối hợp với nhau để đem lại độ tin cậy cao Chúng có khả năng tiếp nhận và xử lý lượng dữ liệu cực lớn, cho ra kết quả tương ứng Do các công ty lớn vẫn sử dụng phần mềm chuyên biệt nên yêu cầu đối với mainframe là phải tương thích chặt chẽ với những phần mềm cũ, nếu phải viết lại sẽ tiềm tốn chi phí rất cao Ngoài ra, mainframe được thiết kế để có thể chạy liên tục (không gián đoạn) trong thời gian dài Đây là yếu tố vô cùng quan trọng khiến mainframe vẫn được sử dụng cho những mục đích mà chỉ cần hệ thống bị sập vài phút cũng sẽ xảy ra "thảm họa", hoặc nếu hệ thống ngừng chạy dù chỉ trong thời gian ngắn thì chi phí phục hồi hoạt động sẽ là cực kỳ đắt đỏ.
Việc cập nhật phần mềm trờn mỏy mainframe th°òng đũi hòi thiết lập lại hệ điều hành hoặc một phần cāa nó Còn tính chất chạy không ngừng nghỉ cāa mainframe chỉ có đ°ợc khi sử dÿng những kiến trúc hệ điều hành ảo hóa nh° z/OS hay Parallel Sysplex cāa IBM, XPLC cāa Unisys Các kiến trúc ảo hóa này cho phép một hệ tháng đảm đ°¡ng nhiệm vÿ cāa hệ tháng khác trong quỏ trỡnh ng°òi ta cập nhật, nõng cấp hay sửa chữa Đái với các dòng máy lớn nh° mini và mainframe thì hệ điều hành chā đạo vẫn là UNIX Nh° đã nói, UNIX là sự kế thừa cāa MULTICS Thực tế MULTICS đã thất bại vì nó có quá nhiều tham vọng so với khả năng kỹ thuật đ°Ăng thòi Cú ng°òi đó so thất bại cāa MULTICS với thất bại cāa Babbage chế tạo máy tính á đại học Cambridge đầu thế kỷ thứ 19 Ken Thompson, một trong những thành viên chā chát xây dựng MULTICS đã quyết định viết lại hệ điều hành này trên máy PDP-11 Thay vì dùng PL/1 để viết cho MULTICS, ông đã xây dựng một ngôn ngữ lập trình thậthiệu quả - đó chính là ngôn ngữ C đ°ợc sử dÿng rộng rãi ngày nay Tên ban đầu hệ điều hành này là UNICS cũn mang dấu ấn cāa MULTICS nh°ng tò ra khiờm tỏn hĂn (UNiplexed Information and Computing Servive) Từ này đ°ợc phỏt õm giỏng nh° UNIX nờn sau này mọi ng°òi gọi luụn hệ điều hành này là UNIX Kết quả thành công h¡n mức trông đợi Thực tế sau này UNIX thay thế hẳn MULTICS và đ°ợc sử dÿng cho rất nhiều loại máy kể từ máy vi tính đến siêu máy tính Sau đây là một sá nét chính về hệ điều hành UNIX
Kế thừa các tính năng từ MULTICS, ngay từ đầu UNIX đã được thiết kế theo mô hình hệ điều hành đa nhiệm và đa người dùng với cơ chế phân chia thời gian Cũng với quan niệm có nhiều người dùng, nên UNIX có cơ chế kiểm soát thẩm quyền nghiêm ngặt để đảm bảo an toàn cho mỗi chương trình cùng chạy trên máy tính.
Hệ tháng file cāa UNIX cũng đ°ợc phân cấp theo một cây th° mÿc có các thuộc tính để kiểm soỏt thẩm quyền: quyền đọc, quyền sửa, quyền thực hiện cho bản thõn ng°òi tạo ra file, nhúm ng°òi sử dÿng và cho những ng°òi khỏc
UNIX cung cấp nhiều tiện ích d°ới dạng các lệnh Chúng bao gãm: các lệnh thao tác với file và th° mÿc, các ph°¡ng tiện để lọc, các ph°¡ng tiện lập trình, các hệ soạn thảo băn bản, các lệnh để quản trị hệ tháng Chuẩn POSIX (Portable Operating System Interface) 1003.2 cāa Hội đãng tiêu chuẩn cāa IEEE đã quy định cú pháp và ngữ nghĩa cāa khoảng 100 lệnh UNIX Các phiên bản UNIX sau này mặc dù có nhiều sáng tạo riêng nh°ng nói chung đều tuân thā POSIX
UNIX thực ra bắt đầu xuất hiện với các máy tính thế hệ 3 và có nhiều phiên bản, ngoài phiên bản đầu viết cho PDP 11, sau này còn có những phiên bản UNIX System V cāa AT&T, phiên bản UNIX cāa Đại học Berkerley với những tính năng mới nh° tính năng mạng theo giao thức TCP/IP hay bộ nhớ ảo cho phép máy tính có thể thực hiện các ch°¡ng trình lớn h¡n bộ nhớ vật lý cāa mỏy Chớnh vỡ UNIX dựng TCP/IP nờn ng°òi ta cũn coi nh° UNIX đó khai sinh ra Internet
Ngày nay hầu hết các máy tính lớn đều sử dÿng UNIX SOLARIS cāa SUN, AIX cāa IBM, Alpha UNIX cāa DEC HP Unix cāa Hewlette Parkard đều là các phiên bản khác nhau cāa hệ điều hành UNIX UNIX cũng đ°ợc dùng trên các máy tính cá nhân nh° các phiên bản SOLARIS trên
PC, SCO UNIX và gần đây là LINUX Đặc biệt LINUX là một hệ điều hành mã má, tạo điều kiện để những ng°òi quan tõm cú thể cựng tham gia phỏt triển UNIX LINUX đó nhận đ°ợc sự hỗ trợ cāa rất nhiều hãng máy tính và các hãng phần mềm lớn và là một hệ điều hành trên máy tính cá nhân rất có triển vọng
Ngoài giao diện lệnh cāa UNIX truyền thỏng, ng°òi ta cũng sử dÿng một giao diện đó hoạ là X - WINDOW
Với máy vi tính, hệđiều hành có những h°ớng phát triển °u tiên mới: đó là tính năng thân thiện (user-friendly) vỡ đỏi t°ợng sử dÿng th°òng là những ng°òi khụng chuyờn nghiệp Một sỏ hệ điều hành nổi tiếng trong thòi kỳ này là DOS, WINDOWS trờn cỏc mỏy dũng PC với bộ xử lý Intel, MAC/OS trên các máy dòng Macintosh với bộ xử lý Motorola
Hệ điều hành DOS (Disk Operating System) đ°ợc xây dựng từ những năm 80 cho họ máy
PC và đuợc sử dÿng rộng rãi suát thập kỷ 80 và đầu thập kỷ 90 cho đến khi bị Windows thay thế
Ta tóm tắt một sáđặc điểm chính cāa hệđiều hành DOS:
Hệ điều hành DOS là một hệ điều hành được thiết kế dành cho các máy tính cá nhân và chương trình, có đặc điểm là chỉ một chương trình của người dùng được thực hiện trên máy tính tại cùng một thời điểm.
Hệ điều hành DOS tổ chức dữ liệu trên đĩa cứng thành các đơn vị có tên gọi là file Các file này được sắp xếp theo một cấu trúc phân cấp theo dạng cây được gọi là cấu trúc thư mục Ổ đĩa chứa thư mục gốc, mỗi thư mục có thể chứa nhiều thư mục khác Các file có thể được lưu trữ trực tiếp trong một thư mục ở bất kỳ cấp độ nào.
Giao tiếp giữa ng°òi và mỏy theo kiểu lệnh Vớ dÿ muỏn xoỏ một file cú tờn là GPT.PAS trên đĩa C ta gõ vào bàn phím lệnh DEL C:GPT.PAS sau đó bấm phím ↵ (phím Enter)
Về chức năng, trên DOS ta có thể thực hiện đ°ợc những công việc nh°: tổ chức th° mÿc (tạo mới, xoá, di chuyển từ th° mÿc này tới th° mÿc khác, xem danh mÿc các file cāa một th° mÿc), tổ chức file (tạo bản sao trong các th° mÿc khác nhau, xóa, xem nội dung), thực hiện cỏc ch°Ăng trỡnh, đặt chếđộ làm việc (đặt cấu hỡnh hệ thỏng, đặt thòi gian), tổ chức xử lý theo lô Các ứng dÿng trên DOS đ°ợc xem nh° một lệnh So với các hệđiều hành tr°ớc đó thì DOS rất dễ sử dÿng
Windows cũng là một hệ điều hành nổi tiếng cho các máy PC vì phong cách giao tiếp theo kiểu đó hoạ rất thõn thiện Nếu trong mụi tr°òng DOS, giao diện cāa cỏc phần mềm do chớnh ch°¡ng trình ứng dÿng tạo ra thì trong windows, giao diện tiêu chuẩn đ°ợc hỗ trợ ngay á mức hệ điều hành Kiểu giao tiếp với các biểu t°ợng (icon) thực đ¡n trải xuáng (pulldown menu), cửa sổ ứng dÿng (window), hộp thoại để đặt tham sá (dialog box) và c¡ chế chỉ định bằng chuột (mouse) đã trá thành chuẩn cho giao tiếp đã hoạ cho đến ngày nay
Thực ra hệ điều hành thực hiện thành công giao tiếp theo kiểu này đầu tiên không phải là Windows cāa Microsoft mà là MAC/OS trên họ máy Macintosh cāa hãng Apple ngay từ năm
1985 Microsoft chỉlà ng°òi đi sau, thực hiện lại và cải tiến cỏc ý t°ỏng đó đ°ợc Apple sử dÿng trong dòng máy Macintosh
D°òi gúc đỏ số ch°Ăng trỡnh đ°ÿc sử dāng cựng lỳc
D°òi gúc đỏ ng°ỏi dựng (truy suất tài nguyờn cựng lỳc)
+ Mạng có máy chā: LAN, WAN,&
SĂ l°ÿc lòch sử phỏt triển cÿa hò điÁu hành
Lòch sử phỏt triển
- Thiết kế, xõy dựng, lập trỡnh, thao tỏc: do 1 nhúm ng°òi, ch°a cú HĐH
- Xuất hiện sự phân công công việc
- Hệ thỏng sử lý theo lụ ra đòi, l°u trờn băng từ
- Hoạt động d°ới sự điều khiển đặc biệt cāa 1 ch°¡ng trình
- Ra đòi hệ điều hành, khỏi niệm đa ch°Ăng
- HĐH chia sẻ thòi gian nh° CTSS cāa MIT
- Ra đòi mỏy tớnh cỏ nhõn, IBMPC
- HĐHMS-DOS, MacOS (AppleMacintosh), MSWindows, OS/1
Cấu trỳc hò thống
- Khi thiết kế, do giới hạn về dung l°ợng bộ nhớ nên không phân chia thành các module (modularization) và ch°a phân chia rõ chức năng giữa các phần cāa hệ tháng Ch°¡ng trình ứng dÿng có thể truy xuất các hàm I/O trong ROM BIOS để ghi trực tiếp lên màn hình hay hay bộ điều khiển đĩa
1.3.2.2 Cấu trúc phāc tạp h¡n – UNIX:
Góm 2 phần cú thể tỏch ròi nhau:
Nhân (cung cấp file system, CPU scheduling, memory management, và một sá chức năng khác)
HĐH đ°ợc chia thành nhiều lớp (layer)
Lớp trên cùng là giao tiếp với user
Lớp trên chỉ phÿ thuộc lớp d°ới
Một lớp chỉ có thể gọi các hàm cāa lớp d°ới và các hàm cāa nó đ°ợc gọi bái lớp trên Mỗi lớp t°¡ng đ°¡ng một đái t°ợng trừu t°ợng: cấu trúc dữ liệu + thao tác
Phân lớp có lợi ích gì?
1.3.2.4 Cấu trúc vi nhân (client – server)
Phân chia module theo microkernel (CMU Mach OS, 1980)
Chuyển một sá chức năng cāa OS từ kernel space sang user space
Thu gọn kernel => microkernel, microkernel chỉ bao gãm các chức năng tái thiểu nh° quản lý tiến trình, bộ nhớvà c¡ chế giao tiếp giữa các tiến trình
Giao tiếp giữa các module qua c¡ chế truyền thông điệp
Mô hình client-server trên 1 máy
Mô hình client-server trên hệ tháng mạng nhiều máy
Một sá HĐH hiện đại sử dÿng vi nhân:
- Tru64 UNIX (Digital UNIX tr°ớc đây): nhân Mach
- Apple MacOS Server: nhân Mach
- QNX–vi nhõn cung cấp: truyền thụng điệp, định thòi CPU, giao tiếp mạng cấp thấp và ngắt phần cứng
Windows NT: chạy các ứng dÿng khác nhau win32, OS/2, POSIX (Portable OS for uniX)
Cài đặt Linux
1.3.3.1 Cấu hình máy ảo Linux:
Tại màn hình chính cāaVMware, bạn chọn Create a New Virtual Machine
Tiếp theo, chọn Installer disc image file (iso) vào chọn Browse để má cửa sổ chọn tệp
Cài đặt từ file iso
Chọn file cài đặt đã tải về tr°ớc đó và bấm Open để tải lên.
Chán file iso Kali Linux
Chọn Next và tiếp tÿc quá trình cài đặt
Thiết lập thông tin cho máy ảo, bao gãm:
Hệđiều hành (Guest operating system): Linux
Phiên bản (Version): Other Linux 5.x kernel 64-bit hoặc Other Linux 4.x kernel 64-bit Sau đó, chọn Next và đến b°ớc tiếp theo
Cài đặt máy ảo Đặt tên và chọn th° mÿc l°u ổ cứng ảo Sau đó, chọn Next
Chỉ định dung l°ợng, cách l°u trữ cho ổ cứng ảo và bấm Next để tiếp tÿc
Chán dung l°ÿng cho ổ cāng ảo
Chọn Finish để hoàn tất cài đặt máy tính ảo.
B°ớc 1: Khởi đáng máy ảo vừa tạo b¿ng cách nhấp chán Play virtual machine
B°òc 2: Chọn Graphical Install và ấn Enter
Chọn chế độ cài đặt
B°òc 3: Chọn ngụn ngữ cho hệ thỏng và bấm Continue để tiếp tÿc
B°òc 4: Chọn quỏc gia mà bạn đang sinh sỏng, sau đú bấm Continue
B°òc 5: Tựy chọn layout cho bàn phớm mà bạn muỏn sử dÿng và tiếp tÿc chọn Continue
B°òc 6: Đặt tờn cho mỏy chā (hostname) và chọn Continue để chuyển sang b°ớc tiếp theo
B°òc 7: Nhập tờn đầy đā cho ng°òi dựng (full name for the new user) và tiếp tÿc bấm Continue
B°òc 8: Đặt tờn ng°òi dựng (user name) cho tài khoản cāa bạn và chọn Continue
Chọn tờn ng°òi dựng
Bước 9: Nhập mật khẩu cho người dùng và chọn Tiếp tục Bạn cần ghi nhớ mật khẩu vì bạn sẽ dùng nó để đăng nhập vào Kali Linux sau khi quá trình cài đặt hoàn tất.
Thiết lập mật khẩu ng°òi dựng
B°òc 10: Tiến hành chọn mỳi giò cho hệ điều hành và bấm Continue
B°òc 11: Chọn phõn vựng cài đặt cho hệ điều hành Kali Linux, bạn chọn Manual và bấm Continue để phân vùng theo cách thā công.
Phân vùng theo cách thā công
B°òc 12: Chọn đỳng ổ cứng mà bạn đó tạo phõn vựng trỏng lỳc đầu, sau đú chọn Continue để chuyển sang b°ớc tiếp theo
Chọn phân vùng cho ổ cứng
B°òc 13: Chọn Yes để xỏc nhận tạo phõn vựng trỏng tạo và bấm Continue
B°òc 14: Chọn phõn vựng trỏng vừa đ°ợc tạo (th°òng sẽ cú dũng FREE SPACE) và bấm Continue
B°òc 15: Chọn Automatically partition the free space và bấm Continue Trỡnh cài đặt tự động chia phân vùng cho các tập tin.
Tự động chia phân vùng
B°òc 16: Chọn All files in one partition và tiếp tÿc bấm Continue Nếu bạn cú kinh nghiệm về máy tính, bạn có thể tự động chia sá phân vùng cho các hệ tháng tập tin.
Tất cả các tập tin chung một phần vùng
B°òc 17: Chọn Finish partitioning and write changes to disk và bấm Continue để hoàn tất việc chia phân vùng ổ cứng.
Hoàn tất việc chia phân vùng cho ổ cứng
B°òc 18: Nhấp chọn Yes và bấm Continue để ghi cỏc thay đổi vào ổ đĩa cứng
Ghi lại các thay đổi
Trong bước Cài đặt Phần mềm (Select applications to install), hãy chọn các phần mềm bạn muốn cài đặt và nhấn Tiếp tục Nếu bạn không có kết nối mạng, các phần mềm này sẽ được cài đặt sau khi quá trình cài đặt hệ điều hành hoàn tất.
Cài đặt các phần mềm
B°òc 20: Chọn Yes để cài đặt GRUB boot Loader và bấm Continue
Cài đặt GRUB boot Loader
B°òc 21: Chọn ổ cứng đầu tiờn cāa hệ điều hành và bấm Continue
Chọn ổ cứng chứa hệ điều hành gác
B°òc 22: Vậy là bạn đó cài đặt xong Kali Linux Giò thỡ chọn Continue để khỏi động lại máy ảo nhé.
Kết thúc quá trình cài đặt
Sau khi khái động lại, bạn chỉ cần nhập tên và mật khẩu là có thể sử dÿng
Cỏc ph°Ăng phỏp tổ chāc và truy nhập dữ liòu
B ả n qu ản lý th° mā c t ậ p tin
Tr°ớc khi tập tin đ°ợc đọc, tập tin phải đ°ợc má, để má tập tin hệ tháng phải biết đ°òng dẫn do ng°òi sử dÿng cung cấp và đ°ợc định vị trong cấu trỳc đầu vào th° mÿc (directory entry) Directory entry cung cấp các thông tin cần thiết để tìm kiếm các khái Tùy thuộc vào mỗi hệ tháng, thông tin là địa chỉ trên đĩa cāa toàn bộ tập tin, sá hiệu cāa khái đầu tiên, hoặc là sá I-node
2.1.1.2 Cài đặt bảng th° māc:
Bảng này th°òng đ°ợc cài đặt ỏ phần đầu cāa đĩa Bảng là dóy cỏc phần tử cú kớch th°ớc xác định, mỗi phần tử đ°ợc gọi là 1 entry Mỗi entry sẽ l°u thông tin về tên, thuộc tính, vị trí l°u trữ&cāa một tập tin hay th° mÿc.
B ả n phõn ph ố i vựng nh ò
2.1.2.1 Khỏi niòm bảng phõn phối vựng nhò:
Bảng này th°òng đ°ợc sử dÿng phỏi hợp với bảng quản lý th° mÿc tập tin, mÿc tiờu là cho biết vị trí khái vật lý cāa một tập tin hay th° mÿc nào đó, nói khác đi là l°u giữ dãy các khái trên đĩa cấp phát cho tập tin l°u dữ liệu hay th° mÿc Có một sáph°¡ng pháp đ°ợc cài đặt
2.1.2.2 Cài đặt bảng phõn phối vựng nhò: a/ Đònh vò liờn ti¿p:
L°u trữ tập tin trên các dãy khái liên tiếp
Ph°¡ng pháp này có 2 °u điểm:
+Dễ dàng thao tác vì toàn bộ tập tin đ°ợc đọc từđĩa bằng thào tác đ¡n giản không cần định vị lại
Ph°¡ng pháp này cũng có 2 khuyết điểm:
+Không linh động, trừ khi biết tr°ớc kích th°ớc tái đa cāa tập tin
+Sự phân mảnh trên đĩa gây lãng phí lớn b/ Đònh vò b¿ng danh sỏch liờn k¿t:
Mọi khỏi đều đ°ợc cấp phỏt, khụng bị lóng phớ trong tr°òng hợp bị phõn mảnh và directory entry chỉ cần chứa địa chỉ cāa khái đầu tiên.
T ậ p tin chia s ẻ
Khi cú nhiều ng°òi sử dÿng cựng làm việc trong 1 đề ỏn, họ cần chia sẻ cỏc tập tin Cỏch chia sẻthụng th°òng là tập tin xuất hiện trong cỏc th° mÿc là nh° nhau, nghĩa là 1 tập tin cú thể liên kết với nhiều th° mÿc khác nhau Để cài đặt đ°ợc, khái đĩa không đ°ợc liệt kê trong th° mÿc mà đ°ợc thay thế bằng một cấu trỳc dữ liệu, th° mÿc sẽ trò tới cấu trỳc này Hờ5 thỏng tạo 1 tập tin mới cú kiểu Link, tập tin mới này chỉ chứa đ°òng dẫn cāa tập tin đ°ợc liờn kết.
Qu ản lý đĩa
Quản lý đĩa đóng vai trò then chốt trong quá trình cài đặt hệ thống tệp vì dữ liệu được lưu trữ trên đĩa Có hai phương pháp lưu trữ chính:
+ Một là chứa tuần tự trên n byte liên tiếp
+ Hai là tập tin đ°ợc chia làm thành từng khái
Cách thứ nhất không hiệu quả khi truy xuất những tập tin có kích th°ớc lớn, do đó hầu hết các hệ tháng tập tinđề dùng khái có kích th°ớc cá đinh.
Đỏ an toàn c ÿ a h ò th ố ng t ậ p tin
Một hệ thúng tập tin bị hòng cũn nguy hiểm hĂn mỏy tớnh bị hòng vỡ những h° hòng trờn thiết bị sẽ it chi phí h¡n là hệ tháng tập tin vì nó ảnh h°áng đến các phần mềm trên đó H¡n nữa hệ thỏng tập tin khụng thể chỏng lại đ°ợc những h° hòng do phần cứng gõy ra, vỡ vậy chỳng phải cài đặt một sá chức năng để bảo vệ
2.1.5.1 Quản lý khối bò hỏng: Đĩa th°òng cú những khỏi bị hòng trong quỏ trỡnh sử dÿng Cú 2 giải phỏp:
+ Phần mềm: hệ thỏng tập tin xõy dựng 1 tập tin chứa cỏc khỏi hòng Kỹ thuật này loại trừ chỳng ra khòi danh sỏch cỏc khỏi trỏng, do đú nú sẽ khụng đ°ợc cấp phỏt cho tập tin.
+ Phần cứng: dựng sector trờn đĩa để l°u giữ danh sỏch cỏc khỏi bị hòng Khi bộ kiểm soỏt thực hiện lần dầu tiờn, nú đọc những khỏi bị hòng và dựng 1 khỏi thừa để l°u giữ Từ đú khụng cho truy cập những khỏi hòng.
Tập tin trên đĩa đ°ợc backup bằng cách chép lại toàn bộ qua 1 đĩa khác, hoặc trên các băng từ
2.1.5.3 Tớnh khụng đổi cÿa hò thống tập tin:
Khi truy xuất 1 tập tin, trong quá trình thực hiện, nếu có xảy ra những sự cá làm hệ tháng ngừng hoạt động đột ngột, lúc đó hàng loạt thông tin ch°a đ°ợc cập nhật lên đĩa Vì vậy mỗi lần khòi động, hệ thỏng sẹ thực hiện việc kiểm tra trờn hai phần khỏi và tập tin Việc kiểm tra thực hiện, khi phỏt hiện ra lỗi sẽ tiến hành sửa chữa cho cỏc tr°òng hợp cÿ thể.
B ả n ghi và kh ố i
B ả n ghi logic và b ả n ghi v ậ t lý
Một trong những h°ớng tiếp cận trung tâm nhằm tổ chức quản lý bộ nhớ 1 cách hiệu quả là đ°a ra khỏi niệm khụng gian địa chỉ đ°ợc xõy dựng trờn khụng gian nhớ võt lý Việc tỏch ròi 2 không gian này giúp HĐH dễ dàng xây dựng các c¡ chế và chiến l°ợc quản lý bộ nhớ hữu hiệu.
+ Địa chỉ logic: còn gọi là địa chỉ ảo, tất cả các địa chỉ do bộ xử lý tạo ra.
+ Địa chỉ vật lý: là địa chỉ thực tế mà trình quản lý bộ nhớ nhìn thấy và thao tác
+ Không gian địa chỉ: là tập hợo tất cả các địa chỉ ảo phát sinh bái 1 ch°¡ng trình.
+ Không gian vật lý: là tập hợp tất cả các địa chỉ vật lý t°¡ng ứng với các địa chỉ ảo Địa chỉ ảo và vật lý là nh° nhau trong ph°Ăng thức kết buộc địa chỉ vào thòi điểm biờn dịch cũng nh° vào thòi điểm nạp Tuy nhiờn cú sự khỏc biệt giữa địa chỉ ảo và vật lý trong ph°Ăng thức kết buộc vào thòi điểm xử lý.
MMU (memory-management unit) là một c¡ chế phần cứng đ°ợc sử dÿng để thực hiện chuyển đổi địa chỉ ảo thành địa chỉ vật lý vào thòi điểm xử lý.
Ch°Ăng trỡnh cāa ng°òi sử dÿng chỉ thao tỏc trờn cỏc địa chỉ ảo, khụng bao giò nhỡn thấy các địa chỉ vật lý Địa chỉ thực sự ứng với vị trí cāa dữ liệu trong bộ nhớ chỉ đ°ợc xác định khi thực hiện truy xuất đến dữ liệu.
Kh ố i (block)
Thụng th°òng mỗi tập tin th°òng đ°ợc l°u trờn 1 sỏ khỏi VD: 1 đĩa cú 32768 byte trờn 1 track, thòi gian quay là 16.67 msec, thòi gian tỡm kiếm trung bỡnh là 30msec thỡ thòi gian tớnh bằng msec để đọc 1 khái kích th°ớc kbyte là:
Từ đó tháng kê đ°ợc kích th°ớc khái thích hợp phải < 2k.
Thụng th°òng kớch th°ớc khỏi là 512, 1k hay 2k
Mỗi nút trong danh sách liên kết là một khái chứa 1 bảng gãm các sá hiệu khái tráng, phần tử cuái cùng cāa bảng l°u sá hiệu khái tiếp theo trong danh sách
VD: Khái đầu tiên trong danh sách là khái 2 Trong khái 2 l°u các sá 75, 53, 70, 59 là các sá hiệu khái tráng, khái 3 là khái chứa bảng sá hiệu khái tráng tiếp theo&HĐH chỉ cần biết sá hiệu đầu tiên cāa ds liên kết.
ĐiÁ u khi ển buffer(điÁ u khi ển phũng đò m)
Phũng đò m trung chuy ể n
Là phũng đệm tạm thòi l°u trữ cỏc phộp vào ra
Phòng đệm này có 2 loại:
+ Phòng đệm vào chỉ dùng để nhập thông tin Trong hệ tháng sẽ có lệnh để đ°a thông tin vào phòng đệm (đọc vật lý)
Khi gặp chỉ thị đọc (read), thông tin sẽ đ°ợc tách và chuyển từ phòng đệm vào các địa chỉ t°¡ng ứng trong ch°¡ng trình ứng dÿng Nh° vậy, mỗi giá trị đ°ợc l°u trữ 2 n¡i trong bộ nhớ
(1 á phòng đệm và 1 á vùng bộ nhớ trong ch°¡ng trình ứng dÿng) Khi giá trị cuái cùng cāa phòng đệm vào đ°ợc lấy ra thì phòng đệm đ°ợc giải phóng (rỗng) và hệ tháng đ°a thông tin mới vào phũng đệm trong thòi gian ngắn nhất cú thể Để giảm thòi gian chò đợi, hệ thỏng cú thể tổ chức nhiều phũng đệm vào, khi hết thụng tin á 1 phòng đệm, hệ tháng sẽ chuyển sang phòng đệm khác
+ Phòng đệm ra chỉ ghi thông tin Trong hệ tháng có lệnh để giải phóng phòng đệm (ghi vật lý) Khi có chỉ thị ghi (write), thông tin đ°ợc đ°a vào phòng đệm Khi phòng đệm ra đầy, hệ tháng sẽ đ°a thông tin ra thiết bị ngoại vi Hệ tháng cũng có thể tổ chức nhiều phòng đệm ra ¯u điểm:
+ Có hệ tháng song song cao vì tác độ giải phòng vùng đệm lớn
+ Có tính chất đa năng, thích ứng với mọi ph°¡ng pháp truy cập
+ Tỏn thòi gian để trao đổi trong bộ nhớ buffer.
Phũng đò m x ử lý
Thông tin đ°ợc xử lý ngay trong phòng đệm không ghi lại vào n¡i khác trong bộ nhớ ¯u điểm:
+ Khụng mất thòi gian chuyển thụng tin trong bộ nhớ trong, thớch hợp khi cần kớch th°ớc bản ghi dữ liệu lớn
+ Tính đa năng không cao
+ Hệ sá song song thấp.
Phũng đò m vũng trũn
Loại này th°òng cú 3 phũng đệm Sau 1 khoảng thòi gian vai trũ cāa 3 phũng đệm thay đổi cho nhau ¯u điểm:
+ Buffer địa chỉ cāa hệ tháng Đọc - Ghi – Xử lý
+ Có sự đãng bộ cāa Đọc – Ghi - Xừ lý (thực hiện song song)
+ Th°òng ỏp dÿng cho hệ cĂ sỏ dữ liệu và hữu dÿng nhất khi l°ợng thụng tin vào bằng l°ợng thông tin ra.
Quy trình chung điÁ u khi ể n nh ậ p-xu ấ t
Ph ầ n c ā ng nh ậ p/xu ấ t
Các máy tính điều hành nhiều loại thiết bị Hầu hết chúng thuộc các chāng loại phổ biến nh° thiết bị l°u trữ (đĩa, băng từ), thiết bị truyền (card mạng, modem) và thiết bị giao diện ng°òi dùng (màn hình, bàn phím, chuột),
Một thiết bị giao tiếp với một hệ tháng máy tính bằng cách gái các tín hiệu qua dây cáp hay thậm chí qua không khí Các thiết bị giao tiếp với máy bằng một điểm nái kết (cổng-port) nh° cổng tuần tự Nếu một hay nhiều thiết bị dùng một tập hợp dây dẫn, nái kết đ°ợc gọi là bus Một bus là một tập hợp dây dẫn và giao thức đ°ợc định nghĩa chặt chẽ để xác định tập hợp thông điệp có thể đ°ợc gái qua dây Trong thuật ngữ điện tử, các thông điệp đ°ợc truyền bái các mẫu điện thế điện tử đ°ợc ỏp dÿng tới cỏc dõy dẫn với thòi gian đ°ợc xỏc định Khi thiết bị A cú một cỏp gán vào thiết bị B, thiết bị B có một cáp gán vào thiết bị C và thiết bị C gán vào một cổng máy tớnh, sự sắp xếp này đ°ợc gọi là chuỗi nỏi tiếp Một chuỗi nỏi tiếp th°òng điều hành nh° một bus
Giao thức hoàn chỉnh cho việc giao tiếp giữa máy tính và bộ điều khiển rất phức tạp nh°ng ký hiệu bắt tay (handshaking) là đ¡n giản Giả sử rằng 2 bits đ°ợc dùng để hợp tác trong mái quan hệng°òi sản xuất-ng°òi tiờu thÿ giữa bộđiều khiển và mỏy chā Bộđiều khiển hiển thị trạng thỏi cāa nó thông qua bit bận (busy bit) trong thanh ghi trạng thái Bộ điều khiển đặt bit bận khi nó đang làm việc và xoá bit bận khi nó sẳn sàng nhận lệnh tiếp theo Máy tính ra tín hiệu mong muán bằng bit sẳn sàng nhận lệnh (command-ready bit) trong thanh ghi lệnh Máy tính thiết lập bit sẳn sàng nhận lệnh khi một lệnh sẳn dùng cho bộ điều khiển thực thi Thí dÿ, máy tính viết dữ liệu xuất thông qua một cổng, hợp tác với bộ điều khiển bằng cách bắt tay nh° sau:
1 Máy tính lặp lại việc đọc bit bận cho tới khi bit này bị xoá
2 Máy tính thiết lập bit viết trong thanh ghi lệnh và viết một byte vào thanh ghi dữ liệu xuất
3 Máy tính đặt bit sẳn sàng nhận lệnh
4 Khi bộ điều khiển nhận thấy rằng bit sẳn sàng nhận lệnh đ°ợc đặt, nó đặt bit bận
5 Bộ điều khiển đọc thanh ghi lệnh và thấy lệnh viết Nó đọc thanh ghi xuất dữ liệu để lấy một byte và thực hiện nhập/xuất tới thiết bị
6 Bộ điều khiển xoá bit sẳn sàng nhận lệnh, xoá bit lỗi trong thanh ghi trạng thái để hiển thị rằng thiết bị nhập/xuất thành công, và xoá bit bận để hiển thị rằng nó đ°ợc kết thúc
Vòng lặp này đ°ợc lặp cho mỗi byte
Bước 1 là máy tính sẽ đợi bộ điều khiển bận rỗi hoặc đang truy cập Nó bị kẹt trong vòng lặp, liên tục đọc thanh ghi trạng thái cho đến khi bận rỗi được xóa Nếu bộ điều khiển và thiết bị phản hồi nhanh chóng, thì phương pháp này hoạt động tốt Tuy nhiên, nếu chờ lâu, máy tính sẽ chuyển sang một tác vụ khác Sau đó, máy tính sẽ biết bộ điều khiển rảnh khi nào? Đối với một số thiết bị, máy tính phải yêu cầu thiết bị trả lời nhanh chóng, nếu không dữ liệu sẽ bị mất Ví dụ: Khi dữ liệu đang được truyền vào cổng tuần tự từ bàn phím, bộ đệm nhỏ trên bộ điều khiển sẽ đầy và dữ liệu sẽ bị mất nếu máy tính chờ quá lâu trước khi đọc lại các byte.
Trong nhiều kiến trúc máy tính, 3 chu kỳ lệnh CPU đā để thăm dò một thiết bị: read một thanh ghi thiết bị, thực hiện phép tính luận lý and để lấy bit trạng thái và tách ra (branch) nếu khác
0 Rõ ràng, thao tác thăm dò c¡ bản là đā Nh°ng thăm dò trá nên không đā khi đ°ợc lặp lại nhiều lần, hiếm khi tìm một thiết bị sẳn sàng phÿc vÿ trong lần thăm dò đầu tiên, trong khi cần dùng CPU để xử lý cho cỏc cụng việc khỏc Trong tr°òng hợp nh° thế, sẽ hiệu quảhĂn để sắp xếp bộ điều khiển phần cứng thông báo cho CPU khi nào thiết bị sẳn sàng phÿc vÿh¡n là yêu cầu CPU lặp lại việc thăm dò cho việc hoàn thành nhập/xuất C¡ chế phần cứng cho phép một thiết bị thông báo tới CPU đ°ợc gọi là ngắt (interrupt)
C¡ chế ngắt c¡ bản làm việc nh° sau: phần cứng CPU có một dây dẫn đ°ợc gọi là dòng yêu cầu ngắt (interrup-request line) mà CPU cảm ứng sau khi thực thi mỗi chỉ thị Khi một CPU phát hiện một bộ điều khiển xác nhận một tín hiệu trên dòng yêu cầu ngắt thì CPU l°u một l°ợng nhò trạng thỏi nh° giỏ trị hiện hành cāa con trò lệnh, và nhảy tới thā tÿc cāa bộ quản lý ngắt (interrupt-handler) tại địa chỉ cá định trong bộ nhớ Bộ quản lý ngắt xác định nguyên nhân gây ra ngắt, thực hiện xử lý cần thiết, thực thi chỉ thị return from interrupt để trả về CPU trạng thái thực thi tr°ớc khi ngắt Chúng ta nói rằng bộ điều khiển thiết bị sinh ra một ngắt bằng cách xác định tín hiệu trên dòng yêu cầu ngắt và bộ quản lý xoá ngắt bằng cách phÿc vÿ thiết bị Hình XI-1 tóm tắt chu kỳ nhập/xuất h°ớng ngắt (interrupt-driven I/O cycle)
2.4.1.3 Truy xuất bỏ nhò trực ti¿p: Đái với một thiết bị thực hiện việc truyền lớn nh° ổ đĩa, nó sẽ lãng phí khi dùng bộ vi xử lý để theo dõi các bit trạng thái và đẩy dữ liệu vào thanh ghi điều khiển từng byte một Nhiều máy tính muán giảm đi gánh nặng cho CPU bằng cách chuyển một sá công việc này tới một bộ điều khiển có mÿc đích đặc biệt đ°ợc gọi là b ộ điề u khi ể n truy xu ấ t b ộ nh ớ tr ự c ti ế p (direct memory-access-DMA) Để khái tạo một thao tác chuyển DMA, máy tính viết một khái lệnh DMA vào bộ nhớ Khỏi này chứa một con trò chỉ tới nguón chuyển, một con trò chỉ tới đớch chuyển và đếm sỏ l°ợng byte đ°ợc chuyển CPU viết địa chỉ cāa khái lệnh này tới bộ điều khiển DMA, sau đó CPU tiếp tÿc làm công việc khác Bộ điều khiển DMA xử lý để điều hành bus bộ nhớ trực tiếp, đặt các địa chỉ trên bus để thực hiện việc chuyển mà không có sự trợ giúp cāa CPU Một bộ điều khiển DMA đ¡n giản là một thành phần chuẩn trong PCs, và bảng nhập/xuất bus chính (bus-mastering I/O boards) để PC th°òng chứa phần cứng DMA tỏc độ cao Quỏ trỡnh này đ°ợc mụ tả trong hỡnh.
Ph ầ n m Á m nh ậ p/xu ấ t
Mÿc tiêu chung cāa thiết bị logic là dể biểu diễn Thiết bị logic đ°ợc tổ chức thành nhiều lớp Lớp d°ới cựng giao tiếp với phần cứng, lớp trờn cựng giao tiếp tỏt, thõn thiện với ng°òi sử dÿng Khái niệm then chát cāa thiết bị logic là độc lập thiết bị, ví dÿ : có thể viết ch°¡ng trình truy xuất file trên đĩa mềm hay đĩa cứng mà không cần phải mô tả lại ch°¡ng trình cho từng loại thiết bị Ngoài ra, thiết bị logic phải có khả năng kiểm soát lỗi Thiết bị logic đ°ợc tổ chức thành bán lớp:
+ Phần mềm hệ điều hành độc lập thiết bị
+ Phần mềm mức ng°òi sử dÿng
Ngắt là một hiện t°ợng phức tạp Nó phải cần đ°ợc che dấu sâu trong hệ điều hành, và một phần ít cāa hệ tháng biết về chúng Cách tát nhất để che dấu chúng là hệđiều hành có mọi tiến trình thực hiện thao tác nhập xuất cho tới khi hoàn tất mới tạo ra một ngắt Tiến trình có thể tự khóa lại bằng cách thực hiện lệnh WAIT theo một biến điều kiện hoặc RECEIVE theo một thông điệp
Khi một ngắt xảy ra, hàm xử lý ngắt khái tạo một tiến trình mới để xửlý ngắt Nó sẽ thực hiện một tín hiệu trên biến điều kiện và gửi những thông điệp đến cho các tiến trình bị khóa Tổng quát, chức năng cāa ngắt là làm cho một tiến trình đang bị khóa đ°ợc thi hành trá lại
Tất cả cácđoạn mãđộc lập thiết bị đều đ°ợc chuyểnđến devicedrivers Mỗi device drivers kiểm soát mỗi loại thiết bị, nh°ng cũng có khi là một tập hợp các thiết bị liên quan mật thiết với nhau
Device drivers phát ra các chỉ thị và kiểm tra xem chỉ thị đó có đ°ợc thực hiện chính xác không Ví dÿ, driver cāa đĩa là phần duy nhất cāa hệ điều hành kiểm soát bộ điều khiển đĩa Nó quản lý sectors, tracks, cylinders, head, chuyển động, interleave, và các thành phần khác giúp cho các thao tác đĩa đ°ợc thực hiện tát
Chức năng cāa device drivers là nhận những yêu cầu trừu t°ợng từ phần mềm nhập/xuất độc lập thiết bị á lớp trên, và giám sát yêu cầu này thực hiện Nếu driver đang rảnh, nó sẽ thực hiện ngay yêu cầu, ng°ợc lại, yêu cầu đó sẽ đ°ợc đ°a vào hàng đợi
Ví dÿ, b°ớcđầu tiên cāa yêu cầu nhập/xuấtđĩa là chuyển từ trừu t°ợng thành cÿ thể Driver cāađĩa phải biết khái nào cầnđọc, kiểm tra sự hoạt động cāa motor đĩa, xác định vị trí cāa đầu đọc đã đúng ch°a v.v&
Để thực hiện nhiệm vụ điều khiển thiết bị, driver thiết bị phải xác định những thao tác mà thiết bị đó cần thực hiện và theo trình tự nào Sau khi xác định được các lệnh cần gửi cho thiết bị, driver thiết bị sẽ bắt đầu thực hiện bằng cách đưa các lệnh đó vào thanh ghi điều khiển của thiết bị Thiết bị có thể tiếp nhận một hoặc nhiều lệnh liên tiếp và sau đó tự động thực hiện mà không cần sự trợ giúp của hệ điều hành Trong khi lệnh đang được thực hiện, có hai trường hợp có thể xảy ra: driver thiết bị phải chờ cho đến khi lệnh được thực hiện xong bằng cách khóa lại chính mình cho đến khi ngắt lệnh phát sinh và mở khóa cho nó; hoặc hệ điều hành chấm dứt lệnh thực hiện mà không chờ đợi, do đó driver thiết bị không cần phải khóa.
Sau khi hệđiều hành hoàn tất việc kiểm tra lỗi và nếu mọi thứđều ổn driver sẽ chuyển dữ liệu cho phần mềm độc lập thiết bị Cuái cùng nó sẽ trả về thông tin về trạng thái hay lỗi cho n¡i gọi và nếu cú một yờu cầu khỏc ỏ hàng đợi, nú sẽ thực hiện tiếp, nếu khụng nú sẽ khúa lại chò đến yêu cầu tiếp theo
2.4.2.3 Phần mÁm nhập/xuất đỏc lập thi¿t bò:
Mặc dù một số phần mềm nhập/xuất mô tả thiết bị, phần lớn các phần mềm này là độc lập với thiết bị Ranh giới chính xác giữa trình điều khiển và phần mềm độc lập với thiết bị là không rõ ràng, vì một số hàm được thực hiện theo kiểu độc lập với thiết bị cũng có thể được thực hiện trên trình điều khiển vì lý do hiệu quả hoặc lý do khác.
Chức năng c¡ bản cāa phần mềm nhập/xuấtđộc lập thiết bị là những chức năng chung cho tất cả cỏc thiết bị và cung cấp một giao tiếp đóng nhất cho phần mềm phạm vi ng°òi sử dÿng.
+ Tr°ớc tiên nó phải có chức năng tạo một ánh xạ giữa thiết bị và một tên hình thức Ví dÿđái với UNIX, tên /dev/tty0 dành riêngđể mô tả I-node cho một file đặc biệt, và I-node này chứa chứa sá thiết bị chính, đ°ợc dùng để xác định driver thích hợp và sá thiết bị phÿ, đ°ợc dùng để xác định các tham sá cho driver để cho biết là đọc hay ghi
+ Thứ hai là bảo vệ thiết bị, là cho phộp hay khụng cho phộp ng°òi sử dÿng truy xuất thiết bị Các hệ điều hành có thể có hay không có chức năng này
+ Thứ ba là cung cấp khái dữ liệu độc lập thiết bị vì ví dÿ những đĩa khác nhau sẽ có kích th°ớc sector khỏc nhau và điều này sẽ gõy khú khăn cho cỏc phần mềm ng°òi sử dÿng ỏ lớp trờn Chức năng này cung cấp các khái dữ liệu logicđộc lập với kích th°ớc sector vật lý.
+ Thứ t° là cung cấp buffer để hỗ trợ cho đãng bộ hóa quá trình hoạtđộng cāa hệ tháng
Ví dÿ buffer cho bàn phím
+ Thứ năm là định vị l°u trữ trên các thiết bị khái
+ Thứ sáu là cấp phát và giải phóng các thiết bị tận hiến
+ Cuái cùng là thông báo lỗi cho lớp bên trên từ các lỗi do device driver báo về
2.4.2.4 Phần mÁm nhập/xuất phạm vi ng°ái sử dāng:
Hầu hết cỏc phần mềm nhập/xuất đều ỏ bờn trong cāa hệ điều hành và một phần nhò cāa chỳng chứa cỏc th° viện liờn kết với ch°Ăng trỡnh cāa ng°òi sử dÿng ngay cả những ch°Ăng trỡnh thi hành bên ngoài hạt nhân
T ổ ch āc l°u trữ d ữ li òu trờn đĩa từ
C ấ u trúc
2.5.1.1 Vật lý: Đĩa từ, bờn trong một ổ đĩa cĂ bao góm cỏc đĩa từ (th°òng đ°ợc làm bằng hợp kim cāa nhôm, đôi khi là thāy tinh, gám)
Con quay, còn đ°ợc biết nh° là một motor quay điện, motor này sẽ kéo theo các đĩa từ quay để đọc/ghi dữ liệu, tỏc độ cāa con quay là tỏc độ cāa đĩa cứng (RPM), th°òng cú 2 tỏc độ với HDD là 5400rpm và 7200rpm, đái với chuẩn SAS có thêm 10k (10000 rpm) và 15k (15000rpm)
Đầu đọc/ghi là thành phần cốt lõi của ổ đĩa, có nhiệm vụ đọc dữ liệu từ đĩa hoặc ghi dữ liệu vào đĩa Thiết bị này bao gồm hai đầu đọc nằm ở mặt trên và dưới của đĩa, gắn trên cánh tay chuyển động (Actuator Arm Assembly) Bảng điều khiển ổ đĩa, tích hợp bên trong thiết bị, cung cấp các đầu nối với hệ thống máy tính (SAS, SATA) và nguồn điện Bảng điều khiển này nhận tín hiệu từ máy tính và điều khiển các bộ phận của ổ cứng như trục quay (Spindle), đầu đọc/ghi và cánh tay chuyển động (Actuator).
Mỗi khi các đầu đọc/ghi từ quay á một vị trí khác nhau trên đĩa từ sẽ tạo ra các vòng tròn khác nhau trên đĩa từ, vòng tròn này đ°ợc gọi là Track
Vòng tròng này không cá định, có thể thay đổi bằng low level-format
Các Track đ°ợc chia thành nhiều phần gọi là sector, mỗi sector chứa 512 byte (các ổ cứng đòi mớiđ°ợc Advanced Format để cú size sector là 4096byte 4kB). Địa chỉ Sector = địa chỉ track + sá sector, sá thứ tự Sector đ°ợc đánh từ trong ra ngoài (từ tâm ra ngoài bán kính)
Tr°ớc đây sá l°ợng các Sector trên toàn bộ Track cāa Platter sẽ giáng nhau, tuy nhiên, từ sau khi sử dÿng ph°¡ng pháp Zoned Bit Recording (ZBR) thì sá l°ợng các Sector cāa các Track sẽ không giáng nhau nữa, chi tiết về ZBR mình sẽ đề cập bên d°ới
(Điểm A là Track cāa ổ cứng Điểm B và C là các Sector Điểm D là Cluster –hình d°ới)
Tập hợp các Sector nái tiếp nhau trên cùng một Track đ°ợc gọi là Cluster và dữ liệu sẽ đ°ợc ghi trên Cluster chứ không ghi trên các Sector riêng lẻ
Cỏch tớnh Cluster phÿ thuộc vào cỏch format (định dạng) ổ cứng, th°òng đỏi với định dạng NTFS cāa Windows mặc định Format là 4kB tức 1 Cluster sẽ phải chứa 4kB mà nếu Sector đ°ợc Format là 512byte 4096/512 = 8 Sector, nh° vậy, trong quá trình ghi dữ liệu, bất cứ dữ liệu nào đ°ợc ghi ổ cứng sẽ tìm Cluster có chứa đā 8 Sector liền kề nhau để ghi các dữ liệu lên, nếu khụng đā 8 Sector sẽ bò trỏng và tỡm đến Cluster tiếp theo, đõy cũng chớnh là nguyờn nhõn gõy phõn mảnh ổ cứng nờn sau một thòi gian sử dÿng cần phải chỏng phõn mảnh để sắp xếp lại dữ liệu
Tập hợp các Track có cùng bán kính á các Platter khác nhau đ°ợc gọi là Cylinder, việc định danh Cylinder để sử dÿng xác định vị trí cāa dữ liệu trong hệ tọa độ CHS (Cylinder-Heads (Tracks)-Sector)
Là ph°¡ng pháp tăng không gian l°u trữ cāa đĩa cứng bằng cách tăng sá l°ợng Sector trên mỗi Track
Tr°ớc đõy, khi l°u trữ dữ liệu trờn đĩa, ng°òi ta định dạng sỏ l°ợng Sector cāa cỏc Track trên đĩa là nh° nhau, tuy nhiên, đễ dàng nhận thấy rằng, càng xa tâm thì chu vi cāa các Track càng lớn, và nếu chỉ sử dÿng sá l°ợng Sector nh° vậy thì sá l°ợng các Bit đ°ợc ghi trên diện tích các Sector sẽ ngày càng ớt => cú thể tạo nhiều Sector hĂn ỏ cỏc Track bờn ngoài, vỡ vậy ng°òi ta thực hiện ZBR
ZBR sẽ chia đĩa thành các vùng (Zone) và trên các Zone này, sá l°ợng Sector sẽ nh° nhau, các Zone gần tâm sẽ có sá Sector ít h¡n các Zone á ngoài.
VD bờn trờn: đĩa đ°ợc chia là 3 Zone (đò, xanh lỏ, trắng) mỗi Zone sỏ l°ợng Sector sẽ khỏc nhau, kích th°ớc cāa Sector cũng thay đổi vì diện tích cāa nó đã khác
Để xỏc định vị trớ cāa dự liệu nằm ỏ đõu, ng°òi ta phải quy °ớc một hệ tọa độ, tr°ớc hệ tọa độ CHS (Cylinder-Heads-Sector) đ°ợc sử dÿng để đánh dấu vị trí cāa dữ liệu,
Nh° đã nêu bên trên, một ổ đĩa cứng bao gãm nhiều Platter bên trong, và tham sá Cylinder nhằm xác định vị trí cāa dữ liệu đ°ợc l°u á Platter nào trong sá tất cả các Platter cāa ổ đĩa (giới hạn từ 0-1023)
Tiếp theo là thông sá Heads, thông sá này cho biết vị trí cāa Heads trên phiến đĩa, mình đã giải thích á trên: mỗi vị trí cāa Heads sẽ tạo ra một Track khác nhau trên bề mặt cāa Platter, chính vì vậy thông sá này cho biết dữ liệu đ°ợc l°u á Track nào (giới hạn 0-
Cuái cùng là vị trí cāa Sector để định vị dữ liệu (giới hạn từ 0-63)
Các con sá này tính trên lý thuyết, thực tế không thể kiếm nổi cái HDD nào có 1024 cái Platter đ°ợc :LOL
Nếu định dạng mỗi Sector chứ 512byte dữ liệu vậy tổng dữ liệu mà CHS hỗ trợ là 1024*255*63*512 = 8,422,686,720 bytes = 7,844 GB, vì vậy để hỗ trợ các hệ tháng l°u trữ lớn, chuẩn LBA ra đòi
Qu ả n lý và b ả o v ò b ỏ nh ò
Nhiệm vÿ cāa quản lý bộ nhớ:
- Tổ chức và quản lý bộ nhớ vật lý
- Tổ chức và quản lý bộ nhớ logic
- Định vị và tái định vị các tiến trình
- Chia sẻ bộ nhớ cho các tiến trình
- Bảo vệ vùng nhớ cāa các tiến trình
Bài toán c¡ bản cāa điều phái bộ nhớ:
Phân bổ vùng nhớ cho chương trình và dữ liệu nhằm đảm bảo hoạt động chính quy, tránh ảnh hưởng lẫn nhau giữa các chương trình đang lưu trú trong bộ nhớ.
- Bảo vệ ch°¡ng trình và dữ liệu không bị xóa hoặc chãng chéo bái những ch°¡ng trình khác
- Sử dÿng bộ nhớ hiệu quả nhất có thểđ°ợc
Vì sao phải quản lý bộ nhớ
Một ch°¡ng trình muán chạy thì phải đ°ợc nạp vào trong bộ nhớ chính
- Quản lý bộ nhớ giúp tái °u hóa hoạt động cāa bộ nhớ
⇒Tái °u hóa sá tiến trình cùng lúc á trong bộ nhớ chính nhằm nâng cao tính đa ch°¡ng
⇒Tận dÿng tái đa bộ nhớ cāa máy tính
Về truyền tháng, liên kết các chỉ thị và dữ liệu tới các địa chỉ có thểđ°ợc thực hiện tại bất cứ b°ớc nào theo cách sau đây:
- Thỏi gian biờn dòch: nếu tại thòi điểm biờn dịch cú thể biết quỏ trỡnh nằm ỏđõu trong bộ nhớ thỡ mó tuyệt đỏi cú thể đ°ợc phỏt sinh Thớ dÿ, nếu biết tr°ớc quỏ trỡnh ng°òi dựng nằm tại vị trí R thì mã trình biên dịch đ°ợc phát sinh sẽ bắt đầu tại vị trí đó và má rộng từ đú Nếu tại thòi điểm sau đú, vị trớ bắt đầu thay đổi thỡ sẽ cần biờn dịch lại mó này Cỏc ch°Ăng trỡnh định dạng COM cāa MS-DOS là mó tuyệt đỏi giới hạn tại thòi điểm biờn dịch
Điểm nạp cho phép trình biên dịch sinh ra một con trỏ có thể định vị được trong bộ nhớ, ngay cả khi địa điểm của biến dịch đang biên dịch thời điểm đó vẫn chưa được biết Trong trường hợp này, liên kết cuối cùng sẽ được hoãn lại cho đến thời điểm tải Nếu địa chỉ bắt đầu thay đổi, chúng ta chỉ cần tải lại lệnh xây dựng để hợp nhất giá trị đã thay đổi này.
- Thỏi gian thực thi: nếu quỏ trỡnh cú thể đ°ợc di chuyển trong thòi gian thực thi từ một phân đoạn bộ nhớ này tới một phân đoạn bộ nhớ khác thì việc liên kết phải bị trì hoãn cho tới thòi gian chạy Phần cứng đặc biệt phải sẳn dựng cho cĂ chế này để thực hiện cụng việc Hầu hết những hệ điều hành này dùng ph°¡ng pháp này.
ĐiÁ u khi ể n b ỏ nh ò liờn t ā c
Gi ò i thi ò u
Bộ nhớ chớnh phải cung cấp cho cả hệ điều hành và cỏc quỏ trỡnh ng°òi dựng khỏc nhau
Do đó, chúng ta cần cấp phát những phần khác nhau cāa bộ nhớ chính trong những cách hiệu quả nhất có thể Phần này chúng ta giải thích một ph°¡ng pháp thông dÿng, cấp phát bộ nhớ liên tÿc
Bộ nhớ th°òng đ°ợc phõn chia thành hai phõn khu, một cho hệ điều hành định vị và một cho cỏc quỏ trỡnh ng°òi dựng Chỳng ta cú thểđặt hệđiều hành ỏ bộ nhớ cao hay bộ nhớ thấp Yếu tỏ quan trọng ảnh h°ỏng tới quyết định này là vị trớ cāa vector ngắt Vỡ vector ngắt th°òng ỏ trong bộ nhớ thấp nờn cỏc lập trỡnh viờn th°òng cũng đặt hệ điều hành trong bộ nhớ thấp Do đú, trong giỏo trỡnh này chỳng ta sẽ thảo luận chỉtr°òng hợp hệđiều hành định vị trong bộ nhớ thấp Phỏt triển cāa tr°òng hợp khỏc là t°Ăng tự
Chỳng ta th°òng muỏn nhiều quỏ trỡnh ng°òi dựng định vị trong bộ nhớ tại cựng thòi điểm
Để cấp phát bộ nhớ tráng tới những quá trình á trong hàng đợi nhập đang chờ được mang vào bộ nhớ, cần xem xét cách cấp phát bộ nhớ liên tục Với phương pháp này, mỗi quá trình sẽ được chứa trong một phần bộ nhớ liên tục.
Trước khi thảo luận cấp phát bộ nhớ, chúng ta cần đề cập đến bảo vệ bộ nhớ - bảo vệ hệ điều hành khỏi các chương trình trái phép và bảo vệ các chương trình khỏi chương trình khác Chúng ta có thể cung cấp sự bảo vệ này bằng cách sử dụng thanh ghi tái định vị.
Thanh ghi tỏi định vị chứa giỏ trị địa chỉ vật lý nhò nhất; thanh ghi giới hạn chứa dóy cỏc định chỉ luận lý (thí dÿ: tái định vị = 100040 và giới hạn = 74600) Với các thanh ghi tái định vị và giới hạn, mỗi địa chỉ luận lý phải ít h¡n thanh ghi giới hạn; MMU ánh xạ địa chỉ luận lý động bằng cách cộng giá trị trong thanh ghi tái định vị Địa chỉ đ°ợc tái định vị này đ°ợc gửi tới bộ nhớ
H ò tr ÿ ph ầ n c āng cho cỏc thanh ghi tỏi đò nh v ò và cỏc gi ò i h ạ n
Khi bộ định thòi CPU chọn một quỏ trỡnh thực thi, bộ phõn phỏt nạp thanh ghi tỏi định vị và giới hạn với các giá trịđúng nh° một phần cāa chuyển đổi ngữ cảnh Vì mọi địa chỉđ°ợc phát sinh bái CPU đ°ợc kiểm tra dựa trên các thanh ghi này, chúng ta có thể bảo vệ hệ điều hành và cỏc ch°Ăng trỡnh và dữ liệu ng°òi dựng khỏc từ việc sửa đổi bỏi quỏ trỡnh đang chạy này
Sử dụng thanh ghi tái định vị cho phép kích thước hệ điều hành thay đổi động Điều này đặc biệt hữu ích trong các trường hợp hệ điều hành chứa mã và vùng đệm cho trình điều khiển thiết bị Khi trình điều khiển thiết bị ít được sử dụng, việc giữ chúng trong bộ nhớ có thể lãng phí không gian Do đó, hệ điều hành có thể sử dụng thanh ghi để tải và dỡ mã của trình điều khiển thiết bị khi cần, giúp thay đổi kích thước hệ điều hành linh hoạt trong quá trình thực thi.
C ấp phát tĩnh
3.2.2.1 Hò thống đĂn ch°Ăng:
Trong ph°¡ng pháp này bộ nhớđ°ợc chia sẻ cho hệđiều hành và một ch°¡ng trình duy nhất cāa ng°òi sử dÿng Tại một thòi điểm, một phần cāa bộ nhớ sẽ do hệ điều hành chiếm giữ, phần cũn lại thuộc về quỏ trỡnh ng°òi dựng duy nhất trong hệ thỏng Quỏ trỡnh này đ°ợc toàn quyền sử dÿng bộ nhớ dành cho nó
Khi bộnhớ đ°ợc tổ chức theo cỏch thức này, chỉ cú thể xử lý một ch°Ăng trỡnh tại một thòi điểm Quan sát hoạt động cāa các quá trình, có thể nhận thấy rất nhiều tiến trình trải qua phần lớn thòi gian để chò cỏc thao tỏc nhập/xuất hoàn thành Trong suỏt thòi gian này, CPU ỏ trạng thỏi rỗi Trong tr°òng hợp nh° thế, hệ thỏng đĂn ch°Ăng khụng cho phộp sử dÿng hiệu quả CPU Ngoài ra, sự đĂn ch°Ăng khụng cho phộp nhiều ng°òi sử dÿng làm việc đóng thòi theo cĂ chế t°Ăng tỏc Để nâng cao hiệu suất sử dÿng CPU, cần cho phép chế độ đa ch°¡ng mà trong đó các quá trình chia sẻ CPU với nhau để hoạt động đãng hành.
3.2.2.2 Hò thống đa ch°Ăng:
Một trong những phương pháp đơn giản nhất để cấp phát bộ nhớ là chia bộ nhớ thành những phân khu có kích thước cố định Phương pháp này giới hạn cấp độ đa chương bởi số lượng phân khu có sẵn Trong phương pháp đa phân khu, khi một phân khu rảnh, một tiến trình sẽ được chọn từ hàng đợi nhập và nạp vào phân khu trống Sau khi tiến trình hoàn tất, phân khu đó sẽ sẵn sàng phục vụ một tiến trình khác Có hai cách tiếp cận để tổ chức hàng đợi:
Sử dụng nhiều hàng đợi: Mỗi phân khu sẽ có một hàng đợi tương ứng Khi một quá trình mới được tạo ra, nó đưa vào hàng đợi của phân khu có kích thước nhỏ nhất thỏa nhu cầu chứa nó Cách tổ chức này có khuyết điểm trong trường hợp các hàng đợi của một số phân khu trống trong khi hàng đợi ở các phân khu khác lại đầy, khiến quá trình trong những hàng đợi phải chờ được cấp phát bộ nhớ.
• Sử dāng mát hàng đÿi: tất cả các quá trình đ°ợc đặt trong hàng đợi duy nhất (hình VII-7b)
Khi có một phân khu tráng, quá trình đầu tiên trong hàng đợi có kích th°ớc phù hợp sẽđ°ợc đặt vào phân khu và cho xử lý
Khi sử dÿng giải thuật này ng°òi ta muỏn trỏnh sự hao phớ một phõn khu lớn cho một cụng việc nhò, nh°ng lại xảy ra bất bỡnh đẳng, bất lợi đỏi với cỏc cụng việc nhò Để giải quyết ng°òi ta thờm vào qui luật là một cụng việc sẽ khụng bị bò qua nữa nếu nú đó bị bò qua k lần qui định Mỗi lần một cụng việc bị bò qua nú đ°ợc đỏnh dấu một điểm Khi đạt đ°ợc sỏ điểm qui định, nú sẽ khụng bị bò qua nữa, sẽ đ°ợc nạp vào và thực hiện mặc dầu cú thể trờn một phõn khu lớn hĂn Ph°¡ng pháp này ban đầu đ°ợc sử dÿng bái hệ điều hành IBM OS/360, nó đ°ợc gọi là MFT (Multiprogramming with Fixed number of Tasks) Hiện nay nó không còn sử dÿng nữa.
C ấp phát đá ng
C¡ chế này là tổng quát cāa c¡ chế phân khu cá định Nó đ°ợc dùng chā yếu trong môi tr°òng xử lý theo lụ Nhiều ý t°ỏng đ°ợc trỡnh bày ỏđõy cũng cú thể ỏp dÿng tới mụi tr°òng chia thòi mà trong đú phõn đoạn thuần đ°ợc dựng cho việc quản lý bộ nhớ
Hệ điều hành giữ một bảng hiển thị những phần nào cāa bộ nhớ là sẳn dùng và phần nào đang bận Ban đầu, tất cả bộ nhớ là sẳn dựng cho quỏ trỡnh ng°òi dựng, và đ°ợc xem nh° một khỏi lớn bộ nhớ sẳn dùng hay một lỗ Khi một quá trình đến và cần bộ nhớ, chúng ta tìm kiếm một lỗ tráng đā lớn cho quá trình này Nếu chúng ta tìm thấy, chúng ta cấp phát chỉ phần bộ nhớ nhiều bằng l°ợng đ°ợc yêu cầu, phần còn lại sẳn dùng để thoả mãn những yêu cầu t°¡ng lai
Khi các quá trình đi vào hệ tháng, chúng đ°ợc đặt vào hàng đợi nhập Hệđiều hành xem xét yêu cầu bộ nhớ cāa mỗi quá trình và l°ợng không gian bộ nhớ sẳn có đểxác định các quá trình nào đ°ợc cấp phát bộ nhớ Khi một quá trình đ°ợc cấp không gian, nó đ°ợc nạp vào bộ nhớ và sau đó nó có thể cạnh tranh CPU Khi một quá trình kết thúc, nó giải phóng bộ nhớ cāa nó, sau đó hệđiều hành có thểđặt một quá trình khác từhàng đợi nhập
Tại bất cứ thòi điểm đ°ợc cho, chỳng ta cú một danh sỏch kớch th°ớc khỏi trỏng và hàng đợi nhập Hệ điều hành cú thể xếp hàng đợi nhập dựa theo giải thuật định thòi Bộ nhớ đ°ợc cấp phát tới quá trình cho đến khi các yêu cầu bộ nhớ cāa quá trình kế tiếp không thể đ°ợc thoả; không cú khỏi bộ nhớ trỏng (hay lỗ) đā lớn để quản lý quỏ trỡnh đú Sau đú, hệ điều hành cú thể chò cho đến khi khái đā lớn sẳn dùng hay nó có thể di chuyển xuáng hàng đợi nhập để xem các yêu cầu bộ nhớ nhò hĂn cāa cỏc quỏ trỡnh khỏc cú thể đ°ợc thoả hay khụng
Thông thường, một tập hợp các lỗ kích thước khác nhau được phân bổ khắp bộ nhớ tại bất cứ thời điểm nào Khi một quá trình đến và yêu cầu bộ nhớ, hệ thống tìm trong tập hợp này một lỗ trống đủ lớn cho quá trình này Nếu lỗ trống quá lớn, nó được chia làm hai: một phần được cấp tới quá trình đến; phần còn lại được trả về tập hợp các lỗ Nếu lỗ mới nằm kề với các lỗ khác, các lỗ nằm kề này được gộp lại để tạo thành một lỗ lớn hơn Tại thời điểm này, hệ thống cần kiểm tra xem quá trình nào đang chờ bộ nhớ và bộ nhớ trống mới hay bộ nhớ vừa được kết hợp lại có thể thỏa yêu cầu của bất cứ quá trình đang chờ này không.
Thā tÿc này là một tr°òng hợp đặc biệt cāa vấn đÁ cấp phỏt l°u trữđỏng là làm cỏch nào để thoả mãn một yêu cầu có kích th°ớc n từ danh sách lỗ tráng Có hai giải pháp chā yếu cho vấn đề này
1) Quản lý b¿ng bản đồ bit:
Bộ nhớđ°ợc chia thành các đ¡n vị cấp phát, mỗi đ¡n vịđ°ợc ánh xạ tới một bit trong bản đã bit (Hình VII-9) Giá trị bit này xác định trạng thái cāa đ¡n vị bộ nhớ đó: 0 đang tự do, 1 đã đ°ợc cấp phát Khi cần nạp một quá trình có kích th°ớc k đ¡n vị, hệ tháng sẽ tìm trong bản đã bit một dãy k bit có giá trị 0
Kích th°ớc cāa đ¡n vị cấp phát là vấn đề lớn trong thiết kế Nếu kích th°ớc đ¡n vị cấp phát nhò sẽ làm tăng kớch th°ớc cāa bản đó bit Ng°ợc lạ, nếu kớch th°ớc đĂn vị cấp phỏt lớn cú thể gây hao phí cho đ¡n vị cấp phát sau cùng Đây là giải pháp đ¡n giản nh°ng thực hiện chậm nên ít đ°ợc dùng
2) Quản lý b¿ng danh sách liên k¿t:
Dùng một danh sách liên kết để quản lý các phân đoạn bộ nhớ đã cấp phát và phân đoạn tự do, một phân đoạn có thể là một quá trình hay một vùng nhớ tráng giữa hai quá trình Danh sách liên kết gãm nhiều mÿc từ liên tiếp Mỗi mÿc từ gãm 1 bit đầu để xác định phân đoạn đó là lỗ tráng (H) hay một quá trình (P), sau đó là 3 từ để chỉ địa chỉ bắt đầu, chiều dài và chỉ điểm tới mÿc kế tiếp Việc sắp xếp các phân đoạn theo địa chỉ hay theo kích th°ớc tuỳ thuộc vào giải thuật quản lý bộ nhớ S¡ đã quản lý bằng danh sách liên kết t°¡ng ứng với s¡ đã quản lý bằng bản đã bit đ°ợc minh hoạ trong hình
3) Tập hợp các lỗ tráng đ°ợc tìm thấy để xác định lỗ nào là tát nhất để cấp phát Các chiến l°ợc first-fit, best-fit, worst-fit là những chiến l°ợc phổ biến nhất đ°ợc dùng để chọn một lỗ tráng từ tập hợp các lỗ tráng
First-fit: cấp phát lỗ tráng đầu tiên đā lớn Tìm kiếm có thể bắt đầu tại đầu tập hợp các lỗ tráng hay tại điểm kết thúc cāa tìm kiếm first-fit tr°ớc đó Chúng ta dừng tìm kiếm ngay khi chúng ta tìm thấy một lỗ tráng đā lớn
Best-fit: cấp phỏt lỗ trỏng nhò nhất đā lớn Chỳng ta phải tỡm toàn bộ danh sỏch, trừ khi danh sỏch đ°ợc xếp thứ tự theo kớch th°ớc Chiến l°ợc này tạo ra lỗ trỏng nhò nhất cũn thừa lại
Worst-fit: cấp phát lỗ tráng lớn nhất Chúng ta phải tìm toàn danh sách trừ khi nó đ°ợc xếp theo thứ tự kích th°ớc Chiến l°ợc này tạo ra lỗ tráng còn lại lớn nhất mà có thể có ớch hĂn lỗ trỏng nhò từ tiếp cận best-fit
Cỏc mụ phòng hiển thị rằng cả first-fit và best-fit là tỏt hĂn worst-fit về việc giảm thòi gian và sử dÿng l°u trữ Giữa first-fit và best-fit không thể xác định rõ chiến l°ợc nào tát h¡n về sử dÿng l°u trữ, nh°ng first-fit có tác độnhanh h¡n.
Tuy nhiên, các giải thuật này gặp phải vấn đề phân mãnh ngoài (external fragmentation) Khi cỏc quỏ trỡnh đ°ợc nạp và đ°ợc xoỏ khòi bộ nhớ, khụng gian bộ nhớ trỏng bị phõn ró thành những mónh nhò Phõn mónh ngoài tón tại khi tổng khụng gian bộ nhớ đā để thoả món một yờu cầu, nh°ng nú khụng liờn tÿc; vựng l°u trữ bị phõn mónh thành một sỏl°ợng lớn cỏc lỗ nhò Vấn đề phõn mónh này cú thể rất lớn Trong tr°òng hợp xấu nhất, chỳng cú thể cú một khỏi bộ nhớ tráng nằm giữa mỗi hai quá trình Nếu tất cả bộ nhớ này nằm trong một khái tráng lớn, chúng ta có thể chạy nhiều quá trình h¡n.
Qu ả n lý b ỏ nh ò r ò i
Sau một thòi gian hoạt động, cỏc vựng trỏng nằm rải rỏc khắp nĂi (phõn mảnh) gõy ra hiện t°ợng thiếu bộ nhớ -> Cần phải bá trí lại bộ nhớ
Phân mãnh bộ nhớ có thể là phân mãnh trong hoặc phân mãnh ngoài Xét c¡ chế cấp phát nhiều phân khu với một lỗ tráng có kích th°ớc 18,464 bytes Giả sử rằng quá trình tiếp theo yêu cầu 18,462 bytes Nếu chúng ta cấp phát chính xác khái đ°ợc yêu cầu, chúng ta để lại một lỗ tráng có kích th°ớc 2 bytes Chi phí để giữ vết cāa lỗ này sẽ lớn h¡n kích th°ớc cāa lỗ tráng Tiếp cận thụng th°òng là chia bộ nhớ vật lý thành những khỏi cú kớch th°ớc cỏ định, và cấp phỏt bộ nhớ dựa theo đ¡n vị cāa kích th°ớc khái Với tiếp cận này, bộ nhớ đ°ợc cấp phát tới một quá trình có thể là lớn h¡n một chút so với khái đ°ợc yêu cầu Sự chênh lệnh giữa hai sá này là phân mãnh trong-bộ nhớ bị phân mãnh trong đái với một phân khu thì không thể đ°ợc dùng.
Một giải pháp đái với phân mãnh ngoài là kết lại thành khái (compaction) Mÿc tiêu là di chuyển nội dung bộ nhớ để đặt tất cả bộ nhớ tráng với nhau trong một khái lớn Kết khái không phải luụn thực hiện đ°ợc Nếu việc tỏi định vị là tĩnh và đ°ợc thực hiện tại thòi điểm hợp dịch và nạp thì việc kết khái là không thể thực hiện đ°ợc Kết khái chỉ có thể thực hiện đ°ợc chỉ nếu tái định vị là động và đ°ợc thực hiện tại thòi điểm thực thi Nếu địa chỉ đ°ợc tỏi định vị động, tỏi định vị yêu cầu chỉ di chuyển ch°¡ng trình và dữ liệu, sau đó thay đổi thanh ghi nền để phản ánh địa chỉ nền mới Khi kết khái là có thể, chúng ta phải xác định chi phí cāa nó Giải thuật kết khái đ¡n giản nhất là di chuyển tất cả quá trình tới cuái bộ nhớ; tất cả lỗ tráng di chuyển theo h°ớng ng°ợc lại, tạo ra một lỗ tráng lớn cāa bộ nhớ sẳn dùng C¡ chế này có thể đắt
Một giải pháp khác cho vấn đề phân mãnh ngoài là cho phép không gian địa chỉ luận lý cāa một quá trình là không liên tÿc, do đó cho phép một quá trình đ°ợc cấp phát bộ nhớ vật lý bất cứ đâu sau khi sẳn dùng Hai kỹ thuật bù trừ để đạt giải pháp này là phân trang và phân đoạn
3.3 ĐiÁu khiển bỏ nhò giỏn đoạn:
T ổ ch āc gián đoạ n
Nh° đó biết, với hệ điều hành hoạt động theo chế độ đa ng°òi dựng, tại cựng một thòi điểm cú nhiều ng°òi cựng làm việc với mỏy: tón tại nhiều ch°Ăng trỡnh đang cú mặt trong bộ nhớ trong để làm việc và nói chung thì sá ch°¡ng trình này không giảm đi nh° đã xét theo chế độ mẻ Vì bộ nhớ trong là rất hạn chế, cú nhiều ng°òi dựng (do vậy cú nhiều ch°Ăng trỡnh ng°òi dựng đang ỏ trong bộ nhớ trong) và ch°Ăng trỡnh ng°òi dựng cú độ dài khụng thể giới hạn tr°ớc và vỡ vậy, khụng phải toàn bộ ch°Ăng trỡnh ng°òi dựng nào cũng phải trong bộ nhớ trong: một bộ phận nằm á bộ nhớ trong và bộ phận còn lại nằm á bộ nhớ ngoài Để liên kết các bộ phận nói trên, không thể sử dÿng địa chỉ t°¡ng đái nh° chế độ overlay trong phân phái liên tÿc mà các bộ phận này phải tháng nhất với nhau về hệ tháng địa chỉ, các lệnh quy chiếu đến các địa chỉ tháng nhất đó Nh° vậy, với một ch°Ăng trỡnh ng°òi dựng, cỏc địa chỉ thuộc vào khụng gian địa chỉ thực và khụng gian địa chỉ ảo
Bộ nhớ trong đ°ợc địa chỉ hóa (bằng sá, bắt đầu là địa chỉ 0) và CPU trực tiếp thao tác lấy và ghi bộ nhớ đái với những địa chỉ thuộc bộ nhớ trong một tập hợp nào đó; tập hợp các địa chỉ nói trên đ°ợc gọi là không gian địa chỉ thực Lực l°ợng cāa không gian địa chỉ thực luôn đ°ợc xác định tr°ớc và gắn với máy.
Trong lập trình hệ thống, bộ nhớ được truy cập thông qua tập hợp tên logic, cho phép tên logic được biểu thị bằng ký hiệu thay vì địa chỉ vật lý thực Địa chỉ được biểu thị bằng tên trong không gian tên Chương trình được viết như một thể thống nhất, thể hiện mối liên hệ giữa các tên này Tập hợp tên được sử dụng không được xác định trước và có thể mở rộng hơn địa chỉ vật lý khả dụng trong bộ nhớ Đối với nhiều lập trình viên, "tên" không phải là "vị trí cố định" Tuy nhiên, việc đặt tên của các lập trình viên khác nhau là độc lập, vì thế hệ hệ thống cho phép không gian tên được sử dụng trở nên "vô hạn".
Hệ tháng ch°¡ng trình cần phải định vị đ°ợc F(R i ) Nếu một sá thể hiện cāa cùng loại tài nguyên đ°ợc yêu cầu, thì một yêu cầu cho tất cả thể hiện phải đ°ợc cấp phát Thí dÿ, sử dÿng hàm đ°ợc định nghĩa tr°ớc đó, một quá trình muán dùng ổ băng từ và máy in tại cùng một lúc tr°ớc tiên phải yêu cầu ổbăng từvà sau đó yêu cầu máy in
Nói một cách khác, chúng ta yêu cầu rằng, bất cứ khi nào một quá trình yêu cầu một thể hiện cāa loại tài nguyên R j , nó giải phóng bất cứ tài nguyên R i sao cho F(R i ) g F(R j )
Nếu có hai giao thức đ°ợc dùng thì điều kiện tãn tại chu trình không thể xảy ra Chúng ta có thể giải thích điều này bằng cách cho rằng tãn tại chu trình trong đã thị cấp phát tài nguyên tãn tại Gọi tập hợp các quá trình chứa tãn tại chu trình trong đã thị cấp phát tài nguyên là {P 0 , P 1 , & ,
P n }, ỏ đõy P i đang chò một tài nguyờn R i , mà R i đ°ợc giữ bỏi quỏ trỡnh P i+1 Vỡ sau đú quỏ trỡnh
P i+1 đang giữ tài nguyên R i trong khi yêu cầu tài nguyên R i+1 , nên chúng ta có F(R i ) < F(R i+1 ) cho tất cải Nh°ng điều kiện này có nghĩa là F(R 0 ) < F(R
0) Bằng qui tắc bắt cầu F(R0) < F(R
0), điều này là khụng thể Do đú, khụng thể cú chò chu trỡnh
Chú ý rằng hàm F nên đ°ợc định nghĩa dựa theo thứ tự tự nhiên cāa việc sử dÿng tài nguyên trong hệ thỏng Thớ dÿ, vỡ ổbăng từth°òng đ°ợc yờu cầu tr°ớc mỏy in nờn cú thể hợp lý đểđịnh nghĩa F( ổ băng từ) < F(máy in)
4.4.3.2 Tránh b¿ tắc: a/ Trạng thái an toàn:
Một trạng thái là an toàn nếu hệ tháng có thể cấp phát các tài nguyên tới mỗi quá trình trong một vài thứ tự và vẫn tránh deadlock Hay nói cách khác, một hệ tháng á trong trạng thái an toàn chỉ nếu á đó tãn tại một thứ tự an toàn Thứ tự cāa các quá trình
là một thứ tự an toàn cho trạng thái cấp phát hiện hành nếu đái với mỗi thứ tự P i , các tài nguyên mà P i yêu cầu vẫn có thểđ°ợc thoả mãn bái tài nguyên hiện có cộng với các tài nguyên đ°ợc giữ bái tất cả
P j , với j