Tải bản đầy đủ (.docx) (52 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.29 MB, 52 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>LỜI MỞ ĐẦU</b>

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 hồ 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 hồn thành báo cáo của mình.Trong q 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.

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

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

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... Ngồ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

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="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.

<i>- 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</i>

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:

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="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 tồ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

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="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 q trình, các ứng dụng có các 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:

<b>- 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</b>

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="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

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="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.

<i>Bảng 2.5: Mô tả chức năng edit file</i>

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

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

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

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="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

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="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

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

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

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="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

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

Hình 2.10. <b>Chức năng Change permission năng Change permission Chang Change permissione permission pe permissionr missi on</b>

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.

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

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.

<i>Bảng 2.8: Mô tả chức năng auto install</i>

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ê

<i> Bảng 2.9: Mô tả chức năng auto uninstall</i>

<b>- Code thực thi</b>

#!/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"'

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="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, xố tất cảcác lịch đã lập và cuối cùng là sử đổi lịch tiến trình.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<i>Hình 2.14. Sơ đồ usecase </i> 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.

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

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="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

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="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

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="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|||]"

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="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 xố 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ờ.

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="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ờ.

<i>Bảng 2.14: Mô tả chức năng info</i>

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.

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

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.

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

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

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

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="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” ]

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="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. <i>Bảng 2.18: Mô tả chức năng tạo file trong lập trình C</i>

+ Xố file

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

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

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

<i> Bảng 2.19: Mô tả chức năng xố file trong lập trình C</i>

+ 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 <i>Bảng 2.20: Mô tả chức sửa nội dung của list file trong lập trình C</i>

+ Nén file

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

+ 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

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

<b>- Code thực thi:</b>

#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 xố.\n", filename);

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="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);

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="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; }

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="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.

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

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.

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

<b>- Code thực thi</b>

#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");

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="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");

</div>

×