prj 1 Flashcards
(73 cards)
Mục tiêu của chương trình pingpong là gì?
Trao đổi một byte giữa tiến trình cha và con qua pipe
Chương trình pingpong sử dụng những system call nào?
pipe, fork, write, read, và getpid
Pipe hoạt động thế nào trong chương trình pingpong
Tiến trình cha ghi vào pipe, tiến trình con đọc từ pipe và ngược lại
Chương trình primes thực hiện chức năng gì?
Tìm số nguyên tố từ 2 đến 280 sử dụng mô hình pipeline
tại sao cần đóng các file descriptor không dùng đến?
Để tiết kiệm tài nguyên và tránh rò rỉ mô tả tệp
Cách pipe hỗ trợ trong việc tính toán số nguyên tố là gì?
Các số được truyền qua pipe và chỉ giữ lại các số chia hết
Điều gì xảy ra khi pipe không còn dữ liệu để đọc
Lệnh read trả về giá trị 0
Mục đích của chương trình primes:
Chương trình sử dụng thuật toán Sàng Eratosthenes để tìm số nguyên tố. Nótruyền các số liên tiếp qua các pipe và loại bỏ các số không nguyên tố bằng cách kiểm tra chia hết
Tại sao cần đệ quy trong hàm findPrimes:
Mỗi số nguyên tố tạo ra một process con mới. Hàm đệ quy giúp quản lý các pipe mới và tiếp tục lọc các số không chia hết cho số nguyên tố hiện tại
Mục đích của pipe mới trong findPrimes
Pipe mới được tạo ra để truyền dữ liệu đã lọc (không chia hết cho số nguyên tố hiện tại) đến process con tiếp theo
diều gì xảy ra nếu không đóng pipe sau khi dùng
Không đóng pipe có thể dẫn đến:
Rò rỉ tài nguyên.
Các process đọc từ pipe sẽ bị treo vì pipe vẫn mở nhưng không có dữ liệu
Làm thế nào để xác định số byte bộ nhớ trống? sysinfo
Bằng cách sửa đổi kernel/kalloc.c để thêm một hàm đếm số lượng trang bộ nhớ chưa được sử dụng
Làm thế nào để xác định số tiến trình đang hoạt động?
Sử dụng một vòng lặp qua danh sách tiến trình trong kernel/proc.c và đếm số tiến trình có trạng thái khác UNUSED
tại sao cần sử dụng copyout trong sysinfo?
Vì kernel cần sao chép dữ liệu từ vùng nhớ kernel sang vùng nhớ người dùng mà tiến trình gọi có thể truy cập.
Các bước chính để thêm một syscall mới vào xv6 là gì?
Khai báo syscall trong kernel/syscall.h (gán mã số).
Thêm hàm triển khai syscall vào kernel (ví dụ: sys_trace hoặc sys_sysinfo).
Thêm syscall vào bảng syscall trong kernel/syscall.c.
Thêm stub không gian người dùng trong user/usys.pl.
Khai báo syscall trong user/user.h.
Biên dịch lại hệ thống để kiểm tra
Làm thế nào để kiểm tra hoạt động của trace và sysinfo?
Viết các chương trình người dùng như trace.c và sysinfotest.c để kiểm tra các syscall.Kiểm tra kết quả đầu ra có khớp với yêu cầu không
sysinfo có thể được mở rộng để cung cấp thêm thông tin gì không
có thể mở rộng để cung cấp thông tin như thời gian hoạt động của hệ thống (uptime), tải CPU, hoặc thông tin về các tiến trình đang chạy
Tại sao cần thêm _trace và _sysinfotest vào danh sách UPROGS trong Makefile?
Các chương trình _trace và _sysinfotest được thêm vào UPROGS để chúng được biên dịch và liên kết vào hệ thống. _trace có thể được dùng để kiểm tra chức năng trace các hệ thống gọi trong hệ điều hành, trong khi _sysinfotest có thể là một chương trình kiểm tra chức năng của hệ thống thông tin (sysinfo).
Hàm freemen trong kalloc.c được sử dụng để làm gì?
Hàm freemen được sử dụng để tính toán tổng số bộ nhớ còn trống (free memory) trong hệ thống. Nó duyệt qua danh sách freelist của các trang bộ nhớ tự do và trả về tổng số byte bộnhớ tự do hiện có
(ê không chắc cái này)Tại sao cần phải sử dụng acquire(&kmem.lock) và release(&kmem.lock) trong hàm freemen?
Việc sử dụng acquire(&kmem.lock) và release(&kmem.lock) là cần thiết để đảm bảo tính đồng bộ khi truy cập vào freelist, vì nhiều tiến trình có thể truy cập vào danh sách này cùng lúc. Các khóa (locks) đảm bảo rằng chỉ có một tiến trình duy nhất có quyền truy cập vàodanh sách bộ nhớ tự do tại một thời điểm, tránh lỗi đồng thời
Hàm sys_sysinfo có chức năng gì và cách thức hoạt động ra sao?
Hàm sys_sysinfo trả về thông tin hệ thống, bao gồm số lượng bộ nhớ còn trống (freemem) và số lượng tiến trình đang hoạt động (nproc). Các thông tin này được sao chép vào vùng bộ nhớ mà người gọi chỉ định. Hàm sử dụng copyout để truyền thông tin từ kernel đến không gian người dùng.
Hàm sys_sysinfo trong hệ điều hành có chức năng gì?
Hàm sys_sysinfo trả về thông tin hệ thống cho người gọi, bao gồm tổng số bộ nhớ còn trống (freemem) và số lượng tiến trình đang hoạt động (nproc). Thông tin này được sao chép vào vùng bộ nhớ mà người gọi chỉ định. Hàm này cho phép người dùng có thể theo dõi các tài nguyên hệ thống như bộ nhớ và tiến trình
Tại sao phải sử dụng copyout trong hàm sys_sysinfo?
copyout được sử dụng trong hàm sys_sysinfo để sao chép thông tin từ không gian kernel sang không gian người dùng. Điều này là cần thiết vì các thông tin hệ thống như số lượng bộ nhớ còn trống và số lượng tiến trình cần được trả về cho tiến trình người dùng, và chỉ có thể thực hiện việc này thông qua các chức năng an toàn như copyout.
Các thông tin nào được trả về từ hàm sys_sysinfo?
Hàm sys_sysinfo trả về hai thông tin chính:
freemem: Tổng số bộ nhớ còn trống trong hệ thống.
nproc: Số lượng tiến trình đang hoạt động trong hệ thống. Những thông tin này giúp người dùng có cái nhìn tổng quan về tài nguyên của hệ thống.