Hệ điều hành - Hướng dẫn nhanh
Hệ điều hành (OS) là giao diện giữa người dùng máy tính và phần cứng máy tính. Hệ điều hành là một phần mềm thực hiện tất cả các tác vụ cơ bản như quản lý tệp, quản lý bộ nhớ, quản lý quy trình, xử lý đầu vào và đầu ra và điều khiển các thiết bị ngoại vi như ổ đĩa và máy in.
Một số Hệ điều hành phổ biến bao gồm Hệ điều hành Linux, Hệ điều hành Windows, VMS, OS / 400, AIX, z / OS, v.v.
Định nghĩa
Hệ điều hành là một chương trình hoạt động như một giao diện giữa người dùng và phần cứng máy tính và điều khiển việc thực thi tất cả các loại chương trình.
Sau đây là một số chức năng quan trọng của Hệ điều hành.
- Quản lý bộ nhớ
- Quản lý bộ xử lý
- Quản lý thiết bị
- Quản lý tệp
- Security
- Kiểm soát hiệu suất hệ thống
- Kế toán công việc
- Lỗi phát hiện hỗ trợ
- Phối hợp giữa phần mềm khác và người dùng
Quản lý bộ nhớ
Quản lý bộ nhớ đề cập đến việc quản lý Bộ nhớ chính hoặc Bộ nhớ chính. Bộ nhớ chính là một mảng lớn các từ hoặc byte trong đó mỗi từ hoặc byte có địa chỉ riêng của nó.
Bộ nhớ chính cung cấp khả năng lưu trữ nhanh chóng có thể được CPU truy cập trực tiếp. Để một chương trình được thực thi, nó phải nằm trong bộ nhớ chính. Hệ điều hành thực hiện các hoạt động sau để quản lý bộ nhớ -
Lưu giữ các dấu vết của bộ nhớ chính, tức là phần nào của nó được ai sử dụng, phần nào không được sử dụng.
Trong đa chương trình, hệ điều hành quyết định tiến trình nào sẽ lấy bộ nhớ khi nào và bao nhiêu.
Phân bổ bộ nhớ khi một tiến trình yêu cầu nó làm như vậy.
Khử cấp phát bộ nhớ khi một tiến trình không còn cần đến nó nữa hoặc đã bị kết thúc.
Quản lý bộ xử lý
Trong môi trường đa chương trình, hệ điều hành quyết định tiến trình nào lấy bộ xử lý khi nào và trong bao lâu. Chức năng này được gọi làprocess scheduling. Hệ điều hành thực hiện các hoạt động sau để quản lý bộ xử lý -
Theo dõi bộ xử lý và trạng thái của quá trình. Chương trình chịu trách nhiệm cho nhiệm vụ này được gọi làtraffic controller.
Phân bổ bộ xử lý (CPU) cho một quá trình.
Bỏ phân bổ bộ xử lý khi một quy trình không còn được yêu cầu.
Quản lý thiết bị
Hệ điều hành quản lý giao tiếp thiết bị thông qua trình điều khiển tương ứng của chúng. Nó thực hiện các hoạt động sau để quản lý thiết bị -
Theo dõi tất cả các thiết bị. Chương trình chịu trách nhiệm cho nhiệm vụ này được gọi làI/O controller.
Quyết định quy trình lấy thiết bị khi nào và trong bao lâu.
Phân bổ thiết bị một cách hiệu quả.
Bỏ phân bổ thiết bị.
Quản lý tệp
Hệ thống tệp thường được tổ chức thành các thư mục để dễ dàng điều hướng và sử dụng. Các thư mục này có thể chứa các tệp và các chỉ dẫn khác.
Hệ điều hành thực hiện các hoạt động sau để quản lý tệp:
Theo dõi thông tin, vị trí, sử dụng, tình trạng, v.v. Các cơ sở tập thể thường được biết đến như file system.
Quyết định ai nhận được tài nguyên.
Phân bổ các nguồn lực.
Khử phân bổ tài nguyên.
Các hoạt động quan trọng khác
Sau đây là một số hoạt động quan trọng mà Hệ điều hành thực hiện:
Security - Bằng mật khẩu và các kỹ thuật tương tự khác, nó ngăn chặn truy cập trái phép vào các chương trình và dữ liệu.
Control over system performance - Ghi lại độ trễ giữa yêu cầu dịch vụ và phản hồi từ hệ thống.
Job accounting - Theo dõi thời gian và tài nguyên được sử dụng bởi các công việc và người dùng khác nhau.
Error detecting aids - Sản xuất bãi chứa, dấu vết, thông báo lỗi và các công cụ hỗ trợ gỡ lỗi và phát hiện lỗi khác.
Coordination between other softwares and users - Điều phối và phân công trình biên dịch, thông dịch, lắp ráp và các phần mềm khác cho những người sử dụng hệ thống máy tính khác nhau.
Hệ điều hành đã có từ thế hệ máy tính đầu tiên và chúng tiếp tục phát triển theo thời gian. Trong chương này, chúng ta sẽ thảo luận về một số loại hệ điều hành quan trọng được sử dụng phổ biến nhất.
Hệ điều hành hàng loạt
Người dùng của một hệ điều hành hàng loạt không tương tác trực tiếp với máy tính. Mỗi người dùng chuẩn bị công việc của mình trên một thiết bị ngoại tuyến như thẻ đục lỗ và nộp nó cho người điều hành máy tính. Để tăng tốc độ xử lý, các công việc có nhu cầu tương tự được phân chia cùng nhau và chạy như một nhóm. Các lập trình viên để lại chương trình của họ cho người điều hành và người điều hành sau đó sắp xếp các chương trình có yêu cầu tương tự thành các lô.
Các vấn đề với Hệ thống hàng loạt như sau:
- Thiếu sự tương tác giữa người dùng và công việc.
- CPU thường không hoạt động, do tốc độ của các thiết bị I / O cơ học chậm hơn CPU.
- Khó cung cấp mức độ ưu tiên mong muốn.
Hệ điều hành chia sẻ thời gian
Chia sẻ thời gian là một kỹ thuật cho phép nhiều người, ở các đầu cuối khác nhau, có thể sử dụng một hệ thống máy tính cụ thể cùng một lúc. Chia sẻ thời gian hoặc đa nhiệm là một phần mở rộng hợp lý của đa chương trình. Thời gian của bộ xử lý được chia sẻ giữa nhiều người dùng đồng thời được gọi là chia sẻ thời gian.
Sự khác biệt chính giữa Hệ thống lô đa chương trình và Hệ thống chia sẻ thời gian là trong trường hợp Hệ thống lô đa chương trình, mục tiêu là tối đa hóa việc sử dụng bộ xử lý, trong khi trong Hệ thống chia sẻ thời gian, mục tiêu là giảm thiểu thời gian phản hồi.
Nhiều công việc được thực thi bởi CPU bằng cách chuyển đổi giữa chúng, nhưng việc chuyển đổi xảy ra thường xuyên. Do đó, người dùng có thể nhận được phản hồi ngay lập tức. Ví dụ, trong xử lý giao dịch, bộ xử lý thực hiện từng chương trình người dùng trong một loạt ngắn hoặc lượng tử tính toán. Đó là, nếunngười dùng hiện diện, sau đó mỗi người dùng có thể nhận được một lượng tử thời gian. Khi người dùng gửi lệnh, thời gian phản hồi tối đa là vài giây.
Hệ điều hành sử dụng lập lịch CPU và lập trình đa chương trình để cung cấp cho mỗi người dùng một phần nhỏ thời gian. Hệ thống máy tính được thiết kế chủ yếu dưới dạng hệ thống hàng loạt đã được sửa đổi thành hệ thống chia sẻ thời gian.
Ưu điểm của hệ điều hành Timesharing như sau:
- Cung cấp lợi thế của phản ứng nhanh chóng.
- Tránh trùng lặp phần mềm.
- Giảm thời gian nhàn rỗi của CPU.
Nhược điểm của hệ điều hành Chia sẻ thời gian như sau:
- Vấn đề về độ tin cậy.
- Câu hỏi về tính bảo mật và tính toàn vẹn của các chương trình và dữ liệu người dùng.
- Vấn đề về truyền thông dữ liệu.
Hệ điều hành phân tán
Hệ thống phân tán sử dụng nhiều bộ xử lý trung tâm để phục vụ nhiều ứng dụng thời gian thực và nhiều người dùng. Các công việc xử lý dữ liệu được phân bổ giữa các bộ xử lý cho phù hợp.
Các bộ xử lý giao tiếp với nhau thông qua các đường truyền thông khác nhau (chẳng hạn như xe buýt tốc độ cao hoặc đường dây điện thoại). Chúng được gọi làloosely coupled systemshoặc các hệ thống phân tán. Các bộ xử lý trong hệ thống phân tán có thể khác nhau về kích thước và chức năng. Những bộ xử lý này được gọi là trang web, nút, máy tính, v.v.
Ưu điểm của hệ thống phân tán như sau:
- Với cơ sở chia sẻ tài nguyên, người dùng tại một trang này có thể sử dụng các tài nguyên có sẵn ở trang khác.
- Tăng tốc độ trao đổi dữ liệu với nhau qua thư điện tử.
- Nếu một trang bị lỗi trong hệ thống phân tán, các trang còn lại có thể tiếp tục hoạt động.
- Dịch vụ tốt hơn cho khách hàng.
- Giảm tải trên máy tính chủ.
- Giảm sự chậm trễ trong xử lý dữ liệu.
Hệ điều hành mạng
Hệ điều hành mạng chạy trên máy chủ và cung cấp cho máy chủ khả năng quản lý dữ liệu, người dùng, nhóm, bảo mật, ứng dụng và các chức năng mạng khác. Mục đích chính của hệ điều hành mạng là cho phép truy cập tệp và máy in được chia sẻ giữa nhiều máy tính trong mạng, thường là mạng cục bộ (LAN), mạng riêng hoặc các mạng khác.
Ví dụ về hệ điều hành mạng bao gồm Microsoft Windows Server 2003, Microsoft Windows Server 2008, UNIX, Linux, Mac OS X, Novell NetWare và BSD.
Ưu điểm của hệ điều hành mạng như sau:
- Máy chủ tập trung có độ ổn định cao.
- Bảo mật là do máy chủ quản lý.
- Nâng cấp công nghệ và phần cứng mới có thể được tích hợp dễ dàng vào hệ thống.
- Có thể truy cập từ xa vào máy chủ từ các vị trí và loại hệ thống khác nhau.
Những nhược điểm của hệ điều hành mạng như sau:
- Chi phí mua và chạy máy chủ cao.
- Sự phụ thuộc vào vị trí trung tâm cho hầu hết các hoạt động.
- Bảo trì và cập nhật thường xuyên là bắt buộc.
Hệ điều hành thời gian thực
Hệ thống thời gian thực được định nghĩa là hệ thống xử lý dữ liệu trong đó khoảng thời gian cần thiết để xử lý và phản hồi các đầu vào là rất nhỏ để nó kiểm soát môi trường. Thời gian hệ thống thực hiện để phản hồi đầu vào và hiển thị thông tin cập nhật bắt buộc được gọi làresponse time. Vì vậy, trong phương pháp này, thời gian phản hồi rất ít hơn so với xử lý trực tuyến.
Hệ thống thời gian thực được sử dụng khi có các yêu cầu khắt khe về thời gian đối với hoạt động của bộ xử lý hoặc luồng dữ liệu và hệ thống thời gian thực có thể được sử dụng như một thiết bị điều khiển trong một ứng dụng chuyên dụng. Hệ điều hành thời gian thực phải có các ràng buộc thời gian cố định, được xác định rõ ràng, nếu không hệ thống sẽ bị lỗi. Ví dụ: Thí nghiệm khoa học, hệ thống hình ảnh y tế, hệ thống điều khiển công nghiệp, hệ thống vũ khí, rô bốt, hệ thống kiểm soát không lưu, v.v.
Có hai loại hệ điều hành thời gian thực.
Hệ thống thời gian thực cứng
Hệ thống thời gian thực cứng đảm bảo rằng các tác vụ quan trọng sẽ hoàn thành đúng thời hạn. Trong các hệ thống thời gian thực cứng, bộ nhớ thứ cấp bị hạn chế hoặc bị thiếu và dữ liệu được lưu trong ROM. Trong các hệ thống này, bộ nhớ ảo hầu như không được tìm thấy.
Hệ thống thời gian thực mềm
Hệ thống thời gian thực mềm ít hạn chế hơn. Một nhiệm vụ quan trọng trong thời gian thực được ưu tiên hơn các nhiệm vụ khác và giữ nguyên mức độ ưu tiên cho đến khi hoàn thành. Hệ thống thời gian thực mềm có tiện ích hạn chế hơn so với hệ thống thời gian thực cứng. Ví dụ: đa phương tiện, thực tế ảo, Dự án khoa học tiên tiến như thám hiểm dưới biển và tàu thám hiểm hành tinh, v.v.
Hệ điều hành cung cấp dịch vụ cho cả người dùng và chương trình.
- Nó cung cấp cho các chương trình một môi trường để thực thi.
- Nó cung cấp cho người dùng các dịch vụ để thực thi các chương trình một cách thuận tiện.
Sau đây là một số dịch vụ phổ biến được cung cấp bởi một hệ điều hành:
- Thực hiện chương trình
- Hoạt động I / O
- Thao tác hệ thống tệp
- Communication
- Phát hiện lỗi
- Phân bổ nguồn lực
- Protection
Thực hiện chương trình
Hệ điều hành xử lý nhiều loại hoạt động từ chương trình người dùng đến chương trình hệ thống như bộ đệm máy in, máy chủ định danh, máy chủ tệp, v.v. Mỗi hoạt động này được gói gọn như một quy trình.
Một tiến trình bao gồm bối cảnh thực thi hoàn chỉnh (mã để thực thi, dữ liệu để thao tác, đăng ký, tài nguyên hệ điều hành đang được sử dụng). Sau đây là các hoạt động chính của hệ điều hành liên quan đến quản lý chương trình -
- Tải một chương trình vào bộ nhớ.
- Thực thi chương trình.
- Xử lý việc thực thi chương trình.
- Cung cấp cơ chế đồng bộ hóa quy trình.
- Cung cấp cơ chế giao tiếp quy trình.
- Cung cấp cơ chế xử lý bế tắc.
Hoạt động I / O
Hệ thống con I / O bao gồm các thiết bị I / O và phần mềm trình điều khiển tương ứng của chúng. Trình điều khiển ẩn các đặc thù của các thiết bị phần cứng cụ thể với người dùng.
Hệ điều hành quản lý giao tiếp giữa người dùng và trình điều khiển thiết bị.
- Hoạt động I / O có nghĩa là thao tác đọc hoặc ghi với bất kỳ tệp nào hoặc bất kỳ thiết bị I / O cụ thể nào.
- Hệ điều hành cung cấp quyền truy cập vào thiết bị I / O cần thiết khi được yêu cầu.
Thao tác hệ thống tệp
Một tệp đại diện cho một tập hợp các thông tin liên quan. Máy tính có thể lưu trữ các tập tin trên đĩa (lưu trữ thứ cấp), nhằm mục đích lưu trữ lâu dài. Ví dụ về phương tiện lưu trữ bao gồm băng từ, đĩa từ và các ổ đĩa quang như CD, DVD. Mỗi phương tiện này có các thuộc tính riêng như tốc độ, dung lượng, tốc độ truyền dữ liệu và phương thức truy cập dữ liệu.
Hệ thống tệp thường được tổ chức thành các thư mục để dễ dàng điều hướng và sử dụng. Các thư mục này có thể chứa các tệp và các chỉ dẫn khác. Sau đây là các hoạt động chính của hệ điều hành liên quan đến quản lý tệp:
- Chương trình cần đọc tệp hoặc ghi tệp.
- Hệ điều hành cấp quyền cho chương trình hoạt động trên tệp.
- Quyền thay đổi từ chỉ đọc, đọc-ghi, bị từ chối, v.v.
- Hệ điều hành cung cấp một giao diện cho người dùng để tạo / xóa tệp.
- Hệ điều hành cung cấp một giao diện cho người dùng để tạo / xóa thư mục.
- Hệ điều hành cung cấp một giao diện để tạo bản sao lưu của hệ thống tệp.
Giao tiếp
Trong trường hợp hệ thống phân tán là tập hợp các bộ xử lý không chia sẻ bộ nhớ, thiết bị ngoại vi hoặc đồng hồ, hệ điều hành quản lý thông tin liên lạc giữa tất cả các quá trình. Nhiều tiến trình giao tiếp với nhau thông qua các đường truyền thông trong mạng.
Hệ điều hành xử lý các chiến lược định tuyến và kết nối cũng như các vấn đề về tranh chấp và bảo mật. Sau đây là các hoạt động chính của một hệ điều hành liên quan đến giao tiếp -
- Hai quy trình thường yêu cầu dữ liệu được chuyển giữa chúng
- Cả hai quy trình có thể trên một máy tính hoặc trên các máy tính khác nhau, nhưng được kết nối thông qua mạng máy tính.
- Giao tiếp có thể được thực hiện bằng hai phương pháp, hoặc bằng Bộ nhớ dùng chung hoặc bằng Truyền tin nhắn.
Xử lý lỗi
Sai sót có thể xảy ra bất cứ lúc nào và bất cứ nơi đâu. Có thể xảy ra lỗi trong CPU, trong các thiết bị I / O hoặc trong phần cứng bộ nhớ. Sau đây là các hoạt động chính của hệ điều hành liên quan đến xử lý lỗi:
- Hệ điều hành liên tục kiểm tra các lỗi có thể xảy ra.
- Hệ điều hành thực hiện một hành động thích hợp để đảm bảo tính toán chính xác và nhất quán.
Quản lý tài nguyên
Trong trường hợp môi trường đa người dùng hoặc đa tác vụ, các tài nguyên như bộ nhớ chính, chu kỳ CPU và lưu trữ tệp sẽ được phân bổ cho từng người dùng hoặc công việc. Sau đây là các hoạt động chính của hệ điều hành liên quan đến quản lý tài nguyên -
- Hệ điều hành quản lý tất cả các loại tài nguyên bằng cách sử dụng bộ lập lịch.
- Các thuật toán lập lịch trình CPU được sử dụng để sử dụng CPU tốt hơn.
Sự bảo vệ
Xem xét một hệ thống máy tính có nhiều người dùng và thực hiện đồng thời nhiều quá trình, các quá trình khác nhau phải được bảo vệ khỏi các hoạt động của nhau.
Bảo vệ đề cập đến một cơ chế hoặc cách thức để kiểm soát quyền truy cập của các chương trình, quy trình hoặc người dùng vào các tài nguyên được xác định bởi hệ thống máy tính. Sau đây là các hoạt động chính của hệ điều hành liên quan đến bảo vệ -
- Hệ điều hành đảm bảo rằng mọi truy cập vào tài nguyên hệ thống đều được kiểm soát.
- Hệ điều hành đảm bảo rằng các thiết bị I / O bên ngoài được bảo vệ khỏi các nỗ lực truy cập không hợp lệ.
- Hệ điều hành cung cấp các tính năng xác thực cho từng người dùng bằng mật khẩu.
Xử lý hàng loạt
Xử lý hàng loạt là một kỹ thuật trong đó Hệ điều hành thu thập các chương trình và dữ liệu với nhau trong một lô trước khi bắt đầu xử lý. Hệ điều hành thực hiện các hoạt động sau liên quan đến xử lý hàng loạt -
Hệ điều hành xác định một công việc có chuỗi lệnh, chương trình và dữ liệu được xác định trước như một đơn vị duy nhất.
Hệ điều hành lưu giữ một số công việc trong bộ nhớ và thực hiện chúng mà không cần bất kỳ thông tin thủ công nào.
Công việc được xử lý theo thứ tự gửi, tức là ai đến trước được phục vụ trước.
Khi một công việc hoàn thành việc thực thi, bộ nhớ của nó sẽ được giải phóng và đầu ra của công việc được sao chép vào một ống xuất để in hoặc xử lý sau này.
Ưu điểm
Xử lý hàng loạt mất nhiều công việc của người vận hành đối với máy tính.
Tăng hiệu suất khi công việc mới bắt đầu ngay sau khi công việc trước đó kết thúc mà không cần bất kỳ sự can thiệp thủ công nào.
Nhược điểm
- Chương trình khó gỡ lỗi.
- Một công việc có thể đi vào một vòng lặp vô hạn.
- Do thiếu chương trình bảo vệ, một công việc hàng loạt có thể ảnh hưởng đến các công việc đang chờ xử lý.
Đa nhiệm
Đa nhiệm là khi nhiều công việc được CPU thực hiện đồng thời bằng cách chuyển đổi giữa chúng. Việc chuyển mạch xảy ra thường xuyên đến mức người dùng có thể tương tác với từng chương trình khi chương trình đang chạy. Hệ điều hành thực hiện các hoạt động sau liên quan đến đa nhiệm:
Người dùng đưa ra hướng dẫn trực tiếp cho hệ điều hành hoặc một chương trình và nhận được phản hồi ngay lập tức.
Hệ điều hành xử lý đa nhiệm theo cách mà nó có thể xử lý nhiều hoạt động / thực thi nhiều chương trình cùng một lúc.
Hệ điều hành đa nhiệm còn được gọi là hệ thống chia sẻ thời gian.
Các Hệ điều hành này được phát triển để cung cấp việc sử dụng tương tác hệ thống máy tính với chi phí hợp lý.
Hệ điều hành chia sẻ thời gian sử dụng khái niệm lập lịch CPU và đa chương trình để cung cấp cho mỗi người dùng một phần nhỏ của CPU được chia sẻ thời gian.
Mỗi người dùng có ít nhất một chương trình riêng biệt trong bộ nhớ.
Một chương trình được tải vào bộ nhớ và đang thực thi thường được gọi là process.
Khi một quá trình thực thi, nó thường chỉ thực thi trong một thời gian rất ngắn trước khi kết thúc hoặc cần thực hiện I / O.
Vì I / O tương tác thường chạy ở tốc độ chậm hơn, có thể mất nhiều thời gian để hoàn thành. Trong thời gian này, một CPU có thể được sử dụng bởi một quy trình khác.
Hệ điều hành cho phép người dùng chia sẻ máy tính đồng thời. Vì mỗi hành động hoặc lệnh trong hệ thống chia sẻ thời gian có xu hướng ngắn nên chỉ cần một ít thời gian CPU cho mỗi người dùng.
Khi hệ thống chuyển đổi CPU nhanh chóng từ người dùng / chương trình này sang người dùng / chương trình tiếp theo, mỗi người dùng có ấn tượng rằng họ có CPU của riêng mình, trong khi thực tế một CPU đang được chia sẻ cho nhiều người dùng.
Đa chương trình
Chia sẻ bộ xử lý, khi hai hoặc nhiều chương trình nằm trong bộ nhớ cùng một lúc, được gọi là multiprogramming. Đa chương trình giả định một bộ xử lý được chia sẻ duy nhất. Đa chương trình làm tăng khả năng sử dụng CPU bằng cách sắp xếp các công việc để CPU luôn có một công việc để thực thi.
Hình sau đây cho thấy cách bố trí bộ nhớ cho một hệ thống đa chương trình.
Một hệ điều hành thực hiện các hoạt động sau liên quan đến đa chương trình.
Hệ điều hành lưu giữ một số công việc trong bộ nhớ cùng một lúc.
Nhóm công việc này là một tập hợp con của các công việc được giữ trong nhóm công việc.
Hệ điều hành chọn và bắt đầu thực hiện một trong các công việc trong bộ nhớ.
Hệ điều hành đa chương trình giám sát trạng thái của tất cả các chương trình đang hoạt động và tài nguyên hệ thống bằng cách sử dụng các chương trình quản lý bộ nhớ để đảm bảo rằng CPU không bao giờ rảnh, trừ khi không có công việc nào để xử lý.
Ưu điểm
- Sử dụng CPU cao và hiệu quả.
- Người dùng cảm thấy rằng nhiều chương trình được phân bổ CPU gần như đồng thời.
Nhược điểm
- Lập lịch CPU là bắt buộc.
- Để đáp ứng nhiều công việc trong bộ nhớ, cần phải quản lý bộ nhớ.
Tương tác
Tính tương tác đề cập đến khả năng người dùng tương tác với hệ thống máy tính. Hệ điều hành thực hiện các hoạt động sau liên quan đến tương tác:
- Cung cấp cho người dùng một giao diện để tương tác với hệ thống.
- Quản lý các thiết bị đầu vào để lấy đầu vào từ người dùng. Ví dụ, bàn phím.
- Quản lý thiết bị đầu ra để hiển thị đầu ra cho người dùng. Ví dụ, Màn hình.
Thời gian phản hồi của HĐH cần ngắn, vì người dùng gửi và đợi kết quả.
Hệ thống thời gian thực
Hệ thống thời gian thực thường là các hệ thống nhúng chuyên dụng. Hệ điều hành thực hiện các hoạt động sau liên quan đến hoạt động của hệ thống thời gian thực.
- Trong các hệ thống như vậy, Hệ điều hành thường đọc từ và phản ứng với dữ liệu cảm biến.
- Hệ điều hành phải đảm bảo phản ứng với các sự kiện trong khoảng thời gian cố định để đảm bảo hiệu suất chính xác.
Môi trường phân tán
Môi trường phân tán đề cập đến nhiều CPU hoặc bộ xử lý độc lập trong hệ thống máy tính. Hệ điều hành thực hiện các hoạt động sau liên quan đến môi trường phân tán:
Hệ điều hành phân phối lôgic tính toán giữa một số bộ xử lý vật lý.
Bộ xử lý không chia sẻ bộ nhớ hoặc đồng hồ. Thay vào đó, mỗi bộ xử lý có bộ nhớ cục bộ riêng.
Hệ điều hành quản lý giao tiếp giữa các bộ xử lý. Họ giao tiếp với nhau thông qua nhiều đường liên lạc khác nhau.
Spooling
Spooling là từ viết tắt của các hoạt động ngoại vi đồng thời trên đường truyền. Spooling đề cập đến việc đưa dữ liệu của các công việc I / O khác nhau vào một bộ đệm. Bộ đệm này là một vùng đặc biệt trong bộ nhớ hoặc đĩa cứng mà các thiết bị I / O có thể truy cập được.
Hệ điều hành thực hiện các hoạt động sau liên quan đến môi trường phân tán:
Xử lý bộ đệm dữ liệu thiết bị I / O vì các thiết bị có tốc độ truy cập dữ liệu khác nhau.
Duy trì bộ đệm đệm cung cấp một trạm chờ, nơi dữ liệu có thể nghỉ trong khi thiết bị chậm hơn bắt kịp.
Duy trì tính toán song song vì quá trình ghép đệm như một máy tính có thể thực hiện I / O theo kiểu song song. Máy tính có thể đọc dữ liệu từ băng, ghi dữ liệu vào đĩa và ghi ra máy in băng trong khi nó đang thực hiện nhiệm vụ tính toán của mình.
Ưu điểm
- Thao tác đệm sử dụng đĩa làm bộ đệm rất lớn.
- Spooling có khả năng chồng chéo hoạt động I / O cho một công việc với các hoạt động của bộ xử lý cho một công việc khác.
Quá trình
Về cơ bản một tiến trình là một chương trình đang được thực thi. Việc thực hiện một quy trình phải tiến triển theo một cách tuần tự.
Quá trình được định nghĩa là một thực thể đại diện cho đơn vị công việc cơ bản được thực hiện trong hệ thống.
Nói một cách dễ hiểu, chúng ta viết các chương trình máy tính của mình trong một tệp văn bản và khi chúng ta thực thi chương trình này, nó sẽ trở thành một quá trình thực hiện tất cả các tác vụ được đề cập trong chương trình.
Khi một chương trình được tải vào bộ nhớ và nó trở thành một quá trình, nó có thể được chia thành bốn phần ─ ngăn xếp, đống, văn bản và dữ liệu. Hình ảnh sau đây cho thấy một bố cục đơn giản của một quy trình bên trong bộ nhớ chính:
SN | Thành phần & Mô tả |
---|---|
1 | Stack Tiến trình Stack chứa các dữ liệu tạm thời như tham số phương thức / hàm, địa chỉ trả về và các biến cục bộ. |
2 | Heap Đây là bộ nhớ được cấp phát động cho một tiến trình trong thời gian chạy của nó. |
3 | Text Điều này bao gồm hoạt động hiện tại được thể hiện bằng giá trị của Bộ đếm chương trình và nội dung của các thanh ghi của bộ xử lý. |
4 | Data Phần này chứa các biến toàn cục và biến tĩnh. |
Chương trình
Chương trình là một đoạn mã có thể là một dòng hoặc hàng triệu dòng. Một chương trình máy tính thường được viết bởi một lập trình viên máy tính bằng một ngôn ngữ lập trình. Ví dụ, đây là một chương trình đơn giản được viết bằng ngôn ngữ lập trình C.
#include <stdio.h>
int main() {
printf("Hello, World! \n");
return 0;
}
Chương trình máy tính là một tập hợp các lệnh thực hiện một tác vụ cụ thể khi được thực thi bởi máy tính. Khi chúng ta so sánh một chương trình với một quá trình, chúng ta có thể kết luận rằng một quá trình là một thể hiện động của một chương trình máy tính.
Một phần của chương trình máy tính thực hiện một tác vụ được xác định rõ ràng được gọi là algorithm. Tập hợp các chương trình máy tính, thư viện và dữ liệu liên quan được gọi làsoftware.
Quy trình vòng đời
Khi một tiến trình thực thi, nó sẽ chuyển qua các trạng thái khác nhau. Các giai đoạn này có thể khác nhau trong các hệ điều hành khác nhau và tên của các trạng thái này cũng không được tiêu chuẩn hóa.
Nói chung, một quá trình có thể có một trong năm trạng thái sau tại một thời điểm.
SN | Trạng thái & Mô tả |
---|---|
1 | Start Đây là trạng thái ban đầu khi một tiến trình được bắt đầu / tạo lần đầu tiên. |
2 | Ready Quá trình này đang chờ được gán cho một bộ xử lý. Các tiến trình đã sẵn sàng đang chờ hệ điều hành cấp phát cho bộ xử lý để chúng có thể chạy. Quy trình có thể đi vào trạng thái này sau khiStart trạng thái hoặc trong khi chạy nó bởi nhưng bị gián đoạn bởi bộ lập lịch để gán CPU cho một số tiến trình khác. |
3 | Running Khi quá trình đã được bộ lập lịch hệ điều hành gán cho một bộ xử lý, trạng thái quá trình được đặt thành đang chạy và bộ xử lý thực hiện các lệnh của nó. |
4 | Waiting Quá trình chuyển sang trạng thái chờ nếu nó cần đợi tài nguyên, chẳng hạn như chờ người dùng nhập hoặc chờ tệp khả dụng. |
5 | Terminated or Exit Khi quá trình kết thúc quá trình thực thi, hoặc nó bị hệ điều hành kết thúc, nó sẽ được chuyển sang trạng thái kết thúc mà nó chờ được xóa khỏi bộ nhớ chính. |
Khối điều khiển quy trình (PCB)
Khối điều khiển quy trình là một cấu trúc dữ liệu được Hệ điều hành duy trì cho mọi quy trình. PCB được xác định bởi một số nguyên quá trình ID (PID). PCB lưu giữ tất cả thông tin cần thiết để theo dõi quá trình như được liệt kê dưới đây trong bảng -
SN | Thông tin & Mô tả |
---|---|
1 | Process State Trạng thái hiện tại của tiến trình tức là nó đã sẵn sàng, đang chạy, đang chờ hay bất cứ điều gì. |
2 | Process privileges Điều này là bắt buộc để cho phép / không cho phép truy cập vào tài nguyên hệ thống. |
3 | Process ID Nhận dạng duy nhất cho mỗi tiến trình trong hệ điều hành. |
4 | Pointer Một con trỏ đến quy trình mẹ. |
5 | Program Counter Bộ đếm chương trình là một con trỏ đến địa chỉ của lệnh tiếp theo sẽ được thực thi cho quá trình này. |
6 | CPU registers Nhiều thanh ghi CPU khác nhau nơi tiến trình cần được lưu trữ để thực thi cho trạng thái đang chạy. |
7 | CPU Scheduling Information Mức độ ưu tiên của quy trình và thông tin lập lịch trình khác được yêu cầu để lập lịch trình. |
số 8 | Memory management information Điều này bao gồm thông tin của bảng trang, giới hạn bộ nhớ, bảng Phân đoạn tùy thuộc vào bộ nhớ được sử dụng bởi hệ điều hành. |
9 | Accounting information Điều này bao gồm số lượng CPU được sử dụng để thực hiện quy trình, giới hạn thời gian, ID thực thi, v.v. |
10 | IO status information Điều này bao gồm danh sách các thiết bị I / O được phân bổ cho quy trình. |
Kiến trúc của PCB hoàn toàn phụ thuộc vào Hệ điều hành và có thể chứa thông tin khác nhau trong các hệ điều hành khác nhau. Đây là một sơ đồ đơn giản của PCB -
PCB được duy trì trong suốt quá trình trong suốt vòng đời của nó và sẽ bị xóa khi quá trình kết thúc.
Định nghĩa
Lập kế hoạch quy trình là hoạt động của trình quản lý quy trình xử lý việc loại bỏ quy trình đang chạy khỏi CPU và lựa chọn quy trình khác trên cơ sở một chiến lược cụ thể.
Lập lịch quy trình là một phần thiết yếu của hệ điều hành Đa chương trình. Các hệ điều hành như vậy cho phép nhiều quá trình được tải vào bộ nhớ thực thi tại một thời điểm và quá trình được tải chia sẻ CPU bằng cách sử dụng ghép kênh thời gian.
Xử lý hàng đợi lập lịch
Hệ điều hành duy trì tất cả PCB trong Hàng đợi Lập lịch Quy trình. Hệ điều hành duy trì một hàng đợi riêng biệt cho từng trạng thái quy trình và PCB của tất cả các quy trình ở cùng trạng thái thực thi được đặt trong cùng một hàng đợi. Khi trạng thái của một tiến trình bị thay đổi, PCB của nó được hủy liên kết khỏi hàng đợi hiện tại và chuyển sang hàng đợi trạng thái mới của nó.
Hệ điều hành duy trì các hàng đợi lập lịch quy trình quan trọng sau:
Job queue - Hàng đợi này giữ tất cả các tiến trình trong hệ thống.
Ready queue- Hàng đợi này giữ một tập hợp tất cả các tiến trình nằm trong bộ nhớ chính, sẵn sàng và chờ thực thi. Một quy trình mới luôn được đặt trong hàng đợi này.
Device queues - Các quy trình bị chặn do không có thiết bị I / O tạo thành hàng đợi này.
Hệ điều hành có thể sử dụng các chính sách khác nhau để quản lý từng hàng đợi (FIFO, Round Robin, Priority, v.v.). Bộ lập lịch hệ điều hành xác định cách di chuyển các quy trình giữa các hàng đợi sẵn sàng và chạy chỉ có thể có một mục nhập cho mỗi lõi bộ xử lý trên hệ thống; trong sơ đồ trên, nó đã được hợp nhất với CPU.
Mô hình quy trình hai trạng thái
Mô hình quy trình hai trạng thái đề cập đến các trạng thái đang chạy và không chạy được mô tả bên dưới:
SN | Trạng thái & Mô tả |
---|---|
1 | Running Khi một tiến trình mới được tạo, nó sẽ đi vào hệ thống như ở trạng thái đang chạy. |
2 | Not Running Các tiến trình không chạy được giữ trong hàng đợi đến lượt thực thi. Mỗi mục trong hàng đợi là một con trỏ đến một quá trình cụ thể. Hàng đợi được thực hiện bằng cách sử dụng danh sách liên kết. Sử dụng điều phối viên như sau. Khi một tiến trình bị gián đoạn, tiến trình đó sẽ được chuyển trong hàng đợi. Nếu quá trình đã hoàn thành hoặc bị hủy bỏ, quá trình sẽ bị hủy. Trong cả hai trường hợp, người điều phối sau đó sẽ chọn một quy trình từ hàng đợi để thực thi. |
Người lên lịch
Bộ lập lịch là phần mềm hệ thống đặc biệt xử lý việc lập lịch trình theo nhiều cách khác nhau. Nhiệm vụ chính của họ là lựa chọn các công việc được đưa vào hệ thống và quyết định tiến trình sẽ chạy. Bộ lập lịch có ba loại -
- Bộ lập lịch dài hạn
- Bộ lập lịch ngắn hạn
- Công cụ lập lịch trung hạn
Bộ lập lịch dài hạn
Nó còn được gọi là job scheduler. Bộ lập lịch dài hạn xác định những chương trình nào được đưa vào hệ thống để xử lý. Nó chọn các quy trình từ hàng đợi và tải chúng vào bộ nhớ để thực thi. Quá trình tải vào bộ nhớ để lập lịch CPU.
Mục tiêu chính của bộ lập lịch công việc là cung cấp sự kết hợp cân bằng giữa các công việc, chẳng hạn như giới hạn I / O và ràng buộc bộ xử lý. Nó cũng kiểm soát mức độ đa chương trình. Nếu mức độ đa chương trình ổn định thì tốc độ tạo quá trình trung bình phải bằng tốc độ khởi tạo trung bình của các quá trình rời khỏi hệ thống.
Trên một số hệ thống, bộ lập lịch dài hạn có thể không có sẵn hoặc tối thiểu. Hệ điều hành chia sẻ thời gian không có bộ lập lịch dài hạn. Khi một tiến trình thay đổi trạng thái từ mới sang sẵn sàng, thì sẽ có việc sử dụng bộ lập lịch dài hạn.
Lập lịch ngắn hạn
Nó còn được gọi là CPU scheduler. Mục tiêu chính của nó là tăng hiệu suất hệ thống phù hợp với bộ tiêu chí đã chọn. Nó là sự thay đổi trạng thái sẵn sàng sang trạng thái đang chạy của tiến trình. Bộ lập lịch CPU chọn một quá trình trong số các quá trình đã sẵn sàng thực thi và cấp phát CPU cho một trong số chúng.
Người lập lịch ngắn hạn, còn được gọi là người điều phối, đưa ra quyết định sẽ thực hiện quy trình nào tiếp theo. Những người lên lịch ngắn hạn nhanh hơn những người lên lịch dài hạn.
Công cụ lập lịch trung hạn
Lập kế hoạch trung hạn là một phần của swapping. Nó xóa các tiến trình khỏi bộ nhớ. Nó làm giảm mức độ đa chương trình. Người lập lịch trình trung hạn chịu trách nhiệm xử lý các quy trình ngoài đã hoán đổi.
Quá trình đang chạy có thể bị tạm ngưng nếu nó đưa ra yêu cầu I / O. Quá trình bị đình chỉ không thể đạt được bất kỳ tiến bộ nào để hoàn thành. Trong điều kiện này, để xóa tiến trình khỏi bộ nhớ và tạo không gian cho các tiến trình khác, tiến trình bị treo được chuyển sang bộ nhớ thứ cấp. Quá trình này được gọi làswappingvà quá trình này được cho là sẽ được hoán đổi hoặc triển khai. Có thể cần phải hoán đổi để cải thiện hỗn hợp quy trình.
So sánh giữa các lập lịch biểu
SN | Bộ lập lịch dài hạn | Bộ lập lịch ngắn hạn | Công cụ lập lịch trung hạn |
---|---|---|---|
1 | Nó là một công cụ lập lịch trình | Nó là một bộ lập lịch CPU | Nó là một bộ lập lịch trao đổi quy trình. |
2 | Tốc độ thấp hơn so với bộ lập lịch ngắn hạn | Tốc độ nhanh nhất trong số hai | Tốc độ nằm giữa cả bộ lập lịch ngắn hạn và dài hạn. |
3 | Nó kiểm soát mức độ đa chương trình | Nó cung cấp khả năng kiểm soát ít hơn đối với mức độ đa chương trình | Nó làm giảm mức độ đa chương trình. |
4 | Nó hầu như không có hoặc tối thiểu trong hệ thống chia sẻ thời gian | Nó cũng là tối thiểu trong hệ thống chia sẻ thời gian | Nó là một phần của hệ thống chia sẻ Thời gian. |
5 | Nó chọn các quy trình từ nhóm và tải chúng vào bộ nhớ để thực thi | Nó chọn những quy trình đã sẵn sàng để thực thi | Nó có thể giới thiệu lại quá trình vào bộ nhớ và quá trình thực thi có thể được tiếp tục. |
Chuyển đổi nội dung
Chuyển đổi ngữ cảnh là cơ chế lưu trữ và khôi phục trạng thái hoặc ngữ cảnh của CPU trong khối Điều khiển quy trình để quá trình thực thi có thể được tiếp tục lại từ cùng một thời điểm sau đó. Sử dụng kỹ thuật này, trình chuyển đổi ngữ cảnh cho phép nhiều quy trình chia sẻ một CPU. Chuyển đổi ngữ cảnh là một phần thiết yếu của các tính năng của hệ điều hành đa nhiệm.
Khi bộ lập lịch chuyển CPU từ thực thi một quy trình sang thực thi một quy trình khác, trạng thái từ tiến trình đang chạy hiện tại được lưu trữ vào khối điều khiển tiến trình. Sau đó, trạng thái cho tiến trình chạy tiếp theo được tải từ PCB của chính nó và được sử dụng để thiết lập PC, thanh ghi, v.v. Tại thời điểm đó, tiến trình thứ hai có thể bắt đầu thực thi.
Các công tắc ngữ cảnh đòi hỏi nhiều tính toán vì trạng thái thanh ghi và bộ nhớ phải được lưu và khôi phục. Để tránh mất nhiều thời gian chuyển đổi ngữ cảnh, một số hệ thống phần cứng sử dụng hai hoặc nhiều bộ thanh ghi bộ xử lý. Khi quy trình được chuyển đổi, thông tin sau sẽ được lưu trữ để sử dụng sau này.
- Bộ đếm chương trình
- Thông tin lên lịch
- Giá trị thanh ghi cơ sở và giới hạn
- Đăng ký hiện được sử dụng
- Trạng thái đã thay đổi
- Thông tin trạng thái I / O
- Thông tin kế toán
Bộ lập lịch trình lập lịch trình các quá trình khác nhau được gán cho CPU dựa trên các thuật toán lập lịch cụ thể. Có sáu thuật toán lập lịch quy trình phổ biến mà chúng ta sẽ thảo luận trong chương này -
- Lên lịch cho người đến trước, người phục vụ trước (FCFS)
- Lập lịch trình ngắn nhất-công việc tiếp theo (SJN)
- Lên lịch ưu tiên
- Thời gian còn lại ngắn nhất
- Lên lịch Round Robin (RR)
- Lập lịch hàng đợi nhiều cấp độ
Các thuật toán này là non-preemptive or preemptive. Các thuật toán không ưu tiên được thiết kế để khi một quá trình đi vào trạng thái đang chạy, nó không thể được ưu tiên cho đến khi nó hoàn thành thời gian quy định, trong khi lập lịch ưu tiên dựa trên mức độ ưu tiên, trong đó bộ lập lịch có thể đánh trước một quá trình đang chạy có mức độ ưu tiên thấp bất cứ lúc nào khi mức độ ưu tiên cao quy trình đi vào trạng thái sẵn sàng.
Đến trước phục vụ trước (FCFS)
- Công việc được thực hiện trên cơ sở ai đến trước, phục vụ trước.
- Nó là một thuật toán lập lịch không phủ đầu, ưu tiên trước.
- Dễ hiểu và dễ thực hiện.
- Việc triển khai nó dựa trên hàng đợi FIFO.
- Hiệu suất kém vì thời gian chờ trung bình cao.
Wait time của mỗi quy trình như sau:
Quá trình | Thời gian chờ: Thời gian phục vụ - Thời gian đến |
---|---|
P0 | 0 - 0 = 0 |
P1 | 5 - 1 = 4 |
P2 | 8 - 2 = 6 |
P3 | 16 - 3 = 13 |
Thời gian chờ trung bình: (0 + 4 + 6 + 13) / 4 = 5,75
Công việc ngắn nhất tiếp theo (SJN)
Điều này còn được gọi là shortest job first, hoặc SJF
Đây là một thuật toán lập lịch không ưu tiên, ưu tiên trước.
Cách tiếp cận tốt nhất để giảm thiểu thời gian chờ đợi.
Dễ dàng thực hiện trong các hệ thống Batch, nơi đã biết trước thời gian CPU cần thiết.
Không thể thực hiện trong các hệ thống tương tác mà thời gian CPU cần thiết không được biết trước.
Người xử lý nên biết trước quá trình sẽ mất bao nhiêu thời gian.
Đưa ra: Bảng các quy trình, và thời gian đến, thời gian thực hiện
Quá trình | Thời gian đến | Thời gian thực hiện | Thời gian phục vụ |
---|---|---|---|
P0 | 0 | 5 | 0 |
P1 | 1 | 3 | 5 |
P2 | 2 | số 8 | 14 |
P3 | 3 | 6 | số 8 |
Waiting time của mỗi quy trình như sau:
Quá trình | Thời gian chờ |
---|---|
P0 | 0 - 0 = 0 |
P1 | 5 - 1 = 4 |
P2 | 14 - 2 = 12 |
P3 | 8 - 3 = 5 |
Thời gian chờ trung bình: (0 + 4 + 12 + 5) / 4 = 21/4 = 5,25
Lập lịch dựa trên mức độ ưu tiên
Lập lịch ưu tiên là một thuật toán không ưu tiên và là một trong những thuật toán lập lịch phổ biến nhất trong các hệ thống hàng loạt.
Mỗi quy trình được chỉ định một mức độ ưu tiên. Quy trình có mức độ ưu tiên cao nhất sẽ được thực hiện trước và cứ tiếp tục như vậy.
Các quy trình có cùng mức độ ưu tiên được thực hiện trên cơ sở ai đến trước được phục vụ trước.
Mức độ ưu tiên có thể được quyết định dựa trên yêu cầu bộ nhớ, yêu cầu thời gian hoặc bất kỳ yêu cầu tài nguyên nào khác.
Cho trước: Bảng các quy trình và thời gian đến, thời gian thực hiện và mức độ ưu tiên của chúng. Ở đây chúng tôi đang xem xét 1 là mức độ ưu tiên thấp nhất.
Quá trình | Thời gian đến | Thời gian thực hiện | Sự ưu tiên | Thời gian phục vụ |
---|---|---|---|---|
P0 | 0 | 5 | 1 | 0 |
P1 | 1 | 3 | 2 | 11 |
P2 | 2 | số 8 | 1 | 14 |
P3 | 3 | 6 | 3 | 5 |
Waiting time của mỗi quy trình như sau:
Quá trình | Thời gian chờ |
---|---|
P0 | 0 - 0 = 0 |
P1 | 11 - 1 = 10 |
P2 | 14 - 2 = 12 |
P3 | 5 - 3 = 2 |
Thời gian chờ trung bình: (0 + 10 + 12 + 2) / 4 = 24/4 = 6
Thời gian còn lại ngắn nhất
Thời gian còn lại ngắn nhất (SRT) là phiên bản ưu tiên của thuật toán SJN.
Bộ xử lý được phân bổ cho công việc gần nhất để hoàn thành nhưng nó có thể được ưu tiên bởi một công việc sẵn sàng mới hơn với thời gian hoàn thành ngắn hơn.
Không thể thực hiện trong các hệ thống tương tác mà thời gian CPU cần thiết không được biết trước.
Nó thường được sử dụng trong môi trường hàng loạt nơi các công việc ngắn cần được ưu tiên.
Lên lịch Round Robin
Round Robin là thuật toán lập lịch trình quy trình phủ đầu.
Mỗi quy trình được cung cấp một thời gian cố định để thực thi, nó được gọi là quantum.
Khi một quá trình được thực thi trong một khoảng thời gian nhất định, nó sẽ được ưu tiên và quá trình khác sẽ thực thi trong một khoảng thời gian nhất định.
Chuyển đổi ngữ cảnh được sử dụng để lưu trạng thái của các quy trình được ưu tiên trước.
Wait time của mỗi quy trình như sau:
Quá trình | Thời gian chờ: Thời gian phục vụ - Thời gian đến |
---|---|
P0 | (0 - 0) + (12 - 3) = 9 |
P1 | (3 - 1) = 2 |
P2 | (6 - 2) + (14 - 9) + (20 - 17) = 12 |
P3 | (9 - 3) + (17 - 12) = 11 |
Thời gian chờ trung bình: (9 + 2 + 12 + 11) / 4 = 8,5
Lập lịch hàng đợi nhiều cấp độ
Hàng đợi nhiều cấp không phải là một thuật toán lập lịch độc lập. Họ sử dụng các thuật toán hiện có khác để nhóm và lên lịch các công việc có đặc điểm chung.
- Nhiều hàng đợi được duy trì cho các quy trình có đặc điểm chung.
- Mỗi hàng đợi có thể có các thuật toán lập lịch riêng.
- Các ưu tiên được chỉ định cho mỗi hàng đợi.
Ví dụ, các công việc ràng buộc CPU có thể được lên lịch trong một hàng đợi và tất cả các công việc liên kết I / O trong một hàng đợi khác. Sau đó, Process Scheduler sẽ luân phiên chọn các công việc từ mỗi hàng đợi và gán chúng cho CPU dựa trên thuật toán được gán cho hàng đợi.
Thread là gì?
Một luồng là một luồng thực thi thông qua mã quy trình, với bộ đếm chương trình riêng của nó để theo dõi lệnh nào sẽ thực thi tiếp theo, các thanh ghi hệ thống chứa các biến làm việc hiện tại của nó và một ngăn xếp chứa lịch sử thực thi.
Một luồng chia sẻ với các luồng ngang hàng của nó một số thông tin như phân đoạn mã, phân đoạn dữ liệu và các tệp đang mở. Khi một luồng thay đổi một mục bộ nhớ đoạn mã, tất cả các luồng khác sẽ thấy điều đó.
Một chuỗi còn được gọi là lightweight process. Chủ đề cung cấp một cách để cải thiện hiệu suất ứng dụng thông qua song song. Luồng thể hiện một cách tiếp cận phần mềm để cải thiện hiệu suất của hệ điều hành bằng cách giảm luồng chi phí tương đương với một quy trình cổ điển.
Mỗi luồng thuộc chính xác một quy trình và không luồng nào có thể tồn tại bên ngoài một quy trình. Mỗi luồng đại diện cho một luồng điều khiển riêng biệt. Chủ đề đã được sử dụng thành công trong việc triển khai máy chủ mạng và máy chủ web. Chúng cũng cung cấp nền tảng phù hợp để thực hiện song song các ứng dụng trên bộ đa xử lý bộ nhớ dùng chung. Hình dưới đây mô tả hoạt động của một quá trình đơn luồng và đa luồng.
Sự khác biệt giữa Process và Thread
SN | Quá trình | Chủ đề |
---|---|---|
1 | Quá trình có trọng lượng lớn hoặc sử dụng nhiều tài nguyên. | Thread có trọng lượng nhẹ, chiếm ít tài nguyên hơn một quy trình. |
2 | Quá trình chuyển đổi cần tương tác với hệ điều hành. | Chuyển đổi luồng không cần phải tương tác với hệ điều hành. |
3 | Trong nhiều môi trường xử lý, mỗi tiến trình thực thi cùng một mã nhưng có bộ nhớ và tài nguyên tệp riêng. | Tất cả các luồng có thể chia sẻ cùng một tập hợp các tệp đang mở, các quy trình con. |
4 | Nếu một quá trình bị chặn, thì không quá trình nào khác có thể thực thi cho đến khi quá trình đầu tiên được bỏ chặn. | Trong khi một luồng bị chặn và đang chờ, một luồng thứ hai trong cùng một tác vụ có thể chạy. |
5 | Nhiều quy trình mà không sử dụng luồng sử dụng nhiều tài nguyên hơn. | Nhiều quy trình phân luồng sử dụng ít tài nguyên hơn. |
6 | Trong nhiều quy trình, mỗi quy trình hoạt động độc lập với các quy trình khác. | Một luồng có thể đọc, ghi hoặc thay đổi dữ liệu của luồng khác. |
Ưu điểm của Thread
- Các luồng giảm thiểu thời gian chuyển đổi ngữ cảnh.
- Sử dụng các luồng cung cấp sự đồng thời trong một quy trình.
- Giao tiếp hiệu quả.
- Sẽ tiết kiệm hơn khi tạo và chuyển đổi ngữ cảnh các luồng.
- Các luồng cho phép sử dụng kiến trúc đa xử lý ở quy mô và hiệu quả cao hơn.
Các loại chủ đề
Các chủ đề được thực hiện theo hai cách sau:
User Level Threads - Chủ đề do người dùng quản lý.
Kernel Level Threads - Các luồng được quản lý hệ điều hành hoạt động trên nhân, một lõi của hệ điều hành.
Chủ đề cấp độ người dùng
Trong trường hợp này, nhân quản lý luồng không biết về sự tồn tại của các luồng. Thư viện luồng chứa mã để tạo và hủy luồng, để truyền thông điệp và dữ liệu giữa các luồng, để lập lịch thực thi luồng và lưu và khôi phục ngữ cảnh luồng. Ứng dụng bắt đầu với một luồng duy nhất.
Ưu điểm
- Chuyển đổi luồng không yêu cầu đặc quyền chế độ Kernel.
- Chủ đề cấp người dùng có thể chạy trên bất kỳ hệ điều hành nào.
- Lập lịch có thể là ứng dụng cụ thể trong luồng cấp người dùng.
- Chủ đề cấp độ người dùng được tạo và quản lý nhanh chóng.
Nhược điểm
- Trong một hệ điều hành điển hình, hầu hết các cuộc gọi hệ thống đều bị chặn.
- Ứng dụng đa luồng không thể tận dụng đa xử lý.
Chủ đề cấp nhân
Trong trường hợp này, việc quản lý luồng được thực hiện bởi Kernel. Không có mã quản lý luồng trong khu vực ứng dụng. Các luồng nhân được hỗ trợ trực tiếp bởi hệ điều hành. Bất kỳ ứng dụng nào cũng có thể được lập trình để chạy đa luồng. Tất cả các chuỗi trong một ứng dụng được hỗ trợ trong một quy trình duy nhất.
Kernel duy trì thông tin ngữ cảnh cho toàn bộ quá trình và cho các luồng riêng lẻ trong quá trình. Lập lịch bởi Kernel được thực hiện trên cơ sở luồng. Kernel thực hiện tạo luồng, lập lịch và quản lý trong không gian Kernel. Các luồng nhân thường chậm tạo và quản lý hơn các luồng người dùng.
Ưu điểm
- Kernel có thể lập lịch đồng thời nhiều luồng từ cùng một tiến trình trên nhiều tiến trình.
- Nếu một luồng trong một tiến trình bị chặn, Kernel có thể lên lịch cho một luồng khác của cùng một tiến trình.
- Bản thân các quy trình hạt nhân có thể được đa luồng.
Nhược điểm
- Các luồng nhân thường chậm tạo và quản lý hơn các luồng người dùng.
- Việc chuyển quyền điều khiển từ luồng này sang luồng khác trong cùng một quy trình yêu cầu chuyển chế độ sang Kernel.
Mô hình đa luồng
Một số hệ điều hành cung cấp một luồng cấp người dùng kết hợp và cơ sở luồng cấp Kernel. Solaris là một ví dụ điển hình về cách tiếp cận kết hợp này. Trong một hệ thống kết hợp, nhiều luồng trong cùng một ứng dụng có thể chạy song song trên nhiều bộ xử lý và một lệnh gọi hệ thống chặn không cần phải chặn toàn bộ quá trình. Mô hình đa luồng có ba loại
- Nhiều mối quan hệ.
- Mối quan hệ nhiều đối một.
- Mối quan hệ 1-1.
Nhiều mẫu
Mô hình nhiều-nhiều ghép bất kỳ số luồng người dùng nào vào một số luồng nhân bằng hoặc nhỏ hơn.
Sơ đồ sau đây cho thấy mô hình phân luồng nhiều-nhiều trong đó 6 luồng cấp người dùng đang ghép kênh với 6 luồng cấp nhân. Trong mô hình này, các nhà phát triển có thể tạo bao nhiêu luồng người dùng nếu cần và các luồng Kernel tương ứng có thể chạy song song trên một máy đa xử lý. Mô hình này cung cấp độ chính xác tốt nhất về tính đồng thời và khi một luồng thực hiện một lệnh gọi hệ thống chặn, hạt nhân có thể lên lịch cho một luồng khác để thực thi.
Nhiều đến một mô hình
Mô hình nhiều-một ánh xạ nhiều luồng cấp người dùng thành một luồng cấp nhân. Quản lý luồng được thực hiện trong không gian người dùng bởi thư viện luồng. Khi luồng thực hiện cuộc gọi hệ thống chặn, toàn bộ quá trình sẽ bị chặn. Chỉ một luồng có thể truy cập vào Kernel tại một thời điểm, vì vậy nhiều luồng không thể chạy song song trên các bộ đa xử lý.
Nếu các thư viện luồng cấp người dùng được triển khai trong hệ điều hành theo cách mà hệ thống không hỗ trợ chúng, thì các luồng Nhân sử dụng chế độ quan hệ nhiều-một.
Một đến một Mô hình
Có mối quan hệ 1-1 của luồng cấp người dùng với luồng cấp nhân. Mô hình này cung cấp nhiều tính đồng thời hơn so với mô hình nhiều-một. Nó cũng cho phép một luồng khác chạy khi một luồng thực hiện một cuộc gọi hệ thống chặn. Nó hỗ trợ nhiều luồng để thực thi song song trên vi xử lý.
Nhược điểm của mô hình này là việc tạo luồng người dùng yêu cầu luồng Kernel tương ứng. OS / 2, windows NT và windows 2000 sử dụng mô hình quan hệ 1-1.
Sự khác biệt giữa luồng cấp người dùng và cấp nhân
SN | Chủ đề cấp độ người dùng | Chủ đề cấp nhân |
---|---|---|
1 | Chủ đề cấp người dùng được tạo và quản lý nhanh hơn. | Các luồng cấp nhân chậm hơn để tạo và quản lý. |
2 | Việc triển khai là bởi một thư viện luồng ở cấp độ người dùng. | Hệ điều hành hỗ trợ tạo luồng Kernel. |
3 | Chủ đề cấp người dùng là chung và có thể chạy trên bất kỳ hệ điều hành nào. | Luồng cấp hạt nhân dành riêng cho hệ điều hành. |
4 | Các ứng dụng đa luồng không thể tận dụng lợi thế của đa xử lý. | Bản thân các quy trình hạt nhân có thể được đa luồng. |
Quản lý bộ nhớ là chức năng của hệ điều hành xử lý hoặc quản lý bộ nhớ chính và di chuyển các quá trình qua lại giữa bộ nhớ chính và đĩa trong quá trình thực thi. Quản lý bộ nhớ theo dõi từng vị trí bộ nhớ, bất kể nó được cấp phát cho một số quy trình hay nó miễn phí. Nó kiểm tra lượng bộ nhớ được cấp cho các tiến trình. Nó quyết định tiến trình nào sẽ nhận được bộ nhớ vào thời điểm nào. Nó theo dõi bất cứ khi nào một số bộ nhớ được giải phóng hoặc không được phân bổ và tương ứng nó sẽ cập nhật trạng thái.
Hướng dẫn này sẽ dạy bạn các khái niệm cơ bản liên quan đến Quản lý bộ nhớ.
Xử lý không gian địa chỉ
Không gian địa chỉ tiến trình là tập hợp các địa chỉ logic mà một tiến trình tham chiếu trong mã của nó. Ví dụ, khi sử dụng địa chỉ 32 bit, các địa chỉ có thể nằm trong khoảng từ 0 đến 0x7fffffff; nghĩa là, 2 ^ 31 số có thể, với tổng kích thước lý thuyết là 2 gigabyte.
Hệ điều hành sẽ xử lý ánh xạ địa chỉ logic thành địa chỉ vật lý tại thời điểm cấp phát bộ nhớ cho chương trình. Có ba loại địa chỉ được sử dụng trong một chương trình trước và sau khi bộ nhớ được cấp phát:
SN | Địa chỉ bộ nhớ & Mô tả |
---|---|
1 | Symbolic addresses Các địa chỉ được sử dụng trong mã nguồn. Tên biến, hằng số và nhãn lệnh là những phần tử cơ bản của không gian địa chỉ tượng trưng. |
2 | Relative addresses Tại thời điểm biên dịch, trình biên dịch chuyển đổi các địa chỉ tượng trưng thành địa chỉ tương đối. |
3 | Physical addresses Bộ nạp tạo ra các địa chỉ này tại thời điểm một chương trình được tải vào bộ nhớ chính. |
Địa chỉ ảo và địa chỉ vật lý giống nhau trong các lược đồ ràng buộc địa chỉ thời gian biên dịch và thời gian tải. Địa chỉ ảo và địa chỉ vật lý khác nhau trong lược đồ ràng buộc địa chỉ thời gian thực thi.
Tập hợp tất cả các địa chỉ logic được tạo ra bởi một chương trình được gọi là logical address space. Tập hợp tất cả các địa chỉ vật lý tương ứng với các địa chỉ logic này được gọi làphysical address space.
Ánh xạ thời gian chạy từ địa chỉ ảo sang địa chỉ thực được thực hiện bởi đơn vị quản lý bộ nhớ (MMU) là một thiết bị phần cứng. MMU sử dụng cơ chế sau để chuyển đổi địa chỉ ảo thành địa chỉ vật lý.
Giá trị trong thanh ghi cơ sở được thêm vào mọi địa chỉ được tạo ra bởi quá trình người dùng, được coi là giá trị bù vào thời điểm nó được gửi đến bộ nhớ. Ví dụ: nếu giá trị thanh ghi cơ sở là 10000, thì nỗ lực của người dùng để sử dụng vị trí địa chỉ 100 sẽ được phân bổ lại động cho vị trí 10100.
Chương trình người dùng xử lý các địa chỉ ảo; nó không bao giờ nhìn thấy các địa chỉ vật lý thực.
Tải tĩnh so với tải động
Sự lựa chọn giữa Tải tĩnh hoặc Tải động sẽ được thực hiện tại thời điểm chương trình máy tính đang được phát triển. Nếu bạn phải tải chương trình của mình một cách tĩnh, thì tại thời điểm biên dịch, các chương trình hoàn chỉnh sẽ được biên dịch và liên kết mà không để lại bất kỳ sự phụ thuộc vào chương trình hoặc mô-đun bên ngoài nào. Trình liên kết kết hợp chương trình đối tượng với các mô-đun đối tượng cần thiết khác thành một chương trình tuyệt đối, chương trình này cũng bao gồm các địa chỉ logic.
Nếu bạn đang viết một chương trình được tải động, thì trình biên dịch của bạn sẽ biên dịch chương trình và đối với tất cả các mô-đun mà bạn muốn bao gồm động, chỉ các tham chiếu sẽ được cung cấp và phần còn lại sẽ được thực hiện tại thời điểm thực thi.
Tại thời điểm tải, với static loading, chương trình tuyệt đối (và dữ liệu) được tải vào bộ nhớ để bắt đầu thực thi.
Nếu bạn đang sử dụng dynamic loading, các quy trình động của thư viện được lưu trữ trên đĩa ở dạng có thể định vị lại và chỉ được tải vào bộ nhớ khi chúng được chương trình cần đến.
Liên kết tĩnh và liên kết động
Như đã giải thích ở trên, khi liên kết tĩnh được sử dụng, trình liên kết sẽ kết hợp tất cả các mô-đun khác mà một chương trình cần thiết thành một chương trình thực thi duy nhất để tránh bất kỳ sự phụ thuộc nào trong thời gian chạy.
Khi liên kết động được sử dụng, không bắt buộc phải liên kết mô-đun hoặc thư viện thực tế với chương trình, thay vào đó, tham chiếu đến mô-đun động được cung cấp tại thời điểm biên dịch và liên kết. Thư viện liên kết động (DLL) trong Windows và Đối tượng dùng chung trong Unix là những ví dụ điển hình về thư viện động.
Hoán đổi
Hoán đổi là một cơ chế trong đó một tiến trình có thể được hoán đổi tạm thời ra khỏi bộ nhớ chính (hoặc di chuyển) sang bộ nhớ phụ (đĩa) và làm cho bộ nhớ đó khả dụng cho các tiến trình khác. Vào một thời điểm sau, hệ thống sẽ hoán đổi quá trình từ bộ nhớ phụ sang bộ nhớ chính.
Mặc dù hiệu suất thường bị ảnh hưởng bởi quá trình hoán đổi nhưng nó giúp chạy song song nhiều quy trình lớn và lớn và đó là lý do Swapping is also known as a technique for memory compaction.
Tổng thời gian thực hiện bằng quá trình hoán đổi bao gồm thời gian cần thiết để di chuyển toàn bộ quá trình sang đĩa phụ và sau đó sao chép quá trình trở lại bộ nhớ, cũng như thời gian quá trình lấy lại bộ nhớ chính.
Chúng ta hãy giả sử rằng quy trình của người dùng có kích thước 2048KB và trên đĩa cứng tiêu chuẩn nơi quá trình hoán đổi sẽ diễn ra có tốc độ truyền dữ liệu khoảng 1 MB mỗi giây. Việc chuyển thực tế quá trình 1000K đến hoặc từ bộ nhớ sẽ mất
2048KB / 1024KB per second
= 2 seconds
= 2000 milliseconds
Bây giờ xem xét thời gian trong và ngoài, sẽ mất 4000 mili giây hoàn thành cộng với các chi phí khác trong đó quá trình cạnh tranh để lấy lại bộ nhớ chính.
Cấp phát bộ nhớ
Bộ nhớ chính thường có hai phân vùng -
Low Memory - Hệ điều hành nằm trong bộ nhớ này.
High Memory - Các quy trình của người dùng được lưu giữ trong bộ nhớ cao.
Hệ điều hành sử dụng cơ chế cấp phát bộ nhớ sau.
SN | Phân bổ & Mô tả Bộ nhớ |
---|---|
1 | Single-partition allocation Trong kiểu phân bổ này, lược đồ thanh ghi tái định cư được sử dụng để bảo vệ các tiến trình của người dùng với nhau và khỏi việc thay đổi mã và dữ liệu của hệ điều hành. Thanh ghi chuyển vị trí chứa giá trị của địa chỉ vật lý nhỏ nhất trong khi thanh ghi giới hạn chứa dải địa chỉ logic. Mỗi địa chỉ logic phải nhỏ hơn thanh ghi giới hạn. |
2 | Multiple-partition allocation Trong kiểu cấp phát này, bộ nhớ chính được chia thành một số phân vùng có kích thước cố định trong đó mỗi phân vùng chỉ được chứa một tiến trình. Khi một phân vùng trống, một tiến trình được chọn từ hàng đợi đầu vào và được tải vào phân vùng miễn phí. Khi quá trình kết thúc, phân vùng sẽ có sẵn cho một quá trình khác. |
Phân mảnh
Khi các tiến trình được tải và xóa khỏi bộ nhớ, không gian bộ nhớ trống bị chia thành nhiều phần nhỏ. Điều đó xảy ra sau khi đôi khi các tiến trình không thể được cấp phát cho các khối bộ nhớ vì kích thước nhỏ của chúng và các khối bộ nhớ vẫn chưa được sử dụng. Vấn đề này được gọi là Phân mảnh.
Phân mảnh có hai loại -
SN | Phân mảnh & Mô tả |
---|---|
1 | External fragmentation Tổng dung lượng bộ nhớ đủ để đáp ứng một yêu cầu hoặc để chứa một tiến trình trong đó, nhưng nó không liền kề, vì vậy nó không thể được sử dụng. |
2 | Internal fragmentation Khối bộ nhớ được gán cho quá trình lớn hơn. Một số phần của bộ nhớ không được sử dụng vì nó không thể được sử dụng bởi một quá trình khác. |
Sơ đồ sau đây cho thấy cách phân mảnh có thể gây lãng phí bộ nhớ và một kỹ thuật nén có thể được sử dụng để tạo thêm bộ nhớ trống từ bộ nhớ bị phân mảnh -
Sự phân mảnh bên ngoài có thể được giảm thiểu bằng cách nén hoặc xáo trộn nội dung bộ nhớ để đặt tất cả bộ nhớ trống lại với nhau trong một khối lớn. Để làm cho việc lu lèn khả thi, việc di dời cần phải linh hoạt.
Sự phân mảnh nội bộ có thể được giảm bớt bằng cách gán hiệu quả phân vùng nhỏ nhất nhưng đủ lớn cho quá trình.
Phân trang
Một máy tính có thể giải quyết nhiều bộ nhớ hơn dung lượng được cài đặt vật lý trên hệ thống. Bộ nhớ bổ sung này thực sự được gọi là bộ nhớ ảo và nó là một phần của ổ cứng được thiết lập để mô phỏng RAM của máy tính. Kỹ thuật phân trang đóng một vai trò quan trọng trong việc thực hiện bộ nhớ ảo.
Phân trang là một kỹ thuật quản lý bộ nhớ trong đó không gian địa chỉ quy trình được chia thành các khối có cùng kích thước được gọi là pages(kích thước là lũy thừa của 2, từ 512 byte đến 8192 byte). Kích thước của quá trình được đo bằng số trang.
Tương tự, bộ nhớ chính được chia thành các khối nhỏ có kích thước cố định của bộ nhớ (vật lý) được gọi là frames và kích thước của khung được giữ nguyên như kích thước của một trang để sử dụng tối ưu bộ nhớ chính và tránh phân mảnh bên ngoài.
Dịch địa chỉ
Địa chỉ trang được gọi là logical address và được đại diện bởi page number và offset.
Logical Address = Page number + page offset
Địa chỉ khung được gọi là physical address và được đại diện bởi một frame number và offset.
Physical Address = Frame number + page offset
Một cấu trúc dữ liệu được gọi là page map table được sử dụng để theo dõi mối quan hệ giữa một trang của quy trình với một khung trong bộ nhớ vật lý.
Khi hệ thống phân bổ khung cho bất kỳ trang nào, nó sẽ chuyển địa chỉ logic này thành địa chỉ vật lý và tạo mục nhập vào bảng trang để sử dụng trong suốt quá trình thực thi chương trình.
Khi một tiến trình được thực thi, các trang tương ứng của nó sẽ được tải vào bất kỳ khung bộ nhớ có sẵn nào. Giả sử bạn có một chương trình 8Kb nhưng bộ nhớ của bạn chỉ có thể chứa 5Kb tại một thời điểm nhất định, khi đó khái niệm phân trang sẽ xuất hiện. Khi máy tính hết RAM, hệ điều hành (OS) sẽ di chuyển các trang bộ nhớ không hoạt động hoặc không mong muốn sang bộ nhớ phụ để giải phóng RAM cho các tiến trình khác và đưa chúng trở lại khi chương trình cần.
Quá trình này tiếp tục diễn ra trong toàn bộ quá trình thực thi chương trình, trong đó HĐH tiếp tục xóa các trang không hoạt động khỏi bộ nhớ chính và ghi chúng vào bộ nhớ phụ và đưa chúng trở lại khi chương trình yêu cầu.
Ưu điểm và nhược điểm của phân trang
Dưới đây là danh sách những ưu điểm và nhược điểm của phân trang -
Phân trang làm giảm phân mảnh bên ngoài, nhưng vẫn bị phân mảnh bên trong.
Phân trang rất đơn giản để thực hiện và được coi là một kỹ thuật quản lý bộ nhớ hiệu quả.
Do kích thước của các trang và khung bằng nhau, việc hoán đổi trở nên rất dễ dàng.
Bảng trang yêu cầu thêm dung lượng bộ nhớ, do đó có thể không tốt cho hệ thống có RAM nhỏ.
Phân đoạn
Phân đoạn là một kỹ thuật quản lý bộ nhớ, trong đó mỗi công việc được chia thành nhiều phân đoạn có kích thước khác nhau, một phân đoạn cho mỗi mô-đun chứa các mảnh thực hiện các chức năng liên quan. Mỗi phân đoạn thực sự là một không gian địa chỉ logic khác nhau của chương trình.
Khi một tiến trình được thực thi, phân đoạn tương ứng của nó được tải vào bộ nhớ không liền kề mặc dù mọi phân đoạn được tải vào một khối liền kề của bộ nhớ khả dụng.
Quản lý bộ nhớ phân đoạn hoạt động rất giống với phân trang nhưng ở đây các phân đoạn có độ dài thay đổi trong khi các trang phân trang có kích thước cố định.
Một đoạn chương trình chứa chức năng chính của chương trình, các chức năng tiện ích, cấu trúc dữ liệu, v.v. Hệ điều hành duy trì mộtsegment map tablecho mọi quy trình và danh sách các khối bộ nhớ trống cùng với số phân đoạn, kích thước của chúng và vị trí bộ nhớ tương ứng trong bộ nhớ chính. Đối với mỗi phân đoạn, bảng lưu trữ địa chỉ bắt đầu của phân đoạn và độ dài của phân đoạn. Tham chiếu đến vị trí bộ nhớ bao gồm một giá trị xác định một đoạn và một phần bù.
Một máy tính có thể giải quyết nhiều bộ nhớ hơn dung lượng được cài đặt vật lý trên hệ thống. Bộ nhớ bổ sung này thực sự được gọi làvirtual memory và nó là một phần của đĩa cứng được thiết lập để mô phỏng RAM của máy tính.
Ưu điểm chính có thể nhìn thấy của lược đồ này là các chương trình có thể lớn hơn bộ nhớ vật lý. Bộ nhớ ảo phục vụ hai mục đích. Đầu tiên, nó cho phép chúng ta mở rộng việc sử dụng bộ nhớ vật lý bằng cách sử dụng đĩa. Thứ hai, nó cho phép chúng ta bảo vệ bộ nhớ, vì mỗi địa chỉ ảo được dịch sang một địa chỉ vật lý.
Sau đây là các tình huống, khi toàn bộ chương trình không được yêu cầu tải đầy đủ vào bộ nhớ chính.
Quy trình xử lý lỗi do người dùng viết chỉ được sử dụng khi xảy ra lỗi trong dữ liệu hoặc tính toán.
Một số tùy chọn và tính năng của chương trình có thể hiếm khi được sử dụng.
Nhiều bảng được gán một lượng không gian địa chỉ cố định mặc dù chỉ một lượng nhỏ của bảng được sử dụng thực sự.
Khả năng thực thi một chương trình chỉ có một phần trong bộ nhớ sẽ phản lại nhiều lợi ích.
Số lượng I / O ít hơn sẽ cần thiết để tải hoặc hoán đổi từng chương trình người dùng vào bộ nhớ.
Một chương trình sẽ không còn bị giới hạn bởi dung lượng bộ nhớ vật lý có sẵn.
Mỗi chương trình người dùng có thể chiếm ít bộ nhớ vật lý hơn, nhiều chương trình hơn có thể được chạy cùng lúc, với sự gia tăng tương ứng trong việc sử dụng CPU và thông lượng.
Bộ vi xử lý hiện đại dành cho mục đích sử dụng chung, đơn vị quản lý bộ nhớ, hoặc MMU, được tích hợp sẵn trong phần cứng. Công việc của MMU là dịch các địa chỉ ảo thành địa chỉ vật lý. Dưới đây là một ví dụ cơ bản:
Bộ nhớ ảo thường được thực hiện bởi phân trang nhu cầu. Nó cũng có thể được thực hiện trong một hệ thống phân đoạn. Phân đoạn nhu cầu cũng có thể được sử dụng để cung cấp bộ nhớ ảo.
Phân trang nhu cầu
Hệ thống phân trang theo yêu cầu khá giống với hệ thống phân trang có hoán đổi nơi các quy trình nằm trong bộ nhớ phụ và các trang chỉ được tải theo yêu cầu chứ không phải tải trước. Khi xảy ra chuyển đổi ngữ cảnh, hệ điều hành không sao chép bất kỳ trang nào của chương trình cũ ra đĩa hoặc bất kỳ trang nào của chương trình mới vào bộ nhớ chính Thay vào đó, nó chỉ bắt đầu thực thi chương trình mới sau khi tải trang đầu tiên và tìm nạp các trang của chương trình khi chúng được tham chiếu.
Trong khi thực thi một chương trình, nếu chương trình tham chiếu đến một trang không có sẵn trong bộ nhớ chính vì nó đã bị hoán đổi cách đây ít lâu, bộ xử lý sẽ coi tham chiếu bộ nhớ không hợp lệ này là page fault và chuyển quyền điều khiển từ chương trình sang hệ điều hành để yêu cầu trang trở lại bộ nhớ.
Ưu điểm
Sau đây là những ưu điểm của Phân trang theo yêu cầu -
- Bộ nhớ ảo lớn.
- Sử dụng bộ nhớ hiệu quả hơn.
- Không có giới hạn về mức độ đa chương trình.
Nhược điểm
Số lượng bảng và số lượng chi phí của bộ xử lý để xử lý các ngắt trang lớn hơn so với trường hợp của các kỹ thuật quản lý phân trang đơn giản.
Thuật toán thay thế trang
Thuật toán thay thế trang là các kỹ thuật sử dụng Hệ điều hành quyết định trang bộ nhớ nào sẽ hoán đổi, ghi vào đĩa khi một trang bộ nhớ cần được cấp phát. Phân trang xảy ra bất cứ khi nào xảy ra lỗi trang và một trang miễn phí không thể được sử dụng để hạch toán mục đích phân bổ vì lý do các trang không có sẵn hoặc số lượng trang miễn phí thấp hơn số trang được yêu cầu.
Khi trang được chọn để thay thế và được phân trang, được tham chiếu lại, nó phải đọc từ đĩa và điều này yêu cầu hoàn thành I / O. Quá trình này quyết định chất lượng của thuật toán thay thế trang: thời gian chờ trang càng ít thì thuật toán càng tốt.
Thuật toán thay thế trang xem xét thông tin hạn chế về việc truy cập các trang do phần cứng cung cấp và cố gắng chọn trang nào nên được thay thế để giảm thiểu tổng số trang bị bỏ lỡ, đồng thời cân bằng nó với chi phí lưu trữ chính và thời gian xử lý của thuật toán chinh no. Có nhiều thuật toán thay thế trang khác nhau. Chúng tôi đánh giá một thuật toán bằng cách chạy nó trên một chuỗi tham chiếu bộ nhớ cụ thể và tính toán số lỗi trang,
Chuỗi tham chiếu
Chuỗi tham chiếu bộ nhớ được gọi là chuỗi tham chiếu. Các chuỗi tham chiếu được tạo ra một cách giả tạo hoặc bằng cách truy tìm một hệ thống nhất định và ghi lại địa chỉ của mỗi tham chiếu bộ nhớ. Lựa chọn thứ hai tạo ra một số lượng lớn dữ liệu, chúng tôi lưu ý hai điều.
Đối với một kích thước trang nhất định, chúng ta chỉ cần xem xét số trang, không phải toàn bộ địa chỉ.
Nếu chúng ta có tham chiếu đến một trang p, sau đó bất kỳ tham chiếu ngay sau đến trang psẽ không bao giờ gây ra lỗi trang. Trang p sẽ ở trong bộ nhớ sau lần tham chiếu đầu tiên; các tài liệu tham khảo ngay sau đây sẽ không bị lỗi.
Ví dụ: hãy xem xét chuỗi địa chỉ sau - 123,215,600,1234,76,96
Nếu kích thước trang là 100, thì chuỗi tham chiếu là 1,2,6,12,0,0
Thuật toán First In First Out (FIFO)
Trang cũ nhất trong bộ nhớ chính là trang sẽ được chọn để thay thế.
Dễ dàng thực hiện, giữ một danh sách, thay thế các trang từ phần đuôi và thêm các trang mới ở phần đầu.
Thuật toán trang tối ưu
Thuật toán thay thế trang tối ưu có tỷ lệ lỗi trang thấp nhất trong tất cả các thuật toán. Đã tồn tại một thuật toán thay thế trang tối ưu và được gọi là OPT hoặc MIN.
Thay thế trang sẽ không được sử dụng trong thời gian dài nhất. Sử dụng thời gian khi một trang sẽ được sử dụng.
Thuật toán ít được sử dụng gần đây (LRU)
Trang không được sử dụng trong thời gian dài nhất trong bộ nhớ chính là trang sẽ được chọn để thay thế.
Dễ dàng thực hiện, giữ một danh sách, thay thế các trang bằng cách nhìn lại thời gian.
Thuật toán đệm trang
- Để quá trình bắt đầu nhanh chóng, hãy giữ một nhóm các khung hình miễn phí.
- Trên trang bị lỗi, hãy chọn một trang để thay thế.
- Viết trang mới trong khung của pool tự do, đánh dấu bảng trang và khởi động lại quá trình.
- Bây giờ ghi trang bẩn ra khỏi đĩa và đặt khung chứa trang đã thay thế vào vùng trống.
Thuật toán ít được sử dụng nhất (LFU)
Trang có số lượng nhỏ nhất là trang sẽ được chọn để thay thế.
Thuật toán này gặp phải tình huống trong đó một trang được sử dụng nhiều trong giai đoạn đầu của quy trình, nhưng sau đó không bao giờ được sử dụng lại.
Thuật toán được sử dụng thường xuyên nhất (MFU)
Thuật toán này dựa trên lập luận rằng trang có số lượng nhỏ nhất có thể mới được đưa vào và vẫn chưa được sử dụng.
Một trong những công việc quan trọng của Hệ điều hành là quản lý các thiết bị I / O khác nhau bao gồm chuột, bàn phím, touch pad, ổ đĩa, bộ điều hợp màn hình, thiết bị USB, màn hình được ánh xạ bit, đèn LED, bộ chuyển đổi tương tự sang kỹ thuật số, Bật / công tắc tắt, kết nối mạng, I / O âm thanh, máy in, v.v.
Cần có hệ thống I / O để nhận yêu cầu I / O của ứng dụng và gửi đến thiết bị vật lý, sau đó nhận bất kỳ phản hồi nào từ thiết bị và gửi đến ứng dụng. Thiết bị I / O có thể được chia thành hai loại:
Block devices- Thiết bị khối là thiết bị mà trình điều khiển giao tiếp bằng cách gửi toàn bộ khối dữ liệu. Ví dụ, đĩa cứng, máy ảnh USB, Disk-On-Key, v.v.
Character devices- Thiết bị ký tự là thiết bị mà trình điều khiển giao tiếp bằng cách gửi và nhận các ký tự đơn (byte, octet). Ví dụ: cổng nối tiếp, cổng song song, thẻ âm thanh, v.v.
Bộ điều khiển thiết bị
Trình điều khiển thiết bị là các mô-đun phần mềm có thể được cắm vào hệ điều hành để xử lý một thiết bị cụ thể. Hệ điều hành nhận trợ giúp từ trình điều khiển thiết bị để xử lý tất cả các thiết bị I / O.
Bộ điều khiển Thiết bị hoạt động giống như một giao diện giữa thiết bị và trình điều khiển thiết bị. Các đơn vị I / O (Bàn phím, chuột, máy in, v.v.) thường bao gồm một thành phần cơ khí và một thành phần điện tử trong đó thành phần điện tử được gọi là bộ điều khiển thiết bị.
Luôn có một bộ điều khiển thiết bị và một trình điều khiển thiết bị cho mỗi thiết bị để giao tiếp với Hệ điều hành. Một bộ điều khiển thiết bị có thể xử lý nhiều thiết bị. Là một giao diện, nhiệm vụ chính của nó là chuyển đổi dòng bit nối tiếp thành khối byte, thực hiện sửa lỗi khi cần thiết.
Mọi thiết bị được kết nối với máy tính đều được kết nối bằng phích cắm và ổ cắm, và ổ cắm được kết nối với bộ điều khiển thiết bị. Sau đây là mô hình kết nối CPU, bộ nhớ, bộ điều khiển và thiết bị I / O trong đó bộ điều khiển CPU và thiết bị đều sử dụng một bus chung để giao tiếp.
I / O đồng bộ và không đồng bộ
Synchronous I/O - Trong lược đồ này, CPU sẽ đợi thực thi trong khi I / O tiến hành
Asynchronous I/O - I / O tiến hành đồng thời với việc thực thi CPU
Giao tiếp với thiết bị I / O
CPU phải có cách để truyền thông tin đến và đi từ thiết bị I / O. Có ba cách tiếp cận có sẵn để giao tiếp với CPU và Thiết bị.
- I / O hướng dẫn đặc biệt
- I / O được ánh xạ bộ nhớ
- Truy cập bộ nhớ trực tiếp (DMA)
I / O hướng dẫn đặc biệt
Điều này sử dụng các lệnh CPU được tạo riêng để điều khiển các thiết bị I / O. Các hướng dẫn này thường cho phép gửi dữ liệu đến thiết bị I / O hoặc đọc từ thiết bị I / O.
I / O được ánh xạ bộ nhớ
Khi sử dụng I / O được ánh xạ bộ nhớ, cùng một không gian địa chỉ được chia sẻ bởi bộ nhớ và các thiết bị I / O. Thiết bị được kết nối trực tiếp với các vị trí bộ nhớ chính nhất định để thiết bị I / O có thể chuyển khối dữ liệu đến / từ bộ nhớ mà không cần thông qua CPU.
Trong khi sử dụng IO được ánh xạ bộ nhớ, OS phân bổ bộ đệm trong bộ nhớ và thông báo cho thiết bị I / O sử dụng bộ đệm đó để gửi dữ liệu đến CPU. Thiết bị I / O hoạt động không đồng bộ với CPU, ngắt CPU khi kết thúc.
Ưu điểm của phương pháp này là mọi lệnh có thể truy cập bộ nhớ đều có thể được sử dụng để thao tác với thiết bị I / O. IO được ánh xạ bộ nhớ được sử dụng cho hầu hết các thiết bị I / O tốc độ cao như đĩa, giao diện truyền thông.
Truy cập bộ nhớ trực tiếp (DMA)
Các thiết bị chậm như bàn phím sẽ tạo ra một ngắt đến CPU chính sau khi mỗi byte được chuyển. Nếu một thiết bị nhanh như đĩa tạo ra một ngắt cho mỗi byte, hệ điều hành sẽ dành phần lớn thời gian để xử lý những ngắt này. Vì vậy, một máy tính điển hình sử dụng phần cứng truy cập bộ nhớ trực tiếp (DMA) để giảm chi phí này.
Truy cập bộ nhớ trực tiếp (DMA) có nghĩa là CPU cấp quyền cho mô-đun I / O để đọc hoặc ghi vào bộ nhớ mà không cần tham gia. Mô-đun DMA tự nó điều khiển việc trao đổi dữ liệu giữa bộ nhớ chính và thiết bị I / O. CPU chỉ tham gia vào lúc bắt đầu và kết thúc quá trình truyền và chỉ bị ngắt sau khi toàn bộ khối đã được chuyển.
Truy cập bộ nhớ trực tiếp cần một phần cứng đặc biệt được gọi là bộ điều khiển DMA (DMAC) để quản lý việc truyền dữ liệu và phân xử quyền truy cập vào bus hệ thống. Bộ điều khiển được lập trình với con trỏ nguồn và đích (nơi đọc / ghi dữ liệu), bộ đếm để theo dõi số byte được truyền và các cài đặt, bao gồm I / O và các loại bộ nhớ, ngắt và trạng thái cho các chu kỳ CPU.
Hệ điều hành sử dụng phần cứng DMA như sau:
Bươc | Sự miêu tả |
---|---|
1 | Trình điều khiển thiết bị được hướng dẫn để chuyển dữ liệu đĩa sang địa chỉ đệm X. |
2 | Sau đó trình điều khiển thiết bị ra lệnh cho bộ điều khiển đĩa chuyển dữ liệu vào bộ đệm. |
3 | Bộ điều khiển đĩa bắt đầu truyền DMA. |
4 | Bộ điều khiển đĩa gửi từng byte đến bộ điều khiển DMA. |
5 | Bộ điều khiển DMA chuyển các byte vào bộ đệm, tăng địa chỉ bộ nhớ, giảm bộ đếm C cho đến khi C trở về 0. |
6 | Khi C trở thành 0, DMA ngắt CPU để báo hiệu hoàn thành quá trình truyền. |
Thăm dò ý kiến so với Ngắt I / O
Máy tính phải có cách phát hiện sự xuất hiện của bất kỳ loại đầu vào nào. Có hai cách để điều này có thể xảy ra, được gọi làpolling và interrupts. Cả hai kỹ thuật này đều cho phép bộ xử lý đối phó với các sự kiện có thể xảy ra bất cứ lúc nào và không liên quan đến quá trình nó hiện đang chạy.
Thăm dò ý kiến I / O
Thăm dò ý kiến là cách đơn giản nhất để thiết bị I / O giao tiếp với bộ xử lý. Quá trình kiểm tra định kỳ tình trạng của thiết bị để xem đã đến lúc cho thao tác I / O tiếp theo hay chưa, được gọi là thăm dò. Thiết bị I / O chỉ cần đưa thông tin vào thanh ghi Trạng thái và bộ xử lý phải đến và lấy thông tin.
Hầu hết thời gian, các thiết bị sẽ không yêu cầu sự chú ý và khi một thiết bị làm vậy, nó sẽ phải đợi cho đến khi nó được chương trình thăm dò thẩm vấn tiếp theo. Đây là một phương pháp không hiệu quả và phần lớn thời gian của bộ xử lý bị lãng phí vào các cuộc thăm dò không cần thiết.
So sánh phương pháp này với việc một giáo viên liên tục hỏi từng học sinh trong lớp, hết học sinh này đến học sinh khác, nếu họ cần giúp đỡ. Rõ ràng là phương pháp hiệu quả hơn sẽ là học sinh thông báo cho giáo viên bất cứ khi nào họ yêu cầu hỗ trợ.
Ngắt I / O
Một sơ đồ thay thế để xử lý I / O là phương pháp điều khiển gián đoạn. Ngắt là một tín hiệu đến bộ vi xử lý từ một thiết bị cần được chú ý.
Bộ điều khiển thiết bị đặt tín hiệu ngắt trên bus khi nó cần sự chú ý của CPU khi CPU nhận được ngắt, Nó lưu trạng thái hiện tại của nó và gọi trình xử lý ngắt thích hợp bằng cách sử dụng vectơ ngắt (địa chỉ của các thói quen hệ điều hành để xử lý các sự kiện khác nhau). Khi thiết bị ngắt đã được xử lý, CPU tiếp tục với nhiệm vụ ban đầu của nó như thể nó chưa bao giờ bị ngắt.
Phần mềm I / O thường được tổ chức theo các lớp sau:
User Level Libraries- Điều này cung cấp giao diện đơn giản cho chương trình người dùng để thực hiện đầu vào và đầu ra. Ví dụ,stdio là một thư viện được cung cấp bởi các ngôn ngữ lập trình C và C ++.
Kernel Level Modules - Điều này cung cấp trình điều khiển thiết bị để tương tác với bộ điều khiển thiết bị và các mô-đun I / O độc lập với thiết bị được trình điều khiển thiết bị sử dụng.
Hardware - Lớp này bao gồm phần cứng thực tế và bộ điều khiển phần cứng tương tác với trình điều khiển thiết bị và làm cho phần cứng sống động.
Một khái niệm chính trong thiết kế phần mềm I / O là nó phải độc lập với thiết bị, nơi có thể viết các chương trình có thể truy cập vào bất kỳ thiết bị I / O nào mà không cần phải chỉ định trước thiết bị. Ví dụ, một chương trình đọc tệp dưới dạng đầu vào sẽ có thể đọc tệp trên đĩa mềm, trên đĩa cứng hoặc trên CD-ROM mà không cần phải sửa đổi chương trình cho từng thiết bị khác nhau.
Trình điều khiển thiết bị
Trình điều khiển thiết bị là các mô-đun phần mềm có thể được cắm vào hệ điều hành để xử lý một thiết bị cụ thể. Hệ điều hành nhận trợ giúp từ trình điều khiển thiết bị để xử lý tất cả các thiết bị I / O. Trình điều khiển thiết bị đóng gói mã phụ thuộc vào thiết bị và triển khai một giao diện tiêu chuẩn theo cách mà mã chứa thanh ghi dành riêng cho thiết bị đọc / ghi. Trình điều khiển thiết bị, thường do nhà sản xuất thiết bị viết và cung cấp cùng với thiết bị trên đĩa CD-ROM.
Trình điều khiển thiết bị thực hiện các công việc sau:
- Để chấp nhận yêu cầu từ phần mềm độc lập thiết bị ở trên với nó.
- Tương tác với bộ điều khiển thiết bị để lấy và cung cấp I / O và thực hiện xử lý lỗi cần thiết
- Đảm bảo rằng yêu cầu được thực hiện thành công
Cách trình điều khiển thiết bị xử lý một yêu cầu như sau: Giả sử một yêu cầu đến để đọc khối N. Nếu trình điều khiển không hoạt động tại thời điểm một yêu cầu đến, nó sẽ bắt đầu thực hiện yêu cầu ngay lập tức. Ngược lại, nếu trình điều khiển đã bận với một số yêu cầu khác, nó sẽ đặt yêu cầu mới vào hàng đợi các yêu cầu đang chờ xử lý.
Trình xử lý ngắt
Trình xử lý ngắt, còn được gọi là quy trình dịch vụ ngắt hoặc ISR, là một phần của phần mềm hoặc cụ thể hơn là một hàm gọi lại trong hệ điều hành hoặc cụ thể hơn là trong trình điều khiển thiết bị, mà việc thực thi được kích hoạt bằng việc nhận ngắt.
Khi ngắt xảy ra, thủ tục ngắt thực hiện bất cứ điều gì nó phải làm để xử lý ngắt, cập nhật cấu trúc dữ liệu và đánh thức quá trình đang chờ ngắt xảy ra.
Cơ chế ngắt chấp nhận một địa chỉ ─ một số chọn một quy trình / chức năng xử lý ngắt cụ thể từ một tập hợp nhỏ. Trong hầu hết các kiến trúc, địa chỉ này là một phần bù được lưu trữ trong một bảng được gọi là bảng vectơ ngắt. Vectơ này chứa địa chỉ bộ nhớ của các trình xử lý ngắt chuyên dụng.
Phần mềm I / O độc lập với thiết bị
Chức năng cơ bản của phần mềm độc lập với thiết bị là thực hiện các chức năng I / O chung cho tất cả các thiết bị và cung cấp giao diện thống nhất cho phần mềm cấp người dùng. Mặc dù rất khó để viết phần mềm hoàn toàn độc lập với thiết bị nhưng chúng ta có thể viết một số mô-đun phổ biến trong tất cả các thiết bị. Sau đây là danh sách các chức năng của Phần mềm I / O độc lập với thiết bị -
- Giao diện thống nhất cho trình điều khiển thiết bị
- Đặt tên thiết bị - Tên ghi nhớ được ánh xạ tới số thiết bị Chính và Nhỏ
- Bảo vệ thiết bị
- Cung cấp kích thước khối độc lập với thiết bị
- Đang lưu vào bộ đệm vì dữ liệu từ thiết bị không thể được lưu trữ ở đích cuối cùng.
- Phân bổ bộ nhớ trên các thiết bị khối
- Phân bổ và phát hành các thiết bị chuyên dụng
- Báo cáo lỗi
Phần mềm I / O không gian người dùng
Đây là những thư viện cung cấp giao diện phong phú và đơn giản hơn để truy cập chức năng của hạt nhân hoặc cuối cùng là tương tác với trình điều khiển thiết bị. Hầu hết phần mềm I / O cấp người dùng bao gồm các thủ tục thư viện, ngoại trừ một số ngoại lệ như hệ thống phân phối (spooling system) là một cách xử lý với các thiết bị I / O chuyên dụng trong hệ thống đa chương trình.
Thư viện I / O (ví dụ: stdio) nằm trong không gian người dùng để cung cấp giao diện cho I / O SW độc lập với thiết bị thường trú trong hệ điều hành. Ví dụ putchar (), getchar (), printf () và scanf () là ví dụ về stdio thư viện I / O cấp người dùng có sẵn trong lập trình C.
Hệ thống con I / O Kernel
Kernel I / O Subsystem chịu trách nhiệm cung cấp nhiều dịch vụ liên quan đến I / O. Sau đây là một số dịch vụ được cung cấp.
Scheduling- Kernel lên lịch cho một tập hợp các yêu cầu I / O để xác định một thứ tự tốt để thực thi chúng. Khi một ứng dụng đưa ra cuộc gọi hệ thống I / O chặn, yêu cầu sẽ được đưa vào hàng đợi cho thiết bị đó. Bộ lập lịch I / O Kernel sắp xếp lại thứ tự của hàng đợi để cải thiện hiệu quả tổng thể của hệ thống và thời gian phản hồi trung bình mà các ứng dụng phải trải qua.
Buffering - Hệ thống con I / O hạt nhân duy trì một vùng bộ nhớ được gọi là bufferlưu trữ dữ liệu trong khi chúng được truyền giữa hai thiết bị hoặc giữa một thiết bị có hoạt động ứng dụng. Bộ đệm được thực hiện để đối phó với sự không khớp về tốc độ giữa người sản xuất và người tiêu dùng luồng dữ liệu hoặc để điều chỉnh giữa các thiết bị có kích thước truyền dữ liệu khác nhau.
Caching- Kernel duy trì bộ nhớ đệm là vùng bộ nhớ nhanh chứa các bản sao dữ liệu. Quyền truy cập vào bản sao được lưu trong bộ nhớ cache hiệu quả hơn quyền truy cập vào bản gốc.
Spooling and Device Reservation- Bộ đệm là bộ đệm giữ đầu ra cho một thiết bị, chẳng hạn như máy in, không thể chấp nhận các luồng dữ liệu xen kẽ. Hệ thống cuộn sao chép từng tệp ống đệm đã xếp hàng vào máy in. Trong một số hệ điều hành, bộ đệm được quản lý bởi một quy trình nền hệ thống. Trong các hệ điều hành khác, nó được xử lý bởi một luồng trong nhân.
Error Handling - Hệ điều hành sử dụng bộ nhớ được bảo vệ có thể bảo vệ khỏi nhiều loại lỗi phần cứng và ứng dụng.
Tập tin
Tệp là một tập hợp được đặt tên gồm các thông tin liên quan được ghi trên bộ nhớ thứ cấp như đĩa từ, băng từ và đĩa quang. Nói chung, tệp là một chuỗi các bit, byte, dòng hoặc bản ghi mà ý nghĩa của chúng được xác định bởi người tạo và người dùng tệp.
Cấu trúc tệp
Cấu trúc tệp phải theo định dạng bắt buộc mà hệ điều hành có thể hiểu được.
Một tệp có cấu trúc xác định nhất định theo kiểu của nó.
Tệp văn bản là một chuỗi các ký tự được tổ chức thành các dòng.
Tệp nguồn là một chuỗi các thủ tục và hàm.
Tệp đối tượng là một chuỗi các byte được tổ chức thành các khối mà máy có thể hiểu được.
Khi hệ điều hành xác định các cấu trúc tệp khác nhau, nó cũng chứa mã để hỗ trợ các cấu trúc tệp này. Unix, MS-DOS hỗ trợ số lượng cấu trúc tệp tối thiểu.
Loại tệp
Loại tệp đề cập đến khả năng của hệ điều hành trong việc phân biệt các loại tệp khác nhau như tệp nguồn tệp văn bản và tệp nhị phân, v.v. Nhiều hệ điều hành hỗ trợ nhiều loại tệp. Hệ điều hành như MS-DOS và UNIX có các loại tệp sau:
Tệp thông thường
- Đây là những tệp chứa thông tin người dùng.
- Chúng có thể có văn bản, cơ sở dữ liệu hoặc chương trình thực thi.
- Người dùng có thể áp dụng các thao tác khác nhau trên các tệp đó như thêm, sửa đổi, xóa hoặc thậm chí xóa toàn bộ tệp.
Tệp thư mục
- Các tệp này chứa danh sách tên tệp và thông tin khác liên quan đến các tệp này.
Tệp đặc biệt
- Các tệp này còn được gọi là tệp thiết bị.
- Các tệp này đại diện cho thiết bị vật lý như đĩa, thiết bị đầu cuối, máy in, mạng, ổ băng, v.v.
Các tệp này có hai loại -
Character special files - dữ liệu được xử lý theo từng ký tự như trong trường hợp thiết bị đầu cuối hoặc máy in.
Block special files - dữ liệu được xử lý trong các khối như trong trường hợp đĩa và băng.
Cơ chế truy cập tệp
Cơ chế truy cập tệp đề cập đến cách thức mà các bản ghi của tệp có thể được truy cập. Có một số cách để truy cập tệp -
- Truy cập tuần tự
- Truy cập trực tiếp / ngẫu nhiên
- Truy cập tuần tự được lập chỉ mục
Truy cập tuần tự
Truy cập tuần tự là trong đó các bản ghi được truy cập theo một số trình tự, tức là, thông tin trong tệp được xử lý theo thứ tự, bản ghi này đến bản ghi kia. Phương thức truy cập này là phương thức nguyên thủy nhất. Ví dụ: Các trình biên dịch thường truy cập tệp theo kiểu này.
Truy cập trực tiếp / ngẫu nhiên
Tổ chức tệp truy cập ngẫu nhiên cung cấp, truy cập trực tiếp vào các bản ghi.
Mỗi bản ghi có địa chỉ riêng của nó trên tệp với sự trợ giúp của nó có thể được truy cập trực tiếp để đọc hoặc ghi.
Các bản ghi không cần phải theo bất kỳ trình tự nào trong tệp và chúng không cần ở các vị trí liền kề trên phương tiện lưu trữ.
Truy cập tuần tự được lập chỉ mục
- Cơ chế này được xây dựng trên cơ sở truy cập tuần tự.
- Một chỉ mục được tạo cho mỗi tệp chứa các con trỏ đến các khối khác nhau.
- Chỉ mục được tìm kiếm tuần tự và con trỏ của nó được sử dụng để truy cập trực tiếp vào tệp.
Phân bổ không gian
Tệp được phân bổ không gian đĩa bởi hệ điều hành. Hệ điều hành triển khai sau ba cách chính để phân bổ không gian đĩa cho các tệp.
- Phân bổ liên tục
- Phân bổ liên kết
- Phân bổ được lập chỉ mục
Phân bổ liên tục
- Mỗi tệp chiếm một không gian địa chỉ liền kề trên đĩa.
- Địa chỉ đĩa được chỉ định theo thứ tự tuyến tính.
- Dễ để thực hiện.
- Phân mảnh bên ngoài là một vấn đề lớn đối với loại kỹ thuật cấp phát này.
Phân bổ liên kết
- Mỗi tệp mang một danh sách các liên kết đến các khối đĩa.
- Thư mục chứa liên kết / con trỏ đến khối đầu tiên của tệp.
- Không có phân mảnh bên ngoài
- Sử dụng hiệu quả trong tệp truy cập tuần tự.
- Không hiệu quả trong trường hợp tệp truy cập trực tiếp.
Phân bổ được lập chỉ mục
- Cung cấp giải pháp cho các vấn đề về phân bổ liền kề và liên kết.
- Một khối chỉ mục được tạo ra với tất cả các con trỏ đến tệp.
- Mỗi tệp có khối chỉ mục riêng lưu trữ địa chỉ của không gian đĩa mà tệp đó chiếm.
- Thư mục chứa địa chỉ của các khối chỉ mục của tệp.
Bảo mật đề cập đến việc cung cấp một hệ thống bảo vệ các tài nguyên hệ thống máy tính như CPU, bộ nhớ, đĩa, chương trình phần mềm và quan trọng nhất là dữ liệu / thông tin được lưu trữ trong hệ thống máy tính. Nếu một chương trình máy tính được chạy bởi người dùng trái phép, thì người đó có thể gây ra thiệt hại nghiêm trọng cho máy tính hoặc dữ liệu được lưu trữ trong đó. Vì vậy, một hệ thống máy tính phải được bảo vệ chống lại sự truy cập trái phép, truy cập độc hại vào bộ nhớ hệ thống, virus, sâu, v.v. Chúng ta sẽ thảo luận về các chủ đề sau trong chương này.
- Authentication
- Mật khẩu một lần
- Đe doạ chương trình
- Mối đe dọa hệ thống
- Phân loại bảo mật máy tính
Xác thực
Xác thực đề cập đến việc xác định từng người dùng của hệ thống và liên kết các chương trình đang thực thi với những người dùng đó. Hệ điều hành có trách nhiệm tạo ra một hệ thống bảo vệ đảm bảo rằng người dùng đang chạy một chương trình cụ thể là xác thực. Hệ điều hành thường xác định / xác thực người dùng bằng ba cách sau:
Username / Password - Người dùng cần nhập tên đăng nhập và mật khẩu đã đăng ký với Hệ điều hành để đăng nhập vào hệ thống.
User card/key - Người dùng cần đục lỗ thẻ trong khe cắm thẻ, hoặc nhập khóa do bộ tạo khóa tạo ra trong tùy chọn do hệ điều hành cung cấp để đăng nhập vào hệ thống.
User attribute - fingerprint/ eye retina pattern/ signature - Người dùng cần chuyển thuộc tính của mình thông qua thiết bị nhập được chỉ định được hệ điều hành sử dụng để đăng nhập vào hệ thống.
Mật khẩu một lần
Mật khẩu một lần cung cấp bảo mật bổ sung cùng với xác thực thông thường. Trong hệ thống Mật khẩu dùng một lần, một mật khẩu duy nhất được yêu cầu mỗi khi người dùng cố gắng đăng nhập vào hệ thống. Sau khi mật khẩu một lần được sử dụng, sau đó nó không thể được sử dụng lại. Mật khẩu dùng một lần được thực hiện theo nhiều cách khác nhau.
Random numbers- Người dùng được cung cấp thẻ có in số kèm theo bảng chữ cái tương ứng. Hệ thống yêu cầu các số tương ứng với một vài bảng chữ cái được chọn ngẫu nhiên.
Secret key- Người dùng được cung cấp một thiết bị phần cứng có thể tạo một id bí mật được ánh xạ với id người dùng. Hệ thống yêu cầu id bí mật này sẽ được tạo mỗi lần trước khi đăng nhập.
Network password - Một số ứng dụng thương mại gửi mật khẩu một lần cho người dùng trên điện thoại di động / email đã đăng ký, mật khẩu này được yêu cầu nhập trước khi đăng nhập.
Đe doạ chương trình
Các quy trình và nhân của hệ điều hành thực hiện tác vụ được chỉ định theo hướng dẫn. Nếu một chương trình người dùng thực hiện quá trình này thực hiện các tác vụ độc hại, thì nó được gọi làProgram Threats. Một trong những ví dụ phổ biến về mối đe dọa chương trình là một chương trình được cài đặt trong máy tính có thể lưu trữ và gửi thông tin đăng nhập của người dùng qua mạng cho một số hacker. Sau đây là danh sách một số mối đe dọa chương trình nổi tiếng.
Trojan Horse - Chương trình như vậy bẫy thông tin đăng nhập của người dùng và lưu trữ chúng để gửi cho người dùng độc hại, những người sau này có thể đăng nhập vào máy tính và có thể truy cập tài nguyên hệ thống.
Trap Door - Nếu một chương trình được thiết kế để hoạt động theo yêu cầu, có lỗ hổng bảo mật trong mã của nó và thực hiện hành động bất hợp pháp mà người dùng không biết thì nó được gọi là có cửa bẫy.
Logic Bomb- Bom logic là một tình huống khi một chương trình hoạt động sai chỉ khi đáp ứng các điều kiện nhất định, nếu không nó hoạt động như một chương trình chính hãng. Khó bị phát hiện hơn.
Virus- Virus như tên gợi ý có thể tự sao chép trên hệ thống máy tính. Chúng rất nguy hiểm và có thể sửa đổi / xóa các tập tin của người dùng, làm hỏng hệ thống. Virus hoàn toàn là một mã nhỏ được nhúng trong một chương trình. Khi người dùng truy cập vào chương trình, vi-rút bắt đầu được nhúng vào các tệp / chương trình khác và có thể làm cho hệ thống không sử dụng được đối với người dùng
Mối đe dọa hệ thống
Mối đe dọa hệ thống đề cập đến việc sử dụng sai các dịch vụ hệ thống và kết nối mạng để khiến người dùng gặp rắc rối. Các mối đe dọa hệ thống có thể được sử dụng để khởi chạy các mối đe dọa chương trình trên một mạng hoàn chỉnh được gọi là cuộc tấn công chương trình. Các mối đe dọa hệ thống tạo ra một môi trường mà tài nguyên hệ điều hành / tệp người dùng bị lạm dụng. Sau đây là danh sách một số mối đe dọa hệ thống nổi tiếng.
Worm- Worm là một quá trình có thể làm giảm hiệu suất của hệ thống bằng cách sử dụng tài nguyên hệ thống đến mức cực đoan. Một quy trình Worm tạo ra nhiều bản sao của nó trong đó mỗi bản sao sử dụng tài nguyên hệ thống, ngăn chặn tất cả các quy trình khác nhận tài nguyên cần thiết. Các quy trình Worms thậm chí có thể đóng toàn bộ mạng.
Port Scanning - Quét cổng là một cơ chế hoặc phương tiện mà hacker có thể phát hiện ra các lỗ hổng của hệ thống để thực hiện tấn công vào hệ thống.
Denial of Service- Các cuộc tấn công từ chối dịch vụ thường ngăn cản người dùng sử dụng hợp pháp hệ thống. Ví dụ: người dùng có thể không sử dụng được Internet nếu từ chối dịch vụ tấn công cài đặt nội dung của trình duyệt.
Phân loại bảo mật máy tính
Theo Tiêu chí Đánh giá Hệ thống Máy tính Tin cậy của Bộ Quốc phòng Hoa Kỳ, có bốn phân loại bảo mật trong các hệ thống máy tính: A, B, C và D. Đây là các thông số kỹ thuật được sử dụng rộng rãi để xác định và mô hình hóa tính bảo mật của hệ thống và giải pháp bảo mật. Sau đây là mô tả ngắn gọn của mỗi phân loại.
SN | Loại phân loại & Mô tả |
---|---|
1 | Type A Cấp độ cao nhất. Sử dụng các thông số kỹ thuật thiết kế chính thức và kỹ thuật xác minh. Cấp một mức độ đảm bảo cao về bảo mật quy trình. |
2 | Type B Cung cấp hệ thống bảo vệ bắt buộc. Có tất cả các thuộc tính của một hệ thống lớp C2. Gắn nhãn độ nhạy cho mỗi đối tượng. Nó có ba loại.
|
3 | Type C Cung cấp sự bảo vệ và trách nhiệm giải trình của người dùng bằng khả năng kiểm toán. Nó có hai loại.
|
4 | Type D Cấp độ thấp nhất. Bảo vệ tối thiểu. MS-DOS, Window 3.1 thuộc loại này. |
Linux là một trong những phiên bản phổ biến của Hệ điều hành UNIX. Nó là mã nguồn mở vì mã nguồn của nó có sẵn miễn phí. Nó là miễn phí để sử dụng. Linux được thiết kế dựa trên khả năng tương thích với UNIX. Danh sách chức năng của nó khá giống với UNIX.
Các thành phần của hệ thống Linux
Hệ điều hành Linux chủ yếu có ba thành phần
Kernel- Kernel là phần cốt lõi của Linux. Nó chịu trách nhiệm cho tất cả các hoạt động chính của hệ điều hành này. Nó bao gồm các mô-đun khác nhau và nó tương tác trực tiếp với phần cứng bên dưới. Kernel cung cấp tính trừu tượng cần thiết để ẩn các chi tiết phần cứng cấp thấp đối với các chương trình hệ thống hoặc ứng dụng.
System Library- Thư viện hệ thống là các chức năng hoặc chương trình đặc biệt sử dụng chương trình ứng dụng hoặc tiện ích hệ thống nào truy cập các tính năng của Kernel. Các thư viện này thực thi hầu hết các chức năng của hệ điều hành và không yêu cầu quyền truy cập mã của mô-đun hạt nhân.
System Utility - Các chương trình Tiện ích Hệ thống chịu trách nhiệm thực hiện các nhiệm vụ chuyên biệt, cấp độ cá nhân.
Chế độ hạt nhân so với Chế độ người dùng
Mã thành phần hạt nhân thực thi trong một chế độ đặc quyền đặc biệt được gọi là kernel modevới toàn quyền truy cập vào tất cả các tài nguyên của máy tính. Mã này đại diện cho một quy trình duy nhất, thực thi trong không gian địa chỉ duy nhất và không yêu cầu bất kỳ chuyển đổi ngữ cảnh nào và do đó rất hiệu quả và nhanh chóng. Kernel chạy từng quy trình và cung cấp dịch vụ hệ thống cho các quy trình, cung cấp quyền truy cập được bảo vệ vào phần cứng đối với các quy trình.
Mã hỗ trợ không cần thiết để chạy trong chế độ hạt nhân nằm trong Thư viện Hệ thống. Chương trình người dùng và các chương trình hệ thống khác hoạt động trongUser Modekhông có quyền truy cập vào phần cứng hệ thống và mã hạt nhân. Các chương trình / tiện ích người dùng sử dụng Thư viện hệ thống để truy cập các chức năng Kernel để nhận các tác vụ cấp thấp của hệ thống.
Tính năng cơ bản
Sau đây là một số tính năng quan trọng của Hệ điều hành Linux.
Portable- Tính di động có nghĩa là phần mềm có thể hoạt động trên các loại phần cứng khác nhau theo cùng một cách. Hạt nhân Linux và các chương trình ứng dụng hỗ trợ cài đặt của chúng trên bất kỳ loại nền tảng phần cứng nào.
Open Source- Mã nguồn Linux có sẵn miễn phí và nó là dự án phát triển dựa trên cộng đồng. Nhiều nhóm làm việc cộng tác để nâng cao khả năng của hệ điều hành Linux và nó liên tục phát triển.
Multi-User - Linux là một hệ thống đa người dùng có nghĩa là nhiều người dùng có thể truy cập tài nguyên hệ thống như bộ nhớ / ram / chương trình ứng dụng cùng một lúc.
Multiprogramming - Linux là một hệ thống đa chương trình có nghĩa là nhiều ứng dụng có thể chạy cùng một lúc.
Hierarchical File System - Linux cung cấp một cấu trúc tệp tiêu chuẩn, trong đó các tệp hệ thống / tệp người dùng được sắp xếp.
Shell- Linux cung cấp một chương trình thông dịch đặc biệt có thể được sử dụng để thực thi các lệnh của hệ điều hành. Nó có thể được sử dụng để thực hiện các loại hoạt động, gọi các chương trình ứng dụng. Vân vân.
Security - Linux cung cấp bảo mật cho người dùng bằng các tính năng xác thực như bảo vệ bằng mật khẩu / quyền truy cập có kiểm soát vào các tệp cụ thể / mã hóa dữ liệu.
Ngành kiến trúc
Hình minh họa sau đây cho thấy kiến trúc của một hệ thống Linux:
Kiến trúc của Hệ thống Linux bao gồm các lớp sau:
Hardware layer - Phần cứng bao gồm tất cả các thiết bị ngoại vi (RAM / HDD / CPU, v.v.).
Kernel - Nó là thành phần cốt lõi của Hệ điều hành, tương tác trực tiếp với phần cứng, cung cấp các dịch vụ cấp thấp cho các thành phần lớp trên.
Shell- Một giao diện cho kernel, che giấu sự phức tạp của các chức năng của kernel khỏi người dùng. Shell nhận lệnh từ người dùng và thực thi các chức năng của kernel.
Utilities - Các chương trình tiện ích cung cấp cho người dùng hầu hết các chức năng của hệ điều hành.