6. CHƯƠNG 3 PHẦN MỀM MÃ NGUỒN MỞ (OPENSOURCE)
3.1. Hệ Điều Hành
Giới thiệu
Thuật ngữ "hệ điều hành" được dùng gần đây chỉ tới một phần mềm cần thiết
để người dùng quản lý hệ thống và chạy các phần mềm ứng dụng khác trên hệ
thống. Nó không chỉ có nghĩa là "phần lõi" tương tác trực tiếp với phần cứng mà còn cả các thư viện cần thiết để các chương trình quản lý và điều chỉnh hệ thống.
Cấp thấp nhất của hệ điều hành là phần lõi (còn gọi là nhân), lớp phần mềm đầu tiên được tải vào hệ thống khi khởi động. Các phần mềm được tải tiếp theo phụ thuộc vào nó sẽ cung cấp các dịch vụ cốt lõi cho hệ thống. Những dịch vụ phổ biến là truy xuất đĩa, quản lý bộ nhớ, định thời, và truy xuất tới thiết bị phần cứng. Có nhiều tranh cãi về những thành phần nào tạo nên phần lõi, như hệ thống tập tin có được đưa vào phần lõi không.
3.1.1. Quản lý chia sẻ tài nguyên
Tài nguyên của hệ thống (CPU, bộ nhớ, thiết bị ngoại vi, ...) vốn rất giới hạn, nhưng trong các hệ thống đa nhiệm, nhiều người sử dụng có thể đồng thời yêu cầu nhiều tài nguyên. Để thỏa mãn yêu cầu sử dụng chỉ với tài nguyên hữu hạn và nâng cao hiệu quả sử dụng tài nguyên, hệ điều hành cần phải có cơ chế và chiến lược thắch hợp để quản lý việc phân phối tài nguyên.
GVHD: TS Hoàng Mạnh Thắng
Ngoài yêu cầu dùng chung tài nguyên để tiết kiệm chi phắ, người sử dụng còn cần phải chia sẻ thông tin (tài nguyên phần mềm) lẫn nhau, khi đó hệ điều hành
cần đảm bảo việc truy xuất đến các tài nguyên này là hợp lệ, không xảy ra tranh
chấp, mất đồng nhất...
Giả lập một máy tắnh mở rộng
Hệ điều hành làm ẩn đi các chi tiết phần cứng, người sử dụng được cung cấp một giao diện đơn giản, dễ hiểu, dễ sử dụng và không phụ thuộc vào thiết bị phần cứng cụ thể.
Thực tế, ta có thể xem Hệ điều hành như là một hệ thống bao gồm nhiều máy tắnh trừu tượng xếp thành nhiều lớp chồng lên nhau, máy tắnh mức dưới phục vụ cho máy tắnh mức trên. Lớp trên cùng là giao diện trực quan nhất để chúng ta điều khiển.
Ngoài ra có thể chia chức năng của Hệ điều hành theo bốn chức năng sau : Quản lý quá trình (process management) Quản lý bộ nhớ (memory management) Quản lý hệ thống lưu trữ (storage management) Giao tiếp với người dùng (user interaction)
3.1.2. Nhiệm vụ của hệđiều hành
Ớ Điều khiển và quản lý trực tiếp các phần cứng như bo mạch chủ, bo
mạch đồ họa và bo mạch âm thanh,...
Ớ Thực hiện một số thao tác cơ bản trong máy tắnh như các thao tác đọc, viết tập tin, quản lý hệ thống tập tin (file system) và các kho dữ liệu.
Ớ Cung ứng một hệ thống giao diện sơ khai cho các ứng dụng thường là thông qua một hệ thống thư viện các hàm chuẩn để điều hành các phần cứng mà từ đó các ứng dụng có thể gọi tới.
Ớ Cung ứng một hệ thống lệnh cơ bản để điều hành máy. Các lệnh này gọi là lệnh hệ thống (system command).
Ớ Ngoài ra hệ điều hành, trong vài trường hợp, cũng cung cấp các dịch vụ cơ bản cho các phần mềm ứng dụng thông thường như chương trình duyệt Web, chương trình soạn thảo văn bản....
GVHD: TS Hoàng Mạnh Thắng 3.1.3. Các thành phần của hệ điều hành Ớ Hệ thống quản lý tiến trình Ớ Hệ thống quản lý bộ nhớ Ớ Hệ thống quản lý nhập xuất Ớ Hệ thống quản lý tập tin Ớ Hệ thống bảo vệ Ớ Hệ thống dịch lệnh Ớ Quản lý mạng 3.1.4. Phân loại hệđiều hành Dưới góc độ loại máy tắnh
Ớ Hệ điều hành dành cho máy MainFrame
Ớ Hệ điều hành dành cho máy Server
Ớ Hệ điều hành dành cho máy nhiều CPU
Ớ Hệ điều hành dành cho máy tắnh cá nhân (PC)
Ớ Hệ điều hành dành cho máy PDA (Embedded OS - hệ điều hành nhúng)
Ớ Hệ điều hành dành cho máy chuyên biệt
Ớ Hệ điều hành dành cho thẻ chắp (SmartCard)
Thông thường dưới góc độ người sử dụng và số chương trình được sử
dụng cùng lúc hệđiều hành được chia làm 3 loại:
Ớ Hệ điều hành đơn nhiệm một người dùng
Ớ Hệ điều hành đa nhiệm một người dùng
Ớ Hệ điều hành đa nhiệm nhiều người dùng
Dưới góc độ người dùng (truy xuất tài nguyên cùng lúc)
Ớ Một người dùng
Ớ Nhiều người dùng
o Mạng ngang hàng
GVHD: TS Hoàng Mạnh Thắng Dưới góc độ hình thức xử lý
Ớ Hệ thống xử lý theo lô
Ớ Hệ thống xử lý theo lô đa chương
Ớ Hệ thống chia sẻ thời gian
Ớ Hệ thống song song Ớ Hệ thống phân tán Ớ Hệ thống xử lý thời gian thực 3.1.5. Hàm hệ thống System Call Những dịch vụ cốt lõi
Các hệ điều hành hiện đại: được sử dụng ngày nay trên các máy tắnh đa chức năng (như máy tắnh cá nhân) chủ yếu gồm hai chủng loại: hệ điều hành họ Unix
3.1.6. Phân loại và thuật ngữ
Khái niệm hệ điều hành được tách thành ba thành phần: giao diện người dùng (bao gồm giao diện đồ họa và/hoặc thông dịch dòng lệnh, còn gọi là "shell"), tiện ắch hệ thống cấp thấp, và phần lõi--trái tim của hệ điều hành.
Phần cứng <-> Phần lõi <-> Shell <-> Ứng dụng | |
+---+
Trong một số hệ điều hành, phần lõi và shell nằm tách rời hoàn toàn, do đó cho phép kết hợp nhiều phần lõi và shell với nhau (như hệ điều hành UNIX), trong hệ điều hành khác thì điều này chỉ là khái niệm.
3.1.7. Linux
Linux là tên gọi của một hệ điều hành máy tắnh và cũng là tên hạt nhân của
hệ điều hành. Nó có lẽ là một vắ dụ nổi tiếng nhất của OpenSource và của việc phát triển mã nguồn mở.
GVHD: TS Hoàng Mạnh Thắng
Phiên bản Linux đầu tiên do Linus Torvalds viết vào năm 1991, lúc ông còn là một sinh viên của Đại học Helsinki tại Phần Lan. Ông làm việc một cách hăng say trong vòng 3 năm liên tục và cho ra đời phiên bản Linux 1.0 vào năm 1994. Bộ phận chủ yếu này được phát triển và tung ra trên thị trường dưới bản quyền GNU General Public License. Do đó mà bất cứ ai cũng có thể tải và xem mã nguồn của Linux.
Một cách chắnh xác, thuật ngữ "Linux" được sử dụng để chỉ Nhân Linux, nhưng tên này được sử dụng một cách rộng rãi để miêu tả tổng thể một hệ điều hành giống Unix (còn được biết đến dưới tên GNU/Linux) được tạo ra bởi việc đóng gói nhân Linux cùng với các thư viện và công cụ GNU, cũng như là các bản phân phối Linux. Thực tế thì đó là tập hợp một số lượng lớn các phần mềm như máy chủ web, các ngôn ngữ lập trình, các hệ quản trị cơ sở dữ liệu, các môi trường làm việc desktop như GNOME và KDE, và các ứng dụng thắch hợp cho công việc văn phòng như OpenOffice.
Khởi đầu, Linux được phát triển cho dòng vi xử lý 386, hiện tại hệ điều hành này hỗ trợ một số lượng lớn các kiến trúc vi xử lý, và được sử dụng trong nhiều ứng dụng khác nhau từ máy tắnh cá nhân cho tới các siêu máy tắnh và các thiết bị nhúng như là các máy điện thoại di động.
Ban đầu, Linux được phát triển và sử dụng bởi những người say mê. Tuy
nhiên, hiện nay Linux đã có được sự hỗ trợ bởi các công ty lớn như IBM và Hewlett-Packard, đồng thời nó cũng bắt kịp được các phiên bản Unix độc quyền và thậm chắ là một thách thức đối với sự thống trị của Microsoft Windows trong một số lĩnh vực. Sở dĩ Linux đạt được những thành công một cách nhanh chóng là nhờ vào các đặc tắnh nổi bật so với các hệ thống khác: chi phắ phần cứng thấp, tốc độ cao (khi so sánh với các phiên bản Unix độc quyền) và khả năng bảo mật tốt, độ tin cậy cao (khi so sánh với Windows) cũng như là các đặc điểm về giá thành rẻ, không bị phụ thuộc vào nhà cung cấp. Một đặc tắnh nổi trội của nó là được phát triển bởi một mô hình phát triển phần mềm nguồn mở hiệu quả.
Tuy nhiên, hiện tại số lượng phần cứng được hỗ trợ bởi Linux vẫn còn rất khiêm tốn so với Windows vì các trình điều khiển thiết bị tương thắch với Windows
GVHD: TS Hoàng Mạnh Thắng
nhiều hơn là Linux. Nhưng trong tương lai số lượng phần cứng được hỗ trợ cho Linux sẽ tăng lên.
3.1.7.1. Các bản phân phối Linux
Linux hiện nay có nhiều bản phân phối khác nhau, một phần là bởi vì tắnh chất nguồn mở của nó. một số bản phân phối chủ yếu linux xem thêm tài liệu tham khảo
3.1.7.2. Phân tắch hiệu năng của HệĐiều Hành linux nhận gói tin
Đề cập đến các vấn đề - Cơ sở nền tảng - Các vấn đề mạng
- Xử lý các gói tin nhận được của linux - Xử lý phần cứng và NIC
- Xử lý tách của nhân linux + IP
+ TCP + UDP Xử lý nhận dữ liệu Phân tắch hiệu năng
3.1.7.2.1 Cơ sở nền tảng
- Chế độ hoạt động trong HEP - Phân bố toàn bộ, cơ sở lưới - Thay đổi trong HEP
- Để truyền dữ liệu vật lý đã có sẵn bây giờ vài pegabyte (1015 byte)
trong khoảng và mong muốn lớn hơn vài extrabytes, cùng với hiệu suất thật sự thập kỷ linh hoạt và trung tâm máy tắnh trên toàn thế giới.
3.1.7.2.2. Các chiều hướng công nghệ
- Tốc độ tryền trong mạng đã được tăng lên rất nhanh, tốc độ của sự cải tiến của công nghệ microprocessor.
- Phần mào đầu của giao thức mạng đã có tăng nhanh so sánh thời gian truyên hết gói tin trong mạng.
3.1.7.2.3. Các vấn đề mạng
GVHD: TS Hoàng Mạnh Thắng
- Mạng ?
- Hệ thống Kết thúc Mạng ?
chúng ta xem xét va tập trung vào nhân linux 2.6
- Xử lý nhận gói tin LINUX
- Hệ thống của mạng linux - xử lý nhận gói tin
Bước 1 các NIC và phần mềm điều khiển card mạng
o các gói đã được truyền từ card giao diện mạng đến bộ đệm vòng Bước 2 bóc tách giao thức của nhân
o gói được truyền từ bộ đệm vòng đến bộ đệm nhận socket Bước 3
o Các gói được sao lưu từ đêm nhận socket đến ứng dụng - Xử lý của phần mềm card mạng
\
Hình 6-1Minh hoạ nhân Linux 2.6
GVHD: TS Hoàng Mạnh Thắng
- Các bước thực hiện
+ Các gói đến vòng bộ đệm qua DMA + NIC làm việc với ngắt của card phần cứng
+ Sử lý ngắt phần cứng theo hoạch định ngắt mềm nhận gói tin (softirq) + Softirq kiểm tra chắnh xác phù hợp với tuần tự ưu tiên
+ Softirq thu được từ vòng đệm Nic tương ứng
+ Các gói tin được loại bỏ từ vòng đệm nhận phục vụ cho sử lý lớp cao hơn phù hợp Với khe thời gian tương ứng trong vòng đệm được thiết lập lại và lọc lại
- Chức năng ở lớp 1&2 mô hình 7 lớp OSI - Vòng đệm nhận được các nhận diện gói tin
- Khi chấp nhận gói trong tình trạng sẵn sang, các gói tin đến sẽ bị loại bỏ
3.1.7.3 Giao thức kernel bóc tách gói tin.
3.1.7.3.1 Xử lý IP
- Đảm bảo toàn vẹn gói tin - Tìm đường
- Xây dựng lại các phần
- Các gói tin lớp cao hơn khi giao thức
3.1.7.3.2 Xử lý bóc tách TCP
- Xử lý nội dung TCP - Các nội dung sử lý TCP
- Ngắt nội dung: thiết lập bởi softirq
- Xử lý nội dung thiết lập bởi quá trình nhận dữ liệu - Hiệu quả hơn, ắt chuyển mạch
Các chức năng TCP
- Giám sát luồng, giám sát xung đột, thông báo biết, và truyền lại - Hàng đợi của TCP
- Đặt trước hàng đợi
- Để Cố gắng của các gói tin sử lý trong nội dung sử lý, thay vào đó ngắt hoạt động hàng đợi chưa xử lý
- Sắp xếp thứ tự, tìm báo nhận, không thiếu sót, sẵn sang cho truyền - Hàng đợi tuần tự ngoài và kết thúc
GVHD: TS Hoàng Mạnh Thắng
Hình 6-4 Tiến trình TCP ngắt
- Kernel giao thức bóc tách TCP2
- Loại bỏ khi trường hợp đặt trước bị luồng quá lớn, luông đặt trước và hang đợi - Chưa thực hiện trong quá trình sử lý nội dung
GVHD: TS Hoàng Mạnh Thắng
3.1.7.3.3 Bóc tách sử lý nhân của UDP
- Xử lý UDP
- Đơn giản hơn nhiều TCP
- Đảm bảo hoàn toàn gói tin UDP
- Các gói đến hang đợi với đệm nhận socket, khi đệm đầy các gói đến sẽ bị loại bỏ
- Xử lý nhận dữ liệu
- Sao chép dữ liệu từ đệm nhận của socket qua struct iovec - Các hệ thống liên quan socket gọi
- Đối với luồng TCP quá trình nhận dữ liệu cũng có thể thiết lập sử lý TCP trong nội dung xử lý
- Phân tắch hiệu năng Chú thắch
- RT(t), RTỖ(t): Chấp nhận và thực hiện tổng số gói đến ( tổng gói tin/đơn vị thời gian)
- Ri(t), RiỖ(t): chấp nhận và thực hiện tổng số đối với luồng dữ liệu I ( tổng gói tin/đơn vị thời gian)
- Rr(t): Tốc độ đẩy vào đối với chấp nhận gói tin được sử dụng ( tổng gói tin/đơn vị thời gian)
- D: Tổng các gói trong chấp nhận gói trong đệm vòng nhận
- A(t): Số lượng của chấp nhận gói trong tình trạng sẵn sang ở thời điểm t - Rs(t): tốc độ phục vụ gói trong giao thức nhân ( tổng gói tin/đơn vị thời gian)
- Rsi(t): Tốc độ phục vụ gói cho luồng thứ i ( tổng gói tin/đơn vị thời gian) - Rdi(t): tốc độ phục vụ gói quá trình nhận dữ liệu đối với luồng thứ i ( tổng gói tin/đơn vị thời gian)
- Bi(t), kắch thước đệm nhận của socket I ở thời điểm t (Bytes) - QBi(t): đệm nhận của socket I (Bytes)
- ặ tốc độ phuc vụ gói của quá trình đang nhận dữ liệu khi tiến trình đang hoạt động
- τmin : giữa khoảng thời gian trung bình vào trong hệ thống lần đầu tiên được phục vụ softirq
GVHD: TS Hoàng Mạnh Thắng
- Mô hình thuật toán tocken bucket quá trình nhận phần mềm điều khiển card mạng & NIC
- Mô hình sử lý hang đợi sử lý nhận trạng thái 2&3 - Thuật toán tocken bucket
khi các gói tin đên có thẻ bài thì được phép hoạt động nếu không có thắ sẽ remove
- Để chấp nhận gói tin vào hệ thống hoặc không được chấp nhận nó phải theo
sau
- Chú ý card mạng và phần mềm điều khiển card mạng có thể bị thắt nút chai
- Tăng tốc độ phục vụ gói tin giao thức, tăng kắch thước bộ nhớ hệ thống - Tăng bộ đệm kắch thước D của NIC, nó đuợc thiết kế theo tham số card mạng và tránh tình trạng mất gói tin.
GVHD: TS Hoàng Mạnh Thắng
- Xử lý hàng đợi bước 2&3
Đối với luồng thứ i ta có
Đối với UDP khi đệm gói dữ liệu đầy sẽ loại bỏ gói tin TCP khi đệm đầy sẽ dừng không được chuyển vào nữa
- Xử lý hàng đợi
- Tăng bộ đệm hàng đợi socket tức là kắch thước QBi
Tăng Rdi(t)
3.2 Phần mềm ứng dụng mã nguồn mở
3.2.1 Cài đặt và bỉên dịch
3.2.1.1 Biên dịch và cài đặt từ mã nguồn
Các loại biên dịch từ mã nguồn với các file đuôi như Ợ.tar.gzỢ, Ợ.tar. gz2Ợ, ỘzipỢ
a. cài đặt Từ file tar.gz mkdir /usr/local/src/ cd /usr/local/src/
GVHD: TS Hoàng Mạnh Thắng tar Ờzxvf tenfile cd ten_thu_muc_tao_ra ./configure Make Make install b. Cài đặt tar.bz2 tar xvjf pkg.tar.bz2 cd ten_thu_muc_tao_ra ./configure Make Make install Xoá không cài đặt Make clean
c. Cài đặt từ zip Bzip2 tenfile.zip
3.2.1.2 Cài đặt từ các gói đã biên dịch lấy từ trêm mạng
+ rpm -ivh*.rpm
+ rpm ỜUvh goi_tenđuơngdan_website Xoá gói
+ rpm -e <package>
- Cài đặt sử dụng debian và ubuntu
deb http://http.us.debian.org/debian stable main contrib non-free deb http://non-us.debian.org/debian-non-US stable/non-US main