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

Báo cáo nhóm bài tập dài môn hệ điều hành đề tài caltrain automation

16 18 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

Định dạng
Số trang 16
Dung lượng 211,54 KB

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

Nội dung

Lúc này, mục đích hướng ta hướng tới là phải thiết kế, lập trình sao cho các tiến trình phải đồng bộ hóa với nhau để qua trình tàu đón khách ở ga đầy đủ các tiến trình : tàu dừng cho khá

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN TỬ - VIỄN THÔNG

Báo cáo nhóm bài tập dài môn Hệ Điều Hành

Đề tài: Caltrain Automation

Giáo viên hướng dẫn: TS Phạm Văn Tiến Sinh viên thực hiện:

Phạm Hải Anh 20182358 ĐTVT.02-K63

Hà Nội, 05-2021

Trang 2

MỤC LỤC

Lời nói đầu 3

I Mô tả mục tiêu, phương pháp, cách triển khai mã nguồn 4

1.1 Mục tiêu hướng tới 4

1.2 Phương pháp giải quyết 4

1.3 Cách triển khai mã nguồn 5

II Công việc thực hiện 6

2.1 Mô tả mã nguồn cho hàm station_init() 6

2.2 Mô tả mã nguồn cho hàm station_load_train() 7

III Kết quả thu được 8

IV Tài liệu tham khảo 8

Trang 3

Danh mục hình vẽ

Hình 1: Kết quả hàm station_init 7

Hình 2: Kết quả hàm station_load_train 8

Trang 4

Lời nói đầu

Hệ điều hành (Operating System - OS) là phần mềm hệ

thống quản lý phần cứng máy tính, tài nguyên phần mềm và cung cấp

các dịch vụ chung cho các chương trình máy tính

Hệ điều hành đóng vai trò trung gian trong việc giao tiếp giữa

người sử dụng và phần cứng máy tính, cung cấp một môi trường cho

phép người sử dụng phát triển và thực hiện các ứng dụng của họ một

cách dễ dàng Hệ điều hành chia sẻ thời gian lập lịch cho các tác vụ để sử

dụng hệ thống một cách hiệu quả và cũng có thể bao gồm phần mềm kế

toán để phân bổ chi phí thời gian xử lý, lưu trữ dung lượng lớn, in ấn và

các tài nguyên khác

Hệ điều hành trước đây và sau này sẽ luôn luôn giữu vai trò qua

trọng của thời đại công nghệ Được sự hướng dẫn của thầy Phạm Văn

Tiến, nhóm em đã tìm hiểu về hệ điều hành pintos và chọn đề tài Caltrain

Trang 5

Automation để làm đề tài nghiên cứu cho bài tập lớn Chúng em xin chân

thành cảm ơn sự hướng dẫn, chỉ dạy tận tình của thầy đã giúp chúng em

hoàn thành bài tập lớn lần này

Trang 6

I Mô tả mục tiêu, phương pháp, cách triển khai mã nguồn

1.1 Mục tiêu hướng tới

Tự động hóa đang dần trở thành xu hướng của thời đại Ngành công

nghiệp đường sắt cũng không nằm ngoài xu hướng này Việc tự động

hóa tàu đã có nhiều thành tựu với nhiều cấp độ điều khiển khác nhau Ở

bài tập này chúng ta tiến hành tự động hóa qua trình tàu dừng và đón

hành khách ở ga tàu Để tối ưu hóa được năng suất và thời gian thì cần

phải tự động hóa cả những hành khách lên chuyến tàu Cụ thể, mỗi hành

khách sẽ được coi như là các người máy

Mỗi chuyến tàu và người máy lúc này sẽ được kết nối và điều khiển

bởi các luồng Lúc này, mục đích hướng ta hướng tới là phải thiết kế, lập

trình sao cho các tiến trình phải đồng bộ hóa với nhau để qua trình tàu

đón khách ở ga đầy đủ các tiến trình : tàu dừng cho khách lên, hành

Trang 7

khách lên tàu và hành khách ngồi vào chỗ trống sau khi lên tàu Trong

quá trình chạy cũng cần phải thỏa mãn các điều kiện để tối ưu

1.2 Phương pháp giải quyết

Để có đạt được mục tiêu trên chúng ta cần phải có những chức năng

tối ưu nhất, gần như không được có sai sót và đáp ứng được yêu cầu đề

ra Chúng ta cần nắm chắc, nghiên cứu rõ các giai đoạn của một chuyến

tàu, xác định chính xác công việc của từng giai đoạn

Sau một thời gian thảo luận, nhóm em quyết định lựa chọn ngôn ngữ

lập trình C, biên dịch bằng “a test framework” do người ra đề tài cung

cấp và chạy thông qua Terminal trên hệ điều hành Ubuntu 18.04 để có

thể thực hiện tốt nhất project “Clatrain Automation”

Cấu trúc, hàm chức năng của từng giai đoạn:

 Đoàn tàu đến ga và mở cửa:

station_load_train (struct station * station, int Count)

Trang 8

Hàm dùng để điều khiển tàu tham chiếu tới struct station gồm các

giá trị ghế trống, hành khách đợi ở ga, hành khách lên tàu và các biến

điều kiện khác, tham số count là số ghể trống.Khi thỏa mãn điều kiện

hành khách đợi ở ga > 0 và ghể trống trên tàu > 0 Khi đó tàu sẽ dừng và

thông báo cho tất cả hành khách đang đợi ở ga để lên tàu Hàm chỉ được

chạy khi tàu ở ga và hoàn tất quá trình khách đã lên tàu

 Khi hành khách đến ga tàu:

station_wait_for_train(struct station *station)

Hàm kiểm soát khách đang chờ đợi lên tàu, kiểm tra xem tàu có đủ

điều kiện đón khách hay không Hàm chỉ hoạt động khi có tàu trong ga

và có chỗ trông trên tàu Nếu hành khách đã lên đầy tàu hoặc tàu đã hết

ghế trống thì các hành khách còn lại phải dừng việc lên tàu và đợi tàu

Trang 9

khác đến Trong quá trình lên tàu thì cập nhật lại số hành khách đang đợi

ở ga và số hành khách đã lên tàu

 Khi hành khách đã lên tàu và ngồi vào chỗ:

station_on_board(struct station *station)

Hàm sẽ thực hiện quá trình thực sự cho hành khach ngồi vào chỗ

và cập nhật lại hành khách ở trên tàu và ghế trống Nếu ghể trống trên

tàu đã hết hoặc hành khách đã ngồi hết vào chỗ thì thông báo tất cả các

hành khách đã ngồi vào chỗ thành công để tàu bắt đàu chạy,

1.3 Cách triển khai mã nguồn

Sau khi xác định toàn bộ chức năng của vấn đề được đặt ra, nhóm em

đã sắp xếp và sử dụng ngôn ngữ lập trình C để tạo thành một chương

trình hoàn chỉnh có thể đưa vào sử dụng

Trang 10

Chương trình C hoàn chỉnh được biên dịch bằng “a test framework”

có sẵn do người ra đề tài cung cấp và được chạy thông qua Termial trên

hệ điều hành Ubuntu 18.04 Kết quả cuối cùng sẽ được hiển thị tại màn

hình giao diện Terminal

II Công việc thực hiện

Sau quá trình trao đổi và thảo luận, nhóm em đã thống nhất và đưa ra

công việc của từng các nhân Bản thân em làm 2 nhiệm vụ chính là viết

hàm khởi tạo station_init() và station_load_train() Các hàm trên đều

được viết bằng ngôn ngữ C, hoàn chỉnh cùng với các phần code khác và

biên dịch bằng “a test framework” có sẵn do người ra đề tài cung cấp,

chạy thông qua Termial trên hệ điều hành Ubuntu 18.04 Kết quả cuối

cùng sẽ được hiển thị tại màn hình giao diện Terminal như trong báo cáo

của nhóm

Sau đây là mô tả mã nguồn cho các hàm mà em đã viết

Trang 11

2.1 Mô tả mã nguồn cho hàm station_init()

Hàm station_init() sẽ khởi tạo các giá trị ban đầu cho cấu trúc station

Số lượng ghế trống, hành khách đợi ở ga, hành khách lên tàu có giá trị

ban đầu bằng 0 Các hàm lock_init, cond_init dùng để khởi tạo giá trị

ban đầu cho khóa lock và 2 biến điều kiên Tau_den , Tat_ca_hk_len_tau

Hình 1: Kết quả hàm station_init

Trang 12

2.2 Mô tả mã nguồn cho hàm station_load_train()

Luồng điều khiển hàm station_load_train() thực hiện lấy khóa bằng

cách gọi hàm lock_acquire() và tiếp tục thực thi hàm, các luồng điều

khiển hàm khác phải dừng thực thi Count là biến chỉ ra số lượng ghế

trống trên tàu khi có một con tàu đến ga Khi thỏa mãn điều kiện là có

hành khách đợi ở ga ( station -> hk_doi_o_ga > 0) và còn ghế trống trên

tàu ( station -> ghe_trong > 0 ) thì thực hiên cho tất cả các hành khách

bắt đầu lên tàu và phải chờ cho đến khi tất cả các hành khách lên tàu

ngồi vào chỗ thành công Sau khi tàu rời đi, ghe_trong trở về 0 để bắt

đầu quá trình mới Luồng điều kiên nhả khóa bằng cách gọi hàm

lock_release() đê cho các luồng khác thực thi

Trang 13

Hình 2: Kết quả hàm station_load_train

III Kết quả thu được

Các hàm đều đã có thể chạy được và đưa ra kết quả giống như mong

muốn của nhóm Trong quá trình tìm hiểu và thực hiện bài tập lớn, em

cũng đã được tiếp cận với lập trình đa luồng để có thể áp dụng các kiến

thức được học trên lớp Em hi vọng có thể nhận được các đóng góp của

thầy để có thể tối ưu hóa mã nguồn của mình hơn

Trang 14

IV Tài liệu tham khảo

[1] https://cseweb.ucsd.edu/

[2] https://web.stanford.edu/

Link Github của nhóm:

https://github.com/nguyentuanhung2557phamhaianh2358/pintosproject?

fbclid=IwAR0_zinqT4_VoGZ7dIvjcKVUzXnV4ZMklID0Tz5ucAC62vTIFxQ7GABz4

T0

Ngày đăng: 29/12/2021, 10:14

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w