Choose a default theme

You can change your theme from the menu

운영체제

Earlier revision · 2View current content

운영체제(operating system, OS)는 CPU·메모리·저장 장치 같은 자원을 관리하고 응용 프로그램이 실행될 환경을 제공하는 시스템 소프트웨어이다. 프로그램은 하드웨어를 매번 직접 제어하는 대신 운영체제가 제공하는 프로세스, 주소 공간, 파일과 같은 추상화를 이용한다.

왜 필요한가

문서 편집기와 음악 재생기가 동시에 실행된다고 가정하자. 두 프로그램이 CPU와 메모리, 파일 장치를 아무 규칙 없이 독점하면 다른 작업을 진행하기 어렵다. 운영체제는 자원을 나누고 접근 규칙을 적용해 여러 작업이 함께 진행될 기반을 제공한다.

추상화는 세부 구현을 감추는 동시에 사용할 수 있는 규칙을 정한다. 프로그램은 파일 이름과 읽기·쓰기 인터페이스를 다루고, 운영체제와 장치 계층이 실제 저장 위치와 입출력 처리를 담당한다. 같은 파일 인터페이스 아래에서도 실제 저장 장치는 달라질 수 있다.

프로세스와 CPU 시간

디스크의 실행 파일은 명령과 데이터를 담은 저장물이고, 프로세스는 그것을 실행하는 상태이다. 운영체제는 실행에 필요한 메모리와 상태를 준비하고 준비된 작업에 CPU를 배정한다. 작업이 입출력을 기다리면 다른 실행 가능한 작업이 CPU를 사용할 수 있다.

단일 코어에서도 짧은 간격으로 실행 대상을 바꾸어 여러 작업이 진행되는 것처럼 보이게 할 수 있다. 이는 여러 코어에서 실제로 같은 순간에 실행되는 병렬성과 구별된다. 문맥 교환은 실행을 재개할 상태를 바꾸는 메커니즘이고 스케줄링은 다음 실행 대상을 정하는 정책이다.

메모리와 보호

프로그램이 사용하는 주소와 실제 메모리의 배치는 구분된다. 가상 주소 공간을 통해 프로그램은 자신의 코드와 데이터를 일정한 주소 체계로 다룰 수 있으며, 운영체제와 하드웨어는 주소 변환과 접근 보호에 참여한다. 서로 다른 프로세스의 동일한 숫자 주소가 동일한 데이터를 뜻하지는 않는다.

보호가 있다고 모든 데이터 공유가 금지되는 것은 아니다. 필요한 경우 공유 메모리나 프로세스 간 통신처럼 명시적인 방법으로 정보를 교환한다. 반대로 공유를 사용하면 접근 순서와 동기화 문제를 응용 프로그램에서 고려해야 한다.

파일과 영속성

프로세스의 메모리는 프로그램이 끝나거나 시스템 전원이 꺼질 때 그대로 보존되는 저장소가 아니다. 장기간 보관할 데이터는 파일과 같은 영속 저장 방식으로 기록한다. 디렉터리는 이름과 파일을 조직하는 역할을 하며, 경로는 그 조직 안에서 항목을 찾는 표현이다.

파일에 쓰기를 요청했다는 사실과 전원 장애에도 데이터를 보존할 수 있다는 보장은 구별해야 한다. 캐시와 장치의 쓰기 완료 시점이 관여하므로 데이터베이스 같은 시스템은 필요한 내구성 규칙에 맞는 동기화와 복구 절차를 설계한다.

운영체제와 개발 환경

운영체제

운영체제 · Linux · Windows · macOS

관련 환경

WSL · Mac

예시: 같은 프로그램을 두 번 실행하기

Python 3가 설치된 환경에서 터미널 두 개를 열고 아래 명령을 각각 한 번 실행한다. 이 예제는 현재 프로세스 식별자(PID)를 표시한 후 15초 동안 기다린다. 같은 Python 실행 파일을 사용하더라도 두 실행의 PID는 서로 다르다. 각 명령이 자신의 실행 상태를 가진 프로세스를 만들기 때문이다.

명령은 표시한 뒤 정상적으로 끝난다. 구체적인 PID 값은 시스템마다 달라지며 예제에서 정해 둔 숫자는 없다. 두 번째 명령을 15초 안에 실행하면 두 프로세스가 동시에 존재하는 구간을 관찰할 수 있다. 잠든 프로세스가 계속 CPU를 소비하며 기다리는 것은 아니므로 “살아 있다”와 “지금 CPU에서 실행 중이다”도 구분한다.

python -c "import os, time; print(os.getpid(), flush=True); time.sleep(15)"

비교와 사용 관점

Linux·Windows·macOS는 모두 자원 관리와 프로그램 실행이라는 공통 역할을 하지만 제공 API, 파일 경로 규칙, 프로그램 배포 체계와 지원 하드웨어는 다르다. 운영체제를 선택할 때에는 인터페이스의 취향뿐 아니라 실행할 소프트웨어와 장치 지원, 운영·유지보수 요구를 함께 고려한다.

커널은 운영체제의 핵심 구성 요소이며 사용자용 셸, 그래픽 환경, 관리 도구와 동일한 범위가 아니다. 제품명과 커널명, 배포판명을 섞으면 기술 문서의 적용 범위를 잘못 이해할 수 있다.

주의할 점

CPU 사용률이 낮다는 이유만으로 프로그램이 정상이라고 판단할 수는 없다. 파일이나 네트워크 응답을 기다리거나 잠금 때문에 막혀 있을 수도 있다. 메모리 부족, 입출력 지연, 동기화 문제를 구별해서 관찰해야 한다.

운영체제의 격리는 유용한 보호 장치지만 응용 프로그램의 논리 오류와 잘못된 권한 설정까지 자동으로 고치지 않는다. 여러 프로세스로 나누었다는 사실만으로 교착 상태나 데이터 손상 문제가 사라지는 것도 아니다.

참고 자료