2013-08-31 56 views
15

Tuân thủ Posix là tiêu chuẩn được nhiều công ty theo dõi. Tôi có một số câu hỏi xung quanh khu vực này, 1. tất cả các hệ thống tệp có cần tuân thủ posix không? 2. Các ứng dụng cũng được yêu cầu phải tuân thủ posix? 3. có bất kỳ hệ thống tập tin không posix nào không?tuân thủ posix cho hệ thống tệp là gì?

+1

LƯU Ý rằng tuân thủ POSIX liên quan đến hệ điều hành, không phải hệ thống tệp cụ thể. Một phần của nó không chỉ định API để truy cập hệ thống tệp. Trong bối cảnh đó: 1) nó không cần thiết, nhưng nó rất hữu ích cho các lập trình viên, 2) chỉ khi họ muốn làm việc với một hệ điều hành POSIX tuân thủ, 3) có. Xem: http://stackoverflow.com/questions/1780599/i-never-really-understood-what-is-posix – lurker

+0

Bỏ phiếu để đóng quá rộng: quá nhiều câu hỏi trong một ;-) –

Trả lời

19

Trong lĩnh vực "yêu cầu POSIX ngữ nghĩa hệ thống tập tin" những gì thường có nghĩa là:

  • cho phép tên tập tin theo cấp bậc và độ phân giải (, .., ....)
  • hỗ trợ ít nhất close- để mở ngữ nghĩa
  • umask/unix quyền, 3 filetimes
  • 8bit hỗ trợ byte
  • hỗ trợ đặt lại tên nguyên tử trên cùng một hệ thống tập tin
  • fsync()/dirfsync() độ bền bảo lãnh/hạn chế
  • hỗ trợ bảo vệ đa người dùng (thay đổi kích thước tập tin trả về 0 byte không rác)
  • đổi tên và xóa các tập tin mở (Windows không làm điều đó)
  • tên tập tin hỗ trợ tất cả các byte bên cạnh '/' và \ 0

Đôi khi nó cũng có nghĩa là hỗ trợ symlink/hardlink cũng như tên tệp và con trỏ tệp 32 bit (tối thiểu). Trong một số trường hợp, nó cũng được sử dụng để tham chiếu các tính năng API cụ thể như khóa fcntl(), mmap() hoặc truncate() hoặc AIO.

+0

eckes, bạn có thể, vui lòng , làm rõ những gì bạn có nghĩa là "hỗ trợ bảo vệ đa người dùng"? – pva

+1

@pva vâng về cơ bản những gì tôi đã viết trong niềng răng - tôi không chắc chắn nếu có một tên chính thức tốt hơn cho nó. Điều đó không có cách nào để truy cập vào các tập tin rác từ các tập tin đã xóa. Sau này có thể xảy ra với FAT trên DOS nếu bạn thay đổi kích thước tệp. – eckes

3

Trả lời câu hỏi của bạn một cách rất khách quan:

1. không hệ thống tất cả các tập tin cần phải được posix phù hợp? Thực ra là không. Trong thực tế POSIX định nghĩa một số tiêu chuẩn cho các hệ thống hoạt động nói chung. Tốt để có, nhưng không thực sự cần thiết.

2. các ứng dụng cũng được yêu cầu phải tuân thủ posix? No.

3. có hệ thống tệp không thuộc loại posix nào không? HDFS (hệ thống tệp hadoop)

+0

cảm ơn thông tin – OpenFile

2

Khi tôi nghĩ về tuân thủ POSIX cho hệ thống tệp được phân phối, tôi sử dụng tiêu chuẩn chung là hệ thống tệp phân tán là POSIX tuân thủ nếu nhiều quá trình chạy trên các nút khác nhau nhìn thấy hành vi tương tự đang chạy trên cùng một nút bằng cách sử dụng hệ thống tệp cục bộ. Về cơ bản, điều này có hai ý nghĩa:

  1. Nếu hệ thống có nhiều bộ đệm, cần đảm bảo tính nhất quán của bộ đệm.
    • Các cơ chế khác nhau để thực hiện việc này bao gồm khóa và cho thuê. Một ví dụ về hành vi không chính xác trong trường hợp này sẽ là một nhà văn viết thành công trên một nút nhưng sau đó một người đọc trên một nút khác sẽ nhận dữ liệu cũ. Tuy nhiên, hãy lưu ý rằng nếu người viết/người đọc độc lập đua nhau thì không có chính xác hành vi được xác định vì họ không biết hoạt động nào sẽ xảy ra trước tiên.Nhưng nếu họ đang phối hợp với nhau thông qua một số cơ chế như nhắn tin thì sẽ không đúng nếu người viết hoàn thành (đặc biệt nếu nó phát ra cuộc gọi đồng bộ), gửi một thông báo tới người đọc đã nhận được thành công bởi người đọc và rồi người đọc đọc và nhận dữ liệu cũ.
  2. Nếu dữ liệu bị sọc trên nhiều máy chủ dữ liệu, hãy đọc và viết khoảng thời gian nhiều sọc phải là nguyên tử.
    • Ví dụ: khi người đọc đọc qua các sọc cùng lúc với một người viết viết trên cùng một sọc đó, người đọc phải nhận tất cả các sọc như trước khi viết hoặc tất cả các sọc như sau khi viết . Hành vi sai sẽ là để người đọc nhận được một số cũ và một số mới.
    • Trái với điều trên, hành vi này phải hoạt động chính xác ngay cả khi người viết/người đọc đang đua.

Mặc dù ví dụ của tôi là đọc/ghi vào một tập tin duy nhất, hành vi đúng cũng bao gồm viết/ghi vào một tập tin duy nhất cũng như đọc/viết và viết/ghi vào không gian tên thứ bậc qua các cuộc gọi như stat/readdir/mkdir/unlink/etc.

Các vấn đề liên quan