"POSIX"의 의미는 무엇입니까?


898

POSIX 란 무엇입니까? 나는 Wikipedia 기사 를 읽었으며 용어가 나올 때마다 읽었습니다. 사실 나는 그것이 무엇인지 정말로 이해하지 못한다는 것입니다.

"POSIX의 필요성"도 설명해 주시겠습니까?



답변:


622

POSIX 는 Unix-y 운영 체제에서 제공하는 응용 프로그램 프로그래밍 인터페이스 (및 명령 줄 셸 유틸리티와 같은 보조 문제)를 명확하고 균일하게 만들기 위해 IEEE 에서 지정한 표준 제품군입니다 . POSIX 표준에 의존하도록 프로그램을 작성할 때, Linux를 포함하여 대규모 유닉스 파생물 (Linux를 포함하지만 이에 국한되지 않음)간에 쉽게 이식 할 수 있습니다. Posix의 일부로 표준화되지 않은 Linux API를 사용하는 경우 나중에 해당 프로그램이나 라이브러리를 다른 Unix-y 시스템 (예 : MacOSX)으로 이식하려는 경우 시간이 더 어려워집니다.


34
아니요, 표준은 API 수준입니다. 지정된 각 호출은 다른 호출 측면에서 커널 또는 C 라이브러리에서 구현 될 수 있으며 Posix 및 프로그램에도 적합합니다. MacOSX는 Posix와 호환됩니다 ( devworld.apple.com/leopard/overview/osfoundations.html 참조) . Windows의 경우, 참조 en.wikipedia.org/wiki/POSIX#POSIX_for_Windows을 : POSIX 호환이 현재는 기업 및 Ultimate 버전에 포함되어 있습니다 - 당신은 / Cygwin에서, w partways 얻을 수 있지만 (안 싼 것들에!) en.wikipedia 사용자를. 조직 / 위키 / Cygwin에서 .
Alex Martelli

23
데스크톱에 대한 Microsoft의 시장 점유율이 적어도 "세계가 따르는 것"으로 만들었 기 때문에 귀하의 의견에 결함이 있습니다.
Jed Smith

29
발톱의 의미는 Microsoft가 다른 플랫폼과의 상호 운용성을 위해 많은 노력을 기울이지 않는다는 것입니다.
mipadi

12
@deltaray 포용, 확장 및 소화 . MS java (비표준 java.util. java.security, java.io, java.lang 및 java.awt), Internet Explorer (거의 '탐색기'라고 함) 및 .NET (예, 부분적으로 릴리스 된 것을 알고 있습니다. .NET의 소스이지만 라이센스는 제한적이며 아직 리눅스 포트가 아닙니다. 모노는 불완전합니다). 또한 exFAT 특허 . 당신은 절대적으로 맞습니다.
Wyatt8740

25
Microsoft's market share on desktops, at least, makes it "what the world follows"-2009 년 이후이 의견 이후로 많은 변화가
GMA

516

POSIX 7이 정의 하는 가장 중요한 것

  1. C API

    다음 과 같이 ANSI C 를 크게 확장합니다 .

    • 더 많은 파일 작업 : mkdir, dirname, symlink, readlink, link(하드 링크), poll(), stat, sync,nftw()
    • 처리 및 스레드 : fork, execl, wait, pipe, semaphors이 sem_*(공유 메모리 shm_*) kill, 스케줄링 매개 변수 ( nice, sched_*), sleep, mkfifo,setpgid()
    • 네트워킹 : socket()
    • 메모리 관리 : mmap, mlock, mprotect, madvise,brk()
    • 유틸리티 : 정규식 ( reg*)

    이러한 API는 또한 의존하는 기본 시스템 개념을 결정 fork합니다 ( 예 : 프로세스 개념 필요).

    대부분의 리눅스 시스템 호출 예를 들어, 특정 POSIX C API 함수를 구현하기 위해 존재하며, 리눅스 호환을 sys_write, sys_read... 그 콜의 대부분도하지만 리눅스 특정 확장자를 가지고있다.

    주요 Linux 데스크탑 구현 : glibc. 많은 경우 시스템 호출에 얕은 래퍼를 제공합니다.

  2. CLI 유틸리티

    예 : cd, ls, echo, ...

    많은 유틸리티는 해당 C API 함수에 대한 직접 쉘 프론트 엔드입니다 (예 :) mkdir.

    주요 리눅스 데스크톱 구현 : 작은 사람을위한 GNU로 coreutils은 큰 사람을위한 별도의 GNU 프로젝트 : sed, grep, awk, ... 일부 CLI 유틸리티는 배쉬에 의해 구현되는 기본 기능으로 .

  3. 쉘 언어

    예 : a=b; echo "$a"

    주요 리눅스 데스크톱 구현 : GNU 배쉬 .

  4. 환경 변수

    예 : HOME, PATH.

    PATH 슬래시가 PATH검색을 방지하는 방법을 포함하여 검색 의미가 지정됩니다 .

  5. 프로그램 종료 상태

    ANSI C는 성공 0또는 실패, 나머지 구현은 정의 된 상태로 둡니다.EXIT_SUCCESSEXIT_FAILURE

    POSIX는 다음을 추가합니다.

    • 126: 명령을 찾았지만 실행할 수 없습니다.

    • 127: 명령어를 찾을수 없음.

    • > 128: 신호에 의해 종료됩니다.

      그러나 POSIX는 128 + SIGNAL_IDBash가 사용 하는 규칙 을 지정하지 않는 것 같습니다 : /unix/99112/default-exit-code-when-process-is-terminated

  6. 정규식

    BRE (기본) 및 ERE (확장)의 두 가지 유형이 있습니다. 기본은 더 이상 사용되지 않으며 API를 중단하지 않도록 유지되었습니다.

    이들은 C API 함수로 구현되며 CLI 유틸리티 전체에서 사용됩니다. 예를 들어 grep기본적으로 BRE를 허용하고 ERE를 사용 -E합니다.

    예 : echo 'a.1' | grep -E 'a.[[:digit:]]'

    주요 Linux 구현 : glibc는 regex.hgrep 에서 백엔드로 사용할 수 있는 프로그램을 구현합니다 .

  7. 디렉토리 구조

    예 : /dev/null,/tmp

    Linux FHS는 POSIX를 크게 확장합니다.

  8. 파일명

    • / 경로 구분자
    • NUL 쓸 수 없다
    • .이다 cwd, ..부모
    • 휴대용 파일 이름
      • 전체 경로에 최대 14 자, 256자를 사용하십시오.
      • 다음을 포함 할 수 있습니다 : a-zA-Z0-9._-

    참조 : 파일 시스템에 대한 POSIX 호환은 무엇인가?

  9. 명령 행 유틸리티 API 규칙

    POSIX에서 사용하는 필수 사항은 아니지만 GNU에서는 그렇지 않습니다. 그러나 사실, 너무 제한적입니다 (예 : 단일 문자 플래그 만 (예 -a:), 이중 하이픈 긴 버전 (예 :) 없음 --all).

    널리 사용되는 몇 가지 규칙 :

    • - 파일이 예상되는 stdin을 의미
    • --플래그를 종료합니다. 예 ls -- -l를 들어 이름이 지정된 디렉토리를 나열합니다.-l

    Linux 명령 행 스위치 및 인수에 대한 표준이 있습니까?를 참조하십시오 .

  10. "POSIX ACL을"에 대한 백엔드로 사용되는 예 (액세스 제어 목록) setfacl.

    이것은 철회 되었지만 Linux를setxattr 포함하여 여러 OS에서 구현되었습니다 .

POSIX는 누가 준수합니까?

많은 시스템이 POSIX를 엄격하게 따르지만 실제로 표준을 유지하는 Open Group에서 인증 한 시스템은 거의 없습니다. 주목할만한 인증 된 것들 :

  • OS X (Apple) X는 10과 UNIX를 모두 나타냅니다. 2001 년경에 출시 된 최초의 Apple POSIX 시스템이었습니다. 참조 : OSX는 POSIX OS입니까?
  • AIX (IBM)
  • HP-UX (HP)
  • 솔라리스 (Oracle)

대부분의 Linux 배포판은 호환성을 준수하지만 호환성 검사를 원하지 않기 때문에 인증되지 않았습니다. Inspur의 K-UXHuawei의 EulerOS 는 인증 된 두 가지 예입니다.

인증 된 시스템의 공식 목록은 https://www.opengroup.org/openbrand/register/위키 페이지에서 확인할 수 있습니다.

윈도우

Windows는 일부 전문 배포판에 POSIX를 구현했습니다.

이 기능은 옵션 기능이므로 프로그래머는 대부분의 최종 사용자 응용 프로그램에이 기능을 사용할 수 없습니다.

Windows 8에서는 지원이 더 이상 사용되지 않습니다.

2016 년에는 "Linux 용 Windows 하위 시스템"이라는 새로운 공식 Linux 유사 API가 발표되었습니다. 그것은 ELF는 실행의 부품, 리눅스 시스템 호출을 포함 /proc파일 시스템, 강타, GCC (? TODO 가능성의 glibc) apt-get: 더 https://channel9.msdn.com/Events/Build/2016/P488 내가 믿는 있도록하는 것이 Windows가 POSIX를 전부 또는 전부 실행하지 못하게합니다. 그러나 최종 사용자 대신 개발자 / 배포에 중점을 둡니다. 특히 Windows GUI에 대한 액세스를 허용 할 계획이 없었습니다.

공식 Microsoft POSIX 호환성에 대한 과거 개요 : http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/

Cygwin 은 Windows에 "실제 POSIX API 기능을 제공"하는 "GPL 타사 프로젝트"로 잘 알려져 있지만 "Windows에서 실행하려면 소스에서 응용 프로그램을 다시 작성해야합니다". MSYS2 는 Cygwin 위에 더 많은 기능을 추가하는 것으로 보이는 관련 프로젝트입니다.

기계적 인조 인간

Android에는 Android O 현재 POSIX를 완전히 지원하지 않는 자체 C 라이브러리 (Bionic) 가 있습니다. Android POSIX와 호환됩니까?

보너스 레벨

리눅스 표준 자료는 더 POSIX를 확장합니다.

비 프레임 색인을 사용하면 훨씬 더 읽기 쉽고 검색 할 수 있습니다. http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html

grepping을 위해 HTML 페이지의 전체 압축 버전을 받으십시오. POSIX C API 함수 목록은 어디에 있습니까?


17
환상적인 예, 당신이 정의뿐만 아니라 수용 된 답변을 가지고 있다면 이것이 최고의 답변이 될 것입니다.
Marc

8
@Marc 감사합니다! 나는 사람들이 아마 그와 피할 중복에 읽을 이미 가지고 다른 답변에서 말했다 무엇 반복하지 않으려 고 ;-)이 알려진 딜레마는 다음과 같습니다 meta.stackoverflow.com/questions/305645/...
치로 틸리冠状病毒审查六四事件 法轮功

1
POSIX가 무엇을 다루고 무엇을 다루지 않는지를 실제로 설명하는 것이 좋습니다.
sleske

4
문헌의 어느 곳에서나 "POSIX 준수"팝업이 표시되고 POSIX 사람들의 일반적인 정의는 "유닉스 계열 운영 체제 간의 상호 운용성 표준 세트"입니다. 유용하지만,이 정의는 특히 상호 운용 될 것으로 예상되는 기능과 관련하여 많은 의심을 남깁니다. 물론 POSIX 사양 전체를 읽고 세부 사항을 자세히 살펴볼 수 있습니다. 그러나이 답변은 POSIX의 범위에 대한 큰 그림을 얻는 데 필요한 요약을 제공합니다. 시간을내어 Ciro에게 특별한 감사를드립니다!
ARX

정수 유형에 대한 Posix 보증을 추가하는 것이 좋습니다. 나는 정확히 무엇이고 지정되지 않았지만 최소한 Posix에는 uint8_t, uint16_t, uint32_t 및 해당 서명 유형이 필요하다는 것을 알고 있습니다. "int"와 같은 유형이 2의 거듭 제곱을 가지며 시스템이 32 값 비트, 1 부호 비트 및 31 패딩 비트를 가진 "int"를 갖는 것과 같은 불쾌한 작업을 수행하지 않을지 확실하지 않습니다. [uint32_t를 증가 시키면 UB를 얻을 수 있습니다]; 표준이 편리하다면 그 점에 대해 무엇이고 보장되지 않는지 말하는 것이 좋을 것입니다.
supercat 2016 년

74

POSIX 는 :

POSIX (/ ˈpɒzɪks /로 발음) 또는 "휴대용 운영 체제 인터페이스 [유닉스 용]" 1 은 소프트웨어 용 쉘 및 유틸리티 인터페이스와 함께 응용 프로그래밍 인터페이스 (API)를 정의하기 위해 IEEE에서 지정한 관련 표준 제품군의 이름입니다. 표준은 모든 운영 체제에 적용될 수 있지만 Unix 운영 체제의 변형과 호환됩니다.

기본적으로 (대부분의) 공통 API와 유틸리티를 사용하여 다양한 UNIX 버전의 개발 및 사용의 어려움을 완화시키는 일련의 조치였습니다. 제한된 POSIX 준수도 다양한 버전의 Windows로 확장되었습니다.


1. POSIX는 모든 * nix OS (커널)가 이러한 시스템 호출 집합을 가져야한다고 말합니다. 권리? 2. WINDOWS / MAC가 POSIX를 준수합니까? WINDOWS (95,98,2000, xp, vista, 7)가 공통 표준 (자체 소유 일 수 있음) 표준을 따르고 있습니까? 즉, Microsoft world의 POSIX ==?
클로 발톱

1
기본적으로 그것은 개발의 고통을 완화시키기위한 일련의 조치였다. 였다??
클로 발톱

5
나는 단어의 사용은 의문을 제기 했다 도 있지만, 논쟁의 여지가있다. 귀하의 질문에 대답하기 위해 : (1) 아니요, POSIX는 커널과 관련이 있으며, 어떻게 작동해야하는지 설명합니다. (2) OS X은 BSD이며 POSIX와 상당히 호환되지만 회색 영역이 있습니다. Windows 2008은 POSIX 불만에 가장 가깝습니다. Microsoft 세계에는 POSIX와 동등한 것이 없습니다.
Jed Smith

1
@ claws : cletus의 대답에 따라 지역을 더럽히는 것은 아닙니다 ...하지만. 나는 대답에서 POSIX.1-2008을 연결했습니다 ... 바로 거기에.
제드 스미스

3
@Jed Smith, Mac OS X 준수 측면에서 회색 영역은 없습니다. Mac OS X은 POSIX가 하위 집합 인 단일 UNIX 사양 v3을 준수하도록 인증되었습니다.
Michael Aaron Safyan

43

난처한 "비공식적 인"설명을 드리겠습니다.

POSIX는 "UNIX"및 UNIX 유사 시스템과 호환되지 않는 시스템을 구별하려고 시도하는 표준 세트입니다. 미국 정부가 조달 목적으로 작성했습니다. 이 아이디어는 미국 연방의 조달 부서에서 기존의 코드 기반 또는 프로그래밍 직원이 이식 할 수없는 시스템을 제외하는 데 사용할 수있는 방식으로 다양한 종류의 입찰 및 계약에 대한 요구 사항을 법적으로 지정하는 방법이 필요하다는 것이 었습니다.

POSIX는 사실상 유사한 경쟁 시스템 세트를 설명하기 위해 사실상 사후에 작성되었으므로 구현 가능한 방식으로 작성되지 않았습니다.

예를 들어, POSIX 하위 시스템은 실질적인 이식성과 UNIX 시스템과의 호환성 측면에서 본질적으로 쓸모가 없지만 Microsoft NT는 일부 입찰에 적합한 POSIX 규격을 준수하여 작성되었습니다.

유닉스에 대한 다양한 표준이 수십 년 동안 작성되었습니다. SPEC1170 (호환 적으로 구현되어야하는 1,170 개의 함수 호출 지정) 및 SUS (Single UNIX Specification)의 다양한 구현이 있습니다.

대부분의 경우 이러한 "표준"은 실제 기술 적용에 적합하지 않습니다. 그것들은 대부분 논쟁, 법적인 논쟁 및 기타 역기능상의 이유로 존재합니다.


1
그렇다면 리눅스는 어떻게 많은 확장을 포함하여 대부분의 POSIX를 구현할까요?
ninjalj 2016 년

8
@ninjalj : 리눅스는 실용적인 유닉스 계열 함수를 구현하기 위해 작성되었습니다. POSIX를 준수하면서 그렇게하는 것이 완벽합니다. 그러나 필자의 요점은 POSIX가 새로운 운영 체제를 구현하기위한 사양으로 만들어지지 않았다는 것입니다 ... 미국 정부 조달 직원이 입찰에서 특정 범주의 자격을 갖춘 사람들과 입찰하지 않은 사람들을 구별하는 방법으로 만들어졌습니다. . Linux의 초점은 합리적인 호환성, 강력하고 성능이 좋은 방식으로 사용 가능한 기능을 제공하는 것입니다. POSIX는 그 과정에서 우연이 아닙니다.
Jim Dennis

3
POSIX가 사실 이후에 작성되었다고 주장하는 것은 당신에게 독창적입니다! 이는 적어도 하나의 준수 구현이 존재할 때까지 합의가 이루어지지 않는 우수한 표준 개발 조직 (SDO)의 특징입니다.
fpmurphy

4
@fpmurphy : 하나 또는 두 개의 상호 운용 가능한 구현을 기반으로 한 사후 사실 사양을 작성하는 것은 의도적으로 느슨한 커플 링을 통해 상호 작용하는 IETF ... 네트워킹 프로토콜 표준의 표준입니다. OS 표준화를위한 성공적인 프로세스는 아닙니다. 프로그램과 시스템 (커널 또는 마이크로 커널 및 해당 서브 시스템 서버) 간의 API는 네트워크를 통한 클라이언트 및 서버 또는 피어보다 훨씬 밀접하게 연결되어 있습니다. (나는 그것이 불가능하다고 말하는 것이 아니라 단지 차이점이 있으며 역사가 후자가 유망한 것으로 보이지 않았다는 것을 지적하는 것입니다).
Jim Dennis

2
1985 년에 IEEE가 POSIX를 다시 지정하려는 노력은 미국 정부에 의해 촉진되었습니다. 조사를하고 역사 책 등을 읽습니다.
rustyx

29

POSIX는 크로스 플랫폼 소프트웨어를보다 쉽게 ​​작성할 수 있도록하는 운영 체제의 표준입니다. 유닉스 세계에서 특히 큰 문제입니다.


15
크로스 플랫폼 코드를 작성하기 쉽게 "추정"된 것이 아니라 크로스 플랫폼 코드를 작성하기가 더 쉽습니다. 마이크로 소프트는 윈도우가 다른 사람들보다 낫다고 생각하고 준수 할 필요가 없기 때문에 유일한 예외는 Windows입니다. 그러나 특히 Mac과 Linux가 더 많은 시장 점유율을 확보함에 따라 이것이 효과가 없을 것으로 예상합니다. 이들이 "개발자, 개발자, 개발자"를위한 것이라면 개발자가 UNIX 준수를 원한다는 것을 알게 될 것입니다.
Michael Aaron Safyan

내가 한 것보다 훨씬 더 밀접하게 일하는 사람들로부터 들었던 것을 기반으로하면 일이 쉬워 졌을 지 모르지만 POS에 대한 한 번의 실행에 대한 인상은 충분하지 않았습니다. 사람들은 그것이 운영 체제에 대한 "표준"이라고 들었을 때 얻는다.
행크 게이

6
그들은 자신이 "다른 사람보다 낫다"고 생각하지 않습니다. 그들은 자신이 다른 사람보다 크다는 것을 알고 있습니다. 또한 시장 점유율을 잃으면 서 조정을 바꾸는 이유이기도합니다. 넷스케이프는 웹 표준이 더 이상 대중적이지 않을 때 웹 표준에 대해 더 많은 관심을 가지기 시작했습니다.
Ken

POSIX API 만 사용하도록 응용 프로그램을 작성하면 다른 Unix와 Unix와 유사한 운영 체제간에 훨씬 쉽게 이식 할 수 있습니다. 그러나 가장 일반적인 공통 분모 합의 표준이므로 운영 체제 또는 하드웨어에 특정한 유틸리티 또는 응용 프로그램은 일반적으로 다시 작성해야합니다.
fpmurphy

2
@Ken 때문에 Google 크롬이 너무 편해지지 않도록해야합니다.
Wyatt8740

29

POSIX는 IEEE와 Open Group이 제시 한 일련의 표준으로 이상적인 Unix의 작동 방식을 설명합니다. 프로그래머, 사용자 및 관리자는 모두 POSIX 문서에 익숙해 질 수 있으며 POSIX 호환 Unix가 언급 된 모든 표준 기능을 제공 할 것으로 기대합니다.

모든 Unix는 Solaris, Mac OS X, IRIX, BSD 및 Linux에서 약간 씩 다른 작업을 수행하므로 POSIX는 표준 환경을 정의 할 때 산업계에 특히 유용합니다. 예를 들어, C 라이브러리의 대부분의 함수는 POSIX를 기반으로합니다. 따라서 프로그래머는 자신의 응용 프로그램에서 하나를 사용할 수 있으며 대부분의 Unices에서 동일하게 작동 할 것으로 기대할 수 있습니다.

그러나 유닉스의 다양한 영역은 일반적으로 표준 영역보다는 초점입니다.

POSIX의 가장 큰 장점은 직접 읽을 수 있다는 것입니다.

공개 그룹 기본 사양 문제 7

이슈 7은 POSIX.1-2008로 알려져 있으며 새로운 사항이 있지만 POSIX.1에 대한 Google-fu는 Unix의 전체 역사를 볼 수 있습니다.


2
"UNIX"라는 용어를 잘못 사용하고 있다고 생각합니다. UNIX는 이제 단일 UNIX 사양을 참조하며 모든 UNIX 운영 체제는 단일 UNIX 사양을 준수하는 운영 체제입니다. 아마도 유닉스 계열을 의미합니까?
Michael Aaron Safyan

8
@Michael : 다른 답변에 대한 귀하의 의견을 감안할 때, 당신은 분명히 건설적이지 않은 의견을 가진 매우 양극화 된 사람입니다. 이 특정 의견은 매우 현명한 것이며, 귀하가 동의하지 않는 라벨의 선택과 상관없이 제 의미는 전달되었습니다. 또한 Windows는 고급 버전에서 POSIX를 준수합니다. 숨을 쉬고 물러서세요
Jed Smith

1
@Jed Smith, 강력한 의견은 제쳐두고이 게시물의 의미는 UNIX를 준수하는 것으로 인증 된 일부 운영 체제가 그렇지 않다는 것입니다. 따라서 오해의 소지가 있다고 말할 수 있습니다. 또한 Windows와 관련하여 호환되지 않는 에디션이있는 경우 개발자는 Windows 플랫폼을 대상으로 할 때 POSIX에 의존 할 수 없으므로 POSIX의 전체 목적을 무시합니다.
Michael Aaron Safyan

유닉스는 운영 체제입니다. UNIX는 The Open Group이 소유 한 브랜드입니다. UNIX95, UNIX98 또는 UNIX03 브랜딩 프로파일 중 하나에 인증 된 시스템은 특정 버전의 단일 UNIX 스펙에 부합하며 대부분의 브랜딩 요구 사항을 구성하는 UNIX라는 용어를 사용할 수 있습니다.
fpmurphy

6

1985 년에 컴퓨터 업계의 여러 회사에서 개인이 합쳐 POSI (Portable Operating System Interface for Computer Environments) 표준을 개발했습니다.이 표준은 주로 SVID (UNIX System V Interface Definition) 및 기타 초기 표준화 노력을 기반으로합니다. 이러한 노력은 교육 및 조달 비용을 최소화하기 위해 표준 컴퓨팅 환경이 필요한 미국 정부에 의해 촉진되었습니다. 1988 년에 출시 된 POSIX는 운영 체제의 API, 셸 및 유틸리티 인터페이스를 정의하는 IEEE 표준 그룹입니다. UNIX와 유사한 시스템을 목표로하지만 표준은 호환되는 모든 운영 체제에 적용될 수 있습니다. 이제 이러한 표준이 수용되었으므로 소프트웨어 개발자는 모든 호환 버전의 UNIX, Linux에서 실행되는 응용 프로그램을 개발할 수 있습니다.

책에서 : 리눅스에 대한 실용 가이드


4

Posix는 OS가 아니라 "OS 표준"입니다. 실제로 존재하지 않지만 문서가있는 가상 OS로 상상할 수 있습니다. 이 논문은 미국에서 가장 큰 표준 조직인 IEEE에 의해 정의 된 "posix 표준"입니다. 이 사양을 구현하는 OS는 "Posix 호환"입니다.

정부 규정은 투자에 Posix 호환 솔루션을 선호하므로 Posix 호환은 특히 미국의 대기업 IT에게 상당한 재정적 이점이 있습니다.

완전히 posix를 준수하는 OS에 대한 보상은 모든 Posix 호환 응용 프로그램을 완벽하게 컴파일하고 실행한다는 보장입니다.

리눅스가 가장 잘 알려져 있습니다. OSX, Solaris, NetBSD 및 Windows NT도 여기에서 재생됩니다. Free 및 OpenBSD는 "거의"Posix 호환입니다. WinNT의 posix-compliance는 위의 정부 규정을 피하기위한 의사 솔루션 일뿐입니다.


3

이 표준은 유닉스 계열 운영 체제에 공통적 인 기초를 제공합니다. 쉘이 작동하는 방법, ls 및 grep와 같은 명령에서 예상 할 사항 및 C 작성자가 사용할 수있는 많은 C 라이브러리를 지정합니다.

예를 들어, 명령 행 사용자가 명령을 함께 묶는 데 사용하는 파이프가 여기에 자세히 지정되어 있습니다. 이는 C의 popen (파이프 열기) 기능이 ISO C 표준이 아니라 POSIX 표준임을 의미합니다.


3

POSIX는 휴대용 운영 체제 인터페이스를 나타내며 응용 프로그램 이식성을 용이하게하도록 설계된 IEEE 표준입니다. POSIX는 공급 업체 컨소시엄이 단일 표준 버전의 UNIX를 만들려고 시도합니다.


0

POSIX는 운영 체제 또는 프로그램에 대한 표준 세트를 정의합니다. 목표는 UNIX 계열 시스템과 호환되는 새 소프트웨어를 작성하는 것입니다.

예를 들어 Linux에서 실행되는 프로그램은 Solaris, HP-UX 및 AIX 등과 같은 다른 UNIX 유사 시스템에서도 컴파일 및 실행할 수 있습니다.

가장 보편적 인 예 GNU Bash는 100 % POSIX 준수 및 gawk유틸리티입니다.


0

Posix는 상호 운용성, 이식성 및 포크의 사용 및 메커니즘, 권한 및 파일 시스템 표준 (예 : / etc, / var, / usr 등) 과 같은 기타 영역을 관리합니다 . 합니다. 따라서 개발자가 Linux와 같은 Posix 호환 시스템에서 프로그램을 작성할 때 일반적으로 항상 IBM의 AIX 시스템 또는 다른 상용 Unix 변종과 같은 다른 posix 호환 시스템에서 실행되는 것은 아닙니다. Posix는 소프트웨어 개발을 용이하게하기 위해 노력하는 것이 가장 좋습니다. 이 답변이 의미가 있기를 바랍니다.

내 잘못을 지적 해 준 Jed Smith & Tinkertim에게 감사합니다. :(


파일 시스템 표준은 POSIX 외부에서 처리됩니다.
Jed Smith

POSIX를 LSB (Linux Standard Base)와 혼동하고 있습니다. POSIX 호환 운영 체제는 FBSD와 Linux이지만 파일 시스템 구성과 기본 라이브러리 설치는 다소 다릅니다.
Tim Post

0

OS를 최신 UNIX OS와 호환 가능하게 만드는 방법에 대한 사양 (청사진) 이것이 macOS와 GNU / Linux가 터미널 명령 행, GUI, 라이브러리 등이 매우 유사한 이유입니다. 둘 다 POSIX 청사진에 따라 설계 되었기 때문입니다.

POSIX는 엔지니어와 프로그래머에게 코딩 방법이 아니라 코딩 방법을 알려줍니다.


-1

POSIX에 관한 몇 가지 사실은 그렇게 밝지 않습니다.

POSIX는 또한 시스템 호출 인터페이스 또는 API이며 거의 30 년이되었습니다.

단일 CPU가있는 단일 컴퓨터를 사용하여 로컬 스토리지에 대한 직렬화 된 데이터 액세스를 위해 설계되었습니다 .

POSIX에서 보안은 설계 상 주요 관심사가 아니 었으며 수년에 걸쳐 수많은 경쟁 조건 공격이 발생했으며 프로그래머는 이러한 한계를 극복해야했습니다.

보다 안전한 POSIX API 디자인으로 피할 수있는 심각한 버그가 여전히 발견되고 있습니다.

POSIX는 사용자가 한 번에 하나의 동기 호출을 발행하고 그 결과를 기다렸다가 다음을 발행 할 것을 기대합니다. 오늘날의 프로그래머는 전체 처리량을 개선하기 위해 한 번에 많은 비동기 요청을 발행 할 것으로 예상합니다.

이 동기 API는 대기 시간이 긴 원격 및 클라우드 객체에 액세스하는 데 특히 나쁩니다.


동기식 커널 API는 단일 스레드 프로세스 및 직렬화 된 IO를 의미 할 필요가 없습니다. 또한 SMP 시스템과는 아무런 관련이 없습니다. 이것들은 완전히 관련이 없습니다. (동기 커널 API가 차선책이지만 게시물에
나오는
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.