TỔNG QUAN VỀ HỆ ĐIỀU HÀNH UNIX
Hệ Điều hành
UNIX là một hệ điều hành phổ biến, từng được sử dụng chủ yếu trên minicomputer và workstation trong các nghiên cứu khoa học Hiện nay, UNIX đã trở thành lựa chọn cho cả máy tính cá nhân và môi trường kinh doanh nhờ vào khả năng mở rộng của nó Giống như các hệ điều hành khác, UNIX hoạt động như một lớp trung gian giữa phần cứng và ứng dụng, quản lý tài nguyên phần cứng và điều phối các ứng dụng đang chạy Điểm khác biệt cơ bản giữa UNIX và các hệ điều hành khác nằm ở cách thực thi và giao diện UNIX không chỉ là một hệ điều hành thông thường mà còn bao gồm các thành phần cốt lõi cùng với những bổ sung mới, tạo thành một nền tảng vững chắc giữa phần cứng và ứng dụng.
Cấu trúc cơ bản của hệ điều hành Unix như sau:
Kernel là phần quản lý phần cứng và các ứng dụng thực thi trong hệ thống UNIX Hệ điều hành UNIX coi mỗi thiết bị phần cứng như một file, được gọi là device file, giúp việc truy cập các thiết bị trở nên dễ dàng như thao tác đọc và ghi trên file.
Quản lý quyền truy cập trên các thiết bị thông qua hệ thống kiểm soát bảo mật là rất quan trọng UNIX phân chia tài nguyên như CPU và truy cập phần cứng cho các tiến trình đang thực thi Khi khởi động máy tính, một chương trình UNIX được nạp vào bộ nhớ chính, gọi là kernel, hoạt động cho đến khi tắt máy Kernel thực hiện các chức năng mức thấp và hệ thống, chịu trách nhiệm thông dịch và gửi chỉ thị tới bộ vi xử lý, đồng thời quản lý các tiến trình và cung cấp đầu vào, đầu ra cho chúng Khi kernel đã nạp vào bộ nhớ, nó sẵn sàng nhận yêu cầu từ người sử dụng Người dùng cần phải login để kernel biết ai đang vào hệ thống và cách giao tiếp với họ Để thực hiện điều này, kernel gọi hai chương trình đặc biệt là getty và login Getty hiển thị dấu nhắc và yêu cầu người dùng nhập thông tin, sau đó gọi chương trình login để thiết lập định danh và quyền của người dùng Chương trình login kiểm tra mật khẩu trong file mật khẩu; nếu mật khẩu sai, quyền truy cập sẽ không được thiết lập Ngược lại, nếu mật khẩu đúng, chương trình login sẽ chuyển điều khiển tới chương trình shell.
Việc thao tác trực tiếp với kernel rất phức tạp và yêu cầu kỹ thuật cao Để giảm bớt khó khăn cho người dùng và bảo vệ kernel khỏi sai sót, shell đã được phát triển như một lớp bao quanh kernel Người dùng gửi yêu cầu đến shell, shell sẽ biên dịch và chuyển tiếp yêu cầu đó tới kernel.
● Lập trình shell Hiện nay trên hệ điều hành Unix người ta đang sử dụng chủ yếu ba loại shell sau:
Shell Path Câu lệnh mặc định
Câu lệnh mặc định(Root user)
/bin/sh and /sbin/sh
Lịch sử phát triển
Vào giữa năm 1969 - 1970, Kenneth Thompson, Dennis Ritchie và nhóm nghiên cứu tại phòng thí nghiệm AT&T Bell Labs đã khởi đầu việc phát triển một hệ điều hành nhỏ trên nền tảng PDP-7 Hệ điều hành này sau đó được đặt tên là Unix, một cái tên được lấy cảm hứng từ dự án hệ điều hành trước đó mang tên MULTICS.
Vào khoảng năm 1972 - 1973, hệ điều hành Unix được viết lại bằng ngôn ngữ C, giúp nó trở thành hệ điều hành phổ biến và có khả năng chuyển đổi mà không cần phần cứng ban đầu Các cải tiến tiếp theo được thực hiện thông qua sự hợp tác giữa AT&T Bell Labs và cộng đồng các trường đại học Đến năm 1979, phiên bản thứ 7 của Unix ra đời, trở thành nền tảng cho tất cả các hệ thống Unix hiện nay.
Sau thời điểm đó, lịch sử Unix trở nên phức tạp hơn khi cộng đồng đại học, đặc biệt là Berkeley, phát triển nhánh Berkeley Software Distribution (BSD) Trong khi đó, AT&T tiếp tục phát triển Unix với tên gọi “Hệ thống III” và sau đó là “Hệ thống V” vào những năm cuối của thập kỷ.
Từ năm 1980 đến đầu thập kỷ 1990, một cuộc cạnh tranh căng thẳng giữa hai hệ thống chính đã diễn ra Qua nhiều năm, mỗi hệ thống phát triển với những đặc điểm riêng Trong lĩnh vực thương mại, “Hệ thống V” đã chiến thắng nhờ vào việc áp dụng một chuẩn giao tiếp phổ biến, khiến nhiều nhà cung cấp phần cứng chuyển sang sử dụng hệ thống của AT&T Cuối cùng, “Hệ thống V” đã tích hợp các cải tiến từ BSD, tạo ra một sự pha trộn giữa hai nhánh Unix Nhánh BSD không biến mất mà vẫn được sử dụng rộng rãi trong nghiên cứu, trên các phần cứng PC và cho các server đơn mục đích, với nhiều website hiện nay vẫn dựa vào nguồn gốc BSD.
Kết quả là có nhiều phiên bản Unix khác nhau, tất cả đều dựa trên phiên bản thứ bảy ban đầu Hầu hết các phiên bản Unix đều thuộc quyền sở hữu và được bảo vệ bởi các nhà cung cấp phần cứng như Sun Solaris, một phiên bản của “Hệ thống V” Ba phiên bản BSD của nhánh Unix đã trở thành mã nguồn mở, bao gồm FreeBSD, tập trung vào cài đặt dễ dàng trên phần cứng PC, NetBSD, chú trọng vào nhiều kiến trúc CPU khác nhau, và OpenBSD, phiên bản của NetBSD, tập trung vào bảo mật.
Năm 2000, Apple đã phát hành Darwin, cũng là một hệ thống Unix, trở thành cốt lõi của hệ điều hành Mac OS X, sau này được đổi tên thành macOS [21]
Hệ điều hành Unix được sử dụng rộng rãi trong các servers, workstations, và thiết bị di động hiện đại
Các đặc điểm cơ bản
Hệ điều hành UNIX có một số đặc điểm sau:
● Tổ chức tập tin phân cấp
Network Goals UNIX NetWare Windows NT
Third-party utilities available Excellent Good Fair
Directory services Excellent Good Fair
Print support Good Good Fair
Lệnh và tiện ích cơ bản
1.4.1 Các lệnh khởi tạo login Thực hiện login vào một người sử dụng nào đó su Chuyển sang người sử dụng từ một người sử dụng nào đó uname Xem một số thông tin về hệ thống. who Hiện lên người đang thâm nhập hệ thống who am i xem ai đang làm việc tại terminal exit Thoát khỏi hệ thống env Xem thông tin tất cả các biển môi trường. man Gọi trình trợ giúp
1.4.2 Các lệnh hiển thị echo Hiển thị dòng ký tự hay biến lên màn hình setcolor Đặt màu nền và chữ của màn hình
1.4.3 Định hướng vào ra cmd>File Chuyển nội dung hiển thị ra file cmd< file Lấy đầu vào từ file cmd>>file Nội dung hiển thị được thêm vào file cmd1 | cmd2 Đầu ra của lệnh cmd1 thành đầu vào của lệnh cmd2
1.4.4 Desktop bc Dùng để tính toán các biểu thức số học cal Hiện lịch date Hiển thị và đặt ngày mesg Cấm/ cho phép hiển thị thông báo trên màn hình (bởi write hello) spell Kiểm tra lỗi chính tả vi Soạn thảo văn bản write/ hello Cho phép gửi dòng thông báo đến những người đang sử dụng trong hệ thống wall Gửi thông báo đến màn hình người sử dụng hệ thống
1.4.5 Các lệnh thao tác với thư mục và file cd Thay đổi thư mục cp Sao chép một hay nhiều tập tin find Tìm vị trí của tập tin mkdir Tạo thư mục rmdir Xoá thư mục mv Chuyển/ đổi tên một tập tin pwd Hiện vị trí thư mục hiện thời ls Hiện tên file và thuộc tính của nó ln Tạo liên kết file (link) sort Sắp xếp thứ tự tập tin hiển thị cat Xem nội dung của file tail Xem nội dung file tại cuối của file more Hiện nội dung tập tin trình bày dưới dạng nhiều trang grep Tìm vị trí của chuỗi ký tự wc Đếm số từ trong tập tin compress Nén file. uncompress Mở nén.
1.4.6 Quản lý tiến trình kill Hủy bỏ một quá trình đang hoạt động ps Hiện các tiến trình đang hoạt động và trạng thái của các tiến trình sleep Ngưng hoạt động của tiến trình trong một khoảng thời gian
1.4.7 Kiểm soát quyền hạn và bảo mật passwd Thay đổi password hoặc các tham số đối với người sử dụng chgrp Thay đổi quyền chủ sở hữu file hoặc thư mục chmod Thay đổi quyền hạn trên file hoặc thư mục chown Thay đổi người sở hữu tập tin hay thư mục
1.4.8 Các thao tác trên mạng ping Kiểm tra sự tham gia của các nút trên mạng netstat Kiểm tra trạng thái của mạng hiện thời ftp Thực hiện dịch vụ truyền nhận file telnet Thực hiện kết nối với một hệ thống
Uutry Kết nối UUCP rcp Sao chép file ở xa
LẬP LỊCH CPU
Cơ sở lý thuyết
Bộ điều phối không chỉ cung cấp cơ chế mà còn đưa ra các quyết định quan trọng Các hệ điều hành phát triển nhiều chiến lược khác nhau để thực hiện việc điều phối, nhưng đều hướng tới việc đạt được các mục tiêu chung.
- Sự công bằng: các tiến trình chia sẻ CPU một cách công bằng không có tiến trình nào phải đợi vô hạn để được cấp phát CPU.
- Tính hiệu quả: Hệ thống phải tận dụng được CPU 100% thời gian.
- Thời gian đáp ứng hợp lý: cực tiểu hóa thời gian hồi đáp cho các tương tác của người sử dụng.
- Thời gian lưu lại trong hệ thống: cực tiểu hóa thời gian hoàn tất các tác vụ xử lý theo lô.
- Thông lượng tối đa: cực đại hóa số công việc được xử lý trong một đơn vị thời gian.
▪Giữ CPU bận nhiều nhất
▪Thời gian hoàn thành nhỏ nhất
▪Thời gian chờ nhỏ nhất
▪Thời gian đáp ứng nhỏ nhất
2.1.2.Các đặc điểm của tiến trình Điều phối hoạt động của các tiến trình là một vấn đề rất phức tạp, đòi hỏi hệ điều hành khi giải quyết phải xem xét nhiều yếu tố khác nhau để có thể đạt được những mục tiêu đề ra Một số đặc tính của tiến trình cần được quan tâm như tiêu chuẩn điều phối:
Khi một tiến trình được cấp CPU, nó chủ yếu sử dụng CPU cho đến khi có yêu cầu nhập xuất Các tiến trình này thường thực hiện nhiều lượt sử dụng CPU, với mỗi lượt diễn ra trong khoảng thời gian ngắn.
Tính hướng xử lý của tiến trình đề cập đến khả năng của một tiến trình trong việc sử dụng CPU liên tục cho đến khi hết thời gian được phân bổ Thông thường, các tiến trình này thực hiện một vài lượt sử dụng CPU, nhưng mỗi lượt lại kéo dài trong một khoảng thời gian đáng kể.
Tiến trình tương tác trong xử lý theo lô cho thấy người dùng thường mong muốn nhận được phản hồi ngay lập tức cho các yêu cầu của họ, trong khi những tiến trình chấp nhận được có thể diễn ra với thời gian dài hơn.
Độ ưu tiên của tiến trình là yếu tố quan trọng trong quản lý hệ thống, nơi các tiến trình được phân cấp dựa trên các tiêu chí đánh giá cụ thể Những tiến trình quan trọng hơn, với độ ưu tiên cao hơn, cần được xử lý trước để đảm bảo hiệu suất và tính ổn định của hệ thống.
Khi xem xét thời gian sử dụng CPU của tiến trình, có hai quan điểm chính Một số ý kiến cho rằng nên ưu tiên các tiến trình đã sử dụng nhiều thời gian CPU, vì chúng có khả năng hoàn tất nhanh chóng hơn và rời khỏi hệ thống Ngược lại, cũng có quan điểm cho rằng các tiến trình nhận CPU trong thời gian ngắn thường là những tiến trình đã phải chờ đợi lâu nhất, do đó cần được ưu tiên xử lý.
Để giảm thiểu thời gian chờ trung bình của các tiến trình, nên ưu tiên thực hiện các tiến trình có thời gian hoàn tất ngắn nhất trước Tuy nhiên, việc xác định chính xác thời gian còn lại để hoàn tất các tiến trình là rất khó khăn.
2.1.3.Điều phối không độc quyền và điều phối độc quyền
Thuật toán điều phối CPU phải xác định thời điểm chuyển đổi giữa các tiến trình Hệ điều hành có thể áp dụng cơ chế điều phối theo hai nguyên lý: độc quyền và không độc quyền Theo nguyên lý điều phối độc quyền, một tiến trình khi nhận được CPU sẽ có quyền chiếm giữ CPU cho đến khi hoàn tất xử lý hoặc tự nguyện giải phóng Quyết định điều phối CPU sẽ được thực hiện trong những tình huống nhất định.
Khi tiến trình chuyển từ trạng thái đang xử lý (running) sang trạng thái bị blocked, điều này xảy ra khi nó chờ đợi một thao tác nhập xuất hoặc chờ một tiến trình con kết thúc.
- Khi tiến trình kết thúc.
Các giải thuật độc quyền thường đơn giản và dễ cài đặt, nhưng không phù hợp với hệ thống nhiều người dùng, vì chúng có thể khiến một tiến trình chiếm CPU trong thời gian không xác định, ngăn cản các tiến trình khác Ngược lại, điều phối không độc quyền cho phép tạm dừng hoạt động của một tiến trình khi có tiến trình khác có độ ưu tiên cao hơn Khi một tiến trình nhận được CPU, nó tiếp tục sử dụng cho đến khi hoàn tất hoặc tự nguyện giải phóng, nhưng có thể bị tạm dừng bất cứ lúc nào để nhường quyền sử dụng cho tiến trình khác Các quyết định điều phối diễn ra trong bối cảnh này.
- Khi tiến trình chuyển từ trạng thái đang xử lý(running) sang trạng thái bị blocked.
- Khi tiến trình chuyển từ trạng thái đang xử lý(running) sang trạng thái ready(vì xảy ra một ngắt).
- Khi tiến trình chuyển từ trạng thái chờ (blocked) sang trạng thái ready (ví dụ một thao tác nhập xuất hoàn tất).
- Khi tiến trình kết thúc.
Các thuật toán điều phối không độc quyền giúp ngăn chặn tình trạng một tiến trình độc chiếm CPU Tuy nhiên, việc tạm dừng một tiến trình có thể gây ra mâu thuẫn trong việc truy xuất tài nguyên, do đó cần áp dụng phương pháp đồng bộ hóa phù hợp để giải quyết vấn đề này.
Trong các hệ thống điều phối độc quyền, các tác vụ cần thời gian xử lý ngắn có thể phải chờ đợi tác vụ xử lý lâu hoàn tất, khiến nguyên lý này chỉ phù hợp với hệ xử lý theo lô Ngược lại, trong các hệ thống tương tác và thời gian thực, nguyên lý điều phối không độc quyền là cần thiết để đảm bảo các tiến trình quan trọng được hồi đáp kịp thời Tuy nhiên, việc áp dụng nguyên lý này yêu cầu cơ chế phân định độ ưu tiên phức tạp và phát sinh chi phí khi chuyển đổi CPU giữa các tiến trình.
CPU là tài nguyên quan trọng trong máy tính, cần thiết cho mọi tiến trình hoạt động Thời gian mà CPU dành cho tiến trình này được gọi là giờ CPU.
- Tại mỗi thời điểm chỉ có một tiến trình được phân phối giờ CPU để hoạt động.
2.1.5 Khái niệm trạng thái của tiến trình:
Trong chế độ đa chương trình, có ba trạng thái của tiến trình liên quan mật thiết đến giờ CPU bao gồm: Ready, Running và Waiting.
- Sẵn sàng (Ready): Là trạng thái mà tiến trình được phân phối đầy đủ mọi tài nguyên cần thiết và đang chờ giờ CPU.
- Thực hiện (Running): là trạng thái mà tiến trình được phân phối đầy đủ mọi tài nguyên cần thiết và giờ CPU.
Đợi (Waiting) là trạng thái của tiến trình khi không thể thực hiện do thiếu các điều kiện cần thiết, chẳng hạn như dữ liệu vào/ra hoặc tài nguyên bổ sung Khi sự kiện mà tiến trình đang chờ đợi xảy ra, nó sẽ trở lại trạng thái sẵn sàng.
- Các tiến trình tuân thủ theo sơ đồ thực hiện sau:
Một tiến trình đang trong trạng thái thực hiện, nó có thể rời khỏi trạng thái bởi một trong ba lý do sau:
- Tiến trình đã hoàn thành công viên, khi đó nó trả lại giờ CPU và chuyển sang chờ xử lý kết thúc.
Mô phỏng giải thuật Shortest-job-first
Khi CPU được tự do, nó sẽ được cấp phát cho tiến trình yêu cầu ít thời gian nhất để kết thúc.
Preemptive SJF: Một CPU đã cung cấp cho một tiến trình nào thì phải chờ cho tiến trình đó xử lý xong mới lấy lại.
Non-Preemptive SJF là một thuật toán lập lịch trong đó nếu một tiến trình mới xuất hiện với thời gian yêu cầu ngắn hơn thời gian còn lại của tiến trình đang chạy, tiến trình hiện tại sẽ không bị ngắt và sẽ tiếp tục thực hiện cho đến khi hoàn thành Điều này tương tự với mô hình Shortest-Remaining-Time-First (SRTF), nhưng không cho phép ngắt tiến trình đang chạy.
▪ SJF là giải thuật tối ưu–cho phép đạt được thời gian chờ trung bình cực tiểu.
2.2.1 Ví dụ về trường hợp Preemptive:
Process Thời gian đến Thời gian hoàn thành
Thời gian chờ trung bình= (0 + 6 + 3 + 7)/4 = 4
2.2.2 Ví dụ về trường hợp Non - Preemptive:
Process Thời gian đến Thời gian hoàn thành
Thời gian chờ trung bình = (9 + 1 + 0 +2)/4 = 3
Các phần mềm và công nghệ sử dụng
2.3.1 Máy ảo Oracle VM VirtualBox a VirtualBox là gì?
Oracle VM VirtualBox là một nền tảng mã nguồn mở và miễn phí, cho phép người dùng tạo, quản lý và vận hành các máy ảo (VMs) Các máy ảo này hoạt động như những máy tính độc lập với phần cứng được mô phỏng từ máy tính chủ.
Oracle VirtualBox cho phép người dùng thiết lập và sử dụng nhiều máy ảo (VM) trên một máy tính vật lý, đồng thời chạy các hệ điều hành khác nhau như Microsoft Windows, Linux, BSD và MS-DOS Số lượng máy ảo mà bạn có thể cài đặt phụ thuộc vào dung lượng ổ cứng và bộ nhớ RAM của máy tính Đặc biệt, Oracle VirtualBox là phần mềm mã nguồn mở miễn phí, mang lại nhiều lợi ích cho người sử dụng.
VirtualBox is a Type 2 Hypervisor virtualization platform that allows virtual machines (VMs) created on one server to be easily run on another server Utilizing the Open Virtualization Format (OVF), VMs can be effortlessly exported and imported, providing flexibility and convenience in managing virtual environments.
VirtualBox cung cấp tính năng nhóm máy ảo (VM groups), cho phép người dùng dễ dàng quản lý các máy ảo bằng cách sắp xếp chúng thành các nhóm Người dùng có thể áp dụng các thao tác như khởi động, tắt, khôi phục, lưu trạng thái, tắt nguồn cho từng máy ảo riêng lẻ hoặc cho toàn bộ nhóm.
Guest additions là bộ công cụ cài đặt trên hệ điều hành máy chủ ảo nhằm nâng cao hiệu suất và cung cấp tích hợp với VirtualBox, đồng thời cải thiện khả năng giao tiếp với máy chủ.
VirtualBox cung cấp tính năng snapshot cho phép người dùng chụp lại trạng thái của máy ảo (VM Guest) Khi gặp lỗi trong quá trình thực hiện lab, bạn có thể dễ dàng quay ngược lại thời điểm đã chụp ảnh, giúp hoàn nguyên máy ảo về trạng thái trước đó.
Hỗ trợ phần cứng: VirtualBox hỗ trợ SMP cho Guest, thiết bị USB, hỗ trợ full ACPI, phân giải đa màn hình và boot mang PXE.
VirtualBox cung cấp nhiều tính năng hữu ích, và còn nhiều tính năng khác mà người dùng có thể khám phá thêm Để tìm hiểu chi tiết về các tính năng này, bạn có thể truy cập trang chính thức của VirtualBox.
Oracle VirtualBox là một phần mềm ảo hóa mạnh mẽ, cho phép người dùng mở rộng và linh hoạt trong việc sử dụng Với VirtualBox, bạn có thể dễ dàng chạy nhiều hệ điều hành khác nhau trên cùng một máy tính Mỗi hệ điều hành khách có khả năng khởi động, dừng và tạm dừng một cách độc lập, mang lại sự tiện lợi và hiệu suất tối ưu cho người dùng.
Hypervisor hoạt động như một dịch vụ kernel Ring 0, trong đó kernel chứa trình điều khiển thiết bị vboxsrv Trình điều khiển này đảm nhận các nhiệm vụ quan trọng như phân bổ bộ nhớ vật lý cho máy khách ảo, tải các mô-đun hypervisor để thực hiện các chức năng như lưu và khôi phục ngữ cảnh quy trình khách khi có gián đoạn, chuyển quyền kiểm soát sang hệ điều hành khách để bắt đầu thực thi và xác định thời điểm cần xử lý các sự kiện VT-x hoặc AMD-V.
Guest quản lý lịch trình hệ điều hành trong quá trình thực thi, hoạt động như một quá trình duy nhất và chỉ chạy khi được máy chủ lưu trữ lên kế hoạch Ngoài ra, guest còn có thể sử dụng các trình điều khiển thiết bị bổ sung, cho phép hệ điều hành truy cập các tài nguyên như đĩa, bộ điều khiển mạng và các thiết bị khác.
Ngoài các module kernel, còn có nhiều quy trình khác hoạt động trên máy chủ để hỗ trợ cho các máy ảo (guest VM) Khi một máy ảo được khởi động từ giao diện người dùng VirtualBox, quy trình VBoxSVC sẽ tự động khởi động ở chế độ nền.
NetBSD là một hệ điều hành miễn phí và nguồn mở, tương tự như UNIX, được phát triển bởi một cộng đồng quốc tế Khác với các "phân phối" hay biến thể khác, NetBSD đã được phát triển trong nhiều thập kỷ để trở thành một hệ điều hành hoàn chỉnh và độc đáo trong hệ sinh thái BSD.
NetBSD, được phát hành lần đầu vào năm 1993, đã phát triển mạnh mẽ và được triển khai trong nhiều môi trường khác nhau nhờ vào lịch sử lâu dài về chất lượng, sự sạch sẽ và độ ổn định Mã nguồn của NetBSD ban đầu được phát triển từ 4.4BSD Lite2 tại Đại học California, Berkeley.
Người dùng NetBSD trải nghiệm một hệ thống đơn giản và đầy đủ tài liệu, mang lại cảm giác tối thiểu và truyền thống, nhưng vẫn tích hợp nhiều tính năng hiện đại và hấp dẫn, đồng thời hỗ trợ phần cứng mới nhất.
Là một cộng đồng, những người tạo ra NETBSD có một khu vực lợi ích rộng lớn, dẫn đến một hệ thống với một số tính năng đa dạng:
NetBSD tích hợp nhiều tính năng bảo mật, bao gồm PAX MProtect (W^x) được áp dụng toàn cầu, với tùy chọn loại trừ các nhị phân Hệ thống bảo vệ tính toàn vẹn tệp được hỗ trợ bởi VeriExec và các mức độ bảo mật BSD truyền thống, hạn chế hoạt động ngay cả với quyền Superuser Ngoài ra, NetBSD có tường lửa NPF riêng và đã được triển khai thành công trên các thiết bị mạng quan trọng Hạt nhân và không gian người dùng của NetBSD đã trải qua các kiểm tra khắt khe bằng máy khử trùng mã và thử nghiệm tự động.
CHƯƠNG TRÌNH C TRÌNH BÀY THUẬT TOÁN SJF
Lập lịch Non-Preemptive
The provided C program is designed to calculate the average waiting time and turnaround time for a set of processes It begins by prompting the user to enter the number of processes and their respective burst times The program stores the burst times in an array and assigns process IDs accordingly By calculating the waiting time and turnaround time for each process, it ultimately aims to compute the average values, which are essential for evaluating process scheduling efficiency in operating systems.
} //sorting of burst times for(i=0;i