POSIX bất ngờ. Lịch sử phát triển của tiêu chuẩn POSIX. Ai là ai trong phát triển POSIX

POSIX (giao diện hệ điều hành di động) là một tiêu chuẩn mô tả giao diện giữa hệ điều hành và một chương trình ứng dụng. Mục đích của việc tạo ra tiêu chuẩn này là để đảm bảo tính tương thích của các hệ điều hành giống unix, cũng như tính di động của chương trình ở cấp mã nguồn. Tuy nhiên, tiêu chuẩn POSIX không chỉ có thể được sử dụng bởi các hệ thống unix. Tên POSIX được đề xuất bởi Richard Stallman. Phát âm là "poix" là giao diện dành cho hệ điều hành Unix di động.

Một ít lịch sử

Lựa chọn đầu tiên Tiêu chuẩn POSIX là IEEE Std 1003. Nó được phát hành vào năm 1988 và xác định giao diện giữa ngôn ngữ lập trình C và vỏ nhân của các hệ thống giống unix.

Năm 1990, phiên bản mới của IEEE Std 1003.2 được phát hành. So với phiên bản đầu tiên, tài liệu mới đã có những thay đổi nhỏ.

Năm 1992, tiêu chuẩn IEEE Std 1003.2 gồm hai tập được phát hành. Tài liệu mô tả một trình thông dịch lệnh và hơn một trăm tiện ích.

Phiên bản tiếp theo, phát hành năm 1993, trở thành một bổ sung nhỏ cho các phiên bản trước: thông tin xuất hiện trên đồng bộ hóa tệp, ngữ nghĩa, cài đặt thời gian, bộ đếm thời gian, hàng đợi tin nhắn, I/O không đồng bộ.

Năm 1995, một tiêu chuẩn khác dành riêng cho luồng đã được phát hành và tài liệu phiên bản năm 1996 là một loại bổ sung cho các phiên bản trước.

Tiêu chuẩn POSIX năm 1999 mô tả các phần mở rộng thời gian thực bổ sung.

Năm 2001, một tiêu chuẩn đã được phát hành nhằm thống nhất tất cả các phiên bản trước đó. Nó đã được quyết định sử dụng nó làm cơ sở cho việc áp dụng các tiêu chuẩn trong tương lai.

Phiên bản hiện tại của POSIX.1, được phê duyệt năm 2008, được sử dụng.

Ý tưởng cơ bản của tiêu chuẩn POSIX

Theo các quy định đã được ghi thành văn bản, để tương tác chính xác với các ứng dụng, HĐH phải có các thành phần sau:

  • công cụ mạng;
  • công cụ phát triển;
  • luồng điều khiển;
  • công cụ thời gian thực;
  • dịch vụ trọn gói;
  • tập tin tiêu đề;
  • giao diện toán học;
  • giao diện kế thừa.

Các tính năng của hệ điều hành tuân thủ tiêu chuẩn POSIX

  • phân biệt quyền của người dùng và nhóm, cũng như root siêu người dùng với các quyền đặc quyền;
  • sự hiện diện của một cái cây hệ thống tập tin, có một gốc duy nhất /;
  • các gói hệ thống và phần mềm được cung cấp dưới dạng tập tin văn bản– nghĩa là, cấu hình tệp có thể được thay đổi bằng cách chỉnh sửa đơn giản;
  • API lập trình C hợp nhất;
  • tiêu chuẩn đơn tiện ích bảng điều khiển và các lệnh (POSIX 2).

Các hệ điều hành được chứng nhận theo tiêu chuẩn POSIX bao gồm: IBM AIX, UnixWare, Solaris, IRIX, QNX, LynxOS, Mac OS X. Các hệ điều hành như Minix, các nhánh khác nhau của BSD, OpenSolaris, VxWorks, OpenWMS hoàn toàn tương thích với một trong các phiên bản của tiêu chuẩn POSIX. Liên quan đến Bản phân phối Linux, thì hầu hết chúng đều tuân thủ tiêu chuẩn LSB (Cơ sở tiêu chuẩn Linux), do đó dựa trên POSIX.

Hôm nay chúng ta sẽ cố gắng tìm hiểu tiêu chuẩn POSIX mô tả những gì. Các tiêu chuẩn được thiết kế để cho phép máy tính của tôi giao tiếp với máy tính của bạn. Nhờ họ, trên hai máy tính tương tự các trang web hoặc nguồn cấp dữ liệu video trực tiếp sẽ trông giống nhau.

Tuy nhiên, những tiêu chuẩn này dành cho các nhiệm vụ có quy mô lớn hơn là việc trao đổi đơn giản bất kỳ dữ liệu nào giữa những người dùng. Một số tiêu chuẩn xác định một mô hình cụ thể mở ra những khả năng vượt xa khả năng tương tác giữa tệp hoặc mạng. Tiêu chuẩn POSIX là một trong số đó.

POSIX là gì?

POSIX (phát âm là "posix") là giao diện hệ điều hành di động. Nhưng nó có nghĩa gì? Trước tiên, bạn cần xác định phạm vi của khái niệm “tính di động”, trong trường hợp cụ thể này và xác định khái niệm “giao diện”. Để tìm ra điều này, cần phải bắt đầu từ thực tế là cả hai khái niệm đều gắn bó chặt chẽ với nhau.

"Di động", trong bối cảnh tiêu chuẩn POSIX, đề cập đến mã nguồn(không phải các tệp nhị phân được tập hợp từ chính những nguồn này). Bây giờ chúng ta hãy tìm hiểu "giao diện" là gì. Trong lập trình, "giao diện" là cách mã của bạn tương tác với mã khác. Giao diện mong đợi mã của bạn cung cấp thông tin nhất định. Ngược lại, mã của bạn sẽ mong nhận được một số thông tin nhất định từ giao diện. Ví dụ tốt- Hàm fopen() trong ngôn ngữ C. Nó mong đợi thông tin gồm hai phần: đường dẫn đến tệp và chế độ mà nó sẽ được mở. Sử dụng dữ liệu này, hệ điều hành trả về một loại thông tin khác gọi là "bộ mô tả tệp". Một file xử lý có thể được sử dụng để đọc một tập tin hoặc ghi vào một tập tin. Đây là giao diện. Từ tất cả những điều này, mã tuân thủ POSIX có thể được biên dịch cho bất kỳ hệ điều hành tuân thủ POSIX nào mà không có thay đổi lớn, điều đó có nghĩa là nó sẽ có thể mang theo được.

Có một danh sách các giao diện tuân theo tiêu chuẩn POSIX, nhưng mặc dù rất dài nhưng rất có thể nó chưa đầy đủ. POSIX không giới hạn ở các lệnh gọi hệ thống, nó còn xác định các tiêu chuẩn cho shell hệ điều hành (shell, hay còn gọi là giao diện dòng lệnh), các tiện ích hệ thống như "awk" hoặc "echo", thư viện hệ thống và nhiều hơn nữa.

Tiêu chuẩn POSIX xuất hiện dưới dạng bản phác thảo của Richard Stallman vào năm 1985 và sau đó được chính thức hóa thành IEEE Std 1003.-1998. Như tiêu đề gợi ý, năm 1998 là năm xuất bản chính thức. Kể từ đó, một số lượng lớn các bổ sung và mở rộng cho POSIX đã được phát hành, dần dần phát triển thành một họ tiêu chuẩn hoàn chỉnh, được gọi chính thức là IEEE 1003, được công nhận là quốc tế, với ký hiệu SO/IEC 9945, được gọi đơn giản là họ POSIX tiêu chuẩn.

Hệ điều hành không nhất thiết phải tuân thủ POSIX, càng không cần phải có chứng chỉ POSIX, nhưng điều này cho phép các nhà phát triển tạo ứng dụng, công cụ và nền tảng mà không cần phải viết lại mã nhiều lần mà chỉ thêm và kết nối với những mã hiện có. Cũng không cần thiết phải viết mã tuân thủ POSIX, nhưng điều này cải thiện đáng kể tính di động của các dự án giữa các hệ điều hành. Điều này có nghĩa là khả năng viết mã tuân thủ POSIX có giá trị theo đúng nghĩa của nó và chắc chắn rất hữu ích cho sự nghiệp của một người. Các dự án lớn như Gnome hay KDE tuân thủ tiêu chuẩn POSIX, đảm bảo chúng hoạt động trên các hệ điều hành khác nhau. Hệ thống con POSIX được triển khai ngay cả trong vấn đề mới nhất Các cửa sổ. Linux được biết là hỗ trợ hầu hết các lệnh gọi hệ thống POSIX, cũng như phần mở rộng chính cho nó được gọi là "Tiêu chuẩn Cơ sở Linux", nhằm mục đích hợp nhất các bản phân phối Linux về mặt hỗ trợ mã nguồn và dữ liệu nhị phân.

Tôi hy vọng chúng ta đã làm sáng tỏ được câu hỏi “POSIX là gì”. sở hữu thông tin thú vị về chủ đề này? Hãy chia sẻ nó trong phần bình luận.

POSIX và RT OS: nỗ lực hệ thống hóa

Sergey Zolotarev, Nikolay Gorbunov

Mục đích của bài viết này là cố gắng làm rõ lịch sử phát triển của tiêu chuẩn POSIX liên quan đến hệ điều hành thời gian thực (RTOS).

Như phần giới thiệu: tại sao cần phải chuẩn hóa giao diện phần mềm?

Một trong những đặc tính quan trọng nhất Tiêu chuẩn POSIX là nó xác định "giao diện lập trình tiêu chuẩn hóa" mà các nhà phát triển hệ thống phần cứng và phần mềm phức tạp phải tuân thủ. Những người tạo ra các hệ thống này buộc phải giải quyết các yêu cầu như thời gian đưa ra thị trường ngắn (do cạnh tranh gay gắt), giảm thiểu chi phí và tăng tốc lợi tức đầu tư. Đồng thời, phần lớn chi phí gây ra do quá trình phát triển bị chậm lại là do các lập trình viên phải “phát minh lại bánh xe”, thực hiện đi thực hiện lại chức năng đã có từ lâu. Nhưng điều này có thể tránh được bằng cách:

  • sử dụng lại mã từ các dự án trước đây và song song;
  • chuyển mã từ hệ điều hành khác;
  • thu hút các nhà phát triển từ các dự án khác (bao gồm cả việc sử dụng các hệ điều hành khác).

Tất cả điều này có thể thực hiện được nhờ sử dụng hệ điều hành có API được tiêu chuẩn hóa. Hơn nữa, nếu trong trường hợp đầu tiên, tổ chức chỉ cần có một số loại tiêu chuẩn nội bộ (đặc biệt điển hình cho hệ điều hành độc quyền) là đủ, thì hai trường hợp thứ hai yêu cầu sự hiện diện của các tiêu chuẩn được công nhận chung - ví dụ: POSIX.

Do đó, bằng cách sử dụng HĐH tương thích POSIX làm nền tảng cho các dự án của mình, nhà phát triển có cơ hội chuyển mã hoàn chỉnh ở cấp nguồn từ cả các dự án trước đây hoặc song song của mình và từ các dự án của bên thứ ba. Điều này không chỉ làm giảm đáng kể thời gian phát triển phần mềm mà còn cải thiện chất lượng của nó, vì mã được kiểm tra luôn chứa ít lỗi hơn.

Ai là ai trong phát triển POSIX

Và chúng ta sẽ bắt đầu không phải với tiêu chuẩn POSIX mà bằng việc hợp lý hóa vai trò của các tổ chức liên quan đến việc xây dựng nó.

Người tham gia đầu tiên là IEEE(Viện Kỹ sư Điện và Điện tử), hiệp hội chuyên gia phi lợi nhuận công cộng. IEEE ra đời từ năm 1884 (chính thức kể từ năm 1963), tập hợp 380.000 thành viên từ 150 quốc gia, xuất bản 1/3 tài liệu kỹ thuật liên quan đến ứng dụng máy tính, điều khiển, điện và công nghệ thông tin, cũng như hơn 100 tạp chí phổ biến trong giới khoa học. chuyên gia; Ngoài ra, hiệp hội còn tổ chức hơn 300 hội nghị lớn mỗi năm. IEEE đã tham gia phát triển hơn 900 tiêu chuẩn hiện hành (www.ieee.ru/ieee.htm). Ngày nay, viện này tham gia vào việc chuẩn bị, điều phối, phê duyệt và xuất bản các tiêu chuẩn, nhưng do tình trạng chính thức nên viện không có thẩm quyền thông qua các tài liệu như tiêu chuẩn quốc tế hoặc quốc gia. Vì vậy, thuật ngữ “tiêu chuẩn” theo cách hiểu của IEEE nên được hiểu là một “thông số kỹ thuật”, phù hợp hơn với tình trạng của các tài liệu được hiệp hội chấp nhận. Theo IEEE, tham gia vào các chương trình của một số tổ chức quốc tế và khu vực - IEC, ISO, ITU (Liên minh Viễn thông Quốc tế), ETSI (Viện Tiêu chuẩn Viễn thông Châu Âu), CENELEC (Ủy ban Tiêu chuẩn Kỹ thuật Điện Châu Âu) và trong các chương trình quốc gia, ví dụ như trong chương trình của một tổ chức như ANSI.

IEEE bao gồm PASC (Ủy ban Tiêu chuẩn Ứng dụng Di động), một ủy ban hiệp hội phát triển họ tiêu chuẩn POSIX (www.pasc.org/). PASC trước đây được gọi là Ủy ban Kỹ thuật Hệ điều hành.

Người tham gia thứ hai trong công việc - ANSI(Viện Tiêu chuẩn Quốc gia Hoa Kỳ, Viện Tiêu chuẩn Quốc gia Hoa Kỳ) – tư nhân tổ chức phi lợi nhuận, cơ quan quản lý và điều phối các hoạt động tiêu chuẩn hóa tại Hoa Kỳ. Nó chỉ tuyển dụng 75 người, nhưng các thành viên của ANSI bao gồm hơn 1.000 công ty, tổ chức, cơ quan và tổ chức chính phủ (www.ansi.org). ANSI đại diện cho Hoa Kỳ trong hai tổ chức tiêu chuẩn quốc tế lớn là ISO và IEC.

Người tham gia thứ ba - ISO(Tổ chức tiêu chuẩn hóa quốc tế, Tổ chức tiêu chuẩn hóa quốc tế). Nó được thành lập vào năm 1946 theo quyết định của Ủy ban Điều phối Tiêu chuẩn và Đại hội đồng Liên Hợp Quốc và chính thức bắt đầu hoạt động vào ngày 23 tháng 2 năm 1947 (www.iso.org). ISO là một mạng tổ chức quốc gia tiêu chuẩn hóa từ 146 quốc gia (một quốc gia - một thành viên ISO) có ban thư ký trung tâm tại Geneva (Thụy Sĩ). Các tiêu chuẩn ISO được phát triển trong các ủy ban kỹ thuật, kết quả đầu tiên là Dự thảo Tiêu chuẩn Quốc tế (DIS), sau nhiều lần phê duyệt sẽ trở thành Tiêu chuẩn Quốc tế Dự thảo Cuối cùng (FDIS). Sau đó, vấn đề phê duyệt tài liệu này sẽ được đưa ra biểu quyết; nếu kết quả dương tính thì nó sẽ trở thành tiêu chuẩn quốc tế.

Và cuối cùng - IEC(Ủy ban kỹ thuật điện quốc tế, Ủy ban kỹ thuật điện quốc tế - IEC), được thành lập năm 1906. IEC chuẩn bị và công bố các tiêu chuẩn quốc tế cho tất cả các công nghệ điện, điện tử và liên quan (www.iec.ch/). Tính đến ngày 1 tháng 11 năm 2004, ủy ban quốc gia của 64 quốc gia là thành viên tích cực của ủy ban này. IEC cũng đưa ra các khuyến nghị được xuất bản bằng tiếng Anh và tiếng Pháp và được coi là tiêu chuẩn quốc tế. Trên cơ sở đó, các tiêu chuẩn khu vực và quốc gia được phát triển. Các ủy ban kỹ thuật (TC) chịu trách nhiệm chuẩn bị các tiêu chuẩn trong các lĩnh vực hoạt động khác nhau của IEC, công việc mà các ủy ban quốc gia quan tâm đến hoạt động của một TC cụ thể cũng tham gia.

IEC là tổ chức chủ chốt trong việc xây dựng các tiêu chuẩn quốc tế cho công nghệ thông tin. Trong lĩnh vực này có một ủy ban kỹ thuật chung về công nghệ thông tin, JTC 1, được thành lập năm 1987 theo thỏa thuận giữa IEC và ISO. JTC1 có 17 tiểu ban giám sát mọi sự phát triển - từ phần mềmđến ngôn ngữ lập trình, đồ họa máy tính và chỉnh sửa hình ảnh, kết nối phần cứng và kỹ thuật bảo mật.

Việc chuẩn bị các tiêu chuẩn IEC mới bao gồm một số giai đoạn (sơ bộ, đề xuất, chuẩn bị, ủy ban kỹ thuật, yêu cầu, phê duyệt, công bố). Nếu tài liệu IEC dự định chỉ trở thành thông số kỹ thuật, chứ không phải là một tiêu chuẩn quốc tế, một phiên bản sửa đổi của tài liệu sẽ được gửi đến văn phòng trung tâm để xuất bản. Bốn tháng được dành cho việc xây dựng dự thảo tiêu chuẩn quốc tế cuối cùng (FDIS). Nếu được tất cả các thành viên của ủy ban kỹ thuật chấp thuận, nó sẽ được gửi đến văn phòng trung tâm để xuất bản mà không qua giai đoạn phê duyệt của FDIS. FDIS sau đó sẽ được chuyển đến các ủy ban quốc gia để phê duyệt trong vòng hai tháng. FDIS được coi là thông qua nếu có hơn 2/3 số ủy ban quốc gia bỏ phiếu tán thành và số phiếu phản đối không vượt quá 25%. Nếu một tài liệu không được phê duyệt, nó sẽ được gửi đến các ủy ban kỹ thuật và tiểu ban để xem xét. Tiêu chuẩn phải được công bố không muộn hơn hai tháng sau khi FDIS phê duyệt.

Một số tổ chức khác tham gia vào việc phát triển và áp dụng các tiêu chuẩn POSIX.

Nhóm mở là tổ chức tiêu chuẩn phần mềm quốc tế quy tụ gần 200 nhà sản xuất và cộng đồng người dùng làm việc trong lĩnh vực công nghệ thông tin (www.opengroup.org/). Nhóm Open được thành lập vào năm 1995 bằng cách sáp nhập hai tổ chức tiền thân của nó: X/Open và Open Software Foundation (OSF). Open Group chuyên phát triển các phương pháp chứng nhận phần mềm và kiểm tra việc tuân thủ các yêu cầu cụ thể. Đặc biệt, Open Group tham gia vào việc chứng nhận cho các lĩnh vực như Nền tảng COE, CORBA, LDAP, Cơ sở tiêu chuẩn Linux, Khung tương tác trường học (SIF), Cổng S/MIME, Đặc tả UNIX đơn, Thông số kỹ thuật giao thức ứng dụng không dây (WAP) và, cuối cùng là họ tiêu chuẩn POSIX (www.opengroup.org/certification/).

Nhóm sửa đổi tiêu chuẩn chung của Austin (CSRG)– nhóm công tác kỹ thuật chung được ISO, IEC và Open Group thành lập vào năm 2002 để tạo và duy trì các phiên bản mới nhất của tiêu chuẩn 1003.1, sẽ được hình thành trên cơ sở ISO/IEC 9945-1-1996, ISO/IEC 9945- 2-1993, IEEE Std 1003.1-1996, IEEE Std 1003.2-1992 và Thông số kỹ thuật UNIX đơn (www.opengroup.org/press/14nov02.htm).

Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST) là cơ quan liên bang trực thuộc Cục Quản lý Công nghệ của Bộ Thương mại (www.nist.gov/public_affairs/general2.htm), được thành lập tại Hoa Kỳ vào năm 1901. Sứ mệnh của NIST là phát triển và thúc đẩy các tiêu chuẩn và công nghệ nhằm cải thiện chất lượng sản phẩm. NIST bao gồm Phòng thí nghiệm Công nghệ Thông tin (ITL), một trong những kết quả của nó là Tiêu chuẩn Xử lý Thông tin Liên bang (FIPS, www.opengroup.org/testing/fips/general_info.html). NIST/ITL đã đề xuất bộ thử nghiệm đầu tiên cho chứng nhận POSIX vào năm 1991 theo FIPS PUB 151-1 1990.

POSIX là gì?

Thuật ngữ chính thức POSIXđược đề xuất bởi Richard Stallman như một từ viết tắt của P có thể nói được đang luyện tập S giao diện hệ thống cho un IX(giao diện hệ điều hành di động cho Unix). POSIX được phát triển cho các hệ điều hành giống UNIX (phiên bản đầu tiên của chúng có từ đầu những năm 1970) với mục tiêu đảm bảo tính di động của ứng dụng ở cấp độ nguồn.

Mô tả ban đầu về giao diện được xuất bản vào năm 1986, sau đó nó được gọi là IEEE-IX (phiên bản UNIX của IEEE). Tuy nhiên, tên này nhanh chóng thay đổi, trở thành POSIX và đã có trong ấn phẩm tiếp theo (trở lại năm 1986). tùy chọn mới. Trong một thời gian, POSIX được hiểu là tài liệu tham khảo (hoặc từ đồng nghĩa) của nhóm tài liệu liên quan IEEE 1003.1-1988 và các phần của ISO/IEC 9945, và là một tiêu chuẩn quốc tế hoàn chỉnh và được phê duyệt, ISO/IEC 9945.1:1990 POSIX đã được thông qua vào năm 1990. Thông số kỹ thuật POSIX xác định cơ chế tương tác tiêu chuẩn chương trình ứng dụng và HĐH và hiện bao gồm hơn 30 tiêu chuẩn thuộc IEEE, ISO, IEC và ANSI.

POSIX đã đi được một chặng đường dài trong suốt lịch sử của nó, với nhiều thay đổi về tên gọi các thông số kỹ thuật, nội dung cụ thể, quy trình và hậu cần để thử nghiệm chúng. Theo thời gian, một số phiên bản của tiêu chuẩn POSIX đã được phát hành trong nhiều tổ chức quốc tế khác nhau.

Lịch sử phát triển của tiêu chuẩn POSIX

Phiên bản đầu tiên của đặc tả IEEE Std 1003.1 được xuất bản vào năm 1988. Sau đó, nhiều phiên bản của IEEE Std 1003.1 đã được áp dụng làm tiêu chuẩn quốc tế.

Các giai đoạn phát triển POSIX:

1990

Ấn bản được phát hành năm 1988 đã được sửa đổi và trở thành cơ sở cho những lần xuất bản và bổ sung tiếp theo. Nó đã được phê duyệt là tiêu chuẩn quốc tế bởi ISO/IEC 9945-1:1990.

1993

Phiên bản 1003.1b-1993 được phát hành.

1996

IEEE Std 1003.1b-1993, IEEE Std 1003.1c-1995 và 1003.1i-1995 đã được sửa đổi, nhưng nội dung của tài liệu vẫn không thay đổi. Phiên bản năm 1996 của IEEE Std 1003.1 cũng được ISO/IEC 9945-1:1996 áp dụng làm tiêu chuẩn quốc tế.

1998

Tiêu chuẩn đầu tiên cho "thời gian thực" xuất hiện - IEEE Std 1003.13-1998. Nó là phần mở rộng của tiêu chuẩn POSIX dành cho các ứng dụng nhúng thời gian thực.

1999

Người ta đã quyết định thực hiện những thay đổi đáng kể đầu tiên trong 10 năm qua đối với nội dung chính của tiêu chuẩn, bao gồm cả việc tích hợp với tiêu chuẩn 1003.2 (Shell và tiện ích), vì tại thời điểm đó đây là những tiêu chuẩn riêng biệt. PASC quyết định hoàn tất việc thay đổi văn bản cơ sở sau khi hoàn thành các tiêu chuẩn IEEE 1003.1a, 1003.1d, 1003.1g, 1003.1j, 1003.1q và 1003.2b.

2004

Bản sửa đổi mới nhất của tiêu chuẩn 1003.1 được xuất bản vào ngày 30 tháng 4 và được phát hành dưới sự bảo trợ của Nhóm sửa đổi tiêu chuẩn chung Austin. Nó được sửa đổi bởi phiên bản tiêu chuẩn năm 2001. Về mặt chính thức, phiên bản năm 2004 được gọi là IEEE Std 1003.1, Phiên bản 2004, Thông số kỹ thuật cơ sở tiêu chuẩn kỹ thuật của Nhóm mở, Số phát hành 6 và bao gồm IEEE Std 1003.1-2001, IEEE Std 1003.1-2001/ Cor 1-2002 và IEEE Std 1003.1-2001/Cor 2-2004.

Các tiêu chuẩn POSIX quan trọng nhất cho RT OS

Đối với hệ điều hành thời gian thực, bảy thông số kỹ thuật tiêu chuẩn là quan trọng nhất (1003.1a, 1003.1b, 1003.1c, 1003.1d, 1003.1j, 1003.21), nhưng chỉ có ba thông số kỹ thuật được nhận được hỗ trợ rộng rãi trong các hệ điều hành thương mại:

  • 1003.1a (Định nghĩa hệ điều hành) xác định các giao diện hệ điều hành chính, quản lý công việc, tín hiệu, chức năng thiết bị và hệ thống tệp, nhóm người dùng, đường dẫn, bộ đệm FIFO;
  • 1003.1b (Tiện ích mở rộng thời gian thực) mô tả các tiện ích mở rộng thời gian thực như tín hiệu thời gian thực, lập lịch ưu tiên, bộ tính giờ, I/O đồng bộ và không đồng bộ, ngữ nghĩa, bộ nhớ dùng chung, tin nhắn. Tiêu chuẩn này ban đầu (cho đến năm 1993) được chỉ định là POSIX.4.
  • 1003.1c (Chủ đề) xác định các chức năng hỗ trợ luồng (luồng) - quản lý luồng, thuộc tính luồng, mutexes, gửi đi. Ban đầu được chỉ định là POSIX.4a.

Ngoài các tiêu chuẩn này, các tiêu chuẩn sau đây rất quan trọng đối với Hệ điều hành RT, được triển khai như một phần công việc của dự án Std 1003.1-2001:

  • IEEE 1003.1d-1999. Tiện ích mở rộng thời gian thực bổ sung. Ban đầu được chỉ định là POSIX.4b;
  • IEEE 1003.1j-2000. Tiện ích mở rộng thời gian thực được cải tiến (nâng cao);
  • IEEE 1003.1q-2000. Dấu vết.

Thủ tục chứng nhận

Để tuân thủ tiêu chuẩn POSIX, hệ điều hành phải được chứng nhận theo kết quả của bộ thử nghiệm thích hợp. Kể từ khi giới thiệu POSIX, bộ thử nghiệm đã trải qua những thay đổi về mặt hình thức và thực tế.

Năm 1991, NIST đã phát triển chương trình thử nghiệm POSIX như một phần của FIPS 151-1 (http://standards.ieee.org/regauth/posix/POSIX-A.FM5.pdf). Trường hợp thử nghiệm này dựa trên IEEE 1003.3" Tiêu chuẩn cho Phương pháp kiểm tra để đo lường sự phù hợp với POSIX" Dự thảo 10, ngày 3 tháng 5 năm 1989. Năm 1993, NIST hoàn thành Chương trình kiểm tra POSIX cho FIPS 151-1 và bắt đầu chương trình cho FIPS 151-2 (www.itl.nist.gov /fipspubs/ fip151-2.htm) được điều chỉnh theo FIPS 151-2 "Công nghệ thông tin - Di động" Hệ điều hành Giao diện (POSIX) - Phần 1: Giao diện chương trình ứng dụng hệ thống (API)", là tiêu chuẩn ISO/IEC 9945-1:1990. Bộ thử nghiệm cho FIPS 151-2 dựa trên "Tiêu chuẩn cho các phương pháp thử nghiệm" của IEEE 2003.1-1992 Đo lường sự phù hợp với POSIX".

NIST phân biệt giữa hai phương pháp chứng nhận: tự chứng nhận và chứng nhận bởi Phòng thí nghiệm thử nghiệm POSIX được IEEE công nhận (APTL). Trong trường hợp đầu tiên, công ty tiến hành thử nghiệm một cách độc lập nhưng theo kế hoạch đã được NIST phê duyệt. Trong trường hợp thứ hai, việc kiểm tra được thực hiện bởi một phòng thí nghiệm độc lập sử dụng bộ dụng cụ kiểm tra tự động. Tổng cộng, hai phòng thí nghiệm APTL đã được công nhận: Mindcraft (www.mindcraft.com) và Perennial (www.peren.com).

Năm 1997, NIST/ITL công bố ý định ngừng chứng nhận FIPS 151-2 vào cuối năm hiện tại (chính thức là ngày 31 tháng 12 năm 1997), trong khi Open Group thông báo rằng họ dự định tiếp quản chứng nhận kể từ ngày 1 tháng 10 năm 1997 . cùng năm, dịch vụ chứng nhận phù hợp với FIPS 151-2, dựa trên chương trình NIST/ITL. Các chức năng tương tự đã được Hiệp hội Tiêu chuẩn IEEE (IEEE-SA) tiếp quản vào ngày 1 tháng 1 năm 1998, cũng dựa trên FIPS 151-2.

Năm 2003, IEEE-SA và Open Group thông báo bắt đầu một chương trình chung mới để chứng nhận các phiên bản mới nhất của POSIX, bắt đầu với IEEE 1003.1™ 2001. Open Group hiện có một số bộ thử nghiệm bao gồm IEEE Std 1003.1-1996, IEEE Std 1003.2-1992, IEEE Std 1003.1-2003 và IEEE Std 1003.13-1998 (www.opengroup.org/testing/testsuites/posix.html). Một sản phẩm được coi là được chứng nhận POSIX nếu nó đã vượt qua thủ tục đầy đủ chứng nhận dựa trên kết quả thử nghiệm, đáp ứng mọi yêu cầu và được đưa vào sổ đăng ký chính thức sản phẩm được chứng nhận.

Bộ thử nghiệm bao gồm:

  • VSX-PCTS1990 (www.opengroup.org/testing/testsuites/vsxpcts1990.htm) – một bộ các bài kiểm tra sự phù hợp cho giao diện hệ thống IEEE Std 1003.1-1990;
  • VSPSE54 (www.opengroup.org/testing/testsuites/VSPSE54.htm) – một bộ các bài kiểm tra sự phù hợp cho IEEE Std 1003.13-1998 Profile PSE54 (thời gian thực đa mục đích);
  • VSX-PCTS2003 (www.opengroup.org/testing/testsuites/vsxpcts2003.htm) – một bộ các bài kiểm tra sự phù hợp cho giao diện hệ thống IEEE Std 1003.1-2003 (chỉ những phần bắt buộc);
  • VSC-PCTS2003 (www.opengroup.org/testing/testsuites/vscpcts2003.htm) – một bộ các bài kiểm tra sự phù hợp cho IEEE Std 1003.1-2003 (vỏ và tiện ích – chỉ những phần bắt buộc).

Ngoài ra, Open Group đã phát triển các thử nghiệm cho tiêu chuẩn Thời gian thực POSIX và hồ sơ tiêu chuẩn POSIX nhúng. Bộ thử nghiệm Thời gian thực POSIX (www.opengroup.org/testing/testsuites/realtime.html) bao gồm các thử nghiệm sau:

  • IEEE POSIX 1003.1b-1993/1003.1i-1995 Tiện ích mở rộng thời gian thực và Phiên bản IEEE POSIX 1003.1,2003;
  • Phần mở rộng chủ đề (pthreads) của IEEE Std POSIX 1003.1c-1995 và Phiên bản IEEE POSIX 1003.1,2003;
  • IEEE POSIX 1003.1d-1999 Phần mở rộng thời gian thực bổ sung và phiên bản IEEE POSIX 1003.1,2003;
  • Tiện ích mở rộng thời gian thực nâng cao của IEEE POSIX 1003.1j-2000 và phiên bản IEEE POSIX 1003.1,2003;
  • Phiên bản IEEE POSIX 1003.1q-2000 Trace và Phiên bản IEEE POSIX 1003.1,2003 và Phiên bản IEEE POSIX 1003.1,2003;

Bộ kiểm tra hồ sơ tiêu chuẩn POSIX nhúng (www.opengroup.org/testing/testsuites/embedded.html) bao gồm các kiểm tra sau:

  • IEEE POSIX 1003.1-1990 (5310 bài kiểm tra);
  • IEEE POSIX 1003.1b-1993/1003.1i-1995 Tiện ích mở rộng thời gian thực (1430 bài kiểm tra);
  • IEEE Std POSIX 1003.1c-1995 Phần mở rộng chủ đề (pthreads) (1232 bài kiểm tra);
  • Hồ sơ IEEE POSIX 1003.13-1998 52.

Một chút về sự nhầm lẫn trong thuật ngữ

Liên quan đến nhóm tiêu chuẩn POSIX, không phải một mà là ba thuật ngữ thường được sử dụng trong tiếng Anh. Thật không may, chúng có ý nghĩa tương tự nhau và thường được dịch theo cùng một cách, điều này tạo ra một số nhầm lẫn. Những điều khoản này là:

  • khả năng tương thích (nghĩa đen là “khả năng tương thích”);
  • tuân thủ (nghĩa đen là “tuân thủ”);
  • sự phù hợp (nghĩa đen là “sự nhất quán”).

Thuật ngữ đầu tiên, như được áp dụng cho POSIX, không được xác định chính thức. Điều thứ hai có nghĩa là tổ chức sản xuất sản phẩm phần mềm tuyên bố độc lập rằng sản phẩm này (toàn bộ hoặc một phần) tuân thủ các tiêu chuẩn NIST-PCTS được liệt kê. Thuật ngữ thứ ba ngụ ý rằng phần mềmđã vượt qua hệ thống kiểm tra đã thiết lập với sự trợ giúp của phòng thí nghiệm được công nhận hoặc trong Nhóm Mở và có bằng chứng tài liệu về điều này (cái gọi là Tuyên bố Tuân thủ). Hơn nữa, trong nội dung của bài viết, các thuật ngữ gốc sẽ được đưa ra ở khắp mọi nơi để loại bỏ sự mơ hồ.

Hệ điều hành RV được chứng nhận

Nếu bạn dính vào quy tắc nghiêm ngặt, yêu cầu dữ liệu trên HĐH RT được chứng nhận phải được công bố trong cơ quan đăng ký chính thức và việc thử nghiệm phải được thực hiện theo mức độ tuân thủ, khi đó hiện tại chỉ có hai HĐH RT được chứng nhận (dữ liệu được đưa ra theo thứ tự thời gian):

LynxOS v.3(một sản phẩm của Lynx Real-Time Systems, hiện được gọi là LynuxWorks, Inc., www.lynuxworks.com) nhằm mục đích phát triển phần mềm cho các hệ thống nhúng hoạt động trong chế độ cứng các nhà sản xuất thiết bị viễn thông, OEM và thời gian thực, đặc biệt là các nhà sản xuất hệ thống máy bay quân sự. Việc phát triển có thể được thực hiện cả trên chính hệ thống đích (tự lưu trữ) và trên máy tính công cụ (máy chủ), phần mềm làm sẵn được thiết kế để hoạt động trên hệ thống đích (đích). LynxOS v.3 được chứng nhận tuân thủ tiêu chuẩn POSIX trên nền tảng Intel và PowerPC. Thông tin về điều này có thể được tìm thấy trên trang web của IEEE http://standards.ieee.org/regauth/posix/posix2.html. LynxOS được chứng nhận POSIX 1003.1-1996 bởi Mindcraft, Phòng thí nghiệm thử nghiệm POSIX được IEEE POSIX công nhận dựa trên Bộ thử nghiệm tuân thủ NIST FIPS 151-2. Số tài liệu chứng nhận: Tệp tham chiếu: IP-2LYX002, Tệp tham chiếu: IP-2LYX001.

TÍNH CHÍNH TRỰC v.5(sản phẩm của Green Hills Software, www.ghs.com) được chứng nhận tuân thủ POSIX 1003.1-2003, Giao diện hệ thống cho kiến ​​trúc PowerPC vào tháng 7 năm 2004 (http://get.posixcertified.ieee.org/select_product. tpl) . Bộ thử nghiệm VSX-PCTS 2003.

POSIX và hệ điều hành QNX

QNX v.4.20 (được phát triển bởi QNX Software Systems, www.qnx.com) được chứng nhận tuân thủ POSIX 1003.1-1988 cho Nền tảng Intel bởi DataFocus Incorporated. Thử nghiệm được tiến hành vào ngày 13 tháng 9 năm 1993 và tài liệu được ban hành vào ngày 1 tháng 11 năm 1993. Bộ thử nghiệm NIST PCTS 151-1, Phiên bản 1.1.

QNX Neutrino (phiên bản 6.3) tuân thủ theo tiêu chuẩn Nhóm POSIX (www.qnx.com/download/download/8660/portability.pdf):

  • POSIX.1 (IEEE 1003.1);
  • POSIX.1a (IEEE 1003.1a);
  • POSIX.2 (IEEE 1003.2);
  • POSIX.4 (IEEE 1003.1b);
  • POSIX.4a (IEEE 1003.1c);
  • POSIX.1b (IEEE 1003.1d), IEEE 1003.1j;
  • POSIX.12 (IEEE 1003.1g).

Hệ thống phần mềm QNX, người tạo ra QNX Neutrino, cũng có kế hoạch điều chỉnh QNX Neutrino phù hợp với một số tiêu chuẩn này; công việc được lên kế hoạch cho năm 2005 (www.qnx.com/news/pr_959_1.html).

Văn học

  1. Hướng dẫn vận hành của Hiệp hội Tiêu chuẩn IEEE. IEEE, tháng 10 năm 2004.
  2. Kevin M. Obeland. POSIX trong thời gian thực, Lập trình hệ thống nhúng, 2001.
  3. Tiêu chuẩn IEEE/ANSI 1003.1: Công nghệ thông tin - (POSIX) - Phần 1: Ứng dụng hệ thống: Giao diện chương trình (API).
  4. Gallmeister, B.O. Lập trình cho thế giới thực, POSIX.4 Sebastopol, CA: O'Reilly & Cộng sự, 1995.
  5. Viện Tiêu chuẩn và Công nghệ Quốc gia, PCTS:151-2, Bộ thử nghiệm POSIX.
  6. POSIX: Được chứng nhận bởi IEEE và The Open Group. Chính sách được chứng nhận. The Open Group, ngày 21 tháng 10 năm 2003, Bản sửa đổi 1.1.
Phần mềm) là nhiệm vụ có tầm quan trọng đặc biệt và phức tạp; ở thời đại chúng ta, hoàn cảnh này hầu như không cần phải biện minh rộng rãi. Một trong những cách được chấp nhận chung để tăng tính di động của phần mềm là chuẩn hóa môi trường ứng dụng: cung cấp giao diện phần mềm, tiện ích, v.v. Ở cấp Dịch vụ hệ thống một môi trường tương tự được mô tả theo tiêu chuẩn POSIX (Giao diện hệ điều hành di động - giao diện hệ điều hành di động); Cái tên này được đề xuất bởi chuyên gia nổi tiếng, người sáng lập Tổ chức Phần mềm Tự do, Richard Stallman.

Chúng tôi sẽ xem xét phiên bản hiện đại nhất của tiêu chuẩn POSIX hiện có, phiên bản 2003, có thể được gọi là "tiêu chuẩn ba", cụ thể là IEEE Std 1003.1, Tiêu chuẩn kỹ thuật Open Group và (xem [6]), quan trọng nhất đối với chúng tôi là tiêu chuẩn quốc tế ISO/IEC 9945 (xem [1], [2], [3], [4]).

Lịch sử tạo ra phiên bản này như sau. Đầu năm 1998, đại diện của ba tổ chức—Ủy ban Tiêu chuẩn Ứng dụng Di động của Viện Kỹ sư Điện và Điện tử, Nhóm Mở, và Ủy ban Kỹ thuật Liên hợp 1 Tiểu ban 22 Nhóm Công tác 15 (JTC1/SC22/WG15) của Tổ chức Tiêu chuẩn Quốc tế— bắt đầu tư vấn về việc sáp nhập và phát triển các tiêu chuẩn giao diện cho các dịch vụ hệ thống do họ giám sát: IEEE Std 1003.1, IEEE Std 1003.2, Thông số kỹ thuật cơ bản từ Open Group, ISO/IEC 9945-1, ISO/IEC 9945-2. Vào tháng 9 cùng năm, một cuộc họp tổ chức của nhóm được thành lập để đạt được mục tiêu này đã được tổ chức tại Austin, Texas, tại văn phòng của Tập đoàn IBM (xem http://www.opengroup.org/austin).

Tài liệu nền tảng cho tiêu chuẩn sửa đổi, bản dự thảo đầu tiên được đệ trình vào tháng 7 năm 1999, là Thông số kỹ thuật cốt lõi của Nhóm Mở, vì nó kết hợp các điều khoản từ các tiêu chuẩn IEEE và ISO/IEC. Năm 2001, sau khi hoàn thành công việc chuẩn bị, tiêu chuẩn bao gồm bốn phần sau:

  1. định nghĩa cơ bản (thuật ngữ, khái niệm và giao diện chung cho tất cả các phần);
  2. Sự miêu tả Giao diện lập trình ứng dụng Cđến các dịch vụ hệ thống;
  3. mô tả giao diện với các dịch vụ hệ thống ở cấp độ ngôn ngữ lệnhtiện ích ;
  4. giải thích chi tiết các quy định của tiêu chuẩn, lý do đưa ra quyết định.

Hơn nữa, ISO, IEEE và Open Group, với tốc độ nhanh hơn hoặc chậm hơn (năm 2001-2002), đã chính thức phê duyệt tiêu chuẩn POSIX mới. Trong khi đó, những chỉnh sửa tương đối nhỏ đã được tích lũy và được tính đến trong ấn bản năm 2003.

Khi tiêu chuẩn được phát triển, việc giải thích thuật ngữ "POSIX" được mở rộng. Ban đầu nó đề cập đến IEEE Std 1003.1-1988, mô tả giao diện lập trình ứng dụng Hệ điều hành lớp Unix. Sau khi tiêu chuẩn hóa giao diện ở cấp độ ngôn ngữ lệnh và tiện ích, sẽ đúng hơn nếu hiểu toàn bộ từ "POSIX" là tiêu chuẩn, biểu thị các phần 2 và 3 trên thông qua POSIX.1 và POSIX.2 theo đúng quy định. với việc đánh số các tài liệu IEEE và ISO/IEC.

Ý tưởng cơ bản của tiêu chuẩn POSIX

Tiêu chuẩn POSIX mô tả nhiều dịch vụ hệ thống cơ bản cần thiết cho hoạt động của các chương trình ứng dụng. Chúng được truy cập thông qua giao diện được chỉ định cho ngôn ngữ C, ngôn ngữ lệnh và các chương trình tiện ích phổ biến.

Mọi giao diện đều có hai mặt: người gọi và người được gọi. Tiêu chuẩn POSIX hướng tới người gọi. Mục tiêu của nó là tạo ra các ứng dụng di động ở cấp độ ngôn ngữ nguồn. Đặc biệt, điều này có nghĩa là khi di chuyển các chương trình C sang nền tảng điều hành khác, việc biên dịch lại sẽ được yêu cầu. Không có cuộc thảo luận nào về tính di động của các chương trình thực thi và/hoặc tệp đối tượng.

Tiêu chuẩn POSIX không hề bị giới hạn trong môi trường Unix. Có những hệ điều hành (OS) có "nguồn gốc độc lập" (ví dụ: hệ thống thời gian thực), cung cấp các dịch vụ cần thiết và từ đó hỗ trợ thực thi các ứng dụng tuân thủ POSIX. Có thể lập luận rằng việc tuân theo tiêu chuẩn POSIX giúp chuyển các ứng dụng sang hầu hết mọi nền tảng điều hành được sử dụng rộng rãi dễ dàng hơn. Nỗ lực nhiều hơn để cải thiện khả năng di chuyển trong giai đoạn phát triển chắc chắn sẽ được đền đáp.

Bằng cách xác định giao diện cho các dịch vụ hệ thống, POSIX không xem xét việc triển khai chúng. Đặc biệt, chúng không khác nhau cuộc gọi hệ thốngchức năng thư viện. Sản phẩm không cần tiêu chuẩn hóa sự quản lý, chỉ yêu cầu những hạn chế về phần cứng và các tính năng siêu người dùng, một lần nữa nhấn mạnh trọng tâm của tiêu chuẩn

Đảm bảo tính di động (portability) của phần mềm là một nhiệm vụ có tầm quan trọng đặc biệt và phức tạp; ở thời đại chúng ta, hoàn cảnh này hầu như không cần phải biện minh rộng rãi. Một trong những cách được chấp nhận chung để tăng tính di động của phần mềm là chuẩn hóa môi trường ứng dụng: cung cấp giao diện phần mềm, tiện ích, v.v. Ở cấp Dịch vụ hệ thống một môi trường tương tự được mô tả theo tiêu chuẩn POSIX (Giao diện hệ điều hành di động - giao diện hệ điều hành di động); Cái tên này được đề xuất bởi chuyên gia nổi tiếng, người sáng lập Tổ chức Phần mềm Tự do, Richard Stallman. Chúng ta sẽ xem xét phiên bản hiện đại nhất của tiêu chuẩn POSIX hiện có, phiên bản 2003, có thể được gọi là "tiêu chuẩn ba", cụ thể là IEEE Std 1003.1, Tiêu chuẩn kỹ thuật nhóm mở và (xem, quan trọng nhất đối với chúng tôi, tiêu chuẩn quốc tế). tiêu chuẩn ISO/IEC 9945 (xem , , , ). Lịch sử hình thành phiên bản này như sau: Đầu năm 1998, đại diện của ba tổ chức - Ủy ban Tiêu chuẩn Ứng dụng Di động của Viện Kỹ sư Điện và Điện tử, Nhóm Mở. và Nhóm công tác 15 của Tiểu ban 22 thuộc Ủy ban Kỹ thuật chung 1 (JTC1/SC22/WG15) của Tổ chức Tiêu chuẩn hóa Quốc tế - đã bắt đầu tham vấn về vấn đề hợp nhất và phát triển các tiêu chuẩn cho giao diện với các dịch vụ hệ thống mà họ giám sát: IEEE Std 1003.1 , IEEE Std 1003.2, Thông số kỹ thuật cơ bản của Nhóm mở, ISO/IEC 9945-1, ISO/IEC 9945-2 Vào tháng 9 cùng năm, một cuộc họp tổ chức của nhóm được thành lập để đạt được mục tiêu này đã được tổ chức tại Austin, Texas. , tại văn phòng của Tập đoàn IBM (xem. http://www.opengroup.org/austin). Tài liệu nền tảng cho tiêu chuẩn sửa đổi, bản dự thảo đầu tiên được đệ trình vào tháng 7 năm 1999, là Thông số kỹ thuật cốt lõi của Nhóm Mở, vì nó kết hợp các điều khoản từ các tiêu chuẩn IEEE và ISO/IEC. Năm 2001, sau khi hoàn thành công việc chuẩn bị, tiêu chuẩn bao gồm bốn phần sau:
  • định nghĩa cơ bản (thuật ngữ, khái niệm và giao diện chung cho tất cả các phần);
  • mô tả giao diện phần mềm ứng dụng C với các dịch vụ hệ thống;
  • mô tả giao diện với các dịch vụ hệ thống ở cấp độ ngôn ngữ lệnhtiện ích;
  • giải thích chi tiết các quy định của tiêu chuẩn, lý do đưa ra quyết định.
  • Hơn nữa, ISO, IEEE và Open Group, với tốc độ nhanh hơn hoặc chậm hơn (năm 2001-2002), đã chính thức phê duyệt tiêu chuẩn POSIX mới. Trong khi đó, những chỉnh sửa tương đối nhỏ đã được tích lũy và được tính đến trong ấn bản năm 2003. Khi tiêu chuẩn được phát triển, việc giải thích thuật ngữ "POSIX" được mở rộng. Ban đầu nó đề cập đến IEEE Std 1003.1-1988, mô tả giao diện lập trình ứng dụng Hệ điều hành lớp Unix. Sau khi tiêu chuẩn hóa giao diện ở cấp độ ngôn ngữ lệnh và các chương trình tiện ích, sẽ đúng hơn nếu hiểu toàn bộ từ "POSIX" là một tiêu chuẩn, biểu thị các phần 2 và 3 trên thông qua POSIX.1 và POSIX.2 trong theo cách đánh số của tài liệu IEEE và ISO/IEC.

    Ý tưởng cơ bản của tiêu chuẩn POSIX

    Tiêu chuẩn POSIX mô tả nhiều dịch vụ hệ thống cơ bản cần thiết cho hoạt động của các chương trình ứng dụng. Chúng được truy cập thông qua giao diện được chỉ định cho ngôn ngữ C, ngôn ngữ lệnh và các chương trình tiện ích phổ biến. Mọi giao diện đều có hai mặt: người gọi và người được gọi. Tiêu chuẩn POSIX hướng tới người gọi. Mục tiêu của nó là tạo ra các ứng dụng di động ở cấp độ ngôn ngữ nguồn. Đặc biệt, điều này có nghĩa là khi di chuyển các chương trình C sang nền tảng điều hành khác, việc biên dịch lại sẽ được yêu cầu. Không có cuộc thảo luận nào về tính di động của các chương trình thực thi và/hoặc tệp đối tượng. Tiêu chuẩn POSIX không hề bị giới hạn trong môi trường Unix. Có những hệ điều hành (OS) có "nguồn gốc độc lập" (ví dụ: hệ thống thời gian thực), cung cấp các dịch vụ cần thiết và từ đó hỗ trợ thực thi các ứng dụng tuân thủ POSIX. Có thể lập luận rằng việc tuân theo tiêu chuẩn POSIX giúp chuyển các ứng dụng sang hầu hết mọi nền tảng điều hành được sử dụng rộng rãi dễ dàng hơn. Nỗ lực nhiều hơn để cải thiện khả năng di chuyển trong giai đoạn phát triển chắc chắn sẽ được đền đáp. Bằng cách xác định giao diện cho các dịch vụ hệ thống, POSIX không xem xét việc triển khai chúng. Đặc biệt, chúng không khác nhau cuộc gọi hệ thốngchức năng thư viện. Sản phẩm không cần tiêu chuẩn hóa sự quản lý, chỉ yêu cầu những hạn chế về phần cứng và các tính năng siêu người dùng, một lần nữa nhấn mạnh trọng tâm của tiêu chuẩn POSIX trên các ứng dụng chứ không phải hệ điều hành. POSIX trung lập về kiến ​​trúc hệ thống và kích thước bit của bộ xử lý. Cái này rất khía cạnh quan trọng tính di động của ứng dụng. Việc tập trung vào tiêu chuẩn quốc tế của ngôn ngữ C không chỉ xác định phong cách mô tả các chức năng mà ở một mức độ nào đó còn xác định hướng phát triển của các thông số kỹ thuật POSIX về mặt đồng bộ hóa của cả hai tiêu chuẩn. Như đã biết trong phiên bản đặc tả ngôn ngữ C được phê duyệt năm 1999 (xem), nó đã được hợp pháp hóa kiểu phức tạp data, điều này gây ra sự bổ sung tương ứng cho các chức năng POSIX. Tiêu chuẩn POSIX phân biệt giữa các chức năng bắt buộc và tùy chọn, với lõi bắt buộc được giữ nhỏ gọn nhất có thể. Tất nhiên rồi Đặc biệt chú ý tập trung vào các cách để triển khai các chức năng được tiêu chuẩn hóa cả trong môi trường Unix “cổ điển” và trên các nền tảng điều hành khác, trong cấu hình mạng và phân tán. Các nhà phát triển phiên bản mới của tiêu chuẩn POSIX đã rất cẩn thận về thời tiền sử của nó cũng như thời tiền sử của các hệ thống Unix và quan trọng nhất là đối với các ứng dụng đáp ứng được nhiều nhu cầu hơn. phiên bản trước tiêu chuẩn Chúng tôi đã cố gắng duy trì các giao diện hiện có; trong quá trình phát triển, nguyên tắc đã được tuân thủ khả năng tương thích ngược; giao diện mới đã được thêm vào để không xung đột với giao diện cũ. Không thể tránh hoàn toàn việc thực hiện các thay đổi đối với ứng dụng vì những lý do rõ ràng: cần phải loại bỏ mâu thuẫn giữa các thông số kỹ thuật ban đầu khác nhau, cũng như từ bỏ hỗ trợ cho phiên bản “truyền thống” của ngôn ngữ C và chuyển sang tiêu chuẩn quốc tế của nó.

    Các khái niệm cơ bản của tiêu chuẩn POSIX

    Tiêu chuẩn POSIX, được sửa đổi năm 2003, là một tài liệu rất rộng, nhiều mặt, bao gồm chi tiết các loại thành phần hệ thống sau:
  • công cụ phát triển;
  • công cụ mạng;
  • công cụ thời gian thực;
  • luồng điều khiển;
  • giao diện toán học;
  • dịch vụ trọn gói;
  • tập tin tiêu đề;
  • giao diện kế thừa.
  • Chính xác đây là tiết mục (ở cấp cao nhất, chưa hoàn chỉnh) mà hệ điều hành phải cung cấp để ứng dụng hoạt động. Khái niệm quan trọng nhất là Tuân thủ POSIX. Chúng ta đã lưu ý rằng mọi giao diện đều có hai mặt: mặt gọi và mặt được gọi. Tuân thủ POSIX có hai mặt: tuân thủ việc triển khai (hệ điều hành) và ứng dụng. Việc triển khai (hệ điều hành) tuân thủ tiêu chuẩn POSIX phải hỗ trợ tất cả các tiện ích, chức năng, tệp tiêu đề cần thiết và cung cấp hành vi được chỉ định trong tiêu chuẩn. Hằng số _POSIX_VERSION có giá trị 200112L. HĐH có thể cung cấp các tính năng được đánh dấu là tùy chọn trong tiêu chuẩn và cũng có thể chứa các tính năng không chuẩn. Nếu một tiện ích mở rộng được tuyên bố là được hỗ trợ thì nó phải được thực hiện một cách nhất quán, cho tất cả các phần được yêu cầu và theo cách được mô tả trong tiêu chuẩn. Trong tập tin tiêu đề Bạn nên xác định các hằng số tương ứng với các khả năng tùy chọn được hỗ trợ (ví dụ: hằng số _POSIX2_C_DEV phục vụ các công cụ phát triển C). Bằng cách phân tích các hằng số này tại thời điểm biên dịch, ứng dụng sẽ tìm ra khả năng của hệ điều hành đang được sử dụng và thích ứng với chúng. Các hành động thời gian chạy tương tự có thể được thực hiện bằng cách sử dụng hàm sysconf() và/hoặc tiện ích getconf. Để giảm thiểu kích thước của hệ điều hành và các ứng dụng, tiêu chuẩn POSIX cung cấp mức độ chi tiết rất cao của các khả năng tùy chọn (tổng cộng là 40). Mặt khác, các khả năng tùy chọn có liên quan với nhau đã được kết hợp thành các nhóm, trong nhiều trường hợp loại bỏ nhu cầu phân tích một số lượng lớn các tùy chọn. Những nhóm này là:
  • mã hóa ;
  • công cụ thời gian thực;
  • công cụ thời gian thực tiên tiến;
  • luồng thời gian thực;
  • luồng thời gian thực nâng cao;
  • dấu vết ;
  • SUỐI;
  • khả năng kế thừa.
  • Ví dụ: nhóm "cơ sở thời gian thực" (_XOPEN_REALTIME) bao gồm mười bốn loại khả năng, bao gồm lập lịch dựa trên mức độ ưu tiên, I/O không đồng bộ, ngữ nghĩa, bộ tính giờ, v.v. Phiên bản hệ điều hành Linux nơi văn bản được chuẩn bị khóa học này, tạo ra các giá trị sau cho một số hằng số cấu hình (xem Liệt kê 1.1).

    $ getconf _POSIX_VERSION 199506 $ getconf POSIX2_C_DEV 1 $ getconf _XOPEN_REALTIME 1 $ getconf _POSIX_TRACE không xác định Liệt kê 1.1. Kết quả của việc áp dụng tiện ích getconf cho một trong các phiên bản HĐH Linux.

    Điều này có nghĩa là nó được hỗ trợ Phiên bản lỗi thời Tiêu chuẩn POSIX, trong số những tiêu chuẩn khác, có các công cụ phát triển và khả năng thời gian thực; Không có công cụ truy tìm. Tài liệu về hệ điều hành phải phản ánh các vấn đề tuân thủ với tiêu chuẩn POSIX và mô tả các tính năng bổ sung và phi tiêu chuẩn được hỗ trợ. Đối với các ứng dụng, khái niệm tuân thủ POSIX mang nhiều sắc thái hơn. Cung cấp tuân thủ nghiêm ngặt, đặc điểm phân biệt chính của nó là giới hạn về phạm vi khả năng được sử dụng trong khuôn khổ tiêu chuẩn. Việc tuân thủ việc sử dụng tiện ích mở rộng cũng được xem xét; trong trường hợp này, tài liệu ứng dụng phải có mô tả về các yêu cầu tính năng tiêu chuẩn. Điều mong muốn là các phần mở rộng tính năng POSIX được sử dụng được mô tả theo tiêu chuẩn quốc tế và/hoặc quốc gia. (Lưu ý rằng để triển khai, khái niệm tuân thủ POSIX nghiêm ngặt là vô nghĩa, nếu chỉ vì lý do không có hệ điều hành nào không có công cụ quản trị và chúng không được mô tả bởi tiêu chuẩn này.) Chúng tôi sẽ gọi một hồ sơ là một tập hợp các tùy chọn mà mô tả các khả năng tùy chọn. Tuân thủ hồ sơ có nghĩa là tuân thủ tiêu chuẩn POSIX và hỗ trợ các khả năng được chỉ định. Hồ sơ được chọn một cách khôn ngoan sẽ cho phép giải quyết nhu cầu của các lớp người dùng và/hoặc ứng dụng đại diện. Có thể có các "tiểu sử phụ" mô tả các tập hợp con các khả năng tiêu chuẩn. Việc triển khai tương ứng với cấu hình con có thể chạy trên nền tảng phần cứng có giới hạn tài nguyên và/hoặc phục vụ nhu cầu của các ứng dụng cụ thể. Trong số những khái niệm quan trọng nhất là các khái niệm mô tả hành vi triển khai trong các tình huống khác nhau. Đối với nhiều tình huống đúng, hành vi không được chỉ định, điều đó có nghĩa là ứng dụng di động không nên dựa vào hành vi của các triển khai khác nhau để khớp. Đối với các tình huống không chính xác, hành vi có thể không được xác định; Ứng dụng không những không nên dựa vào bản chất cụ thể của hành vi đó mà còn không được thực hiện các hành động không phù hợp gây ra hành vi không xác định. Một thuật ngữ liên quan khác, " hành vi phụ thuộc thực hiện", Ngoài ra, có nghĩa là hành vi triển khai phải được ghi lại. Tiêu chuẩn POSIX là một tổ chức phát triển lâu dài, trong đó với mỗi phiên bản mới, một cái gì đó sẽ được thêm vào và một cái gì đó sẽ bị mất đi. Các tính năng không được dùng nữa là những tính năng vẫn được hỗ trợ bởi nhiều tổ chức khác nhau các ứng dụng mới không nên sử dụng chúng; đối với mỗi ứng dụng đó, tiêu chuẩn cung cấp các thay thế hiện đại đầy đủ cho thuật ngữ "cũ": nó mô tả các tính năng tùy chọn lỗi thời. tất nhiên điều đó nên tránh trong những ứng dụng mới.

    Khái niệm cơ bản về hệ điều hành POSIX

    Chúng tôi sẽ đề cập đến các khái niệm cơ bản sau đây về hệ điều hành POSIX:
  • người dùng ;
  • tài liệu ;
  • quá trình ;
  • phần cuối ;
  • chủ nhà ;
  • nút mạng;
  • thời gian ;
  • môi trường ngôn ngữ và văn hóa.
  • Đây là những khái niệm cơ bản. Chúng không thể được xác định một cách chặt chẽ nhưng có thể được giải thích bằng các khái niệm và mối quan hệ khác. Đối với mỗi khái niệm được đánh dấu, các thuộc tính và hoạt động vốn có của chúng có thể áp dụng cho chúng sẽ được mô tả. Văn bản của tiêu chuẩn POSIX chứa các giải thích sau đây về các khái niệm cơ bản cùng với các tham chiếu đến các thuộc tính và hoạt động.
  • Người dùng có tên và ID số.
  • Tệp là một đối tượng có thể được đọc và/hoặc ghi và có các thuộc tính như quyền và loại. Cái sau bao gồm tập tin thông thường, ký tự và khối các tập tin đặc biệt, đường ống, liên kết tượng trưng, ​​ổ cắm và thư mục. Việc triển khai có thể hỗ trợ các loại tệp khác.
  • Một tiến trình là một không gian địa chỉ cùng với các luồng điều khiển chạy trong đó, cũng như tài nguyên hệ thống, mà các chủ đề này yêu cầu.
  • Thiết bị đầu cuối (hoặc thiết bị đầu cuối) là một tệp đặc biệt dựa trên ký tự tuân theo các thông số kỹ thuật của giao diện thiết bị đầu cuối chung.
  • Mạng là tập hợp các máy chủ được kết nối với nhau.
  • Môi trường ngôn ngữ - văn hóa là một phần của môi trường người dùng, tùy thuộc vào các quy ước ngôn ngữ và văn hóa.
  • Để làm việc với số lượng lớn các thực thể, các cơ chế nhóm và xây dựng hệ thống phân cấp luôn được cung cấp. Có một hệ thống phân cấp các tệp, nhóm người dùng và quy trình, mạng con, v.v. Để viết các chương trình hoạt động với các thực thể của hệ thống tương thích POSIX, trình thông dịch lệnh (ngôn ngữ shell) và/hoặc ngôn ngữ biên dịch C được sử dụng. Trong trường hợp đầu tiên, ứng dụng có thể sử dụng các chương trình tiện ích (tiện ích), trong trường hợp thứ hai - hàm. Giao diện chức năngĐiều tự nhiên là coi hệ điều hành là chính, vì trên thực tế, hầu hết các chương trình tiện ích được thiết kế để gọi chức năng này hoặc chức năng khác. Vì lý do này, trong phần tiếp theo chúng ta sẽ chủ yếu xem xét cấp độ chức năng. Các hoạt động chính áp dụng cho các đối tượng OS là đọc, viết và thực thi. Cơ chế quyền truy cập cho phép bạn cho phép và cấm có chọn lọc các hoạt động đó. Trước đây, tiêu chuẩn bao gồm khái niệm siêu người dùng, không chịu sự kiểm soát truy cập. POSIX-2001 đã chọn một công thức linh hoạt hơn - "có đặc quyền thích hợp", phản ánh sự tiến bộ trong việc triển khai các hệ điều hành có khả năng siêu người dùng phân chia. Các hệ điều hành tuân thủ POSIX xác định các đối tượng có thể được gọi là phụ trợ; chúng giúp tổ chức tương tác giữa các thực thể chính. Phạm vi công cụ đặc biệt rộng giao tiếp giữa các quá trình. Các quy trình được thực hiện trong một môi trường cụ thể, một phần trong đó là môi trường ngôn ngữ và văn hóa (Locale), được hình thành bởi các danh mục như ký hiệu và thuộc tính của chúng, định dạng thông báo, ngày và giờ, giá trị số và tiền tệ. Thông thường có ít nhất ba tệp được liên kết với một quy trình - đầu vào tiêu chuẩn, đầu ra tiêu chuẩn, giao thức chuẩn. Thông thường, đầu vào tiêu chuẩn được gán cho bàn phím đầu cuối, đầu ra tiêu chuẩn và giao thức chuẩn được gán cho màn hình. Các lệnh và (đôi khi) dữ liệu nguồn cho chúng được đọc từ đầu vào tiêu chuẩn. Đầu ra tiêu chuẩn nhận kết quả thực hiện lệnh. Thông báo chẩn đoán được đặt trong giao thức chuẩn. Hệ điều hành có thể có các yêu cầu về chất lượng, ví dụ: yêu cầu hỗ trợ thời gian thực: khả năng cung cấp dịch vụ cần thiết trong một khoảng thời gian nhất định.

    Môi trường biên dịch cho các ứng dụng tuân thủ POSIX

    Theo quy định (mặc dù điều này không phải lúc nào cũng được thực hiện), việc phát triển ứng dụng được thực hiện đa chế độ, tức là nền tảng phát triển (thuật ngữ tương đương là nền tảng công cụ) không giống với nền tảng thời gian chạy (còn được gọi là nền tảng mục tiêu). Được tạo trên nền tảng công cụ môi trường biên dịch ứng dụng, để kết quả biên dịch có thể được chuyển sang lần thực thi tiếp theo trên nền tảng đích. Phần quan trọng nhất của môi trường biên dịch là các tệp tiêu đề (hoặc bao gồm) chứa nguyên mẫu chức năng, các định nghĩa hằng số ký hiệu, macro, kiểu dữ liệu, cấu trúc, v.v. Mỗi chức năng được mô tả trong tiêu chuẩn POSIX chỉ định những tệp tiêu đề nào phải được đưa vào bởi ứng dụng sử dụng nó (thường là bắt buộc phải có một tệp). Ở trên đã nêu rằng thông qua các hằng ký hiệu được xác định trong tệp tiêu đề , hệ điều hành cung cấp cho ứng dụng thông tin về các khả năng được hỗ trợ. Tiêu chuẩn POSIX cung cấp một cơ chế đối xứng được gọi là macro kiểm tra tính năng, nó cho phép các ứng dụng quảng cáo mong muốn truy cập các nguyên mẫu và tên nhất định. Macro kiểm tra khả năng chính là _POSIX_C_SOURCE . Yêu cầu đối với các ứng dụng tuân thủ nghiêm ngặt POSIX bao gồm xác định hằng số ký hiệu _POSIX_C_SOURCE với giá trị 200112L trước khi bao gồm bất kỳ tập tin tiêu đề. Do đó, ứng dụng tuân thủ POSIX tuyên bố rằng nó yêu cầu tên POSIX. Vai trò tương tự được thực hiện bởi macro _XOPEN_SOURCE (với giá trị 600 ). Một ví dụ về cách sử dụng macro _POSIX_C_SOURCE trong bao gồm các tập tin Hệ điều hành Linux có thể đóng vai trò như đoạn được hiển thị trong Liệt kê 1.2.

    #if được xác định(_REENTRANT) || (_POSIX_C_SOURCE - 0 >= 199506L) #define LIBXML_THREAD_ENABLED#endif Liệt kê 1.2. Ví dụ về cách sử dụng macro kiểm tra khả năng _POSIX_C_SOURCE.

    Tiêu chuẩn POSIX cung cấp một số biện pháp để giải quyết vấn đề quan trọng và khó khăn (chủ yếu do tính chất không khách quan của ngôn ngữ C) là không có sự trùng lặp về tên giữa ứng dụng và hệ điều hành. Các tiền tố posix_, POSIX_ và _POSIX_ được dành riêng cho nhu cầu của tiêu chuẩn. Chỉ tên hệ thống (không phải ứng dụng) mới có thể bắt đầu bằng dấu gạch dưới, theo sau là dấu gạch dưới khác hoặc chữ in hoa. Đối với các tệp được bao gồm, tiền tố của tên được sử dụng trong chúng sẽ được mô tả. Ví dụ: đối với các hoạt động quản lý tập tin xuất hiện trong , F_ , O_ , S_ được sử dụng làm tiền tố. Các công cụ giao tiếp giữa các tiến trình được mô tả trong tệp , tiền tố là ​​IPC_ . Thật không may, có rất nhiều tệp tiêu đề và không có nguyên tắc đặt tên chung vì lý do lịch sử. Vì vậy, để thao tác các đặc điểm của thiết bị đầu cuối trong tệp nhiều tên gọi khác nhau được định nghĩa: EXTB, VDSUSP, DEFECHO, FLUSHO, v.v. Ngoài ra còn có bốn trăm mười bảy tên như _Exit, abort, abs, acos, v.v., có thể được sử dụng để chỉnh sửa quan hệ đối ngoại chương trình ứng dụng. Kết quả là, lập trình viên ứng dụng có thể vô tình “làm gián đoạn” macro hệ thống, biến bên ngoài hoặc hàm, vì vậy, nên sử dụng tất cả các công cụ chẩn đoán của môi trường biên dịch và nghiên cứu kỹ các thông báo chúng tạo ra.

    Tính di động của các ứng dụng tuân thủ POSIX

    Về cơ bản, khả năng di chuyển của các ứng dụng tuân thủ POSIX có thể đạt được nhờ hai yếu tố chính. Thứ nhất, sự hiện diện của một số lượng lớn các dịch vụ hệ thống được tiêu chuẩn hóa và thứ hai là khả năng xác định linh hoạt các đặc điểm của nền tảng mục tiêu và điều chỉnh ứng dụng cho phù hợp với chúng. (Tất nhiên, chúng tôi muốn nói đến tính di động trong khuôn khổ được quy định bởi tiêu chuẩn.) Các ứng dụng tuân thủ tiêu chuẩn POSIX có thể là một hoặc nhiều quy trình, với khả năng tự động điều chỉnh cấu hình cho phù hợp với các thuộc tính của nền tảng đích. Phương tiện tạo ra và hoàn thiện các quy trình, thay đổi chương trình của họ, bỏ phiếu và/hoặc thay đổi các đặc điểm khác nhau. Các quy trình có thể bị tạm dừng và kích hoạt lại vào những thời điểm được chỉ định. Cơ chế tín hiệu cho phép bạn thông báo về các sự kiện và chấm dứt các quá trình từ bên ngoài. Có phương tiện để nhóm chúng quản lý công việc. Các ứng dụng được trang bị các điều khiển để kiểm soát việc lập kế hoạch và ưu tiên quy trình. Một loạt các công cụ giao tiếp liên quá trình ( hàng đợi tin nhắn, bộ nhớ chia sẻ, ngữ nghĩa) và quản lý bộ nhớ. Cuối cùng, nhiều luồng điều khiển có thể được tổ chức trong một tiến trình. Mức độ xác định thực thi cần thiết đạt được nhờ các công cụ hỗ trợ thời gian thực (bao gồm kiểm soát kỷ luật phân bổ bộ xử lý, tín hiệu thời gian thực, lưu giữ trang trong RAM, bộ hẹn giờ có độ phân giải cao, v.v.). Các chức năng làm việc với tệp đáp ứng nhu cầu của ứng dụng về đọc và ghi dữ liệu dài hạn cũng như bảo vệ dữ liệu đó khỏi bị truy cập trái phép. Cơ chế chặn các đoạn tập tin cho phép bạn đảm bảo tính nguyên tử của các giao dịch. Vào/ra không đồng bộ giúp kết hợp các hoạt động trao đổi, từ đó tối ưu hóa ứng dụng. Việc xử lý dữ liệu phức tạp có thể được thực hiện tương đối dễ dàng bằng nhiều chương trình tiện ích. Tiêu chuẩn POSIX xem xét cẩn thận các vấn đề về quyền truy cập vào thiết bị bên ngoàiđược kết nối thông qua các đường nối tiếp, đặc biệt là đến các thiết bị đầu cuối. Có lẽ các công cụ để làm việc với các phương tiện phổ biến như băng từ cần chi tiết hơn. Tiêu chuẩn hóa ngôn ngữ lệnh shell là một công cụ thích hợp để viết các thủ tục di động nhỏ và gỡ lỗi tương tác nhanh. Hãy để chúng tôi nêu bật cơ chế đường ống, cho phép bạn kết hợp các lệnh thành chuỗi bằng tính năng lọc kết quả trung gian. Các tiện ích cung cấp một môi trường thực thi phong phú cho các thủ tục shell. Do chế độ nền, bạn có thể tổ chức thực hiện đồng thời một số chương trình và tương tác với chúng thông qua một thiết bị đầu cuối thông thường mà không có khả năng đa cửa sổ (tuy nhiên, windows chắc chắn sẽ không bị ảnh hưởng gì). POSIX tiêu chuẩn hóa giao diện dòng lệnh. Về nguyên tắc, nó là đủ, thuận tiện vừa phải và quan trọng là tạo ra ít vấn đề nhất về khả năng di chuyển. Có khả năng các phiên bản tương lai của tiêu chuẩn sẽ điều chỉnh GUI, nhưng tất nhiên, điều này gây thêm khó khăn cho các nhà phát triển ứng dụng di động. Môi trường ngôn ngữ và văn hóa là một trong những khái niệm quan trọng nhất của tiêu chuẩn POSIX theo quan điểm di động. Các ứng dụng có thể phát hiện môi trường chúng cần và thích ứng với nhu cầu của người dùng. Hệ thống nhiều người dùng yêu cầu tổ chức tương tác giữa một số lượng lớn người. POSIX giải quyết vấn đề này bằng cách điều chỉnh các phương tiện trao đổi thông tin trực tiếp và qua đường bưu điện. Tiêu chuẩn POSIX cung cấp Cơ sở vật chất hỗ trợ phát triển (chủ yếu cho ngôn ngữ C), tất nhiên, điều này không làm giảm nhu cầu về các hệ thống được phát triển, chuyên biệt khi làm việc với các dự án phần mềm thực sự lớn. Các ứng dụng được cung cấp một phương tiện được tiêu chuẩn hóa để xác định cả các đặc điểm khối lớn của hệ thống đích (ví dụ: phạm vi các tính năng tùy chọn được hỗ trợ) và các đặc điểm quy mô nhỏ hơn (lượng dung lượng đĩa trống hiện tại). Vấn đề về tính di động của ứng dụng cực kỳ phức tạp và sẽ là quá đáng khi nói rằng tiêu chuẩn POSIX-2001 giải quyết được nó một cách hoàn toàn. Thứ nhất, những vấn đề quan trọng như đồ họa, giao diện đa cửa sổ và toàn bộ dòng người khác. Thứ hai, có “điểm trắng” ở khu vực quy định hành vi không xác định triển khai. Tuy nhiên, chúng ta hãy nhấn mạnh lại điều này một lần nữa, việc tuân thủ tiêu chuẩn POSIX là một yếu tố bắt buộc trong nguyên tắc phát triển hệ thống ứng dụng hiện đại.