POSIX가 여기저기서 언급되는 것을 계속 보았고 Wikipedia 페이지에서 다음 발췌문을 발견할 때까지 항상 이를 기본 UNIX 표준으로 생각했습니다.그룹 열기
Open Group은 가장 유명한 UNIX 상표 인증 기관으로,단일 UNIX 사양 기술 표준,POSIX 표준을 확장하고 UNIX 시스템의 공식 정의입니다..
UNIX 시스템의 공식 정의가 POSIX의 확장이라면 POSIX는 정확히 무엇입니까? ,,, UNIX 세계의 시금석인 것 같지만 전체 그림에 어떻게 들어맞는지 모르겠습니다.
답변1
POSIX는 Single UNIX 사양보다 앞서 1988년에 처음으로 표준이 되었습니다. 이는 다양한 UNIX 분기와 UNIX 유사 시스템을 모두 통합하려는 시도 중 하나였습니다. POSIX는 IEEE 표준이지만 IEEE는 UNIX® 상표를 소유하고 있지 않기 때문에 당시 기존 UNIX API를 기반으로 하더라도 표준은 UNIX®가 아닙니다. 첫 번째 표준 POSIX.1의 공식 명칭은 IEEE std 1003.1-1988입니다. [1] IEEE는 이 표준의 사본을 얻기 위해 상당한 비용을 청구합니다.
Open Group은 IEEE의 POSIX 표준 작업을 기반으로 1997년에 단일 UNIX 사양(SUSv2)을 발표했습니다. SUSv3는 IEEE와 The Open Group(Austin Group이라고 함) 간의 공동 작업 그룹에서 2001년에 출시되었습니다. POSIX:2001[라고도 하는 SUSv32]. 이제 SUSv4의 핵심인 POSIX:2004와 POSIX:2008이 있습니다. UNIX®가 무엇인지에 관해 말하자면 UNIX®는 현재등기상표권자는 그렇다고 말합니다. 1994년부터 오픈 그룹.
Novell은 UNIX®의 탄생지인 AT&T/USL로부터 UNIX® 시스템 사업부를 인수했습니다. 1994년에 그들은 UNIX® 상표권을 X/Open에 매각했습니다.삼]는 이제 The Open Group으로 알려져 있습니다. 그런 다음 UNIX® 소스 코드를 SCO에 UNIXWARE®로 판매했습니다. [삼] UNIX® 자체는 여러 번 포크되었습니다.[4][5] 그 이유 중 하나는 AT&T의 라이선스 모델 때문입니다. UNIX®를 구입하면 운영 체제의 전체 소스 코드와 이를 구축하기 위한 전체 도구 체인이 제공됩니다. 소스 코드의 수정 사항은 AT&T의 UNIX® 라이선스에 따라 누구든지 배포하고 사용할 수 있습니다. 라이센스 비용은 수천입니다.
BSD는 UNIX® 운영 체제에 많은 향상된 기능을 추가하는 Berkeley 프로젝트입니다. BSD 코드는 GNU 프로젝트 및 Linux에서 사용하는 GPL과 달리 AT&T 소스 코드보다 더 자유로운 라이센스에 따라 릴리스되므로 라이센스 비용이 필요하지 않거나 소스 코드와 함께 배포되기도 합니다. 이로 인해 BSD 코드의 상당 부분이 다양한 상용 UNIX 배포판에 포함됩니다. 약 4.3BSD에서는 원래 AT&T UNIX® 소스 코드에 대한 모든 요구 사항을 거의 대체했습니다. FreeBSD/NetBSD/OpenBSD는 모두 4.3BSD의 분기이며 원본 AT&T 소스 코드가 없는 완전한 운영 체제입니다. 또한 UNIX® 상표에 대한 권리는 없지만 해당 코드의 대부분은 상용 UNIX 운영 체제에서 사용됩니다. UNIX에서 사용되는 Socket API는 BSD에서 개발되었으며 Unix Fast Filesystem 코드는 자체적으로 향상된 기능을 통해 다양한 UNIX 운영 체제(예: Solaris)에서 차용되어 사용되었습니다.
Linux는 1991년에 개발되었지만 BSD와 달리 처음부터 대부분의 UNIX 사용자 공간을 클린룸으로 구현한 기존 GNU 프로젝트를 사용하여 개발되었습니다. 이는 대부분의 POSIX 호환성을 구현하고 UNIX와 설계가 유사하지만 BSD만큼 AT&T 또는 UNIX®와 밀접하게 연결되어 있지는 않습니다.
답변2
가장 중요한 것POSIX 7정의
-
매우확장된 ANSI C같은 것들:
- 추가 파일 작업:
mkdir
,dirname
,symlink
,readlink
,link
(하드 링크),poll()
,stat
,sync
,nftw()
- 프로세스 및 스레드:
fork
,execl
,wait
,pipe
, 신호sem_*
, 공유 메모리(shm_*
),kill
, 스케줄링 매개변수(nice
,sched_*
),sleep
,mkfifo
,setpgid()
- 네트워킹:
socket()
- 메모리 관리:
mmap
,mlock
,mprotect
,madvise
,brk()
- 유틸리티: 정규식(
reg*
)
fork
또한 이러한 API는 프로세스 개념 과 같이 API가 의존하는 기본 시스템 개념을 식별합니다 .많은리눅스 시스템 호출
sys_write
특정 POSIX C API 기능을 구현하고 이를 Linux와 호환되도록 만들기 위해 존재합니다 . 예를 들어sys_read
... 그러나 이러한 시스템 호출 중 상당수에는 Linux 관련 확장도 있습니다.주요 Linux 데스크탑 구현: glibc. 많은 경우 시스템 호출을 위한 얕은 래퍼만 제공합니다.
- 추가 파일 작업:
-
예를 들어:
cd
,ls
,echo
, ...많은 유틸리티는
mkdir
.주요 Linux 데스크탑 구현: 소규모 GNU Coreutils, 대규모 개별 GNU 프로젝트:
sed
,grep
,awk
, ... 일부 CLI 유틸리티는 Bash에서 구현됩니다.내장으로. -
예를 들어,
a=b; echo "$a"
주요 Linux 데스크탑 구현:GNU 구타.
-
예를 들어:
HOME
,PATH
.PATH
검색 의미 지정, 포함하다PATH
슬래시가 검색을 차단하는 방법. -
ANSI C는 성공
0
의 경우 "또는" , 실패의 경우 "또는"을 의미하며 나머지 구현을 정의합니다.EXIT_SUCCESS
EXIT_FAILURE
POSIX가 추가되었습니다:
126
: 명령을 찾았지만 실행할 수 없습니다.127
: 명령어를 찾을수 없음.> 128
: 신호에 의해 종료됩니다.128 + SIGNAL_ID
그러나 POSIX는 Bash에서 사용하는 규칙을 지정하지 않는 것 같습니다 .프로세스 종료 시 기본 종료 코드는 무엇입니까?
-
BRE(기본)와 ERE(확장)의 두 가지 유형이 있습니다. Basic은 더 이상 사용되지 않으며 API를 중단하지 않기 위해 유지됩니다.
이는 C API 함수로 구현되며
grep
기본적으로 BRE를 허용하는 등 CLI 유틸리티 전반에 걸쳐 사용됩니다-E
.예를 들어:
echo 'a.1' | grep -E 'a.[[:digit:]]'
Linux의 주요 구현: glibc는 다음 기능을 구현합니다.정규식.h
grep
백엔드로 사용할 수 있는 프로그램 -
예를 들어:
/dev/null
,/tmp
리눅스FHSPOSIX를 크게 확장합니다.
-
/
경로 구분 기호입니다NUL
서비스 중단.
네cwd
,..
부모님- 휴대용 파일 이름
- 전체 경로에는 최대 14자, 256자를 사용하세요.
- 다음만 포함할 수 있습니다.
a-zA-Z0-9._-
또한보십시오:https://stackoverflow.com/questions/18550253/what-is-posix-compliance-for-filesystem
-
필수는 아니며 POSIX에서 사용되지만 다른 곳, 특히 GNU에서는 거의 사용되지 않습니다. 그러나 실제로는 단일 문자 로고(예:
-a
)만 있고 이중 하이픈으로 구성된 긴 버전(예:--all
)이 없어 너무 제한적입니다.널리 사용되는 몇 가지 규칙:
-
필요한 파일의 stdin을 나타냅니다.--
종료 플래그(예: 다음과 같은ls -- -l
디렉터리 나열)-l
"POSIX ACL"(액세스 제어 목록), 예를 들어 백엔드로 사용됩니다.
setfacl
.이것빼는그러나 이는 다음을 포함한 다양한 운영 체제에서 구현되었습니다.리눅스에서
setxattr
.
POSIX를 준수하는 사람은 누구입니까?
많은 시스템이 POSIX를 엄격하게 준수하지만 실제로 표준을 유지 관리하는 Open Group의 인증을 받은 시스템은 거의 없습니다. 주목할만한 인증은 다음과 같습니다.
- OS X(Apple) X는 10과 UNIX를 나타냅니다. 2001년경에 출시된 최초의 Apple POSIX 시스템이었습니다. 또한보십시오:https://stackoverflow.com/questions/5785516/is-osx-a-posix-os
- AIX(IBM)
- HP-UX(휴렛팩커드)
- 솔라리스(오라클)
대부분의 Linux 배포판은 규정 준수가 매우 뛰어나지만 규정 준수 확인 비용을 지불하고 싶지 않기 때문에 인증되지 않았습니다.인스퍼 K-UX그리고화웨이 오일러OS다음은 두 가지 인증된 사례입니다.
인증된 시스템의 공식 목록은 다음에서 확인할 수 있습니다.https://www.opengroup.org/openbrand/register/그리고 아직 거기 있어위키 페이지.
윈도우
Windows는 일부 전문 배포판에 POSIX를 구현합니다.
이는 선택적인 기능이기 때문에 프로그래머는 대부분의 최종 사용자 응용 프로그램에서 이 기능에 의존할 수 없습니다.
Windows 8에서는 더 이상 지원되지 않습니다.
- https://stackoverflow.com/questions/4746043/where-does-microsoft-windows-7-posix-implementation-currently-stand
- https://superuser.com/questions/495360/does-windows-8-still-implement-posix
- 기능 요구 사항:https://windows.uservoice.com/forums/265757-windows-feature-suggestions/suggestions/6573649-full-posix-support
2016년에는 "Linux용 Windows 하위 시스템"이라는 새로운 공식 Linux 유사 API가 발표되었습니다. 여기에는 Linux 시스템 호출, ELF 작업, /proc
파일 시스템의 일부, Bash, 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/
시빈Windows용 "광범위한 POSIX API 기능을 제공"하지만 "Windows에서 응용 프로그램을 실행하려면 소스에서 응용 프로그램을 다시 빌드"해야 하는 잘 알려진 GPL 타사 프로젝트입니다.시스템 2Cygwin 위에 더 많은 기능을 추가하는 것으로 보이는 관련 프로젝트입니다.
기계적 인조 인간
Android에는 Android O부터 POSIX를 완전히 지원하지 않는 자체 C 라이브러리(Bionic)가 있습니다.https://stackoverflow.com/questions/27604455/is-android-posix- Compatible
보너스 레벨
이것리눅스 표준 라이브러리POSIX가 더욱 확장되었습니다.
프레임이 아닌 인덱스를 사용하면 더 읽기 쉽고 검색하기 쉽습니다.http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html
grep용 HTML 페이지의 완전히 압축된 버전을 가져옵니다. https://stackoverflow.com/questions/453993/is-there-a-listing-of-the-posix-api-functions/45832939#45832939
답변3
POSIX는 이식 가능한 운영 체제 표준입니다. 이는 호환 운영 체제가 소프트웨어에 제공해야 하는 특정 유틸리티, API 및 서비스(예: 소켓, 파일 I/O 및 스레드)와 프로그램에서 이러한 기능을 호출하는 방법에 대한 규칙을 설명합니다.
하나의 POSIX 호환 운영 체제용으로 작성된 프로그램이 POSIX 비호환 운영 체제 사이에서보다 다른 POSIX 호환 운영 체제로 더 쉽게 이식될 수 있다는 아이디어입니다. 이것이 FreeBSD에서 Linux로 애플리케이션을 포팅하는 것이 FreeBSD에서 Windows로 애플리케이션을 포팅하는 것보다 훨씬 쉬운 이유입니다(Windows가 표면상 POSIX의 하위 집합을 지원하더라도).
답변4
POSIX는 다른 운영 체제를 위한 다양한 Unix 유사 환경을 포괄하기 위한 UNIX의 하위 집합입니다. 여기에는 처음에는 VMS용 Eunice, Windows NT의 POSIX 특성 및 Apollo Domain/OS와 같은 환경이 포함되었습니다. Unix와 비 Unix 간에 동작이 동일한 운영 체제 서비스 하위 집합에 대한 표준 이식성 API로 생각할 수 있습니다. 바라보다http://standards.ieee.org/develop/wg/POSIX.html더 많은 정보를 알고 싶습니다.