Nguyên lý hệ điều hành
Trang 1Chương 1: Tổng quan về hệ điều hành
Ths Phan Thanh Quảng
NGUYÊN LÝ HỆ ĐIỀU HÀNH
Chương 2: Quản lý tiến trình
Chương 3: Lập lịch cho CPU
Chương 4: Quản lý bộ nhớ trong
Chương 5: Quản lý bộ nhớ ngoài
Chương 6: Quản lý thiết bị
Chương 7: Bảo vệ & An toàn hệ thống
Chương 8: Tìm hiểu hệ điều hành LINUX
Trang 2Tài liệu tham khảo
1 Operator Systems Concepts (2001), A SilberChats, Sixth Editor
2 Hệ điều hành MSDOS 6.22 (1995) , Dương Quang Thiện Văn phòng SAMIS, TP Hồ Chí Minh
3 Operating Systems (1995), William Stalting Prentice Hall
4 Nguyên lý hệ điều hành (2005), Đặng Vũ Tùng, NXB Hà Nội
5 Modern Operating Systems (1995), Andrew S Tanenbum Prentice Hall
6 Tài liệu TH Hệ điều hành, Bùi Quốc Thái
Trang 3Tổng quan về hệ điều hành
Ths Phan Thanh Quảng
NGUYÊN LÝ HỆ ĐIỀU HÀNH
Trang 4Mục tiêu
- Kiến thức tổng quát về hệ điều hành
- Quá trình phát triển và phân loại hệ điều hành
- Các tính chất của hệ điều hành và nguyên tắc thiết kế, xây dựng hệ điều hành
- Cấu trúc cơ bản hệ điều hành, các thành phần cơ bản của
hệ điều hành
Trang 5Vì sao cần có hệ điều hành?
- Ban đầu phạm vi sử dụng máy tính còn rất hạn hẹp, chủ yếu là phục vụ mục đích nghiên cứu Để vận hành hệ thống cần phải sử dụng các công cụ phần cứng đặc biệt và thao tác vận hành rất phức tạp
- Công nghệ kỹ thuật điện tử phát triển mạnh à các thế hệ máy tính ngày càng nhỏ gọn, tiêu tốn ít năng lượng hơn, tốc độ xử lý nhanh hơn à tính phổ cập rộng hơn, nhiều người dùng hơn
- Để sử dụng và điều khiển máy tính đòi hỏi phải có sự hỗ trợ điều khiển, vận hành tự động, phát huy hiệu quả sử dụng tối ưu nhất à cần phải có một chương trình phần mềm đảm nhiệm việc giải quyết các vấn đề
- Cần có một chương trình điều hành hoạt động phần cứng máy tính, hỗ trợ con người sử dụng máy tính chỉ với các thao tác đơn giản, dễ hiểu, dễ nắm bắt và sử dụng
Trang 6Khái niệm cơ bản
Hệ điều hành là gì??
- Hệ điều hành là tập hợp các phần mềm hệ thống điều khiển mọi hoạt động của máy tính và tạo môi trường giao diện giữa người sử dụng và máy tính
- Hệ thống máy tính là một hệ thống kết hợp cả thiết bị phần cứng và điều khiển, phân phối công việc trong toàn hệ thống Hệ điều hành là chương trình có cơ chế tự động hóa, điều khiển hoạt động của hệ thống máy tính
- Hệ thống máy tính có thể phân chia thành 4 lớp:
• Phần cứng
• Hệ điều hành
• Các chương trình ứng dụng
• Người sử dụng
Trang 7Phần cứng Người dùng Người dùng Người dùng Người dùng
- Xét về phía phần cứng: hệ điều hành quản lý các thiết bị hiệu quả, khai thác hết khả năng của thiết bị, cung cấp cho các chương trình và người dùng tài nguyên phần cứng khi có yêu cầu, thu hồi khi cần thiết
- Xét về phía chương trình ứng dụng: hệ điều hành tạo môi trường để ứng dụng hoạt động, kích hoạt hay loại bỏ chương trình ứng dụng
Khái niệm cơ bản
Trang 8- Tài nguyên phần mềm: hệ điều hành, các chương trình ứng dụng, các cơ
sở dữ liệu đã cài đặt trong hệ thống
Khái niệm cơ bản
Trang 9Quá trình phát triển hệ điều hành
Ban đầu, các hệ điều hành làm việc theo phương pháp trọn gói, sau đó theo từng giai đoạn dần dần được bổ sung thêm các tính năng mới đáp ứng nhu cầu công việc của người sử dụng và sự phát triển của các hệ thống máy tính như sau:
- Monitor: là hệ điều hành đầu tiên tự động hóa, sắp xếp công việc cho máy tính thi hành, chương trình thường trú trong bộ nhớ
- Off-Line: tăng hiệu quả sử dụng thiết bị phần cứng, truy nhập logic các thiết bi mà không phụ thuộc tính chất vật lý của thiết bị
- Buffering: tăng tốc các phép trao đổi ngoại vi, giảm số lượng thao tác vào/ra vật lý, thực hiện song song các thao tác vào/ra thông tin
- Spool: cho phép hệ điều hành thao tác với thiết bị một cách song song, tăng tốc độ của hệ thống
- Multi Programing and Time sharing: Chia sẻ tài nguyên hệ thống cho các chương trình, tổ chức phân bổ tài nguyên theo kiểu hàng đợi
- Security: hỗ trợ khả năng tránh tranh chấp tài nguyên, sử dụng tài nguyên sai mục đích, khả năng gây lỗi hệ thống
Trang 10Phân loại hệ điều hành
- Hệ điều hành đơn nhiệm
Là hệ điều hành mà tại mỗi thời điểm chỉ có thể điều hành hoạt động của một chương trình Khi một chương trình được nạp vào bộ nhớ, nó chiếm dụng toàn bộ tài nguyên của hệ thống, do đó không thể thực thi một chương trình nào khác khi chương trình này chưa kết thúc
- Hệ điều hành đa nhiệm
Là hệ điều hành mà tại mỗi thời điểm cho phép thực hiện nhiều chương trình Tài nguyên trong chế độ hoạt động này được chia sẻ cho các chương trình Yếu tố cần quan tâm là phải đảm bảo tốt tính bình đẳng trong vấn đề phân phối tài nguyên
- Hệ điều hành đơn chương
Là hệ điều hành mà tại mỗi thời điểm chỉ cho phép một người sử dụng làm việc
- Hệ điều hành đa chương
Là hệ điều hành mà tại mỗi thời điểm cho phép nhiều người sử dụng cùng làm việc
Trang 11- Hệ điều hành chia sẻ thời gian
Là hệ điều hành mà một CPU luôn luôn phục vụ các tiến trình và một tiến trình có thể rơi vào trạng thái chờ đợi khi chưa được phân bổ CPU
- Hệ điều hành thời gian thực
Là hệ điều hành mà tiến trình được nạp vào hệ thống ở bất kỳ thời điểm nào đều được phân bổ CPU
Phân loại hệ điều hành
Trang 12- Hệ điều hành nhúng (Embeded OS)
Là hệ điều hành được phát triển và tích hợp trên các thiết bị di động như PDA, Mobile, Pocket PC, …với đặc tính hạn chế về tài nguyên, CPUchậm, bộ nhớ nhỏ, không ổ đĩa, … giúp quản lý năng lượng, tính di động cao, mở rộng khả năng tìm kiếm tài nguyên
Phân loại hệ điều hành
Trang 13dữ liệu, bảo vệ tài nguyên sử dụng, tránh sự vi phạm vô tình hay cố ý từ người sử dụng và các chương trình
- Tính hiệu quả
Các tài nguyên của hệ thống phải được khai thác một cách triệt để sao cho ngay cả khi hạn chế về tài nguyên vẫn có thể giải quyết các yêu cầu phức tạp, duy trì tốt hoạt động trong hệ thống
Trang 14- Tính kế thừa
Hệ điều hành phải có khả năng kế thừa các ưu điểm, khắc phục các nhược điểm của các phiên bản trước và thích nghi với những thay đổi trong tương lai Đảm bảo tính kế thừa sẽ duy trì và phát triển đội ngũ người sử dụng, giảm chi phí đào tạo khi tiếp cận các phiên bản mới
- Tính thuận lợi
Hệ điều hành phải sử dụng dễ dàng, có hiệu quả tùy theo kiến thức và kinh nghiệm của người dùng Nó phải có hệ thống trợ giúp, hướng dẫn phong phú, giúp người dùng có thể tự đào tạo mình trong quá trình sử dụng
Các tính chất cơ bản hệ điều hành
Trang 15Nguyên tắc thiết kế hệ điều hành
- Nguyên tắc tương đối trong định vị
Các module chương trình được viết theo địa chỉ tương đối tính từ đầu bộ nhớ, khi thực hiện chúng mới được định vị vào một vùng nhớ cụ thể à Nguyên tắc này giúp hệ thống sử dụng bộ nhớ linh hoạt, hệ điều hành không phụ thuộc vào cấu hình bộ nhớ
Trang 16- Nguyên tắc Macro Processor
Theo nguyên tắc này, khi có nhiệm vụ cụ thể hệ thống sẻ xây dựng các thẻ yêu cầu, liệt kê các công việc cần thực hiện, các chương trình tương ứng với công việc đó à làm cho quá trình đối thoại giữa người và máy linh hoạt mà không cần một chương trình dịch
- Nguyên tắc lập chức năng
Mỗi công việc có nhiều cách thực hiện khác nhau với những tổ hợp module khác nhau à đảm bảo tính an toàn của hệ thống
- Nguyên tắc giá trị chuẩn
Mỗi module có thể có nhiều tham số, việc nhớ hết các tham số và phạm vi
sử dụng là vấn đề quá phức tạp à quy định trong mỗi module có một tập các tham số ưng với những trường hợp hay gặp nhất
Nguyên tắc thiết kế hệ điều hành
Trang 17- Nguyên tắc khởi tạo khi cài đặt
Khi cài đặt hệ điều hành, chương trình cài đặt tạo ra những phiên bản làm việc thích hợp với những tham số kỹ thuật hiện có, loại bỏ các module không cần thiết à đảm bảo tối ưu về cấu trúc và phương thức hoạt động
- Nguyên tắc bảo vệ nhiều mức
Để đảm bảo an toàn hệ thống và dữ liệu, các chương trình và dữ liệu phải được bảo vệ ở nhiều mức khác nhau
Nguyên tắc thiết kế hệ điều hành
Trang 18Các chức năng cơ bản hệ điều hành
- Quản lý tiến trình
Có thể coi tiến trình là một chương trình đang hoạt động Khi thực hiện tiến trình đòi hỏi một số tài nguyên nhất định như: CPU, bộ nhớ, các thiết bị,…Các tài nguyên này sẽ được cấp phát cho tiến trình vào những thời điểm cần thiết và được thu hồi khi tiến trình kết thúc
Khi tiến trình đang hoạt động trong hệ thống có thể phát sinh các tiến trình con
à Nhiệm vụ của hệ điều hành trong quản lý các tiến trình:
* Đảm bảo những điều kiện tối thiểu để tiến trình có thể thực thi
* Đảm bảo những điều kiện cho sự hoạt động song song của nhiều tiến trình
* Tạo và xóa các tiến trình của người sử dụng và hệ thống
* Tạo các cơ chế để đồng bộ hóa các tiến trình
* Tạo các cơ chế để liên lạc giữa các tiến trình
* Tạo các cơ chế để xử lý các bế tắc
Trang 19- Quản lý bộ nhớ trong
Bộ nhớ trong là thiết bị lưu trữ mà CPU có thể truy xuất trực tiếp
Khi tổ chức một chương trình, sau khi biên dịch chương trình được chuyển sang ngôn ngữ máy và có các địa chỉ tương đối Khi thực hiện, chương trình nạp vào bộ nhớ, các địa chỉ tương đối chuyển thành địa chỉ vật lý xác định để CPU có thể truy xuất được trong quá trình xử lý Sau khi chương trình hoạt động xong, hệ thống cần giải phóng các địa chỉ vật
lý đã cấp phát
à Nhiệm vụ của hệ điều hành trong quản lý bộ nhớ trong
* Cấp phát và thu hồi không gian nhớ cho các tiến trình
* Lưu trữ dấu vết những thành phần của bộ nhớ hiện đang sử dụng và do tiến trình nào sử dụng
* Quyết định tiến trình nào được nạp vào bộ nhớ khi có khả năng
* Sắp xếp và giải phóng không gian nhớ cần thiết
Các chức năng cơ bản hệ điều hành
Trang 20- Quản lý bộ nhớ ngoài
Các hệ thống bắt buộc phải sử dụng bộ nhớ ngoài (đĩa từ, băng từ,…) để lưu trữ các chương trình hoặc dữ liệu
à Nhiệm vụ của hệ điều hành trong quản lý bộ nhớ ngoài
* Quản lý không gian nhớ tự do trên bộ nhớ ngoài
* Cấp phát không gian nhớ tự do
* Cung cấp các khả năng định vị bộ nhớ ngoài
* Lập lịch cho bộ nhớ ngoài
Các chức năng cơ bản hệ điều hành
Trang 21à Nhiệm vụ của hệ điều hành trong quản lý hệ thống nhập/xuất:
* Che dấu đặc thù của các thiết bị nhập/xuất
* Tạo lập các chương trình quản lý và điều khiển thiết bị
Các chức năng cơ bản hệ điều hành
Trang 22- Quản lý file
Khi lưu trữ thông tin trên bộ nhớ ngoài, mỗi thiết bị lưu trữ sẽ có những đặc tính vật lý khác nhau Để tạo điều kiện thuận lợi trong công tác lưu trữ và quản lý thông tin, hệ điều hành sử dụng một đơn vị lưu trữ đồng nhất trên tất cả các thiết bị lưu trữ gọi là file
à Nhiệm vụ của hệ điều hành trong quản lý File
* Tạo và xóa file/thư mục
* Hỗ trợ các nguyên lý thao tác file/thư mục
* Ánh xạ các file lên bộ nhớ phụ
* Ghi dự phòng các file lên bộ nhớ ổn định
Các chức năng cơ bản hệ điều hành
Trang 23- Quản lý bảo vệ hệ thống
Hệ điều hành được xây dựng các cơ chế bảo vệ, cho phép đặc tả sự kiểm soát và chiến lược bảo vệ thích hợp,…khi cho phép nhiều người sử dụng đồng thời, các tiến trình song hành cần phải được bảo vệ để tránh xâm phạm, gây sai lệch toàn hệ thống
à Nhiệm vụ của hệ điều hành trong quản lý bảo vệ hệ thống
* Giúp hệ thống hoạt động bình thường
* Bảo vệ tài nguyên sử dụng chung
* Phát hiện và ngăn chặn khả năng sai sót của các tiến trình
Các chức năng cơ bản hệ điều hành
Trang 24- Quản lý mạng
Mạng máy tính là một tập hợp các máy tính được kết nối với nhau bằng môi trường truyền tin nhằm mục đích cho phép người sử dụng dùng chung tài nguyên và phục vụ công tác truyền thông
à Nhiệm vụ của hệ điều hành trong quản lý mạng
* Hỗ trợ khả năng quản lý, điều hành hệ thống mạng
* Chia sẽ tài nguyên, truyền thông trên mạng máy tính
Các chức năng cơ bản hệ điều hành
Trang 25- Quản lý thông dịch lệnh
Một chương trình máy tính trước biên dịch được lưu trữ ở dạng ngôn ngữ bậc cao, giúp người sử dụng thuận tiện trong việc quản lý, nâng cấp và sử dụng
à Nhiệm vụ của hệ điều hành trong quản lý thông dịch lệnh
* Đóng vai trò tạo giao diện giữa máy tính và người sử dụng
* Biên dịch các chỉ thỉ thị, các lệnh của người sử dụng
Tuy nhiên khi chương trình được thực thi đồng nghĩa với việc chương trình cần được biên dịch sang mã quy ước của máy tính (mã máy) để máy tính có thể hiểu được, tổ chức và xử lý nội dung chương trình
Các chức năng cơ bản hệ điều hành
Trang 26Các thành phần của hệ điều hành
- Các dịch vụ của hệ điều hành
Hệ điều hành tạo ra môi trường cho các chương trình hoạt động à Hệ điều hành phải phục vụ chương trình và những người sử dụng chương trình đó
* Dịch vụ thực hiện chương trình
* Điều khiển thao tác vào/ra
Với những hệ điều hành khác nhau, sẽ có một số các dịch vụ đặc biệt khác nhau, nhưng về nguyên tắc chung, các hệ điều hành phải có một số kiểu dịch vụ sau:
* Các thao tác trên File/Folder
* Phát hiện lỗi sai sót
* Phân phối tài nguyên
* Thống kê, kế toán
* Tổ chức các dịch vụ
Trang 27Các lời gọi hệ thống chia thành 3 loại:
* Các chương trình điều khiển các tiến trình thực thi
* Các chương trình thao tác với File và thiết bị
* Các chương trình bảo trì thông tin hệ thống
Các thành phần của hệ điều hành
Trang 28- Các chương trình hệ thống
Các chương trình hệ thống cung cấp cho người sử dụng thực hiện các thao tác quản lý và điều khiển hệ thống Điển hình là:
* Các chương trình thao tác với File và Folder
* Các chương trình thông tin trạng thái
* Các chương trình hỗ trợ ngôn ngữ lập trình
* Các chương trình điều khiển nạp và thực hiện chương trình
* Các chương trình giải thích lệnh
Các thành phần của hệ điều hành
Trang 29- Các chương trình ứng dụng
Các chương trình ứng dụng đi kèm hệ điều hành nhằm mục đích hỗ trợ cho người sử dụng các thao tác ứng dụng cơ bản, bao gồm:
* Các chương trình soạn thảo văn bản
* Các chương trình xử lý thông tin, bảng biểu
* Các chương trình đồ họa cơ bản
* Các chương trình mạng, Internet, trình duyệt Web
* Các chương trình trò chơi giải trì, đa phương tiện
Các thành phần của hệ điều hành
Trang 30Lịch sử phát triển hệ điều hành
- Thế hệ 1 (1945 – 1955)
Vào khoảng giữa thập niên 1940, Howard Aiken ở Havard và John von Neumann ở Princeton, đã thành công trong việc xây dựng máy tính dùng ống chân không Những máy này rất lớn với hơn 10000 ống chân không nhưng chậm hơn nhiều so với máy rẻ nhất ngày nay
Mỗi máy được một nhóm thực hiện tất cả từ thiết kế, xây dựng lập trình, thao tác đến quản lý Lập trình bằng ngôn ngữ máy tuyệt đối, thường là bằng cách dùng bảng điều khiển để thực hiện các chức năng cơ bản Ngôn ngữ lập trình chưa được biết đến và hệ điều hành cũng chưa nghe đến Vào đầu thập niên 1950, phiếu đục lổ ra đời và có thể viết chương trình trên phiếu thay cho dùng bảng điều khiển
Trang 31- Thế hệ 2 (1955 – 1965)
Sự ra đời của thiết bị bán dẫn vào giữa thập niên 1950 làm thay đổi bức tranh tổng thể Máy tính trở nên đủ tin cậy hơn Nó được sản xuất và cung cấp cho các khách hàng Lần đầu tiên có sự phân chia rõ ràng giữa người thiết kế, người xây dựng, người vận hành, người lập trình, và người bảo trì
Để thực hiện một công việc (một chương trình hay một tập hợp các chương trình), lập trình viên trước hết viết chương trình trên giấy (bằng hợp ngữ hay FORTRAN) sau đó đục lỗ trên phiếu và cuối cùng đưa phiếu vào máy Sau khi thực hiện xong nó sẽ xuất kết quả ra máy in
Hệ thống xử lý theo lô ra đời, nó lưu các yêu cầu cần thực hiện lên băng
từ, và hệ thống sẽ đọc và thi hành lần lượt Sau đó, nó sẽ ghi kết quả lên băng từ xuất và cuối cùng người sử dụng sẽ đem băng từ xuất đi in
Hệ thống xử lý theo lô hoạt động dưới sự điều khiển của một chương trình đặc biệt là tiền thân của hệ điều hành sau này Ngôn ngữ lập trình sử dụng trong giai đoạn này chủ yếu là FORTRAN và hợp ngữ
Lịch sử phát triển hệ điều hành
Trang 32- Thế hệ 3 (1965 – 1980)
Trong giai đoạn này, máy tính được sử dụng rộng rãi trong khoa học cũng như trong thương mại Máy IBM 360 là máy tính đầu tiên sử dụng mạch tích hợp (IC) Từ đó kích thước và giá cả của các hệ thống máy giảm đáng
kể và máy tính càng phỗ biến hơn Các thiết bị ngoại vi dành cho máy xuất hiện ngày càng nhiều và thao tác điều khiển bắt đầu phức tạp
Hệ điều hành ra đời nhằm điều phối, kiểm soát hoạt động và giải quyết các yêu cầu tranh chấp thiế bị Chương trình hệ điều hành dài cả triệu dòng hợp ngữ và do hàng ngàn lập trình viên thực hiện
Hệ điều hành ra đời khái niệm đa chương CPU không phải chờ thực hiện các thao tác nhập xuất Bộ nhớ được chia làm nhiều phần, mỗi phần có một công việc (job) khác nhau, khi một công việc chờ thực hiện nhập xuất CPU sẽ xử lý các công việc còn lại
Giai đoạn này cũng đánh dấu sự ra đời của hệ điều hành chia xẻ thời gian như MULTICS, UNIX và hệ thống các máy mini cũng xuất hiện như DEC PDP-1
Lịch sử phát triển hệ điều hành
Trang 33Ngoài ra, từ đầu thập niên 90 cũng đánh dấu sự phát triển mạnh mẽ của
hệ điều hành mạng và hệ điều hành phân tán
Lịch sử phát triển hệ điều hành
Trang 34Trả lời lại câu hỏi: Vì sao cần phải có hệ điều hành?
1 Lợi ích cho người lập trình
+ Dễ dàng hơn trong việc lập trình
+ Chỉ thấy mức trừu tượng cao, không cần phải biết chi tiết phần cứng + Mỗi HĐH cung cấp một tập các hàm cơ bản, gọi là lời gọi hệ thống (system call) để phục vụ cho các yêu cầu từ các chương trình
+ Tương thích giữa các hệ thống
2 Lợi ích của người dùng
+ Dễ dàng sử dụng máy tính
+An toàn
* HĐH bảo vệ chương trình giữa các chương trình khác nhau
* HĐH bảo vệ người dùng giữa các người dùng khác nhau
Thảo luận
Trang 35sử dụng được nữa
Không
3 Mức độ cần thiết cho sự hoạt
động tối thiểu của máy tính
Bắt buộc phải có Không bắt buộc
4 Khả năng điều khiển phần cứng Điều hành tất cả
các thiết bị phần cứng
Không điều hành trực tiếp các thiết
bị phần cứng
5 Độ phức tạp Thiết kế công phu,
phức tạp
Tùy thuộc chức năng
6 Thứ tự cài đặt Trước Sau khi đã cài hệ
điều hành
7 Mức độ sử dụng Ai cũng sử dụng Vài người
Trang 36TT Tiêu chí so sánh Hệ điều hành Phần mềm
8 Hình thức quản lý Hệ điều hành quản
lý chương trình
Chương trình không quản lý hệ điều hành
9 Số lượng cài đặt trên mỗi máy
So sánh hệ điều hành và phần mềm
Trang 37Câu hỏi ôn tập
1 Trình bày khái niệm tài nguyên hệ thống Cho ví dụ minh họa
2 Nêu các chức năng cơ bản của hệ điều hành
3 Phân loại các hệ điều hành
4 Trình bày các nguyên tắc thiết kế hệ điều hành
5 So sánh một số tiêu chí giữa hệ điều hành và các phần mềm khác
Trang 38Quản lý tiến trình
Ths Phan Thanh Quảng
NGUYÊN LÝ HỆ ĐIỀU HÀNH
Trang 39- Khái niệm tiến trình
- Các mối quan hệ của các tiến trình trong hệ thống
- Các biện pháp quản lý các tiến trình song hành, giải quyết bài toán tranh chấp tài nguyên giữa các tiến trình
- Tìm hiểu về mối nguy hại của bế tắc trong hệ điều hành
- Các mức phòng tránh bế tắc của hệ điều hành và giải quyết một số tình trạng bế tắc
Mục tiêu
Trang 40Khái niệm tiến trình
Để hỗ trợ hoạt động đa nhiệm, hệ thống máy tính cần phải có khả năng thực hiện nhiều tác vụ xử lý đồng thời, nhưng việc điều khiển hoạt động song hành ở cấp phần cứng là rất khó khăn
Xây dựng trong hệ điều hành một mô hình song hành giả lập bằng cách: chuyển đổi bộ xử lý qua lại giữa các chương trình
để duy trì hoạt động của nhiều chương trình tại cùng một thời điểm Trong mô hình này, các chương trình hệ thống được tổ chức thành các tiến trình