POSIX란?
POSIX : Portable Operating System Interface + UniX
-> 이식 가능한 운영 체제 인터페이스 + 유닉스 호환 운영체제에 보통 X가 붙는 것에서 유래한다.
서로 다른 Unix 기반 OS의 공통 API를 정리하고 표준화하기 위해서 IEEE에서 책정한 Application Interface 표준 규격이다.
UNIX 계열의 운영체제들이 따르고 있는 CLI(Command Line Interface)의 표준이라고 생각해도 좋다.
실제로 Window를 제외한 대부분의 운영체제가 POSIX 표준을 따른다고 한다. (MacOS도 표준을 따르고 있다.)
(MacOS의 CLI 명령어는 리눅스와 동일하고, Window PowerShell은 명령어가 다르다는 것을 알고 있을 것이다.)
IEEE란?
IEEE Computer Society라는 컴퓨팅(하드웨어, 소프트웨어, 표준 등)을 전문으로 하는 전기전자공학회(IEEE)의 기술 학회이다.
우선 Linux와 Unix의 차이부터 알고, 설명을 시작하면 좋을 것 같다.
운영체제에 대해 궁금하신 분은 아래 글을 참고하세요.
📁[CS / 운영체제] 운영체제란? OS 용어 정리 - 쉘, 시스템콜, API
POSIX와 Linux & Unix
리눅스와 유닉스
Unix는 1960년대에 개발된 운영체제이며, 여러 플랫폼에서 실행할 수 있는 최초의 운영체제였다. Unix는 꾸준히 발전되어 왔고, 안정적이고 신뢰할 수 있으며 다양한 유형의 작업을 처리할 수 있어서 지금까지도 표준으로 쓰이고 있다.
(80년대 후반에 POSIX가 만들어졌고, 이후 POSIX 표준을 만족하는 Linux가 만들어 졌다.)
Linux는 1990년대 초에 Unix를 기반으로 만들어진 오픈소스이다. 즉, Unix의 파생물이라고 볼 수 있다.
Unix와 Linux의 구체적인 차이점은 Unix는 독점 운영체제라는 점이고, Linux는 오픈소스라는 점이다.
- Linux는 훨씬 다양한 배포판 또는 버전이 존재하고 다양한 목적으로 사용된다.
- Unix는 일반적으로 몇 가지만 존재하고, 일반적으로 더 크고 강력한 컴퓨터에서 사용하게 된다.
Unix는 지금까지도 Open Group이라는 개방형 표준을 장려하는 단체에 의해 계속해서 유지, 관리되고 있다.
The Open Group은 300개 이상의 단체가 소속되어 있는 기술 중립 산업 연합체이다.

POSIX (Portable Operation System Interface)
Unix를 기반으로 만든 수많은 Linux 기반 운영체제들의 단일 포괄적 표준(Competing Standard)을 만들기 위한 목적으로 제작된 것이 POSIX이다.
파일 시스템이 POSIX와 호환되려면 대표적으로 아래와 같은 조건을 충족해야 한다고 한다.
- 강력한 일관성 제공 - ex) read 전에 write가 발생한 경우, read는 write가 적용된 데이터를 반환해야 한다.
- atomic writes - write는 원자적으로 실행되도록 한다. 즉, write 작업이 완전히 처리되거나 전혀 실행되지 않아야 한다.
- random read, write, truncate(자르기) 또는 fsync*와 같은 특정 작업들을 구현해야 한다.
- 권한(permissions)을 사용하여 파일에 대한 access를 제어하고, chmod, chown 등을 이용하여 권한을 수정한다.

fsync()는 하드웨어를 제어하기 위해 디바이스 파일을 다룰 경우, 디바이스 드라이버 내부 버퍼에 있는 데이터를 모두 적용해야 할 때 사용한다. 즉, 지금 작성한 내용을 물리적 디스크에 반영하는 명령이라고 이해하면 될 것 같다.
Unix를 기반으로 만들어진 Linux 운영체제가 POSIX 표준 인증을 받으려면, POSIX에서 제공하는 특정 테스트 세트를 구입해서 실행하고, 이를 통과하면 인증에 성공하는 방식이다.
Linux에서 일부 성능상의 이유로 따르지 않는 POSIX 표준
Linux는 파일 시스템과 관련하여 "partially POSIX compatible(부분적으로 POSIX와 호환)" 되는 것으로 본다. POSIX에서 요구하는 IO 작업에 필요한 격리기능을 성능상의 이유를 제공하지 않기 때문이다.
read 및 write가 페이지 수준(4kB)에서는 원자적이지만, concurrent write 작업 중에 일부 페이지에 대한 read가 가능하다. 이는 성능 때문에 일부 변경된 것이고, 만약 해당 파일에 대한 concurrent read/write access 시에 불완전한 read, write를 방지하도록 하려면 Application 단에서 lock을 적용해야 한다.
POSIX 표준
운영체제와 Application 사이에는 Library 또는 API를 통해서 소통을 하게 된다.
또한 Library 또는 API에서 운영체제 커널의 기능을 사용하고 동작하게 하려면,
운영체제가 제공하는 System Call을 호출하고, 그 결과를 Application으로 반환받아야 한다.
이 System Call을 규정하고, 커널(kernel)의 필수 요건들을 구성하는 것이 POSIX이다.

POSIX는 Interface라고 했다. 즉, System Call에 대한 표준을 제공하고, 이 표준에 따라 System Call을 구현한다.
System Call은 보통 어셈블리 언어나 C언어로 작성된다고 한다.
POSIX 함수의 예시
- open() : Opens a file for reading or writing
- fork() : Creates a new process
- exit() : Gracefully terminates current process (현재 프로세스를 정상적으로 종료)
oracle에서 정리한 posix 명령어 관련 문서입니다.
https://docs.oracle.com/cd/E19048-01/chorus4/806-3328/6jcg1bm05/index.html
출처
https://flaming.codes/ko/posts/the-many-differences-between-unix-and-linux
www.quobyte.com/storage-explained/posix-filesystem/
'[ Computer Science ] > Linux 리눅스' 카테고리의 다른 글
[Linux/Unix] POSIX와 Unix 계열의 표준 입출력 (0) | 2024.04.23 |
---|---|
[리눅스] VI 에디터 명령어 정리 (0) | 2023.07.21 |
[리눅스] 파일 복사, 하드 링크와 소프트 링크 (0) | 2023.07.10 |
[리눅스] 프로세스, 상태 확인하기 (0) | 2023.07.10 |
[리눅스] 리다이렉션과 파이프, grep 명령어 (0) | 2023.07.10 |
POSIX란?
POSIX : Portable Operating System Interface + UniX
-> 이식 가능한 운영 체제 인터페이스 + 유닉스 호환 운영체제에 보통 X가 붙는 것에서 유래한다.
서로 다른 Unix 기반 OS의 공통 API를 정리하고 표준화하기 위해서 IEEE에서 책정한 Application Interface 표준 규격이다.
UNIX 계열의 운영체제들이 따르고 있는 CLI(Command Line Interface)의 표준이라고 생각해도 좋다.
실제로 Window를 제외한 대부분의 운영체제가 POSIX 표준을 따른다고 한다. (MacOS도 표준을 따르고 있다.)
(MacOS의 CLI 명령어는 리눅스와 동일하고, Window PowerShell은 명령어가 다르다는 것을 알고 있을 것이다.)
IEEE란?
IEEE Computer Society라는 컴퓨팅(하드웨어, 소프트웨어, 표준 등)을 전문으로 하는 전기전자공학회(IEEE)의 기술 학회이다.
우선 Linux와 Unix의 차이부터 알고, 설명을 시작하면 좋을 것 같다.
운영체제에 대해 궁금하신 분은 아래 글을 참고하세요.
📁[CS / 운영체제] 운영체제란? OS 용어 정리 - 쉘, 시스템콜, API
POSIX와 Linux & Unix
리눅스와 유닉스
Unix는 1960년대에 개발된 운영체제이며, 여러 플랫폼에서 실행할 수 있는 최초의 운영체제였다. Unix는 꾸준히 발전되어 왔고, 안정적이고 신뢰할 수 있으며 다양한 유형의 작업을 처리할 수 있어서 지금까지도 표준으로 쓰이고 있다.
(80년대 후반에 POSIX가 만들어졌고, 이후 POSIX 표준을 만족하는 Linux가 만들어 졌다.)
Linux는 1990년대 초에 Unix를 기반으로 만들어진 오픈소스이다. 즉, Unix의 파생물이라고 볼 수 있다.
Unix와 Linux의 구체적인 차이점은 Unix는 독점 운영체제라는 점이고, Linux는 오픈소스라는 점이다.
- Linux는 훨씬 다양한 배포판 또는 버전이 존재하고 다양한 목적으로 사용된다.
- Unix는 일반적으로 몇 가지만 존재하고, 일반적으로 더 크고 강력한 컴퓨터에서 사용하게 된다.
Unix는 지금까지도 Open Group이라는 개방형 표준을 장려하는 단체에 의해 계속해서 유지, 관리되고 있다.
The Open Group은 300개 이상의 단체가 소속되어 있는 기술 중립 산업 연합체이다.

POSIX (Portable Operation System Interface)
Unix를 기반으로 만든 수많은 Linux 기반 운영체제들의 단일 포괄적 표준(Competing Standard)을 만들기 위한 목적으로 제작된 것이 POSIX이다.
파일 시스템이 POSIX와 호환되려면 대표적으로 아래와 같은 조건을 충족해야 한다고 한다.
- 강력한 일관성 제공 - ex) read 전에 write가 발생한 경우, read는 write가 적용된 데이터를 반환해야 한다.
- atomic writes - write는 원자적으로 실행되도록 한다. 즉, write 작업이 완전히 처리되거나 전혀 실행되지 않아야 한다.
- random read, write, truncate(자르기) 또는 fsync*와 같은 특정 작업들을 구현해야 한다.
- 권한(permissions)을 사용하여 파일에 대한 access를 제어하고, chmod, chown 등을 이용하여 권한을 수정한다.

fsync()는 하드웨어를 제어하기 위해 디바이스 파일을 다룰 경우, 디바이스 드라이버 내부 버퍼에 있는 데이터를 모두 적용해야 할 때 사용한다. 즉, 지금 작성한 내용을 물리적 디스크에 반영하는 명령이라고 이해하면 될 것 같다.
Unix를 기반으로 만들어진 Linux 운영체제가 POSIX 표준 인증을 받으려면, POSIX에서 제공하는 특정 테스트 세트를 구입해서 실행하고, 이를 통과하면 인증에 성공하는 방식이다.
Linux에서 일부 성능상의 이유로 따르지 않는 POSIX 표준
Linux는 파일 시스템과 관련하여 "partially POSIX compatible(부분적으로 POSIX와 호환)" 되는 것으로 본다. POSIX에서 요구하는 IO 작업에 필요한 격리기능을 성능상의 이유를 제공하지 않기 때문이다.
read 및 write가 페이지 수준(4kB)에서는 원자적이지만, concurrent write 작업 중에 일부 페이지에 대한 read가 가능하다. 이는 성능 때문에 일부 변경된 것이고, 만약 해당 파일에 대한 concurrent read/write access 시에 불완전한 read, write를 방지하도록 하려면 Application 단에서 lock을 적용해야 한다.
POSIX 표준
운영체제와 Application 사이에는 Library 또는 API를 통해서 소통을 하게 된다.
또한 Library 또는 API에서 운영체제 커널의 기능을 사용하고 동작하게 하려면,
운영체제가 제공하는 System Call을 호출하고, 그 결과를 Application으로 반환받아야 한다.
이 System Call을 규정하고, 커널(kernel)의 필수 요건들을 구성하는 것이 POSIX이다.

POSIX는 Interface라고 했다. 즉, System Call에 대한 표준을 제공하고, 이 표준에 따라 System Call을 구현한다.
System Call은 보통 어셈블리 언어나 C언어로 작성된다고 한다.
POSIX 함수의 예시
- open() : Opens a file for reading or writing
- fork() : Creates a new process
- exit() : Gracefully terminates current process (현재 프로세스를 정상적으로 종료)
oracle에서 정리한 posix 명령어 관련 문서입니다.
https://docs.oracle.com/cd/E19048-01/chorus4/806-3328/6jcg1bm05/index.html
출처
https://flaming.codes/ko/posts/the-many-differences-between-unix-and-linux
www.quobyte.com/storage-explained/posix-filesystem/
'[ Computer Science ] > Linux 리눅스' 카테고리의 다른 글
[Linux/Unix] POSIX와 Unix 계열의 표준 입출력 (0) | 2024.04.23 |
---|---|
[리눅스] VI 에디터 명령어 정리 (0) | 2023.07.21 |
[리눅스] 파일 복사, 하드 링크와 소프트 링크 (0) | 2023.07.10 |
[리눅스] 프로세스, 상태 확인하기 (0) | 2023.07.10 |
[리눅스] 리다이렉션과 파이프, grep 명령어 (0) | 2023.07.10 |