Nguyên lý hệ điều hành

0 0 0

Người đăng: Nguyen Nguyen

Theo Viblo Asia

1. Kiến trúc của hệ thống

1.1. Hoạt động của hệ thống máy tính image.png

  • Hệ thống hoạt động như một interrupt driven, thông thường ngắt chuyển điều khiển cho chương trình phục vụ ngắt thông qua vector ngắt (interrupt vector), kiến trúc ngắt (Interrupt architecture) phải lưu địa chỉ của lệnh bị ngắt, các ngắt đến bị vô hiệu trong khi một ngắt đang được thực hiện
  • Hệ thống duy trì trạng thái của CPU bằng cách lưu giữ các nội dung các thanh ghi, bộ đếm chương trình (PC) và địa chỉ của lệnh bị ngắt, sau khi phục vụ ngắt khôi phục lại ngữ cảnh trước ngắt

1.2. Cơ chế vào ra (I/O)

A. Cơ chế xoay vòng (polling)

  • CPU lần lượt hỏi (hoặc xoay vòng) các thiết bị I/O để xác định xem có thiết bị nào có yêu cầu trao đổi thông tin
  • Chương trình điều khiển được viết sẵn
  • Dữ liệu được trao đổi thông qua I/O port

B. Cơ chế I/O sử dụng ngắt

  • CPU không thực hiện Polling mà thiết bị I/O chủ động kích hoạt quá trình
  • Thiết bị I/O gây ngắt khi có yêu cầu thực hiện quá trình I/O
  • Trong khi thực hiện I/O, CPU có thể thực hiện các quá trình khác

1.3. Bảo vệ phần cứng

A. Dual-Mode

  • HĐH phải cung cấp sự hỗ trợ phần cứng để phân biệt giữa ít nhất 2 chế độ thực hiện: user mode và monitor mode
  • Khi một ngắt hoặc lỗi xuất hiện, phần cứng chuyển sang monitor mode

B. Bảo vệ I/O

  • Để tránh việc user thực hiện các vào-ra không hợp lệ phá vỡ hệ thống: tất cả các lệnh vào-ra là các lệnh đặc quyền -> user không thể thực hiện trực tiếp vào-ra mà phải thông qua các lời gọi hệ thống (system call)

C. Bảo vệ CPU

  • Timer – ngắt máy tính sau khoảng thời gian định sẵn để đảm bảo HĐH duy trì sự điều khiển, tránh chương trình của người sử dụng bị tắc trong vòng lặp vô hạn.

2. Hệ điều hành

Hệ điều hành là một bộ chương trình( mã nguồn và dữ liệu-các tham số hệ thống) đã được cài đặt sẵn có chức năng:

  • Điều phối, phân phối công việc cho các thành phần chức năng trong máy tính
  • Thỏa mãn tối đa yêu cầu người dùng
  • Cầu nối giao tiếp giữa người dùng (user) và hệ thống máy tính (hardware)

Phân loại hệ điều hành:

  • Hệ điều hành đơn chương trình: chỉ phục vụ 1 chương trình từ lúc bắt đầu được đưa vào bộ nhớ cho đến khi kết thúc
  • Hệ điều hành đa chương trình: tại một thời điểm có mặt đồng thời nhiều chương trình trong bộ nhớ
  • Hệ điều hành thời gian thực: mỗi tiến trình được gắn với một thời gian xác định phải hoàn thành là DeadTime
  • Hệ song song
  • Hệ phân tán

3. Tiến trình và luồng

Tiến trình

Tiến trình là một chương trình đang được thực thi. Một tiến trình gồm:

  • Mã nguồn chương trình (code)
  • Dữ liệu (data)
  • Bộ đếm chương trình (program counter)
  • Ngăn xếp (stack)
  • Giá trị ở các thanh ghi (register value)

Tiến trình tại một thời điểm có thể có một trong các trạng thái: new, running, waiting, ready, terminated image.png

Mỗi tiến trình có thể có đặc điểm sau:

  • Tiến trình hướng I/O: sử dụng nhiều thời gian thực hiện việc vào/ra hơn việc tính toán
  • Tiến trình hướng xử lý: sử dụng nhiều thời gian cho việc tính toán hơn việc vào/ra
  • Tiến trình tương tác hay xử lý theo lô: các tiến trình chiếm dụng CPU trong khoảng thời gian như nhau gọi là lượng tử thời gian

Hệ điều hành sử dụng 2 loại danh sách để điều phối các tiến trình: danh sách sẵn sàng và danh sách đợi

Các trình lập lịch tiến trình:

  • Lập lịch dài kỳ: lựa chọn tiến trình từ vùng đệm trong bộ nhớ ngoài vào bộ nhớ trong (ready list)
  • Lập lịch ngắn kỳ: điều phối CPU

Liên lạc giữa các tiến trình:

  • Tín hiệu: tín hiệu là một cơ chế phần mềm tương tự như các ngắt cứng tác động đến các tiến trình
  • Pipe: là một kênh liên lạc trực tiếp một chiều giữa hai tiến trình : dữ liệu xuất của tiến trình này được chuyển đến làm dữ liệu nhập cho tiến trình kia dưới dạng một dòng các byte. Một tiến trình chỉ có thể sử dụng một pipe do nó tạo ra hay kế thừa từ tiến trình cha.
  • Vùng nhớ chia sẻ: cho nhiều tiến trình cùng truy xuất đến một vùng nhớ chung gọi là vùng nhớ chia sẻ (shared memory).
  • Trao đổi thông điệp: các tiến trình giao tiếp và để đồng bộ các hành động của chúng không phải chia sẻ không gian địa chỉ chung mà thông qua trao đổi các thông điệp. Các hàm trao đổi thông điệp chính là send và receive
  • Socket: một socket được định nghĩa là một điểm cuối giao tiếp, được xác định bởi địa chỉ IP và số hiệu cổng

Luồng

Luồng được coi là mức thấp hơn của một tiến trình, mỗi tiến trình có thể gồm nhiều luồng.

Một luồng là một dòng xử lý cơ bản trong hệ thống, hoạt động của các luồng giống như tiến trình nhưng các luồng cùng chia sẻ không gian địa chỉ chung, các tiến trình thì hoàn toàn độc lập. Một luồng bao gồm:

  • Mã luồng
  • Bộ đếm chương trình
  • Tập thanh ghi
  • Stack

Bình luận

Bài viết tương tự

- vừa được xem lúc

[Review] Game Engine Black Book

[Review] Game Engine Black Book. Mặc dù tựa đề của cuốn sách đã nói lên khá rõ rằng đây là một cuốn sách về game development, nhưng nội dung bên trong nó thì rộng hơn rất là nhiều.

0 0 40

- vừa được xem lúc

Rework và tư duy build sản phẩm

Rework và tư duy build sản phẩm. Quyển này thì khá là nổi rồi, không cần phải giới thiệu nhiều về nó nữa.

0 0 41

- vừa được xem lúc

[Reading] What If?

[Reading] What If. Đây cũng là quyển sách được Bill Gates giới thiệu trên blog cá nhân của ông.

0 0 36

- vừa được xem lúc

[Reading] Engineer's Mini-Notebook: Communications Projects

[Reading] Engineer's Mini-Notebook: Communications Projects. Đây là một quyển trong bộ sách Engineer's Mini-Notebook được phát hành năm 1987 bởi Radio Shack, một thương hiệu bán đồ linh kiện điện tử k

0 0 34

- vừa được xem lúc

Weekend Reading - 03/2017

Weekend Reading - 03/2017. Bài viết này tổng hợp lại một vài vấn đề hay ho mà mình đọc được trong cuối tuần này.

0 0 42

- vừa được xem lúc

Tản mạn chuyện viết lách

Tản mạn chuyện viết lách. Chuyện sợ viết là một điều bình thường và phổ biến ở rất rất nhiều người, nhất là dân học IT, vốn không biết từ đâu bị gắn cho cái mác khô khan.

0 0 42