1. Trang chủ
  2. » Giáo án - Bài giảng

kỹ thuật điện hệ điều hành 3 sinhvienzone com

3 39 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 3
Dung lượng 114,31 KB

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

Nội dung

HCM, Khoa KH & KTMTBài thực hành 3 Môn: Hệ điều hành Hoàng Hồng Nam Email: hhnam@cse.hcmut.edu.vn Ngày 29 tháng 10 năm 2013 1 Một số nguyên tắc khi viết mã C Tham khảo: http://www.gnu.or

Trang 1

Đại học Bách Khoa TP HCM, Khoa KH & KTMT

Bài thực hành 3 Môn: Hệ điều hành

Hoàng Hồng Nam Email: hhnam@cse.hcmut.edu.vn

Ngày 29 tháng 10 năm 2013

1 Một số nguyên tắc khi viết mã C

Tham khảo: http://www.gnu.org/prep/standards/standards.html Một số nguyên tắc cơ bản để viết một chương trình C:

• Số lượng ký tự (kể cả khoảng trắng) trong một dòng code là 79

• Giải thích mã nguồn: từng trường dữ liệu trong một cấu trúc, ý nghĩa hoạt động của từng hàm, các tham số đầu vào, thông số đầu ra của hàm

• Định dạng mã nguồn thống nhất trong toàn bộ chương trình

– Tên hằng: Viết hoa, ngắn gọn, hạn chế viết tắt Ví dụ: #define ERR_MISSED_FILE (-1)

– Tên biến hay tên cấu trúc: Viết thường, không viết liền các từ, đủ ý, ngắn gọn, thường là danh từ Ví dụ: int num_people;

– Tên hàm: tương tự tên biến, nhưng thường bắt đầu bằng động từ Ví dụ: int search_name (List list, char * name);

– Cách đặt dấu ngoặc nhọn, cách thụt đầu dòng: xem tham khảo

Trang 2

2 Lập trình C cơ bản: Xử lý các thông số đầu vào

chương trình

Xử lý các thông số đầu vào Xem lại bài thực hành số 2 và yêu cầu bài tập lớn số

1 Ví dụ dưới đây mô tả một cách để xử lý các thông số đầu vào

1 #include <s t d i o h>

2 #include < s t r i n g h>

3 i n t main ( i n t a r g c , char ∗∗ a r g v ) {

4 i n t i = 0 ;

5 char ∗ f i l e n a m e = NULL ;

6 f o r ( i = 0 ; i < a r g c ; i ++) {

7 i f ( strcmp ( a r g v [ i ] , "−h" ) == 0 ) p r i n t f ( " P r i n t ␣ h e l p ␣ \ n" ) ;

8 e l s e i f ( strcmp ( a r g v [ i ] , "− i " ) == 0 ) {

9 i f ( i == a r g c − 1 ) {

10 p r i n t f ( " E r r o r : ␣ Need ␣ one ␣ i n p u t ␣ f i l e \ n" ) ;

13 f i l e n a m e = a r g v [ i + 1 ] ;

15 p r i n t f ( " I n p u t ␣ f i l e ␣name␣ i s ␣%s \n" , f i l e n a m e ) ;

18 }

Bên cạnh cách làm trên, sinh viên có thể tham khảo thêm hàm getopt để phân tích thông số đầu vào một chương trình

Xử lý input file Với file input như đặc tả trong bài tập lớn số 1 (giả lập định thời), hãy viết đoạn chương trình để lấy thông tin từng dòng trong input file đó

Gợi ý: Sử dụng hàm fscanf để phân tích từng dòng trong input file

1 FILE∗ f ;

2 i n t n1 , n2 , n3 , n4 ;

3 char s [ 1 0 ] ;

4 f s c a n f ( f , "%d␣%d␣%d␣%d" , &n1 , &n2 , &n3 , &n4 ) ;

Nếu sử dụng: fscanf(f, "%d %d %d %s", &n1, &n2, &n3, &s); kết quả trả về như thế nào? Để có thể truy xuất tất cả các dòng trong file đầu vào, sinh viên nên tham khảo trong man, lưu ý rằng khi đọc hết file, hàm fscanf trả về giá trị EOF (End Of File)

Trang 3

3 Sử dụng Makefile

Makefile là công cụ hỗ trợ việc biên dịch mã nguồn chương trình Bên cạnh việc sử dụng Makefile, có thể dùng Bash script như trong bài thực hành số 2

Dùng Makefile Giả sử chương trình được viết gồm 2 file: prog.c và prog.h Makefile

sẽ có nội dung như sau:

1 a l l : p r o g

2 p r o g : p r o g o

3 g c c −o p r o g p r o g c

4 p r o g o : p r o g c

5 g c c −c p r o g c

4 Lập trình Multi-process: bài toán

Producer-Consumer

Yêu cầu Dùng semaphore để giải quyết tranh chấp tài nguyên buffer trong bài toán Producer-Consumer Tài nguyên buffer là tài nguyên hữu hạn (bounded buffer) Xem lại trong slide bài giảng môn học, chương 3

Hiện thực Có 2 cách hiện thực bài toán trên:

• Multi-thread: Tài nguyên buffer được khai báo ở quá trình chính và được dùng chung với các thread khác

• Multi-process: Dùng lệnh fork để tạo các quá trình Để tạo buffer, sinh viên cần tạo vùng nhớ chia sẻ (Shared memory trong System V - xem slide thực hành trong Sakai)

Sinh viên cần hiện thực cả hai cách trên Hỏi: Dùng message-queue có giải quyết được bài toán này không?

Thông số đầu vào Khi hiện thực chương trình, sinh viên cần cho phép xác định

số lượng Producer và Consumer khi gọi thực thi chương trình, số lượng phần tử trong buffer

5 Bài tập thêm

BT1 Hiện thực bài toán Reader-Writer

Ngày đăng: 28/01/2020, 22:10

TỪ KHÓA LIÊN QUAN