Booil Jung

컴퓨터 운영체제 (Operating System)

이 장에서는 운영체제의 근본적인 정의, 목적, 그리고 핵심 기능을 탐구한다. 또한, 컴퓨터 기술의 발전과 함께 운영체제가 어떻게 진화해왔는지 그 역사적 맥락을 심도 있게 분석하여, 현대 운영체제의 복잡한 개념들이 어떤 필요에 의해 탄생했는지 이해의 기반을 마련한다.

운영체제(Operating System, OS)는 사용자와 컴퓨터 하드웨어 사이의 중재자 역할을 수행하는 핵심적인 시스템 소프트웨어이다.1 이는 컴퓨터 시스템의 CPU, 메모리, 저장장치와 같은 하드웨어 자원과 소프트웨어 자원을 직접적이고 효율적으로 제어 및 관리하며, 응용 프로그램이 실행될 수 있는 기반 환경을 제공한다.3

운영체제는 자동차의 엔진에 비유할 수 있다. 엔진은 그 자체로도 작동하지만, 변속기, 차축, 바퀴와 같은 다른 부품들과 유기적으로 연결되어야 비로소 자동차를 움직일 수 있다.4 이와 마찬가지로, 운영체제는 응용 소프트웨어라는 ‘작업’과 하드웨어라는 ‘물리적 실체’를 연결하는 필수적인 다리 역할을 수행한다. 사용자는 운영체제가 제공하는 인터페이스를 통해 복잡한 하드웨어의 작동 원리를 알지 못해도 컴퓨터를 손쉽게 사용할 수 있다.3

이러한 운영체제의 본질은 이중적인 정체성에서 비롯된다. 첫째, 사용자 및 응용 프로그램의 관점에서 운영체제는 복잡한 하드웨어의 구체적인 작동 방식을 숨기고, 파일 열기, 데이터 저장과 같은 일관되고 편리한 인터페이스(API, 시스템 호출)를 제공하는 추상화 계층(Abstraction Layer)으로 기능한다. 둘째, 시스템 내부의 관점에서는 한정된 자원(CPU 시간, 메모리 공간 등)을 여러 프로세스들의 경쟁적인 요청으로부터 보호하고, 스케줄링과 같은 메커니즘을 통해 공정하고 효율적으로 자원을 분배하는 자원 관리자(Resource Manager)로서의 역할을 수행한다. 이 두 가지 역할은 상호 보완적이며 운영체제 설계의 모든 측면에 깊이 관여한다. 예를 들어, 가상 메모리 시스템은 사용자에게 실제 물리 메모리보다 훨씬 큰 연속적인 메모리 공간이 있는 것처럼 보이는 ‘추상화’를 제공하지만, 내부적으로는 물리 메모리와 디스크 간의 복잡한 데이터 이동을 관리하는 정교한 ‘자원 관리’를 통해 이를 구현한다.

운영체제의 핵심 목적은 크게 두 가지로 요약할 수 있다.5

  1. 사용자 편의성 제공: 가장 중요한 목적은 사용자가 컴퓨터 시스템을 편리하고 효율적으로 사용할 수 있는 환경을 제공하는 것이다.5 운영체제가 없다면, 사용자는 프로그램을 실행하기 위해 하드웨어를 직접 제어하는 기계어를 사용해야 할 것이다. 운영체제는 이러한 복잡성을 감추고 그래픽 인터페이스나 간단한 명령어를 통해 컴퓨터와 상호작용할 수 있게 한다.3
  2. 자원의 효율적 관리: 컴퓨터 시스템의 자원, 즉 중앙처리장치(CPU), 주기억장치(메모리), 입출력 장치, 파일, 데이터 등은 한정되어 있다.2 운영체제는 이러한 하드웨어 및 소프트웨어 자원을 여러 사용자나 응용 프로그램 간에 효율적으로 할당하고, 관리하며, 잘못된 사용으로부터 보호하는 역할을 수행한다.6 이를 통해 시스템의 전반적인 성능(처리 능력, 응답 시간 등)을 최적화한다.3

운영체제는 앞서 언급한 목적을 달성하기 위해 다음과 같은 구체적이고 핵심적인 기능들을 수행한다.

운영체제의 역사는 컴퓨터 하드웨어의 발전, 특히 비용 구조의 변화와 불가분의 관계를 맺고 있다. 초창기에는 극도로 비싼 하드웨어의 효율성을 단 1%라도 더 끌어올리는 것이 지상 과제였으나, 점차 하드웨어 가격이 하락하고 인건비가 상승하면서 사용자의 편의성과 생산성을 높이는 방향으로 발전의 무게 중심이 이동했다. 이러한 발전 과정을 세 가지 핵심 동력, 즉 경제성(Economics), 상호작용성(Interactivity), 연결성(Connectivity)의 관점에서 살펴보면 그 흐름을 명확히 이해할 수 있다.

최초의 컴퓨터 에니악(ENIAC)이 등장했던 1940년대에는 운영체제라는 개념 자체가 없었다.11 프로그래밍은 진공관을 전선으로 직접 연결하는 ‘하드와이어링’ 방식으로 이루어졌으며, 다른 프로그램을 실행하려면 물리적으로 전선을 재배치해야 했다.11

1950년대에 들어서면서 천공카드 시스템이 도입되어 프로그램 교체가 용이해졌다.11 하지만 여전히 하나의 작업이 끝나면 운영자(사람)가 수동으로 다음 작업을 위한 카드 덱을 로드하고 기계를 재설정해야 했다.13 이 작업 전환(job-to-job transition) 시간 동안 수백만 달러에 달하는 고가의 컴퓨터 CPU는 아무 일도 하지 않고 멈춰 있어야 했다. 이는 엄청난 자원 낭비였으며, 바로 이 ‘경제성’ 문제가 초기 운영체제 기술의 발전을 촉발했다.

이 문제를 해결하기 위해 등장한 것이 일괄 처리 시스템(Batch Processing System)이다.11 여러 개의 유사한 작업(job)을 하나의 묶음(batch)으로 만들어 자기 테이프에 기록한 뒤, 컴퓨터가 이를 자동으로 순차 처리하도록 한 것이다.13 이를 통해 작업과 작업 사이의 전환 시간을 기계의 속도로 단축시켜 CPU의 유휴 시간(idle time)을 크게 줄일 수 있었다.14 1956년에 등장하여 최초의 실질적인 운영체제로 평가받는 GM-NAA I/O는 바로 이 일괄 처리 기능을 자동화한 시스템이었다.16

일괄 처리 시스템은 CPU의 유휴 시간을 줄였지만, 여전히 한계가 있었다. 프로그램 실행 중에는 CPU 연산과 입출력(I/O) 연산이 번갈아 발생하는데, 카드 리더기나 프린터 같은 입출력 장치는 CPU에 비해 속도가 매우 느렸다. 따라서 입출력 작업이 진행되는 동안 CPU는 또다시 유휴 상태에 빠지게 되었다.13

이 문제를 해결하기 위해 다중 프로그래밍(Multiprogramming) 개념이 도입되었다.14 이는 여러 개의 프로그램을 동시에 메모리에 적재해두고, 한 프로그램이 입출력 작업을 위해 대기 상태에 들어가면, 즉시 CPU를 다른 프로그램으로 전환(Context Switching)하여 실행시키는 방식이다.14 이를 통해 CPU가 거의 쉬지 않고 일하게 만들어 시스템 전체의 처리량(Throughput)을 극대화할 수 있었다.

한편, 1960년대 후반으로 가면서 하드웨어 가격은 점차 하락하고 프로그래머의 인건비는 상승하기 시작했다. 이에 따라 기계의 효율성뿐만 아니라 ‘인간의 효율성’, 즉 사용자의 생산성이 새로운 화두로 떠올랐다.13 여러 사용자가 값비싼 메인프레임 컴퓨터에 동시에 접속하여 대화하듯 작업을 처리할 수 있는 시분할 시스템(Time-Sharing System)이 등장한 배경이다.19

시분할 시스템은 다중 프로그래밍을 논리적으로 확장한 개념으로, CPU 시간을 매우 짧은 시간 단위인 ‘타임 슬라이스(Time Slice)’ 또는 ‘타임 퀀텀(Time Quantum)’으로 잘게 쪼개어 여러 사용자에게 번갈아 할당했다.14 CPU의 처리 속도가 워낙 빠르기 때문에, 각 사용자는 마치 자신 혼자 컴퓨터를 독점하여 사용하는 듯한 착각을 느끼게 되었다.20 이 시스템의 목표는 CPU 사용률 극대화를 넘어, 사용자에 대한 응답 시간(Response Time)을 최소화하는 것이었다.23 이는 운영체제의 관심사가 기계 중심에서 인간 중심으로 이동하는 중요한 전환점이었다.

이 시기에는 또한 여러 개의 CPU를 장착하여 동시에 여러 작업을 병렬로 처리하는 다중 처리 시스템(Multi-processing System)도 등장했다. 이는 하나의 CPU가 고장 나더라도 다른 CPU가 작업을 계속할 수 있어 시스템의 신뢰성과 안정성을 크게 높였다.2

집적회로(IC) 기술의 혁신적인 발전은 컴퓨터의 소형화와 가격 하락을 이끌었고, 마침내 개인이 소유할 수 있는 개인용 컴퓨터(PC)의 시대를 열었다.21 이 변화는 운영체제 패러다임의 거대한 전환을 가져왔다.

1981년, 신생 기업이었던 Microsoft는 IBM PC에 탑재될 운영체제로 MS-DOS를 출시했다.16 MS-DOS는 키보드로 명령어를 직접 입력하는 명령줄 인터페이스(CLI) 방식이었지만, IBM PC 호환 기종 시장을 장악하며 Microsoft를 소프트웨어 제국으로 성장시키는 결정적인 발판이 되었다.24

컴퓨터와의 상호작용 방식을 근본적으로 바꾼 혁명은 제록스(Xerox)의 팔로알토 연구소(PARC)에서 시작되었다. 이곳에서 개발된 마우스, 아이콘, 윈도우와 같은 기술들은 그래픽 사용자 인터페이스(GUI)의 기반이 되었다.26 이 기술의 잠재력을 알아본 애플(Apple)은 1984년, 최초로 상업적 성공을 거둔 GUI 운영체제인 매킨토시(Macintosh)를 출시했다.21 사용자는 더 이상 복잡한 명령어를 외울 필요 없이, 마우스를 클릭하여 아이콘을 조작하는 직관적인 방식으로 컴퓨터를 사용할 수 있게 되었다. 이는 컴퓨터가 전문가의 도구에서 모든 사람을 위한 도구로 거듭나는 계기가 되었다.10

애플의 성공에 자극받은 Microsoft 역시 Windows를 출시하며 GUI 경쟁에 뛰어들었다. 초기 버전의 Windows는 MS-DOS 위에서 동작하는 반쪽짜리 운영체제였으나, 1995년 출시된 Windows 95는 MS-DOS와 완전히 결별하고 독자적인 32비트 운영체제로 거듭나며 PC 운영체제 시장의 절대 강자로 군림하게 되었다.24

1990년대 이후 인터넷이 전 세계적으로 보급되면서, 개별 컴퓨터의 성능을 넘어 컴퓨터들을 서로 ‘연결’하는 네트워킹 기능이 운영체제의 핵심으로 부상했다.13

분산 운영체제(Distributed OS)는 이러한 시대적 요구를 반영하는 개념이다. 이는 네트워크로 연결된 여러 독립적인 컴퓨터들을 마치 하나의 단일 시스템처럼 보이게 만드는 기술이다.20 사용자는 다른 컴퓨터에 있는 파일이나 프린터를 마치 자신의 컴퓨터에 있는 것처럼 투명하게 사용할 수 있으며, 여러 컴퓨터의 연산 능력을 모아 복잡한 계산을 처리함으로써 성능과 신뢰성을 높일 수 있다.15

한편, 오픈 소스 운동의 확산은 운영체제 역사에 또 다른 중요한 이정표를 세웠다. 1991년 리누스 토르발스가 개발한 리눅스(Linux) 커널은 전 세계 개발자들의 자발적인 참여로 발전하며, 서버, 슈퍼컴퓨터, 임베디드 시스템 시장에서 막강한 영향력을 확보했다.2 리눅스는 무료로 사용할 수 있는 강력한 성능과 안정성, 유연성을 바탕으로 독점 운영체제들의 강력한 대안으로 자리 잡았다.

21세기에 들어서는 스마트폰의 등장으로 모바일 운영체제(Google의 Android, Apple의 iOS)가 새로운 주역으로 떠올랐고, 클라우드 컴퓨팅사물 인터넷(IoT)의 확산은 대규모 데이터를 처리하고 수많은 기기를 연결하기 위한 새로운 형태의 운영체제 기술을 요구하고 있다.2 이처럼 운영체제는 기술 환경의 변화에 맞춰 끊임없이 진화하고 있다.

표 1: 운영체제 발전 과정 요약

세대 연대 주요 하드웨어 운영 기법 주요 목표 대표 OS/시스템
1세대 1950년대 메인프레임 일괄 처리 (Batch Processing) 처리량(Throughput) 극대화, CPU 유휴 시간 감소 GM-NAA I/O
2세대 1960년대 메인프레임 다중 프로그래밍, 시분할, 다중 처리, 실시간 CPU 사용률 향상, 사용자 응답 시간 단축 CTSS, UNIX
3세대 1970-80년대 개인용 컴퓨터(PC) 다중 모드 (GUI 기반) 사용자 편의성 증대, 개인화 MS-DOS, Apple Macintosh
4세대 1990년대-현재 워크스테이션, 서버, 모바일 기기 분산 처리, 네트워크, 가상화 자원 공유, 신뢰성, 확장성, 이동성 Windows, Linux, macOS, Android, iOS

이 장에서는 운영체제의 내부 구조를 파헤친다. 시스템의 심장부인 커널의 역할과, 응용 프로그램이 커널의 서비스를 이용하는 통로인 시스템 호출에 대해 알아본다. 또한, 대표적인 운영체제인 Windows, macOS, Linux의 구조적 특징을 비교 분석하여 이론이 실제 시스템에서 어떻게 구현되는지 살펴본다.

커널은 운영체제의 가장 핵심적인 부분으로, 비유하자면 운영체제의 ‘뇌’와 ‘심장’에 해당한다.6 컴퓨터가 부팅될 때 가장 먼저 메모리에 적재되어 실행이 끝날 때까지 항상 메모리에 상주(resident)하며, 시스템의 모든 것을 통제하고 관리한다. 커널이 수행하는 주요 기능은 다음과 같다.4

커널의 성능과 안정성이 곧 운영체제 전체의 성능과 안정성을 결정한다고 할 수 있다.9

응용 프로그램이 파일 읽기, 화면 출력, 네트워크 통신 등 운영체제의 보호된 기능을 사용해야 할 때, 커널에게 서비스를 요청하기 위한 공식적인 통로가 바로 시스템 호출이다.9

운영체제는 시스템 자원을 보호하기 위해 커널 모드(Kernel Mode)사용자 모드(User Mode)라는 이중 동작 모드를 사용한다. 중요한 시스템 자원에 접근하고 하드웨어를 제어하는 코드는 커널 모드에서만 실행될 수 있다. 반면, 일반 응용 프로그램은 제한된 권한을 가진 사용자 모드에서 실행된다.

응용 프로그램이 파일 생성(create), 메모리 할당(malloc), 프로세스 생성(fork)과 같이 커널의 도움이 필요한 작업을 수행하려면, 직접 하드웨어를 제어하는 대신 시스템 호출이라는 인터페이스를 통해 커널에 ‘요청’해야 한다. 이 요청이 발생하면, CPU는 사용자 모드에서 커널 모드로 전환되고, 커널은 요청받은 작업을 안전하게 수행한 뒤 그 결과를 응용 프로그램에 반환하고 다시 사용자 모드로 복귀한다. 이처럼 시스템 호출은 사용자 프로그램과 커널 사이의 다리 역할을 하며, 시스템의 안정성과 보안을 보장하는 핵심적인 메커니즘이다.

드라이버는 특정 하드웨어 장치(예: 그래픽 카드, 프린터, 네트워크 카드)를 제어하기 위해 작성된 소프트웨어 모듈이다.6 커널의 일부로 동작하며, 운영체제가 수많은 제조사의 각기 다른 하드웨어들을 일관된 방식으로 인식하고 사용할 수 있도록 해주는 ‘번역기’와 같은 역할을 한다.9 사용자가 프린터를 사용하고자 할 때, 운영체제는 프린터 드라이버를 통해 해당 프린터 모델에 맞는 명령을 전달하여 인쇄 작업을 수행한다.

운영체제의 내부 기능을 어떻게 구성하고 조직화하는지에 따라 여러 구조적 모델로 나눌 수 있다.

이론적인 구조는 실제 운영체제에서 어떻게 구현되어 있을까? 각 운영체제는 저마다의 개발 철학과 목표 시장에 따라 고유한 아키텍처와 생태계를 구축했다. 이들의 차이는 단순히 기술적 우위를 넘어, ‘개방성’과 ‘통제’라는 전략적 선택의 결과로 이해할 수 있다.

결론적으로, 사용자가 운영체제를 선택하는 것은 단순히 기술적 사양을 비교하는 것을 넘어, 자신이 속하고자 하는 기술 생태계의 철학, 즉 ‘광범위한 호환성(Windows)’, ‘완벽한 통합과 안정성(macOS)’, ‘자유와 통제권(Linux)’ 중 무엇에 가치를 둘 것인지를 선택하는 과정이라 할 수 있다.

프로세스는 실행 중인 프로그램을 의미하며, 운영체제 관리의 가장 기본적인 단위이다. 이 장에서는 프로세스의 생명주기, 상태 변화, 그리고 운영체제가 각 프로세스를 관리하기 위해 사용하는 핵심 자료구조인 PCB에 대해 학습한다. 이후, 다중 프로그래밍 환경에서 한정된 CPU 자원을 어떤 프로세스에 할당할지 결정하는 CPU 스케줄링 기법과, 여러 프로세스가 동시에 실행될 때 발생하는 동기화 문제 및 교착 상태에 대해 심도 있게 다룬다.

프로세스(Process)란 가장 일반적으로 ‘실행 중인 프로그램(a program in execution)’으로 정의된다.36 하드 디스크와 같은 보조기억장치에 존재하는 실행 파일(프로그램)이 메모리에 적재되어 CPU에 의해 명령어들이 실행되기 시작하면, 비로소 생명을 가진 ‘프로세스’가 되는 것이다.38

프로세스는 단순히 프로그램 코드 덩어리가 아니라, 운영체제로부터 자원(CPU 시간, 메모리, 파일, 입출력 장치 등)을 할당받는 작업의 단위이다.37 또한 프로그램 카운터(PC), 레지스터 등 현재의 활동 상태를 나타내는 정보들을 포함한다. 동일한 프로그램이라도 여러 번 실행되면, 각각은 서로 다른 자원을 할당받은 별개의 프로세스가 된다.37

운영체제는 각 프로세스에게 독립된 가상 주소 공간을 할당한다. 이 공간은 일반적으로 다음과 같은 네 가지 주요 영역으로 구성된다.37

프로세스는 생성되어 실행되고 종료되기까지의 생명주기 동안 여러 상태를 거치게 되며, 이를 프로세스 상태 전이(Process State Transition)라고 한다. 운영체제는 프로세스의 상태를 추적하며 시스템을 관리한다. 주요 상태는 다음과 같다.40

이러한 상태들 사이의 전환은 특정 이벤트에 의해 발생한다.

프로세스는 추상적인 개념이지만, 운영체제는 이를 구체적인 데이터 구조를 통해 관리한다. 프로세스 제어 블록(PCB)은 운영체제가 특정 프로세스를 관리하기 위해 필요한 모든 정보를 담고 있는 핵심 자료구조이다.41 운영체제에게 프로세스는 곧 PCB이며, PCB가 없다면 프로세스는 존재하지 않는 것과 같다. PCB는 프로세스가 생성될 때 커널 메모리 영역에 함께 만들어지며, 프로세스가 종료되면 폐기된다.41

PCB에는 다음과 같은 중요한 정보들이 저장된다.41

이처럼 PCB는 프로세스의 모든 상태 정보, 즉 문맥(Context)을 담고 있는 물리적인 데이터 구조체이다. 따라서 다중 프로그래밍의 핵심 동작인 문맥 교환(Context Switching)은 단순히 CPU 제어권을 넘기는 추상적인 행위가 아니다. 이는 현재 CPU의 레지스터 상태를 실행 중이던 프로세스의 PCB에 ‘저장(save)’하고, 새로 실행할 프로세스의 PCB로부터 이전 상태를 CPU 레지스터로 ‘복원(restore)’하는 구체적이고 비용이 드는 작업이다.41

문맥 교환이 일어나는 동안 CPU는 사용자 프로그램을 위한 어떠한 유용한 작업도 수행하지 못하므로, 이 시간은 순수한 오버헤드(Overhead)가 된다.48 문맥 교환이 너무 자주 발생하면 시스템의 전반적인 성능이 저하될 수 있다. 이 오버헤드는 PCB 저장 및 복원 시간, 스케줄링 알고리즘 실행 비용, 그리고 문맥 교환 시 발생하는 CPU 캐시 무효화(cache flush) 등으로 인해 발생한다.51 이처럼 PCB는 프로세스의 존재를 증명하는 실체인 동시에, 다중 프로그래밍의 효율성을 결정하는 비용의 근원이기도 하다.

다중 프로그래밍 시스템에서는 항상 여러 개의 프로세스가 CPU를 사용하기 위해 준비 큐에서 대기하고 있다. CPU 스케줄링은 이 준비 큐에 있는 프로세스들 중에서 어떤 프로세스에게 CPU를 할당할 것인지를 결정하는 운영체제의 핵심 정책이다.52

CPU 스케줄링의 목표는 시스템의 종류(일괄 처리, 대화형 등)에 따라 다르지만, 공통적으로 다음과 같은 목표를 추구한다.53

스케줄링 방식은 CPU를 강제로 빼앗을 수 있는지 여부에 따라 크게 두 가지로 나뉜다.55

표 2: 주요 CPU 스케줄링 알고리즘 비교

알고리즘 방식 핵심 기준 장점 단점
FCFS 비선점 도착 순서 간단하고 공평함 호위 효과, 긴 평균 대기 시간
SJF/SRTF 비선점/선점 CPU 버스트 시간 평균 대기 시간 최소화 (최적) 기아 상태 발생 가능, 버스트 시간 예측 어려움
우선순위 선점/비선점 우선순위 중요도에 따른 처리 가능 기아 상태 발생 가능 (Aging으로 완화)
Round Robin 선점 타임 퀀텀 짧은 응답 시간, 기아 없음 잦은 문맥 교환 오버헤드 (퀀텀이 작을 시)

실제 시스템에서는 다양한 성격의 프로세스(예: 빠른 응답이 중요한 대화형 프로세스, 처리량이 중요한 일괄 처리 프로세스)가 혼재한다. 이들을 단일 큐로 관리하는 것은 비효율적이므로, 다단계 큐 기법이 사용된다.

다중 프로그래밍 환경에서는 여러 프로세스가 공유 데이터나 자원에 동시에 접근하려 할 때 문제가 발생할 수 있다. 이를 경쟁 상태(Race Condition)라 하며, 실행 순서에 따라 결과가 달라져 데이터의 일관성이 깨질 수 있다.

교착 상태(Deadlock)란 둘 이상의 프로세스가 서로 상대방이 점유한 자원을 해제하기만을 기다리며, 결과적으로 아무것도 진행하지 못하고 무한정 대기하는 상태를 말한다.76

결국, 교착 상태 처리는 이론적 완벽함(예방)에서 실용적 타협(무시)으로 이어지는 스펙트럼을 형성한다. 이는 운영체제 설계가 항상 최적의 해를 추구하는 것이 아니라, 실제 사용 환경에서의 성능과 복잡도를 고려한 공학적 절충의 산물임을 보여주는 대표적인 사례이다.

메모리는 CPU가 직접 접근할 수 있는 유일한 대용량 저장 공간으로, 모든 실행 가능한 프로그램과 데이터는 반드시 메모리에 적재되어야 한다. 이 장에서는 한정된 메모리 자원을 효율적으로 관리하기 위한 운영체제의 다양한 전략을 탐구한다. 먼저 논리적 주소와 물리적 주소의 개념을 이해하고, 초기 메모리 할당 방식인 연속 할당과 그로 인해 발생하는 단편화 문제를 살펴본다. 이어서 현대 운영체제의 핵심인 페이징과 세그멘테이션 기법을 배우고, 물리 메모리의 한계를 극복하는 가상 메모리의 원리를 학습한다.

컴퓨터 시스템에서 메모리 주소는 두 가지 형태로 존재한다.

이처럼 논리적 주소를 물리적 주소로 변환하는 작업을 주소 바인딩(Address Binding)이라고 한다.89 이 바인딩이 언제 이루어지느냐에 따라 세 가지 방식으로 나뉜다.

  1. 컴파일 시간 바인딩 (Compile Time Binding): 프로그램을 컴파일할 때 물리적 주소가 결정된다. 만약 프로그램이 적재될 메모리 위치가 변경되면 코드를 다시 컴파일해야 한다. 멀티 프로그래밍 환경에는 적합하지 않은 구식 방법이다.92

  2. 로드 시간 바인딩 (Load Time Binding): 프로그램이 메모리에 적재(loading)될 때 물리적 주소가 결정된다. 프로그램 시작 위치가 바뀌어도 재컴파일할 필요는 없지만, 일단 적재된 후에는 메모리 내에서 위치를 이동시킬 수 없다.89

  3. 실행 시간 바인딩 (Execution Time Binding): 프로그램이 실행 중일 때, CPU가 특정 주소를 참조할 때마다 바인딩이 이루어진다. 이 방식은 프로세스를 메모리 내 다른 위치로 이동시킬 수 있어 가장 유연하며, 현대 운영체제에서 사용하는 방식이다.89 이를 위해서는 하드웨어의 지원이 필수적인데, MMU(Memory Management Unit)라는 하드웨어 장치가 이 역할을 수행한다.89 MMU는 CPU가 내보낸 논리적 주소를 실시간으로 물리적 주소로 변환해준다. 가장 간단한 형태의 MMU는

    재배치 레지스터(Relocation Register)(또는 기준 레지스터, Base Register)를 사용하여, 논리적 주소에 재배치 레지스터의 값을 더함으로써 물리적 주소를 계산한다.93

초기 운영체제에서 사용된 가장 간단한 방식으로, 각 프로세스를 물리 메모리의 비어있는 공간에 연속적으로 할당하는 기법이다.96

연속 할당 방식의 단편화 문제를 해결하기 위해, 하나의 프로세스가 물리 메모리의 여러 분산된 영역에 나뉘어 저장될 수 있도록 허용하는 기법이다. 현대 운영체제는 모두 이 방식을 기반으로 한다.

가상 메모리는 실제 물리 메모리의 크기보다 더 큰 프로그램을 실행할 수 있도록 하는 기술로, 현대 운영체제의 핵심 기능이다.110 이는 프로세스 전체가 메모리에 올라오지 않더라도 실행이 가능하다는 아이디어에서 출발한다.103

가상 메모리는 주로 요구 페이징 기법을 통해 구현된다. 이는 프로그램을 실행할 때 모든 페이지를 메모리에 미리 올리는 것이 아니라, 실행에 당장 필요한 페이지만을 메모리에 적재하는 방식이다.111 이를 ‘게으른 스와퍼(Lazy Swapper)’ 방식이라고도 한다.113

물리 메모리가 가득 찼을 때 어떤 페이지를 디스크로 내보낼지(교체할지) 결정하는 정책이다. 목표는 페이지 부재 발생률을 최소화하는 것이다.

이 장에서는 데이터와 프로그램을 영구적으로 저장하는 보조기억장치, 특히 하드 디스크를 운영체제가 어떻게 관리하는지 다룬다. 파일과 디렉터리의 개념부터 시작하여, 이들을 디스크에 효율적으로 배치하는 파일 시스템의 구조와 할당 방식, 그리고 디스크 헤드의 이동을 최소화하여 성능을 향상시키는 디스크 스케줄링 기법까지 살펴본다.

파일 시스템은 컴퓨터에서 파일이나 자료를 쉽게 찾고 접근할 수 있도록 보관하고 조직하는 체계이다.118 운영체제는 파일 시스템을 통해 비휘발성 보조기억장치(하드 디스크, SSD 등)를 관리하며, 사용자에게 일관된 파일 관리 인터페이스를 제공한다.120

파일 시스템은 여러 계층으로 구성되어 사용자 요청을 물리적 디스크 작업으로 변환한다.121

파일을 디스크에 저장할 때, 파일의 데이터 블록들을 어떤 방식으로 배치할지 결정하는 기법이다.

디스크는 기계적인 장치로, 데이터를 읽고 쓰기 위해 헤드를 특정 트랙으로 이동시키는 탐색 시간(Seek Time)이 전체 성능에 가장 큰 영향을 미친다. 디스크 스케줄링은 여러 입출력 요청이 있을 때, 디스크 헤드의 총 이동 거리를 최소화하여 평균 응답 시간을 줄이고 처리량을 높이는 것을 목표로 하는 알고리즘이다.

이 장에서는 운영체제의 현대적인 개념과 기술들을 다룬다. 다중 프로세서 환경에서의 동시성 문제를 해결하는 기법, 하나의 물리적 컴퓨터에서 여러 운영체제를 실행하는 가상화 기술, 그리고 네트워크로 연결된 여러 컴퓨터를 하나의 시스템처럼 사용하는 분산 운영체제의 개념을 살펴본다.

다중 스레드 또는 다중 프로세스 환경에서 공유 자원에 대한 동시 접근은 데이터 불일치와 같은 심각한 문제를 야기할 수 있다. 동시성 제어는 이러한 문제를 해결하고 데이터의 일관성을 보장하기 위한 기법이다. 대표적인 동기화 도구로 세마포어와 뮤텍스가 있다.

가상화(Virtualization)는 물리적인 컴퓨터 리소스(CPU, 메모리, 스토리지 등)의 특징을 다른 시스템이나 응용 프로그램, 최종 사용자로부터 감추는 기술이다. 가장 일반적인 형태는 하나의 물리적 서버에서 여러 개의 독립적인 가상 머신(Virtual Machine, VM)을 실행하는 것이다.

분산 시스템은 네트워크를 통해 연결된 독립적인 컴퓨터들의 집합으로, 이들을 사용자에게 하나의 단일하고 일관된 시스템처럼 보이게 하는 것이 분산 운영체제의 역할이다.145

  1. [Operating System] 운영체제란 / 운영체제 목적 / 운영체제 분류 / 운영체제 구조 - 채채씨의 학습 기록, 8월 15, 2025에 액세스, https://amber-chaeeunk.tistory.com/164
  2. [OS] 운영체제란? (운영체제의 역할, 목적, 종류, 기능) - 코딩 공부 일지, 8월 15, 2025에 액세스, https://cocoon1787.tistory.com/685
  3. 운영체제 그것이 알고싶다! 블로그 - 모두의연구소, 8월 15, 2025에 액세스, https://modulabs.co.kr/blog/introducing-os
  4. Linux(리눅스)란? 오픈소스 운영체제의 핵심 구성 요소와 장점 - Red Hat, 8월 15, 2025에 액세스, https://www.redhat.com/ko/topics/linux/what-is-linux
  5. ko.wikipedia.org, 8월 15, 2025에 액세스, https://ko.wikipedia.org/wiki/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C#:~:text=%EB%8A%94%20%EA%B7%B8%EB%A0%87%EC%A7%80%20%EC%95%8A%EB%8B%A4.-,%EB%AA%A9%EC%A0%81,%EC%9E%88%EB%8A%94%20%ED%99%98%EA%B2%BD%EC%9D%84%20%EC%A0%9C%EA%B3%B5%ED%95%9C%EB%8B%A4.&text=%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EB%8A%94%20%EC%A0%9C%EC%96%B4%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9C%BC%EB%A1%9C%EC%84%9C,%EA%B3%BC%20%EC%A0%9C%EC%96%B4%EB%A5%BC%20%EA%B4%80%EB%A6%AC%ED%95%9C%EB%8B%A4.
  6. 운영체제 - 위키백과, 우리 모두의 백과사전, 8월 15, 2025에 액세스, https://ko.wikipedia.org/wiki/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C
  7. [운영체제] 정의, 목적, 역할, 기능, 구조, 8월 15, 2025에 액세스, https://sxxb-in.tistory.com/8
  8. jerryjerryjerry.tistory.com, 8월 15, 2025에 액세스, https://jerryjerryjerry.tistory.com/171#:~:text=%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EB%8A%94%20%EC%BB%B4%ED%93%A8%ED%84%B0%20%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%98,%EB%8F%99%EC%8B%9C%EC%97%90%20%EC%8B%A4%ED%96%89%EB%90%A0%20%EC%88%98%20%EC%9E%88%EB%8F%84%EB%A1%9D%20%ED%95%9C%EB%8B%A4.
  9. [운영체제] 운영체제란? - 정의, 역할, 구조 - velog, 8월 15, 2025에 액세스, https://velog.io/@dddooo9/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EB%9E%80-%EC%A0%95%EC%9D%98-%EC%97%AD%ED%95%A0-%EA%B5%AC%EC%A1%B0
    1. 운영체제의 역사 (1970~2000) - 성장通 - 티스토리, 8월 15, 2025에 액세스, https://kevin-rain.tistory.com/88
  10. 운영체제의 역사, 8월 15, 2025에 액세스, https://rob-coding.tistory.com/23
    1. 운영체제의 역사(1950년 ~ 1960년대) - 개발자를 향하여 - 티스토리, 8월 15, 2025에 액세스, https://devraphy.tistory.com/141
  11. [OS101] 운영체제 역사 및 기능 - 개발자의 이중생활 - 티스토리, 8월 15, 2025에 액세스, https://kimdora.tistory.com/entry/%EC%9A%B4%EC%98%81-%EC%B2%B4%EC%A0%9C-%EC%86%8C%EA%B0%9C
  12. 운영체제의 기술 발전 흐름 총정리 - 너는 어느 사막 위를 걷고 있는가 - 티스토리, 8월 15, 2025에 액세스, https://chanelcocolover.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EC%9D%98-%EA%B8%B0%EC%88%A0-%EB%B0%9C%EC%A0%84-%ED%9D%90%EB%A6%84-%EC%B4%9D%EC%A0%95%EB%A6%AC
  13. [OS] 운영체제 운용기법 (발전과정,시스템종류) - nemo’s dev memos, 8월 15, 2025에 액세스, https://nemomemo.tistory.com/46
  14. 프로그래밍 언어의 발전과 운영체제의 역사 / 운영체제의 발전 by Seo Minsang Medium, 8월 15, 2025에 액세스, https://medium.com/@seominsang/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%96%B8%EC%96%B4%EC%9D%98-%EB%B0%9C%EC%A0%84%EA%B3%BC-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EC%9D%98-%EC%97%AD%EC%82%AC-1%EC%A3%BC%EC%B0%A8-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EC%9D%98-%EB%B0%9C%EC%A0%84-80df6f89192f
  15. 운영체제의 역사 - 위키백과, 우리 모두의 백과사전, 8월 15, 2025에 액세스, https://ko.wikipedia.org/wiki/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EC%9D%98_%EC%97%AD%EC%82%AC
  16. chap1. 운영체제의 개념과 태동, 그리고 발전 - MyCodingStudyNote, 8월 15, 2025에 액세스, https://codejin.tistory.com/251
  17. [운영체제] 1. 운영체제의 시작과 발전 - velog, 8월 15, 2025에 액세스, https://velog.io/@passion_man/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-1.-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EC%9D%98-%EC%8B%9C%EC%9E%91%EA%B3%BC-%EB%B0%9C%EC%A0%84
  18. OS의 정의와 발전 과정 - 개 x발 - 티스토리, 8월 15, 2025에 액세스, https://programmingjun.tistory.com/76
  19. [OS]운영체제(OS: Operating System)의 역사 - 베스핀글로벌 테크센터 블로그, 8월 15, 2025에 액세스, https://btcd.tistory.com/48
  20. 운영체제의 역할과 발전과정 - IT 공부한거 올리는 블로그, 8월 15, 2025에 액세스, https://it-learn.tistory.com/85
    1. 운영체제 - 티스토리, 8월 15, 2025에 액세스, https://arainablog.tistory.com/275
  21. [IT산업 20년 전] 윈도우의 흥망성쇠 - 컴퓨터월드, 8월 15, 2025에 액세스, https://www.comworld.co.kr/news/articleView.html?idxno=48816
  22. MS-DOS - 나무위키, 8월 15, 2025에 액세스, https://namu.wiki/w/MS-DOS
  23. 그래픽 사용자 인터페이스 - 나무위키, 8월 15, 2025에 액세스, https://namu.wiki/w/%EA%B7%B8%EB%9E%98%ED%94%BD%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4
  24. [CrashCourse] 그래픽 유저 인터페이스 (컴퓨터 과학 수업 26/40), 8월 15, 2025에 액세스, https://deepaal.tistory.com/56
  25. 거의 모든 IT의 역사 - 브런치, 8월 15, 2025에 액세스, https://brunch.co.kr/@medicibooks/28
  26. [Linux] 리눅스와 다른 운영체제 비교(vs Windows, Mac os), 8월 15, 2025에 액세스, https://hi-ai0913.tistory.com/3
  27. Windows랑 Mac, Linux는 실제로 무슨 차이가 있어? : r/AskProgramming - Reddit, 8월 15, 2025에 액세스, https://www.reddit.com/r/AskProgramming/comments/1c3lf8z/what_actual_difference_is_there_between_windows/?tl=ko
  28. 프로그래밍을 위한 Mac 대 Windows 대 Linux: 어떤 OS가 가장 좋을까요? - ClickUp, 8월 15, 2025에 액세스, https://clickup.com/ko/blog/218063/mac-vs-linux-vs-windows-for-programming
  29. 어린이용 설명 맥/리눅스 앱 설치 vs 윈도우 앱 설치 차이 : r/explainlikeimfive - Reddit, 8월 15, 2025에 액세스, https://www.reddit.com/r/explainlikeimfive/comments/pcip7b/eli5_maclinux_app_installation_vs_windows/?tl=ko
  30. 운영체제의 종류와 비교: Windows, macOS, Linux, Android, iOS, 8월 15, 2025에 액세스, https://oobwrite.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EC%9D%98-%EC%A2%85%EB%A5%98%EC%99%80-%EB%B9%84%EA%B5%90-Windows-macOS-Linux-Android-iOS
  31. EXT4가 진짜 NTFS보다 나은 거야? : r/linux4noobs - Reddit, 8월 15, 2025에 액세스, https://www.reddit.com/r/linux4noobs/comments/160kbio/is_ext4_really_better_than_ntfs/?tl=ko
  32. macOS vs 리눅스: 개발자 워크스테이션 OS로서의 생산성 비교 🖥️ - 재능넷, 8월 15, 2025에 액세스, https://www.jaenung.net/tree/6207
  33. [OS] 프로세스 개념과 상태 변화 및 관리 - About SY - 티스토리, 8월 15, 2025에 액세스, https://s-y-130.tistory.com/322
  34. [운영체제] 6. 프로세스의 개념과 상태 변화 - Wonit - 티스토리, 8월 15, 2025에 액세스, https://wonit.tistory.com/81
  35. 프로세스 상태 전이도 ( Process State Diagram ) - 개발라마 - 티스토리, 8월 15, 2025에 액세스, https://junsday.tistory.com/25
  36. 운영체제 - 프로세스(Process)란? 프로세스상태,Context Switching - 코딩스타트 - 티스토리, 8월 15, 2025에 액세스, https://coding-start.tistory.com/198
  37. 공룡책으로 정리하는 운영체제 - CHAPTER 3. 프로세스(Process), 8월 15, 2025에 액세스, https://will-behappy.tistory.com/19
  38. [운영체제] 프로세스의 상태 변화, 프로세스 제어 블록 (PCB), 8월 15, 2025에 액세스, https://laurent.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%9D%98-%EC%83%81%ED%83%9C-%EB%B3%80%ED%99%94-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EC%A0%9C%EC%96%B4-%EB%B8%94%EB%A1%9D-PCB
  39. 프로세스 상태 전이도(Process State Diagram) - Anything Is Possible - 티스토리, 8월 15, 2025에 액세스, https://hi5june.tistory.com/30
  40. [Chapter 3. 프로세스] 프로세스의 상태 - 봉황대 in CS - 티스토리, 8월 15, 2025에 액세스, https://eunajung01.tistory.com/46
  41. ground90.tistory.com, 8월 15, 2025에 액세스, https://ground90.tistory.com/100#:~:text=PCB%EB%8A%94%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%9D%98%20%EC%A0%95%EB%B3%B4,%EC%83%81%ED%83%9C%20%EB%93%B1%EC%9D%84%20%ED%8F%AC%ED%95%A8%ED%95%A9%EB%8B%88%EB%8B%A4.
  42. 프로세스 제어 블록(PCB) - 티스토리, 8월 15, 2025에 액세스, https://one-armed-boy.tistory.com/entry/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EC%A0%9C%EC%96%B4-%EB%B8%94%EB%A1%9DPCB
  43. [OS] 프로세스 제어 블록(PCB), 문맥 교환 - 솜은 코튼 - 티스토리, 8월 15, 2025에 액세스, https://sommda.tistory.com/84
  44. 프로세스 제어 블록(PCB, Process Control Block) - G-Stack - 티스토리, 8월 15, 2025에 액세스, https://ground90.tistory.com/100
  45. 문맥교환(context switching)과 오버헤드(overhead) - 우당탕탕 개발 - 티스토리, 8월 15, 2025에 액세스, https://oizys.tistory.com/14
  46. [운영체제] PCB와 컨텍스트 스위칭(Context Switching) - 신입개발자 쩨리 - 티스토리, 8월 15, 2025에 액세스, https://jerryjerryjerry.tistory.com/181
  47. 컨텍스트 스위칭(Context Switching): 멀티태스킹의 핵심 원리 - 유니얼 게임 개발, 8월 15, 2025에 액세스, https://unialgames.tistory.com/entry/CSharpContextSwitching
  48. Context Switch가 일어날 때는 왜 overhead가 클까? - Dev. Ella, 8월 15, 2025에 액세스, https://dev-ellachoi.tistory.com/106
  49. [운영체제] 1. CPU 스케줄링(개념, 알고리즘) - 우당탕탕 규투리의 개발일지, 8월 15, 2025에 액세스, https://hi-claire.tistory.com/m/48
  50. [운영체제] CPU 스케줄링 - 평범한 공대생의 개발 노트 - 티스토리, 8월 15, 2025에 액세스, https://rob-coding.tistory.com/31
  51. [OS/운영체제] CPU 스케줄링과 알고리즘 - 햄버거의 개발 - 티스토리, 8월 15, 2025에 액세스, https://eunsun-zizone-zzang.tistory.com/38
  52. [운영체제] 선점형/비선점형 스케쥴러 - Grace’s Tech Blog - 티스토리, 8월 15, 2025에 액세스, https://libertegrace.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EC%84%A0%EC%A0%90%ED%98%95%EB%B9%84%EC%84%A0%EC%A0%90%ED%98%95-%EC%8A%A4%EC%BC%80%EC%A5%B4%EB%9F%AC
  53. 선점형 스케쥴링&비선점형 스케쥴링, 8월 15, 2025에 액세스, https://jcsoohwancho.github.io/2019-10-25-%EC%84%A0%EC%A0%90%ED%98%95-%EC%8A%A4%EC%BC%80%EC%A5%B4%EB%A7%81&%EB%B9%84%EC%84%A0%EC%A0%90%ED%98%95-%EC%8A%A4%EC%BC%80%EC%A5%B4%EB%A7%81/
  54. [운영체제] CPU 스케줄링 2 (FCFS, SJF, SRTF, Round Robin …, 8월 15, 2025에 액세스, https://rannnneey.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-CPU-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81-2-FCFS-SJF-SRTF-Round-Robin-Multilevel-Queue-Multilevel-Feedback
  55. 선점형(Pre-emption)OS와 비선점형(Nonpre-emption)OS 차이 - 개발자를 꿈꾸는 프로그래머, 8월 15, 2025에 액세스, https://jwprogramming.tistory.com/14
  56. [개발자 면접] 선점형 스케줄링과 비선점 스케줄링의 차이 - zeroco - 티스토리, 8월 15, 2025에 액세스, https://zeroco.tistory.com/76
  57. [운영체제] CPU 스케줄링 알고리즘 정리 및 요약, FCFS, SJF, Round Robin - 코드 연구소, 8월 15, 2025에 액세스, https://code-lab1.tistory.com/45
  58. [OS] CPU 스케줄링, 스케줄링 알고리즘(FCFS, SJF, RR, RMS, EDF) - 주니모 오두막, 8월 15, 2025에 액세스, https://pom-pomm.tistory.com/20
  59. CPU 스케줄러 전략 (FCFS, SJF, HRN, SRT, Round Robin, Multi-Level Queue) - ‍ 은진의 로그파일 ✍️ - 티스토리, 8월 15, 2025에 액세스, https://aeroej.tistory.com/143
  60. 운영체제: 프로세스(Process)와 스케줄링 알고리즘 - WRITING BEYOND BOUNDARIES, 8월 15, 2025에 액세스, https://oobwrite.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4Process%EC%99%80-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98
  61. CPU 스케줄링, 8월 15, 2025에 액세스, https://sihyung92.oopy.io/os/5
  62. 다단계 큐 스케줄링 - 위키백과, 우리 모두의 백과사전, 8월 15, 2025에 액세스, https://ko.wikipedia.org/wiki/%EB%8B%A4%EB%8B%A8%EA%B3%84%ED%81%90%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81
  63. Chapter5 프로세스 스케줄링(Multilevel Queue, Multilevel Feedback Queue ) - Hi, I’m JeongHun - 티스토리, 8월 15, 2025에 액세스, https://jeonghoonmoon.tistory.com/120
  64. CPU Scheduling(스케줄링) - 다단계 큐 스케줄링, 다단계 피드백 큐 스케줄링, Fair-share 스케줄링, 실시간 스케줄링 - IT, FIRE, License and Daily life - 티스토리, 8월 15, 2025에 액세스, https://itdexter.tistory.com/394
  65. [운영체제 9편] 스케줄링 종류 - 개발자 배씨 - 티스토리, 8월 15, 2025에 액세스, https://baebalja.tistory.com/360
  66. 다단계 큐, 다단계 피드백 큐 스케줄링 알고리즘 CPU 스케줄링 운영체제 - YouTube, 8월 15, 2025에 액세스, https://www.youtube.com/watch?v=7sJX0miYpHk
  67. [OS] 뮤텍스와 세마포어 (Mutex and Semaphore) - Hoyeon, 8월 15, 2025에 액세스, https://hoyeonkim795.github.io/posts/mutex-semaphore/
  68. 뮤텍스(Mutex)와 세마포어(Semaphore)의 차이 - Worth spreading - 티스토리, 8월 15, 2025에 액세스, https://worthpreading.tistory.com/90
  69. [OS] 세마포어(Semaphore) vs 뮤텍스(Mutex) 차이 - MangKyu’s Diary, 8월 15, 2025에 액세스, https://mangkyu.tistory.com/104
  70. [운영체제] Mutex 뮤텍스와 Semaphore 세마포어의 차이 - 우당탕탕 히온이네 - 티스토리, 8월 15, 2025에 액세스, https://heeonii.tistory.com/14
  71. [10분 테코톡] 오션의 뮤텍스와 세마포어 - YouTube, 8월 15, 2025에 액세스, https://www.youtube.com/watch?v=NL9JQh5bbZ8
  72. Mutex 와 Semaphore. Mutex(Mutual Exclusion)란? by Chae - Medium, 8월 15, 2025에 액세스, https://chaeoff.medium.com/mutex-%EC%99%80-semaphore-9c43a6f81d48
  73. 데드락(Deadlock) 의 발생조건과 이를 해결하기 위한 4가지 방안(예방, 회피, 검출, 회복), 8월 15, 2025에 액세스, https://haon.blog/cs/os/deadlock/
  74. [운영체제] Deadlock(교착상태)의 정의와 필수조건, 예방, 회피, 회복 기법 - velog, 8월 15, 2025에 액세스, https://velog.io/@smallcherry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-Deadlock%EA%B5%90%EC%B0%A9%EC%83%81%ED%83%9C%EC%9D%98-%EC%A0%95%EC%9D%98%EC%99%80-%ED%95%84%EC%88%98%EC%A1%B0%EA%B1%B4-%EC%98%88%EB%B0%A9-%ED%9A%8C%ED%94%BC-%ED%9A%8C%EB%B3%B5-%EA%B8%B0%EB%B2%95
  75. 교착상태(Deadlock)에 대해서 설명해 주세요., 8월 15, 2025에 액세스, https://www.nossi.dev/d42a6f0e-492a-4a23-ab97-fb30e78f054c
  76. [운영체제] 13. 교착상태의 해결 방법(예방, 회피, 회복) - Wonit - 티스토리, 8월 15, 2025에 액세스, https://wonit.tistory.com/96
  77. #5 - 1) 교착상태 (Deadlock) - 얍문’s Coding World.. - 티스토리, 8월 15, 2025에 액세스, https://yabmoons.tistory.com/662
  78. [OS] 교착상태 해결 방법 예방, 회피, 탐지 - Hoyeon, 8월 15, 2025에 액세스, https://hoyeonkim795.github.io/posts/%EA%B5%90%EC%B0%A9%EC%83%81%ED%83%9C%ED%95%B4%EA%B2%B0%EB%B0%A9%EB%B2%95/
  79. [OS] 교착상태(Deadlock, 데드락)의 정의, 발생 조건, 해결 방법 - 코딩 공부 일지, 8월 15, 2025에 액세스, https://cocoon1787.tistory.com/858
  80. [OS] 교착 상태의 해결 방법 - About SY - 티스토리, 8월 15, 2025에 액세스, https://s-y-130.tistory.com/329
  81. [OS] 은행원 알고리즘 (예시문제 까지) Hoyeon, 8월 15, 2025에 액세스, https://hoyeonkim795.github.io/posts/bankers/
  82. Banker’s 알고리즘 - 지식덤프, 8월 15, 2025에 액세스, http://www.jidum.com/jidums/view.do?jidumId=451
  83. 교착상태(Dead Lock) 해결 방법 - yoongrammer - 티스토리, 8월 15, 2025에 액세스, https://yoongrammer.tistory.com/67
  84. [OS] 교착 상태 해결 방법 (교착 상태 탐지) - 솜은 코튼 - 티스토리, 8월 15, 2025에 액세스, https://sommda.tistory.com/81
  85. 교착 상태 발생 조건과 해결 방안을 말해주세요. - velog, 8월 15, 2025에 액세스, https://velog.io/@tbh05158/Temp-Title
    1. 메모리 관리 - velog, 8월 15, 2025에 액세스, https://velog.io/@sunaookamisiroko/8.-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B4%80%EB%A6%AC
  86. 메모리의 주소 공간: 물리/논리주소 가상메모리 & 주소 변환 - hmmumm - 티스토리, 8월 15, 2025에 액세스, https://mmmhmm.tistory.com/m/entry/%EB%A9%94%EB%AA%A8%EB%A6%AC%EC%9D%98-%EC%A3%BC%EC%86%8C-%EA%B3%B5%EA%B0%84-%EB%AC%BC%EB%A6%AC%EB%85%BC%EB%A6%AC%EC%A3%BC%EC%86%8C-%EA%B0%80%EC%83%81%EB%A9%94%EB%AA%A8%EB%A6%AC
  87. [운영체제] 메모리 관리 기법 - 페이징 & 세그멘테이션 - 데일리디벨롭, 8월 15, 2025에 액세스, https://hyuuny.tistory.com/155
  88. [OS] 논리(Logical) 메모리와 물리(Physical) 메모리에 관하여 - middlefitting - 티스토리, 8월 15, 2025에 액세스, https://middlefitting.tistory.com/51
  89. [ 운영체제 ] 주소 공간(Address Space), 물리적 주소(Physical …, 8월 15, 2025에 액세스, https://charles098.tistory.com/103
  90. 컴퓨터 구조 #13 - 메모리 주소 공간 - 물리 주소와 논리 주소 - 차곡차곡 성 쌓기, 8월 15, 2025에 액세스, https://uzinlab.tistory.com/109
  91. [CS] 논리주소와 물리주소 - 김놀자, 8월 15, 2025에 액세스, https://cjbworld.tistory.com/34
  92. [운영체제]메모리 관리 전략(Memory Management Strategy), 8월 15, 2025에 액세스, https://dheldh77.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B4%80%EB%A6%AC-%EC%A0%84%EB%9E%B5Memory-Management-Strategy
  93. [Operating System] 메모리 할당 - Tech Log - 티스토리, 8월 15, 2025에 액세스, https://hapen385.tistory.com/49
  94. [OS] 연속 메모리 할당 - About SY - 티스토리, 8월 15, 2025에 액세스, https://s-y-130.tistory.com/337
  95. [OS] 메모리 할당 기법(연속 할당, 불연속 할당)에 대해 알아보자. - Study Repository, 8월 15, 2025에 액세스, https://rlaehddnd0422.tistory.com/246
  96. [운영체제 11편] 메모리 할당 (연속할당 방식) - 개발자 배씨 - 티스토리, 8월 15, 2025에 액세스, https://baebalja.tistory.com/416
  97. [운영체제 OS] 메모리 관리란? - 이유, 방법 - 내가보려고만든 메자노트 - 티스토리, 8월 15, 2025에 액세스, https://technote-mezza.tistory.com/92
  98. [운영체제] 물리 메모리 관리 - 평범한 공대생의 개발 노트 - 티스토리, 8월 15, 2025에 액세스, https://rob-coding.tistory.com/32
  99. 가상 메모리(Virtual Memory), 페이징(Paging) - 다락방 - 티스토리, 8월 15, 2025에 액세스, https://hojunking.tistory.com/110
  100. [OS] 페이징과 세그멘테이션 - velog, 8월 15, 2025에 액세스, https://velog.io/@jsi06138/OS-%ED%8E%98%EC%9D%B4%EC%A7%95%EA%B3%BC-%EC%84%B8%EA%B7%B8%EB%A9%98%ED%85%8C%EC%9D%B4%EC%85%98
  101. 세그멘테이션과 페이징 (+ 비교 ) - Scatch note, 8월 15, 2025에 액세스, https://mglee.dev/blog/%EC%84%B8%EA%B7%B8%EB%A9%98%ED%85%8C%EC%9D%B4%EC%85%98%EA%B3%BC-%ED%8E%98%EC%9D%B4%EC%A7%95-%EB%B9%84%EA%B5%90/
  102. [OS] 페이징 & 세그멘테이션 - BUILD_SSO - 티스토리, 8월 15, 2025에 액세스, https://sohyeonnn.tistory.com/14
  103. [운영체제] 페이징과 세그멘테이션 - 뜬 눈으로 꾸는 꿈 - 티스토리, 8월 15, 2025에 액세스, https://bellog.tistory.com/159
  104. [운영체제] 단편화와 메모리 관리 기법(페이징, 세그멘테이션) - 뚜발자 - 티스토리, 8월 15, 2025에 액세스, https://s0ojin.tistory.com/43
  105. [운영체제] 페이징과 세그멘테이션 - 느리더라도 꾸준하게 - 티스토리, 8월 15, 2025에 액세스, https://steady-coding.tistory.com/524
  106. 운영체제. 가상 메모리, 페이징 - velog, 8월 15, 2025에 액세스, https://velog.io/@leeesangheee/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C.-%EA%B0%80%EC%83%81-%EB%A9%94%EB%AA%A8%EB%A6%AC-%ED%8E%98%EC%9D%B4%EC%A7%95
  107. [OS] 요구 페이징(가상메모리) - 장장스 - 티스토리, 8월 15, 2025에 액세스, https://zangzangs.tistory.com/142
  108. [OS] 요구 페이징 - 인성의 개발 공부 노트 - 티스토리, 8월 15, 2025에 액세스, https://superohinsung.tistory.com/127
  109. [운영체제] 가상 메모리 관리 - 평범한 공대생의 개발 노트, 8월 15, 2025에 액세스, https://rob-coding.tistory.com/36
  110. [운영체제] 페이지 교체 알고리즘 (FIFO/OPT/LRU/LFU/MFU), 8월 15, 2025에 액세스, https://code-lab1.tistory.com/60
  111. [OS] 3. 페이지 교체 알고리즘[OPT/FIFO/LRU/LFU/NUR/SCR 등] - 초보개발자의 개발이야기, 8월 15, 2025에 액세스, https://berkley.tistory.com/111
  112. [OS] 페이지 교체 알고리즘 - FIFO/LRU/LFU/MFU/NUR - CORE DATA - 티스토리, 8월 15, 2025에 액세스, https://doh-an.tistory.com/28
  113. [OS/운영체제] 페이지 교체 (Page Replacement) - (2) - 4Legs_Archives - 티스토리, 8월 15, 2025에 액세스, https://4legs-study.tistory.com/54
  114. OS 파일시스템(File System) - 개발새발 개발개발, 8월 15, 2025에 액세스, https://daesiker.tistory.com/36
  115. File System(1) - 운영체제(OS) - velog, 8월 15, 2025에 액세스, https://velog.io/@thdalstn6352/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-File-System
  116. [OS] File System 이란? - beatmejy - 티스토리, 8월 15, 2025에 액세스, https://beatmejy.tistory.com/30
  117. OS - File System(파일시스템), 8월 15, 2025에 액세스, https://jackcokebb.tistory.com/15
  118. ko.wikipedia.org, 8월 15, 2025에 액세스, [https://ko.wikipedia.org/wiki/%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC#:~:text=%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC(%EC%98%81%EC%96%B4%3A%20directory%2C%20%EB%AC%B8%ED%99%94%EC%96%B4,%EC%B9%B4%ED%83%88%EB%A1%9C%EA%B7%B8(catalog)%EB%9D%BC%EA%B3%A0%EB%8F%84%20%ED%95%9C%EB%8B%A4.](https://ko.wikipedia.org/wiki/디렉토리#:~:text=디렉토리(영어%3A directory%2C 문화어,카탈로그(catalog)라고도 한다.)
    1. 파일과 디렉토리 / UNIXBasic - Jihoo Yim, 8월 15, 2025에 액세스, https://jihooyim1.gitbooks.io/unixbasic/content/contents/03.html
  119. 디렉터리 - 나무위키, 8월 15, 2025에 액세스, https://namu.wiki/w/%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC
  120. [운영체제] 파일 시스템 - velog, 8월 15, 2025에 액세스, https://velog.io/@k4minseung/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%ED%8C%8C%EC%9D%BC-%EC%8B%9C%EC%8A%A4%ED%85%9C
  121. [운영체제 OS] 파일 시스템 File System - MYVELOP 마이벨롭 - 티스토리, 8월 15, 2025에 액세스, https://myvelop.tistory.com/203
  122. [Chapter 11. 파일 시스템 구현] 파일 시스템, 디스크 공간 할당 방법과 …, 8월 15, 2025에 액세스, https://eunajung01.tistory.com/92
  123. [운영체제][저장장치관리] 저장장치와 입출력(Storage & Input/Output) #4 파일 시스템 구현, 8월 15, 2025에 액세스, https://yonghwankim-dev.tistory.com/497
  124. [운영체제] 디스크 공간할당 - 이누의 개발성장기 - 티스토리, 8월 15, 2025에 액세스, https://inuplace.tistory.com/383
  125. 파일 할당(File Allocation) - 호모 아키비스트 - 티스토리, 8월 15, 2025에 액세스, https://yeongunheo.tistory.com/entry/%ED%8C%8C%EC%9D%BC-%ED%95%A0%EB%8B%B9
  126. [운영체제 정리] 19: 파일 할당 (Allocation of file) - 완숙의 에그머니, 8월 15, 2025에 액세스, https://wansook0316.github.io/cs/os/2020/04/06/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EC%A0%95%EB%A6%AC-19-%ED%8C%8C%EC%9D%BC-%ED%95%A0%EB%8B%B9.html
    1. 파일 할당(File Allocation) - velog, 8월 15, 2025에 액세스, https://velog.io/@shin_ms/19.-%ED%8C%8C%EC%9D%BC-%ED%95%A0%EB%8B%B9File-Allocation
  127. [운영체제] 디스크 스케줄링이란?(Disk Scheduling) - Limky 삽질블로그, 8월 15, 2025에 액세스, https://limkydev.tistory.com/165
  128. [운영체제 정리] 20: 디스크 스케쥴링 알고리즘 완숙의 에그머니, 8월 15, 2025에 액세스, https://wansook0316.github.io/cs/os/2020/04/06/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EC%A0%95%EB%A6%AC-20-%EB%94%94%EC%8A%A4%ED%81%AC-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98.html
  129. 디스크 관리와 스케줄링, 8월 15, 2025에 액세스, https://sihyung92.oopy.io/os/11
  130. [정보처리특강] 디스크 스케줄링 - SCAN, C-SCAN - YouTube, 8월 15, 2025에 액세스, https://www.youtube.com/watch?v=drgRPjEVlP8
  131. 가상화의 종류 - 전가상화와 반가상화 - A6K 개발노트, 8월 15, 2025에 액세스, https://hbase.tistory.com/472
  132. 1형 및 2형 하이퍼바이저 비교 - 하이퍼바이저 유형 간의 차이점 - AWS, 8월 15, 2025에 액세스, https://aws.amazon.com/ko/compare/the-difference-between-type-1-and-type-2-hypervisors/
  133. 하이퍼바이저(Hypervisor)란 무엇인가? with 가상화 (Virutalization) - Neu@security-blog, 8월 15, 2025에 액세스, https://neutrinox4b1.tistory.com/19
  134. [클라우드] 가상화의 종류(호스트OS , 하이퍼바이저-가상화와 반 …, 8월 15, 2025에 액세스, https://lee-automation-lab.tistory.com/entry/%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EA%B0%80%EC%83%81%ED%99%94%EC%9D%98-%EC%A2%85%EB%A5%98%ED%98%B8%EC%8A%A4%ED%8A%B8OS-%ED%95%98%EC%9D%B4%ED%8D%BC%EB%B0%94%EC%9D%B4%EC%A0%80-%EA%B0%80%EC%83%81%ED%99%94%EC%99%80-%EB%B0%98%EA%B0%80%EC%83%81%ED%99%94-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88
  135. 반가상화 전가상화 - 별 볼일있는 공간 - 티스토리, 8월 15, 2025에 액세스, https://wlstnans.tistory.com/17
  136. [가상화] Full Virtualization & Para Virtualization (전가상화와 반가상화) - Suyeon’s Blog, 8월 15, 2025에 액세스, https://suyeon96.tistory.com/53
  137. 전가상화와 반가상화 (Full & Para Virtualization) - #devspace - 티스토리, 8월 15, 2025에 액세스, https://myminju.tistory.com/100
  138. [Server] 하드웨어 가상화(Virtualization)의 종류 및 차이 (2/2) - 망나니개발자 - 티스토리, 8월 15, 2025에 액세스, https://mangkyu.tistory.com/87
  139. [OS-19] 분산 운영체제 - DevGang - 티스토리, 8월 15, 2025에 액세스, https://kkyu-coder.tistory.com/63
  140. 분산 운영체제 - 취미로 공부하기, 8월 15, 2025에 액세스, https://3catpapa.tistory.com/118
  141. 컴퓨터 시스템 정리 (분산 시스템, 병렬 시스템, 클러스터 시스템, Real-Time 시스템, Handled 시스템) - Jay’s Blog - 티스토리, 8월 15, 2025에 액세스, https://enlqn1010.tistory.com/31
  142. PART 03. 운영체제 - 분산 운영체제 - 까망눈연구소 - 티스토리, 8월 15, 2025에 액세스, https://wogh8732.tistory.com/43