운영체제

[전공 중간고사 정리] 운영체제 – 운영체제의 이해와 기초 개념

gamjadori 2026. 7. 28. 10:00
728x90



1. 운영체제(OS)란 무엇인가

운영체제는 사용자와 컴퓨터 하드웨어 사이에서 중계 역할을 하면서, 프로그램의 실행을 관리하고 제어하는 시스템 소프트웨어이다. 컴퓨터가 켜질 때 메모리에 적재(load)되어, 모든 프로그램의 실행을 제어하고 사용자의 요청을 처리한다.

시험 포인트: 운영체제는 컴퓨터가 켜지면 메모리에 상주한다.

운영체제의 목적은 세 가지다.
첫째, 컴퓨터 자원(Resource) 관리다. 하드웨어 자원(프로세서, 메모리, 보조기억장치, 키보드, 프린터 등), 소프트웨어 자원(응용프로그램), 데이터 자원(파일, 데이터베이스)을 관리한다.
둘째, 성능(Performance) 향상이다.
셋째, 사용자에게 편의성(Convenience)을 제공하는 것이다.

컴퓨터 시스템은 4개 층으로 이루어진 계층 구조를 가진다.
4층(최상위)은 사용자, 우리가 직접 사용하는 사람이다.
3층은 응용프로그램, 크롬・카카오톡・한글 등이다.
2층은 운영체제, 커널 코드와 디바이스 드라이버다.
1층(최하위)은 하드웨어, CPU・메모리・디스크 등이다.

운영체제와 응용소프트웨어 비교는 시험에 자주 출제된다.
목적: 운영체제는 컴퓨터 자원 관리, 응용소프트웨어는 사용자의 목적 달성.
기능: 운영체제는 프로세스・메모리・파일 등 자원 관리, 응용소프트웨어는 소프트웨어를 만든 특정 목적 수행.
개발 언어: 운영체제는 C/C++, 어셈블리어, 응용소프트웨어는 Java, Python, C# 등 다양.
실행 시점: 운영체제는 부팅 시부터 컴퓨터 끌 때까지, 응용소프트웨어는 사용자가 실행/종료.
자원 접근: 운영체제는 모든 자원에 독점 사용 권한, 응용소프트웨어는 OS에게 요청해야만 가능.

5. 프로그램과 프로세스

프로그램(Program)은 실행 가능한 파일로 저장 상태이며 하드디스크에 저장되어 있다. 요리 레시피(종이)에 비유할 수 있다.
프로세스(Process)는 실행 중인 프로그램으로 메모리에 올라온 상태이며 메모리(RAM)에서 실행 중이다. 실제로 요리하는 행위에 비유할 수 있다.

크롬을 더블클릭하면, 하드디스크의 프로그램이 메모리에 올라가서 프로세스가 된다.

프로세스 생명 주기는 시험 필수 암기 사항이다.
새로 생성(New): 프로세스가 막 만들어진 상태.
준비(Ready): CPU를 받을 준비가 됨, 스케줄링 대기 중.
실행(Running): CPU가 실제로 실행 중인 상태.
대기(Blocked): 입출력 등 이벤트를 기다리는 상태.
종료/좀비(Terminated/Zombie): 종료됐지만 부모 프로세스가 아직 확인 안 한 상태.
완전 종료(Terminated/Out): 부모가 종료를 확인하고 완전히 제거된 상태.

시험 포인트: PCB(Process Control Block)는 프로세스 상태 정보가 저장되는 자료구조다.

6. 사용자 공간과 커널 공간

여러 사람이 동시에 서버를 사용하거나, 한 사람이 여러 프로그램을 동시에 사용할 때 특정 프로그램의 오류가 전체 시스템에 영향을 주지 않도록 보호하기 위해 두 공간을 분리한다.

사용자 공간(User Space)은 일반 응용프로그램이 실행되며, 권한이 낮아 자원에 직접 접근할 수 없고, 앱 실행 환경을 제공하는 목적을 가진다.
커널 공간(Kernel Space)은 운영체제(커널)가 실행되며, 권한이 높아 모든 자원에 접근 가능하고, 시스템 전체 관리 및 보호를 목적으로 한다.

7. 이중 모드(Dual Mode)

사용자 모드(User Mode)는 모드 값 1이며, 일반 응용프로그램이 실행되고, 자원 접근이 제한되어 직접 접근이 불가하다.
커널 모드(Kernel Mode)는 모드 값 0이며, 운영체제(커널)가 실행되고, 모든 명령어 실행이 가능하다.

모드 전환 과정은 다음과 같다. 앱이 커널 기능이 필요할 때 시스템 호출(System Call)을 하면, CPU가 커널 모드로 전환되고, OS가 처리한 뒤 다시 사용자 모드로 복귀한다.

시험 포인트: 사용자 모드(1)와 커널 모드(0)를 구분하고, 시스템 호출 시 모드가 전환된다는 점을 기억한다.

8. 인터럽트(Interrupt)

CPU가 현재 실행 중인 작업을 일시 중단하고 외부 이벤트를 먼저 처리하도록 하는 메커니즘이다. “CPU야, 지금 하던 거 잠깐 멈추고 이거 먼저 처리해”라는 신호로 이해하면 된다.

인터럽트 종류는 두 가지다. HW 인터럽트(IRQ)는 하드웨어 장치에서 발생하며 키보드 입력, 마우스 클릭, 디스크 읽기/쓰기 완료 등이 예시다. SW 인터럽트(INT 신호)는 소프트웨어(프로그램)에서 발생하며 디버거 중단(int 0x03), 리눅스 시스템 호출(int 0x80) 등이 예시다.

인터럽트 처리 순서는 다음과 같다.
① 인터럽트 발생: CPU에 인터럽트 신호가 전달됨.
② 현재 작업 저장: 하던 작업을 임시 저장(나중에 복귀하기 위해).
③ ISR 실행: 인터럽트 서비스 루틴(ISR)으로 이동하여 처리(커널 모드).
④ 작업 재개: 처리 완료 후 원래 작업으로 복귀.

9. 시스템 호출(System Call)

사용자 프로그램이 커널의 기능/서비스를 요청하는 메커니즘이다. 사용자 공간의 앱은 직접 하드웨어를 제어할 수 없으므로, 시스템 호출(syscall)을 통해 OS에게 요청해야 한다. 응용프로그램에서 커널 기능을 사용할 수 있는 유일한 방법이다.

주요 시스템 호출 함수로는 open()/close()(파일 열기/닫기), read()/write()(파일 읽기/쓰기), fork()(새 프로세스 생성), exit()(프로세스 종료), wait()(자식 프로세스 종료 대기)가 있다.

시험 포인트: 시스템 호출은 사용자 모드에서 커널 모드로 전환하는 과정이며, 앱이 OS 기능을 쓰는 유일한 방법이다.

10. 리눅스(Linux) 소개

리눅스의 탄생은 다음과 같다. 만든 사람은 리누스 토르발스(Linus Torvalds, 핀란드 헬싱키대학교 학생)이고, 만든 연도는 1991년이다. 유닉스(Unix) 계열을 기반으로 하며, 이름의 유래는 리눅스=리누스+유닉스이다.

유닉스(Unix) 역사는 다음과 같다.
1969년: AT&T 벨연구소에서 어셈블리어로 유닉스 개발.
1971년: C 언어로 재개발되어 이식성이 높아짐.
이후: AT&T 상용 유닉스와 BSD(Berkeley Standard Distribution)로 분리 발전.
BSD 이후: AT&T 라이선스가 필요 없는 FreeBSD로 발전.
1991년: 리누스 토르발스가 리눅스 커널 개발.

리눅스 배포판 계열은 두 가지다. 데비안(Debian) 계열은 Ubuntu, Debian, Mint 등이 있고 패키지 형식은 .deb, 관리 명령어는 apt, dpkg다. 레드햇(RedHat) 계열은 RHEL, Fedora, CentOS 등이 있고 패키지 형식은 .rpm, 관리 명령어는 dnf, rpm이다.

우분투(Ubuntu) 버전 규칙은 다음과 같다. 버전 번호는 출시 연도.월로 구성되며(예: 24.04는 2024년 4월 출시), LTS 버전은 4번에 1번씩 발표되어 5년 동안 지원되고(예: 20.04 LTS, 22.04 LTS), 출시 주기는 6개월마다 새 버전이 발표된다(24.04 → 24.10 → 25.04).

시험 포인트: 우분투 20.04는 커널 5.4를 포함한다.

11. 시험 전 최종 암기 정리

운영체제 정의는 사용자와 하드웨어 중계, 자원 관리 시스템 소프트웨어다.
부팅 순서는 전원 → BIOS/UEFI → POST → 부트로더 → 커널 로드다.
OS는 부팅 후 메모리(RAM)에 항상 상주한다.
프로세스 상태는 New → Ready → Running → Blocked → Terminated다.
PCB는 프로세스 상태 정보를 저장하는 자료구조로, 상태가 바뀔 때마다 갱신된다.
사용자 모드(1)와 커널 모드(0)를 구분한다.
시스템 호출은 앱이 OS 기능을 요청하는 유일한 방법이다.
인터럽트는 CPU가 현재 작업을 중단하고 이벤트를 처리하는 메커니즘이다.
리눅스는 1991년 리누스 토르발스가 개발했으며 유닉스 계열이다.
우분투 버전은 연도.월 형식이며, LTS는 5년 지원, 6개월마다 출시된다.
커널 버전(예: 5.4.0)은 주버전.부버전.패치버전 형식이다.
데비안 계열은 .deb/apt, 레드햇 계열은 .rpm/dnf를 사용한다.