1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO CÁO LẬP TRÌNH HỆ THỐNG ĐỀ TÀI CPU scheduling algorithms - Write a C program that demonstrate CPU scheduling algorithms SJF.docx

40 12 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề CPU Scheduling Algorithms - Write a C Program That Demonstrate CPU Scheduling Algorithms SJF
Tác giả Vũ Đình Tấn, Phạm Văn Tuấn, Đinh Xuân Thìn, Nguyễn Xuân Phúc
Người hướng dẫn Th.S Phạm Hồ Trọng Nguyên
Trường học Trường Đại học Công nghệ Thông Tin và Truyền Thông Việt - Hàn
Chuyên ngành Khoa học máy tính
Thể loại Báo cáo lập trình hệ thống
Năm xuất bản 2022
Thành phố Đà Nẵng
Định dạng
Số trang 40
Dung lượng 654,73 KB

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

Nội dung

e Shell sh /bin/shand /sbin/sh Vào khoảng 1972 - 1973, hệ thống được viết lại bằng ngôn ngữ C và thông quaquyết định này, Unix đã trở thành hệ điều hành được sử dụng rộng rãi nhất có thể

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT - HÀN

KHOA KHOA HỌC MÁY TÍNH

Giảng viên hướng dẫn : Th.S Phạm Hồ Trọng Nguyên

Đà Nẵng, tháng 11 năm 2022

Trang 2

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ

TRUYỀN THÔNG VIỆT – HÀN KHOA KHOA HỌC MÁY TÍNH

BÁO CÁO LẬP TRÌNH HỆ THỐNG

TÊN ĐỀ TÀI : CPU scheduling algorithms - Write a C program that demonstrate CPU scheduling algorithms

SJF

Trang 3

Đà Nẵng, tháng … năm 2022

LỜI CẢM ƠN

Để hoàn thành bài báo Lập trình hệ thống này trước tiên em xin gửi lời cảm

ơn chân thành đến các thầy cô giảng viên trong khoa Khoa học Máy tinh Trường Đạihọc Công Nghệ Thông Tin và Truyền thông Việt - Hàn

Đặc biệt, em xin gửi đến thầy Phạm Hồ Trọng Nguyên, người đã tận tinhhướng dẫn, giúp đỡ trong việc nâng cao kiến thức chuyên môn, phát huy cho chúng

em tinh tự học, tự tim hiểu, từ đó hình thành các phương pháp nghiên cứu, tim tòi,tiếp cận với khoa học công nghệ Đồng thời trau dồi kỹ năng học tập năng động vàsáng tạo

Vì kiến thức còn hạn chế, trong quá trình tim hiểu về đề tài này em không thểtránh những sai sót Em rất mong nhận được những nhận xét, đánh giá, đóng góp ýkiến từ thầy cô để rút ra kinh nghiệm từ bài báo cáo học phần này và chuẩn bị tốtcho những bài báo cáo học phần sau.

Em xin chân thành cảm ơn!

Trang 4

NHẬN XÉT(Của giảng viên hướng dẫn)

Trang 5

2.1.3 Điều phối không độc quyền và điều phối độc quyền 15

Trang 6

3.1 Lập lịch Non-Preemptive 24

CHƯƠNG 1: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH UNIX

1.1 Hệ Điều hành

UNIX là một hệ điều hành phổ biến, trước đây chúng được sử dụng trong cácminicomputer và các workstation trong các công sở nghiên cứu khoa học Ngày nayUNIX đã trở thành hệ điều hành được dùng cho cả máy tinh cá nhân và phục vụ côngviệc kinh doanh nhờ khả năng mở của nó UNIX giống như các hệ điều hành khác nó

là lớp nằm giữa phần cứng và ứng dụng Nó có chức năng quản lý phần cứng và quản

lý các ứng dụng thực thi Điều khác nhau cơ bản giữa UNIX và bất kỳ hệ điều hànhkhác là sự thực thi bên trong và giao diện Hệ điều hành UNIX thực sự là một hệ điềuhành Nó bao gồm các thành phần trước đây (Phần cơ bản vốn có của hệ điều hànhUnix) và các thành phần mới bổ sung, nó là lớp nằm giữa phần cứng và các ứng dụng.Cấu trúc cơ bản của hệ điều hành Unix như sau:

Hình ảnh:

Trang 7

Phần quản lý phần cứng và các ứng dụng thực thi gọi là kernel Trong quản lýcác thiết bị phần cứng UNIX xem mỗi thiết bị này như một file (được gọi là devicefile) Điều này cho phép việc truy nhập các thiết bị giống như việc đọc và ghi trên file.Việc quản lý quyền truy nhập trên các thiết bị thông qua hệ thống kiểm soát bảo mậtquyền hạn Các process đang thực thi được UNIX phân chia tài nguyên bao gồm CPU

và các truy nhập tới phần cứng Khi khởi động máy tinh thì một chương trình unixđược nạp vào trong bộ nhớ chính, và nó hoạt động cho đến khi shutdown hoặc khitắt máy Chương trình này được gọi là kernel, thực hiện chức năng mức thấp và chứcnăng mức hệ thống Kernel chịu trách nhiệm thông dịch và gửi các chỉ thị tới bộ vi xử

lý máy tinh Kernel cũng chịu trách nhiệm về các tiến trình và cung cấp các đầu vào

và ra cho các tiến trình Kernel là trái tim của hệ điều hành UNIX Khi kernel được nạpvào trong bộ nhớ lúc đó nó đã sẵn sàng nhận các yêu cầu từ người sử dụng Đầu tiênngười sử dụng phải login và đưa ra yêu cầu Việc login là để kernel biết ai đã vào hệthống và cách truyền thông với chúng Để làm điều này kernel gọi chạy hai chươngtrình đặc biệt là getty và login Đầu tiên kernel gọi chạy getty Getty hiển thị dấu nhắc

Trang 8

và yêu cầu người sử dụng nhập vào Khi nhận được thông tin đầu vào getty gọichương trình login Chương trình login thiết lập định danh cho user và xác địnhquyền của user login Chương trình login kiểm tra mật khẩu trong file mật khẩu Nếumật khẩu không đúng cổng vào sẽ không được thiết lập và bị trả lại điều khiển chogetty Nếu user nhập đúng mật khẩu chương trình login gửi điều khiển tới chươngtrình mà có tên nằm trong password file Thông thường chương trình này là 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

(non-root user)

Câu lệnh mặc định (Root user)

Trang 9

e Shell

(sh)

/bin/shand /sbin/sh

Vào khoảng 1972 - 1973, hệ thống được viết lại bằng ngôn ngữ C và thông quaquyết định này, Unix đã trở thành hệ điều hành được sử dụng rộng rãi nhất có thểchuyển đổi được và không cần phần cứng ban đầu cho nó Các cải tiến khác cũngđược thêm vào Unix trong một phần của sự thoả thuận giữa AT&T Bell Labs và cộngđồng các trường đại học và học viện Vào năm 1979, phiên bản thứ 7 của Unix đượcphát hành, đó chính là hệ điều hành gốc cho tất cả các hệ thống Unix có hiện nay

Sau thời điểm đó, lịch sử Unix bắt đầu trở nên hơi phức tạp Cộng đồng cáctrường đại học và học viện, đứng đầu là Berkeley, phát triển một nhánh khác gọi làBerkeley Software Distribution (BSD), trong khi AT&T tiếp tục phát triển Unix dướitên gọi là “Hệ thống III” và sau đó là “Hệ thống V” Vào những năm cuối của thập kỷ

1980 cho đến các năm đầu thập kỷ 1990, một “cuộc chiến tranh” giữa hai hệ thốngchính này đã diễn ra hết sức căng thẳng Sau nhiều năm, mỗi hệ thống đi theo nhữngđặc điểm khác nhau Trong thị trường thương mại, “Hệ thống V” đã giành thắng lợi(có hầu hết các giao tiếp theo một chuẩn thông dụng) và nhiều nhà cung cấp phần

Trang 10

cứng đã chuyển sang “Hệ thống V” của AT&T Tuy nhiên, “Hệ thống V” cuối cùng đãkết hợp các cải tiến BSD, và kết quả là hệ thống đã trở thành sự pha trộn của 2 nhánhUnix Nhánh BSD không chết, thay vào đó, nó đã được sử dụng rộng rãi trong mụcđích nghiên cứu, cho các phần cứng PC, và cho các server đơn mục đích (vd: nhiềuwebsite sử dụng một nguồn BSD).

Kết quả là có nhiều phiên bản Unix khác nhau, nhưng tất cả đều dựa trênphiê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 từng nhà cung cấp phần cứng tương ứng, ví dụ Sun Solaris là mộtphiên bản của “Hệ thống V” Ba phiên bản của BSD của nhánh Unix cuối cùng đã trởthành mã nguồn mở: FreeBSD (tập trung vào sự cài đặt dễ dàng trên phần cứng củadòng máy PC), NetBSD (tập trung vào nhiều kiến trúc CPU khác nhau) và một bảnkhác của NetBSD, OpenBSD (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õicủ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ị

Trang 11

Network Goals UNIX NetWare Windows NT

Interoperability Excellent Good Fair

Accessibility Good Excellent Fair

Third-party utilities available Excellent Good Fair

Directory services Excellent Good Fair

Years of experience >25 >10 <10

Trang 12

1.4 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

Trang 13

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ả

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

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 tinh 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

Trang 14

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

Trang 15

- 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

Tiêu chuẩn tối ưu:

▪Giữ CPU bận nhiều nhất

▪Thông lượng lớn 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

Trang 16

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 đượcnhững mục tiêu đề ra Một số đặc tinh của tiến trình cần được quan tâm nhưtiêu chuẩn điều phối:

- Tính hướng xuất/nhập của tiến trình: Khi một tiến trình được nhận CPU, chủ yếu nó chỉ sử dụng CPU đến khi phát sinh một yêu cầu nhập xuất Hoạt động

của

các tiến trình như thế thường bao gồm nhiều lượt sử dụng CPU, mỗi lượt trong mộtthời gian khá ngắn

- Tính hướng xử lý của tiến trình: Khi một tiến trình được nhận CPU, nó có

khuynh hướng sử dụng CPU đến khi hết thời gian dành cho nó? Hoạt động của các tiến trình như thế thường bao gồm một số ít lượt sử dụng CPU, nhưng mỗi lượt trong một thời gian đủ dài

- Tiến trình tương tác hay xử lý theo lô: Người sử dụng theo kiểu tương tác

thường yêu cầu được hồi đáp tức thời đối với các yêu cầu của họ, trong khi các tiến chấp nhận được

- Độ ưu tiên của tiến trình: Các tiến trình có thể được phân cấp theo một số tiêu chuẩn đánh giá nào đó, một cách hợp lý, các tiến trình quan trọng hơn(có độ ưu tiên cao hơn) cần được ưu tiên cao hơn

- Thời gian đã sử dụng CPU của tiến trình: một số quan điểm ưu tiên chọn những tiến trình đã sử dụng CPU nhiều thời gian nhất vì hy vọng chúng sẽ cần ít thời gian nhất để hoàn tất và rời khỏi hệ thống Tuy nhiên cũng có quan điểm cho rằng các tiến trình nhận được CPU trong ít thời gian là những tiến trình đã phải chờ lâu nhất, do vậy ưu tiên chọn chúng

- Thời gian còn lại tiến trình cần để hoàn tất: Có thể giảm thiểu thời gian chờ

trung bình của các tiến trình bằng cách cho các tiến trình cần ít thời gian nhất để hoàn tất được thực hiện trước Tuy nhiên đáng tiếc là rất hiếm khi biết được

Trang 17

tiến

Trang 18

trình cần bao nhiêu thời gian nữa để kết thúc xử lý.

Trang 19

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 cần xem xét và quyết định thời điểm chuyển đổi CPU giữa các tiến trình Hệ điều hành các thể thực hiện cơ chế điều phối theo nguyên lý độcquyền hoặc không độc quyền:

Điều phối độc quyền: Nguyên lý điều phối độc quyền cho phép một tiến trình

khi nhận được CPU sẽ có quyền độc chiếm CPU đến khi hoàn tất xử lý hoặc tự

nguyện giải phóng CPU Khi đó quyết định điều phối CPU sẽ xảy ra trong các tinh huống sau:

- Khi tiến trình chuyển từ trạng thái đang xử lý (running) sang trạng thái bị

blocked (ví dụ chờ một thao tác nhập xuất hay 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 Tuy nhiên chúng thườngkhông thích hợp với các hệ thống tổng quát nhiều người dùng, vì nếu cho phép mộttiến trình có quyền xử lý bao lâu tùy ý, có nghĩa là tiến trình này có thể giữ CPU mộtthời gian không xác định, có thể ngăn cản những tiến trình còn lại trong hệ thống cómột cơ hội để xử lý

Điều phối không độc quyền: Ngược với nguyên lý độc quyền, điều phối theo

nguyên lý không độc quyền cho phép tạm dừng hoạt động của một tiến trình sẵn sàng xử lý Khi một tiến trình nhận được CPU, nó vẫn được sử dụng CPU đến khi hoàn tất hoặc tự nguyện giải phóng CPU, nhưng khi có một tiến trình khác có độ ưutiên có thể dành quyền sử dụng CPU của tiến trình ban đầu Như vậy là tiến trình

có thể bị tạm dừng hoạt động bất cứ lúc nào mà không được báo trước, để tiến trình khác xử lý Các quyết định điều phối xảy ra khi:

- 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)

Trang 20

- 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 theo nguyên tắc không độc quyền ngăn cản được tinh trạngmột tiến trình độc chiếm CPU, nhưng việc tạm dừng một tiến trình có thể dẫn đến các mâu thuẫn trong truy xuất, đòi hỏi phải sử dụng một phương pháp đồng bộ hóa thích hợp để giải quyết

Trong các hệ thống sử dụng nguyên lý điều phối độc quyền có thể xảy ra tinh

trạng các tác vụ cần thời gian xử lý ngắn phải chờ tác vụ xử lý với thời gian rất dàihoàn tất Nguyên lý điều phối độc quyền thường chỉ thích hợp với các hệ xử lý theo lô

Đối với các hệ thống tương tác (time sharing), các hệ thời gian thực (real time),cần phải sử dụng nguyên lý điều phối không độc quyền để các tiến trình quan trọng

có cơ hội hồi đáp kịp thời Tuy nhiên thực hiện hiện điều phối theo nguyên lý không độc quyền đòi hỏi nhưng cơ chế phức tạp trong việc phân định độ ưu tiên, và phát sinh thêm chi phí khi chuyển đổi CPU qua lại giữa các tiến trình

2.1.4 Khái niệm giờ CPU:

- CPU là một loại tài nguyên quan trọng của máy tinh Mọi tiến trình muốn hoạt độngphải có sự phục vụ của CPU Thời gian mà CPU phục vụ cho tiến trình hoạt độngđượ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êncầ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

Trang 21

- Đợi (Waiting): là trạng thái tiến trình không thực hiện được vì thiếu một vài điềukiện nào đó (đợi dữ liệu vào/ ra, đợi tài nguyên bổ sung ) Khi sự kiện mà nó chờđợi xuất hiện, tiến trình sẽ quay lại trạng thái sẵn sàng.

Trang 22

- 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ử

2.1.6 Khái niệm lập lịch cho CPU

Để điều khiển tiến trình ở nhiều trạng thái khác nhau, hệ thống thường tổ chức

các từ trạng thái(thực chất là các khối điều khiển tiến trình) để ghi nhận tinh trạng sử dụng tài nguyên và trạng thái tiến trình

Như vậy lập lịch cho CPU có nghĩa là tổ chức một hàng đợi các tiến trình

sẵn sàng để phân phối giờ CPU cho chúng trên độ ưu tiên của các tiến trình; sao

Ngày đăng: 15/11/2022, 23:37

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w