Giáo trình môn Hệ điều hành
Hệ điều hành là một chương trình hay một hệ chương trình hoạt động giữa người
sử dụng (user) và phần cứng của máy tính. Mục tiêu của hệ điều hành là cung cấp một
môi trường để người sử dụng có thể thi hành các chương trình. Nó làm cho máy tính dể
sử dụng hơn, thuận lợi hơn và hiệu quả hơn.
Hệ điều hành là một phần quan trọng của hầu hết các hệ thống máy tính. Một hệ
thống máy tính thường được chia làm bốn phần chính: phần cứng, hệ điều hành, các
chương trình ứng dụng và người sử dụng.
Phần cứng bao gồm CPU, bộ nhớ, các thiết bị nhập xuất, đây là những tài nguyên
của máy tính.
Chương trình ứng dụng như các chương trình dịch, hệ thống cơ sở dữ liệu, các
trò chơi, và các chương trình thương mại. Các chương trình này sử dụng tài nguyên của
máy tính để giải quyết các yêu cầu của người sử dụng.
Hệ điều hành điều khiển và phối hợp việc sử dụng phần cứng cho những ứng dụng
khác nhau của nhiều người sử dụng khác nhau. Hệ điều hành cung cấp một môi trường
mà các chương trình có thể làm việc hữu hiệu trên đó.
Người dùng: là người sử dụng máy
Hệ điều hành có thể được coi như là bộ phân phối tài nguyên của máy tính. Nhiều
tài nguyên của máy tính như thời gian sử dụng CPU, vùng bộ nhớ, vùng lưu trữ tập tin,Bài 1 Tổng quan về hệ điều hành
Trang 15
thiết bị nhập xuất v.v được các chương trình yêu cầu để giải quyết vấn đề. Hệ điều
hành hoạt động như một bộ quản lý các tài nguyên và phân phối chúng cho các chương
trình và người sử dụng khi cần thiết. Do có rất nhiều yêu cầu, hệ điều hành phải giải
quyết vấn đề tranh chấp và phải quyết định cấp phát tài nguyên cho những yêu cầu theo
thứ tự nào để hoạt động của máy tính là hiệu quả nhất. Một hệ điều hành cũng có thể
được coi như là một chương trình kiểm soát việc sử dụng máy tính, đặc biệt là các thiết
bị nhập xuất.
Tuy nhiên, nhìn chung chưa có định nghĩa nào là hoàn hảo về hệ điều hành. Hệ
điều hành tồn tại để giải quyết các vấn đề sử dụng hệ thống máy tính. Mục tiêu cơ bản
của nó là giúp cho việc thi hành các chương trình dễ dàng hơn. Mục tiêu thứ hai là hỗ
trợ cho các thao tác trên hệ thống máy tính hiệu quả hơn. Mục tiêu này đặc biệt quan
trọng trong những hệ thống nhiều người dùng và trong những hệ thống lớn (phần cứng
+ quy mô sử dụng). Tuy nhiên hai mục tiêu này cũng có phần tương phản vì vậy lý
thuyết về hệ điều hành tập trung vào việc tối ưu hóa việc sử dụng tài nguyên của máy
tính
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Giáo trình môn Hệ điều hành
ư sau: 98, 183, 37, 122, 14, 124, 65, và 67 Giả sử hiện tại đầu đọc đang ở vị trí 53. Như vậy đầu đọc lần lượt đi qua các khối 53, 98, 183, 37, 122, 14, 124, 65, và 67 như hình sau: Hình 10.7 Phương pháp FCFS b. Lập lịch SSTF (shortest-seek-time-first) Thuật toán này sẽ di chuyển đầu đọc đến các khối cần thiết theo vị trí lần lượt gần với vị trí hiện hành của đầu đọc nhất. Ví dụ: cần đọc các khối như sau: 98, 183, 37, 122, 14, 124, 65, và 67 Giả sử hiện tại đầu đọc đang ở vị trí 53. Như vậy đầu đọc lần lượt đi qua các khối 53, 65, 67, 37, 14, 98, 122, 124 và 183 như hình sau: Giáo trình hệ điều hành Trang 167 Hình 10.8 Phương pháp SSTF Với ví dụ này, thuật toán SSTF làm giảm số khối mà đầu đọc phải di chuyển là 208 khối. c. Lập lịch SCAN Theo thuật toán này, đầu đọc sẽ di chuyển về một phía của đĩa và từ đó di chuyển qua phía kia. Ví dụ: cần đọc các khối như sau: 98, 183, 37, 122, 14, 124, 65, và 67 Giả sử hiện tại đầu đọc đang ở vị trí 53. Như vậy đầu đọc lần lượt đi qua các khối 53, 37, 14, 0, 65, 67, 98, 122, 124 và 183 như hình sau: Hình 10.9 Phương pháp SCAN Thuật toán này còn được gọi là thuật toán thang máy. Hình ảnh thuật toán giống như hình ảnh của một người quét tuyết, hay quét lá. d. Lập lịch C-SCAN Thuật toán này tương tự như thuật toán SCAN, chỉ khác là khi nó di chuyển đến một đầu nào đó của đĩa, nó sẽ lập tức trở về đầu bắt đầu của đĩa. Lấy lại ví dụ trên, khi đó thứ tự truy xuất các khối sẽ là: 53, 65, 67, 98, 122, 124, 183, 199, 0, 14, 37 như hình sau: Giáo trình hệ điều hành Trang 168 Hình 10.10 Phương pháp C-SCAN e. Lập lịch LOOK: Nhận xét rằng cả hai thuật toán lập lịch SCAN và C-SCAN luôn luôn chuyển đầu đọc của đĩa từ đầu này sang đầu kia. Nhưng thông thường thì đầu đọc chỉ chuyển đến khối xa nhất ở mỗi hướng chứ không đến cuối. Do đó SCAN và C-SCAN được chỉnh theo thực tế và gọi là lập lịch LOOK. Như hình sau: Hình 10.11 Phương pháp LOOK Lựa chọn thuật toán lập lịch: Với những thuật toán lập lịch, vấn đề là phải lựa chọn thuật toán nào cho hệ thống. Thuật toán SSTF thì rất thông thường. Thuật toán SCAN và C-SCAN thích hợp cho những hệ thống phải truy xuất dữ liệu khối lượng lớn. Với bất kỳ thuật toán lập lịch nào, điều quan trọng là khối lượng về số và kiểu khối cần truy xuất. Ví dụ, nếu số khối cần truy xuất là liên tục thì FCFS là thuật toán tốt. 3. Quản lý lỗi Đĩa là đối tượng mà khi truy xuất có thể gây nhiều lỗi. Một trong số các lỗi thường gặp là: ❖ Lỗi lập trình: yêu cầu đọc các sector không tồn tại. Giáo trình hệ điều hành Trang 169 Lỗi lập trình xảy ra khi yêu cầu bộ điều khiển tìm kiếm cylinder không tồn tại, đọc sector không tồn tại, dùng đầu đọc không tồn tại, hoặc vận chuyển vào và ra bộ nhớ không tồn tại. Hầu hết các bộ điều khiển kiểm tra các tham số và sẽ báo lỗi nếu không thích hợp. ❖ Lỗi checksum tạm thời: gây ra bởi bụi trên đầu đọc. Bụi tồn tại giữa đầu đọc và bề mặt đĩa sẽ gây ra lỗi đọc. Nếu lỗi tồn tại, khối có thể bị đánh dấu hỏng bởi phần mềm. ❖ Lỗi checksum thường trực: đĩa bị hư vật lý trên các khối. ❖ Lỗi tìm kiếm: ví dụ đầu đọc đến cylinder 7 trong khi đó phải đọc 6. ❖ Lỗi điều khiển: bộ điều khiển từ chối thi hành lệnh. 4. RAM Disks Ý tưởng RAM disk khá đơn giản. Thiết bị khối là phần lưu trữ trung gian với hai lệnh: đọc một khối và ghi một khối. Thông thường những khối này được lưu trữ trên đĩa mềm hoặc đĩa cứng. RAM disk dùng một phần đã định vị trước của bộ nhớ chính để lưu trữ các khối. RAM disk có ưu điểm là cho phép truy xuất nhanh chóng (không phải chờ quay hay tìm kiếm). Như vậy nó thích hợp cho việc lưu trữ những chương trình hay dữ liệu được truy xuất thường xuyên. Hình 10.12 Tổ chức RAM disks Giáo trình hệ điều hành Trang 170 Hình trên mô tả ý tưởng của RAM disk. Một RAM disk được chia làm nhiều khối, số lượng tùy thuộc vào dung lượng của vùng nhớ. Mỗi khối có cùng kích thước và vừa đúng bằng kích thước của khối thực sự trên đĩa. Khi driver nhận được chỉ thị là đọc hoặc ghi một khối, nó sẽ tìm trong bộ nhớ RAM disk vị trí của khối, và thực hiện việc đọc hay ghi trong đó thay vì từ đĩa mềm hay đĩa cứng. Một ứng dụng RAMDisk trên Windows Hình 10.13 Mô hình RAM disk 5. Interleave Bộ điều khiển đọc ghi đĩa phải thực hiện hai chức năng là đọc/ghi dữ liệu và chuyển dữ liệu vào hệ thống. Để thực hiện được đồng bộ hai chức năng này, bộ điều khiển đọc đĩa cung cấp chức năng interleave. Trên đĩa các sector số hiệu liên tiếp nhau không nằm kế bên nhau mà có một khoảng cách nhất định, khoảng cách này được xác định bởi quá trình format đĩa. Hình 10.14 Hoạt động Interleave với 4 banks Ví dụ: giả sử hệ thống chỉ có 17 sector, và interleave được chọn là 4 thì các sector được bố trí theo thứ tự như sau: 1, 14, 10, 6, 2, 15, 11, 7, 3, 16, 12, 8, 4, 17, 13, 9, 5 Cách đọc lần lượt như sau: Giáo trình hệ điều hành Trang 171 Lần 1: 1, 14, 10, 6, 2, 15, 11, 7, 3, 16, 12, 8, 4, 17, 13, 9, 5 Lần 2: 1, 14, 10, 6, 2, 15, 11, 7, 3, 16, 12, 8, 4, 17, 13, 9, 5 Lần 3: 1, 14, 10, 6, 2, 15, 11, 7, 3, 16, 12, 8, 4, 17, 13, 9, 5 Lần 4: 1, 14, 10, 6, 2, 15, 11, 7, 3, 16, 12, 8, 4, 17, 13, 9, 5 Như vậy sau bốn lần thứ tự các sector đọc được vẫn là từ 1 đến 17 Hình 10.15 Thứ tự lắp đầy vào các bank trong interleave với (n=4) V. HỆ THỐNG I/O CHUẨN (TERMINALS) Mọi máy tính đều liên lạc với một hay nhiều terminals. Terminals có rất nhiều dạng khác nhau. Bộ điều khiển terminals ẩn dấu mọi sự khác biệt, vì vậy phần độc lập thiết bị của hệ điều hành và chương trình người sử dụng không cần thiết phải viết lại cho mỗi loại terminal. 1. Phần cứng terminal Dưới quan điểm của hệ điều hành, terminal được chia làm hai loại lớn dựa vào cách liên lạc với hệ điều hành. Loại thứ nhất bao gồm những loại terminal giao tiếp theo chuẩn RS-232 (COM1). Loại thứ hai là những terminal dùng ánh xạ bộ nhớ. Mỗi loại được chia làm nhiều loại nhỏ như hình sau: Giáo trình hệ điều hành Trang 172 Hình 10.16 Các loại Terminals Terminal RS-232 là những thiết bị bao gồm như bàn phím và màn hình. Đây là thiết bị giao tiếp tuần tự, mỗi lần một bit. Những terminals này dùng connector 25-pin, một pin dùng để chuyển dữ liệu, một pin dùng để nhận dữ liệu, một pin là nền, 22 pin còn lại có những chức năng khác nhau, hầu hết thường thường không dùng đến. Để gởi một ký tự cho terminal RS-232, máy tính mỗi lần chuyển một bit, ngoài ra có một bit bắt đầu, và sau đó có 1 hoặc 2 bit kết thúc để giới hạn một ký tự. Thường thường tốc độ vận chuyển là 1200, 2400, 4800, 9600bps. Vì cả máy tính và terminal đều làm việc với ký tự mà phải liên lạc với nhau bằng bit nên hệ thống phải thiết kế bộ chuyển đổi gọi là UART. Bộ phận này được gắn vào các card giao tiếp của RS-232. Hình 10.17 Terminal RS-232 Để in một ký tự, bộ điều khiển terminal ghi một ký tự lên card giao tiếp, sau đó sẽ chuyển cho UART. Terminal RS-232 được chia làm nhiều loại. Dạng đơn giản nhất là terminal hardcopy(printing). Ví dụ các ký tự được nhập vào từ bàn phím và chuyển cho máy tính. Giáo trình hệ điều hành Trang 173 Các ký tự từ máy tính xuất ra máy in. Dạng tương tự như vậy nhưng ký tự được xuất trên màn hình gọi là "glass ttys" do đó nó cũng có chức năng tương tự như trên. Terminals intelligent dùng trong máy tính nhỏ. Điểm khác biệt với loại trên dưới quan điểm hệ điều hành là nó sẽ gữi ký tự ASCII ESC sau những ký tự khác nhau dùng để chuyển cursor đến vị trí bất kỳ trên màn hình, chèn một dòng vào giữa màn hình. Blit là một terminal có bộ xử lý mạnh và một màn hình có 1024x800 điểm giao tiếp với máy tính bằng RS-232. 2. Terminal ánh xạ bộ nhớ Dạng thứ hai của terminal là terminal ánh xạ bộ nhớ. Loại này không giao tiếp với máy tính qua đường serial. Nó là một phần của của hệ thống máy tính. Terminal ánh xạ bộ nhớ giao tiếp bằng một bộ nhớ đặc biệt gọi là video RAM, là một phần của bộ nhớ chính được định vị bởi CPU. Hình 10.18 Terminal ánh xạ bộ nhớ. Trên card video RAM có một chip gọi là bộ điều khiển video. Chip này sẽ lấy thông tin từ video RAM và tạo ra tín hiệu video để điều khiển màn hình. Màn hình tạo những tia điện tử quét từ trên xuống dưới. Thường thường có khoảng từ 200 đến 1200 dòng, trên mỗi dòng có từ 200 đến 1200 điểm. Mỗi điểm được gọi là pixel. Bộ điều khiển tín hiệu sẽ xác định mỗi điểm là sáng hay tối. Màn hình màu sẽ có ba tia là đỏ, lục và xanh. Thông thường màn hình mono xây dựng một ký tự trong một box có chiều rộng là 9 pixel và chiều cao là 14 pixel (bao gồm khoảng trống giữa những ký tự) như vậy sẽ có 25 dòng và mỗi dòng có 80 ký tự. Mỗi khung được vẽ lại từ 45 đến 70 lần trong một giây. Bộ điều khiển video đặt các dòng 80 ký tự vào trong video RAM. Một ví dụ về màn hình ánh xạ ký tự trên máy IBM PC. Một phần bộ nhớ chính bắt đầu từ địa chỉ 0xB000 cho màn hình đơn sắc và 0xB800 cho màn hình màu. Mỗi ký tự trên màn hình chiếm hai bytes trong bộ nhớ. Byte thấp chứa giá trị ASCII của ký tự, Giáo trình hệ điều hành Trang 174 byte cao chứa thuộc tính như màu sắc, nhấp nháy v.v... Màn hình 80x25 sẽ chiếm 4000 bytes bộ nhớ video RAM Hình 10.19 Ánh xạ màn hình. Khi CPU ghi một ký tự vào video RAM, nó xuất hiện trên màn hình theo mỗi lần hiển thị (1/50 giây cho mono, 1/60 cho màu). CPU có thể nạp 4K ảnh màn hình đã được tính trước vào video RAM trong vài phần triệu giây. Với tốc độ 9600 bps, ghi 2000 ký tự vào terminal RS-232 mất khoảng 2083 phần triệu giây. Terminal ánh xạ bộ nhớ cho phép truy xuất rất nhanh. Terminal bit-map tương tự như vậy, ngoại trừ là mọi bit trong video RAM kiểm soát mỗi điểm trên màn hình. Màn hình có 1024x800 pixel cần dùng 100 K bộ nhớ nhưng khó thiết kế font và kích thước cho ký tự. Bàn phím giao tiếp thông qua cổng song song và giao tiếp RS-232. Mỗi khi gõ phím vào, CPU bị ngắt, bộ điều khiển bàn phím xác định kiểu ký tự được đọc từ cổng I/O. Đôi khi bàn phím chỉ cung cấp số hiệu phím, không phải mã ASCII. Trên IBM PC khi gõ phím A mã ký tự 30 được đưa vào thanh ghi I/O. Bộ điều khiển xác định ký tự là chữ hoa hay chữ thường hay là tổ hợp phím. 3. Phần mềm nhập Bàn phím và màn hình hầu như độc lập với thiết bị. Công việc cơ bản của bộ điều khiển bàn phím là tập hợp các dữ liệu nhập từ bàn phím và chuyển cho chương trình của người sử dụng. Khi có một phím được gõ, nó sẽ gây một ngắt, và bộ điều khiển yêu cầu ký tự trong suốt quá trình ngắt này. Nếu ngắt được gây ra bởi một lời gọi ngắt của một ngôn ngữ lập trình cấp thấp nó sẽ chuyển ký tự này cho chương trình đó. Nó sử dụng một buffer trong bộ nhớ chính và một thông điệp để báo cho bộ điều khiển biết đã có ký tự nhập. Một khi bộ điều khiển nhận một ký tự, nó sẽ bắt đầu xử lý. Nếu dưới dạng mã bàn phím, nó sẽ ánh xạ lại mã ASCII thật. Nếu terminal ở dạng cook, ký tự phải được lưu trữ cho tới khi nhận được hết dòng vì người sử dụng có thể xóa một phần nội dung của nó. Giáo trình hệ điều hành Trang 175 Có hai loại buffer thông thường. Dạng thứ nhất, bộ điều khiển chứa pool chính của buffer, mỗi buffer chứa 16 ký tự. Có một cấu trúc dữ liệu liên kết với nó, trong đó có chứa một con trỏ trỏ tới chuỗi trong buffer. Khi ký tự chuyển cho chương trình, nó sẽ được loại khỏi buffer. Dạng thứ hai là buffer trực tiếp có cấu trúc dữ liệu vì nếu tổ chức theo dạng thứ nhất sẽ không đủ bộ nhớ. Hình sau cho biết sự khác biệt giữa hai cách như hình sau: Hình 10.20 Hai dạng cấu trúc dữ liệu Terminal Mặt dù màn hình và bàn phím là hai thiết bị logic riêng biệt, nhưng mọi người đều quen với việc gõ ký tự và xem nó xuất hiện trên màn hình. Một số terminal cho phép tự động hiển thị lên màn hình những gì vừa gõ hoặc chỉ là những dấu. khi gõ password. Một số terminal không hiển thị ký tự được gõ do đó phải dựa vào phần mềm để hiển thị input, xử lý này gọi là echoing. Echoing phức tạp vì chương trình phải xuất lên màn hình khi người dùng gõ vào. Bộ điều khiển bàn phím phải kiểm soát không cho ghi chồng lên output của chương trình. Echoing cũng gặp khó khăn khi người nhập gõ nhiều hơn 80 ký tự trên màn hình 80 ký tự một dòng. Một vấn đề khác là xử lý tab. Bộ điều khiển phải tính toán vị trí hiện thời cursor sau đó tính toán để chuyển cho chương trình và cho echoing và tính toán bao nhiêu khoảng trống phải hiển thị. Vấn đề tiếp theo là phải xử lý carriage return và line feed để chuyển cursor qua đầu dòng mới. Việc xử lý này tùy thuộc vào các hệ điều hành khác nhau. Ngoài ra phải kiểm soát tổ hợp ký tư và những ký tự xoá, lùi, hay các phím chức năng. 4. Phần mềm xuất Phần mềm xuất thì đơn giản hơn nhập nhưng ở hai dạng thiết bị terminal RS-232 và ánh xạ bộ nhớ là khác nhau. Phương pháp thông thường của terminal RS-232 là có một buffer xuất cho mỗi loại terminal. Dạng buffer có thể là pool như buffer nhập hay là dạng tận hiến như input. Khi chương trình ghi lên terminal, trước tiên nó xuất lên Giáo trình hệ điều hành Trang 176 buffer. Sau khi đã xuất lên buffer, ký tự đầu tiên được xuất, sau đó bộ điều khiển tạm dừng, khi có một ngắt phát sinh, ký tự tiếp theo sẽ được xuất, và cứ tiếp tục như vậy. Với terminal ánh xạ bộ nhớ, vấn đề đơn giản hơn. Những ký tự được in được xuất một lần từ chương trình người dùng được xuất lên video RAM. Với một số kýtự sẽ được xử lý đặc biệt. Ví dụ: backspace, carriage return, line feed, và bell (CTRL-G). Bộ điều khiển ánh xạ bộ nhớ, lưu giữ trong phần mềm vị trí của video RAM, vì vậy những ký tự in được được xuất trên đó theo thứ tự, các ký tự đặc biệt cũng được cập nhật thích hợp. Khi một line feed được xuất tại cuối dòng của màn hình, màn hình sẽ cuộn. Thường thường phần cứng cung cấp một số giúp đỡ ở đây. Hầu hết những bộ điều khiển màn hình chứa một thanh ghi xác định vị trí của video RAM để bắt đầu đặt các byte vào dòng đầu tiên của màn hình. Phần mềm soạn thảo màn hình phải có nhiều xử lý phức tạp hơn là chỉ xuống dòng. Để tương thích, một số bộ điều khiển terminal hỗ trợ một số xử lý, thông thường là: ❖ Di chuyển cursor lên, xuống, trái, phải của một vị trí. ❖ Di chuyển cursor đến vị trí x,y. ❖ Chèn một ký tự hay chèn một dòng. ❖ Xóa một ký tự hay một dòng. ❖ Cuộn màn hình lên hoặc xuống n dòng. ❖ Xoá màn hình từ vị trí cursor đến cuối dòng hoặc màn hình. ❖ Tạo tương phản, gạch dưới, nhấp nháy, hay mode thường. ❖ Tạo, hủy, di chuyển quản trị các cửa sổ. Bài tập Giả sử đĩa có 2 side, mỗi side có 1024 track, mỗi track có 32 sector. Tốc độ xoay của đĩa là 6000 vòng/phút. Thời gian di chuyển giữa các track là 100ms. Giả sử thời gian đọc và chuyển dữ liệu là không đáng kể. Cho biết để truy xuất tất cả sector logic sau phải tốn bao lâu: 34, 16, 120, 14, 86, 200, 79, 300, 8, 500, 170, 450, 1000, 380, 800 Biết: Sector = Seclog / SecTrk + 1 Side = (Seclog/SecTrk) / SideNo Track = (Seclog/(Sectrk *SideNo)) Với Seclog là sector logic, SideNo là số side, Sectrk là số sector trên 1 track.
File đính kèm:
- giao_trinh_mon_he_dieu_hanh.pdf