Dang baitapthuchanh monhdh_unix
Upcoming SlideShare
Loading in...5
×
 

Dang baitapthuchanh monhdh_unix

on

  • 1,419 views

 

Statistics

Views

Total Views
1,419
Views on SlideShare
1,419
Embed Views
0

Actions

Likes
0
Downloads
15
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Dang baitapthuchanh monhdh_unix Dang baitapthuchanh monhdh_unix Document Transcript

  • BÀI TẬP THỰC HÀNH MÔN KỸ THUẬT LẬP TRÌNH TRÊN UNIX Người biện soạn: GV Ngô Thị Vinh Bộ môn: THVT- Khoa CNTT&TTA. BÀI TẬP VỀ THỰC HIỆN LỆNH TRÊN SHELLBài 1: Đăng nhập vào hệ thống và mở file /etc/passwd từ giao diện đồ họa để xemdanh sách các người dùng trong hệ thống.a. Đọc các thông tin về mỗi người dùng trong hệ thống trên file /etc/passwd bao gồm:username:password:userId:groupId:comment:homedir:startup.Khởi động shell bash và thực hiện các công việc:a: Chuyển sang tài khoản root bằng lệnh:$ su root nhập mật khẩu cho tài khoản root (trên phòng máy mật khẩu root được thiết lập là123456). Lúc này dấu nhắc shell chuyển thành #.b: Xem danh sách các nhóm trong hệ thống bằng lệnh cat:$ cat /etc/group- Quan sát thông tin của từng nhóm trên mỗi dòng gồm 4 trường.c: Thêm các nhóm người dùng có tên Nhom1 và Nhom2 vào hệ thống, trong đóNhom1 thuộc nhóm người dùng hệ thống (có groupid < 499).d: Thay đổi tên nhóm nhóm người dùng Nhom1 thành admin_group.e. Thêm một người dùng Hung với các tùy chọn: chú thích (comment) “Nguyen ManhHung”, thư mục làm việc “/home/Hung”, ngày hết hiệu lực của tài khoản (ngày mà tàikhoản sẽ bị hủy bỏ) là 15/06/2010, ngày mật khẩu hết hiệu lực trước khi người dùngbị hủy bỏ khỏi hệ thống: 20, nhóm khởi tạo của người dùng là admin_group.f: Thêm người dùng Hung vừa tạo vào nhóm Nhom2.g. Thiết lập mật khẩu cho tài khoản Hùng vừa tạo là hung123.h. Logout khỏi hệ thống rồi đăng nhập và tài khoản Hung vừa tạo.i. Chuyển sang tài khoản root bằng lệnh su root, rồi thay đổi tài khoản Hung thànhmanhhung.k. Xóa Nhom2 (chú ý đảm bảo không có user nào thuộc vào nhóm này). 1
  • l. Xóa tài khoản ManhHung khỏi hệ thống.Bài 2: Khởi động máy đăng nhập vào hệ thống Linux, khởi động shell bash rồithực hiện các công việc sau:a. Xem đường dẫn đến thư mục hiện hành dùng lệnh pwdb. Dùng lệnh ls để xem danh sách các file trong thư mục hiện hành- Lệnh ls không có tham số:$ls- Lệnh ls với tham số -l để quan sát thông tin chi tiết về từng file hoặc thư mục và chobiết: kiểu file (là file thông thường hay file thư mục), các quyền truy cập của chủ sởhữu, nhóm và người dùng khác đối với file, tên chủ sở hữu, tên nhóm sở hữu, số liênkết đến file, kích thước, ngày,giờ tạo file $ls –lc. Thay đổi quyền truy cập của chủ sở hữu, nhóm và người dùng khác đối với một thưmục/file bằng các lệnh chmod. Thí dụ đối với thư mục Music trong thư mục thư mụchiện hành:(chú ý sau mỗi lệnh dùng lệnh ls –l để quan sát sự thay đổi vừa thiết lập đối với thưmục hoặc file vừa thao tác)$ chmod u=rwx Music$ chmod u-x,go=rx Music$ chmod u=rw,g=r,o=rx Music$ chmod u+x,g+x,r-x Music$ chmod = Music (hủy tất cả các quyền) hoặc sử dụng trong chế độ biểu tượng:$ chmod 0664 Music$ chmod 0777 Music$ chmod 0000 Music$ chmod 764 Music Downloadd. Tạo ra một file vd1 trong thư mục Music$ cat > vd1.txt- Dùng lệnh chmod thiết lập quyền cho toàn bộ file và thư mục con của thư mụcMusic: 2
  • $ chmod –R 640 Music- Quan sát sự thay đổi trên file Music/vd1.txt$ ls –l Music/vd1.txte. Làm tương tự đối với các file và thư mục khác.Bài 3: Thay đổi chủ sở hữu đối với file/thư mụca. Tạo một thư mục mới dir1 trong thư mục /home (dùng lệnh mkdir /home/dir1)b. Dùng lệnh ls –l để xem chủ sở hữu và nhóm sở hữu của thư mục dir1 vừa tạo.c. Chuyển sang tài khoản root sử dụng lệnh su.d. Thiết lập chủ sở hữu của thư mục dir1 là root và nhóm sở hữu của dir1 là root.e. Xem chủ sở hữu và nhóm sở hữu của dir1 bằng lệnh ls.f. Tạo ra một nhóm người dùng hệ thống (có id <499) có tên group1.g. Thiết lập nhóm chính sở hữu dir1 là group1 bằng lệnh chgrp.Bài 4: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện cáccông việc sau:a. Xem thông tin về phiên bản của nhân hệ điều hành bằng lệnh uname với các tùychọn khác nhau như –a và -r.b. Xem các runlevel của hệ thống được thiết lập sẵn trong file /etc/inittab bằng lệnhcat /etc/inittab.c. Khởi động lại hệ thống bằng lệnh init 6.d. Xem dung lượng các ổ đĩa trong hệ thống bằng lệnh df.e. Xem dung lượng đĩa được sử dụng cho từng file và thư mục trong thư mục hiệnhành với các tùy chọn khác nhau –h, -s hoặc kết hợp cả hai –hs.f. Tắt hệ thống sau 10 phút và đưa ra lời cảnh báo “He thong chuan bi shutdown sau10 phut”.g. Nhấn Ctrl+C để hủy bỏ quá trình shutdown hệ thống.h. Đưa ra lời cảnh báo tắt hệ thống sau 15 phút (nhưng không tắt thật sự).i. Khởi động lại hệ thống ngay lập tức sử dụng lệnh shutdown với tùy chọn –r.Bài 5: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện cáccông việc sau:a. Xem nội dung biến PS1 và PS2 lưu trữ các dấu nhắc hệ thống sử dụng lệnh echo$PS1 và echo $PS2. 3
  • b. Thiết lập địa chỉ ip cho máy trên cổng Ethernet sử dụng lệnh:ifconfig eth0 192.168.10.1 netmask 255.255.255.0 upBài 6: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện cáccông việc sau:a. Xem shell hệ hành của hệ thống (echo $SHELL).b. Dùng lệnh echo để xem giá trị của các biến môi trường HOME, PATH, PWD,USER.c. Gán giá trị cho biến môi trường PS2 (lưu trữ dấu nhắc nhập liệu) là !, rồi dùng lệnhecho để xem giá trị $PS2 vừa gán.d. Xem thư mục hiện hành bằng lệnh pwde. Dùng lệnh ls với tùy chọn –a xem danh sách các file và thư mục trong thư mục hiệnhành bao gồm cả file ẩn.f. Dùng lệnh ls với tùy chọn –l xem thông tin đầy đủ về danh sách các file và thư mụctrong thư mục hiện hành.Bài 7: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện cáccông việc sau:a. Tạo thư mục MonToan trong thư mục hiện hành sử dụng lệnh mkdirb. Tạo các thư mục bai1, bai2 trong thư mục MonToan.c. Đổi tên thư mục bai2 trên thành thư mục bai21.d. Xem nội dung của thư mục MonToan.e. Xóa thư mục bai1, bai21 và thư mục MonToan vừa tạo trên.Bài 8: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện cáccông việc sau:a. Tạo thư mục BaiTap trong thư mục hiện hành (/home/ubuntu).b. Tạo file vd1.txt sử dụng lệnh touch trong thư mục BaiTapc. Ghi kết quả đầu ra của lệnh ls đối với thư mục hiện hành và file vd1.txt.d. Đổi tên file vd1.txt thành file vd2.txt.e. Tạo ra file vd3.txt trong thư mục BaiTap bằng cách sử dụng lệnh cat > và nhập vàonội dung sau: This is my example My name is Mr Minh 4
  • I’m a student.nhấn ctrl+D để kết thúc việc nhập.f. Tạo mới thư mục BT trong thư mục hiện hành.g. Tạo một file file1.txt trong thư mục BaiTap.h. Sao các file bắt đầu bằng vd trong thư mục BaiTap sang thư mục BT.i. Xóa file vd2.txt trong thư mục BT.k. Đếm số ký tự, số từ, số dòng trong file vd3.txt sử dụng lệnh wcBài 9: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện cáccông việc sau:a. Tạo 2 thư mục dir1 và dir2 trong thư mục hiện hànhb. Chuyển thư mục dir2 vào trong thư mục dir1 (sử dụng lệnh mv).c. Tạo thư mục dir3 trong thư mục dir2d. Thực hiện xóa cây thư mục dir1/dir2/dir3Bài 10: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện cáccông việc sau:a. Tạo một file bai1.txt trong thư mục hiện hành (sử dụng lệnh cat) rồi nhập vào nộidung: De thuc hien sao chep noi dung cua 2 file trong Linux can su dung lenh cp voi 2 tham so la file nguon va file dich. Trong truong hop tham so thu nhat là file nguon va tham so thu 2 la thu muc thi lenh cp se thuc hien sao chep file nguon vao thu muc da chi dinh o tham so thu 2.b. Tạo một file bai2.txt trong thư mục hiện hành.c. Sao chép nội dung của file bai1.txt sang file bai2.txtd. Tạo 2 thư mục dir1 và dir2 trong thư mục hiện hànhe. Sao chép 2 file bai1.txt và file bai2.txt vào thư mục dir1f. Sao chép tất cả các file có đuôi .txt vào trong thư mục dir2g. Xóa tất cả các file có đuôi .txt trong thư mục hiện hành.h. Đếm số lượng file và thư mục trong thư mục hiện hành sử dụng lệnh ls kết hợp vớilệnh wc với tùy chọn –l.Bài 11: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện cáccông việc sau: 5
  • a. Tạo một file bai11.txt trong thư mục hiện hành và nhập vào nội dung sau đây: aa aa bb bb ccb. Xem nội dung file bai11.txt bằng cách loại bỏ các dòng trùng lặp bằng lệnh uniq.c. Ghi nội dung của file bai11.txt gồm các dòng không trùng lặp vào một filebai111.txtd. Tạo một file bai112.txt nhập vào nội dung sau: cc aa dd bbe. Sắp xếp nội dung của file bai112.txt theo thứ tự abc mà không phân biệt chữ hoachữ thường.f. Xem danh các file và thư mục trong thư mục hiện hành theo thứ tự bảng chữ cáibằng cách sử dụng kết hợp lệnh ls với lệnh sort.Bài 12: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện cáccông việc sau:a. Tạo một file vd1.txt và nhập vào nội dung tùy ý.b. Xem kiểu nội dung của file vd1.txtc. Xem nội dung của file vd1.txt theo cách thêm số thứ tự cho tất cả các dòng của fileđược hiển thị ra (sử dụng lệnh cat -n).d. Xem nội dung của file /etc/passwd theo từng trang màn hình bằng cách sử dụnglệnh more.e. Xem nội dung của file vd1.txt theo cách thêm số thứ tự cho tất cả các dòng của fileđược hiển thị ra màn hình bằng cách sử dụng lệnh nl, sau đó ghi kết quả này vào mộtfile vd2.txt.f. Xem nội dung của file vd1.txt theo cách thêm số thứ tự cho các dòng khác trốngcủa file được hiển thị ra màn hình bằng cách sử dụng lệnh nl. 6
  • g. Xem nội dung của file vd1.txt theo cách thêm số thứ tự cho các dòng trống của fileđược hiển thị ra màn hình bằng cách sử dụng lệnh nl.h. Xem 3 dòng đầu tiên của file vd1.txt (lệnh head).i. Xem 3 dòng cuối cùng của file vd1.txt (lệnh tail).j. Xem 3 dòng đầu tiên của 2 file vd1.txt và vd2.txt, 3 dòng thuộc file vd2.txt đượchiển thị tiếp theo sau 3 dòng của file vd1.txt.k. Tìm sự khác nhau giữa 2 file vd1.txt và vd2.txt (lệnh diff).l. Tìm kiếm các dòng có chứa xâu “aa” trong file vd1.txt.m. Tìm kiếm các dòng trong file vd1.txt mà không bắt đầu bởi kí tự a hoặc b.n. Tìm kiếm các dòng trong file vd1.txt mà bắt đầu bởi kí tự a hoặc b.o. Tìm kiếm file có tên vd1.txt trong thư mục hiện hành.B. BÀI TẬP VỀ SHELL SCRIPT1. Cấu hình ssh trên linux để cho phép chia sẻ dữ liệu với windows qua giao thức FTP.2. Viết kịch bản shell script cho phép tạo tài khoản người dùng mới có username là $1và password được nhập vào từ bàn phím.3. Viết kịch bản shell script cho phép in ra màn hình số lượng và tên của các user vàcác group có trong hệ thống.4. Viết kịch bản shell script cho biết một user được truyền vào là $1 thuộc nhữngnhóm nào trong hệ thống, in ra màn hình danh sách các nhóm.5. Viết kịch bản shell script cho phép tìm kiếm một file có tên được truyền vào là $1trong thư mục có tên được truyền vào là $2. In ra màn hình dòng thông báo có tìmthấy hoặc không tìm thấy.6. Viết kịch bản shell script cho phép ghép nội dung của file A với nội dung của file Btheo từng dòng tương ứng, tức dòng 1 ở file A ghép với dòng 1 ở file B và được cáchnhau một dấu cách.7. Viết kịch bản shell script cho phép thay đổi quyền truy nhập của một file có tênđược truyền vào là $1 và quyền là $2. Chương trình thông báo lỗi nếu thay đổi khôngthành công.8. Viết kịch bản cho phép thay đổi chủ sở hữu của một file có tên được truyền vào là$1 và chủ sở hữu mới là $2. Chương trình thông báo lỗi nếu thay đổi không thànhcông. 7
  • 9. Viết kịch bản cho phép thay đổi mật khẩu của một người dùng có tên được truyềnvào là $1 và mật khẩu được nhập vào từ bàn phím. Thông báo lỗi nếu thay đổi khôngthành công.10. Viết kịch bản shell script cho thép thay đổi nhóm sở hữu chính đối với một file cótên được truyền vào là $1 và tên nhóm sở hữu mới là $2.11. Viết kịch bản shell script cho phép đếm số lượng thư mục con và số lượng các filetrong thư mục hiện hành. In kết quả ra màn hình.12. Viết kịch bản shell script cho phép xem thông tin về không gian bộ nhớ đã đượcsử dụng trong bộ nhớ của hệ thống.13. Viết kịch bản shell script cho phép xem dung lượng của một file được truyền vàolà $1.14. Viết kịch bản shell script cho phép tìm kiếm các file .txt bắt đầu bằng ‘D’ hoặc ‘d’và kết thúc bằng ‘c’ hoặc ‘C’ trong thư mục hiện hành và danh sách tìm được ra mànhình.15. Viết kịch bản shell script cho phép tìm kiếm các file .doc bắt đầu bằng ‘A’ hoặc‘B’ hoặc ‘C’ và kết thúc bằng ‘1’ trong thư mục hiện hành, in danh sách các file ramàn hình.16. Viết kịch bản shell script cho phép đếm số lượng và in ra màn hình danh sách cácfile ẩn trong thư mục hiện hành.17. Viết kịch bản shell script cho xóa một người dùng khỏi hệ thống, đồng thời xóa bỏcả thư mục làm việc của người dùng đó với tên user được truyền vào là $1.18. Viết kịch bản cho xóa một nhóm người dùng khỏi hệ thống có tên được truyền vào$1, kiểm tra đảm bảo không có người dù ng nào trong hệ thống có nhóm sở hữu chínhlà nhóm cần xóa; Ngược lại thông báo là “Đây là nhóm sở hữu chính của một hoặcnhiều user khác” hoặc thông báo lỗi nếu nhóm này không tồn tại.19. Viết kịch bản shell script cho biết kiểu một file có tên được truyền vào là $1 làkiểu gì (pipe, file thông thường, file thư mục, …. )?20. Viết kịch bản shell script cho phép đếm và in ra màn hình số lượng các user đangđăng nhập vào hệ thống.21. Viết kịch bản shell script cho phép đếm số lượng tiến trình trong hệ thống. 8
  • 22. Viết kịch bản shell script cho phép xóa một thư mục không rỗng có tên đượctruyền vào là $1, thông báo lỗi nếu thư mục không tồn tại.23. Viết kịch bản shell script cho phép đổi tên một thư mục có tên được truyền là $1và tên mới là $2, chương trình thông báo lỗi nếu tên mới là tên của một thư mục đãtồn tại hoặc thư mục cần đổi tên không tồn tại.24. Viết kịch bản shell script cho phép copy nội dung của một thư có tên được truyềnvào $1 sang thư mục mới có tên là $2.25. Viết kịch bản shell script cho phép sao chép từ dòng thứ x được truyền là $3 đếndòng thứ y được truyền là $4 từ một file có tên được truyền vào là $1 sang một file cótên đươcn truyền vào là $226. Viết kịch bản shell script cho phép sao chép tất cả các file .txt bắt đầu bằng ‘f’hoặc ‘F’ vào thư mục có tên MyFile trong thư mục hiện hành.27. Viết kịch bản cho phép nhập vào một dãy các số nguyên cho đến khi người dùngnhập vào ‘K’ khi có câu hỏi “Ban co nhap tiep (C/K)”. Lưu trữ dãy số này vào mộtSoNguyen.txt mỗi số nguyên trên một dòng, tính tổng các số nguyên và ghi tổng nàyvào dòng cuối cùng trong một file.28. Viết kịch bản shell script cho phép thực hiện phép toán giữa hai toán hạng đượctruyền vào là $1 và $2, với phép toán được truyền vào là $3.29. Viết kịch bản shell script cho phép loại bỏ những dòng trùng lặp trong một fileđược truyền vào $1và ghi kết quả sang một file khác được truyền vào là $2. Thốngbáo lỗi nếu file trong $1 không tồn tại.29. Viết kịch bản shell script cho phép sắp xếp nội dung của một file được truyền vào$1 theo thứ tự vần ABC và ghi kết quả sang một file khác được truyền vào là $2.Thống báo lỗi nếu file trong $1 không tồn tại.30. Viết kịch bản shell script cho phép in ra màn hình nội dung của một file đượctruyền vào $1 theo thứ tự từ dòng cuối cùng đến dòng đầu tiên. Chương trình thôngbáo lỗi khi file được truyền vào không tồn tại.31. Viết kịch bản shell script cho phép thiết lập thiết lập tiến trình tắt hệ thống sau 5phút 30 giây chạy ở trạng thái background. Sau đó In ra màn hình danh sách các tiếntrình trong hệ thống, nhập vào id của tiến trình vừa tạo và dùng lệnh kill để hủy tiếntrình này. 9
  • 32. Viết kịch bản shell script cho phép tính tích của các số được truyền vào từ kịchbản. (thí dụ: gọi tên_kịch_bản 2 7 5 thì in ra kết quả là 70).33. Viết kịch bản shell script cho phép tính giai thừa của một số nguyên được vào là$1.34. Viết chương trình C tạo ra 2 tiến trình. Tiến trình thứ nhất đọc từ file nhiều chuỗiliên tiếp, mỗi chuỗi gồm các phép toán +, -, *, / và hai toán hạng. Thí dụ trong file sẽ lưu các chuỗi dạng như sau : 2+3 1 -2 4 *6 15 / 3 Sau đó tiến trình thứ nhất truyền các chuỗi dữ liệu này cho tiến trình thứ hai. Tiếntrình thứ hai thực hiện tính toán và trả chuỗi kết quả về lại cho quá trình đầu tiên đểghi lại vào file như sau: 2+3 =5 1 - 2 = -1 4 * 6 = 24 15 / 3 =535. Viết chương trình C tạo ra 2 tiến trình P0 và P1. Tiến trình P0 đọc từ file nhiềudãy số nguyên liên tiếp (mỗi dãy có thể có số phần tử khác nhau). Sau đó quá trìnhnày gởi lần lượt các dãy này cho tiến trình P1. P1 thực hiện sắp xếp mỗi dãy theo thứtự tăng dần, đồng thời tính tổng của dãy đó và gởi dãy kết quả cùng với tổng tính đượctương ứng cho mỗi dãy về lại tiến trình P0. Khi này, P0 thực hiện ghi các dãy kết quảvào lại file.36. Viết chương trình C tạo một tiến trình bơ vơ.37. Viết chương trình C để tạo ra một tiến trình Zombie38. Viết chương trình C đọc vào 2 ma trận A & B từ file, sau đó dùng nhiều thread đểthực hiện việc nhân 2 ma trận này. Ghi ma trận kết quả ra một file khác.39. Viết chương trình C đọc vào một ma trận A từ file và nhập vào một số k, sau đódùng n thread để thực hiện tìm kiếm trên các ma trận này xem có bao nhiêu phần tử 10
  • giống k. Mỗi lần tìm thấy phần tử giống k thì tăng biến chung number (khởi động là0) lên 1.40. Viết chương trình C đọc vào một dãy A từ file, dùng 1 thread khác để sắp xếp dãytheo thứ tự tăng dần và ghi kết quả vào một file khác.41. Viết chương trình C đọc vào một ma trận (kích thước N*N) từ file, sau đó dùng nthread để tính tổng của từng hàng trên ma trận (1 thread nếu tính tổng một hàng xongcó thể tính tổng của một hàng khác). Dùng một thread để thu thập các kết quả của cácthread kia và ghi vào một file kết quả.42. Viết chương trình C cho phép thay đổi độ ưu tiên của một tiến trình (cụ thể là tiếntrình ps) trong hệ thống.43. Viết chương trình C cho phép chỉ thị nhân gửi tín hiệu SIGALRM đến tiến trìnhhiện hành sau 5 giây.44. Viết chương trình C cho phép chỉ thị nhân gửi tín hiệu SIGSTOP đến tiến trìnhhiện hành sau 5 giây45. Viết chương trình C cài đặt một trình điều khiển tín hiệu alarmHandler() bằngcách sử dụng tín hiệu signal, vòng lặp sẽ dừng lại cho đến khi nhận được một tín hiệuSIGALRM.46. Viết chương trình C cho phép được bảo vệ để chống lại tín hiệu SIGNINT.47. Viết chương trình C cho phép thay đổi quyền sở hữu đối với một file được truyềnvào khi gọi thực thi.48. Viết chương trình C cho phép thay đổi chủ sở hữu đối với một file được truyềnvào khi gọi thực thi.49. Viết chương trình C cho phép thay đổi nhóm sở hữu đối với một file được truyềnvào khi gọi thực thi.50. Viết chương trình C tạo ra 2 tiến trình riêng biệt. Tiến trình 1 đọc từ file một dãysố nguyên liên tiếp. Sau đó tiến trình này gửi dãy số này cho tiến trình thứ 2. Tiếntrình thứ 2 thực hiện tính tổng của dãy số và gửi kết quả lại cho tiến trình 1. Tiến trình1 thực hiện ghi kết quả này vào cuối file ban đầu.51. Viết chương trình C đọc vào một ma trận (kích thước n*n) từ file, sau đó dùng nthread để tính tổng của từng cột trên ma trận. Dùng một thread để thu thập các kết quảcủa các thread kia và ghi vào một file kết quả. 11
  • 52. Viết chương trình C đọc vào một ma trận (kích thước n*n) từ file, sau đó dùng nthread để tính tổng của từng hàng trên ma trận. Dùng một thread để thu thập các kếtquả của các thread kia và ghi vào một file kết quả53. Viết chương trình C đọc vào một dãy số nguyên từ file, dùng 1 thread khác để sắpxếp dãy theo thứ tự tăng dần và ghi kết quả vào một file khác.54. Viết chương trình C đọc vào một ma trận A từ file và nhập vào một số k, sau đódùng n thread để thực hiện tìm kiếm trên các ma trận này xem có bao nhiêu phần tửgiống k. Mỗi lần tìm thấy phần tử giống k thì tăng biến chung number (khởi động là0) lên 1.55. Viết chương trình C đọc vào 2 ma trận A và B từ một file (lưu các dòng của matrận A, một dòng trống, rồi đến các dòng của ma trận B), sau đó dùng một thread khácđể thực hiện việc nhân 2 ma trận này và ghi ma trận kết quả ra một file khác.56. Viết chương trình C tạo ra 2 tiến trình P0 và P1. Tiến trình P0 đọc từ file nhiềudãy số nguyên liên tiếp (mỗi dãy có thể có số phần tử khác nhau). Sau đó tiến trìnhnày gửi lần lượt các dãy này cho tiến trình P1. P1 thực hiện tính tổng của dãy đó vàgửi dãy kết quả về lại tiến trình P0. P0 thực hiện ghi các dãy kết quả vào lại file banđầu.57. Viết chương trình C cho phép tạo ra hai tiến trình cha và con, trong đó tiến trìnhcon nhập vào các thông điệp và gửi cho tiến trình cha, tiến trình cha nhận các thôngđiệp và in ra màn hình.58. Viết chương trình C cho phép tạo ra hai tiến trình cha và con, trong đó tiến trìnhcha nhập vào một dãy số và gửi dãy số này cho tiến trình con, tiến trình con tính tổngdãy số rồi gửi lại cho tiến trình cha, tiến trình cha in kết quả ra màn hình.59. Viết chương trình C cho phép tạo ra hai tiến trình cha và con, trong đó tiến trìnhcha nhập vào một dãy số và gửi dãy số này cho tiến trình con, tiến trình con tính tổngdãy số rồi gửi lại cho tiến trình cha, tiến trình cha in kết quả ra màn hình.60. Viết chương trình C tạo ra 2 tiến trình P0 và P1. Tiến trình P0 đọc từ file nhiềudãy số nguyên liên tiếp (mỗi dãy có thể có số phần tử khác nhau). Sau đó tiến trìnhnày gửi lần lượt các dãy này cho tiến trình P1. P1 thực hiện sắp xếp mỗi dãy theo thứtự tăng dần và gửi dãy kết quả sắp xếp về cho tiến trình P0. Khi này, P0 thực hiện ghicác dãy kết quả vào một file khác. 12
  • 61. Viết chương trình C tạo ra 2 tiến trình riêng biệt. Tiến trình 1 đọc từ file một dãysố nguyên liên tiếp. Sau đó tiến trình này gửi dãy số này cho tiến trình thứ 2. Tiếntrình thứ 2 thực hiện tính tích của dãy số và gửi kết quả lại cho tiến trình 1. Tiến trình1 thực hiện ghi kết quả này vào cuối file ban đầu.62. Viết chương trình C đọc vào 2 ma trận A và B từ một file (lưu các dòng của matrận A, một dòng trống, rồi đến các dòng của ma trận B), sau đó dùng một thread khácđể thực hiện tìm kiếm phần tử lớn nhất trên ma trận và ghi kết quả vào cuối file banđầu.63. Viết chương trình C đọc vào 2 ma trận A và B từ một file (lưu các dòng của matrận A, một dòng trống, rồi đến các dòng của ma trận B), sau đó dùng một thread khácđể thực hiện việc trừ 2 ma trận này và ghi ma trận kết quả ra một file khác. 13