TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
──────── * ───────
BÀI TẬP LỚN
HỌC PHẦN: NGUYÊN LÝ HỆ ĐIỀU HÀNH
(Mã học phần: IT3070)
Đề tài:
Kỹ thuật quản lý bộ nhớ ngoài của IOS
Sinh viên thực hiện : Đỗ Trung Kiên
Mã Số Sinh Viên : 20224869
Lớp : 149459
Giảng viên hướng dẫn: ThS. Đỗ Tuấn Anh
Hà Nội, tháng 4 năm 2024
MỤC LỤC
LỜI CẢM ƠN
Chương 1. Giới thiệu đề tài
1.1. Tổng quan đề tài
1.2. Nhiệm vụ đề tài
1.3. Kết cấu của đề tài
Chương 2. Khái niệm cơ bản và nhiệm vụ của quản lý bộ nhớ
1.1. Khái niệm cơ bản
1.2. Nhiệm vụ của quản lý bộ nhớ
Chương 3. Cấu trúc hệ thống tệp và triển khai hệ thống tệp
3.1. Hệ thống tệp cơ bản
3.2. App SandBox
3.3. Hệ thống APFS và HFS
Chương 4. Triển khai thư mục
4.1. Cấu trúc phân cấp
4.2. Thư mục hệ thống
4.3. Danh sách tuyến tính
4.4. Bảng băm
Chương 5. Phương pháp phân bố
5.1. Phân bố liền kề
5.2. Phân bố liên kết
5.3. Phân bố theo chỉ mục
Chương 6. Quản lý không gian trống
6.1. Vecto bit
6.2. Danh sách liên kết
6.3. Phân nhóm
6.4. Đếm
6.5. Bản đồ không gian
Chương 7. Xây dựng Hệ thống quản lý tệp iOS bằng ngôn ngữ Switf trên Xcode
Chương 8. Kết luận và hướng phát triển
DANH MỤC TÀI LIỆU THAM KHẢO
LỜI CẢM ƠN
Lời đầu tiên, em xin trân trọng cảm ơn và bày tỏ lòng biết ơn sâu sắc nhất tới thầy Đỗ Tuấn Anh Giảng viên Viện Công
nghệ thông tin & Truyền thông, Trường Đại học Bách Khoa Nội, giáo viên hướng dẫn bài tập lớn đã nhiệt tình giảng
dạy, hướng dẫn, chỉ bảo.
Và em cũng xin dành lời cảm ơn chân thành tới bạn bè đã động viên, khuyến khích và tạo điều kiện cho em hoàn thành tốt
đề tài của mình.
Mặc đã cố gắng hoàn thiện sản phẩm nhưng không thể tránh khỏi những thiếu hụt về kiến thức. Em mong muốn nhận
được những nhận xét thẳng thắn, chi tiết đến từ thầy để tiếp tục hoàn thiện hơn nữa. Cuối cùng, em xin được gửi lời cảm ơn
đến thầy Đỗ Tuấn Anh đã hướng dẫn em trong suốt quá trình hoàn thiên  ài tâp  ớn. Xin trân trọng cảm ơn thầy.
Xin chân thành cảm ơn!
Hà Nội, tháng 4 năm 2024
Sinh viên
Đỗ Trung Kiên
Chương 1. Giới thiệu đề tài
Tổng quan đề tài
Bộ nhớ ngoài là một loại bộ nhớ được sử dụng để lưu trữ dữ liệu bên ngoài bộ nhớ chính của một thiết bị, như máy
tính, điện thoại di động, máy tính bảng, hoặc thiết bị điện tử khác. Đối với máy tính cá nhân, bộ nhớ ngoài thường bao
gồm các thiết bị như ổ đĩa cứng ngoài, ổ đĩa SSD (ổ đĩa rắn) ngoài, thẻ nhớ, hoặc dịch vụ lưu trữ đám mây.
Bộ nhớ ngoài cung cấp một phương tiện để mở rộng dung lượng lưu trữ của một thiết bị, cho phép người dùng lưu
trữ và quản lý nhiều dữ liệu hơn mà không gây quá tải cho bộ nhớ chính của thiết bị. Nó cũng thường được sử dụng để sao
lưu dữ liệu quan trọng, chia sẻ dữ liệu giữa các thiết bị, hoặc chuyển dữ liệu từ một thiết bị sang một thiết bị khác.
Các loại bộ nhớ ngoài có thể kết nối với thiết bị chính thông qua các cổng như USB, Thunderbolt, Wi-Fi, Bluetooth,
hoặc kết nối không dây khác. Đặc điểm của bộ nhớ ngoài bao gồm khả năng di động, tính linh hoạt, và khả năng lưu trữ
lớn, giúp người dùng tiện lợi trong việc quản lý dữ liệu của mình.
1.1. Nhiệm vụ đề tài
Tìm hiểu triển khai hệ thống tệp ios
Tìm hiểu về kỹ thuật quản lý bộ nhớ ngoài ios
Xây dựng Hệ thống quản lý tệp iOS bằng ngôn ngữ Switf trên Xcode Đưa ra được báo cáo môn học và tổng kết
tổng hợp.
1.2. Kết cấu của đề tài
Chương 1. Giới thiệu đề tài
Chương 2. Khái niệm cơ bản và nhiệm vụ của quản lý bộ nhớ
Chương 3. Cấu trúc hệ thống tệp và triển khai hệ thống tệp
Chương 4. Triển khai thư mục
Chương 5. Phương pháp phân bố
Chương 6. Quản lý không gian trống
Chương 7. Xây dựng Hệ thống quản lý tệp iOS bằng ngôn ngữ Switf trên Xcode
Chương 8. Kết luận và hướng phát triển
Chương 2. Khái niệm cơ bản và nhiệm vụ của quản lý bộ nh
1.1 Khái niệm cơ bản
Việc quản lý bộ nhớ ngoài của hệ điều hành bao gồm :
Phát hi n và K t n i: ệ ế
Qu n lý Dung Lả ượng
Đ nh d ng và Phân Vùngị
Truy c p và Thao tác v i T p Tinậ
Sao L u và Khôi Ph c D Li uư
Qu n lý Hi u Năng và B o M tả
Hiện tại, iOS không hỗ trợ việc kết nối với bộ nhớ ngoài thông qua cổng USB hoặc thẻ nhớ microSD như một số
thiết bị Android. Tuy nhiên, cách thông thường để mở rộng dung lượng lưu trữ trên các thiết bị iOS: Sử dụng dịch vụ lưu
trữ đám mây như iCloud, Dropbox, Google Drive, hoặc OneDrive để lưu trữ và chia sẻ dữ liệu.
1.2 Cơ chế quản lý bộ nhớ của hđiều hành IOS
Hệ điều hành tối ưu hóa: iOS được thiết kế để tối ưu hóa việc sử dụng bộ nhớ, giúp tăng hiệu suất của thiết bị. Điều
này bao gồm việc quản lý bộ nhớ RAM để đảm bảo ứng dụng hoạt động mượt mà và nhanh chóng.
Cấu trúc tệp hệ thống: iOS sử dụng cấu trúc tệp hệ thống hiệu quả để lưu trữ dữ liệu. Hệ điều hành quản lý việc lưu
trữ và truy cập các tệp tin một cách hiệu quả để đảm bảo tốc độ và ổn định.
Hệ thống lưu trữ mã hóa: iOS sử dụng mã hóa để bảo vệ dữ liệu người dùng. Tất cả dữ liệu được lưu trữ trên thiết bị
đều được mã hóa để đảm bảo tính bảo mật. Quản lý dữ liệu ứng dụng: iOS có các cơ chế để quản lý dữ liệu của ứng dụng,
bao gồm việc lưu trữ cache và dữ liệu tạm thời. Hệ điều hành có thể tự động xóa các dữ liệu không cần thiết hoặc lưu trữ
quá lớn để giải phóng không gian lưu trữ.
Sao lưu và đồng bộ dữ liệu: iCloud cho phép người dùng sao lưu dữ liệu từ thiết bị iOS của họ lên đám mây, giúp giải
phóng không gian lưu trữ trên thiết bị và bảo vệ dữ liệu người dùng khỏi mất mát
Chương 3. Cấu trúc hệ thống tệp và triển khai hệ thng tp
3.1. Hthống tệp cơ bản
Khái niệm cơ bản về hệ thống tệp
H th ng t p iOS hệ ướng đ n các ng d ng t ch yế
Đ gi cho h th ng đ n gi n, ngể ữ ệ ố ơ ả ười dùng thi t b iOS không có quy n truy c p tr c  p vào h th ng t p và ế ị ề ậ ự
ế ệ ố ệ các ng d ng ph i tuân theo quy ứ ụ ả ước này.
M i ng d ng là m t hòn đ o ỗ ứ
3.2. App SandBox
App Sandbox là công nghệ kiểm soát truy cập được cung cấp trong OS X, được thực thi ở cấp kernel. Chiến lược
của nó có hai mặt:
ng d ng SandBox cho phép b n mô t cách ng d ng c a b n tụ
ương tác v i h th ng. Sau đó, h th ng sẽ ớ c p cho ng d ng c a b n quy
n truy c p c n thi t đ hoàn thành công vi c và không h n th n a.ấ
ế ơ ế ữ
ng d ng SandBox cho phép ngụ ười ng c p quy n truy c p b sung cho ng d ng c a b n m t cách minh
b ch thông qua h p tho i M L u, kéo th
cũng nh các tạ ư ư ương tác quen thu c khác c a ngộ
ười dùng.
Tìm hiểu SandBox
M c đích c a SanBox là h n ch thi t h i mà ng d ng b xâm nh p có th gây ra cho h th ng. ế
SandBox không ngăn ch n các cu c t n công x y ra v i m t ng d ng c th và b n v n có trách nhi m vi t ặ
ộ ứ ế phòng th đ
ngăn ch n các cu c t n công.ủ ể
Ví d : n u ng d ng c a b n không xác th c thông n đ u vào c a ngụ ế ứ ụ ủ ạ ự ầ ủ ười dùng và có l i tràn b đ m có th ỗ
ộ ệ ể khai thác được trong mã x lý đ u vào c a b n thì k t n công v n có th chi m quy n đi u khi n ng d ng ầ ủ ạ ẻ ấ ẫ
ể ế ề ề ể ứ ụ c a b n ho c khi n ng d ng g p s c .ủ ạ ặ ế ứ ụ ặ ự ố
SandBox ch ngăn ng d ng b t n công nh hỉ ị ấ ưởng đ n các ng d ng khác
các b ph n khác c a h th ng.ế
3.3. HFS và APFS
Một hệ thống tệp hiện đại được giới thiệu bởi Apple vào năm 2017. Nó được thiết kế để thay thế hệ thống tệp cũ HFS+
(Hierarchical File System Plus) và trở thành hệ thống tệp chính cho các thiết bị Apple chạy macOS, iOS, watchOS và
tvOS.
APFS mang lại nhiều cải tiến so với HFS+, bao gồm hiệu suất, bảo mật và độ tin cậy được tăng cường.
Hỗ trợ Snapshot: APFS hỗ trợ snapshot, cho phép người dùng tạo bản sao điểm thời gian của hệ thống tệp. Snapshot có thể
được sử dụng để sao lưu dữ liệu, phục hồi hệ thống và khôi phục dữ liệu một cách hiệu quả.
3.3.1. Bản sao giảm chi phí sao chép
Bản sao là bản sao của tệp hoặc thư mục không chiếm thêm dung lượng trên đĩa. Bản sao cho phép bạn tạo các bản sao tệp
nhanh chóng, tiết kiệm năng lượng trên cùng một ổ đĩa. Các sửa đổi đối với dữ liệu được ghi ở nơi khác và cả hai tệp tiếp
tục chia sẻ các khối chưa sửa đổi. Ví dụ: bạn có thể sử dụng hành vi này để giảm dung lượng lưu trữ cần thiết cho các bản
sửa đổi và sao chép tài liệu. Hình bên dưới hiển thị một tệp có tên “Tệp của tôi” và bản sao của nó “Bản sao tệp của tôi”
có hai khối chung và một khối khác nhau giữa chúng. Trên các hệ thống tệp như HFS Plus, mỗi hệ thống tệp sẽ cần ba
khối trên đĩa, nhưng trên ổ đĩa Hệ thống tệp Apple, hai khối chung được chia sẻ.
3.3.2. Không gian trống được chia sẻ gia các tệp
Nhiều hệ thống tệp, bao gồm HFS Plus, chỉ hỗ trợ một ổ đĩa duy nhất cho mỗi phân vùng. Vì dung lượng trống
không thể
được chia sẻ giữa các phân vùng nên kích thước của mỗi ổ được đặt khi phân vùng thiết bị lưu trữ và mỗi ổ chỉ có thể phát
triển thành không gian trống có sẵn. Ngược lại, Apple File System hỗ trợ nhiều ổ đĩa trong một phân vùng duy nhất, điều
này cho phép tất cả các ổ đĩa đó chia sẻ không gian trống của chúng. Tất cả các ổ trong phân vùng Hệ thống tệp Apple có
thể tăng và giảm độc lập; không gian được giải phóng khi một tập thu nhỏ có thể được sử dụng khi một tập khác tăng lên.
3.3.3. Các tệp thưa thớt không phân bổ các khối trống
Trong các hệ thống tệp hỗ trợ các tệp thưa thớt, bao gồm Hệ thống tệp Apple, các khối trên đĩa chỉ được phân bổ khi các
khối
đó thực sự được ghi vào. Hành vi này cho phép các tệp chứa các phần trống, chẳng hạn như ảnh đĩa và kết xuất cơ sở dữ
liệu, được lưu trên đĩa hiệu quả hơn.
Khi sử dụng lớp này để tạo một điều khiển ghi mới, một tệp thưa thớt sẽ được tạo tự động.dụ: nếu bạn viết
một khối dữ
liệu, sau đó tìm kiếm một khối bằng cách gọi , rồi viết khối khác, dữ liệu được lưu trên đĩa được sắp xếp như sau
HFS Plus và các định dạng khác không hỗ trợ các tệp thưa thớt phân bổ ba khối cho tệp, một khối cho mỗi khối
được ghi và
một khối trống ở giữa. Với sự hỗ trợ cho các tệp thưa thớt, chỉ có hai khối được phân bổ và khối trống bị bỏ qua.
Vì tệp thưa trong ví dụ về hệ thống Apple File ở trên không chứa khối thứ hai trống trên đĩa nên việc ghi vào
khối thứ hai sau
đó sẽ dẫn đến các khối không theo thứ tự, như minh họa trong hình bên dưới. Các API cấp cao như xử lý sự phân mảnh
này cho bạn và việc giảm hiệu suất do phân mảnh thường không đáng kể
Chương 4. Triển khai thư mục
Các thư mục cần phải nhanh chóng để tìm kiếm, chèn và xóa, với dung lượng ổ đĩa bị
Tương tự như các hệ điều hành khác, iOS tổ chức thư mục theo cấu trúc phân cấp cây.
Ở gốc của cây là thư mục gốc ("/"), chứa tất cả các thư mục và tệp khác trên thiết bị
Hệ
thống tệp phân cấp
là cách
,
thư mục
,
tệp
và các thiết bị
lưu trữ khác được tổ chức và hiển thị trên
hệ điều hành
. Trong hệ thống tệp phân cấp,
lãng phí ở mức tối thiểu.
4.1. Cấu trúc Phân cấp
các ổ đĩa, thư mục và tệp được hiển thị theo nhóm, cho phép người dùng chỉ xem các tệp mà họ
muốn xem. Ví dụ: hình ảnh hiển thị các thư mục theo cấu trúc cây và phân cấp thư mục Nhạc chứa các thư mục
Cổ điển , Rock và Techno . Mỗi thư mục này có thể có hàng trăm tệp riêng, nhưng trừ khi chúng được mở thì các tệp sẽ
không được hiển thị.
4.2. Thư mục hthng
iOS bao gồm một số thư mục hệ thống để lưu trữ các loại dữ liệu cụ thể. Ví dụ:
/Applications: Chứa các ứng dụng đã được cài đặt.
/Library: Lưu trữ các tệp, cài đặt ứng dụng và tài nguyên chia sẻ giữa nhiều ứng dụng.
/Documents: Được các ứng dụng sử dụng để lưu trữ nội dung do người dùng tạo ra và tài liệu.
/tmp: Cung cấp một vị trí lưu trữ tạm thời cho các tệp không cần tồn tại qua các lần khởi động ứng dụng.
/System: Chứa các tệp và tài nguyên hệ thống.
4.3. Danh sách tuyến tính
Danh sách tuyến tính là cấu trúc thư mục đơn giản và dễ thiết lập nhất, nhưng nó có một số hạn chế.
Việc tìm kiếm một tệp (hoặc xác minh một tệp chưa tồn tại khi tạo) yêu cầu tìm kiếm tuyến tính.
Việc xóa có thể được thực hiện bằng cách di chuyển tất cả các mục nhập, gắn c một mục nhập là đã
xóa hoặc bằng cách di chuyển mục nhập cuối cùng vào vị trí mới trống.
Việc sắp xếp danh sách giúp tìm kiếm nhanh hơn, tuy nhiên việc chèn và xóa phức tạp hơn.
Danh sách liên kết giúp việc chèn và xóa vào danh sách được sắp xếp dễ dàng hơn, với chi phí chung
cho các liên kết.
4.4 Bảng băm
Bảng băm cũng có thể được sử dụng để tăng tốc độ tìm kiếm.
Các bảng băm thường được triển khai ngoài cấu trúc tuyến tính hoặc cấu trúc khác
Chương 5. Phương pháp phân bố
5.1. Phân bổ liền kề
Phân bổ liền kề là một phương pháp trong quản lý không gian đĩa, trong đó tất cả các khối của một tệp được giữ
liền
kề nhau trên đĩa. Điều này mang lại hiệu suất rất nhanh khi đọc các khối liên tiếp của cùng một tệp, vì không cần chuyển
động của đầu đĩa hoặc ít nhất là chỉ một bước nhỏ.
Mặc dù việc phân bổ lưu trữ liên quan đến các vấn đề tương tự đã được thảo luận trước đó, nhưng trong trường
hợp
này, sự khác biệt là việc giảm thiểu thời gian cần thiết để di chuyển đầu đĩa có thể trở nên quan trọng hơn. Việc giữ các tệp
liền kề có thể mang lại lợi ích lớn trong trường hợp này.
Tuy nhiên, có thể phát sinh các vấn đề khi kích thước của tệp thay đổi hoặc không được xác định chính xác từ
đầu. Việc ước tính quá mức kích thước tệp có thể dẫn đến phân mảnh ngoài hoặc lãng phí dung lượng đĩa. Trong khi đó,
ước tính dưới mức có thể gây ra việc phải di chuyển hoặc hủy bỏ tệp nếu tệp vượt quá không gian đã phân bổ ban đầu.
Một biến thể khác của phương pháp này là phân bổ không gian tệp theo các phần lớn liền kề, được gọi là phạm
vi. Khi một tệp vượt quá phạm vi ban đầu, một phần tiếp theo của không gian tệp được phân bổ. Điều này giúp tối ưu hóa
hiệu suất trong một số hệ thống quản lý tệp cụ thể.
Figure 1:Phân b không gian đĩa li n k .ổ
5.2. Phân bổ liên kết
Các tập tin trên đĩa có thể được lưu trữ dưới dạng danh sách liên kết, với chi phí về dung lượng lưu trữ được sử
dụng bởi mỗi liên kết. (Ví dụ: một khối có thể là 508 byte thay vì 512.)
Phân bổ được liên kết không liên quan đến phân mảnh bên ngoài, không yêu cầu kích thước tệp đã biết trước và
cho
phép các tệp phát triển linh hoạt bất kỳ lúc nào.
Thật không may, phân bổ được liên kết chỉ hiệu quả đối với các tệp truy cập tuần tự, vì truy cập ngẫu nhiên yêu
cầu
bắt đầu từ đầu danh sách cho mỗi lần truy cập vị trí mới.
Việc phân bổ các cụm khối làm giảm không gian bị lãng phí bởi các con trỏ, gây ra sự phân mảnh bên trong.
Một vấn đề lớn khác với cấp phát liên kết là độ tin cậy nếu con trỏ bị mất hoặc bị hỏng. Danh sách liên kết đôi
cung
cấp một số biện pháp bảo vệ nhưng lại phải trả thêm phí tổn và lãng phí không gian.
Figure 2 : Phân b không gian đĩa đổ ược liên k tế
5.3. Phân bổ theo chỉ mục
Phương pháp phân bổ được lập chỉ mục kết hợp tất cả các chỉ mục để truy cập từng tệp vào một khối chung, đảm
bảo hiệu quả và tính toàn vẹn của dữ liệu trên đĩa. Mặc dù phương pháp này có thể dẫn đến lãng phí dung lượng ổ đĩa,
nhưng nó cung cấp khả năng truy cập dữ liệu nhanh chóng và hiệu quả. Các cách tiếp cận phổ biến bao gồm:
Lược đồ liên kết: Mỗi tệp được chỉ định một khối chỉ mục, trong đó các địa chỉ của các khối dữ liệu tương ứng
được
lưu trữ. Khối chỉ mục đầu tiên có thể chứa thông tin tiêu đề và các con trỏ tới các khối chỉ mục bổ sung nếu cần.
Chỉ mục đa cấp: Khối chỉ mục đầu tiên chứa một tập hợp các con trỏ tới các khối chỉ mục phụ. Mỗi khối chỉ mục
phụ chứa các con trỏ tới các khối dữ liệu thực tế. Phương pháp này cho phép tăng cấp độ của chỉ mục theo nhu cầu.
Lược đồ kết hợp: Phương pháp này kết hợp ưu điểm của lược đồ liên kết và chỉ mục đa cấp. Các con trỏ đầu tiên
được lưu trữ trực tiếp trong nút, sau đó các con trỏ gián tiếp cung cấp quyền truy cập vào nhiều khối dữ liệu hơn nếu cần.
Mỗi phương pháp có những ưu điểm và hạn chế riêng, nhưng chúng đều nhằm mục đích tối ưu hóa việc truy cập dữ
liệu trên đĩa và đảm bảo hiệu suất của hệ
Figure 3 : Phân b không gian đĩa theo ch m cổ
Chương 6 : Quản lý không gian trống
Một khía cạnh quan trọng khác của quản lý đĩa là theo dõi và phân bổ không gian trống.
6.1.Vectơ 1.1 Bit
Một cách tiếp cận đơn giản là sử dụng vectơ bit , trong đó mỗi bit đại diện cho một khối đĩa, được đặt thành 1 nếu
trống hoặc 0 nếu được phân bổ.
Các thuật toán nhanh tồn tại để tìm nhanh các khối liền kề có kích thước nhất định
Nhược điểm là đĩa 40 GB cần hơn 5 MB chỉ để lưu trữ bitmap. ( Ví dụ. )
6.2. Danh sách liên kết
Danh sách liên kết cũng có thể được sử dụng để theo dõi tất cả các khối trống.
Duyệt qua danh sách và/hoặc tìm một khối liền kề có kích thước nhất định không phải là điều dễ dàng, nhưng may mắn
thay đây không phải là những thao tác cần thiết thường xuyên. Nói chung, hệ thống chỉ thêm và xóa các khối đơn lẻ khỏi
đầu danh sách.
Bảng FAT theo dõi danh sách miễn phí dưới dạng một danh sách liên kết khác trên bảng.
.
6.3. Phân nhóm
Một biến thể của danh sách miễn phí trong danh sách liên kết là sử dụng liên kết của các khối chỉ mục của các khối miễn
phí. Nếu một khối chứa tối đa N địa chỉ thì khối đầu tiên trong danh sách liên kết chứa tối đa N-1 địa chỉ của các khối
trống và một con trỏ tới khối địa chỉ trống tiếp theo.
6.4. Đếm
Khi có nhiều khối không gian trống liền kề thì hệ thống có thể theo dõi địa chỉ bắt đầu của nhóm và số khối trống liền kề.
Miễn là độ dài trung bình của một nhóm khối trống liền kề lớn hơn hai, điều này sẽ tiết kiệm được không gian cần thiết
cho danh sách trống. (Tương tự như kỹ thuật nén được sử dụng cho hình ảnh đồ họa khi gặp phải một nhóm pixel có cùng
màu.) 6.5. Bản đồ không gian
Hệ thống tệp ZFS của Sun được thiết kế cho số lượng và kích thước LỚN của tệp, thư mục và thậm chí cả hệ thống tệp.
Cấu trúc dữ liệu thu được có thể RẤT kém hiệu quả nếu không được triển khai cẩn thận. Ví dụ: giải phóng tệp 1 GB trên
hệ thống tệp 1 TB có thể liên quan đến việc cập nhật hàng nghìn khối bản đồ bit danh sách trống nếu tệp được trải rộng
trên đĩa. ZFS sử dụng kết hợp các kỹ thuật, bắt đầu bằng việc chia đĩa thành (hàng trăm) siêu dữ liệu có kích thước có thể
quản lý được, mỗi siêu dữ liệu có bản đồ không gian riêng.
Các khối miễn phí được quản lý bằng kỹ thuật đếm, nhưng thay vì ghi thông tin vào bảng, nó được ghi lại trong bản ghi
giao dịch có cấu trúc nhật ký. Các khối trống liền kề cũng được hợp nhất thành một khối trống lớn hơn.
Bản đồ không gian trong bộ nhớ được xây dựng bằng cấu trúc dữ liệu cây cân bằng, được xây dựng từ dữ liệu nhật ký.
Sự kết hợp giữa cây trong bộ nhớ và nhật ký trên đĩa mang lại khả năng quản lý rất nhanh và hiệu quả các tệp rất lớn và
các khối trống này.
Chương 7. Xây dựng Hệ thống quản lý tệp iOS bằng ngôn ngữ Switf trên
Xcode Chương 6. Kết luận và hướng phát triển
Chương trình được phát triển dựa trên các kiến thức đã được giảng dạy trên lớp và tự tìm hiểu nên còn sơ sài, tồn tại nhiều
thiếu sót và hạn chế, một phần cũng do bản thân em chưa có kinh nghiệm xây dựng và phát triển nhiều chương trình trên
Bài tập lớn. Sau quá trình phát triển và thử nghiệm, em xin đưa ra kết luận và hướng phát triển như sau:
1. Ưu điểm
Đáp ứng, hoàn thành đầy đủ các yêu cầu của đề tài về cả lý thuyết và ứng dụng.
Chương trình chạy mượt mà không gặp các lỗi.
2. Nhược điểm
Chưa thiết kế được giao diện đồ hoạ.
Còn lỗi phần mềm.
3. Hướng phát triển
Với những ưu nhược điểm như trên, cá nhân em có một vài ý tuưởng phát triển mới đó là:
Lập trình thiết kế giao diện đồ hoạ cho chương trình dễ dàng tiếp cận hơn.
Sửa các lỗi sẵn có.
DANH MỤC TÀI LIỆU THAM KHẢO
1. Bài giảng học phần Nguyên lý Hệ điều hành của thầy Đỗ Tuấn Anh.
2. Nguyên lý Hệ điều hành (NXB Giáo Dục Việt Nam) – Hồ Đắc Phương.
3. Wikipedia: Quản lý bộ nhớ.
4. Giáo trình C++ & Lập trình hướng đối tượng (NXB Bách Khoa Hà Nội) GS. Phạm Văn Ất, Lê Trường Thông.

Preview text:

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
──────── * ─────── BÀI TẬP LỚN
HỌC PHẦN: NGUYÊN LÝ HỆ ĐIỀU HÀNH
(Mã học phần: IT3070) Đề tài:
Kỹ thuật quản lý bộ nhớ ngoài của IOS
Sinh viên thực hiện : Đỗ Trung Kiên
Mã Số Sinh Viên : 20224869 Lớp : 149459
Giảng viên hướng dẫn: ThS. Đỗ Tuấn Anh
Hà Nội, tháng 4 năm 2024 MỤC LỤC LỜI CẢM ƠN
Chương 1. Giới thiệu đề tài 1.1. Tổng quan đề tài 1.2. Nhiệm vụ đề tài 1.3. Kết cấu của đề tài
Chương 2. Khái niệm cơ bản và nhiệm vụ của quản lý bộ nhớ 1.1. Khái niệm cơ bản 1.2.
Nhiệm vụ của quản lý bộ nhớ
Chương 3. Cấu trúc hệ thống tệp và triển khai hệ thống tệp
3.1. Hệ thống tệp cơ bản 3.2. App SandBox
3.3. Hệ thống APFS và HFS
Chương 4. Triển khai thư mục 4.1. Cấu trúc phân cấp 4.2. Thư mục hệ thống 4.3. Danh sách tuyến tính 4.4. Bảng băm
Chương 5. Phương pháp phân bố 5.1. Phân bố liền kề 5.2. Phân bố liên kết
5.3. Phân bố theo chỉ mục
Chương 6. Quản lý không gian trống 6.1. Vecto bit 6.2. Danh sách liên kết 6.3. Phân nhóm 6.4. Đếm 6.5. Bản đồ không gian
Chương 7. Xây dựng Hệ thống quản lý tệp iOS bằng ngôn ngữ Switf trên Xcode
Chương 8. Kết luận và hướng phát triển
DANH MỤC TÀI LIỆU THAM KHẢO LỜI CẢM ƠN
Lời đầu tiên, em xin trân trọng cảm ơn và bày tỏ lòng biết ơn sâu sắc nhất tới thầy Đỗ Tuấn Anh – Giảng viên Viện Công
nghệ thông tin & Truyền thông, Trường Đại học Bách Khoa Hà Nội, giáo viên hướng dẫn bài tập lớn đã nhiệt tình giảng
dạy, hướng dẫn, chỉ bảo.
Và em cũng xin dành lời cảm ơn chân thành tới bạn bè đã động viên, khuyến khích và tạo điều kiện cho em hoàn thành tốt đề tài của mình.
Mặc dù đã cố gắng hoàn thiện sản phẩm nhưng không thể tránh khỏi những thiếu hụt về kiến thức. Em mong muốn nhận
được những nhận xét thẳng thắn, chi tiết đến từ thầy để tiếp tục hoàn thiện hơn nữa. Cuối cùng, em xin được gửi lời cảm ơn
đến thầy Đỗ Tuấn Anh đã hướng dẫn em trong suốt quá trình hoàn thiên ḅ ài tâp ḷ ớn. Xin trân trọng cảm ơn thầy.
Xin chân thành cảm ơn!
Hà Nội, tháng 4 năm 2024 Sinh viên Đỗ Trung Kiên
Chương 1. Giới thiệu đề tài Tổng quan đề tài
Bộ nhớ ngoài là một loại bộ nhớ được sử dụng để lưu trữ dữ liệu bên ngoài bộ nhớ chính của một thiết bị, như máy
tính, điện thoại di động, máy tính bảng, hoặc thiết bị điện tử khác. Đối với máy tính cá nhân, bộ nhớ ngoài thường bao
gồm các thiết bị như ổ đĩa cứng ngoài, ổ đĩa SSD (ổ đĩa rắn) ngoài, thẻ nhớ, hoặc dịch vụ lưu trữ đám mây.
Bộ nhớ ngoài cung cấp một phương tiện để mở rộng dung lượng lưu trữ của một thiết bị, cho phép người dùng lưu
trữ và quản lý nhiều dữ liệu hơn mà không gây quá tải cho bộ nhớ chính của thiết bị. Nó cũng thường được sử dụng để sao
lưu dữ liệu quan trọng, chia sẻ dữ liệu giữa các thiết bị, hoặc chuyển dữ liệu từ một thiết bị sang một thiết bị khác.
Các loại bộ nhớ ngoài có thể kết nối với thiết bị chính thông qua các cổng như USB, Thunderbolt, Wi-Fi, Bluetooth,
hoặc kết nối không dây khác. Đặc điểm của bộ nhớ ngoài bao gồm khả năng di động, tính linh hoạt, và khả năng lưu trữ
lớn, giúp người dùng tiện lợi trong việc quản lý dữ liệu của mình.
1.1. Nhiệm vụ đề tài
• Tìm hiểu triển khai hệ thống tệp ios
• Tìm hiểu về kỹ thuật quản lý bộ nhớ ngoài ios
• Xây dựng Hệ thống quản lý tệp iOS bằng ngôn ngữ Switf trên Xcode Đưa ra được báo cáo môn học và tổng kết tổng hợp.
1.2. Kết cấu của đề tài
Chương 1. Giới thiệu đề tài
Chương 2. Khái niệm cơ bản và nhiệm vụ của quản lý bộ nhớ
Chương 3. Cấu trúc hệ thống tệp và triển khai hệ thống tệp
Chương 4. Triển khai thư mục
Chương 5. Phương pháp phân bố
Chương 6. Quản lý không gian trống
Chương 7. Xây dựng Hệ thống quản lý tệp iOS bằng ngôn ngữ Switf trên Xcode
Chương 8. Kết luận và hướng phát triển
Chương 2. Khái niệm cơ bản và nhiệm vụ của quản lý bộ nhớ
1.1 Khái niệm cơ bản
Việc quản lý bộ nhớ ngoài của hệ điều hành bao gồm : • Phát hi n và K t n i: ệ ế ố • Qu n lý Dung Lả ượng • Đ nh d ng và Phân Vùngị ạ •
Truy c p và Thao tác v i T p Tinậ ớ ệ •
Sao L u và Khôi Ph c D Li uư ụ ữ ệ •
Qu n lý Hi u Năng và B o M tả ệ ả ậ
Hiện tại, iOS không hỗ trợ việc kết nối với bộ nhớ ngoài thông qua cổng USB hoặc thẻ nhớ microSD như một số
thiết bị Android. Tuy nhiên, cách thông thường để mở rộng dung lượng lưu trữ trên các thiết bị iOS: Sử dụng dịch vụ lưu
trữ đám mây như iCloud, Dropbox, Google Drive, hoặc OneDrive để lưu trữ và chia sẻ dữ liệu.
1.2 Cơ chế quản lý bộ nhớ của hệ điều hành IOS
Hệ điều hành tối ưu hóa: iOS được thiết kế để tối ưu hóa việc sử dụng bộ nhớ, giúp tăng hiệu suất của thiết bị. Điều
này bao gồm việc quản lý bộ nhớ RAM để đảm bảo ứng dụng hoạt động mượt mà và nhanh chóng.
Cấu trúc tệp hệ thống: iOS sử dụng cấu trúc tệp hệ thống hiệu quả để lưu trữ dữ liệu. Hệ điều hành quản lý việc lưu
trữ và truy cập các tệp tin một cách hiệu quả để đảm bảo tốc độ và ổn định.
Hệ thống lưu trữ mã hóa: iOS sử dụng mã hóa để bảo vệ dữ liệu người dùng. Tất cả dữ liệu được lưu trữ trên thiết bị
đều được mã hóa để đảm bảo tính bảo mật. Quản lý dữ liệu ứng dụng: iOS có các cơ chế để quản lý dữ liệu của ứng dụng,
bao gồm việc lưu trữ cache và dữ liệu tạm thời. Hệ điều hành có thể tự động xóa các dữ liệu không cần thiết hoặc lưu trữ
quá lớn để giải phóng không gian lưu trữ.
Sao lưu và đồng bộ dữ liệu: iCloud cho phép người dùng sao lưu dữ liệu từ thiết bị iOS của họ lên đám mây, giúp giải
phóng không gian lưu trữ trên thiết bị và bảo vệ dữ liệu người dùng khỏi mất mát
Chương 3. Cấu trúc hệ thống tệp và triển khai hệ thống tệp
3.1. Hệ thống tệp cơ bản
Khái niệm cơ bản về hệ thống tệp • H th ng t p iOS hệ ố ệ
ướng đ n các ng d ng t ch yế ứ ụ ự ạ
• Đ gi cho h th ng đ n gi n, ngể ữ ệ ố ơ ả ười dùng thi t b iOS không có quy n truy c p tr c ti p vào h th ng t p và ế ị ề ậ ự
ế ệ ố ệ các ng d ng ph i tuân theo quy ứ ụ ả ước này.
• M i ng d ng là m t hòn đ o ỗ ứ ụ ộ ả 3.2. App SandBox
App Sandbox là công nghệ kiểm soát truy cập được cung cấp trong OS X, được thực thi ở cấp kernel. Chiến lược của nó có hai mặt:
• Ứng d ng SandBox cho phép b n mô t cách ng d ng c a b n tụ ạ ả ứ ụ ủ ạ
ương tác v i h th ng. Sau đó, h th ng sẽ ớ ệ ố ệ
ố c p cho ng d ng c a b n quy
n truy c p c n thi t đ hoàn thành công vi c và không h n th n a.ấ ứ ụ ủ ạ ề ậ ầ ế ể ệ ơ ế ữ
• Ứng d ng SandBox cho phép ngụ
ười dùng c p quy n truy c p b sung cho ng d ng c a b n m t cách minh ấ ề ậ ổ ứ ụ ủ ạ
ộ b ch thông qua h p tho i M và L u, kéo và th cũng nh các tạ ộ ạ ở ư ả ư
ương tác quen thu c khác c a ngộ ủ ười dùng. Tìm hiểu SandBox
• M c đích c a SanBox là h n ch thi t h i mà ng d ng b xâm nh p có th gây ra cho h th ng.ụ ủ ạ ế ệ ạ ứ ụ ị ậ ể ệ ố
• SandBox không ngăn ch n các cu c t n công x y ra v i m t ng d ng c th và b n v n có trách nhi m vi t ặ ộ ấ ả ớ ộ ứ ụ ụ ể ạ ẫ ệ ế mã phòng th đ
ngăn ch n các cu c t n công.ủ ể ặ ộ ấ
• Ví d : n u ng d ng c a b n không xác th c thông tin đ u vào c a ngụ ế ứ ụ ủ ạ ự ầ ủ ười dùng và có l i tràn b đ m có th ỗ
ộ ệ ể khai thác được trong mã x lý đ u vào c a b n thì k t n công v n có th chi m quy n đi u khi n ng d ng ử ầ ủ ạ ẻ ấ ẫ
ể ế ề ề ể ứ ụ c a b n ho c khi n ng d ng g p s c .ủ ạ ặ ế ứ ụ ặ ự ố
• SandBox ch ngăn ng d ng b t n công nh hỉ ứ ụ ị ấ ả
ưởng đ n các ng d ng khác và
các b ph n khác c a h th ng.ế ứ ụ ộ ậ ủ ệ ố 3.3. HFS và APFS
Một hệ thống tệp hiện đại được giới thiệu bởi Apple vào năm 2017. Nó được thiết kế để thay thế hệ thống tệp cũ HFS+
(Hierarchical File System Plus) và trở thành hệ thống tệp chính cho các thiết bị Apple chạy macOS, iOS, watchOS và tvOS.
APFS mang lại nhiều cải tiến so với HFS+, bao gồm hiệu suất, bảo mật và độ tin cậy được tăng cường.
Hỗ trợ Snapshot: APFS hỗ trợ snapshot, cho phép người dùng tạo bản sao điểm thời gian của hệ thống tệp. Snapshot có thể
được sử dụng để sao lưu dữ liệu, phục hồi hệ thống và khôi phục dữ liệu một cách hiệu quả.
3.3.1. Bản sao giảm chi phí sao chép
Bản sao là bản sao của tệp hoặc thư mục không chiếm thêm dung lượng trên đĩa. Bản sao cho phép bạn tạo các bản sao tệp
nhanh chóng, tiết kiệm năng lượng trên cùng một ổ đĩa. Các sửa đổi đối với dữ liệu được ghi ở nơi khác và cả hai tệp tiếp
tục chia sẻ các khối chưa sửa đổi. Ví dụ: bạn có thể sử dụng hành vi này để giảm dung lượng lưu trữ cần thiết cho các bản
sửa đổi và sao chép tài liệu. Hình bên dưới hiển thị một tệp có tên “Tệp của tôi” và bản sao của nó “Bản sao tệp của tôi”
có hai khối chung và một khối khác nhau giữa chúng. Trên các hệ thống tệp như HFS Plus, mỗi hệ thống tệp sẽ cần ba
khối trên đĩa, nhưng trên ổ đĩa Hệ thống tệp Apple, hai khối chung được chia sẻ.
3.3.2. Không gian trống được chia sẻ giữa các tệp
Nhiều hệ thống tệp, bao gồm HFS Plus, chỉ hỗ trợ một ổ đĩa duy nhất cho mỗi phân vùng. Vì dung lượng trống không thể
được chia sẻ giữa các phân vùng nên kích thước của mỗi ổ được đặt khi phân vùng thiết bị lưu trữ và mỗi ổ chỉ có thể phát
triển thành không gian trống có sẵn. Ngược lại, Apple File System hỗ trợ nhiều ổ đĩa trong một phân vùng duy nhất, điều
này cho phép tất cả các ổ đĩa đó chia sẻ không gian trống của chúng. Tất cả các ổ trong phân vùng Hệ thống tệp Apple có
thể tăng và giảm độc lập; không gian được giải phóng khi một tập thu nhỏ có thể được sử dụng khi một tập khác tăng lên.
3.3.3. Các tệp thưa thớt không phân bổ các khối trống
Trong các hệ thống tệp hỗ trợ các tệp thưa thớt, bao gồm Hệ thống tệp Apple, các khối trên đĩa chỉ được phân bổ khi các khối
đó thực sự được ghi vào. Hành vi này cho phép các tệp chứa các phần trống, chẳng hạn như ảnh đĩa và kết xuất cơ sở dữ
liệu, được lưu trên đĩa hiệu quả hơn.
Khi sử dụng lớp này để tạo một điều khiển ghi mới, một tệp thưa thớt sẽ được tạo tự động. Ví dụ: nếu bạn viết một khối dữ
liệu, sau đó tìm kiếm một khối bằng cách gọi , rồi viết khối khác, dữ liệu được lưu trên đĩa được sắp xếp như sau
HFS Plus và các định dạng khác không hỗ trợ các tệp thưa thớt phân bổ ba khối cho tệp, một khối cho mỗi khối được ghi và
một khối trống ở giữa. Với sự hỗ trợ cho các tệp thưa thớt, chỉ có hai khối được phân bổ và khối trống bị bỏ qua.
Vì tệp thưa trong ví dụ về hệ thống Apple File ở trên không chứa khối thứ hai trống trên đĩa nên việc ghi vào khối thứ hai sau
đó sẽ dẫn đến các khối không theo thứ tự, như minh họa trong hình bên dưới. Các API cấp cao như xử lý sự phân mảnh
này cho bạn và việc giảm hiệu suất do phân mảnh thường không đáng kể
Tương tự như các hệ điều hành khác, iOS tổ chức thư mục theo cấu trúc phân cấp cây.
Ở gốc của cây là thư mục gốc ("/"), chứa tất cả các thư mục và tệp khác trên thiết bị
Hệ thống tệp phân cấp là cách các ổ đĩa , thư mục , tệp và các thiết bị
lưu trữ khác được tổ chức và hiển thị trên hệ điều hành . Trong hệ thống tệp phân cấp,
Chương 4. Triển khai thư mục
Các thư mục cần phải nhanh chóng để tìm kiếm, chèn và xóa, với dung lượng ổ đĩa bị
lãng phí ở mức tối thiểu.
4.1. Cấu trúc Phân cấp
các ổ đĩa, thư mục và tệp được hiển thị theo nhóm, cho phép người dùng chỉ xem các tệp mà họ
muốn xem. Ví dụ: hình ảnh hiển thị các thư mục theo cấu trúc cây và phân cấp thư mục Nhạc chứa các thư mục
Cổ điển , Rock và Techno . Mỗi thư mục này có thể có hàng trăm tệp riêng, nhưng trừ khi chúng được mở thì các tệp sẽ không được hiển thị.
4.2. Thư mục hệ thống
iOS bao gồm một số thư mục hệ thống để lưu trữ các loại dữ liệu cụ thể. Ví dụ:
/Applications: Chứa các ứng dụng đã được cài đặt.
/Library: Lưu trữ các tệp, cài đặt ứng dụng và tài nguyên chia sẻ giữa nhiều ứng dụng.
/Documents: Được các ứng dụng sử dụng để lưu trữ nội dung do người dùng tạo ra và tài liệu.
/tmp: Cung cấp một vị trí lưu trữ tạm thời cho các tệp không cần tồn tại qua các lần khởi động ứng dụng.
/System: Chứa các tệp và tài nguyên hệ thống.
4.3. Danh sách tuyến tính
Danh sách tuyến tính là cấu trúc thư mục đơn giản và dễ thiết lập nhất, nhưng nó có một số hạn chế.
Việc tìm kiếm một tệp (hoặc xác minh một tệp chưa tồn tại khi tạo) yêu cầu tìm kiếm tuyến tính.
Việc xóa có thể được thực hiện bằng cách di chuyển tất cả các mục nhập, gắn cờ một mục nhập là đã
xóa hoặc bằng cách di chuyển mục nhập cuối cùng vào vị trí mới trống.
Việc sắp xếp danh sách giúp tìm kiếm nhanh hơn, tuy nhiên việc chèn và xóa phức tạp hơn.
Danh sách liên kết giúp việc chèn và xóa vào danh sách được sắp xếp dễ dàng hơn, với chi phí chung cho các liên kết. 4.4 Bảng băm
Bảng băm cũng có thể được sử dụng để tăng tốc độ tìm kiếm.
Các bảng băm thường được triển khai ngoài cấu trúc tuyến tính hoặc cấu trúc khác
Chương 5. Phương pháp phân bố
5.1. Phân bổ liền kề
Phân bổ liền kề là một phương pháp trong quản lý không gian đĩa, trong đó tất cả các khối của một tệp được giữ liền
kề nhau trên đĩa. Điều này mang lại hiệu suất rất nhanh khi đọc các khối liên tiếp của cùng một tệp, vì không cần chuyển
động của đầu đĩa hoặc ít nhất là chỉ một bước nhỏ.
Mặc dù việc phân bổ lưu trữ liên quan đến các vấn đề tương tự đã được thảo luận trước đó, nhưng trong trường hợp
này, sự khác biệt là việc giảm thiểu thời gian cần thiết để di chuyển đầu đĩa có thể trở nên quan trọng hơn. Việc giữ các tệp
liền kề có thể mang lại lợi ích lớn trong trường hợp này.
Tuy nhiên, có thể phát sinh các vấn đề khi kích thước của tệp thay đổi hoặc không được xác định chính xác từ
đầu. Việc ước tính quá mức kích thước tệp có thể dẫn đến phân mảnh ngoài hoặc lãng phí dung lượng đĩa. Trong khi đó,
ước tính dưới mức có thể gây ra việc phải di chuyển hoặc hủy bỏ tệp nếu tệp vượt quá không gian đã phân bổ ban đầu.
Một biến thể khác của phương pháp này là phân bổ không gian tệp theo các phần lớn liền kề, được gọi là phạm
vi. Khi một tệp vượt quá phạm vi ban đầu, một phần tiếp theo của không gian tệp được phân bổ. Điều này giúp tối ưu hóa
hiệu suất trong một số hệ thống quản lý tệp cụ thể.
Figure 1:Phân b không gian đĩa li n k .ổ ề ề
5.2. Phân bổ liên kết
Các tập tin trên đĩa có thể được lưu trữ dưới dạng danh sách liên kết, với chi phí về dung lượng lưu trữ được sử
dụng bởi mỗi liên kết. (Ví dụ: một khối có thể là 508 byte thay vì 512.)
Phân bổ được liên kết không liên quan đến phân mảnh bên ngoài, không yêu cầu kích thước tệp đã biết trước và cho
phép các tệp phát triển linh hoạt bất kỳ lúc nào.
Thật không may, phân bổ được liên kết chỉ hiệu quả đối với các tệp truy cập tuần tự, vì truy cập ngẫu nhiên yêu cầu
bắt đầu từ đầu danh sách cho mỗi lần truy cập vị trí mới.
Việc phân bổ các cụm khối làm giảm không gian bị lãng phí bởi các con trỏ, gây ra sự phân mảnh bên trong.
Một vấn đề lớn khác với cấp phát liên kết là độ tin cậy nếu con trỏ bị mất hoặc bị hỏng. Danh sách liên kết đôi cung
cấp một số biện pháp bảo vệ nhưng lại phải trả thêm phí tổn và lãng phí không gian.
Figure 2 : Phân b không gian đĩa đổ ược liên k tế
5.3. Phân bổ theo chỉ mục
Phương pháp phân bổ được lập chỉ mục kết hợp tất cả các chỉ mục để truy cập từng tệp vào một khối chung, đảm
bảo hiệu quả và tính toàn vẹn của dữ liệu trên đĩa. Mặc dù phương pháp này có thể dẫn đến lãng phí dung lượng ổ đĩa,
nhưng nó cung cấp khả năng truy cập dữ liệu nhanh chóng và hiệu quả. Các cách tiếp cận phổ biến bao gồm:
Lược đồ liên kết: Mỗi tệp được chỉ định một khối chỉ mục, trong đó các địa chỉ của các khối dữ liệu tương ứng được
lưu trữ. Khối chỉ mục đầu tiên có thể chứa thông tin tiêu đề và các con trỏ tới các khối chỉ mục bổ sung nếu cần.
Chỉ mục đa cấp: Khối chỉ mục đầu tiên chứa một tập hợp các con trỏ tới các khối chỉ mục phụ. Mỗi khối chỉ mục
phụ chứa các con trỏ tới các khối dữ liệu thực tế. Phương pháp này cho phép tăng cấp độ của chỉ mục theo nhu cầu.
Lược đồ kết hợp: Phương pháp này kết hợp ưu điểm của lược đồ liên kết và chỉ mục đa cấp. Các con trỏ đầu tiên
được lưu trữ trực tiếp trong nút, sau đó các con trỏ gián tiếp cung cấp quyền truy cập vào nhiều khối dữ liệu hơn nếu cần.
Mỗi phương pháp có những ưu điểm và hạn chế riêng, nhưng chúng đều nhằm mục đích tối ưu hóa việc truy cập dữ
liệu trên đĩa và đảm bảo hiệu suất của hệ
Figure 3 : Phân b không gian đĩa theo ch m cổ ỉ
Chương 6 : Quản lý không gian trống
Một khía cạnh quan trọng khác của quản lý đĩa là theo dõi và phân bổ không gian trống. 6.1.Vectơ 1.1 Bit
Một cách tiếp cận đơn giản là sử dụng vectơ bit , trong đó mỗi bit đại diện cho một khối đĩa, được đặt thành 1 nếu
trống hoặc 0 nếu được phân bổ.
Các thuật toán nhanh tồn tại để tìm nhanh các khối liền kề có kích thước nhất định
Nhược điểm là đĩa 40 GB cần hơn 5 MB chỉ để lưu trữ bitmap. ( Ví dụ. )
6.2. Danh sách liên kết
Danh sách liên kết cũng có thể được sử dụng để theo dõi tất cả các khối trống.
Duyệt qua danh sách và/hoặc tìm một khối liền kề có kích thước nhất định không phải là điều dễ dàng, nhưng may mắn
thay đây không phải là những thao tác cần thiết thường xuyên. Nói chung, hệ thống chỉ thêm và xóa các khối đơn lẻ khỏi đầu danh sách.
Bảng FAT theo dõi danh sách miễn phí dưới dạng một danh sách liên kết khác trên bảng. . 6.3. Phân nhóm
Một biến thể của danh sách miễn phí trong danh sách liên kết là sử dụng liên kết của các khối chỉ mục của các khối miễn
phí. Nếu một khối chứa tối đa N địa chỉ thì khối đầu tiên trong danh sách liên kết chứa tối đa N-1 địa chỉ của các khối
trống và một con trỏ tới khối địa chỉ trống tiếp theo. 6.4. Đếm
Khi có nhiều khối không gian trống liền kề thì hệ thống có thể theo dõi địa chỉ bắt đầu của nhóm và số khối trống liền kề.
Miễn là độ dài trung bình của một nhóm khối trống liền kề lớn hơn hai, điều này sẽ tiết kiệm được không gian cần thiết
cho danh sách trống. (Tương tự như kỹ thuật nén được sử dụng cho hình ảnh đồ họa khi gặp phải một nhóm pixel có cùng
màu.) 6.5. Bản đồ không gian
Hệ thống tệp ZFS của Sun được thiết kế cho số lượng và kích thước LỚN của tệp, thư mục và thậm chí cả hệ thống tệp.
Cấu trúc dữ liệu thu được có thể RẤT kém hiệu quả nếu không được triển khai cẩn thận. Ví dụ: giải phóng tệp 1 GB trên
hệ thống tệp 1 TB có thể liên quan đến việc cập nhật hàng nghìn khối bản đồ bit danh sách trống nếu tệp được trải rộng
trên đĩa. ZFS sử dụng kết hợp các kỹ thuật, bắt đầu bằng việc chia đĩa thành (hàng trăm) siêu dữ liệu có kích thước có thể
quản lý được, mỗi siêu dữ liệu có bản đồ không gian riêng.
Các khối miễn phí được quản lý bằng kỹ thuật đếm, nhưng thay vì ghi thông tin vào bảng, nó được ghi lại trong bản ghi
giao dịch có cấu trúc nhật ký. Các khối trống liền kề cũng được hợp nhất thành một khối trống lớn hơn.
Bản đồ không gian trong bộ nhớ được xây dựng bằng cấu trúc dữ liệu cây cân bằng, được xây dựng từ dữ liệu nhật ký.
Sự kết hợp giữa cây trong bộ nhớ và nhật ký trên đĩa mang lại khả năng quản lý rất nhanh và hiệu quả các tệp rất lớn và các khối trống này.
Chương 7. Xây dựng Hệ thống quản lý tệp iOS bằng ngôn ngữ Switf trên
Xcode Chương 6. Kết luận và hướng phát triển
Chương trình được phát triển dựa trên các kiến thức đã được giảng dạy trên lớp và tự tìm hiểu nên còn sơ sài, tồn tại nhiều
thiếu sót và hạn chế, một phần cũng do bản thân em chưa có kinh nghiệm xây dựng và phát triển nhiều chương trình trên
Bài tập lớn. Sau quá trình phát triển và thử nghiệm, em xin đưa ra kết luận và hướng phát triển như sau: 1. Ưu điểm ●
Đáp ứng, hoàn thành đầy đủ các yêu cầu của đề tài về cả lý thuyết và ứng dụng. ●
Chương trình chạy mượt mà không gặp các lỗi. 2. Nhược điểm ●
Chưa thiết kế được giao diện đồ hoạ. ● Còn lỗi phần mềm. 3. Hướng phát triển
Với những ưu nhược điểm như trên, cá nhân em có một vài ý tuưởng phát triển mới đó là: ●
Lập trình thiết kế giao diện đồ hoạ cho chương trình dễ dàng tiếp cận hơn. ● Sửa các lỗi sẵn có.
DANH MỤC TÀI LIỆU THAM KHẢO 1.
Bài giảng học phần Nguyên lý Hệ điều hành của thầy Đỗ Tuấn Anh. 2.
Nguyên lý Hệ điều hành (NXB Giáo Dục Việt Nam) – Hồ Đắc Phương. 3.
Wikipedia: Quản lý bộ nhớ. 4.
Giáo trình C++ & Lập trình hướng đối tượng (NXB Bách Khoa Hà Nội) – GS. Phạm Văn Ất, Lê Trường Thông.