Professional Documents
Culture Documents
Mục lục
Mở Đầu.....................................................................................................................................................1
PHẦN I: NGUYÊN LÝ HỆ ĐIỀU HÀNH ............................................................................................2
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT ..............................................................................................................2
1.1. Sơ lược về hệ điều hành ...........................................................................................................2
1.2. Bộ nhớ ảo ..................................................................................................................................3
1.3. Thuật toán LRU .......................................................................................................................5
CHƯƠNG 2. PHÂN TÍCH THIẾT KẾ HỆ THỐNG .......................................................................................5
2.1. Thiết kế cấu trúc dữ liệu .....................................................................................................5
2.2. Thiết kế chức năng ..............................................................................................................7
PHẦN II: LẬP TRÌNH MẠNG .......................................................................................................... 10
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT ........................................................................................................... 10
1.1. Mô hình client/server ....................................................................................................... 10
1.2. Giao thức TCP .................................................................................................................. 14
CHƯƠNG 2. PHÂN TÍCH THIẾT KẾ HỆ THỐNG .................................................................................... 15
2.1. Thiết kế client ................................................................................................................... 15
2.2. Thiết kế server .................................................................................................................. 17
CHƯƠNG 3. TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ ............................................................................... 18
3.1. Triển khai chương trình ....................................................................................................... 18
3.2. Đánh giá kết quả.................................................................................................................... 23
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .......................................................................................... 23
TÀI LIỆU THAM KHẢO ................................................................................................................... 23
1
Đồ án Cơ Sở Ngành Mạng
Mở Đầu
Nhằm mục đích tìm hiểu về các thuật toán thay thế trang LRU trong môn nguyên lý hệ
điều hành và làm quen với việc sử dụng giao thức TCP, em đã chọn đề tài “Mô phỏng
thuật toán thay thế trang LRU thông qua mô hình client/server bằng giao thức TCP” cho
đồ án cơ sở ngành mạng. Hy vọng rằng có thể áp dụng các kiến thức đã học vào thực tế
và tích lũy thêm kinh nghiệm lập trình cho bản thân.
Tuy nhiên, do kiến thức còn hạn hẹp nên chắc chắn không thể tránh được thiếu xót. Vì
thế, em rất mong sự đóng góp ý kiến của các thầy cô để giúp đề tài của em hoàn thiện
hơn.
Em xin chân thành cảm ơn Ts. Phạm Minh Tuấn đã quan tâm, giúp đỡ và hướng
dẫn chúng em rất nhiều trong quá trình tìm hiểu, thiết kế và hoàn thành đồ án này.
1
Đồ án Cơ Sở Ngành Mạng
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
2
Đồ án Cơ Sở Ngành Mạng
Giai đoạn sau 1980 : giai đoạn này đánh dấu sự ra đời của máy tính cá
nhân, đặc biệt là IBM PC với hệ điều hành MS_DÓ và Window sau này. Bên
cạnh đó cũng có cách hệ điều hành dựa trên UNIX như Linux. Ngoài ra, trong
giai đoạn này cũng đánh dấu sự phát triển của hệ điều hành mạng và hệ điều hành
phan tán.
1.2. Bộ nhớ ảo
1.2.1. Định nghĩa
Bộ nhớ ảo là một kỹ thuật cho phép xử lý một tiến trình không được nạp
toàn bộ vào bộ nhớ vật lý. Bộ nhớ ảo mô hình hoá bộ nhớ như một bảng lưu trữ
rất lớn và đồng nhất, tách biệt hẳn khái niệm không gian địa chỉ và không gian
vật lý. Người sử dụng chỉ nhìn thấy và làm việc trong không gian địa chỉ ảo, việc
chuyển đổi sang không gian vật lý do hệ điều hành thực hiện với sự trợ giúp của
các cơ chế phần cứng cụ thể.
Bộ nhớ áo có thể được cài đặt thông qua:
- Yêu cầu phân trang (demand paging)
- Yêu cầu phân đoạn (demand segmentation)
1.2.2. Yêu cầu phân trang
- Chỉ đưa một trang vào bộ nhớ khi cần thiết
- Ưu điểm:
Giảm thao tác vào ra
Tiết kiệm bộ nhớ
Xử lý nhanh
Tăng số lượng người sử dụng tiến trình
Với mô hình này, cần cung cấp một cơ chế phần cứng giúp phân biệt các
trang đang ở trong bộ nhớ chính và các trang trên đĩa. Có thể sử dụng lại bit valid-
invalid nhưng với ngữ nghĩa mới:
valid : trang tương ứng là hợp lệ và đang ở trong bộ nhớ chính .
invalid : hoặc trang bất hợp lệ (không thuộc về không gian địa chỉ của tiến
trình) hoặc trang hợp lệ nhưng đang được lưu trên bộ nhớ phụ.
Một phần tử trong bảng trang mộ tả cho một trang không nằm trong bộ
nhớ chính, sẽ được đánh dấu invalid và chứa địa chỉ của trang trên bộ nhớ phụ.
3
Đồ án Cơ Sở Ngành Mạng
chế phần cứng sẽ phát sinh một ngắt để báo cho hệ điều hành. Hệ điều hành sẽ xử lý lỗi
trang như sau :
Kiểm tra truy xuất đến bộ nhớ là hợp lệ hay bất hợp lệ
Nếu truy xuất bất hợp lệ : kết thúc tiến trình
Ngược lại : đến bước 3
Tìm vị trí chứa trang muốn truy xuất trên đĩa.
Tìm một khung trang trống trong bộ nhớ chính :
Nếu tìm thấy : đến bước 5
Nếu không còn khung trang trống, chọn một khung trang (nạn nhân) và
chuyển trang (nạn nhân) ra bộ nhớ phụ (lưu nội dung của trang đang chiếm giữ
khung trang này lên đĩa), cập nhật bảng trang tương ứng rồi đến bước 5
Chuyển trang muốn truy xuất từ bộ nhớ phụ vào bộ nhớ chính : nạp trang
cần truy xuất vào khung trang trống đã chọn (hay vừa mới làm trống ) ; cập nhật
nội dung bảng trang, bảng khung trang tương ứng.
Tái kích hoạt tiến trình người sử dụng.
4
Đồ án Cơ Sở Ngành Mạng
- FIFO: Các trang vào đầu tiên trong bộ nhớ là một trang được chọn để đổi
vị trí.
- Trang quang học: Thuật toán đổi vị trí trang quang học có tỉ lệ trang lỗi
ít nhất trong tất cả các thuật toán. Một thuật toán đổi vị trí quang học tồn
tại và đã được gọi là OPT hoặc MIN.
- Thuật toán tối ưu: Thay thế trang sẽ lâu được sử dụng nhất trong tương
lai.
- LRU (Least Recently Used): Trang mà không được sử dụng cho thời gian
dài nhất trong bộ nhớ chính là một trang được chọn để đổi vị trí.
5
Đồ án Cơ Sở Ngành Mạng
String page;
int state;
Memory(){
page=new String();
state=0;
}
public String getPage(){
return page;
}
public int getState(){
return state;
}
public void setPage(String page){
this.page=page;
}
public void setState(int state){
this.state=state;
}
}
- Tạo ra một biến thuộc một kiểu dữ liệu có khả năng lưu trữ thông tin bộ
nhớ trong suốt quá trình để cho phép nhìn thấy toàn bộ tiến trình đã được
thực thi và trạng thái bộ nhớ lúc đó.
public class Store implements Serializable{
Vector title;
Vector row1,row2,row3,row4;
Vector data;
public Store(){
title=new Vector();
data=new Vector();
row1=new Vector();
row2=new Vector();
row3=new Vector();
row4=new Vector();
add("tien trinh","o nho 1","o nho 2","o nho 3","o nho 4");
}
public void add(String vTitle,String vRow1,String vRow2,String
vRow3,String vRow4){
6
Đồ án Cơ Sở Ngành Mạng
title.add(vTitle);
row1.add(vRow1);
row2.add(vRow2);
row3.add(vRow3);
row4.add(vRow4);
}
public Vector getTitle(){
return title;
}
public Vector getData(){
data.clear();
data=new Vector(row1.size());
data.add(row1);
data.add(row2);
data.add(row3);
data.add(row4);
return data;
}
}
2.2. Thiết kế chức năng
Hệ thống chỉ mô tả một chức năng duy nhất là mô phỏng lại thuật toán LRU.
Tuy nhiên, việc này yêu cầu nhiều hành động tham gia vào. Do đó, các phương
thức được tạo ra nhằm đáp ứng yêu cầu của các hành động đó.
Đưa các tiến trình được gọi vào hàng đợi: các tiến trình được gọi sẽ được
lấy tên tiến trình đưa vào trong hàng đợi để chờ xử lý. Phương thức này
không có giá trị trả về.
7
Đồ án Cơ Sở Ngành Mạng
String s1 = s.trim();
while (true) {
i = s1.indexOf(" ");
if (i == -1)
break;
Queue.add(s1.substring(0, i).trim());
s1 = s1.substring(i).trim();
}
}
Kiểm tra xem tiến trình đó đã có trong bộ nhớ hay chưa: thực hiện việc
truy cập vào trong bộ nhớ và so sánh với tên tiến trình hiện thời để kiểm
tra. Phương thức này trả về giá trị true hoặc false.
8
Đồ án Cơ Sở Ngành Mạng
9
Đồ án Cơ Sở Ngành Mạng
memory[position].state = 0;
}
for (int i = 0; i < 4; i++)
if (!memory[i].page.equals(""))
memory[i].state++;
store.add(process, memory[0].page, memory[1].page,
memory[2].page, memory[3].page);
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
Trong mô hình này, chương trình ứng dụng được chia thành 2 thành phần:
Quá trình chuyên cung cấp một số phục vụ nào đó, chẳng hạn: phục vụ tập tin,
phục vụ máy in, phục vụ thư điện tử, phục vụ Web... Các quá trình này được gọi là
các trình phục vụ hay Server.
Một số quá trình khác có yêu cầu sử dụng các dịch vụ do các server cung cấp
được gọi là các quá trình khách hàng hay Client.
Việc giao tiếp giữa client và server được thực hiện dưới hình thức trao đổi các
thông điệp (Message). Để được phục vụ, client sẽ gởi một thông điệp yêu cầu
(Request Message) mô tả về công việc muốn server thực hiện. Khi nhận được thông
điệp yêu cầu, server tiến hành phân tích để xác định công việc cần phải thực thi. Nếu
việc thực hiện yêu cầu này có sinh ra kết quả trả về, server sẽ gởi nó cho client trong
một thông điệp trả lời (Reply Message). Dạng thức (format) và ý nghĩa của các thông
điệp trao đổi giữa client và server được qui định rõ bởi giao thức (protocol) của ứng
dụng.
10
Đồ án Cơ Sở Ngành Mạng
11
Đồ án Cơ Sở Ngành Mạng
12
Đồ án Cơ Sở Ngành Mạng
Kiến trúc n tầng: được chia thành các tầng như sau:
Tầng giao diện người dùng: quản lý tương tác của người dùng với ứng
dụng
Tầng logic trình diễn: Xác định cách thức hiển thị giao diện người dùng
và các yêu cầu của người dùng được quản lý như thế nào.
Tầng logic tác nghiệp: Mô hình hóa các quy tắc tác nghiệp.
Tầng các dịch vụ hạ tầng: Cung cấp một chức năng bổ trợ cần thiết cho
ứng dụng như các thành phần (truyền thông điệp, hỗ trợ giao tác).
13
Đồ án Cơ Sở Ngành Mạng
14
Đồ án Cơ Sở Ngành Mạng
15
Đồ án Cơ Sở Ngành Mạng
16
Đồ án Cơ Sở Ngành Mạng
Server có nhiệm vụ nhận tất cả các thông điệp từ client và gửi lại kết quả xử
lý các thông điệp đó cho client thể hiện lên. Công việc đó được thực hiện trong
phương thức main
public static void main(String[] args) {
try {
Server dt = new Server();
while (true) {
Socket connection = dt.server.accept();
DataInputStream dis;
Dis =new DataInputStream(connection.getInputStream());
DataOutputStream dos;
dos = new
DataOutputStream(connection.getOutputStream());
dt.nhan = dis.readUTF();
switch (dt.nhan) {
case "CTN":
dt.xuly();
dos.writeUTF(dt.queue);
break;
case "ACK0":
dos.writeUTF(dt.memory[0].page);
break;
case "ACK1":
dos.writeUTF(dt.memory[1].page);
break;
case "ACK2":
dos.writeUTF(dt.memory[2].page);
break;
case "ACK3":
dos.writeUTF(dt.memory[3].page);
break;
17
Đồ án Cơ Sở Ngành Mạng
case "ACK4":
dos.writeUTF(dt.process);
break;
case "START":
dos.writeUTF(dt.queue);
break;
case "THONGKE":
ObjectOutputStream oos;
oos=new ObjectOutputStream
(connection.getOutputStream());
oos.writeObject(dt.store);
break;
default:
dt.layTienTrinh(dt.nhan);
dos.writeUTF(dt.queue);
}
}
} catch (Exception e) {
}
18
Đồ án Cơ Sở Ngành Mạng
- Nhập tên các tiến trình vào ô text, có thể nhập tay hoặc đọc từ file, sau đó
ấn nút “xong”
- Bấm “continue” lần 1, hiện ra thông báo tên tiến trình đang xử lý, hàng
đợi được lấy ra một tiến trình.
19
Đồ án Cơ Sở Ngành Mạng
- Bấm “continue” lần 2, tiến trình đang xử lý không có trong ô nhớ, tiến
hành load từ bộ nhớ vật lý
20
Đồ án Cơ Sở Ngành Mạng
- Bấm “continue” lần 4, hệ thống tiến hành load trang vào ô nhớ 1
21
Đồ án Cơ Sở Ngành Mạng
- Sau nhiều lần ấn “continue”, sau đó đó ấn “detail” xuất hiện một cửa số
thống kê các tiến trình đã xử lý và trang thái ô nhớ lúc đó
22
Đồ án Cơ Sở Ngành Mạng
Tuy nhiên, đồ án này vẫn còn nhiều điểm hạn chế nên chương trình không thể trở
thành sản phẩm thương mại. Việc quản lý mã nguồn vẫn còn thủ công và không theo
quy trình.
23
Đồ án Cơ Sở Ngành Mạng
4. Bộ nhớ ảo
http://vietjack.com/operating_system/os_virtual_memory.jsp
24