Bài giảng Hệ điều hành - Chương 3: Kiến trúc cơ bản của hệ điều hành - Trần Trung Dũng
Quan điểm về máy tính từ góc nhìn nhà thiết kế HĐH
HĐH là một tầng phần mềm tạo ra máy ảo
HĐH cũng quản lý tài nguyên của máy tính nhưng chủ yếu là quản lý các chính sách chia sẻ tài nguyên, chúng ta sẽ thảo luận ở các bài học sau
Bài giảng hôm nay tập trung
Cách làm việc bên trong máy tính
Các cơ chế mở rộng của phần cứng cần thiết cho việc ảo hóa
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ điều hành - Chương 3: Kiến trúc cơ bản của hệ điều hành - Trần Trung Dũng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
File đính kèm:
- bai_giang_he_dieu_hanh_chuong_3_kien_truc_co_ban_cua_he_dieu.ppt
Nội dung text: Bài giảng Hệ điều hành - Chương 3: Kiến trúc cơ bản của hệ điều hành - Trần Trung Dũng
- Nội dung Quan điểm về máy tính từ góc nhìn nhà thiết kế HĐH HĐH là một tầng phần mềm tạo ra máy ảo HĐH cũng quản lý tài nguyên của máy tính nhưng chủ yếu là quản lý các chính sách chia sẻ tài nguyên, chúng ta sẽ thảo luận ở các bài học sau Bài giảng hôm nay tập trung Cách làm việc bên trong máy tính Các cơ chế mở rộng của phần cứng cần thiết cho việc ảo hóa ĐH KHTN TpHCM 2 TH 106: Hệ điều hành
- Máy tính von Neumann Những máy vi tính đầu tiên (cuối 40’s) thực sự là máy tính Sự cải tiến là lưu lại những dòng lệnh (mã hóa như là các số) cùng dữ liệu trên cùng một bộ nhớ Khó khăn khi phân biệt: Central Processing Unit (CPU) và Bộ nhớ (Memory) ĐH KHTN TpHCM 4 TH 106: Hệ điều hành
- Góc nhìn từ HĐH Máy tính là một thiết bị phần cứng cứ thực hiện xoay vòng “lấy lệnh-giải mã- thực thi” (fetch-decode-execute) Slide tiếp theo: sơ lược qua một máy tính đơn giản để minh họa Sự tổ chức của máy tính Gồm các thành phần nào và nối kết nhau như thế nào Một minh họa “lấy lệnh-giải mã- thực thi” Các lệnh cấp cao được chuyển thành cấp thấp (mã máy) như thế nào! Trong phần lõi của HĐH được xây dựng như một máy tính phức tạp trên nền phần cứng cơ bản ĐH KHTN TpHCM 6 TH 106: Hệ điều hành
- Giải mã lệnh Làm sao biểu diễn lệnh bằng các con số? 8 bits 8 bits 8 bits 8 bits Phép toán Toán hạng Kết quả +: 1 -: 2 *: 3 /: 4 ĐH KHTN TpHCM 8 TH 106: Hệ điều hành
- Con trỏ lệnh (The Program Counter, Instruction Pointer) Lệnh kế tiếp lưu ở đâu trong máy tính? Có một ô nhớ (thanh ghi) đặc biệt trong CPU gọi là bộ đếm“program counter" (PC) Bộ nhớ cho các mục đích đặc biệt trong CPU và thiết bị gọi là thanh ghi Tìm nhận lệnh kế tiếp: tăng PC bằng chiều dài lệnh (4) sau khi thực thi mỗi lệnh Giả thiết tất cả các lệnh cùng chiều dài ĐH KHTN TpHCM 10 TH 106: Hệ điều hành
- Bộ nhớ gián tiếp Làm sao để truy cập các phần tử trong mãng hiệu quả khi mà mọi việc chúng ta có thể làm là đặt tên cho ô nhớ? Hiệu chỉnh phép toán để cho phép nhận một phép toán từ một ô nhớ V.d.: LOAD [5], 2 nghĩa là lấy nội dung của ô nhớ có địa chỉ lưu trong ô nhớ 5 và gán vào ô nhớ có địa chỉ 2 Nếu ô 5 lưu số 100, thì chúng ta chép nội dung ô nhớ 100 vào ô nhớ 2 Như vậy gọi là gián tiếp Nhận nội dung của một ô được trỏ tới bởi một ô khác Phải tốn một bit trong phép toán để báo hiệu là bộ nhớ truy cập gián tiếp ĐH KHTN TpHCM 12 TH 106: Hệ điều hành
- Ví dụ: vòng lặp While while (counter > 0) { Các biến trong ô nhớ: counter ở ô 1 sum = sum + Y[counter]; sum ở 2 counter–-; index ở ô 3 }; Y[0]= ô 4, Y[1]=ô 5 Địa chỉ ô Nhãn Hợp ngữ Ý nghĩa nhớ Assembler 100 LOOP: BNZ 1,END // nhảy tới địa chỉ nhãn END // nếu ô nhớ 1 khác 0. 104 ADD 2,[3],2 // Cộng ô 2 với ô // được trỏ tới từ // từ ô 3 và gán kết quả // vào ô 2 108 DEC 3 // giảm ô 3 xuống 1 112 DEC 1 // giảm ô 1 xuống 1 116 JUMP LOOP // nhảy tới nhãn LOOP 120 END: ĐH KHTN TpHCM 14 TH 106: Hệ điều hành
- Phân loại bộ nhớ Toác ñoä Volatile Non-Volatile Dung löôïng ĐH KHTN TpHCM 16 TH 106: Hệ điều hành
- Kiến trúc cache của CPU 1 lõi 1 cache ĐH KHTN TpHCM 18 TH 106: Hệ điều hành
- Mô hình các thanh ghi Bộ nhớ 0 CPU 1 Phép toán +,-,*,/ 2 Phép logic 3 ,!= 4 Con trỏ lệnh 8 5 Thanh ghi 0 24 6 7 Thanh ghi 1 100 8 Thanh ghi 2 18 9 ĐH KHTN TpHCM 20 TH 106: Hệ điều hành
- Các lệnh cơ bản Cộng nội dung thanh ghi 2 và thanh ghi 3 rồi ghi lên thanh ghi 5 ADD r2,r3,r5 Cộng 100 vào con trỏ lệnh(PC) nếu thanh ghi 2 khác 0 Liên quan rẻ nhánh BNZ r2,100 Nạp nội dung vùng nhớ có địa chỉ lưu trong thanh ghi 5 vào thanh ghi 6 LDI r5,r6 ĐH KHTN TpHCM 22 TH 106: Hệ điều hành
- Processor Modes HĐH được lưu trong bộ nhớ mô hình von Neumann? Điều gì xảy ra nếu người dùng thay đổi mã HĐH hay dữ liệu? Đưa ra khái niệm modes of operation(chế độ thực thi) Các lệnh sẽ được thực thi trong user mode hay system mode Một thanh ghi đặc biệt lưu mode hiện hành Một số lệnh chỉ có thể được thực hiện trong system mode Tương tự như vậy, một số vùng nhớ chỉ có thể ghi lên khi đang ở trong system mode Chỉ có mã nguồn của HĐH được phép ở trong system mode Chỉ có HĐH có thể thay đổi giá trị trong bộ nhớ của nó Thanh ghi mode chỉ có thể được thay đổi trong system mode ĐH KHTN TpHCM 24 TH 106: Hệ điều hành
- Mô hình bảo vệ đơn giản CPU Bộ nhớ Phép toán +,-,*,/ 0 Phép logic ,!= system 99 Con trỏ lệnh 8 100 User 101 Thanh ghi 0-31 102 Thanh ghi mode 0 103 104 105 106 ĐH KHTN TpHCM 26 TH 106: Hệ điều hành
- Exceptions Điều gì xảy ra khi người dùng truy xuất vào mã hay dữ liệu của HĐH? Trả lời: exceptions Một exception xảy ra khi CPU phát hiện một lệnh mà nó không thể thi hành được Nhảy tới một vùng xử lý trong HĐH khi exception xảy ra Lỗi khác nhau sẽ được xử lý bởi những nơi khác nhau (“chuyển đến” ngôn ngữ HĐH) ĐH KHTN TpHCM 28 TH 106: Hệ điều hành
- Vi phạm vùng truy cập Chú ý là cả việc lấy lệnh hoặc dữ liệu từ bộ nhớ đều phải được kiểm tra Trong khi thực thi phải kiểm tra tất cả các toán hạng Đây là lược đồ quản lý sơ khai. Chúng ta sẽ học các lược đồ phức tạp hơn, đó là bộ nhớ ảo (virtual memory) trong phần sau của môn học ĐH KHTN TpHCM 30 TH 106: Hệ điều hành
- Exceptions & phục hồi Lấy lệnh: if (( the PC Thực thi: ĐH KHTN TpHCM 32 TH 106: Hệ điều hành
- “Lấy lệnh-giải mã-thực thi” và traps Lấy lệnh: if (( the PC Giải mã: if (lệnh là 1 trap) then the PC' = PC the PC = 68 the mode = 0 goto Lấy lệnh if (( thanh ghi kết quả == mode) && ( the mode bit == 1)) then Thực thi: ĐH KHTN TpHCM 34 TH 106: Hệ điều hành
- Trở về sau một Trap Làm sao trở về user mode và mã chương trình người dùng sau một trap? Gán thanh ghi mode = 0 rồi gán giá trị cho PC? Nhưng sau khi mode bit gán sang user mode, -> exception! Gán giá trị PC, rồi gán giá trị mode bit? Nhảy tới “vùng người dùng", rồi gán thành user mode Hầu hết máy tính có lệnh “trở về từ exception" Một lệnh trong phần cứng: Hoán đổi PC và PC' Gán mode bit sang “user mode” Traps và exceptions sử dụng cùng phương thức (RTE) ĐH KHTN TpHCM 36 TH 106: Hệ điều hành
- Mô hình interrupt đơn giản CPU Bộ nhớ Phép toán +,-,*,/ OS Phép logic ,!= User Con trỏ lệnh 8 PC' Interrupt line Đồng hồ Thanh ghi 0-31 Reset line Thanh ghi mode 0 ĐH KHTN TpHCM 38 TH 106: Hệ điều hành
- Interrupts Lấy lệnh: if (the clock interrupt line == 1) then the PC' = PC the PC = 72 the mode = 0 goto Lấy lệnh if (( the PC Lấy lệnh kế tiếp Giải mã: if (lệnh là một trap) then if (( thanh ghi kết quả == mode) && ( the mode bit == 1)) then Thực thi: ĐH KHTN TpHCM 40 TH 106: Hệ điều hành
- Lưu và phục hồi Context Nhắc lại trạng thái của processor: PC, PC', R0-R31, thanh ghi mode Khi có lời gọi vào hệ thống, chúng ta muốn hệ thống làm đúng theo yêu cầu và trả về cho chương trình người dùng sao cho nó có thể thực thi bình thường tiếp tục Không thể chỉ sử dụng các thanh ghi trong HĐH! Giải pháp: lưu/phục hồi user context Sử dụng bộ nhớ của HĐH để lưu toàn bộ trạng thái của CPU Trước khi trả về cho người dùng, nạp lại giá trị các thanh ghi và rồi thực thi các lệnh để trả về từ exception. ĐH KHTN TpHCM 42 TH 106: Hệ điều hành
- Thiết bị I/O cơ bản Card mạng có 2 thanh ghi: Một để chứa dữ liệu gửi ra đường truyền. Việc truyền thường được viết tắt TX (V.d. thanh ghi TX) Một để chứa dữ liệu nhận từ đường truyền Nhận thường được viết như là RX CPU truy cập các thanh ghi này như thế nào? Giải pháp: ánh xạ chúng vào bộ nhớ Một lệnh truy cập ô nhớ 98 nghĩa là truy cập thanh ghi TX Một lệnh truy cập ô nhớ 99 nghĩa là truy cập thanh ghi RX Các thanh ghi này được gọi là “ánh xạ bộ nhớ” (memory-mapped) ĐH KHTN TpHCM 44 TH 106: Hệ điều hành
- Tại sao cần “ánh xạ bộ nhớ” Dùng bộ nhớ cho các thanh ghi thiết bị nhằm 2 tính năng: Bảo vệ truy cập chỉ HĐH mới có thể truy cập thiết bị. Chương trình ứng dụng phải thông qua HĐH mới truy cập được thiết bị I/O vì các cơ chế bảo vệ đã thảo luận Tại sao chúng ta ngăn chặn truy cập trực tiếp thiết bị từ chương trình người dùng? HĐH điều khiển thiết bị, ghi hay đọc dữ liệu vào thiết bị Không cần sự thay đổi tập lệnh Gọi là programmed I/O ĐH KHTN TpHCM 46 TH 106: Hệ điều hành
- Polled I/O Gửi: While (bit 0 thanh ghi trạng thái == 1); // đợi sẳn sàng gửi Thanh ghi TX = data; Thanh ghi trạng thái |= 0x1; // gán bit 0 thanh ghi trạng thái =1 Nhận: While (bit 1 thanh ghi trạng thái != 1); // đợi dữ liệu đến Data = thanh ghi RX; Thanh ghi trạng thái &= 0x01; // báo nhận xong Không thể bắt HĐH dừng chờ dữ liệu đến! Giải pháp: xét lại sau mỗi nhịp đồng hồ If (bit 1 thanh ghi trạng thái == 1) Data = thanh ghi RX Thanh ghi trạng thái &= 0x01; ĐH KHTN TpHCM 48 TH 106: Hệ điều hành
- Polling vs. Interrupts Polling: chúng ta cứ 10 giây check email 1 lần thử có email mới không Interrupt: nếu có email mới, trình duyệt sẽ phát âm thanh báo. Nếu tất cả đều dùng polling! Interrupts yêu cầu chi phí nhiều hơn cho quá trình xử lý: Dừng processor Chỉ ra loại interrupt Lưu trạng thái người dùng Yêu cầu xử lý Nhân tố chính để chọn lựa là tầng số I/O so với chi phí Interrupt ĐH KHTN TpHCM 50 TH 106: Hệ điều hành
- Polled IO vs. Truy cập bộ nhớ trực tiếp (DMA) PIO làm ít việc hơn DMA PIO chỉ kiểm tra thanh ghi trạng thái, rồi gửi hay nhận dữ liệu DMA phải khởi tạo giá trị base, count, kiểm tra trạng thái và dùng interrupt DMA hiệu quả hơn trong việc truyền PIO trói buộc CPU trong suốt thời gian truyền Kích thước của dữ liệu truyền trở thành yếu tố quyết định để lựa chọn PIO hay DMA ĐH KHTN TpHCM 52 TH 106: Hệ điều hành
- Ví dụ PIO vs. DMA Tìm số byte sao cho chi phí PIO==DMA (làm tròn) cycles để NẠP: N cycles để GHI: G Số byte trong gói tin: B Số CPU cycles cho mỗi loại: Số cycles PIO = setup + G*B = N + G*B Số cycles cho DMA = setup + interrupt = 4N + 4000 Điều kiện PIO cycles = DMA cycles: N + G*B = 4N+4000 100+50B = 4(100)+4000 B = 86 bytes (làm tròn) Khi kích thước gói tin lớn hơn >86 bytes, DMA ít tốn CPU cycles hơn PIO. ĐH KHTN TpHCM 54 TH 106: Hệ điều hành
- Tóm tắt: thiết kế I/O Polling vs. interrupts Bằng cách nào thiết bị báo cho processor khi có sự kiện mới? Polling: thiết bị bị động, CPU phải đọc/ghi vào thanh ghi Interrupt: báo hiệu cho CPU bằng interrupt Programmed I/O vs. DMA Thiết bị gửi/nhận dữ liệu như thế nào Programmed I/O: CPU phải đọc/ghi trên thiết bị DMA: thiết bị đọc và ghi trên bộ nhớ ĐH KHTN TpHCM 56 TH 106: Hệ điều hành
- Quá trình khởi động máy tính (2) • (2) ROM chứa mã nguồn “boot” –Loại phần mềm chỉ đọc này gọi là firmware –Với x86, chương trình BIOS thực hiện lần lượt các công việc: •Kiểm tra cấu hình trong CMOS (complementary metal oxide semiconductor) •Nạp trình quản lý ngắt (interrupt handler) và các trình điều khiển thiết bị •Khởi tạo các thanh ghi và quản lý nguồn năng lượng(power management) •Thực hiện quá trình kiểm tra phần cứng (POST – power-on self-test) •Hiển thị các thiết lập hệ thống •Xác định các thiết bị có khả năng khởi động •Tiếp tục quá trình khởi động –Nạp và thực thi chương trình boot loader. 58 58
- Quá trình khởi động máy tính (3) • (3) Boot loader sau đó nạp phần còn lại của HĐH. Chú ý rằng tại thời điểm này HĐH vẫn chưa chạy –Boot loader hiểu được nhiều hệ điều hành khác nhau –Boot loader hiểu được nhiều phiên bản khác nhau của các HĐH –Đã bao giờ nghe “dual boot” ? 60 60
- Tại sao phải cần 1 chương trình Boot? Tại sao ta không lưu HĐH vào trong ROM? Tách HĐH ra khỏi phần cứng Nhiều HĐH hay Các phiên bản HĐH khác nhau Muốn boot từ nhiều thiết bị khác nhau V.d. bảo mật thông qua network boot HĐH thường khá lớn (4-8MB). Không nên làm giống như firmware ĐH KHTN TpHCM 62 TH 106: Hệ điều hành