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

Slide bài giảng hệ điều hành

62 1,3K 10
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 đề Hệ điều hành Linux
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Hệ Điều Hành
Thể loại Bài giảng
Thành phố Hà Nội
Định dạng
Số trang 62
Dung lượng 1,15 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Slide bài giảng hệ điều hành

Trang 1

4 Hệ điều hành Linux

Trang 3

Mục tiêu

 Khảo sát lịch sử hệ điều hành Unix - nguồn gốc của Linux và một

số nguyên tắc bắt buộc để thiết kế Linux

 Nghiên cứu mô hình xử lý Linux bằng việc minh họa cách định thời các quá trình và cung cấp truyền thông liên quá trình

 Xem xét cách quản lý bộ nhớ trong Linux

 Tìm hiểu xem Linux hiện thực hệ thống file và quản lý các thiết bị xuât nhập như thế nào

Trang 4

Lịch sử

thêm kernel(nhân) với mục đích chính là có khả năng thích hợp với Unix

thế giới, hầu hết họ trao đổi đều qua internet

tính thông thường, hơn nữa Linux còn có thể chạy trên nhiều nền phần cứng khác.

nó có thể chạy nhiều phần mềm Unix miễn phí, đó là kết quả của việc tích hợp code để có thể thích hợp Unix.

dụng, và các công cụ quản lý

Trang 5

The Linux Kernel

 Phiên bản 0.01 (5-1991) không có mạng, chỉ có thể chạy trên 80386- tương thích với vi xử lý intel và trên phần cứng máy tính, đặc biệt bị giới hạn trong giao tiếp device-drive, và chỉ cung cấp cho hệ thống file Minix

 Linux 1.0 (3-1994) có thêm một số tính năng mới:

 Hỗ trợ thêm giao thức mạng TCP/IP theo chuẩn UNIX

 Các chương trình mạng được hỗ trợ giao tiếp socket tương thích BCD

 Hỗ trợ giao tiếp Device-driver để có thể chạy IP trong mạng Ethernet

 Tăng cường hệ thống file

 Hỗ trợ cách sắp xếp cho điều khiển SCSI giúp tăng hiệu quả truy xuất đĩa.

 Hỗ trợ thêm phần cứng

 Phiên bản 1.2 (5-1995) là bản Linux kernel cho PC cuối cùng

Trang 6

Linux 2.0

 6-1996, 2.0 thêm 2 tính năng mới:

 Hỗ trợ thêm cấu trúc phức tạp, bao gồm cồng Alpha 64-bit

 Hỗ trợ cấu trúc đa vi xử lý

 Các tính năng khác:

 Cải thiện mã quản lý bộ nhớ

 Cải thiện hiệu suất TCP/IP

 Hỗ trợ vào nhân(kernel) sơ cấp các luồng, và tự động nạp các module theo yêu cầu

 Giao diện cấu hình chuẩn

 Được dùng cho Motorola 68000-series vi xử lý, hệ thống Sun Sparc,

PC và hệ thống PowerMac

 2.4 và 2.6 tăng thêm hỗ trợ SMP, thêm nhật ký trong hệ thống file, ưu tiên kernel, hỗ trợ bộ nhớ 64-bit

Trang 7

 Các hệ thống Linux được duy trì bởi một mạng lưới lỏng lẻo của các cộng tác trên Internet, với một số lượng nhỏ của các trang web công cộng hoạt động với tiêu chuẩn thực tế

Trang 8

Linux Distributions

Tập hợp các gói trước khi biên dịch hay distributions, bao gồm hệ

thống Linux cơ bản, cài đặt hệ thống, quản lý tiện ích và cơ chế sẵn sàng để cài đặt các gói của công cụ tiện ích

 Các phân phối đầu tiên quản lý các gói bằng cách đơn giản là cung cấp phương tiện để bung tất cả các tập tin vào nơi thích hợp; các phân phối sau này bao gồm các gói quản lý nâng cao

 Mỗi nhà phân phối bao gồm SLS và Slackware

Red Hat và Debian là các nhà phân phối phổ biến bao gồm các

nguồn thương mại và không thương mại

 Gói định dạng file RPM cho phép tích hợp giữa các nhà phân phối Linux

Trang 9

Giấy phép Linux

 Nhân Linux được phân phát bởi GNU General Public License

(GPL), các điều khoản trong đó được đặt ra bởi Free Software

Foundation

 Bất cứ ai sử dụng Linux, hay tạo ra các ứng dụng của Linux, có thể làm mất nguồn gốc của các sản phẩm độc quyền; phần mềm phát hành dưới GPL có thể không được cấp phát lại như là sản phẩm binary-only

Trang 10

Nguyên tắc thiết kế

 Linux là một hệ thống đa tác vụ, đa người dùng với tập hợp các

công cụ thích hợp với Unix

 Các hệ thống tập tin của nó tôn trọng triệt để UNIX semantic truyền thống , và nó thực hiện đầy đủ các tiêu chuẩn mô hình mạng UNIX

 Mục tiêu thiết kế chính là tốc độ, hiệu quả và tiêu chuẩn hóa

 Linux được thiết kế để có thể tuân thủ với các tài liệu liên quan

posix ; ít nhất có hai phân phối Linux đã chính thức được cấp giấy chứng nhận posix Giao diện lập trình Linux tuân thủ SVR4 UNIX semantics, hơn là để hoạt động BSD

Trang 11

Các thành phần hệ thống Linux

Trang 12

Các thành phần hệ thống Linux(Cont.)

 Giống như hiện thực UNIX, code tạo thành Linux gồm có 3 phần

chính; quan trọng nhất là sự khác biệt giữa nhân(kernel) và các

phần khác

Kernel có trách nhiệm duy trì những phần trừu tượng quan trọng

của hệ điều hành

Kernel code thực thi trong chế độ kernel với khả năng truy xuất

đến tất cả các tài nguyên vật lý của máy tính

 Tất cả các mã kernel và cấu trúc giữ liệu được giữ trong cùng

một không gian địa chỉ đơn

Trang 13

Các thành phần hệ thống Linux(Cont.)

 Hệ thống thư viện định nghĩa một tập hợp chuẩn các hàm,thông

qua các hàm này các ứng dụng có thể tương tác với nhân, và hiện

thực một số chức năng của hệ điều hành, mà không cần ưu tiên

qua mã kernel

system utilities thực thi các thao tác quản lý chuyên dụng cá nhân

Trang 14

Kernel modules

 Những phần của mã kernel có thể được biên dịch, load, và

unload không phụ thuộc vào những phần còn lại của kernel

 Kernel module có thể thực thi trình điều khiển thiết bị, file hệ

 Kernel modules cho phép Linux được thiết lập theo một tiêu

chuẩn,nhân nhỏ nhất mà không cần xây dựng thêm bất kỳ trình điều khiển thiết bị nào

 Linux module hỗ trợ 3 thành phần:

 Quản lý module

 Điều khiển đăng ký

 Giải quyết mâu thuẫn

Trang 15

Quản lý Module

 Hỗ trợ việc nạp module vào bộ nhớ, cho phép chúng giao tiếp với các phần còn lại của kernel

 Quá trình nạp module được chia thành 2 phần khác nhau:

 Quản lý các đoạn mã module trong bộ nhớ nhân

 Những module được phép tham khảo và trình bày tượng trưng

Module requestor quản lý các yêu cầu nạp dữ liệu; nó cũng liên

tục hỏi nhân xem các module động đã được nạp vẫn còn sử dụng không, và khi không cần nữa module này sẽ được xóa

Trang 16

Driver Registration (đăng ký bộ phận điều khiển)

 Cho phép module nói với phần còn lại của nhân rằng có một drive mới vừa được thêm vào

 Kernel duy trì một bảng động có lưu tất cả các driver, và cung cấp một tập hợp các routine cho phép các driver này thêm vào hay gõ

Trang 17

Giải quyết mâu thuẫn

 Là một kỹ thuật cho phép các tài nguyên khác nhau dành riêng các tài nguyên trong phần cứng và bảo vệ các tài nguyên này khỏi các tình huống bất ngờ được dùng từ các driver khác

 Module giải quyết mâu thuẫn có mục đích:

 Ngăn ngừa các va chạm khi các module truy xuất tài nguyên của phần cứng

 Ngăn ngừa sự quấy rối của các trình quản lý thiết bị đến

autoprobes

 Giải quyết các mâu thuẫn khi các driver cố gắng truy xuất vào cùng một phần cứng

Trang 18

Quản lý tiến trình

 Quản lý tiến trình Unix chia việc tạo quá trình và việc chạy các quá trình mới thành hai thao tác độc lập

Câu lệnh fork để tạo quá trình mới

Một chương trình được chạy sau lời gọi: execve

 Trong UNIX, một chương trình bao gồm tất cả các thông tin phải

duy trì t track để chứa các bối cảnh của một hiện thực đơn trong

quá trình đơn

 Trong Linux, đặc tính của quá trình chia thành 3 nhóm: đặc tính của quá trình, môi trường, và bối cảnh

Trang 19

Đồng nhất tiến trình

 ID của quá trình (PID) Định danh đơn cho quá trình; dùng cho những quá trình đặc biệt trong hệ điều hành khi một quá trình gọi một

system call để signal, modify, hay wait một quá trình khác

 Credentials Mỗi quá trình phải có một ID liên hệ với người sử dụng

và một hay nhiều nhóm ID có thể quyết định quyền truy xuất vào tài nguyên và file của hệ thống

 Personality Trong những hệ thống Unix thì không thể tìm thấy nhưng trong Linũ thì mỗi quá trình có một định danh liên kết cá nhân- mà nó

có thể sửa các sematic của một số system call

 Được sử dụng đầu tiên bởi các thư viện mô phỏng để yêu cầu các system call này thích hợp với một số tính năng của Unix

Trang 20

Môi trường tiến trình

 Môi trường tiến trình được thừa kế từ các tiến trình cha mẹ, và được soạn thảo thành 2 vector kết thúc bằng 0:

 The argument vector lists the command-line arguments used to invoke the running program; conventionally starts with the name of the program itself

 The environment vector is a list of “NAME=VALUE” pairs that

associates named environment variables with arbitrary textual

values

 Qua các biến môi trường trong số các quá trình và các biến được thừa

kế của tiến trình con, việc chuyển thông tin đến các phần của phần mềm hệ thống user-mode trở nên linh động

 Biến môi trường cung cấp cơ chế tùy định của hệ điều hành Cơ chế này được tạo ra ở mỗi quá trình, chứ không phải là định cầu hình hệ thống cho toàn bộ

Trang 21

Ngữ cảnh quá trình

 Trạng thái-thay đổi liên tục của một quá trình đang chạy tại một điểm thời gian

 Định thời ngữ cảnh là một phần quan trọng của ngữ cảnh quá trình;

đó là thông tin mà bộ định thời cần có để tạm ngưng hay khởi động lại quá trình

Kernel duy trì thông tin accounting về tài nguyên hiện hành được

sử dụng bởi mỗi quá trình, tổng số tài nguyên được sử dụng bởi quá trình từ lúc bắt đầu đến khi kết thúc

Bảng file là một mảng các con trỏ đến cấu trúc file kernel

 Khi tạo một file xuất nhập bằng system call, quá trình đề cập các file bởi địa chỉ của nó trong bảng

Trang 22

Ngữ cảnh quá trình

 Trong khi đó, bảng các tập tin liệt kê các file đang mở,

file-system context cung cấp yêu cầu để mở một file mới

 Những tập tin gốc hiện tại và đường dẫn mặc định được dùng cho việc tìm kiếm file mới được chứa trong đó

Signal-handler table định nghĩa các công việc trong không gian

địa chỉ quá trình được gọi khi có một tín hiệu đặc biệt đến

Virtual-memory context mô tả tất cả nội dung của không gian địa

chỉ riêng nó

Trang 23

Quá trình và luồng

 Linux dùng các cách trình bày giống nhau về bản chất của các quá trình và luồng; một luồng đơn giản chỉ là một quá trình mới, mà xảy

ra việc chia sẻ không gian địa chỉ với quá trình cha của nó

 Sự phân biệt chỉ được tạo ra khi có một luồng mới tạo ra bằng việc

gọi system call clone

fork tạo ra một quá trình con, có khả năng sở hữu toàn bộ quá

trình ngữ cảnh của nó

clone tạo ra một quá trình mới giống như chính nó, nhưng

được cho phép để chia sẻ cấu trúc dữ liệu của quá trình cha

Sử dụng clone để tạo một ứng dụng fine-grained điều khiển chính

xác những gì được chia sẻ giữa hai luồng

Trang 24

 Việc chạy các tác vụ kernel bao gồm cả các tác vụ yêu cầu bởi các quá trình đang chạy và các tác vụ thực thi thay mặt cho một thiết

bị điều khiển

 Như ví dụ 2.5, giải thuật định thời mới – ưu tiên, độ ưu tiên cơ sở

 Sắp xếp thời gian thực

 Giá trị đẹp

Trang 25

Qua hệ giữa độ ưu tiên và độ dài phân thời

gian

Trang 26

Danh sách các địa chỉ được ưu tiên

Trang 27

 Một trình điều khiển có thể chuyển các ngắt, các ngắt này làm cho CPU bắt đầu thực thi từng ngắt

 Đồng bộ nhân yêu cầu các framework để cho phép các vùng tranh chấp của nhân chạy mà không ngắt các vùng tranh chấp khác

Trang 28

Đồng bộ hóa Kernel

 Linux dùng 2 kỹ thuật để bảo vệ vùng tranh chấp:

1 Mã kernel bình thường thì nonpreemptible (until 2.4)

– khi có một ngắt xảy ra trong khi chương trình đang thực thi

một tác vụ của hệ thống nhân, cờ need_resched của kernel

được bật lên để bộ định thời sẽ chạy system call đến khi hoàn thành và điều khiển trả về chế độ người sử dụng

2 Kỹ thuật thứ hai là vùng tranh chấp xảy ra trong service routine– bằng cách dùng ngắt vi xử lý để điều khiển không cho ngắt xảy ra trong vùng tranh chấp, kernel đảm bảo rằng nó có thể

xử lý mà không có một lỗi nào do các cấu trúc dữ liệu chia xẻ truy suất cùng lúc

Trang 29

Đồng bộ hóa Kernel

 Để tránh những bất lợi hiệu suất , các nhân Linux dùng những cấu trúc đồng bộ, để cho phép những vùng tranh chấp dài chạy mà không vô hiệu các ngắt cho độ dài của tất cả các vùng tranh chấp

Interrupt service routines được chia thành a top half and a

Trang 31

Định Thời Tiến Trình

 Linux dùng hai giải thuật định thời tiến trình:

 Một giải thuật time-sharing để định thời ưu tiên cân bằng giữa nhiều tiến trình

 Một giải thuật real-time cho các tác vụ mà ở đó mức ưu tiên tuyệt đối quan trọng hơn sự cân bằng

 Một lớp định thời tiến trình sẽ xác định giải thuật nào được áp dụng

 Với các tiến trình time-sharing, Linux dùng một giải thuật có ưu tiên dựa trên credit

credits:

Trang 32

Định Thời Tiến Trình (tt)

 Linux hiện thực các lớp định thời FIFO và round-robin real-time trong cả hai trường hợp, mỗi tiến trình có một mức ưu tiên ngoài lớp định thời của nó

 Scheduler chạy tiến trình có mức ưu tiên cao nhất; với các tiến trình có cùng mức ưu tiên, nó chạy tiến trình đã chờ lâu nhất

 Các tiến trình FIFO tiếp tục chạy đến khi chúng thoát hay bị chặn lại

 Một tiến trình round-robin sẽ bị chiếm ưu tiên sau một khoảng

và chuyển vào cuối hàng đợi định thời, do đó các tiến trình

round-robing có cùng mức ưu tiên tự động chia sẻ thời gian với nhau

Trang 33

Thực Hiện Đa Tiến Trình Đồng Bộ

 Linux 2.0 là Linux kernel đầu tiên hỗ trợ thiết bị phần cứng SMP; các tiến trình hay tuyến có thể thực thi song song trên có bộ xử lý riêng biệt

 Để duy trì các yêu cầu đồng bộ hóa không ưu tiên của kernel, SMP đòi hỏi một hạn chế, thông qua một kernel spinlock đơn, mà mỗi lần chỉ có một bộ xử lý có thể thực thi mã kernel-mode

Trang 34

Quản Lý Bộ Nhớ

 Hệ thống quản lý bộ nhớ vật lý của Linux xử lý việc cấp phát và giải phóng các trang, nhóm trang và các block bộ nhớ

 Có các cơ chế phụ để xử lý bộ nhớ ảo, bộ nhớ được map vào

không gian địa chỉ của các tiến trình đang hoạt động

Chia bộ nhớ thành 3 miền (zones) khác nhau về đặc tính

Trang 35

Quan Hệ giữa các Miền và Địa Chỉ Bộ Nhớ

trong 80x86

Trang 36

Chia Bộ Nhớ thành một Buddy Heap

Trang 37

 Việc cấp phát bộ nhớ trong Linux kernel xuất hiện cả tĩnh (drivers dự trữ một khu vực bộ nhớ liên tiếp trong lúc khởi động hệ thống) hay động (thông qua page allocator)

Cũng sử dụng slab allocator cho bộ nhớ kernel

Trang 38

21.07

Trang 39

Bộ Nhớ Ảo

 Hệ thống VM duy trì không gian bộ nhớ thấy được cho mỗi tiến

trình: nó tạo các trang bộ nhớ ảo theo yêu cầu, và quản lý việc tải các trang từ đĩa hoặc swap trở ra đĩa khi cần

 VM manager giữ hai quan điểm riêng biệt về một không gian địa chỉ bộ nhớ của tiến trình :

 Một quan điểm luận lý mô tả các chỉ thị liên quan đến việc bố trí không gian địa chỉ

 Không gian bộ nhớ gồm một bộ các vùng nonoverlap, mỗi cái biểu diễn một tập con không gian địa chỉ kế tiếp nhau và đồng chỉ trang (page-aligned)

 Một quan điểm vật lý về mỗi không gian địa chỉ được chứa

trong các bảng (table) trang phần cứng cho tiến trình

Trang 40

Bộ Nhớ Ảo (tt)

 Các region (vùng) bộ nhớ ảo có các đặc điểm dựa trên:

 Backing store, mô tả nguồn gốc các trang dành cho một region; các regions thường được backed bởi một file hoặc không có gì

hết (demand-zero memory)

 Phản ứng của region với việc ghi (page sharing hay write)

copy-on- Kernel tạo một không gian địa chỉ ảo mới

1 Khi một tiến trình chạy một chương trình mới bằng lời gọi hệ

thống exec

2 Trong lúc tạo một tiến trình mới bằng lời gọi hệ thống fork

Trang 41

Bộ Nhớ Ảo (tt)

 Khi thực thi một chương trình mới, tiến trình được cho một không gian địa chỉ ảo mới hoàn toàn rỗng; các thủ tục tải chương trình đưa các region bộ nhớ ảo đến trú ở không gian địa chỉ này

Tạo một tiến trình mới với fork bao gồm việc tạo một bản sao đầy

đủ của không gian địa chỉ ảo của tiến trình đang có

 Kernel sao chép VMA descriptors của tiến trình cha, sau đó tạo một tập hợp page table cho tiến trình con

 Page tables của tiến trình cha được sao chép trực tiếp vào con, với reference count của mỗi trang được che giấu được tăng lên

 Sau fork, tiến trình cha và con chia sẻ cùng những trang bộ nhớ vật lý trong không gian địa chỉ của chúng

Trang 42

Bộ Nhớ Ảo (tt)

 Hệ thống VM paging di chuyển các trang bộ nhớ từ bộ nhớ chính ngoài ra ngoài bộ nhớ khi bộ nhớ được cần cho thứ gì khác

 Hệ thống VM paging có thể được chia làm hai phần:

 Giải thuật pageout-policy quyết định khi nào và trang nào được ghi ra ngoài đĩa

 Cơ chế thực sự thực hiện việc di chuyển, và page dữ liệu trở lại vào bộ nhớ vật lý khi cần

Ngày đăng: 12/09/2012, 15:44

TỪ KHÓA LIÊN QUAN

w