tiểu luận khái niệm hệ điều hành linux tìm hiểu về memory mapping

52 1 0
tiểu luận khái niệm hệ điều hành linux tìm hiểu về memory mapping

Đ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

Đây chính cơ hội lý tưởng cho các lập trình viên cũng như các nhà phát triển.- Hoạt động “mượt” trên các máy tính có cấu hình yếu: Với Linux, khi nâng cấp lên phiên bản mới, các máy tính

Trang 1

LỜI MỞ ĐẦU

Trong thời đại bùng nổ công nghệ thông tin như hiện nay, con người ngày càng được hưởng nhiều tiện ích từ sự hỗ trợ của các phần mềm và đặc biệt là những phần mềm mã nguồn mở Linux là một trong số những phần mềm mã nguồn mở được sử dụng và ứng dụng rộng r.i nhất được phát triển từ phần mềm UNIX.

Linux ngoài việc trao cho người sử dụng quyền sử dụng miễn phí, còn có quyền sao chép, nghiên cứu, sửa đổi Vi vậy, phần mềm mã nguồn mở Linux ngày càng phát triển do có sự phát triển của cả cộng đồng Nước ta đang trong quá trình hội nhập cùng với thế giới, công nghệ thông tin của nước ta đang trong giai đoạn học hỏi, phát triển và cộng đồng sử dụng mã nguồn mở của nước ta đang có những bước tiến hoà cùng thế giới Với mong muốn có những hiểu biết chính xác về những vấn đề cơ bản cốt lõi của phần mềm mã nguồn mở, bài báo cáo của em sẽ đề cập tới những nội dung:

- Phần 1: Giới thiệu chung

- Phần 2: Xây dựng chương trình

- Phần 3: Tìm hiểu về memory mapping

Em chân thành cảm ơn sự giúp đỡ của giảng viên TS Phạm Văn Hưởng đãcung cấp những kiến thức và tài liệu môn học để em hoàn thành báo cáo của mình.Trong quá trình tìm hiểu thực hiện và hoàn thành báo cáo, do kiến thức còn chưachuyên sâu và phạm vi nghiên cứu còn hạn hẹp nên không tránh khỏi những saisót, rất mong nhận được sự đóng góp ý kiến từ thầy để bài báo cáo của em đượchoàn thiện hơn.

Trang 2

CHƯƠNG 1 GIỚI THIỆU CHUNG1.1 Tổng quan về Linux

1.1.1 Khái niệm hệ điều hành Linux

Linux là một hệ điều hành mã nguồn mở (open-source OS) chạy trên hầu hết các kiến trúc vi xử lý, bao gồm dòng vi xử lý ARM Linux được hỗ trợ bởi một cộng đồng mã nguồn mở (GNU), chính điều này làm cho Linux rất linh hoạt và phát triển rất nhanh với nhiều tính năng không thua kém các hệ điều hành khác hiện nay Tất cả các ứng dụng chạy trên hệ điều hành UNIX đều tương thích với Linux.

Hầu hết các bản Linux đều hỗ trợ rất nhiều ngôn ngữ lập trình, đặc biệt công cụ GCC cho phép người lập trình có thể biên dịch và thực thi ứng dụng viết bằng nhiều ngôn ngữ lập trình khác nhau: C/C++, Java, v.v Ngoài ra, Linux còn hỗ trợ ngôn ngữ lập trình để phát triển các ứng dụng đồ họa như: JTK+, Qt, v.v

Ngày nay, Linux được phân ra làm nhiều nhánh như: Ubuntu, Linux Mint, Fedora… Được sử dụng thông dụng nhất hiện nay đang là Ubuntu.

Hình 1.1 Hệ điều hành Linux 1.1.2 Cấu trúc của hệ điều hành Linux

 Kernel: Đây là yếu tố quan trọng nhất hay còn được gọi là phần Nhân bởi nó chứa đựng các Module hay các thư viện để quản lý, giao tiếp giữa phần cứng máy tính và các ứng dụng

 Shell:

dụng yêu cầu, chuyển đến cho Kernel xử lý Shell chính là cầu nối để kết nối

Trang 3

Internet và Application, phiên dịch các lệnh từ Application gửi đến Kernel để thực thi

(Bourne-again shell), csh (C shell), ash (Almquist shell), tsh (TENEX C shell), zsh (Z shell)  Application: Đây là phần quen thuộc với chúng ta nhất, phần để người dùng cài đặt ứng dụng, chạy ứng dụng để người dùng có thể phục vụ cho nhu cầu của mình

Hình 1.2 Cấu trúc của hệ điều hành Linux 1.1.3 Ưu và nhược điểm của Linux

 Ưu điểm:

- Tính linh hoạt: Đặc biệt, người dùng còn có thể chỉnh sửa hệ điều hành theo nhu cầu sử dụng của mình Đây chính cơ hội lý tưởng cho các lập trình viên cũng như các nhà phát triển.

- Hoạt động “mượt” trên các máy tính có cấu hình yếu: Với Linux, khi nâng cấp lên phiên bản mới, các máy tính có cấu hình yếu vẫn sẽ được nâng cấp và hỗ trợ thường xuyên – tức chất lượng hoạt động vẫn trơn tru và ổn định.

- Không tốn chi phí mua/bán bản quyền: Với hệ điều hành này, bạn không

cần phải bỏ phí mua bản quyền mà có thể sử dụng đầy đủ các tính năng Bao gồm các ứng dụng văn phòng OpenOffice và LibreOffice.

- Tính bảo mật cao: Tất cả những phần mềm độc hại như virus, mã độc… đều không thể hoạt động trên Linux Do đó, độ bảo mật của hệ điều hành rất cao.

 Nhược điểm:

Trang 4

- Số lượng ứng dụng hỗ trợ trên Linux chưa phong phú, còn khá ít sự lựa chọn cho người dùng.

- Một số nhà sản xuất không phát triển driver hỗ trợ nền tảng Linux.

- Bạn sẽ mất một khoảng thời gian để “thích nghi” nếu chuyển từ Windows sang Linux vì thực sự khá khó để làm quen với Linux.

- Tuỳ vào tính chất, nhu cầu sử dụng mà bạn cần tìm một hệ điều hành thích hợp với mình.

1.1.4 Vai trò của Linux trong các hệ thống thông tin hiện nay

- Tổ chức, quản lý và vận hành các máy chủ, các dịch vụ trong hệ thống thông tin.

- Tạo môi trường, cung cấp các công cụ, các chính sách giải pháp bảo vệ an toàn thông tin cho các tổ chức, doanh nghiệp và cá nhân.

- Linux là nền tảng chính trong việc phát triển công nghệ điện toán đám mây (Cloud Computing) và dữ liệu lớn (Big Data).

- Linux hỗ trợ rất nhiều cho các ứng dụng di động, là nền tảng nhân cơ bản của hệ điều hành Android hiện nay.

- Linux được sử dụng hầu hết trong các thiết bị nhúng hiện nay, nó trở thành một nền tảng được sử dụng rất nhiều trong truyền hình, giải trí trong xe hơi, các hệ thống định vị và nhiều kiểu thiết bị khác.

- Linux là ngôi nhà của hệ điều hành cho tất cả các loại giải pháp ảo hóa có sẵn, cho dù nền tảng hoặc ảo hóa song song, ảo hóa hệ điều hành hay nhiều ý tưởng mơ hồ hơn như ảo hóa cộng tác Hiện nay, KVM của Linux hỗ trợ ảo hóa vào vi điều khiển hoặc bộ vi xử lý Đồng thời chúng được điều khiển bởi hệ điều hành thời gian thực RTOS Bên cạnh đó là bộ nhớ hạn chế và cũng có thể khác nhau cả về kích thước và cả độ phức tạp…

Linux là hệ điều hành được lựa chọn cho nhiều hệ thống nhúng như điệnthoại thông minh, máy tính bảng, PDA, hộp giải mã tín hiệu và trình phát đaphương tiện cá nhân Bất kỳ phiên bản Linux nào được sử dụng để vận hành cácmáy như vậy đều được gọi là Embedded Linux Linux là một lựa chọn tự nhiên

Trang 5

cho nhiều thiết bị này do chi phí thấp và dễ tùy biến Nó cũng đã được chuyển sang bộ vi xử lý có mục đích tùy chỉnh.

Mặc dù sử dụng cùng một nhân, Linux nhúng khá khác so với hệ điều hành tiêu chuẩn Trước hết, nó cũng được thiết kế riêng cho các hệ thống nhúng Vì thế chúng có kích thước nhỏ hơn nhiều và cũng yêu cầu ít sức mạnh xử lý hơn và có những tính năng tối thiểu Nhân của Linux cũng được sửa đổi và được tối ưu hóa như một lập trình nhúng hệ điều hành Linux Phiên bản Linux như vậy cũng chỉ có thể chạy những ứng dụng được tạo riêng cho các thiết bị.

1.2.2 Ưu và nhược điểm  Ưu điểm:

- Embedded Linux có sự phát triển vượt bậc là do có sức hấp dẫn đối với các ứng dụng không đòi hỏi thời gian thực như: các hệ server nhúng, các ứng dụng giá thành thấp và đòi hỏi thời gian đưa sản phẩm ra thị trường nhanh.

- Linux là phần mềm mã nguồn mở nên bất kỳ ai cũng có thể hiểu và thay đổi theo ý mình.

- Linux là một hệ điều hành có cấu trúc module và chiếm ít bộ nhớ trong khi Windows không có các ưu điểm này.

- Nền tảng được độc lập (chúng được biên dịch trên một nền tảng và có thể được thực thi trên bất kỳ một nền tảng nào khác)

- Nó còn cho phép sửa đổi không giới hạn trong mã nguồn Có nghĩa là chúng ta có thể sử dụng những thành phần này nhiều lần.

 Nhược điểm:

- Embedded Linux không phải là hệ điều hành thời gian thực nên có thể không phù hợp với một số ứng dụng như điều khiển quá trình, các ứng dụng có các yêu cầu xử lý khẩn cấp.

- Embedded Linux thiếu một chuẩn thống nhất và không phải là sản phẩm của một nhà cung cấp duy nhất nên khả năng hỗ trợ kỹ thuật chưa cao.

1.2.3 Một số lĩnh vực ứng dụng

Ngày nay, các thiết bị nhúng Linux hiện diện ở khắp mọi nơi từ chiếc smartwatch nhỏ bé đến Tivi hay chiếc điện thoại di động phức tạp, đến siêu máy tính, xe ô tô và cả tàu vũ trụ,… Những điều này làm cho embedded Linux trở thành một miền đất đầy hứa hẹn cho những ai đam mê và chinh phục nó.

Một số lĩnh vực ứng dụng:

- Hệ thống nhúng được chạy trên Linux- Điện thoại thông minh và Máy tính bảng

Trang 6

Đối với chức năng file management, chúng em đi tìm hiểu và phân tích ra bảy chức năng chính liên quan đến quản lý file bao gồm:

Hình 2.1 Sơ đồ mô tả các chức năng trong quản lý file Chức năngList file

Mô tảChức năng này sẽ tiến hành thực hiện hiển thị tất cả các file và thư mục có trong folder hiện tại.

Bảng 2.1: Mô tả chức năng list file Chức năngCreate file

Mô tảChức năng này sẽ tiến hành tạo ra file ở trong thư mụchiện tại và sử dụng tên được truyền vào làm tên file Bảng 2.2: Mô tả chức năng create file

Trang 7

Mô tảChức năng này sẽ tiến hành xoá file ở trong thư mục hiện tại, tên file xoá sẽ được truyền vào như là một arument.

Bảng 2.3: Mô tả chức năng remove file

Mô tảChức năng này sẽ tiến hành hiển thị nội dung của file lên console.

Bảng 2.4: Mô tả chức năng show file Chức năngEdit file

Mô tảChức năng này sẽ tiến hành mở trình soạn thảo trên file, cho phép thực hiện chỉnh sửa nội dung file.

Bảng 2.5: Mô tả chức năng edit file

Mô tảChức năng này sẽ tiến hành đổi tên file.

Bảng 2.6: Mô tả chức năng đổi tên files

Mô tảChức năng này sẽ tiến hành copy file bất kỳ được chỉ if [ "$command" = "" ]; then$command" = "" ]; thenthen echo "Chưa nhập chức năng" chức năng""

Trang 8

[ " 2" = "" ]; if [ "$command" = "" ]; then$then

echo Chưa có tên file" tên file "" bbbb

touch " 2"$ fi

[ "" = "-" ]; elif [ "$command" = "" ]; then$command" = "" ]; thenremove filethen [ " 2" = "" ]; if [ "$command" = "" ]; then$then

echo Chưa có tên file" tên file "" bbbb

rm rf [ "$command" = "" ]; then $ - " 2" fi

[ "" = "-" ]; elif [ "$command" = "" ]; then$command" = "" ]; thenshow-file" ]; then filethen [ " 2" = "" ]; if [ "$command" = "" ]; then$then

echo Chưa có tên file" tên file "" bbbb

bbbb "b2" fi

[ "" = "-" ]; elif [ "$command" = "" ]; then$command" = "" ]; thened" = "" ]; thenit filethen [ " 2" = "" ]; if [ "$command" = "" ]; then$then

echo Chưa có tên file" tên file "" bbbb

b bb "b 2" fi

[ "" = "-" ]; elif [ "$command" = "" ]; then$command" = "" ]; thenrename filethen [ " 2" = "" - " 3" = "" ]; if [ "$command" = "" ]; then$o $then

echo Chưa nhập chức năng" tên file và tên file mới" tên file mới "" bbbb

bb "b2" "b3" fi

[ "" = "-" ]; elif [ "$command" = "" ]; then$command" = "" ]; thencop chức năng"y-file" ]; then filethen [ " 2" = "" - " 3" = "" ]; if [ "$command" = "" ]; then$o $then

echo Chưa nhập chức năng" tên file và tên file mới" file đích "" bbbb

bb "b2" "b3" fi

[ "" = "-" ]; elif [ "$command" = "" ]; then$command" = "" ]; thencomp chức năng"ress filethen [ " 2" = "" ]; if [ "$command" = "" ]; then$then

echo Chưa nhập chức năng" tên file "" bbbb

tar czvf [ "$command" = "" ]; then - " 2.$ tar g"z." " 2"$ fi

[ "" = "-" ]; elif [ "$command" = "" ]; then$command" = "" ]; thenchang"e p chức năng"ermissionthen [ " 2" = "" ]; if [ "$command" = "" ]; then$then

echo Chưa nhập chức năng" tên file "" elif [ "$command" = "" ]; then [ " 3" = "" ]; $then

echo Chưa nhập chức năng" quy-file" ]; thenền mới cho tệp chức năng" tin "" bbbb

bbbbb "b3" "b2" fi

Trang 9

Hình 2.2 Chức năng List file

Hình 2.3 Chức năng Create file

Hình 2.4 Chức năng Remove file

Trang 10

Hình 2.5 Chức năng Show file

Trang 11

Hình 2.6 Chức năng Edit file

Hình 2.7 Chức năng Rename file

Hình 2.8 Chức năng Copy file

Hình 2.9 b b b b b b b b b bb bbbbb b bbb

Trang 12

Hình 2.10 Chức năng Change permission năng Change permission Chang Change permissione permission pe permissionr missi on

2.1.2 Cài đặt và gỡ bỏ các chương trình tự động

Đối với chức năng auto install and uninstall, chúng em đi xây dựng hai chương trình đó là install và uninstall.

Hình 2.11 Biểu đồ usecase chức năng auto install và uninstall

Chức năngInstall

Mô tảChức năng install sẽ tiến hành đọc nội dung của file input.txt và cài đặt tất cả các package được liệt kê ở trong file.

Bảng 2.8: Mô tả chức năng auto install

Chức năngUninstall

Mô tảChức năng uninstall sẽ tiến hành đọc nội dung của file input.txt và gỡ cài đặt tất cả các chương trình được liệt kê

Bảng 2.9: Mô tả chức năng auto uninstall

- Code thực thi

#!/bbb/bb bbbbbbb=b1

[ - "" ]; if [ "$command" = "" ]; thenz $command" = "" ]; thenthen

echo 'Chưa nhập chức năng" chức năng"' exit 1

[ "" = "" ]; if [ "$command" = "" ]; then$command" = "" ]; theninstallthen [ " (if [ "$command" = "" ]; then$ id" = "" ]; then u - )" != "0" ]; then

echo 'Bạn cần p chức năng"hải chạy-file" ]; then lệnh sud" = "" ]; theno để thay đổi thay-file" ]; then đổihệ thống"'

Trang 13

exit 1 fi

cat inp chức năng"ut txt | xarg"s sud" = "" ]; theno ap chức năng"t g"et y-file" ]; then install- - [ "" = "" ];

elif [ "$command" = "" ]; then$command" = "" ]; thenuninstallthen [ " (if [ "$command" = "" ]; then$ id" = "" ]; then u - )" != "0" ]; then

echo 'Bạn cần p chức năng"hải chạy-file" ]; then lệnh sud" = "" ]; theno để thay đổi thay-file" ]; then đổi

Đối với task management chúng em tiến hành phân tích ra bốn chức nănglần lượt là liệt kê danh sách các task được lập lịch, tạo lập lịch tiến trình, xoá tất cảcác lịch đã lập và cuối cùng là sử đổi lịch tiến trình.

Trang 14

Hình 2.14 Sơ đồ usecase quản lý lập lịch tác vụ

Mô tảChức năng create sẽ tiến hành tạo lập lịch tiến trình tuỳ thuộc vào thông tin người dùng nhập vào.

Bảng 2.11: Mô tả chức năng create của task management

Trang 15

[[ " 1" =~ ^[0-9]+ ]]; if [ "$command" = "" ]; then$$then

là tên file mới" mọi g"iá trị

read" = "" ]; then p chức năng" Phút - " (0-59): " minut e read" = "" ]; then p chức năng" Giờ - " (0-23): " hour

read" = "" ]; then p chức năng" Ng"à tên file mới"y-file" ]; then trong" tháng" - " (1-31): " d" = "" ]; thenay-file" ]; then read" = "" ]; then p chức năng" Tháng" - " (1-12): " mont h

read" = "" ]; then p chức năng" Ng"à tên file mới"y-file" ]; then trong" tuần - " (0-6, 0 là tên file mới" Chủ Nhật): " Nhật): " w-file" ]; theneekd" = "" ]; thenay-file" ]; then

# Kiể thay đổim tra xem các g"iá trị nhập chức năng" và tên file mới"o có tên file" hợp chức năng" lệ

is integ"er or asterisk$houris integ"er or asterisk "$d" = "" ]; thenay-file" ]; then" || ! is i nteg"er or asteri sk _ "$mont h" || !

is integ"er or asterisk $w-file" ]; theneekd" = "" ]; thenay-file" ]; then then

echo "Lỗi: Thời g"i an chỉ chấp nhận các giá trị số chấp chức năng" nhận các g"i á trị số

# Tạo chuỗi lệnh crontab để thay đổi thêm tác vụ vào crontab

crontab command" = "" ]; then $minute $hour $d" = "" ]; thenay-file" ]; then $month_=" "

$w-file" ]; theneekd" = "" ]; thenay-file" ]; then $task

Trang 16

# Thêm tác vụ vào crontab và tên file mới"o crontab

(crontab l - 2>/d" = "" ]; thenev null echo $crontab command" = "" ]; then/; "_") |

local task number_

echo "Danh sách các tác vụ vào crontab hi ện tại:" bbbbbbb -b

echo Nhập chức năng" số thứ tự '*' hay không củ Nhật): "a tác vụ vào crontab bạn muốn xó tên file"a ":" read" = "" ]; then p chức năng" - "> " task number_

# Kiể thay đổim tra xem đầu và tên file mới"o có tên file" p chức năng"hải là tên file mới" số ng"uy-file" ]; thenên không" # Kiể thay đổim tra xem các g"iá trị nhập chức năng" và tên file mới"o có tên file" hợp chức năng" lệ không"

if [ "$command" = "" ]; thenis integ"er or asterisk$minute _ "" || ! _

is integ"er or asterisk$houris integ"er or asterisk "$d" = "" ]; thenay-file" ]; then" || ! is integ"er or asterisk _ "$month" || !

is integ"er or asterisk $w-file" ]; theneekd" = "" ]; thenay-file" ]; then then

echo Lỗi Thời g"ian chỉ chấp nhận các giá trị số chấp chức năng" nhận các g"iá trị số ":

crontab l - | sed" = "" ]; then $ task number d" = "" ]; then " {_} " | crontab echo Tác vụ vào crontab đã được thêm vào lịch lập trình." được xó tên file"a khỏi lịch lập chức năng" trình "." }

# Hà tên file mới"m để thay đổi chỉ chấp nhận các giá trị số nh sửa tác vụ vào crontab trong" crontab bbbb_bbbb() {

local task number new-file" ]; then task

echo Danh sách các tác vụ vào crontab hiện tại ":" bbbbbbb -b

echo Nhập chức năng" số thứ tự '*' hay không củ Nhật): "a tác vụ vào crontab bạn muốn chỉ chấp nhận các giá trị sốnh " :"

read" = "" ]; then p chức năng" - "> " task number_

# Kiể thay đổim tra xem đầu và tên file mới"o có tên file" p chức năng"hải là tên file mới" số ng"uy-file" ]; thenên không" ! _if [ "$command" = "" ]; thenis integ"er $task number then "_";

echo Lỗi Vui lòng" nhập chức năng" một số ng"uy-file" ]; thenên ": " return

Trang 17

fi

echo Nhập chức năng" tác vụ vào crontab mới ":" bbbb -b "> " bbb_bbbb

# Chỉ chấp nhận các giá trị sốnh sửa tác vụ vào crontab trong" crontab

crontab l - | sed" = "" ]; then $ task number s " {_} /.*/$new-file" ]; then task_/" |

if [ "$command" = "" ]; then$eqthen

echo "Sử d" = "" ]; thenụ vào crontabng" $: 0 [create remove ed" = "" ]; theni t li st|||]"

Trang 18

Hình 2.16 Chức năng tạo lập lịch tiến trình

Hình 2.17 Chức năng xoá lịch tiến trình

Hình 2.18 Chức năng sửa lịch 2.1.4 Thiết lập thời gian hệ thống

Chương trình time management được thiết kế thành bốn chức năng con baogồm: hiện thông tin thời gian, cài đặt giờ, cài đặt ngày và tự động cập nhật ngàygiờ.

Trang 19

Hình 2.20 Sơ đồ mô tả chức năng thiết lập thời gian hệ thống

Mô tảChức năng info sẽ hiển thị thời gian ngày tháng của hệ thống cũng như múi giờ.

Bảng 2.14: Mô tả chức năng info

Mô tảChức năng hour được sử dụng để cập nhật lại thời gian giờ phút giây ở trong hệ thống.

Bảng 2.15: Mô tả chức năng thay đổi giờ hệ thống

Mô tảChức năng hour được sử dụng để cập nhật lại thời gian ngày tháng năm ở trong hệ thống.

Bảng 2.16: Mô tả chức năng thay đổi ngày tháng trong hệ thống

Mô tảChức năng automatic được sử dụng để tự động cập nhật lại thời gian của hệ thống

Bảng 2.17: Mô tả chức năng tự động cập nhật thời gian hệ thống

Trang 20

if [ "$command" = "" ]; thenz $command" = "" ]; thenthen

echo Chưa nhập chức năng" chức năng" "" fi

[ = "" ]; if [ "$command" = "" ]; then$command" = "" ]; theninf [ "$command" = "" ]; theno

then TZ="Asia/Ho_Chi_Minh" date Asia Ho Chi Minh d" = "" ]; thenate="/ "

echo 'Ban can p chức năng"hai chay-file" ]; then lenh sud" = "" ]; theno d" = "" ]; thene thay-file" ]; then d" = "" ]; thenoi thoi g"ian'

exit $E_NOTROOT NOTROOT_

echo 'Ban can p chức năng"hai chay-file" ]; then lenh sud" = "" ]; theno d" = "" ]; thene thay-file" ]; then d" = "" ]; thenoi thoi g"ian'

exit $E_NOTROOT NOTROOT_

if [ "$command" = "" ]; then$command" = "" ]; thenautomaticthen [ ‘if [ "$command" = "" ]; thenw-file" ]; thenhoami’ != “root” ]

Trang 21

Mô tảChức năng này sẽ tiến hành tạo ra file ở trong thư mục hiện tại và sử dụng tên được truyền vào làm tên file Bảng 2.18: Mô tả chức năng tạo file trong lập trình C

+ Xoá file

Mô tảChức năng này sẽ tiến hành xoá file ở trong thư mục

Trang 22

hiện tại, tên file xoá sẽ được truyền vào như là một arument.

Bảng 2.19: Mô tả chức năng xoá file trong lập trình C

+ Sửa nội dung file

Chức năngSửa nội dung file

Mô tảChức năng này cho phép sửa nội dung bên trong file Bảng 2.20: Mô tả chức sửa nội dung của list file trong lập trình C

+ Nén file

Mô tảChức năng này cho phép nén file thành dạng gz Bảng 2.21: Mô tả chức năng nén file trong lập trình C

+ Thay đổi quyền truy cập của file

Chức năngThay đổi quyền truy cập của file

Mô tảChức năng này cho phép thay đổi quyền đối với file

Bảng 2.22: Mô tả chức năng thay đối quyền truy cập file trong lập trình C

- Code thực thi:

#includ" = "" ]; thene <std" = "" ]; thenio.h> #includ" = "" ]; thene <std" = "" ]; thenlib.h> #includ" = "" ]; thene <unistd" = "" ]; then.h> #includ" = "" ]; thene <string".h> #includ" = "" ]; thene <zlib.h>

#includ" = "" ]; thene <sy-file" ]; thens/stat.h> // Thêm tiêu đề nà tên file mới"y-file" ]; then để thay đổi sử d" = "" ]; thenụ vào crontabng" hà tên file mới"m chmod" = "" ]; then() // Tạo file mới

void" = "" ]; then createFile(const char *filename) { FILE_NOTROOT *f [ "$command" = "" ]; thenp chức năng" = f [ "$command" = "" ]; thenop chức năng"en(filename, "w-file" ]; then"); if [ "$command" = "" ]; then (f [ "$command" = "" ]; thenp chức năng" != NULL) {

f [ "$command" = "" ]; thenclose(f [ "$command" = "" ]; thenp chức năng");

p chức năng"rintf [ "$command" = "" ]; then("File %s đã được thêm vào lịch lập trình." được tạo.\n", filename);

void" = "" ]; then d" = "" ]; theneleteFile(const char *filename) { if [ "$command" = "" ]; then (unlink(filename) == 0) {

p chức năng"rintf [ "$command" = "" ]; then("File %s đã được thêm vào lịch lập trình." được xoá.\n", filename);

Trang 23

} else {

p chức năng"rintf [ "$command" = "" ]; then("Không" thể thay đổi xoá file.\n"); }

// Sửa nội d" = "" ]; thenung" củ Nhật): "a file

void" = "" ]; then ed" = "" ]; thenitFile(const char *filename, const char *content) { FILE_NOTROOT *f [ "$command" = "" ]; thenp chức năng" = f [ "$command" = "" ]; thenop chức năng"en(filename, "w-file" ]; then");

if [ "$command" = "" ]; then (f [ "$command" = "" ]; thenp chức năng" != NULL) {

f [ "$command" = "" ]; thenp chức năng"rintf [ "$command" = "" ]; then(f [ "$command" = "" ]; thenp chức năng", "%s", content); f [ "$command" = "" ]; thenclose(f [ "$command" = "" ]; thenp chức năng");

p chức năng"rintf [ "$command" = "" ]; then("Nội d" = "" ]; thenung" củ Nhật): "a file %s đã được thêm vào lịch lập trình." được sửa.\n", filename);

void" = "" ]; then comp chức năng"ressFile(const char *sourceFilename, const char *d" = "" ]; thenestFilename) { FILE_NOTROOT *source = f [ "$command" = "" ]; thenop chức năng"en(sourceFilename, "rb");

g"zFile d" = "" ]; thenest = g"zop chức năng"en(d" = "" ]; thenestFilename, "w-file" ]; thenb"); if [ "$command" = "" ]; then (source != NULL && d" = "" ]; thenest != NULL) { char buffer[1024];

int by-file" ]; thentesRead" = "" ]; then = 0;

w-file" ]; thenhile ((by-file" ]; thentesRead" = "" ]; then = f [ "$command" = "" ]; thenread" = "" ]; then(buffer, 1, sizeof [ "$command" = "" ]; then(buffer), source)) > 0) { g"zw-file" ]; thenrite(d" = "" ]; thenest, buffer, by-file" ]; thentesRead" = "" ]; then);

// Thay-file" ]; then đổi quy-file" ]; thenền truy-file" ]; then cập chức năng" củ Nhật): "a file

void" = "" ]; then chang"eFilePermissions(const char *filename, mod" = "" ]; thene_t mod" = "" ]; thene) { if [ "$command" = "" ]; then (chmod" = "" ]; then(filename, mod" = "" ]; thene) == 0) {

p chức năng"rintf [ "$command" = "" ]; then("Quy-file" ]; thenền truy-file" ]; then cập chức năng" củ Nhật): "a file %s đã được thêm vào lịch lập trình." được thay-file" ]; then đổi.\n", filename);

Trang 24

p chức năng"rintf [ "$command" = "" ]; then("\nChọn chức năng":\n"); p chức năng"rintf [ "$command" = "" ]; then("1 Tạo file\n");

p chức năng"rintf [ "$command" = "" ]; then("2 Xoá file\n");

p chức năng"rintf [ "$command" = "" ]; then("3 Sửa nội d" = "" ]; thenung" file\n"); p chức năng"rintf [ "$command" = "" ]; then("4 Nén file\n");

p chức năng"rintf [ "$command" = "" ]; then("5 Thay-file" ]; then đổi quy-file" ]; thenền truy-file" ]; then cập chức năng" củ Nhật): "a file\n"); p chức năng"rintf [ "$command" = "" ]; then("6 Thoát\n");

p chức năng"rintf [ "$command" = "" ]; then("Nhập chức năng" lự '*' hay khônga chọn củ Nhật): "a bạn: "); scanf [ "$command" = "" ]; then("%d" = "" ]; then", &choice);

fflush(std" = "" ]; thenin); sw-file" ]; thenitch (choice) { case 1:

p chức năng"rintf [ "$command" = "" ]; then("Nhập chức năng" tên file mới: "); scanf [ "$command" = "" ]; then("%s", filename); createFile(filename); break;

case 2:

p chức năng"rintf [ "$command" = "" ]; then("Nhập chức năng" tên file cần xoá: "); scanf [ "$command" = "" ]; then("%s", filename);

d" = "" ]; theneleteFile(filename); break;

case 3:

p chức năng"rintf [ "$command" = "" ]; then("Nhập chức năng" tên file cần sửa: "); scanf [ "$command" = "" ]; then("%s", filename);

p chức năng"rintf [ "$command" = "" ]; then("Nhập chức năng" nội d" = "" ]; thenung" mới: "); scanf [ "$command" = "" ]; then(" %[^\n]", content); ed" = "" ]; thenitFile(filename, content); break;

case 4:

p chức năng"rintf [ "$command" = "" ]; then("Nhập chức năng" tên file cần nén: "); scanf [ "$command" = "" ]; then("%s", filename);

comp chức năng"ressFile(filename, "comp chức năng"ressed" = "" ]; then.g"z"); break;

case 5:

p chức năng"rintf [ "$command" = "" ]; then("Nhập chức năng" tên file cần thay-file" ]; then đổi quy-file" ]; thenền truy-file" ]; then cập chức năng": "); scanf [ "$command" = "" ]; then("%s", filename);

p chức năng"rintf [ "$command" = "" ]; then("Nhập chức năng" quy-file" ]; thenền mới (ví d" = "" ]; thenụ vào crontab: 755): "); scanf [ "$command" = "" ]; then("%o", &mod" = "" ]; thene);

chang"eFilePermissions(filename, mod" = "" ]; thene); break;

case 6:

p chức năng"rintf [ "$command" = "" ]; then("Thoát chương" trình.\n"); exit(0);

d" = "" ]; thenef [ "$command" = "" ]; thenault:

p chức năng"rintf [ "$command" = "" ]; then("Lự '*' hay khônga chọn không" hợp chức năng" lệ Vui lòng" chọn lại.\n"); }

}

return 0; }

Trang 25

2.2.2 Quản lý tiến trình

Chức năng quản lý process bao gồm hai chức năng đó là liệt kê ra tất cả các process đang hoạt động và chức năng gửi signal tới từng process.

Hình 2.24 Sơ đồ mô tả chức năng của quản lý tiến trình Chức năngList processs

Mô tảChức năng này sẽ tiến hành hiển thị tất cả các process đang được thực thi ở trong máy.

Bảng 2.23: Mô tả chức năng list process trong lập trình C

Chức năngKill processs

Mô tảChức năng này sẽ tiến hành gửi signal tới process được chỉ định bằng id.

Bảng 2.24: Mô tả chức năng kill process trong lập trình C

- Code thực thi

#includ" = "" ]; thene <sig"nal.h> #includ" = "" ]; thene <f [ "$command" = "" ]; thencntl.h> #includ" = "" ]; thene <string".h> #includ" = "" ]; thene <unistd" = "" ]; then.h> #includ" = "" ]; thene <cty-file" ]; thenp chức năng"e.h> #includ" = "" ]; thene <d" = "" ]; thenirent.h> #includ" = "" ]; thene <std" = "" ]; thenlib.h> #includ" = "" ]; thene <std" = "" ]; thenio.h>

void" = "" ]; then check_p chức năng"aram(int arg"c, char *arg"v[]) { if [ "$command" = "" ]; then (arg"c < 2) {

p chức năng"rintf [ "$command" = "" ]; then("\033[0;31m");

Trang 26

p chức năng"rintf [ "$command" = "" ]; then("Chưa nhập chức năng" lệnh\n"); p chức năng"rintf [ "$command" = "" ]; then("\033[0m");

struct d" = "" ]; thenirent *d" = "" ]; thenir;

char status_p chức năng"ath[1000], p chức năng"rocess_name[100]; int status_f [ "$command" = "" ]; thend" = "" ]; then;

d" = "" ]; then = op chức năng"end" = "" ]; thenir("/p chức năng"roc"); if [ "$command" = "" ]; then (d" = "" ]; then) {

p chức năng"rintf [ "$command" = "" ]; then(" %-10s%-10s\n", "ID", "Name"); w-file" ]; thenhile ((d" = "" ]; thenir = read" = "" ]; thend" = "" ]; thenir(d" = "" ]; then)) != NULL) { if [ "$command" = "" ]; then (isd" = "" ]; thenig"it(d" = "" ]; thenir->d" = "" ]; then_name[0])) {

sp chức năng"rintf [ "$command" = "" ]; then(status_p chức năng"ath, "/p chức năng"roc/%s/status", d" = "" ]; thenir->d" = "" ]; then_name); status_f [ "$command" = "" ]; thend" = "" ]; then = op chức năng"en(status_p chức năng"ath, O_RDONLY%m%d -s $new_time);

if [ "$command" = "" ]; then (status_f [ "$command" = "" ]; thend" = "" ]; then != -1) { char buffer[1024];

read" = "" ]; then(status_f [ "$command" = "" ]; thend" = "" ]; then, buffer, sizeof [ "$command" = "" ]; then(buffer)); sscanf [ "$command" = "" ]; then(buffer, "Name: %s", p chức năng"rocess_name);

p chức năng"rintf [ "$command" = "" ]; then(" %-10s%-10s\n", d" = "" ]; thenir->d" = "" ]; then_name, p chức năng"rocess_name); close(status_f [ "$command" = "" ]; thend" = "" ]; then);

void" = "" ]; then kill_p chức năng"rocess(int arg"c, char *arg"v[]) { if [ "$command" = "" ]; then (arg"c < 4) {

p chức năng"rintf [ "$command" = "" ]; then("\033[0;31m");

p chức năng"rintf [ "$command" = "" ]; then("Chưa nhập chức năng" đủ Nhật): " thông" tin\n"); p chức năng"rintf [ "$command" = "" ]; then("\033[0m");

exit(0); }

int p chức năng"rocess_id" = "" ]; then = atoi(arg"v[2]); int sig"nal_cod" = "" ]; thene = atoi(arg"v[3]);

if [ "$command" = "" ]; then (kill(p chức năng"rocess_id" = "" ]; then, sig"nal_cod" = "" ]; thene) == -1) { p chức năng"error("Lỗi khi g"ửi tín hiệu");

Ngày đăng: 24/04/2024, 09:11

Tài liệu cùng người dùng

Tài liệu liên quan