Ý nghĩa của các POSIXIX là gì?


899

POSIX là gì? Tôi đã đọc bài viết Wikipedia và tôi đọc nó mỗi khi tôi gặp thuật ngữ này. Thực tế là tôi không bao giờ thực sự hiểu nó là gì.

Ai đó có thể vui lòng giải thích cho tôi bằng cách giải thích "sự cần thiết của POSIX" không?



tham chiếu định nghĩa nhanh - whatis.techtarget.com/def định / từ
ký sinh

Câu trả lời:


622

POSIX là một nhóm các tiêu chuẩn, được chỉ định bởi IEEE , để làm rõ và thống nhất các giao diện lập trình ứng dụng (và các vấn đề phụ trợ, như các tiện ích vỏ dòng lệnh) được cung cấp bởi các hệ điều hành Unix-y. Khi bạn viết các chương trình của mình dựa trên các tiêu chuẩn POSIX, bạn có thể khá chắc chắn rằng có thể chuyển chúng dễ dàng giữa một nhóm lớn các dẫn xuất Unix (bao gồm cả Linux, nhưng không giới hạn ở nó!); nếu và khi bạn sử dụng một số API Linux không được chuẩn hóa như một phần của Posix, bạn sẽ gặp khó khăn hơn nếu và khi bạn muốn chuyển chương trình hoặc thư viện đó sang các hệ thống Unix-y khác (ví dụ: MacOSX) trong tương lai.


34
Không, tiêu chuẩn ở cấp API - mỗi cuộc gọi được chỉ định có thể được triển khai trong kernel hoặc trong thư viện C theo cách gọi khác và điều đó cũng tốt cho Posix (và cho các chương trình của bạn nữa ;-). MacOSX tuân thủ Posix, xem devworld.apple.com/leopard/overview/osfoundations.html . Đối với Windows, hãy xem en.wikipedia.org/wiki/POSIX#POSIX_for_Windows : Hiện tại, việc tuân thủ Posix chỉ được bao gồm trong các phiên bản Enterprise và Ultimate (không phải trong các phiên bản rẻ hơn! -), mặc dù bạn có thể có được partways w / Cygwin, en.wikipedia. org / wiki / Cygwin .
Alex Martelli

23
Nhận xét của bạn là thiếu sót, vì thị phần của Microsoft trên máy tính để bàn, ít nhất, làm cho nó trở thành "những gì thế giới theo sau".
Jed Smith

29
Tôi nghĩ điều mà móng vuốt có nghĩa là Microsoft không nỗ lực nhiều để có thể tương tác với các nền tảng khác.
mipadi

12
@deltaray nắm lấy, mở rộng và dập tắt . MS java (java.util. Java.security, java.io, java.lang và java.awt), Internet Explorer (gần như đã nói 'exploder') và .NET (vâng, tôi biết họ đã phát hành một phần nguồn cho .NET, nhưng giấy phép của nó bị hạn chế và nó chưa phải là cổng linux. Mono chưa hoàn chỉnh). Ngoài ra, bằng sáng chế exFAT . Bạn hoàn toàn chính xác.
Wyatt8740

25
Microsoft's market share on desktops, at least, makes it "what the world follows"- Thật thú vị khi lưu ý có bao nhiêu thứ đã thay đổi kể từ nhận xét này từ năm 2009 :)
GMA

516

Những điều quan trọng nhất POSIX 7 định nghĩa

  1. API C

    Mở rộng rất nhiều ANSI C với những thứ như:

    • nhiều hoạt động tập tin: mkdir, dirname, symlink, readlink, link(liên kết cứng), poll(), stat, sync,nftw()
    • xử lý và đề: fork, execl, wait, pipe, semaphors sem_*, chia sẻ bộ nhớ ( shm_*), kill, các thông số lập kế hoạch ( nice, sched_*), sleep, mkfifo,setpgid()
    • mạng: socket()
    • quản lý bộ nhớ: mmap, mlock, mprotect, madvise,brk()
    • tiện ích: biểu thức chính quy ( reg*)

    Các API đó cũng xác định các khái niệm hệ thống cơ bản mà chúng phụ thuộc vào, ví dụ: forkyêu cầu khái niệm về một quy trình.

    Nhiều hệ thống Linux cuộc gọi tồn tại để thực hiện một chức năng cụ thể POSIX C API và làm cho Linux phù hợp, ví dụ như sys_write, sys_read, ... Nhiều người trong số những syscalls cũng có phần mở rộng Linux cụ thể tuy nhiên.

    Triển khai máy tính để bàn Linux chính: glibc, trong nhiều trường hợp chỉ cung cấp trình bao bọc nông cho các cuộc gọi hệ thống.

  2. Tiện ích CLI

    Ví dụ như: cd, ls, echo, ...

    Nhiều tiện ích này là trực tiếp vỏ kết thúc trước cho một hàm C API tương ứng, ví dụ mkdir.

    Major Linux thực hiện máy tính để bàn: GNU coreutils cho những cái nhỏ, các dự án GNU riêng biệt cho các công trình lớn: sed, grep, awk, ... Một số tiện ích CLI được thực hiện bởi Bash như built-in .

  3. Ngôn ngữ vỏ

    Ví dụ, a=b; echo "$a"

    Triển khai máy tính để bàn Linux chính: GNU Bash .

  4. Biến môi trường

    Ví dụ như: HOME, PATH.

    PATH ngữ nghĩa tìm kiếm được chỉ định , bao gồm cả cách gạch chéo ngăn PATHtìm kiếm .

  5. Trạng thái thoát chương trình

    ANSI C nói 0hoặc EXIT_SUCCESSđể thành công, EXIT_FAILUREcho sự thất bại và để lại phần thực hiện còn lại được xác định.

    POSIX cho biết thêm:

    • 126: lệnh tìm thấy nhưng không thể thực thi.

    • 127: lệnh không tìm thấy.

    • > 128: chấm dứt bởi một tín hiệu.

      Nhưng POSIX dường như không chỉ định 128 + SIGNAL_IDquy tắc được Bash sử dụng: /unix/99112/default-exit-code-when- Process-is-termated

  6. Biểu hiện thông thường

    Có hai loại: BRE (Cơ bản) và ERE (Mở rộng). Basic không được dùng nữa và chỉ được giữ để không phá vỡ API.

    Các hàm này được triển khai bởi các hàm C API và được sử dụng trong các tiện ích CLI, ví dụ như grepchấp nhận BRE theo mặc định và ERE với -E.

    Ví dụ: echo 'a.1' | grep -E 'a.[[:digit:]]'

    Triển khai Linux chính: glibc thực hiện các chức năng theo regex.h mà các chương trình như grepcó thể sử dụng làm phụ trợ.

  7. Cấu trúc thư mục

    Ví dụ như: /dev/null,/tmp

    Linux FHS mở rộng đáng kể POSIX.

  8. Tên tập tin

    • / là dải phân cách
    • NUL không thể được sử dụng
    • .cwd, ..cha mẹ
    • tên tập tin di động
      • sử dụng tối đa 14 ký tự và 256 cho đường dẫn đầy đủ
      • chỉ có thể chứa: a-zA-Z0-9._-

    Xem thêm: tuân thủ posix cho hệ thống tập tin là gì?

  9. Các quy ước API tiện ích dòng lệnh

    Không bắt buộc, được sử dụng bởi POSIX, nhưng hầu như không ở đâu khác, đáng chú ý là không có trong GNU. Nhưng sự thật, nó quá hạn chế, ví dụ: chỉ các lá thư đơn (ví dụ -a), không có phiên bản dài gạch nối kép (ví dụ --all).

    Một vài quy ước được sử dụng rộng rãi:

    • - có nghĩa là stdin nơi một tập tin được mong đợi
    • --chấm dứt cờ, ví dụ ls -- -lđể liệt kê một thư mục có tên-l

    Xem thêm: Có các tiêu chuẩn cho các đối số và chuyển đổi dòng lệnh Linux không?

  10. "POSIX ACLs" (Danh sách điều khiển truy cập), ví dụ như được sử dụng làm phụ trợ cho setfacl.

    Điều này đã được rút nhưng nó đã được thực hiện trong một số HĐH, kể cả trong Linux vớisetxattr .

Ai phù hợp với POSIX?

Nhiều hệ thống theo sát POSIX, nhưng một số ít thực sự được chứng nhận bởi Open Group duy trì tiêu chuẩn. Những người được chứng nhận đáng chú ý bao gồm:

  • OS X (Apple) X là viết tắt của cả 10 và UNIX. Là hệ thống POSIX đầu tiên của Apple, được phát hành vào khoảng năm 2001. Xem thêm: OSX có phải là HĐH POSIX không?
  • AIX (IBM)
  • HP-UX (HP)
  • Solaris (Oracle)

Hầu hết các bản phân phối Linux đều rất tuân thủ, nhưng không được chứng nhận vì họ không muốn trả tiền kiểm tra tuân thủ. K-UX Inspur củaEulerOS của Huawei là hai ví dụ chứng nhận.

Danh sách chính thức của các hệ thống được chứng nhận được tìm thấy tại: https://www.opengroup.org/openbrand/register/ và cũng tại trang wiki .

các cửa sổ

Windows triển khai POSIX trên một số bản phân phối chuyên nghiệp.

Vì nó là một tính năng tùy chọn, các lập trình viên không thể dựa vào nó cho hầu hết các ứng dụng người dùng cuối.

Hỗ trợ không được dùng trong Windows 8:

Vào năm 2016, một API giống như Linux chính thức mới có tên là "Hệ thống con Windows cho Linux" đã được công bố. Nó bao gồm các cuộc gọi hệ thống Linux, ELF đang chạy, các bộ phận của /prochệ thống tệp, Bash, GCC, (TODO có thể là glibc?), apt-getVà hơn thế nữa: https://channel9.msdn.com/Events/Build/2016/P488 vì vậy tôi tin rằng nó sẽ cho phép Windows chạy nhiều, nếu không phải tất cả, của POSIX. Tuy nhiên, nó tập trung vào các nhà phát triển / triển khai thay vì người dùng cuối. Cụ thể, không có kế hoạch cho phép truy cập vào GUI Windows.

Tổng quan lịch sử về khả năng tương thích Microsoft POSIX chính thức: http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-poseix-subystem/

Cygwin là một dự án bên thứ ba GPL nổi tiếng với mục đích "cung cấp chức năng API POSIX đáng kể" cho Windows, nhưng yêu cầu bạn "xây dựng lại ứng dụng của mình từ nguồn nếu bạn muốn nó chạy trên Windows". MSYS2 là một dự án liên quan dường như bổ sung thêm nhiều chức năng trên đầu trang của Cygwin.

Android

Android có thư viện C (Bionic) riêng không hỗ trợ đầy đủ POSIX như Android O: Android có tương thích POSIX không?

Mức thưởng

Các Linux Standard Base mở rộng hơn nữa POSIX.

Sử dụng các chỉ mục không có khung, chúng dễ đọc và dễ tìm kiếm hơn nhiều: http://pub.opengroup.org/onlinepub/9699919799/nfindex.html

Nhận phiên bản nén đầy đủ của các trang HTML để grepping: Danh sách các hàm POSIX C API nằm ở đâu?


18
Ví dụ tuyệt vời, nếu bạn có một định nghĩa cũng như câu trả lời được chấp nhận thì đây sẽ là câu trả lời hàng đầu.
Marc

8
@Marc cảm ơn! Tôi cố gắng không lặp lại những gì được nói trong các câu trả lời khác vì mọi người có thể đã đọc những câu đó và để tránh trùng lặp ;-) Đây là một vấn đề nan giải đã biết: meta.stackoverflow.com/questions/305645/
Ciro Santilli 病毒 六四事件法轮功

1
Ý tưởng tốt để thực sự giải thích những gì POSIX bao gồm (và những gì không).
sleske

4
Ở mọi nơi trong tài liệu, các tài liệu tham khảo về "tuân thủ POSIX" xuất hiện và định nghĩa điển hình của người POSIX tìm thấy là "một bộ tiêu chuẩn cho khả năng tương tác giữa các hệ điều hành giống Unix". Mặc dù hữu ích, định nghĩa này để lại rất nhiều nghi ngờ, đặc biệt liên quan đến các tính năng được dự kiến ​​sẽ tương tác. Chắc chắn, bạn có thể đi và đọc toàn bộ thông số POSIX để đi sâu vào chi tiết (và dành nhiều thời gian cho việc đó). Nhưng, câu trả lời này cung cấp bản tóm tắt rất cần thiết để có được bức tranh lớn về phạm vi của POSIX. Đặc biệt cảm ơn Ciro đã dành thời gian để viết nó!
ARX

Cũng có thể tốt khi thêm một số đảm bảo Posix về các loại số nguyên. Tôi không biết chính xác những gì được và không được chỉ định, nhưng tôi biết rằng tối thiểu Posix yêu cầu sự tồn tại của uint8_t, uint16_t, uint32_t và các loại đã ký tương ứng. Tôi không chắc liệu nó có đảm bảo rằng các loại như "int" có kích cỡ bằng hai không và một hệ thống sẽ không làm điều gì khó chịu như có "int" với 32 bit giá trị, 1 bit dấu và 31 bit đệm [vì vậy việc tăng một uint32_t có thể mang lại UB]; nếu bạn có Tiêu chuẩn tiện dụng, có thể rất tốt để nói những gì được và không được đảm bảo về vấn đề đó.
supercat

74

POSIX là:

POSIX (phát âm / pɒzɪks /) hoặc "Giao diện hệ điều hành di động [cho Unix]" 1 là tên của một nhóm các tiêu chuẩn liên quan được chỉ định bởi IEEE để xác định giao diện lập trình ứng dụng (API), cùng với giao diện vỏ và tiện ích cho phần mềm tương thích với các biến thể của hệ điều hành Unix, mặc dù tiêu chuẩn có thể áp dụng cho bất kỳ hệ điều hành nào.

Về cơ bản, đây là một bộ các biện pháp để giảm bớt nỗi đau của sự phát triển và sử dụng các hương vị khác nhau của UNIX bằng cách có một API (hầu hết) chung và các tiện ích. Tuân thủ POSIX hạn chế cũng mở rộng cho các phiên bản Windows khác nhau.


1. Ý bạn là POSIX nói rằng tất cả các hệ điều hành * nix (hạt nhân) nên có ít nhất các tập hợp các cuộc gọi hệ thống này. đúng? 2. WINDOWS / MAC có tuân theo POSIX không? Nếu / Ifnot, WINDOWS (95,98,2000, xp, vista, 7) có tuân theo một số tiêu chuẩn chung (có thể là tiêu chuẩn độc quyền của riêng họ) không? Nói cách khác, POSIX trong thế giới của Microsoft ==?
móng vuốt

1
Về cơ bản, nó "là" một bộ các biện pháp để giảm bớt nỗi đau của sự phát triển. ĐƯỢC ??
móng vuốt

5
Tôi đã đặt câu hỏi về việc sử dụng từ này , nhưng nó vẫn còn gây tranh cãi. Để trả lời câu hỏi của bạn: (1) không, POSIX hoàn toàn không làm gì với kernel, nó chỉ mô tả cách thức hoạt động của nó; (2) OS X là BSD và khá tuân thủ POSIX, nhưng có các vùng màu xám. Windows 2008 gần nhất với khiếu nại POSIX; không có tương đương với POSIX trong thế giới Microsoft.
Jed Smith

1
@claws: Đừng có ý làm bẩn khu vực dưới câu trả lời của cletus ... nhưng. Tôi đã liên kết POSIX.1-2008 trong câu trả lời của mình ... ngay tại đó.
Jed Smith

3
@Jed Smith, không có khu vực màu xám nào tuân thủ Mac OS X; Mac OS X được chứng nhận tuân thủ Thông số kỹ thuật UNIX đơn v3, một tiêu chuẩn trong đó POSIX là tập hợp con.
Michael Aaron Safyan

43

Hãy để tôi đưa ra lời giải thích "không chính thức".

POSIX là một bộ các tiêu chuẩn cố gắng phân biệt các hệ thống "UNIX" và UNIX giống với các hệ thống không tương thích với chúng. Nó được tạo ra bởi chính phủ Hoa Kỳ cho mục đích mua sắm. Ý tưởng là các mua sắm liên bang Hoa Kỳ cần một cách để xác định hợp pháp các yêu cầu đối với các loại giá thầu và hợp đồng khác nhau theo cách có thể được sử dụng để loại trừ các hệ thống mà một cơ sở mã hoặc nhân viên lập trình hiện tại sẽ KHÔNG thể mang theo được.

Vì POSIX đã được viết trên thực tế ... để mô tả một tập hợp các hệ thống cạnh tranh tương tự lỏng lẻo ... nó KHÔNG được viết theo cách có thể được thực hiện.

Vì vậy, ví dụ, NT của Microsoft được viết với đủ sự phù hợp POSIX để đủ điều kiện cho một số giá thầu ... mặc dù hệ thống con POSIX về cơ bản là vô dụng về tính di động thực tế và khả năng tương thích với các hệ thống UNIX.

Nhiều tiêu chuẩn khác cho UNIX đã được viết trong nhiều thập kỷ. Những thứ như Spec1170 (được chỉ định mười một trăm bảy mươi lệnh gọi hàm phải được triển khai tương thích) và các hóa thân khác nhau của SUS (Đặc tả UNIX đơn).

Đối với hầu hết các "tiêu chuẩn" này không phù hợp với bất kỳ ứng dụng kỹ thuật thực tế nào. Chúng tồn tại nhiều nhất cho tranh luận, tranh luận pháp lý và các lý do rối loạn chức năng khác.


1
Vậy thì tại sao Linux triển khai hầu hết POSIX, bao gồm nhiều phần mở rộng?
ninjalj

8
@ninjalj: Linux được viết để thực hiện một tập hợp các hàm giống như UNIX. Làm như vậy trong khi tuân thủ POSIX có ý nghĩa hoàn hảo. Tuy nhiên, quan điểm của tôi là POSIX không được tạo ra như một đặc điểm kỹ thuật để triển khai các hệ điều hành mới ... nó được tạo ra như một cách để nhân viên mua sắm của chính phủ Hoa Kỳ phân biệt giữa những người đủ điều kiện tham gia đấu giá nhất định với những người không tham gia . Trọng tâm trong Linux là cung cấp các tính năng có thể sử dụng theo cách tương thích hợp lý, mạnh mẽ và hiệu quả. POSIX không hoàn toàn là một tai nạn trên đường đi.
Jim Dennis

3
Khá khéo léo khi bạn tuyên bố rằng POSIX đã được viết trên thực tế! Đó là dấu hiệu của một tổ chức phát triển tiêu chuẩn tốt (SDO) nơi không đạt được sự đồng thuận cho đến khi có ít nhất một triển khai tuân thủ tồn tại.
fpmurphy

4
@fpmurphy: Tạo một đặc tả bài thực tế dựa trên một hoặc hai triển khai có thể tương tác là tiêu chuẩn cho IETF ... các tiêu chuẩn giao thức mạng tương tác trên các khớp nối lỏng lẻo. Nó không phải là một quá trình thành công cho tiêu chuẩn hóa hệ điều hành. API giữa các chương trình và hệ thống (kernel hoặc microkernel và các máy chủ hệ thống con của nó) được liên kết chặt chẽ hơn nhiều so với các máy khách và máy chủ hoặc các thiết bị ngang hàng qua mạng. (Tôi không nói là không thể; chỉ đơn thuần chỉ ra rằng có những khác biệt và lịch sử đã không cho thấy điều sau này đầy hứa hẹn).
Jim Dennis

2
Những nỗ lực của IEEE để xác định POSIX trở lại vào năm 1985 đã được Chính phủ Hoa Kỳ thúc đẩy. Làm một số nghiên cứu, đọc một cuốn sách lịch sử hoặc một cái gì đó.
rustyx

29

POSIX là một tiêu chuẩn cho các hệ điều hành được cho là giúp viết phần mềm đa nền tảng dễ dàng hơn. Đây là một vấn đề đặc biệt lớn trong thế giới Unix.


15
Nó không chỉ "được cho là" giúp viết mã đa nền tảng dễ dàng hơn, nó giúp việc viết mã đa nền tảng dễ dàng hơn. Ngoại lệ duy nhất là Windows, bởi vì Microsoft nghĩ rằng nó tốt hơn mọi người và không cần phải tuân thủ. Tuy nhiên, tôi dự đoán điều này sẽ chống lại họ, đặc biệt là khi Mac và Linux giành được nhiều thị phần hơn. Nếu họ thực sự dành cho "nhà phát triển, nhà phát triển, nhà phát triển", họ sẽ nhận ra rằng các nhà phát triển muốn tuân thủ UNIX.
Michael Aaron Safyan

Dựa trên những gì tôi đã nghe từ những người làm việc với nó chặt chẽ hơn tôi từng làm, nó có thể giúp mọi việc dễ dàng hơn, nhưng chắc chắn nó không đủ cho ấn tượng viết một lần, chạy trên mọi thứ POSIX mọi người nhận được khi họ nghe nó là "tiêu chuẩn" cho các hệ điều hành.
Hank Gay

6
Họ không nghĩ họ "tốt hơn những người khác"; họ biết họ lớn hơn những người khác. Đó cũng là lý do tại sao họ sẽ thay đổi giai điệu khi mất thị phần. Nó không phải là duy nhất đối với họ, ví dụ, Netscape bắt đầu quan tâm nhiều hơn đến các tiêu chuẩn web khi chúng không còn phổ biến nhất.
Ken

Viết một ứng dụng để chỉ sử dụng API POSIX giúp việc chuyển giữa các hệ điều hành giống Unix và Unix khác nhau dễ dàng hơn nhiều. Tuy nhiên, đây là một tiêu chuẩn đồng thuận mẫu số chung thấp nhất - vì vậy các tiện ích hoặc ứng dụng là hệ điều hành hoặc phần cứng cụ thể thường sẽ yêu cầu một số cách viết lại.
fpmurphy

2
@Ken và đó là lý do tại sao chúng ta không nên để Chromium của Google trở nên quá thoải mái.
Wyatt8740

29

POSIX là một bộ các tiêu chuẩn được đưa ra bởi IEEE và Nhóm mở mô tả cách một Unix lý tưởng sẽ hoạt động. Các lập trình viên, người dùng và quản trị viên đều có thể làm quen với tài liệu POSIX và mong đợi một Unix-khiếu nại POSIX sẽ cung cấp tất cả các phương tiện tiêu chuẩn được đề cập.

Vì mọi Unix đều làm mọi thứ hơi khác một chút - Solaris, Mac OS X, IRIX, BSD và Linux đều có những điểm kỳ quặc - POSIX đặc biệt hữu ích với những người trong ngành vì nó xác định môi trường tiêu chuẩn để hoạt động. Ví dụ: hầu hết các chức năng trong thư viện C đều dựa trên POSIX; do đó, một lập trình viên có thể sử dụng một ứng dụng trong ứng dụng của mình và hy vọng nó sẽ hoạt động giống nhau trên hầu hết các Unices.

Tuy nhiên, các khu vực khác nhau của Unix thường là trọng tâm, thay vì các khu vực tiêu chuẩn.

Điều tuyệt vời về POSIX là bạn có thể tự mình đọc nó:

Thông số kỹ thuật cơ sở nhóm mở Vấn đề 7

Vấn đề 7 được gọi là POSIX.1-2008 và có những điều mới trong đó - tuy nhiên, Google-fu cho POSIX.1 và như vậy sẽ cho phép bạn xem toàn bộ lịch sử đằng sau Unix là gì.


2
Tôi nghĩ rằng bạn đang sử dụng thuật ngữ "UNIX" không chính xác. UNIX bây giờ đề cập đến Đặc tả UNIX đơn và bất kỳ hệ điều hành UNIX nào cũng là một hệ điều hành phù hợp với Đặc tả UNIX đơn. Có lẽ bạn có nghĩa là giống như UNIX?
Michael Aaron Safyan

8
@Michael: Đưa ra nhận xét của bạn trong các câu trả lời khác, rõ ràng bạn là một người rất phân cực với những ý kiến ​​không chính xác mang tính xây dựng. Nhận xét cụ thể này rất mang tính mô phạm và ý nghĩa của tôi được truyền đạt bất kể sự lựa chọn nhãn mà bạn có thể không đồng ý. Ngoài ra, Windows tuân thủ POSIX trong các phiên bản cao cấp hơn. Hãy hít thở và lùi lại, làm ơn.
Jed Smith

1
@Jed Smith, ý kiến ​​mạnh mẽ sang một bên, hàm ý của bài đăng là một số hệ điều hành được chứng nhận tuân thủ UNIX không ... vì vậy, tôi nghĩ thật công bằng khi nói rằng điều đó là sai lệch. Ngoài ra, liên quan đến Windows, miễn là có các phiên bản không tuân thủ, các nhà phát triển không thể dựa vào POSIX khi nhắm mục tiêu nền tảng Windows, từ đó phủ nhận toàn bộ mục đích của việc có POSIX.
Michael Aaron Safyan

Unix là một hệ điều hành. UNIX là một thương hiệu được tổ chức bởi The Open Group. Các hệ thống được chứng nhận cho các cấu hình thương hiệu UNIX95, UNIX98 hoặc UNIX03, phù hợp với một phiên bản cụ thể của Đặc tả UNIX đơn tạo thành phần lớn các yêu cầu về thương hiệu, có thể sử dụng thuật ngữ UNIX.
fpmurphy

6

Năm 1985, các cá nhân từ các công ty trong ngành công nghiệp máy tính đã cùng nhau phát triển tiêu chuẩn POSIX (Giao diện hệ điều hành di động cho môi trường máy tính), chủ yếu dựa trên Định nghĩa giao diện UNIX System V (SVID) và các nỗ lực tiêu chuẩn hóa trước đó. Những nỗ lực này được thúc đẩy bởi chính phủ Hoa Kỳ, nơi cần một môi trường điện toán tiêu chuẩn để giảm thiểu chi phí đào tạo và mua sắm. Được phát hành vào năm 1988, POSIX là một nhóm các tiêu chuẩn của IEEE xác định các giao diện API, shell và tiện ích cho một hệ điều hành. Mặc dù nhắm vào các hệ thống giống như UNIX, các tiêu chuẩn có thể áp dụng cho bất kỳ hệ điều hành tương thích nào. Giờ đây, khi các tiêu chuẩn này đã được chấp nhận, các nhà phát triển phần mềm có thể phát triển các ứng dụng chạy trên tất cả các phiên bản tuân thủ của UNIX, Linux,

Từ cuốn sách: Hướng dẫn thực hành về Linux


4

Posix giống như một hệ điều hành, nó là một "tiêu chuẩn hệ điều hành". Bạn có thể tưởng tượng nó như một hệ điều hành tưởng tượng, thực sự không tồn tại, nhưng nó có một tài liệu. Các giấy tờ này là "tiêu chuẩn posix", được định nghĩa bởi IEEE, là tổ chức tiêu chuẩn lớn của Hoa Kỳ. Các hệ điều hành triển khai đặc tả này là "Tương thích Posix".

Các quy định của chính phủ thích các giải pháp tuân thủ Posix trong các khoản đầu tư của họ, do đó, tuân thủ Posix có lợi thế tài chính đáng kể, đặc biệt đối với các công ty CNTT lớn của Hoa Kỳ.

Phần thưởng cho một hệ điều hành tuân thủ hoàn toàn posix, đó là một đảm bảo rằng nó sẽ biên dịch và chạy tất cả các ứng dụng tuân thủ Posix một cách liền mạch.

Linux là một trong những nổi tiếng nhất. OSX, Solaris, NetBSD và Windows NT cũng chơi ở đây. Free- và OpenBSD chỉ "gần như" tuân thủ Posix. Sự tuân thủ theo nguyên tắc của WinNT chỉ là một giải pháp giả để tránh quy định này của chính phủ ở trên.


3

Tiêu chuẩn này cung cấp một cơ sở chung cho các hệ điều hành giống Unix. Nó chỉ định cách shell nên hoạt động, những gì mong đợi từ các lệnh như ls và grep và một số thư viện C mà các tác giả C có thể mong đợi có sẵn.

Ví dụ: các đường ống mà người dùng dòng lệnh sử dụng để xâu chuỗi các lệnh lại với nhau được chỉ định chi tiết ở đây, có nghĩa là chức năng popen (mở ống) của C là tiêu chuẩn POSIX, không phải tiêu chuẩn ISO C.


3

POSIX là viết tắt của Giao diện hệ điều hành di động và là một tiêu chuẩn của IEEE được thiết kế để hỗ trợ tính di động của ứng dụng. POSIX là một nỗ lực của một nhóm các nhà cung cấp để tạo ra một phiên bản tiêu chuẩn duy nhất của UNIX.


0

POSIX định nghĩa bộ tiêu chuẩn cho hệ điều hành hoặc chương trình. Mục tiêu là viết phần mềm mới tương thích với các hệ thống giống như UNIX.

Ví dụ, một chương trình chạy trên Linux cũng có thể được biên dịch và chạy trên các hệ thống tương tự UNIX khác như Solaris, HP-UX và AIX, v.v.

Các ví dụ phổ biến nhất GNU Bashlà 100% tuân thủ POSIX và gawktiện ích.


0

Posix chi phối khả năng tương tác, tính di động và trong các lĩnh vực khác như việc sử dụng và cơ chế của fork, quyền và các tiêu chuẩn hệ thống tệp như / etc, / var, / usr, v.v. . Do đó, khi các nhà phát triển viết chương trình theo hệ thống tương thích Posix, chẳng hạn như Linux, thông thường, không phải lúc nào cũng được bảo đảm để chạy trên một hệ thống tuân thủ posix khác như hệ thống AIX của IBM hoặc các biến thể thương mại khác của Unix. Posix là một điều tốt để có vì nó giúp giảm bớt sự phát triển phần mềm cho tính di động tối đa mà nó phấn đấu. Hy vọng câu trả lời này có ý nghĩa.

Cảm ơn Jed Smith & Tinkertim đã chỉ ra lỗi của tôi - xấu của tôi !!! :


Các tiêu chuẩn hệ thống tập tin được xử lý bên ngoài POSIX.
Jed Smith

Bạn đang nhầm lẫn POSIX với những thứ như LSB (Cơ sở tiêu chuẩn Linux). Hai (hầu hết) các hệ điều hành tuân thủ POSIX sẽ là FBSD và Linux, tuy nhiên cả hai đều có tổ chức hệ thống tệp và cài đặt thư viện mặc định khá khác nhau.
Tim Post

0

Một đặc tả (bản thiết kế) về cách làm cho một hệ điều hành tương thích với hệ điều hành UNIX muộn (xin Chúa ban phước cho anh ấy!). Đây là lý do tại sao macOS và GNU / Linux có các dòng lệnh đầu cuối, GUI, thư viện, v.v ... bởi vì cả hai đều được thiết kế theo kế hoạch chi tiết POSIX.

POSIX không cho các kỹ sư và lập trình viên biết cách viết mã mà phải viết mã gì.


-1

Một số sự thật về POSIX không quá sáng sủa.

POSIX cũng là giao diện gọi hệ thống hoặc API và đã gần 30 năm tuổi.

Nó được thiết kế để truy cập dữ liệu tuần tự vào bộ nhớ cục bộ , sử dụng các máy tính đơn lẻ với CPU đơn.

Bảo mật không phải là mối quan tâm lớn trong POSIX theo thiết kế, dẫn đến nhiều cuộc tấn công tình trạng chủng tộc trong nhiều năm và buộc các lập trình viên phải khắc phục những hạn chế này.

Các lỗi nghiêm trọng vẫn đang được phát hiện, các lỗi có thể đã được khắc phục bằng thiết kế API POSIX an toàn hơn.

POSIX hy vọng người dùng sẽ phát hành một cuộc gọi đồng bộ tại một thời điểm và chờ kết quả trước khi thực hiện cuộc gọi tiếp theo. Các lập trình viên ngày nay hy vọng sẽ đưa ra nhiều yêu cầu không đồng bộ tại một thời điểm để cải thiện thông lượng tổng thể.

API đồng bộ này đặc biệt xấu khi truy cập các đối tượng từ xa và đám mây, nơi có độ trễ cao.


API hạt nhân đồng bộ không cần có nghĩa là các quy trình đơn luồng và IO được tuần tự hóa. Nó cũng không có gì để làm với các máy SMP. Những điều này hoàn toàn không liên quan. (Mặc dù tôi đồng ý rằng API hạt nhân đồng bộ là không tối ưu, nhưng không quá nặng nề như trong bài đăng của bạn.)
peterh - Tái lập Monica
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.