BLOG
Tracefield · 02
Tracefield · 01
블로그 · 14
Vibe Audit · 04
Vibe Audit · 03
Vibe Audit · 02
Vibe Audit · 01
출판편집자 · 01
StudyTree · 01
SecurityOps · 02
SecurityOps · 01
AI챗봇 · 04
AI챗봇 · 03
AI챗봇 · 02
AI챗봇 · 01
퍼플심 · 04
퍼플심 · 03
퍼플심 · 02
퍼플심 · 01
블로그 · 13
rootscan · 07
rootscan · 06
블로그 · 12
블로그 · 11
블로그 · 10
블로그 · 09
블로그 · 08
블로그 · 07
블로그 · 06
블로그 · 05
블로그 · 04
블로그 · 03
블로그 · 02
블로그 · 01
rootscan · 05
rootscan · 04
rootscan · 03
asmspeak · 03
asmspeak · 02
rootscan · 02
asmspeak · 01
rootscan · 01
웹보안도구 · 02
웹보안도구 · 01
루트캠프 · 02
루트캠프 · 01
All notes 167
운영체제 개론
1. 운영체제(OS)의 기본 개념
운영체제는 사용자와 하드웨어 사이를 이어주는 기본 소프트웨어다. 컴퓨터 자원을 직접 다루고, 프로그램이 실행될 수 있는 환경을 만든다.
1.1. 역사와 발전 과정
- 초기 컴퓨터는 운영체제 없이 사람이 직접 기계를 조작했다.
- 이후 작업을 모아서 처리하는 일괄 처리 시스템이 등장했다.
- 그다음 CPU 유휴 시간을 줄이기 위한 멀티프로그래밍, 여러 사용자가 함께 쓰는 시분할 시스템으로 발전했다.
- 지금은 PC를 넘어 모바일, 실시간, 분산 운영체제처럼 목적별로 더 세분화됐다.
1.2. 운영체제의 구조와 역할
- 운영체제는 사용자와 하드웨어 사이의 중재자 역할을 한다.
- 커널이 CPU, 메모리, 장치 같은 자원을 관리한다.
- 사용자는 쉘이나 GUI 같은 인터페이스를 통해 커널에 명령을 전달한다.
- 핵심 역할은 자원 관리, 프로세스 관리, 시스템 보호, 사용자 인터페이스 제공이다.
2. 컴퓨터 하드웨어와 부팅
운영체제를 이해하려면, 그 아래에서 돌아가는 하드웨어와 부팅 흐름도 같이 봐야 한다.
2.1. 컴퓨터 하드웨어의 구성 요소
- CPU: 명령어를 해석하고 연산을 수행하는 핵심 장치다.
- RAM: 실행 중인 프로그램과 데이터를 담는 휘발성 메모리다.
- 보조기억장치(SSD, HDD): 전원이 꺼져도 데이터를 보관하는 저장소다.
- 입출력 장치: 키보드, 마우스, 모니터, 프린터 같은 주변 장치다.
- 이 구성 요소는 시스템 버스를 통해 데이터를 주고받는다.
2.2. 부팅 과정
부팅은 아래 순서로 진행된다.
- 전원이 들어온다.
- ROM에 있는 BIOS 또는 UEFI가 실행된다.
- POST로 기본 하드웨어를 점검한다.
- 부트 로더가 저장장치에서 커널을 찾아 RAM으로 올린다.
- 커널이 실행되며 초기화를 마치고 사용자 인터페이스를 준비한다.
3. 프로세스 관리
프로세스 관리는 운영체제가 가장 자주 하는 일 중 하나다.
3.1. 프로그램과 프로세스
- 프로그램: 디스크에 저장된 정적인 코드다. 예를 들면
chrome.exe같은 파일이다. - 프로세스: 그 프로그램이 메모리에 올라와 실제로 실행 중인 상태다.
3.2. 멀티프로그래밍과 멀티프로세싱
- 멀티프로그래밍: 하나의 CPU가 여러 프로세스를 번갈아 처리해 유휴 시간을 줄이는 방식이다.
- 멀티프로세싱: 두 개 이상의 CPU나 코어가 여러 프로세스를 실제로 병렬 처리하는 구조다.
3.3. 프로세스 상태와 컨텍스트 스위칭
- 프로세스는 생성, 준비, 실행, 대기, 종료 상태를 오간다.
- 컨텍스트 스위칭은 CPU가 다른 프로세스로 넘어갈 때, 현재 상태를 저장하고 다음 상태를 불러오는 과정이다.
3.4. 프로세스 생성과 종료
- 프로세스는 보통 부모 프로세스가 생성한다. Unix의
fork()가 대표적이다. - 자식 프로세스는 별도 자원을 할당받고 실행된다.
- 작업 종료, 오류, 외부 종료 명령으로 프로세스는 끝난다.
4. CPU 스케줄링
CPU 스케줄링은 준비 큐에 있는 작업 중 누구에게 CPU를 줄지 정하는 정책이다. 목표는 CPU 활용률, 처리량, 응답 시간, 공정성 사이 균형을 잡는 데 있다.
4.1. 대표 스케줄링 알고리즘
- FIFO: 먼저 들어온 작업부터 처리한다. 단순하지만 긴 작업이 앞에 있으면 전체가 지연될 수 있다.
- SJF: 실행 시간이 짧은 작업을 먼저 처리한다. 평균 대기 시간은 줄지만, 실행 시간을 예측하기 어렵고 긴 작업은 굶을 수 있다.
- RR: 각 프로세스에 같은 시간 할당량을 주고, 시간이 끝나면 뒤로 보낸다. 응답성이 좋아 시분할에 잘 맞는다.
- MLFQ: 여러 우선순위 큐를 두고 작업 성격에 따라 큐를 이동시킨다. 구조는 복잡하지만 실제 OS에서 많이 쓴다.
5. 동기화와 교착 상태
동시에 여러 작업이 돌면, 자원 충돌과 교착 상태 문제를 같이 봐야 한다.
5.1. 공유자원과 임계구역
- 공유자원은 여러 프로세스나 스레드가 함께 접근하는 데이터나 장치다.
- 임계구역은 그 공유자원을 만지는 코드 구간이다.
- 임계구역에는 보통 한 번에 하나만 들어가야 한다.
5.2. 세마포어와 모니터
- 세마포어는 정수값으로 접근을 제어하는 고전적인 동기화 도구다.
- 모니터는 공유자원과 관련 연산을 묶어서 언어 수준에서 더 안전하게 관리하는 방식이다.
5.3. 데드락
- 데드락은 서로 상대방 자원을 기다리며 무한 대기하는 상태다.
- 상호 배제, 점유와 대기, 비선점, 순환 대기가 동시에 성립하면 발생할 수 있다.
- 대응 방식은 예방, 회피, 탐지 및 복구로 나뉜다.
6. 메모리 관리
메모리 관리는 프로그램을 안정적으로 실행시키는 또 다른 핵심 축이다.
6.1. 메모리 종류와 할당 방식
- 메모리는 레지스터, 캐시, RAM, SSD/HDD처럼 속도와 용량에 따라 계층 구조를 이룬다.
- 프로세스를 메모리에 올리는 방식은 연속 할당과 불연속 할당으로 나눠 볼 수 있다.
6.2. 가상 메모리와 주소 관리
- 가상 메모리는 실제 RAM보다 큰 주소 공간을 쓰는 것처럼 보이게 만드는 기술이다.
- 페이징은 주소 공간을 고정 크기 페이지와 프레임으로 나눠 관리한다.
- 세그먼테이션은 코드, 데이터, 스택처럼 의미 단위로 나눠 관리한다.
7. 입출력 및 파일 관리
운영체제는 파일과 장치 입출력도 함께 관리한다.
7.1. 입출력 장치
- 입력 장치: 키보드, 마우스, 스캐너 등
- 출력 장치: 모니터, 프린터, 스피커 등
- 입출력 겸용 장치: HDD, SSD, 네트워크 카드 등
7.2. 파일과 파일시스템
- 파일은 보조기억장치에 저장된 관련 정보의 논리적 묶음이다.
- 파일시스템은 파일을 저장, 관리, 검색하기 위한 구조와 소프트웨어다.
- NTFS, FAT32, ext4, APFS 같은 형식이 대표적이다.

