오늘도 좋은 하루네요. 저번에는 메모리 관리 기법인 가상메모리에 대해서 학습해보았습니다.
원래는 IPC와 입출력 관리에 대하여 작성할 예정이였으나 현재 학습 중인 CS 카테고리 내용과 겹치는 부분이 많아서 해당 내용은 CS로 빼도록 하겠습니다. 네트워크에 관해서도 CS에서 더 자세히 다룰 걸로 예상되어 오늘은 posix에 대해서 학습하도록 하겠습니다.
POSIX
posix라니 정말 생소한 단어입니다. 도대체 백엔드 공부랑 무슨 상관이 있나 무슨 개념인가 궁금하실거라고 생각합니다.
간단하게 미리 말씀드리자면 운영체제, 리눅스, 서버 환경을 이햏는 흐름에서 자주 나오는 개념으로 동작 표준 정도로 알고 학습을 이어가시면 좋을 것 같습니다.
POSIX이란?
- Portable Operating System Interface + UniX
- IEEE가 제정한 유닉스 기반 운영체제 간의 애플리케이션 이식성을 위한 표준 API 규격
- 즉, 서로 다른 Unix 기반 OS의 공통 API를 정리하고 표준화하기 위해서 위해서 책정한 애플리케이션 인터페이스 표준 규격이다.
POSIX의 목적
서로 다른 Unix 기반 운영체제 간의 애플리케이션 호환서과 이식성을 보장하는 것이 주요 목적입니다.
- 높은 이식성 : 소스 코드 수준에서 다른 운영체제로 쉽게 이동할 수 있는 애플리케이션 개발
- 호환성 : 유닉스 호환 시스템 간 동일한 API / 시스템 콜 사용
- 표준화 : 운영체제 인터페이스, 프로셋, 파일/디렉토리 구조의 통일
- 시장 파편화 방지 : 다양한 유닉스 버전들 사이에서 공통 규격을 제공하여 개발자들의 혼란과 비용 절감
POSIX가 다루는 주요 영역
유닉스 및 리눅스 계열 시스템에서 파일 처리, 프로세스, 입출력, 권한 등으로 해당 기능을 공통된 인터페이스와 동작 규칙으로 표준화해 호환성과 이식성을 높인다.
| 구분 | 설명 | 대표 함수/명령 |
| 파일 I/O | 파일 읽기/쓰기 표준화 | open(), read(), write(), close() |
| 프로세스 제어 | 프로세스 생성 •종료 •대기 | fork(), exec(), wait() |
| 신호 처리 | 시그널 표준화 | signal(), sigaction() |
| 스레드 | POSIX Threads | pthread_create(), pthread_join() |
| IPC | 프로세스 간 통신 | 파이프, 메시지 큐, 세마포어, 공유 메모리 |
| 쉘 & 유틸리티 | 표준 명령어 정의 | ls, cat, grep, awk, sed 등 |
POSIX와 Unix/Linux의 관계
| 구분 | POSIX | Unix | Linux |
| 정의 | 유닉스 계열 시스템의 공통 동작 방식을 정한 표준 규격 | 공식 인증을 받은 유닉스 운영체제 | 유닉스와 유사한 오픈소스 운영체제의 핵심 커널 |
| 역할 | 시스템 간 호환성과 이식 제공 | 유닉스 계열 운영체제의 기준이 되는 계열 | POSIX와 유닉스 철학을 많이 따르는 대표적 시스템 |
| 소스 | 공개(문서) | 비공개(일부 제외) | 오픈 소스 |
| 호환성 | 표준 자체이므로 준수 대상이 됨 | POSIX을 따를 수 있으며 Unix 인증과는 별개 | POSIX 준수 |
백엔드 개발에서 POSIX를 알아야하는 이유
- 서버 환경의 이해를 위해
- 리눅스 환경에 익숙해지기 위해
- 배포와 운영 문제를 이해를 위해
- 네트워크와 동시성 개념의 바탕이 되기 때문
위와 같은 이유로 POSIX에 대해서 자세히는 몰라도 대략 알아놓는 편이 좋습니다.
POSIX에 대해서는 간략하게 알아보았습니다. 기회가 된다면 리눅스와 함께 POSIX도 자세히 알아보고 싶네요.
POSIX까지 끝마치 OS에 대한 전반적인 지식에 대하여 학습해보았습니다. 다음에는 버전관리와 GIt, GitHub에 대해서 얘기해보도록 하겠습니다. 수고하셨습니다.
'백엔드 공부' 카테고리의 다른 글
| 관계형 데이터베이스와 비관계형 데이터베이스 (0) | 2026.04.12 |
|---|---|
| 버전 관리 시스템과 저장소 호스팅 서비스 (0) | 2026.04.09 |
| OS에 대한 전반적인 지식 (4) - 메모리 관리 (0) | 2026.04.06 |
| OS에 대한 전반적인 지식 (3) - 프로세스•스레드•동시성 (0) | 2026.03.31 |
| OS에 대한 전반적인 지식 (2) - 터미널과 기본 명령어 (0) | 2026.03.30 |