1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng

120 2 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Giáo Trình Hệ Điều Hành
Trường học Trường Cao Đẳng Bách Khoa Nam Sài Gòn
Chuyên ngành Tin Học Ứng Dụng
Thể loại Giáo Trình
Năm xuất bản 2022
Thành phố Tp.Hồ Chí Minh
Định dạng
Số trang 120
Dung lượng 4,33 MB

Cấu trúc

  • Chương 1: Giới thiệu chung về hệ điều hành (6)
    • 1.1. Khái niệm hệ điều hành (0)
      • 1.1.1. Các thành phần hệ thống (6)
      • 1.1.2. Chức năng của hệ điều hành (6)
      • 1.1.3. Quá trình phát triển của HĐH (6)
    • 1.2. Phân loại HĐH (7)
      • 1.2.1. Dưới góc độ loại máy tính (7)
        • 1.2.1.1. HĐH MainFrame (7)
        • 1.2.1.2. HĐH Desktop system (PC) (8)
        • 1.2.1.3. HĐH Multiprocessor system (9)
        • 1.2.1.4. HĐH Distributed system (10)
        • 1.2.1.5. HĐH Real time system (10)
        • 1.2.1.6. HĐH Handheld system (thiết bị cầm tay) (10)
        • 1.2.1.7. HĐH gaming system (11)
        • 1.2.1.8. HĐH IOS (11)
      • 1.2.2. Dưới góc độ số chương trình được sử dụng cùng lúc (11)
      • 1.2.3. Dưới góc độ người dùng (truy suất tài nguyên cùng lúc) (11)
    • 1.3. Sơ lược lịch sử phát triển của hệ điều hành (11)
      • 1.3.1. Lịch sử phát triển (11)
      • 1.3.2. Cấu trúc hệ thống (12)
        • 1.3.2.1. Cấu trúc đơn giản (12)
        • 1.3.2.2. Cấu trúc phức tạp hơn – UNIX (13)
        • 1.3.2.3. Cấu trúc phân tầng (13)
        • 1.3.2.4. Cấu trúc vi nhân (client – server) (14)
      • 1.3.3. Cài đặt Linux (15)
        • 1.3.3.1. Cấu hình máy ảo Linux (15)
        • 1.3.3.2. Cài đặt Linux (20)
  • Chương 2: Điều khiển dữ liệu (31)
    • 2.1. Các phương pháp tổ chức và truy nhập dữ liệu (31)
      • 2.1.1. Bản quản lý thư mục tập tin (31)
        • 2.1.1.1. Khái niệm (31)
        • 2.1.1.2. Cài đặt bảng thư mục (31)
      • 2.1.2. Bản phân phối vùng nhớ (32)
        • 2.1.2.1. Khái niệm bảng phân phối vùng nhớ (32)
        • 2.1.2.2. Cài đặt bảng phân phối vùng nhớ (32)
      • 2.1.3. Tập tin chia sẻ (33)
      • 2.1.4. Quản lý đĩa (33)
      • 2.1.5. Độ an toàn của hệ thống tập tin (34)
        • 2.1.5.1. Quản lý khối bị hỏng (34)
        • 2.1.5.2. Backup (34)
        • 2.1.5.3. Tính không đổi của hệ thống tập tin (34)
    • 2.2. Bản ghi và khối (34)
      • 2.2.1. Bản ghi logic và bản ghi vật lý (34)
      • 2.2.2. Khối (block) (35)
    • 2.3. Điều khiển buffer(điều khiển phòng đệm) (36)
      • 2.3.1. Phòng đệm trung chuyển (36)
      • 2.3.2. Phòng đệm xử lý (36)
      • 2.3.3. Phòng đệm vòng tròn (37)
    • 2.4. Quy trình chung điều khiển nhập-xuất (37)
      • 2.4.1. Phần cứng nhập/xuất (37)
        • 2.4.1.1. Thăm dò (38)
        • 2.4.1.2. Ngắt (39)
        • 2.4.1.3. Truy xuất bộ nhớ trực tiếp (39)
      • 2.4.2. Phần mềm nhập/xuất (40)
        • 2.4.2.1. Kiểm soát ngắt (40)
        • 2.4.2.2. Điều khiển thiết bị (41)
        • 2.4.2.3. Phần mềm nhập/xuất độc lập thiết bị (41)
        • 2.4.2.4. Phần mềm nhập/xuất phạm vi người sử dụng (42)
    • 2.5. Tổ chức lưu trữ dữ liệu trên đĩa từ (42)
      • 2.5.1. Cấu trúc (42)
        • 2.5.1.1. Vật lý (42)
        • 2.5.1.2. Logic (43)
  • Chương 3: Điều khiển bộ nhớ (46)
    • 3.1. Quản lý và bảo vệ bộ nhớ (46)
    • 3.2. Điều khiển bộ nhớ liên tục (48)
      • 3.2.1. Giới thiệu (48)
        • 3.2.1.1. Bảo vệ bộ nhớ (48)
      • 3.2.2. Cấp phát tĩnh (49)
        • 3.2.2.1. Hệ thống đơn chương (49)
        • 3.2.2.2. Hệ thống đa chương (50)
      • 3.2.3. Cấp phát động (51)
      • 3.2.4. Quản lý bộ nhớ rỗi (53)
    • 3.3. Điều khiển bộ nhớ gián đoạn (53)
      • 3.3.1. Tổ chức gián đoạn (54)
      • 3.3.2. Điều khiển bộ nhớ phân đoạn (55)
        • 3.3.2.1. Phương pháp cơ bản (55)
        • 3.3.2.2. Phần cứng (56)
        • 3.3.2.3. Bảo vệ và chia sẻ (58)
        • 3.3.2.4. Sự phân mảnh (59)
      • 3.3.3. Điều khiển bộ nhớ phân trang (60)
        • 3.3.3.1. Phương pháp cơ bản (60)
        • 3.3.3.2. Hỗ trợ phần cứng (64)
        • 3.3.3.3. Sự bảo vệ (66)
        • 3.3.3.4. Cấu trúc bảng trang (67)
  • Chương 4: Điều khiển CPU, điều khiển quá trình (73)
    • 4.1. Trạng thái của quá trình (73)
      • 4.1.1. Chế độ xử lý của tiến trình (74)
      • 4.1.2. Cấu trúc dữ liệu khối quản lý tiến trình (74)
      • 4.1.3. Thao tác trên tiến trình (75)
        • 4.1.3.1. Tạo lập tiến trình (76)
        • 4.1.3.2. Kết thúc tiến trình (76)
    • 4.2. Điều phối quá trình (77)
      • 4.2.1. Giới thiệu (77)
        • 4.2.1.1. Các đặc điểm của tiến trình (77)
        • 4.2.1.2. Điều phối độc quyền và không độc quyền (78)
      • 4.2.2. Tổ chức điều phối (79)
        • 4.2.2.1. Các danh sách sử dụng trong quá trình điều phối (79)
        • 4.2.2.2. Các cấp độ điều phối (80)
      • 4.2.3. Các chiến lược điều phối (81)
        • 4.2.3.1. Chiến lược FIFO (81)
        • 4.2.3.2. Chiến lược phân phối xoay vòng (Round Robin) (82)
        • 4.2.3.3. Điều phối với độ ưu tiên (83)
        • 4.2.3.4. Chiến lược công việc ngắn nhất (84)
        • 4.2.3.5. Chiến lược điều phối với nhiều mức độ ưu tiên (85)
        • 4.2.3.6. Chiến lược điều phối xổ số (86)
    • 4.3. Bài toán đồng bộ hóa (86)
      • 4.3.1. Giải pháp Busy – Waiting (86)
        • 4.3.1.1. Giải pháp 2 quá trình (86)
        • 4.3.1.2. Giải pháp nhiều quá trình (89)
      • 4.3.2. Giải pháp Sleep and Wakeup (93)
        • 4.3.2.1. Semaphore (94)
        • 4.3.2.2. Monitor (96)
    • 4.4. Bế tắc - Giải pháp phòng ngừa và xử lý (97)
      • 4.4.1. Bế tắc (97)
      • 4.4.2. Những điều kiện cần thiết gây ra bế tắc (Deadlock) (97)
      • 4.4.3. Xử lý bế tắc (98)
        • 4.4.3.1. Ngăn chặn bế tắc (98)
        • 4.4.3.2. Tránh bế tắc (100)
        • 4.4.3.3. Phát hiện bế tắc (106)
        • 4.4.3.4. Phục hồi bế tắc (109)
  • Chương 5: Hệ điều hành đa xử lý (111)
    • 5.1. Hệ điều hành đa xử lý tập trung (111)
      • 5.1.1. Hệ thống đa xử lý (111)
      • 5.1.2. Hệ điều hành đa xử lý tập trung (112)
    • 5.2. Thuật toán song song và ngôn ngữ lập trình song song (113)
      • 5.2.1. Thuật toán song song (113)
        • 5.2.1.1. Khái niệm thuật toán song song (113)
        • 5.2.1.2. Các mức độ song song (113)
        • 5.2.1.3. Phân loại các kiến trúc song song (114)
        • 5.2.1.4. Đánh giá độ phức tạp của thuật toán song song (114)
    • 5.3. Hệ điều hành đa xử lý phân tán (116)
      • 5.3.1. Hệ phân tán (116)
      • 5.3.2. Những đặc trưng chủ yếu của hệ phân tán (116)

Nội dung

Ta tóm tắt một số đặc điểm chính của hệ điều hành DOS:  DOS là một hệ điều hành đơn chương trình và cá nhân, theo đó mỗi lúc chỉ có một chương trình của người sử dụng được thực hiện trê

Giới thiệu chung về hệ điều hành

Phân loại HĐH

1.2.1 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 Handheld system

- Hệ điều hành Gaming system

- Hệ điều hành IOS (Internetwork Operating System)

Hiện nay, mainframe được định nghĩa là những cỗ máy tính có các thành phân bên trong độc lập nhưng có khả năng phối hợp tốt để cung cấp độ tin cậy ở mức cao Nó có khả năng lấy vào một lượng dữ liệu khổng lồ, tính toán, xử lí và xuất ra kết quả cũng khổng lồ không kém Mainframe đòi hỏi phải có một sự tương thích ngược chặt chẽ với các phần mềm cũ bởi những công ty, tổ chức lớn sử dụng những phần mềm có tính chuyên biệt cao nên và rất tốn kém nếu phải viết lại Ngoài ra, mainframe được thiết kế để có thể chạy liên tục (uninterrupt) trong một thời gian rất dài Đây cũng chính là yếu tố quan trọng nhất của mainframe bởi nó vốn được dùng cho những mục đích mà chỉ cần vài phút hệ thống bị sập là một "thảm họa" sẽ xảy ra, hoặc nếu hệ thống ngừng chạy dù chỉ trong thời gian ngắn thì chi phí để khôi phục hoạt động 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ật hiệ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

 Thừa hưởng những tính năng có từ MULTICS, ngay từ đầu UNIX đã được thiết kế là một hệ điều hành đa nhiệm và nhiều người dùng với cơ chế phân chia thời gian Do quan niệm có nhiều người dùng nên nó 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:

 DOS là một hệ điều hành đơn chương trình và cá nhân, theo đó mỗi lúc chỉ có một chương trình của người sử dụng được thực hiện trên máy

 DOS tổ chức thông tin trên đĩa từ theo các đơn vị quản lý gọi là file Các file được tổ chức theo một cấu trúc phân cấp có dạng cây gọi là cấu trúc thư mục Đĩa chứa thư mục gốc, mỗi thư mục có quyền chứa nhiều thư mục khác Các file có thể nằm ở một thư mục 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

Sơ lược lịch sử phát triển của hệ điều hành

- 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

- Lưu trên phiếu đục lỗ

- 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

- 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)

1.3.3.1 Cấu hình máy ảo Linux:

Tại màn hình chính của VMware, 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

Bước 9: Tạo mật khẩu cho người dùng và chọn Continue Bạn cần nhớ mật khẩu để có thể đăng nhập vào Kali Linux sau khi cài đặt xong nhé

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

Bước 19: Lựa chọn các phần mềm muốn cài đặt và bấm Continue Nếu bạn không có kết nối mạng, các phầm mềm 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

Điều khiển dữ liệu

Các phương pháp tổ chức và truy nhập dữ liệu

2.1.1 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

2.1.2 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

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

Tập tin được lưu trữ trên đĩa, do đó việc quản trị đĩa là hết sức quan trọng trong việc cài đặt hệ thống tập tin Có 2 phương pháp lưu trữ:

+ 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

2.1.5 Độ 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

2.2.1 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

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)

Buffer được biết đến là vùng đệm dữ liệu được lưu trữ tạm thời trong bộ nhớ RAM trong thời gian dữ liệu chờ được chuyển tới vị trí khác Có 3 loại buffer: trung chuyển, xử lý và vòng trò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

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

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

Thiết bị nhập xuất đa đạng, nhiều loại thiết bị, mỗi loại có nhiều kiểu khác nhau theo: + Quan điểm kỹ thuật (phần cứng): là các thiết bị với bộ vi xử lý, motor, cac linh kiện khác

+ Quan điểm lập trình (phần mềm): giao diện như phần mềm để nhận lệnh, thực hiện và trả về kết quả

Vai trò của hệ điều hành trong nhập/xuất máy tính là quản lý và điều khiển các thao tác nhập/xuất và các thiết bị nhập/xuất Điều khiển các thiết bị được nối kết tới máy tính là mối quan tâm chủ yếu của người thiết kế hệ điều hành Vì các thiết bị nhập/xuất rất khác nhau về chức năng và tốc độ (xem xét chuột, đĩa cứng, và CD-ROM) nên sự đa dạng về phương pháp là cần thiết để điều khiển chúng Các phương pháp này hình thành một hệ thống nhập/xuất con (I/O subsystem) của nhân, tách rời phần còn lại của nhân từ sự phức tạp của việc quản lý các thiết bị nhập/xuất

Công nghệ thiết bị nhập/xuất thể hiện hai xu hướng trái ngược nhau Xu hướng thứ nhất, chúng ta tăng sự chuẩn hoá phần mềm và giao diện phần cứng Xu hướng này giúp chúng ta hợp tác những thế hệ thiết bị được cải tiến vào các máy tính và hệ điều hành đã có Xu hướng thứ hai, chúng ta tăng sự đa dạng của các thiết bị nhập/xuất Thiết bị mới là rất khác với các thiết bị trước đó đã tạo ra một trở ngại để hợp nhất chúng vào máy tính và hệ điều hành của chúng ta Trở ngại này được giải quyết bởi sự kết hợp kỹ thuật phần cứng và phần mềm Các thành phần phần cứng nhập/xuất cơ bản như cổng, bus và bộ điều khiển thiết bị chứa trong một dãy rộng các thiết bị nhập/xuất Để đóng gói các chi tiết và sự khác biệt của các thiết bị khác nhau, nhân của hệ điều hành được chỉ dẫn để dùng các modules trình điều khiển thiết bị Các trình điều khiển thiết bị (device driver) hiện diện một giao diện truy xuất thiết bị đồng nhất tới hệ thống con nhập/xuất, như các lời gọi hệ thống cung cấp một giao diện chuẩn giữa ứng dụng và hệ điều hành

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

Trong bước 1, máy tính là chờ đợi bận hay thăm dò Nó ở trong một vòng lặp, đọc thanh ghi trạng thái cho đến khi bit bận được xoá Nếu bộ điều khiển và thiết bị nhanh thì phương pháp này là một phương pháp phù hợp Nhưng nếu chờ lâu máy chủ chuyển sang một tác vụ khác Sau đó, máy tính làm thế nào để biết khi nào bộ điều khiển rảnh? Đối với một số thiết bị, máy tính phải phục vụ thiết bị nhanh chóng hoặc dữ liệu sẽ bị mất Thí dụ, khi dữ liệu đang truyền vào cổng tuần tự từ bàn phím, một vùng đệm nhỏ trên bộ điều khiển sẽ tràn và dữ liệu sẽ bị mất nếu máy tính chờ quá lâu trước khi trả về các bytes được đọc

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

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

Tổ chức lưu trữ dữ liệu trên đĩa từ

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)

Các đầu từ đọc ghi là một phần không thể thiếu của ổ đĩa cơ, nhiệm vụ của nó là đọc dữ liệu từ đĩa từ hoặc ghi dữ liệu vào đĩa từ, có 2 đầu đọc ở phía trên và dưới một đĩa từ, đầu này nằm trên Actuator Arm Assembly (tạm dịch: cánh tay chuyển động) Điều khiển sự dài ngắn của Arm, giúp đầu đọc có khả năng di chuyển để lựa vị trí đọc/ghi Bảng điều khiển ổ đĩa, là một mạch được tích hợp bên trong đĩa cơ, mạch này gồm các đầu kết nối tới chuẩn kết nối (SAS, SATA) và nguôn điện, bảng này cũng làm nhiệm vụ nhận tín hiệu từ PC và điều khiển các thanh phần trên của ổ cứng (Spindle, Read/Write Heads, 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

Điều khiển bộ nhớ

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 phối các vùng nhớ cho chương trình và dữ liệu để có thể thực hiện một cách chính quy, không ảnh hưởng đến các chương trình khác đang tồn tại 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

- Thời điểm nạp: nếu tại thời điểm biên dịch chưa biết nơi quá trình sẽ nằm ở đâu trong bộ nhớ thì trình biên dịch phải phát sinh mã có thể tái định vị Trong trường hợp này, liên kết cuối cùng được trì hoãn cho tới thời điểm nạp Nếu địa chỉ bắt đầu thay đổi, chúng ta chỉ cần nạp lại mã người dùng để hợp nhất giá trị được 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

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

Do đó, chúng ta cần xem xét cách 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ớ Trong cấp phát bộ nhớ liên tục, mỗi quá trình đượ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 phải thảo luận vấn đề bảo vệ bộ nhớ-bảo vệ hệ điều hành từ quá trình người dùng, và bảo vệ các quá trình từ một quá trình khác Chúng ta có thể cung cấp bảo vệ này bằng cách 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

Cơ chế dùng thanh ghi tái định vị cung cấp một cách hiệu quả để cho phép kích thước hệ điều hành thay đổi động Khả năng mềm dẽo này có thể mong muốn trong nhiều trường hợp Thí dụ, hệ điều hành chứa mã và không gian vùng đệm cho trình điều khiển thiết bị Nếu một trình điều khiển thiết bị (hay dịch vụ hệ điều hành khác) không được dùng phổ biến, nó không muốn giữ mã và dữ liệu trong bộ nhớ, khi chúng ta có thể dùng không gian đó cho mục đích khác Những mã như thế thường được gọi là mã hệ điều hành tạm thời (transient operating system code); nó đến và đi khi được yêu cầu Do đó, dùng mã này thay đổi kích thước của hệ điều hành trong khi thực thi chương trình

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

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 Mỗi phân khu có thể chứa chính xác một quá trình Do đó, cấp độ đa chương được giới hạn bởi số lượng phân khu Trong phương pháp đa phân khu, khi một phân khu rảnh, một quá trình được chọn từ hàng đợi nhập và được nạp vào phân khu trống Khi quá trình kết thúc, phân khu trở nên sẳn dùng cho một quá trình khác Có hai 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 (hình VII-7a) Khi một quá trình mới được tạo ra, nó được đưa vào hàng đợi của phân khu có kích thước nhỏ nhất thoả 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 các hàng đợi của các phân khu khác lại đầy, buộc các quá trình trong những hàng đợi này 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ơ 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

Điều khiển bộ nhớ 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 chương trình (không phải viết trên ngôn ngữ máy), người lập trình hướng đến bộ nhớ qua tập hợp các tên logic, cho phép các tên logic là kí hiệu chứ không hoàn toàn là số địa chỉ thực Một cách tổng quát, địa chỉ được biểu thị bằng tên, các tên nói trên tạo ra một không gian tên Một chương trình được viết như một thể thống nhất có mối liên hệ giữa các tên nói trên Tập hợp các tên sử dụng chưa được xác định trước Tập hợp các tên-địa chỉ có lực lượng vượt quá địa chỉ có thực trong bộ nhớ Với nhiều người dùng, một “tên” không phải gắn với một “định vị cố định” nào cả Mặt khác, việc dùng tên của các người lập trình khác nhau là độc lập nhau, vì thế hệ thống cho phép không gian tên được phép dùng là “vô hạn”

Hệ thống chương trình cần phải định vị được “bộ nhớ” đối với mỗi tên trong chương trình: cần ánh xạ không gian tên vào địa chỉ vật lý và trong ánh xạ đó nảy sinh khái niệm không gian địa chỉ ảo Ánh xạ từ không gian tên tới bộ nhớ vật lý được chia làm hai bước (hình3.9)

Bước 1: do chương trình dịch đảm nhận Việc xác định địa chỉ ảo không phải do chương trình người dùng hoặc hệ thống phần cứng mà do chương trình dịch trong hệ thống: địa chỉ ảo có thể là ký hiệu, số hoặc chỉ dẫn số Tập hợp các địa chỉ ảo (do chương trình dịch trong hệ thống thiết lập) được gọi là không gian địa chỉ ảo (ngắn gọn là không gian địa chỉ)

Bước 2: do hệ điều hành (cụ thể là điều khiển bộ nhớ) ánh xạ địa chỉ ảo vào bộ nhớ vật lý Tại giai đoạn này xảy ra quá trình tải bộ phận của chương trình vào bộ nhớ trong tại một vùng nhớ còn rỗi Chương trình được tải trong bộ nhớ trong theo tập hợp các vùng nhớ rời rạc nhau đang dành cho nó

Trong việc kiến thiết tên nảy sinh các trường hợp:

- Đồng nhất không gian địa chỉ với bộ nhớ vật lý: ánh xạ chỉ cần chương trình hệ thống khi sinh mã máy chương trình, hệ điều hành chỉ đảm bảo phân phối liên tục cố định bộ nhớ Assembler với tải và sử dụng trực tiếp là ví dụ cho trường hợp này

- Đồng nhất không gian địa chỉ với không gian tên: đảm bảo bằng hệ điều hành khi sử dụng bảng ký hiệu và hướng dẫn Một ví dụ cho trường hợp này là trình thông dịch của APL trên IBM 370

Bộ dịch sinh ra các địa chỉ tương đối, về bản chất được coi là địa chỉ ảo và sau đó hướng chương trình tới một đoạn nhớ liên tục Sau khi tải, địa chỉ ảo bị xóa bỏ và truy cập trực tiếp tới địa chỉ thực

Biện pháp giải quyết mềm dẻo nhất là bộ dịch xem xét địa chỉ ảo như là các địa chỉ tương đối và thông tin về địa chỉ đầu: còn hệ điều hành thực hiện ánh xạ thứ hai không phải qua một bước mà là qua một số bước: thuật ngữ bộ nhớ ảo liên quan đến hệ thống bảo quản không gian địa chỉ ảo hiện tại của hệ thống Một địa chỉ ảo không phải luôn luôn hướng tới một địa chỉ bộ nhớ trong duy nhất Biện pháp này thể hiện trong điều khiển theo segment và theo trang như được trình bày dưới đây

Nói chung, sử dụng bộ nhớ ảo đòi hỏi phải có cơ chế định vị lại địa chỉ (bước 2 nêu trên) mỗi khi tải lại chương trình và điều đó là hoàn toàn khác với phân phối liên tục Ở chế độ phân phối bộ nhớ rời rạc, không diễn ra việc thay lại địa chỉ trong nội dung chương trình hay thay nội dung chương trình (không cho phép chương trình tự biến đổi mình)

3.3.2 Điều khiển bộ nhớ phân đoạn:

Người dùng nghĩ bộ nhớ như mảng tuyến tính các byte, một số byte chứa chỉ thị lệnh, một số khác chứa dữ liệu hay không? Hầu hết mọi người nói không Đúng hơn là, người dùng thích nhìn bộ nhớ như tập hợp các phân đoạn có kích thước thay đổi, và không cần xếp thứ tự giữa các phân đoạn (như hình 23)

Chúng ta nghĩ như thế nào về một chương trình khi chúng ta đang viết nó? Chúng ta nghĩ nó như một chương trình chính với một tập hợp các chương trình con, thủ tục, hàm, hay các module Có thể có các cấu trúc dữ liệu khác nhau: bảng, mảng, ngăn xếp, biến, Mỗi module hay thành phần dữ liệu này được tham chiếu bởi tên Chúng ta nói “bảng danh biểu”, “hàm sqrt”,

“chương trình chính” không quan tâm đến địa chỉ trong bộ nhớ mà những phần tử này chiếm Chúng ta không quan tâm bảng danh biểu được lưu trữ trước hay sau hàm sqrt Mỗi phân đoạn này có chiều dài thay đổi; thực chất chiều dài được định nghĩa bởi mục đích của phân đoạn trong chương trình Các phần tử trong một phân đoạn được định nghĩa bởi độ dời của chúng từ điểm bắt đầu của phân đoạn: lệnh đầu tiên của chương trình, mục từ thứ mười bảy trong bảng danh biểu, chỉ thị thứ năm của hàm sqrt,…

Hình 23 Tầm nhìn chương trình của người dùng

Phân đoạn là một cơ chế quản lý bộ nhớ hỗ trợ tầm nhìn bộ nhớ của người dùng Không gian địa chỉ luận lý là tập hợp các phân đoạn Mỗi phân đoạn có tên và chiều dài Các địa chỉ xác định tên phân đoạn và độ dời trong phân đoạn Do đó, người dùng xác định mỗi địa chỉ bằng hai lượng: tên phân đoạn và độ dời (tương phản cơ chế này với cơ chế phân trang, trong đó người dùng chỉ xác định một địa chỉ đơn, được chia bởi phần cứng thành số trang và độ dời, tất cả không thể nhìn thấy đối với người lập trình) Để đơn giản việc cài đặt, các phân đoạn được đánh số và được tham chiếu tới bởi số phân đoạn, hơn là bởi tên phân đoạn Do đó, địa chỉ luận lý chứa một bộ hai:

Điều khiển CPU, điều khiển quá trình

Trạng thái của quá trình

Khi một quá trình thực thi, nó thay đổi trạng thái Trạng thái của quá trình được định nghĩa bởi các hoạt động hiện hành của quá trình đó Mỗi quá trình có thể ở một trong những trạng thái sau:

• Mới (new): quá trình đang được tạo ra

• Đang chạy (running): các chỉ thị đang được thực thi

• Chờ (waiting): quá trình đang chờ sự kiện xảy ra (như hoàn thành việc nhập/xuất hay nhận tín hiệu)

• Sẳn sàng (ready): quá trình đang chờ được gán tới một bộ xử lý

• Kết thúc (terminated): quá trình hoàn thành việc thực thi

Các tên trạng thái này là bất kỳ, và chúng khác nhau ở các hệ điều hành khác nhau Tuy nhiên, các trạng thái mà chúng hiện diện được tìm thấy trên tất cả hệ thống Các hệ điều hành xác định mô tả trạng thái quá trình Chỉ một quá trình có thể đang chạy tức thì trên bất kỳ bộ xử lý nào mặc dù nhiều quá trình có thể ở trạng thái sẳn sàng và chờ

Hình 1 - Lưu đồ trạng thái quá trình

4.1.1 Chế độ xử lý của tiến trình: Để đảm bảo hệ thống hoạt động đúng đắn, hệ điều hành cần phải được bảo vệ khỏi sự xâm phạm của các tiến trình Bản thân các tiến trình và dữ liệu cũng cần được bảo vệ để tránh các ảnh hưởng sai lạc lẫn nhau Một cách tiếp cận để giải quyết vấn đề là phân biệt hai chế độ xử lý cho các tiến trình : chế độ không đặc quyền và chế độ đặc quyền nhờ vào sự trợ giúp của cơ chế phần cứng Tập lệnh của CPU được phân chia thành các lệnh đặc quyền và lệnh không đặc quyền Cơ chế phần cứng chỉ cho phép các lệnh đặc quyền được thực hiện trong chế độ đặc quyền Thông thường chỉ có hệ điều hành hoạt động trong chế độ đặc quyền, các tiến trình của người dùng hoạt động trong chế độ không đặc quyền, không thực hiện được các lệnh đặc quyền có nguy cơ ảnh hưởng đến hệ thống Như vậy hệ điều hành được bảo vệ Khi một tiến trình người dùng gọi đến một lời gọi hệ thống, tiến trình của hệ điều hành xử lý lời gọi này sẽ hoạt động trong chế độ đặc quyền, sau khi hoàn tất thì trả quyền điều khiển về cho tiến trình người dùng trong chế độ không đặc quyền

4.1.2 Cấu trúc dữ liệu khối quản lý tiến trình:

Hệ điều hành quản lý các tiến trình trong hệ thống thông qua khối quản lý tiến trình (process control block -PCB) PCB là một vùng nhớ lưu trữ các thông tin mô tả cho tiến trình, với các thành phần chủ yếu bao gồm: Định danh của tiến trình (1) : giúp phân biệt các tiến trình

Trạng thái tiến trình (2): xác định hoạt động hiện hành của tiến trình

Ngữ cảnh của tiến trình (3): mô tả các tài nguyên tiến trình đang trong quá trình, hoặc để phục vụ cho hoạt động hiện tại, hoặc để làm cơ sở phục hồi hoạt động cho tiến trình, bao gồm các thông tin về:

 Trạng thái CPU: bao gồm nội dung các thanh ghi, quan trọng nhất là con trỏ lệnh IP lưu trữ địa chỉ câu lệnh kế tiếp tiến trình sẽ xử lý Các thông tin này cần được lưu trữ khi xảy ra một ngắt, nhằm có thể cho phép phục hồi hoạt động của tiến trình đúng như trước khi bị ngắt

 Bộ xử lý: dùng cho máy có cấu hình nhiều CPU, xác định số hiệu CPU mà tiến trình đang sử dụng

 Bộ nhớ chính: danh sách các khối nhớ được cấp cho tiến trình

 Tài nguyên sử dụng: danh sách các tài mguyên hệ thống mà tiến trình đang sử dụng

 Tài nguyên tạo lập: danh sách các tài nguyên được tiến trình tạo lập

Thông tin giao tiếp (4): phản ánh các thông tin về quan hệ của tiến trình với các tiến trình khác trong hệ thống :

 Tiến trình cha: tiến trình tạo lập tiến trình này

 Tiến trình con: các tiến trình do tiến trình này tạo lập

 Độ ưu tiên : giúp bộ điều phối có thông tin để lựa chọn tiến trình được cấp CPU

Thông tin thống kê (5): đây là những thông tin thống kê về hoạt động của tiến trình, như thời gian đã sử dụng CPU,thời gian chờ Các thông tin này có thể có ích cho công việc đánh giá tình hình hệ thống và dự đoán các tình huống tương lai

Hình vẽ 2.4 Khối mô tả tiến trình

4.1.3 Thao tác trên tiến trình:

Hệ điều hành cung cấp các thao tác chủ yếu sau đây trên một tiến trình :

 Tạo lập tiến trình (create)

 Kết thúc tiến trình (destroy)

 Tạm dừng tiến trình (suspend)

 Tái kích hoạt tiến trình (resume)

 Thay đổi độ ưu tiên tiến trình

Trong quá trình xử lý, một tiến trình có thể tạo lập nhiều tiến trình mới bằng cách sử dụng một lời gọi hệ thống tương ứng Tiến trình gọi lời gọi hệ thống để tạo tiến trình mới sẽ được gọi là tiến trình cha, tiến trình được tạo gọi là tiến trình con Mỗi tiến trình con đến lượt nó lại có thể tạo các tiến trình mới…quá trình này tiếp tục sẽ tạo ra một cây tiến trình

Hình vẽ2.5 Một cây tiến trình trong hệ thống UNIX

Các công việc hệ điều hành cần thực hiện khi tạo lập tiến trình bao gồm : Định danh cho tiến trình mới phát sinh Đưa tiến trình vào danh sách quản lý của hệ thống

Xác định độ ưu tiên cho tiến trình

Tạo PCB cho tiến trình

Cấp phát các tài nguyên ban đầu cho tiến trình

Khi một tiến trình tạo lập một tiến trình con, tiến trình con có thể sẽ được hệ điều hành trực tiếp cấp phát tài nguyên hoặc được tiến trình cha cho thừa hưởng một số tài nguyên ban đầu

Khi một tiến trình tạo tiến trình mới, tiến trình ban đầu có thể xử lý theo một trong hai khả năng sau :

Tiến trình cha tiếp tục xử lý đồng hành với tiến trình con

Tiến trình cha chờ đến khi một tiến trình con nào đó, hoặc tất cả các tiến trình con kết thúc xử lý

Các hệ điều hành khác nhau có thể chọn lựa các cài đặt khác nhau để thực hiện thao tác tạo lập một tiến trình

Một tiến trình kết thúc xử lý khi nó hoàn tất chỉ thị cuối cùng và sử dụng một lời gọi hệ thống để yêu cầu hệ điều hành hủy bỏ nó Đôi khi một tiến trình có thể yêu cầu hệ điều hành kết thúc xử lý của một tiến trình khác Khi một tiến trình kết thúc, hệ điều hành thực hiện các công việc :

 Thu hồi các tài nguyên hệ thống đã cấp phát cho tiến trình

 Hủy tiến trình khỏi tất cả các danh sách quản lý của hệ thống

 Hủy bỏ PCB của tiến trình

Hầu hết các hệ điều hành không cho phép các tiến trình con tiếp tục tồn tại nếu tiến trình cha đã kết thúc Trong những hệ thống như thế, hệ điều hành sẽ tự động phát sinh một loạt các thao tác kết thúc tiến trình con.

Điều phối quá trình

Trong môi trường đa chương, có thể xảy ra tình huống nhiều tiến trình đồng thời sẵn sàng để xử lý Mục tiêu của các hệ phân chia thời gian (time-sharing) là chuyển đổi CPU qua lại giữa các tiến trình một cách thường xuyên để nhiều người sử dụng có thể tương tác cùng lúc với từng chương trình trong quá trình xử lý Để thực hiện được mục tiêu này, hệ điều hành phải lựa chọn tiến trình được xử lý tiếp theo

Bộ điều phối sẽ sử dụng một giải thuật điều phối thích hợp để thực hiện nhiệm vụ này Một thành phần khác của hệ điều hành cũng tiềm ẩn trong công tác điều phối là bộ phân phối (dispatcher)

Bộ phân phối sẽ chịu trách nhiệm chuyển đổi ngữ cảnh và trao CPU cho tiến trình được chọn bởi bộ điều phối để xử lý

Bộ điều phối không cung cấp cơ chế, mà đưa ra các quyết định Các hệ điều hành xây dựng nhiều chiến lược khác nhau để thực hiện việc điều phối, nhưng tựu chung cần đạt được các mục tiêu sau : a) Sự công bằng ( Fairness) :

Các tiến trình chia sẻ CPU một cách công bằng, không có tiến trình nào phải chờ đợi vô hạn để được cấp phát CPU b) Tính hiệu qủa (Efficiency) :

Hệ thống phải tận dụng được CPU 100% thời gian c) Thời gian đáp ứng hợp lý (Response time) :

Cực tiểu hoá thời gian hồi đáp cho các tương tác của người sử dụng d) Thời gian lưu lại trong hệ thống ( Turnaround Time) :

Cực tiểu hóa thời gian hoàn tất các tác vụ xử lý theo lô e) Thông lượng tối đa (Throughput ) :

Cực đại hóa số công việc được xử lý trong một đơn vị thời gian

Tuy nhiên thường không thể thỏa mãn tất cả các mục tiêu kể trên vì bản thân chúng có sự mâu thuẫn với nhau mà chỉ có thể dung hòa chúng ở mức độ nào đó

4.2.1.1 Các đặc điểm của tiến trình: Điều phối hoạt động của các tiến trình là một vấn đề rất phức tạp, đòi hỏi hệ điều hành khi giải quyết phải xem xét nhiều yếu tố khác nhau để có thể đạt được những mục tiêu đề ra Một số đặc tính của tiến trình cần được quan tâm như tiêu chuẩn điều phối: a) Tính hướng xuất / nhập của tiến trình ( I/O-boundedness):

Khi một tiến trình nhận được CPU, chủ yếu nó chỉ sử dụng CPU đến khi phát sinh một yêu cầu nhập xuất ? Hoạt động của các tiến trình như thế thường bao gồm nhiều lượt sử dụng CPU , mỗi lượt trong một thời gian khá ngắn b) Tính hướng xử lý của tiến trình ( CPU-boundedness):

Khi một tiến trình nhận được CPU, nó có khuynh hướng sử dụng CPU đến khi hết thời gian dành cho nó ? Hoạt động của các tiến trình như thế thường bao gồm một số ít lượt sử dụng CPU , nhưng mỗi lượt trong một thời gian đủ dài c) Tiến trình tương tác hay xử lý theo lô :

Người sử dụng theo kiểu tương tác thường yêu cầu được hồi đáp tức thời đối với các yêu cầu của họ, trong khi các tiến trình của tác vụ được xử lý theo lô nói chung có thể trì hoãn trong một thời gian chấp nhận được d) Độ ưu tiên của tiến trình :

Các tiến trình có thể được phân cấp theo một số tiêu chuẩn đánh giá nào đó, một cách hợp lý, các tiến trình quan trọng hơn ( có độ ưu tiên cao hơn) cần được ưu tiên hơn e) Thời gian đã sử dụng CPU của tiến trình :

Một số quan điểm ưu tiên chọn những tiến trình đã sử dụng CPU nhiều thời gian nhất vì hy vọng chúng sẽ cần ít thời gian nhất để hoàn tất và rời khỏi hệ thống Tuy nhiên cũng có quan điểm cho rằng các tiến trình nhận được CPU trong ít thời gian là những tiến trình đã phải chờ lâu nhất, do vậy ưu tiên chọn chúng f) Thời gian còn lại tiến trình cần để hoàn tất :

Có thể giảm thiểu thời gian chờ đợi trung bình của các tiến trình bằng cách cho các tiến trình cần ít thời gian nhất để hoàn tất được thực hiện trước Tuy nhiên đáng tiếc là rất hiếm khi biết được tiến trình cần bao nhiêu thời gian nữa để kết thúc xử lý

4.2.1.2 Điều phối độc quyền và không độc quyền:

Thuật toán điều phối cần xem xét và quyết định thời điểm chuyển đổi CPU giữa các tiến trình Hệ điều hành có thể thực hiện cơ chế điều phối theo nguyên lý độc quyền hoặc không độc quyền Điều phối độc quyền : Nguyên lý điều phối độc quyền cho phép một tiến trình khi nhận được CPU sẽ có quyền độc chiếm CPU đến khi hoàn tất xử lý hoặc tự nguyện giải phóng CPU Khi đó quyết định điều phối CPU sẽ xảy ra trong các tình huống sau:

Khi tiến trình chuyển từ trạng thái đang xử lý(running) sang trạng thái bị khóa blocked ( ví dụ chờ một thao tác nhập xuất hay chờ một tiến trình con kết thúc…)

Khi tiến trình kết thúc

Các giải thuật độc quyền thường đơn giản và dễ cài đặt Tuy nhiên chúng thường không thích hợp với các hệ thống tổng quát nhiều người dùng, vì nếu cho phép một tiến trình có quyền xử lý bao lâu tùy ý, có nghĩa là tiến trình này có thể giữ CPU một thời gian không xác định, có thể ngăn cản những tiến trình còn lại trong hệ thống có một cơ hội để xử lý Điều phối không độc quyền : Ngược với nguyên lý độc quyền, điều phối theo nguyên lý không độc quyền cho phép tạm dừng hoạt động của một tiến trình đang sẵn sàng xử lý Khi một tiến trình nhận được CPU, nó vẫn được sử dụng CPU đến khi hoàn tất hoặc tự nguyện giải phóng CPU, nhưng một tiến trình khác có độ ưu tiên có thể dành quyền sử dụng CPU của tiến trình ban đầu Như vậy là tiến trình có thể bị tạm dừng hoạt động bất cứ lúc nào mà không được báo trước, để tiến trình khác xử lý Các quyết định điều phối xảy ra khi :

Khi tiến trình chuyển từ trạng thái đang xử lý (running) sang trạng thái bị khóa blocked ( ví dụ chờ một thao tác nhập xuất hay chờ một tiến trình con kết thúc…)

Khi tiến trình chuyển từ trạng thái đang xử lý (running) sang trạng thái ready ( ví dụ xảy ra một ngắt)

Khi tiến trình chuyển từ trạng thái chờ (blocked) sang trạng thái ready ( ví dụ một thao tác nhập/xuất hoàn tất)

Khi tiến trình kết thúc

Bài toán đồng bộ hóa

Trong phần này, chúng ta giới hạn việc quan tâm tới những giải thuật có thể áp dụng chỉ hai quá trình cùng một lúc Những quá trình này được đánh số P

1 Để thuận lợi, khi trình bày

Pi, chúng ta dùng P j để chỉ quá trình còn lại, nghĩa là j = 1 – i a/ Giải thuật 1:

Tiếp cận đầu tiên của chúng ta là để hai quá trình chia sẻ một biến số nguyên chung turn được khởi tạo bằng 0 (hay 1) Nếu turn == 0 thì quá trình P i được phép thực thi trong vùng tương trục của nó Cấu trúc của quá trình P i được hiển thị trong hình

Giải pháp này đảm bảo rằng chỉ một quá trình tại một thời điểm có thể ở trong vùng tương trục của nó Tuy nhiên, nó không thoả mãn yêu cầu tiến trình vì nó yêu cầu sự thay đổi nghiêm khắc của các quá trình trong việc thực thi của vùng tương trục Thí dụ, nếu turn == 0 và P

1 sẳn sàng đi vào vùng tương trục của nó thì P

1 không thể đi vào vùng tương trục thậm chí khi P

0 đang ở trong phần còn lại của nó

Cấu trúc của quá trình P i trong giải thuật 1 b/ Giải thuật 2:

Vấn đề với giải thuật 1 là nó không giữ lại đủ thông tin về trạng thái của mỗi quá trình; nó nhớ chỉ quá trình nào được phép đi vào miền tương trục Để giải quyết vấn đề này, chúng ta có thể thay thế biến turn với mảng sau:

Các phần tử của mảng được khởi tạo tới flase Nếu flag[i] là true, giá trị này hiển thị rằng

Pi sẳn sàng đi vào vùng tương trục Cấu trúc của quá trình P i được hiển thị trong hình dưới đây:

Cấu trúc của quá trình P i trong giải thuật 2

Trong giải thuật này, quá trình P i trước tiên thiết lập flag[i] tới true, hiển thị rằng nó sẳn sàng đi vào miền tương trục Sau đó, P i kiểm tra rằng quá trình quá trình P j cũng không sẳn sàng đi vào miền tương trục của nó Nếu P j sẳn sàng thì P i sẽ chờ cho tới khi P j hiển thị rằng nó không còn cần ở trong vùng tương trục nữa (nghĩa là cho tới khi flag[j] là false) Tại thời điểm này, P i sẽ đi vào miền tương trục Thoát ra khỏi miền tương trục, P i sẽ đặt flag[i] là false, cho phép quá trình khác (nếu nó đang chờ) đi vào miền tương trục của nó

Trong giải pháp này, yêu cầu loại trừ hỗ tương sẽ được thoả mãn Tuy nhiên, yêu cầu tiến trình không được thoả mãn Để minh hoạ vấn đề này, chúng ta xem xét thứ tự thực thi sau:

1 được lập mãi mãi trong câu lệnh while tương ứng của chúng Giải thuật này phụ thuộc chủ yếu vào thời gian chính xác của hai quá trình Thứ tự này được phát sinh trong môi trường nơi có nhiều bộ xử lý thực thi đồng hành hay nơi một ngắt (chẳng hạn như một ngắt định thời) xảy ra lập tức sau khi bước T

0 được thực thi và CPU được chuyển từ một quá trình này tới một quá trình khác

Chú ý rằng chuyển đổi thứ tự của các chỉ thị lệnh để thiết lập flag[i] và kiểm tra giá trị của flag[j] sẽ không giải quyết vấn đề của chúng ta Hơn nữa chúng ta sẽ có một trường hợp đó là hai quá trình ở trong vùng tương trục cùng một lúc, vi phạm yêu cầu loại trừ hỗ tương c/ Giải thuật 3:

Giải thuật 3 còn gọi là giải pháp Peterson Bằng cách kết hợp hai ý tưởng quan trọng trong giải thuật 1 và 2, chúng ta đạt được một giải pháp đúng tới với vấn đề vùng tương trục, ở đó hai yêu cầu được thoả Các quá trình chia sẻ hai biến:

Khởi tạo flag[0] = flag[1] = false và giá trị của turn là không xác định (hoặc là 0 hay 1) Cấu trúc của quá trình P i được hiển thị trong hình sau:

Cấu trúc của quá trình P i trong giải thuật 3 Để đi vào miền tương trục, quá trình P i trước tiên đặt flag[i] là true sau đó đặt turn tới giá trị j, do đó xác định rằng nếu quá trình khác muốn đi vào miền tương trục nó Nếu cả hai quá trình đi vào miền tương trục cùng một lúc turn sẽ đặt cả hai i và j tại xấp xỉ cùng một thời điểm Chỉ một trong hai phép gán này là kết quả cuối cùng Giá trị cuối cùng của turn quyết định quá trình nào trong hai quá trình được cho phép đi vào miền tương trục trước

Bây giờ chúng ta chứng minh rằng giải pháp này là đúng Chúng ta cần hiển thị rằng:

1) Loại trừ hỗ tương được bảo toàn

2) Yêu cầu tiến trình được thoả

3) Yêu cầu chờ đợi có giới hạn cũng được thoả

Chứng minh thuộc tính 1, chúng ta chú ý rằng mỗi P i đi vào miền tương trục của nó chỉ nếu flag[j] =se hay turn ==i Cũng chú ý rằng, nếu cả hai quá trình có thể đang thực thi trong vùng tương trục của chúng tại cùng thời điểm thì flag[0] == flag[1] ==true Hai nhận xét này ngụ ý rằng

1 không thể thực thi thành công trong vòng lặp while của chúng tại cùng một thời điểm vì giá trị turn có thể là 0 hay 1 Do đó, một trong các quá trình-P j phải được thực thi thành công câu lệnh while, ngược lại P i phải thực thi ít nhất câu lệnh bổ sung (“turn==j”) Tuy nhiên, vì tại thời điểm đó, flag[j] ==true và turn ==j, và điều kiện này sẽ không đổi với điều kiện là P j ở trong vùng miền tương trục của nó, kết quả sau việc loại trừ hỗ tương được bảo vệ Để chứng minh thuộc tính 2 và 3, chúng ta chú ý rằng một quá trình P i có thể được ngăn chặn từ việc đi vào miền tương truc chỉ nếu nó bị kẹt trong vòng lặp while với điều kiện flag[j] = true và turn == j Nếu P j không sẳn sàng đi vào miền tương trục thì flag[j] == false và P i có thể đi vào miền tương trục của nó Nếu P j đặt flag[j] là true và nó cũng đang thực thi trong câu lệnh while của nó thì turn == i hay turn == j Nếu turn == i thì P i sẽ đi vào miền tương trục Nếu turn ==j thì

Pj sẽ đi vào miền tương trục Tuy nhiên, một khi P j ở trong vùng tương trục của nó thì nó sẽ đặt lại flag[j] tới false, cho phép P i đi vào miền tương trục của nó Nếu P j đặt lại flag[j] tới true, nó cũng phải đặt turn tới i Do đó, vì P i không thay đổi giá trị của biến turn trong khi thực thi câu lệnh while, nên P i sẽ đi vào miền tương trục (tiến trình) sau khi nhiều nhất chỉ P j đi vào (chờ có giới hạn)

4.3.1.2 Giải pháp nhiều quá trình:

Giải thuật 3 giải quyết vấn đề miền tương trục cho hai quá trình Bây giờ chúng ta phát triển một giải thuật để giải quyết vấn đề miền tương trục cho n quá trình Giải thuật này được gọi là giải thuật Bakery và nó dựa trên cơ sở của giải thuật định thời thường được dùng trong cửa hiệu bánh mì, cửa hàng kem, nơi mà thứ tự rất hỗn độn Giải thuật này được phát triển cho môi trường phân tán, nhưng tại thời điểm này chúng ta tập trung chỉ những khía cạnh của giải thuật liên quan tới môi trường tập trung Đi vào một cửa hàng, mỗi khách hàng nhận một số Khách hàng với số thấp nhất được phục vụ tiếp theo Tuy nhiên, giải thuật Bakery không thể đảm bảo hai quá trình (khách hàng) không nhận cùng số Trong trường hợp ràng buộc, một quá trình với tên thấp được phục vụ trước Nghĩa là, nếu P i và P j nhận cùng một số và nếu (i < j) thì P i được phục vụ trước Vì tên quá trình là duy nhất và được xếp thứ tự nên giải thuật là hoàn toàn mang tính “may rủi” (deterministic)

Cấu trúc dữ liệu chung là boolean choosing[n]; int number[n]; Đầu tiên, các cấu trúc dữ liệu này được khởi tạo tới false và 0 tương ứng Để tiện dụng, chúng ta định nghĩa các ký hiệu sau:

(a, b) < (c, d) nếu a< c hay nếu a==c và b< d max(a

0,…,a n-1) là số k ≥ a i với i = 0,…,n-1 Cấu trúc của quá trình P i được dùng trong giải thuật Bakery, được hiển thị trong hình dưới đây

Cấu trúc của giải thuật P i trong giải thuật Bakery

Bế tắc - Giải pháp phòng ngừa và xử lý

Trong môi truờng đa chương, nhiều quá trình có thể cạnh tranh một số giới hạn tài nguyên Một quá trình yêu cầu tài nguyên, nếu tài nguyên không sẳn dùng tại thời điểm đó, quá trình đi vào trạng thái chờ Quá trình chờ có thể không bao giờ chuyển trạng thái trở lại vì tài nguyên chúng yêu cầu bị giữ bởi những quá trình đang chờ khác Trường hợp này được gọi là deadlock (khoá chết)

Hầu hết các hệ điều hành không cung cấp phương tiện ngăn chặn deadlock nhưng những đặc điểm này sẽ được thêm vào sau đó Vấn đề deadlock chỉ có thể trở thành vấn đề phổ biến, xu hướng hiện hành gồm số lượng lớn quá trình, chương trình đa luồng, nhiều tài nguyên trong hệ thống và đặc biệt các tập tin có đời sống dài và những máy phục vụ cơ sở dữ liệu hơn là các hệ thống bó

4.4.2 Những điều kiện cần thiết gây ra bế tắc (Deadlock):

Trường hợp deadlock có thể phát sinh nếu bốn điều kiện sau xảy ra cùng một lúc trong hệ thống:

1) Loại trừ hỗ tương: ít nhất một tài nguyên phải được giữ trong chế độ không chia sẻ; nghĩa là, chỉ một quá trình tại cùng một thời điểm có thể sử dụng tài nguyên Nếu một quá trình khác yêu cầu tài nguyên đó, quá trình yêu cầu phải tạm dừng cho đến khi tài nguyên được giải phóng

2) Giữ và chờ cấp thêm tài nguyên: quá trình phải đang giữ ít nhất một tài nguyên và đang chờ để nhận tài nguyên thêm mà hiện đang được giữ bởi quá trình khác

3) Không đòi lại tài nguyên từ quá trình đang giữ chúng: Các tài nguyên không thể bị đòi lại; nghĩa là, tài nguyên có thể được giải phóng chỉ tự ý bởi quá trình đang giữ nó, sau khi quá trình đó hoàn thành tác vụ

4) Tồn tại chu trình trong đồ thị cấp phát tài nguyên: một tập hợp các quá trình {P

P1,…,P n} đang chờ mà trong đó P

0 đang chờ một tài nguyên được giữ bởi P

1 đang chờ tài nguyên đang giữ bởi P

2,…,P n-1 đang chờ tài nguyên đang được giữ bởi quá trình P

0 Chúng ta nhấn mạnh rằng tất cả bốn điều kiện phải cùng phát sinh để deadlock xảy ra Điều kiện chờ đợi ch trình đưa đến điều kiện giữ-và-chờ vì thế bốn điều kiện không hoàn toàn độc lập

Phần lớn, chúng ta có thể giải quyết vấn đề deadlock theo một trong ba cách:

- Chúng ta có thể sử dụng một giao thức để ngăn chặn hay tránh deadlocks, đảm bảo rằng hệ thống sẽ không bao giờ đi vào trạng thái deadlock

- Chúng ta có thể cho phép hệ thống đi vào trạng thái deadlock, phát hiện nó và phục hồi

- Chúng ta có thể bỏ qua hoàn toàn vấn đề này và giả vờ deadlock không bao giờ xảy ra trong hệ thống Giải pháp này được dùng trong nhiều hệ điều hành, kể cả UNIX

4.4.3.1 Ngăn chặn bế tắc: a/ Loại trừ hỗ tương: Điều kiện loại trừ hỗ tương phải giữ cho tài nguyên không chia sẻ Thí dụ, một máy in không thể được chia sẻ cùng lúc bởi nhiều quá trình Ngược lại, các tài nguyên có thể chia sẻ không đòi hỏi truy xuất loại trừ hỗ tương và do đó không thể liên quan đến deadlock Những tập tin chỉ đọc là một thí dụ tốt cho tài nguyên có thể chia sẻ Nếu nhiều quá trình cố gắng mở một tập tin chỉ đọc tại cùng một thời điểm thì chúng có thể được gán truy xuất cùng lúc tập tin Một quá trình không bao giờ yêu cầu chờ tài nguyên có thể chia sẻ Tuy nhiên, thường chúng ta không thể ngăn chặn deadlock bằng cách từ chối điều kiện loại trừ hỗ tương: một số tài nguyên về thực chất không thể chia sẻ b/ Giữ và chờ cấp thêm tài nguyên: Để đảm bảo điều kiện giữ-và-chờ cấp thêm tài nguyên không bao giờ xảy ra trong hệ thống, chúng ta phải đảm bảo rằng bất cứ khi nào một quá trình yêu cầu tài nguyên, nó không giữ bất cứ tài nguyên nào khác Một giao thức có thể được dùng là đòi hỏi mỗi quá trình yêu cầu và được cấp phát tất cả tài nguyên trước khi nó bắt đầu thực thi Chúng ta có thể cài đặt sự cung cấp này bằng cách yêu cầu các lời gọi hệ thống yêu cầu tài nguyên cho một quá trình trước tất cả các lời gọi hệ thống khác

Một giao thức khác cho phép một quá trình yêu cầu tài nguyên chỉ khi quá trình này không có tài nguyên nào Một quá trình có thể yêu cầu một số tài nguyên và dùng chúng Tuy nhiên, trước khi nó có thể yêu cầu bất kỳ tài nguyên bổ sung nào, nó phải giải phóng tất cả tài nguyên mà nó hiện đang được cấp phát Để hiển thị sự khác nhau giữa hai giao thức, chúng ta xét một quá trình chép dữ liệu từ băng từ tới tập tin đĩa, sắp xếp tập tin đĩa và sau đó in kết quả ra máy in Nếu tất cả tài nguyên phải được yêu cầu cùng một lúc thì khởi đầu quá trình phải yêu cầu băng từ, tập tin đĩa và máy in Nó sẽ giữ máy in trong toàn thời gian thực thi của nó mặc dù nó cần máy in chỉ ở giai đoạn cuối

Phương pháp thứ hai cho phép quá trình yêu cầu ban đầu chỉ băng từ và tập tin đĩa Nó chép dữ liệu từ băng từ tới đĩa, rồi giải phóng cả hai băng từ và đĩa Sau đó, quá trình phải yêu cầu lại tập tin đĩa và máy in Sau đó, chép tập tin đĩa tới máy in, nó giải phóng hai tài nguyên này và kết thúc

Hai giao thức này có hai nhược điểm chủ yếu Thứ nhất, việc sử dụng tài nguyên có thể chậm vì nhiều tài nguyên có thể được cấp nhưng không được sử dụng trong thời gian dài Trong thí dụ được cho, chúng ta có thể giải phóng băng từ và tập tin đĩa, sau đó yêu cầu lại tập tin đĩa và máy in chỉ nếu chúng ta đảm bảo rằng dữ liệu của chúng ta sẽ vẫn còn trên tập tin đĩa Nếu chúng ta không thể đảm bảo rằng dữ liệu vẫn còn tập tin đĩa thì chúng ta phải yêu cầu tất cả tài nguyên tại thời điểm bắt đầu cho cả hai giao thức Thứ hai, đói tài nguyên là có thể Một quá trình cần nhiều tài nguyên phổ biến có thể phải đợi vô hạn định vì một tài nguyên mà nó cần luôn được cấp phát cho quá trình khác c/ Không đòi lại tài nguyên từ quá trình đang giữ chúng: Điều kiện cần thứ ba là không đòi lại những tài nguyên đã được cấp phát rồi Để đảm bảo điều kiện này không xảy ra, chúng ta có thể dùng giao thức sau Nếu một quá trình đang giữ một số tài nguyên và yêu cầu tài nguyên khác mà không được cấp phát tức thì tới nó (nghĩa là, quá trình phải chờ) thì tất cả tài nguyên hiện đang giữ được đòi lại Nói cách khác, những tài nguyên này được giải phóng hoàn toàn Những tài nguyên bị đòi lại được thêm tới danh sách các tài nguyên mà quá trình đang chờ Quá trình sẽ được khởi động lại chỉ khi nó có thể nhận lại tài nguyên cũ của nó cũng như các tài nguyên mới mà nó đang yêu cầu

Có một sự chọn lựa khác, nếu một quá trình yêu cầu một số tài nguyên, đầu tiên chúng ta kiểm tra chúng có sẳn không Nếu tài nguyên có sẳn, chúng ta cấp phát chúng Nếu tài nguyên không có sẳn, chúng ta kiểm tra chúng có được cấp phát tới một số quá trình khác đang chờ tài nguyên bổ sung Nếu đúng như thế, chúng ta lấy lại tài nguyên mong muốn đó từ quá trình đang đợi và cấp chúng cho quá trình đang yêu cầu Nếu tài nguyên không sẳn có hay được giữ bởi một quá trình đang đợi, quá trình đang yêu cầu phải chờ Trong khi nó đang chờ, một số tài nguyên của nó có thể được đòi lại chỉ nếu quá trình khác yêu cầu chúng Một quá trình có thể được khởi động lại chỉ khi nó được cấp các tài nguyên mới mà nó đang yêu cầu và phục hồi bất cứ tài nguyên nào đã bị lấy lại trong khi nó đang chờ

Giao thức này thường được áp dụng tới tài nguyên mà trạng thái của nó có thể được lưu lại dễ dàng và phục hồi lại sau đó, như các thanh ghi CPU và không gian bộ nhớ Nó thường không thể được áp dụng cho các tài nguyên như máy in và băng từ d/ Tồn tại chu trình trong đồ thị cấp phát tài nguyên: Điều kiện thứ tư và cũng là điều kiện cuối cùng cho deadlock là điều kiện tồn tại chu trình trong đồ thị cấp phát tài nguyên Một cách để đảm bảo rằng điều kiện này không bao giờ xảy ra là áp đặt toàn bộ thứ tự của tất cả loại tài nguyên và đòi hỏi mỗi quá trình trong thứ tự tăng của số lượng

2, …, R m} là tập hợp loại tài nguyên Chúng ta gán mỗi loại tài nguyên một số nguyên duy nhất, cho phép chúng ta so sánh hai tài nguyên và xác định tài nguyên này có đứng trước tài nguyên khác hay không trong thứ tự của chúng ta Thông thường, chúng ta định nghĩa hàm ánh xạ một-một F: R → N, ở đây N là tập hợp các số tự nhiên Thí dụ, nếu tập hợp các loại tài nguyên R gồm các ổ băng từ, ổ đĩa và máy in thì hàm F có thể được định nghĩa như sau:

F(ổ băng từ) = 1, F(đĩa từ) = 5, F(máy in) = 12

Bây giờ chúng ta xem giao thức sau để ngăn chặn deadlock: mỗi quá trình có thể yêu cầu tài nguyên chỉ trong thứ tự tăng của số lượng Nghĩa là, một quá trình ban đầu có thể yêu cầu bất cứ số lượng thể hiện của một loại tài nguyên R i Sau đó, một quá trình có thể yêu cầu các thể hiện của loại tài nguyên R j nếu và chỉ nếu F(R j) > 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

Hệ điều hành đa xử lý

Hệ điều hành đa xử lý tập trung

5.1.1 Hệ thống đa xử lý: a Hệ thống nhiều CPU:

Hiện nay, từ sự phát triển với tốc độ nhanh của công nghệ, máy tính ngày càng được phổ dụng trong xã hội Mức độ thâm nhập của máy tính vào cuộc sống càng cao thì yêu cầu nâng cao năng lực của máy tính lại ngày càng trở nên cấp thiết Bộ nhớ chính ngày càng rộng lớn; đĩa từ có dung lượng càng rộng, tốc độ truy nhập ngày càng cao; hệ thống thiết bị ngoại vi càng phong phú, hình thức giao tiếp người – máy ngày càng đa dạng Như đã nói, CPU là một tài nguyên thể hiện chủ yếu nhất năng lực của hệ thống máy tính, vì vậy một trong những vấn đề trọng tâm nhất để tăng cường năng lực của hệ thống là tăng cường năng lực của CPU Về vấn đề này, nảy sinh giải pháp theo hai hướng:

Giải pháp tăng cường năng lực của một CPU riêng cho từng máy máy tính: công nghệ vi mạch ngày càng phát triển vì vậy năng lực của từng CPU cũng ngày nâng cao, các dự án các vi mạch VLSI với hàng triệu, hàng chục triệu transitor Tuy nhiên giải pháp này cũng nảy sinh những hạn chế về kĩ thuật: tốc độ truyền thông tin không vượt qua tốc độ ánh sáng; khoảng cách gần nhất giữa hai thành phần không thể giảm thiểu quá nhỏ v.v…

Song song với giải pháp tăng cường năng lực của CPU là giải pháp liên kết nhiều CPU để tạo ra một hệ thống chung có năng lực đáng kể: việc đưa xử lý song song tạo ra nhiều lợi điểm Thứ nhất, chia các phần nhỏ công việc cho mỗi CPU đảm nhận, năng suất tăng không chỉ theo tỷ lệ thuận với một hệ số nhân mà còn cao hơn do không mất thời gian phải thực hiện những công việc trung gian

Giải pháp này còn có lợi điểm tích hợp các hệ thống máy đã có để tạo ra một hệ thống mới với sức mạnh tăng gấp bội

Trong chương này, xem xét việc chọn giải pháp đa xử lý theo nghĩa một hệ thống tính toán được tổ hợp không chỉ một CPU mà nhiều CPU trong một máy tính hoặc nhiều máy tính trong một hệ thống thống nhất Gọi chung các hệ có nhiều CPU như vậy là hệ đa xử lý b.Phân loại các hệ đa xử lý:

Có một số cách phân loại các hệ đa xử lý:

Ví dụ về hệ đa xử lý tập trung là tập các xử lý trong một siêu máy tính (supercomputer) Đặc trưng của hệ thống này là các CPU được liên kết với nhau trong một máy tính duy nhất;

Ví dụ về hệ đa xử lý phân tán là các mạng máy tính: mạng gồm nhiều máy tính liên kết và được đặt ở những vị trí khác nhau, với một khoảng cách có thể coi là xa tùy ý

Phân loại theo đặc tính của các CPU thành phần: hệ đã xử lý thuần nhất hoặc hệ đa xử lý không thuần nhất v.v…

Một ví dụ dễ quen thuộc là trong các máy vi tính từ 80486 trở đi trong đó có hai CPU (80x86 và 80x87) là hai CPU không thuần nhất

Siêu máy tính ILLIAC-IV gồm nhiều CPU có đặc trưng giống nhau là một ví dụ về thuần nhất

Phân loại theo cách các CPU thành phần tiếp nhận và xử lý dữ liệu Trong cách phân loại này bao gồm cả những máy tính đơn xử lý thông thường: Đơn câu lệnh, đơn dữ liệu (SISD: single data single instruction) được thể hiện trong máy tính thông thường; Mỗi lần làm việc, CPU chỉ xử lý “một dữ liệu” và chỉ có một câu lệnh được thực hiện Đơn câu lệnh, đa dữ liệu (SIMD: single instruction multiple data):

Các bộ xử lý trong cùng một nhịp thời gian chỉ thực hiện cùng một câu lệnh Có thể lấy ví dụ từ việc cộng hai vector cho trước: Các CPU thành phần đều thực hiện các phép cộng; đổi số tương ứng đã có từng CPU; sau đó, chọn tiếp lệnh (chỉ thị) mới để điều khiển công việc này Thông thường có một hệ chọn câu lệnh chung và mọi CPU thành phần cùng thực hiện: siêu máy tính ILLIAC-IV sử dụng cách thức này, có một máy tính con có tác dụng lưu giữ hệ điều hành để điều khiển ILLIAC.IV (bộ xử lý ma trận) Đa câu lệnh, đơn dữ liệu (MISD: multiple instruction single data)

Trong các máy tính thuộc loại này, hệ thống gồm nhiều CPU, các CPU liên kết nhau một cách tuần tự: output của bộ xử lý này là input của bộ xử lý tiếp theo (ví dụ CRAY-1: Bộ xử lý vector) Các CPU kết nối theo kiểu này được gọi là kết nối “dây chuyền” Đa dữ liệu, đa câu lệnh (MIMD)

Mỗi bộ xử lý có bộ phân tích chương trình riêng; câu lệnh và dữ liệu do chính mỗi CPU phải đảm nhận; có thể hình dung các CPU này hoạt động hoàn toàn “độc lập nhau” Các hệ điều hành mạng, hệ điều hành phân tán là những ví dụ về đa dữ liệu, đa câu lệnh

Trong nội dung ở chương này, xem xét cách phân loại dạng tập trung/phân tán song thực chất chỉ quan tâm đến hệ đa xử lý tập trung còn với hệ đa xử lý phân tán, sẽ có những chuyên đề riêng đáp ứng

Chú ý, một xu thế nghiên cứu và triển khai các hệ thống tính toán đa xử lý thời sự là nghiên cứu về tính toán cụm trong đó các mô hình SIMD, MISD và MIMD tương ứng được phát triển

5.1.2 Hệ điều hành đa xử lý tập trung:

Hệ đa xử lý tập trung hoạt động trên các máy tính có nhiều CPU mà điển hình là các siêu máy tính: CRAY-1,ILLIAC-IV, Hitachi và các máy tính nhiều xử lý hiện nay (máy tính của khoa CNTT, trường ĐHKHTN-ĐHQGHN có hai bộ xử lý) Các tài nguyên khác CPU có thể được phân chia cho các CPU Trong các hệ điều hành đa xử lý, hai bài toán lớn nhất có thể kể đến là phân phối bộ nhớ và phân phối CPU a.Phân phối bộ nhớ:

Các quá trình xuất hiện trong bộ nhớ chung Việc phân phối bộ nhớ được tiến hành cho quá trình theo các chế độ điều khiển bộ nhớ đã cài đặt: phân phối theo chế độ mẻ hay phân phối gián đoạn Để tăng tốc độ làm việc với bộ nhớ (bài toán xử lý con trỏ ngoài v.v.) có thể gắn với mỗi CPU một cache nhớ Phân ra hai loại thâm nhập cache: tĩnh và động Thâm nhập tĩnh: mỗi CPU chỉ thâm nhập cache tương ứng, không thâm nhập dữ liệu tại vùng cache của các CPU khác Thâm nhập động cho phép CPU của máy này có thể thâm nhập các cache của CPU khác b.Bài toán điều khiển CPU:

Có nhiều CPU, việc điều khiển CPU được phân ra một số cách như sau:

 Toàn bộ các CPU dành cho một quá trình : một quá trình được phân phối CPU, song tự quá trình nói trên nảy sinh các quá trình con; mỗi quá trình con được giải quyết trên mỗi CPU Các quá trình con có thể được coi như một tính toán hết sức đơn giản nào đó: Máy tính đa xử lý vector chia các công đoạn của quá trình và mỗi CPU thực hiện một quá trình con (một công đoạn) trong quá trình đó Máy tính đa xử lý ma trận cho phép mọi CPU cùng thực hiện một thao tác

Về dòng xếp hàng có thể xem xét theo hai mô hình dưới đây:

Thuật toán song song và ngôn ngữ lập trình song song

5.2.1.1 Khái niệm thuật toán song song:

Tính toán song song hay xử lý song song là quá trình xừ lý thông tin, trong đó nhấn mạnh nhiều đơn vị dữ liệu được xử lý đồng thời bởi 1 hay nhiều bộ xử lý để giải quyết 1 bài toán

Siêu máy tính là những máy tính đa năng thôn gthường có tốc dộ tính toán vô cùng lớn Chúng chia làm hai loại:

 Máy tính song song dựa trên bộ vi xử lý: được thiết kế với rất nhiều bộ xử lý có tốc độ vừa phải

 Siêu máy tính truyền thống (supercomputer): ít bộ xử lý hơn nhưng tốc độ của mỗi bộ xử lý đó cực cao

Song song về dữ liệu (data parallelism): là cơ chế sử dụng nhiều đơn vị xử lý thực hiện cùng 1 thao tác trên nhiều đơn vị dữ liệu

Song song diều khiện (control parallelism): là cơ chế nhiều thao tác khác nhau tác động lên nhiều đơn vị dữ liệu khác nhau 1 cách đồng thời

Dây chuyền (pipeline): là cơ chế chia công việc thành nhiều chặng nối tiếp, mỗi chặng được thực hiện bởi 1 bộ phận khác nhau Đầu ra của bộ phận này là đầu vào của bộ phận kế tiếp

Tăng tốc: là tỉ số giữa thời gian thực hiện trong tình huống xấu nhất của thuật toán tuần tự tốt nhất và thời gian thực hiện cũng công việc đó của thuật toán song song

5.2.1.2 Các mức độ song song:

Giả sử có 10 công việc từng đôi một khác nhau thì ta giao cho 10 máy làm, ta có mức độ song song cao nhất, và chúng ta gọi là mức chương trình song song Mỗi công việc ta lại chia thành các công đoạn (task) và có thể thực hiện song song, ta gọi mức độ song song này là mức song song chương trình con Mỗi chương trình cũng như chương trình con lại có hàng loạt câu lệnh, ta có mức độ song song câu lệnh, trong câu lệnh lại có hàng loạt thao tác (operation) -> mức độ song song thao tác

5.2.1.3 Phân loại các kiến trúc song song:

Một trong những phân loại hay được nhắc tới là của Flynn-1973 Micheal Flynn phân các kiến trúc máy tính thành 4 loại dựa trên tương tác giữa lệnh và dữ liệu:

SISD (single intruction stream, single data stream): là kiến trúc tuần tự Von Neuman, trong đó tại mỗi thời điểm chỉ 1 lệnh được thực hiện

MISD (multiple intruction stream, single data stream): kiến trúc này cho phép 1 vài lệnh thao tác trên 1 dữ liệu

SIMD (single intruction stream, multiple data stream): cho phép 1 lệnh được thực hiện đồng thời trên các dữ liệu khác nhau

MIMD (multiple intruction stream, multiple data stream): cho phép nhiều lệnh khác nhau có thể đồng thời xử lý nhiều dữ liệu khác nhau trong cùng 1 thời điểm

5.2.1.4 Đánh giá độ phức tạp của thuật toán song song:

Trong thuật toán tuần tự chúng ta chỉ quan tâm tới độ phức tạp vể thời gian và không gian, nhưng trong thuật toán song song thường có thêm 1 số đại lượng lường khác Hơn nữa, độ phức tạp thời gian của thuật toán song song không chỉ đơn giản là việc đếm số câu lệnh cơ bản như trong thuật toán tuần tự mà thay vào đó nó phụ thuộc vào các phép toán cơ bản này có thể được thự chiện trên P (P>1) bộ xử lý như thế nào Bên cạnh độ phức tạp thời gian độ phức tạp về số bộ xử lý cũng là 1 đại lượng qua trọng trong phân tích thuật toán song song Thiết kế thuật toán song song hiệu quả bao gồm việc lựa chọn cấu trúc dữ liệu phù hợp, phân bố bộ xử lý và cuối cùng là thực hiện thuật toán Ba đại lượng này tác động lẫn nhau như 1 tổ chức tính toán a/ Song song giới hạn và song song không giới hạn: Độ phức tạp thời gian của thuật toán song song cũng là 1 hàm của kích thước dữ liệu đầu vào – n Độ phức tạp thời gian là đại lượng quan trọng nhất của thuật toán song song bởi vì động cơ chính của song song là nhằm tăng tốc thời gian tính toán Độ phức tạp thời gian tồi nhất (hay đơn giản là độ phức tạp thời gian) của thuật toán song song giải quyết bài toán Pn với kích thước đầu vào n là 1 hàm f(n) cho thời gian lớn nhất từ lúc bắt đầu thực hiện thuật toán trên 1 hay nhiều bộ xử lý đến lúc kết thúc thuật toán bởi 1 hay nhiều bộ xử lý với bất kỳ bộ dữ liệu nào

Các thuật toán song song được thực hiện trên 1 tập các bộ xử lý nên đòi hỏi việc truyền dữ liệu giữa chúng Vì thế nó bao hàm 2 hoạt động khác nhau Một hoạt động là tính toán (như các phép toán số học hay logic) được thực hiện 1 cách cục bộ trên 1 bộ xử lý, hoạt động khác là gửi dữ liệu giữa các bộ xử lý Trong thuật toán song song 1 bước cơ bản là 1 tập các hoạt động cơ bản có thể được thực hiện 1 cách đồng thời bởi 1 tập các bộ xử lý - độ phức tạp thời gian của 1 bước cơ bản là hằng số hay O(1) Độ phức tạp thời gian của thuật toán song song được xác định bởi việc đếm số bước cơ bản và số bước chuyển giao dữ liệu, trong đó thời gian chuyển giao dữ liệu tại mỗi bước phụ thuộc vào mô hình liên kết giữa các bộ xử lý Một số tài liệu còn gọi độ phức tạp thời gian của thuật toán song song là độ sâu Độ phức tạp thời gian của thuật toán song song phụ thuộc vào mô hình tính toán song song được sử dụng 1 cách tốt nhất trên số lượng bộ xử lý Vì thế, khi đưa ra độ phức tạp thời gian của thuật toán song song cần thiết đưa ra số lượng lớn nhất bộ xử lý cần sử dụng như 1 hàm của kích thước dữ liệu đầu vào n, và gọi là độ phức tạp số bộ xừ lý của thuật toán Việc tổng hợp và phân tích 1 thuật toán song song dưới mô hình có P bộ xử lý (P là 1 số nguyên cố định và P>1) được gọi là mô hình song song có giới hạn Ngược lại, mô hình song song không giới hạn là khi mà chúng ta có và được phép tùy ý sử dụng một số lượng bộ xử lý không giới hạn

Thuật toán song song thực hiện trên mô hình P bộ xử lý gọi là P – song song Nếu thuật toán P – song song cho bài toán kích thước n đòi hỏi t(n) bước song song thì được gọi là P – có thễ tính toán trong thời gian t Chúng ta giả sử rằng 1 thuật toán song song A giải quyết bài toán kích thước n với P bộ xử lý Nếu tồn tại đa thức F sao cho ∀n, P=

Ngày đăng: 03/06/2024, 18:55

HÌNH ẢNH LIÊN QUAN

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 - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
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 (Trang 31)
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 - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
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 (Trang 32)
Hình 23 Tầm nhìn chương trình của người dùng - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 23 Tầm nhìn chương trình của người dùng (Trang 55)
Hình 24 Phần cứng phân đoạn - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 24 Phần cứng phân đoạn (Trang 57)
Hình 25 Thí dụ về phân đoạn - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 25 Thí dụ về phân đoạn (Trang 57)
Hình 26 Chia sẻ các phân đoạn trong một hệ thống bộ nhớ được phân đoạn - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 26 Chia sẻ các phân đoạn trong một hệ thống bộ nhớ được phân đoạn (Trang 58)
Hình 12 Phần cứng phân trang - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 12 Phần cứng phân trang (Trang 60)
Hình 13 Mô hình phân trang của bộ nhớ luận lý và vật lý - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 13 Mô hình phân trang của bộ nhớ luận lý và vật lý (Trang 61)
Hình 14 Thí dụ phân trang cho bộ nhớ 32 bytes với các trang có kích thức 4 bytes - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 14 Thí dụ phân trang cho bộ nhớ 32 bytes với các trang có kích thức 4 bytes (Trang 62)
Hình 15 các khung trống. (a) trước khi cấp phát. (b) sau khi cấp phát - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 15 các khung trống. (a) trước khi cấp phát. (b) sau khi cấp phát (Trang 63)
Hình 16 phần cứng phân trang với TBL - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 16 phần cứng phân trang với TBL (Trang 65)
Hình 17 Bit hợp lệ (v) và không hợp lệ (i) trong một bảng trang - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 17 Bit hợp lệ (v) và không hợp lệ (i) trong một bảng trang (Trang 67)
Hình 18 Cơ chế bảng trang hai cấp - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 18 Cơ chế bảng trang hai cấp (Trang 68)
Hình 0-19 Dịch địa chỉ cho kiến trúc phân trang hai cấp 32-bit - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 0 19 Dịch địa chỉ cho kiến trúc phân trang hai cấp 32-bit (Trang 69)
3.3.3.4.2. Bảng trang được băm: - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
3.3.3.4.2. Bảng trang được băm: (Trang 70)
Hình 0-21 Bảng trang đảo - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 0 21 Bảng trang đảo (Trang 71)
Hình 22 chia sẻ mã trong môi trường phân trang - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 22 chia sẻ mã trong môi trường phân trang (Trang 73)
Hình 1 - Lưu đồ trạng thái quá trình - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 1 Lưu đồ trạng thái quá trình (Trang 74)
Hình vẽ2.5 Một cây tiến trình trong hệ thống UNIX - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình v ẽ2.5 Một cây tiến trình trong hệ thống UNIX (Trang 76)
Hình 2.9 Các danh sách điều phối - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 2.9 Các danh sách điều phối (Trang 79)
Hình 2.10 Sơ đồ chuyển đổi giữa các danh sách điều phối - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 2.10 Sơ đồ chuyển đổi giữa các danh sách điều phối (Trang 80)
Hình 2.11 Cấp độ điều phối trung gian - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 2.11 Cấp độ điều phối trung gian (Trang 81)
Hình 2.12 Điều phối FIFO - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 2.12 Điều phối FIFO (Trang 81)
Hình 2.13 Điều phối Round Robin - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 2.13 Điều phối Round Robin (Trang 82)
Hình 2.14 Điều phối nhiều cấp ưu tiên - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 2.14 Điều phối nhiều cấp ưu tiên (Trang 85)
Hình 2.15 Điều phối Multilevel Feedback - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
Hình 2.15 Điều phối Multilevel Feedback (Trang 86)
Đồ thị cấp phát tài nguyên để tránh deadlock - Giáo trình hệ điều hành nghề tin học ứng dụng - Cao đẳng
th ị cấp phát tài nguyên để tránh deadlock (Trang 103)