국립중앙도서관 출판시도서목록(cip)š´영... · 2015-10-02 · 6 c o n t e n t s...

46

Upload: others

Post on 28-Dec-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49
Page 2: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

운영체제 = Operating system / 박규석, 김창수, 배인한, 이준연, 박홍진 지음. -- 개정판. -- 파주 : 생능출판사, 2013 p. ; cm

ISBN 978-89-7050-784-2 93000 : \23000

운영체제[運營體制]

005.43-KDC5005.43-DDC21 CIP2013014546

국립중앙도서관 출판시도서목록(CIP)

Page 3: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

3

P R E F A C E머리말

운영체제는 컴퓨터를 배우려고 하는 사람이라면 누구나 한 번 이상은 필독하여

야 할 책으로서, 시중에는 운영체제에 관련된 책들이 많이 나와 있으나 운영체제

별 특성이 다르듯이 각 책들마다 내용의 특성이 다르기 때문에 독자들이 적절한

책을 선택한다는 것은 매우 어려운 일입니다. 그러므로 적합한 책의 선택이야말

로 학습을 하는 데 있어 매우 중요한 요소가 된다고 생각합니다.

이 책은 대학에서 컴퓨터를 배우려고 하는 학생들이나 사회에서 컴퓨터 관련

정보산업에 종사하고 있는 전문가들을 위한 컴퓨터 운영체제 전문교재로서, 저자

가 대학 강단에서 수십 년 운영체제를 강의하면서 얻은 경험을 토대로 기술하였

습니다. 따라서 이 책은 어느 특정된 운영체제에 중점을 둔 것이 아니라, 여러 시

스템에 공통되는 기본적인 개념을 기초로 기술되어 있어 누구나 쉽게 배울 수 있

습니다.

또한 이 책은 저자가 기존에 편저하였던 ‘상조사’의 운영체제 책을 근간으로 여

러 문헌과 강의록 등을 참고하여 수차례 재집필해오면서 많은 부분들을 현실에

맞도록 삭제 및 추가하였습니다. 특히, 8장의 정보 보호 및 보안, 10장의 분산 처

리 시스템과 11장의 임베디드 시스템 등은 그 자체가 하나의 과목으로 배워야 될

내용이지만, 이 책에서는 간단히 소개하는 것이 바람직하다고 생각되어, 상세히

기술하지 않고 핵심적이라고 생각되는 기본적인 내용들만 간략히 소개하였으며

부록에 유닉스와 안드로이드 시스템의 개요를 소개하였습니다.

아직도 많은 내용들을 더 보완하고 새로운 내용들을 소개하고 싶지만 이미 소

개된 내용들만으로도 대학에서 한 학기에 배우기에는 많은 부담이 되리라 생각됩

니다. 하지만 필요에 따라서 선별하여 강의나 연구에 활용한다면 더욱 효율적일

Page 4: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

4

P R E F A C E

것이라 생각합니다. 저자가 이 책을 집필하면서 바라는 바는, 독자 여러분께서 이

책을 통하여 운영체제의 분석과 평가능력을 배양하여 운영체제 전반에 필요한 지

식을 획득하는 데 많은 도움이 되었으면 하는 것입니다. 아직도 용어들의 우리말

표현이 어렵고 또한 의사 표현이 충분치 못하여 미비점이 많으리라 생각되나, 추

후 다시 수정 보완할 것을 약속드리면서 이 책을 출간합니다.

끝으로 이 책이 출판되기까지 수고해 주신 관련자 여러분과 좋은 자료를 제공

해 주신 대전대 최용락 교수님, 서울여대 황 준 교수님, 군산대 이재완 교수님, 공

주대 임재현 교수님 그리고 감수를 맡아주신 김영찬 교수님께 감사드리며, 이 책

이 완성되기까지 협조해 주신 생능출판사 관계자 여러분께 심심한 사의를 표합

니다.

2013년 7월

저자 일동

Page 5: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

5

C O N T E N T S차 례

소개CHAPTER 01

1.1 개요 14

1.2 운영체제의 유형 16

1.2.1 일괄 처리 시스템(batch processing system) 17

1.2.2 다중 프로그래밍 시스템(multiprogramming system) 18

1.2.3 시분할 시스템(time-sharing system) 19

1.2.4 실시간 시스템(real-time system) 20

1.2.5 다중 처리 시스템(multiprocessing system) 20

1.2.6 개인용 컴퓨터 시스템(personal computer system) 21

1.2.7 분산 처리 시스템(distributed processing system) 22

1.2.8 멀티미디어 시스템(multimedia system) 23

1.2.9 임베디드 시스템(embedded system) 25

1.3 운영체제에 대한 관점 25

1.3.1 자원 관리자 관점 26

1.3.2 프로세스 관점 28

1.3.3 계층 구조 관점 28

1.4 입출력 프로그래밍 31

1.4.1 BIOS(basic input/output system) 31

1.4.2 부트 진행 과정(boot process) 32

1.4.3 POST(power on self test) 32

1.4.4 버퍼링(buffering) 33

1.4.5 스풀링(SPOOLing) 35

1.4.6 채널(channel) 36

1.4.7 인터럽트(interrupt) 38

1.5 요약 42

● 연습문제 44

Page 6: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

6

C O N T E N T S

프로세스와 스레드 관리CHAPTER 02

2.1 개요 48

2.2 프로세스 관리 49

2.3 프로세스 구성 요소 49

2.4 프로세스의 상태 50

2.5 프로세스 제어 블록(PCB) 52

2.6 프로세스 생성 53

2.7 프로세스 스케줄링 56

2.7.1 스케줄링의 목적 및 기준 56

2.7.2 단계별 분류 59

2.7.3 방법·환경별 분류 60

2.8 프로세스 스케줄링 알고리즘 64

2.8.1 FCFS(First Come First Served) 스케줄링 64

2.8.2 SJF(Shortest Job First) 스케줄링 66

2.8.3 우선순위(Priority) 스케줄링 67

2.8.4 라운드 로빈(Round-Robin) 스케줄링 69

2.8.5 SRT(Shortest Remaining Time) 스케줄링 71

2.8.6 다단계 큐(Multilevel Queue) 스케줄링 73

2.8.7 다단계 피드백 큐(Multilevel Feedback Queue) 스케줄링 75

2.8.8 HRN(High Response ratio Next) 스케줄링 77

2.9 스레드(Thread) 78

2.10 요약 82

● 연습문제 88

기억장치 관리CHAPTER 03

3.1 개요 94

3.1.1 주소 바인딩(address binding) 96

3.1.2 논리적 주소와 물리적 주소 96

3.2 기억장치의 계층 구조 및 관리 기법 97

3.3 단일 사용자 연속 기억장치 할당 100

3.3.1 단일 사용자 연속 기억장치 할당 100

3.3.2 시스템 보호 101

3.4 고정 분할 기억장치 할당 102

3.4.1 절대 번역 및 로딩 104

Page 7: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

7

C O N T E N T S3.4.2 재배치 가능 번역 및 로딩 104

3.4.3 시스템 보호 104

3.4.4 분할 공간의 크기와 단편화 105

3.5 가변 분할 기억장치 할당 107

3.5.1 기억 공간의 효율화 107

3.5.2 기억장치 배치 기법 112

3.6 기억장치 교체(swapping) 114

3.7 요약 115

● 연습문제 119

가상 메모리 관리CHAPTER 04

4.1 개요 122

4.1.1 동적 주소 변환(dynamic address translation) 124

4.1.2 블록 사상(block mapping) 124

4.2 페이징(paging) 127

4.2.1 직접 사상(direct mapping) 128

4.2.2 연관 사상(associative mapping) 129

4.2.3 연관/직접 사상 131

4.2.4 페이징 시스템의 공유 132

4.2.5 페이지 크기 133

4.2.6 페이지 인출 기법 135

4.2.7 페이지 양도(page release) 136

4.3 세그먼테이션(segmentation) 137

4.3.1 직접 사상 138

4.3.2 공유 및 보호 141

4.4 세그먼트/페이징 혼용 기법 143

4.4.1 동적 주소 변환 144

4.4.2 시스템의 공유 146

4.5 페이지 교체 알고리즘 147

4.5.1 FIFO(First-In First-Out) 알고리즘 147

4.5.2 최적 교체(Optimal Replacement) 알고리즘 149

4.5.3 LRU(Least Recently Used) 알고리즘 150

4.5.4 2차 기회(second chance) 알고리즘 151

4.5.5 LFU(Least Frequently Used) 알고리즘 152

4.6 스래싱(thrashing) 153

Page 8: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

8

C O N T E N T S

4.6.1 구역성(locality) 154

4.6.2 작업세트(working set) 155

4.6.3 페이지 부재율 156

4.7 요약 157

● 연습문제 159

디스크 스케줄링과 파일 시스템CHAPTER 05

5.1 개요 164

5.2 디스크 구조 165

5.3 CD-ROM 구조 166

5.4 디스크 스케줄링 167

5.4.1 FCFS(First Come First Served) 스케줄링 168

5.4.2 SSTF(Shortest Seek Time First) 스케줄링 170

5.4.3 SCAN 및 LOOK 스케줄링 171

5.4.4 C-SCAN 및 C-LOOK 스케줄링 172

5.4.5 알고리즘 선택 174

5.5 파일 시스템 175

5.5.1 데이터의 계층 구조 175

5.5.2 블로킹 176

5.5.3 파일 시스템의 기능 176

5.5.4 파일의 구조 177

5.5.5 파일 공간의 할당과 회수 179

5.5.6 파일의 보호(protection) 183

5.6 디렉터리 구조 185

5.6.1 일단계 구조 디렉터리 186

5.6.2 이단계 구조 디렉터리 187

5.6.3 트리 구조 디렉터리 188

5.6.4 비순환 구조 디렉터리 190

5.6.5 일반적 그래프 구조 디렉터리 191

5.7 파일 시스템의 예 192

5.7.1 FAT(File Allocation Table) 192

5.7.2 NTFS(New Technology File System) 193

5.7.3 UFS(Unix File System) 193

5.7.4 Ext(Extended File System) 193

5.7.5 GFS(Google File System) 194

Page 9: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

9

C O N T E N T S5.7.6 HDFS(Hadoop Distributed File System) 195

5.8 요약 195

● 연습문제 198

프로세스 간 동기화 및 통신CHAPTER 06

6.1 개요 202

6.2 병행 처리의 문제점 202

6.2.1 임계 구역(Critical Section) 203

6.2.2 상호 배제(mutual exclusion) 204

6.3 상호 배제 알고리즘 205

6.3.1 1단계 알고리즘 206

6.3.2 2단계 알고리즘 206

6.3.3 3단계 알고리즘 207

6.4 하드웨어에 의한 동기화 209

6.5 세마포 210

6.5.1 정의 210

6.5.2 세마포를 이용한 상호 배제 211

6.5.3 세마포를 이용한 동기화 211

6.5.4 세마포를 이용한 생산자/소비자 문제 212

6.5.5 세마포를 이용한 읽기/쓰기 문제 213

6.6 모니터 214

6.6.1 개요 214

6.6.2 사용 예 215

6.7 메시지 220

6.7.1 메시지 실행 시 고려사항 221

6.8 요약 224

● 연습문제 226

교착 상태CHAPTER 07

7.1 개요 230

7.1.1 개념 230

7.1.2 교착 상태의 모델 230

7.1.3 교착 상태 조건 233

Page 10: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

10

C O N T E N T S

7.2 교착 상태 예방(Deadlock Prevention) 235

7.2.1 점유와 대기 조건 방지 235

7.2.2 비선점 조건 방지 236

7.2.3 환형 대기 조건 방지 236

7.3 교착 상태 회피(Deadlock Avoidance) 237

7.3.1 안전(safety) 알고리즘 237

7.3.2 은행가 알고리즘 238

7.4 교착 상태 탐지(Deadlock Detection) 239

7.4.1 탐지 알고리즘 240

7.5 교착 상태 회복(Deadlock Recovery) 241

7.5.1 문제점 242

7.5.2 회복 방법 243

7.6 요약 244

● 연습문제 246

정보 보호 및 보안CHAPTER 08

8.1 보호의 개요 250

8.2 보호의 영역 251

8.3 접근 제어 정책 및 기법 252

8.3.1 접근 행렬(Access Matrix) 252

8.3.2 접근 행렬의 구현 253

8.4 보안의 개요 257

8.5 보안 위협 258

8.5.1 흐름 차단(Interruption) 259

8.5.2 가로채기(Interception) 259

8.5.3 변조(Modification) 259

8.5.4 위조(Fabrication) 260

8.5.5 기타 보안 위협 요소 260

8.5.6 악성 소프트웨어(Malicious Software) 261

8.6 보안 서비스 263

8.6.1 보안 요구사항 264

8.6.2 인증(Authentication) 265

8.6.3 부인봉쇄(Non-Repudiation) 266

8.6.4 접근 제어(Access Control) 266

8.7 보안 기법 267

Page 11: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

11

C O N T E N T S8.7.1 대칭키 암호방식(Symmetric Encryption Method) 267

8.7.2 비대칭키 암호방식(Asymmetric Encryption Method) 268

8.7.3 기타 보안 기법 269

8.8 요약 273

● 연습문제 274

다중 처리 시스템CHAPTER 09

9.1 개요 278

9.2 Flynn의 분류 279

9.2.1 SISD(Single Instruction stream Single Data stream) 279

9.2.2 SIMD(Single Instruction stream Multiple Data stream) 279

9.2.3 MISD(Multiple Instruction stream Single Data stream) 280

9.2.4 MIMD(Multiple Instruction stream Multiple Data stream) 281

9.3 병렬 처리 281

9.3.1 병렬성(parallelism) 281

9.3.2 병렬성의 단계 282

9.3.3 병렬성의 자동 검출 284

9.4 운영체제 구성 288

9.4.1 주/종 관계 288

9.4.2 독립 수행 289

9.4.3 대칭적 처리 289

9.5 요약 290

● 연습문제 292

분산 처리 시스템CHAPTER 10

10.1 개요 294

10.1.1 분산 처리 시스템의 개발 동기 295

10.1.2 분산 처리 시스템의 범위 297

10.2 분산 처리 시스템 형태 299

10.2.1 프로세서 모델에 따른 구분 299

10.2.2 위상에 따른 구분 302

10.2.3 분산 범위에 따른 구분 307

10.3 분산 시스템 구조 310

10.3.1 네트워크 운영체제 311

Page 12: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

12

C O N T E N T S

10.3.2 분산 운영체제 312

10.4 클라우드 컴퓨팅(Cloud Computing) 315

10.4.1 클라우드 컴퓨팅 대 현재 모델 315

10.4.2 클라우드 컴퓨팅의 종류 317

10.4.3 클라우드 컴퓨팅의 장점 319

10.4.4 클라우드 컴퓨팅의 단점 319

10.5 요약 320

● 연습문제 322

임베디드 시스템CHAPTER 11

11.1 개요 324

11.1.1 임베디드 시스템 324

11.1.2 임베디드 시스템의 구성 326

11.1.3 임베디드 시스템의 적용 분야 328

11.1.4 임베디드 시스템의 개발 절차 333

11.1.5 임베디드 시스템의 전망 336

11.2 임베디드 운영체제 338

11.2.1 임베디드 운영체제 개요 338

11.2.2 임베디드 운영체제 종류 339

11.3 요 약 345

● 연습문제 346

부록APPENDIX

부록 A. UNIX 348

부록 B. 안드로이드(Android) 385

■참고문헌 392

■찾아보기 395

Page 13: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

소 개

C H A P T E R

ComputerOperating

System

01

1.1 개요

1.2 운영체제의 유형

1.3 운영체제에 대한 관점

1.4 입출력 프로그래밍

1.5 요약

Page 14: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

14

01C H A P T E R

Computer Operating System

소 개

1.1 개요

운영체제는 컴퓨터 하드웨어와 컴퓨터 사용자 간의 매개체 역할을 하는 시스템

소프트웨어로서 사용자가 프로그램을 수행할 수 있는 환경을 제공한다. 운영체제

의 주목적은 컴퓨터 시스템을 편리하게 이용하는 데 있고, 부수적인 목적은 컴퓨

터 하드웨어를 효율적으로 관리하는데 있다.

모든 운영체제는 관련 처리기, 메모리, 디바이스들, 파일, 네트워크들과 보안

등에 대해 가능한 한 최선의 방법으로 모든 자원들을 관리해야 한다. 따라서 운영

체제는 컴퓨터 자원(하드웨어와 데이터, 응용 프로그램, 유틸리티 프로그램 등의

소프트웨어 포함)의 운영을 위해 수행되는 가장 중요한 소프트웨어이다.

컴퓨터 시스템은 <그림 1-1>과 같이 하드웨어, 운영체제, 응용 프로그램 그리

고 사용자의 네 부분으로 나눌 수 있다.

| 그림 1-1 | 컴퓨터 시스템의 구성

Page 15: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

소 개 CHAPTER

15

01

하드웨어는 중앙처리장치, 기억장치와 입출력장치로 구성되어 계산을 하기 위

한 기본적인 자원을 제공하고, 응용 프로그램은 사용자가 제시한 문제를 풀기 위

해 필요한 자원의 사용방법을 정의한다. 다수의 사용자들이 각각 상이한 문제들

을 해결하려고 하기 때문에 다양한 종류의 많은 프로그램이 존재하게 된다.

운영체제는 자원 할당자라고도 볼 수 있다. 컴퓨터 시스템은 하나의 문제를 해

결하기 위해 필요한 자원들, 즉 중앙처리장치 점유시간, 기억장치 공간, 파일 저

장 공간, 입출력장치 등을 운영한다. 운영체제는 이들 자원의 관리자로서 특정 프

로그램과 사용자 간의 작업에 필요한 자원을 할당해 준다. 이들 자원에 대한 요구

가 많고, 이들 요구가 서로 충돌되는 경우가 발생하기 때문에, 운영체제는 컴퓨터

시스템을 공정하고 효율적으로 운영하기 위해 어떻게 자원을 할당할 것인가를 결

정해야 한다. 이러한 충돌 문제를 해결하기 위해서는 다음과 같은 문제점들의 해

결이 요구된다.

● 어떤 응용 프로그램이 우선순위가 가장 높은가?

● 어떤 파일이 하드 드라이브 상의 가장 빠른 검색이 가능한 위치를 부여받을

것인가?

● CPU의 빠른 처리와 디스크 접근속도 중 어떤 쪽이 더 중요한가?

● 상대적으로 더 중요한 사용자의 경우 그 처리를 위한 대기시간은 최소화되

는가?

이러한 문제점들의 해결을 위하여 컴퓨터 시스템이 공정하고 효율적으로 자원

을 할당할 수 있도록 운영체제가 설계되어야 한다.

운영체제의 또 다른 관점은 다양한 입출력장치와 사용자 프로그램의 통제자로

보는 것이다. 이때의 운영체제는 제어 프로그램으로 볼 수 있으며, 제어 프로그램

은 사용자 프로그램을 통제하여 오류 또는 컴퓨터의 부적절한 사용을 방지한다는

것이다.

그러나 일반적으로 운영체제에 대한 완벽한 정의는 없으며, 컴퓨터 시스템의

근본적인 목적은 사용자 프로그램을 실행하고, 또 사용자가 문제를 쉽게 해결하

도록 하는 것이다. 이 목적을 위해서 컴퓨터 하드웨어도 제작된 것이다. 그러나

하드웨어만으로는 사용이 불편하기 때문에 여러 가지 응용 프로그램이 개발되고,

자원 할당자

하드 드라이브

Page 16: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

16

Computer Operating System운영체제

이들 다양한 프로그램들은 입출력장치의 통제와 같은 공통적인 조작이 필요하다.

따라서 자원들을 통제하고 할당하는 공통적인 기능을 하나의 소프트웨어로 통합

한 것이 운영체제이다.

본 장에서는 운영체제가 무엇이며, 이들이 무슨 일을 하는가를 알아보기 위해

과거 수십 년 동안 어떻게 발전되어 왔는지 살펴보며, 이러한 발전 과정을 살펴봄

으로써 운영체제의 공통적인 요소를 식별하고, 또한 이들이 어떻게, 그리고 왜 그

와 같이 발전되었는가를 알아본다.

1.2 운영체제의 유형

초기의 컴퓨터들은 부피가 매우 큰 컴퓨터 하드웨어만이 존재하였다. 이때에는

천공카드(punched card)나 종이테이프에 수록된 프로그램을 각종 장치의 프런트

패널(front panel) 스위치를 이용하여 수작업으로 주기억장치에 적재(load)한 후,

해당되는 버튼을 눌러서 프로그램의 시작 번지와 그 실행을 지시하였다. 그리고

프로그램의 실행이 시작되면 프로그래머나 오퍼레이터는 콘솔( console) 상에 나

타나는 램프(lamp)를 보고 프로그램의 실행을 감지하였으며, 만약 오류가 발생되

면 프로그래머는 실행을 멈추고 주기억장치와 레지스터의 내용을 덤프(dump)하

여 직접 콘솔 상에서 프로그램 디버깅(debugging)을 하였다.

그러나 시간이 흐름에 따라 카드 판독기, 라인 프린터, 자기테이프 등과 같은

하드웨어와 어셈블러, 로더( loader) 및 링커(linker) 등과 같은 소프트웨어가 부가

적으로 개발되어 프로그래밍 태스크(task)를 용이하게 하였으며, 여러 사용자에

의해서 공통적으로 사용될 수 있는 함수 라이브러리( function library)들도 개발

되었다.

또한 FORTRAN, COBOL 등과 같은 프로그래밍 언어를 위한 컴파일러가 개

발되어 프로그래밍 작업을 훨씬 쉽게 하였다. 예를 들면, FORTRAN 컴파일러

를 컴퓨터에 적재하고, 프로그램은 카드 판독기나 다른 입력장치 상에서 읽어 들

임으로써 FORTRAN 컴파일러는 컴퓨터에 의해서 실행이 가능한 2진 목적 코드

( object code) 형태를 만들어냈다.

Page 17: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

소 개 CHAPTER

17

01

이때는 하나의 사용자 프로그램을 실행(run)하기 위해서 상당한 준비 시간

(setup time)이 요구되었다. 즉, FORTRAN 컴파일러 테이프를 적재시켜 동작시

키는 과정, 다시 컴파일러 테이프를 분리(unloading)하는 과정, 어셈블러 테이프

를 적재시켜 동작시킨 후 다시 분리시키는 과정 및 목적 프로그램의 적재와 실행

등 많은 중간 작업이 따랐다. 이 과정에서 단 하나의 오류가 발생하더라도 처음부

터 다시 시작해야만 했다.

1.2.1 일괄 처리 시스템(batch processing system)

초기의 컴퓨터는 오퍼레이터가 작업 준비 과정에서부터 실행에 이르기까지 직

접 관여해야 했으며, 이 과정에서 작업 준비 시간은 큰 문제가 되었다. 그 이유는

테이프를 준비하거나 오퍼레이터가 콘솔을 조작하고 있는 동안 중앙처리장치는

유휴 상태( idle state)로 되기 때문이다.

이와 같은 유휴 상태의 시간을 없애기 위하여 작업 순서의 자동화(automatic

job sequencing) 개념이 도입되었다. 이는 한 프로그램에서 다음 프로그램으로

제어를 자동적으로 넘기기 위해 만들어진 상주 모니터( resident monitor)를 두는

것이다. 상주 모니터는 시스템 초기에 시스템에 대한 제어를 가지고 있다가 새로

운 프로그램이 실행되고자 하면 그 프로그램에게 제어를 넘기고, 그 프로그램이

실행을 완료하면 일단 제어를 되돌려 받은 후 필요하다면 또 다른 프로그램에게

제어를 넘김으로써 작업 간의 전이를 오퍼레이터의 개입 없이 자동적으로 수행하

고자 하는 것이다.

그러기 위하여 상주 모니터는 어떤 작업 또는 프로그램이 실행되어야 할 것인

가에 대한 정보를 알고 있어야 하는데, 프로그래머가 상주 모니터에게 전달할 정

보를 작업 제어 카드( job control card)에 수록함으로써 해결하였다. 이 카드들은

상주 모니터에게 어느 프로그램이 수행될 것인지를 알려줄 뿐만 아니라 프로그래

머가 프로그램의 실행을 위하여 필요한 하드웨어 자원 및 작업 이름 등을 정의할

수 있도록 하였다.

일괄처리 시스템은 작업의 준비 및 실행 순서를 자동화함으로써 시스템의 성능

을 증진시키는 데 많은 기여를 하였다. 그러나 이 방법에서는 일단 하나의 작업이

시작되면 그 작업이 모든 시스템 자원을 독점 사용함으로써 여러 시스템 자원, 특

상주 모니터

Page 18: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

18

Computer Operating System운영체제

히 중앙처리장치가 자주 유휴 시간을 가지게 된다.

1.2.2 다중 프로그래밍 시스템(multiprogramming system)

다중 프로그래밍은 중앙처리장치가 항상 수행되도록 하여 그 이용도를 높이기

위한 방안으로서 주기억장치 내에 여러 프로그램들이 존재하도록 한다. 운영체제

는 주기억장치 내에 있는 작업들 중 어느 하나를 선정하여 실행하기 시작한다. 그

작업은 실행 중 자기디스크나 키보드(keyboard) 또는 어떤 입출력장치 등의 조작

이 끝나는 것과 같은 어떤 사건(event)을 기다려야 할 때가 있다. 이때 비다중 프

로그래밍(non-multiprogramming) 체제 하에서는 중앙처리장치가 쉬게 되지

만, 다중 프로그래밍 체제에서는 운영체제가 다른 작업으로 교환( switching)하여

새로운 작업을 수행하도록 한다.

(a) 순차성 실행

(b) 다중 프로그래밍에서의 실행

| 그림 1-2 | 다중 프로그래밍

이와 같이 해당 작업이 기다리는 상태가 되면 운영체제가 중앙처리장치를 다

른 작업이나 프로그램에게 교환하여 줌으로써 중앙처리장치는 쉬는 시간이 없게

된다.

다중 프로그래밍 시스템에서 여러 개의 작업을 준비 상태로 두고, 준비 상태

에 있는 여러 작업들 중 어느 한 작업을 실행할 작업으로 선정하는 데에는 별도의

다중 프로그래밍

Page 19: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

소 개 CHAPTER

19

01

기억장치 관리 기법이나 중앙처리장치 관리 기법 등이 필요하다. 이외에도 장치

스케줄링, 교착 상태( deadlock) 문제, 병행 제어( concurrency control) 및 보호

( protection) 문제 등을 신중히 고려하여야 한다. 따라서 다중 프로그래밍은 운영

체제 연구의 중요한 분야라고 할 수 있다.

병행 제어와 교착 상태에 대한 보다 구체적인 내용은 6장과 7장에서 설명한다.

1.2.3 시분할 시스템( time-sharing system)

<그림 1-3>의 시분할 시스템은 다중 프로그래밍의 변형된 형태로서 사용자들

로 하여금 터미널을 통하여 컴퓨터와 직접 접촉할 수 있도록 하기 위하여 개발되

었다. 시분할 시스템은 각 사용자로 하여금 자신만이 컴퓨터 시스템을 독점하여

사용하고 있는 듯한 착각이나 환상을 가지도록 한다.

| 그림 1-3 | 시분할 시스템

이 기법은 여러 사용자들이 컴퓨터 자원에 대한 짧은 시간 단위의 공유

(sharing)를 통하여 현실화되었으며, 사용자는 대화식( interactive) 단말장치를

이용하여 시분할 시스템과 인터페이스 한다. 이때 운영체제는 사용자들이 시스템

에 대한 서비스를 충분히 받고 있다는 것을 느끼도록 가능한 한 빨리 사용자 요구

를 처리하여 응답해야 한다. 이로 인하여 사용자들은 수초 또는 수분 내에 프로그

램의 오류를 찾아내고 교정할 수 있게 되었으며 일괄처리 환경에서와 같이 장시

간 기다리지 않게 되었다.

그러나 이와 같은 형태의 시스템은 다음과 같은 문제점이 있다. 우선, 자원 제

어에 대한 대부분의 책임을 운영체제에 전가시킴으로써 운영체제를 복잡하게 하

며, 운영체제는 기억장치에 복수 개의 프로그램을 동시에 두는 문제에 대한 배려

시분할 시스템

Page 20: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

20

Computer Operating System운영체제

및 그들을 위한 기억장소를 주기억장치나 보조기억장치에서 관리하고 제어하는

책임을 져야 한다.

아울러 여러 사용자에 대한 공정한 자원 공유를 보장하기 위하여 어떤 사용자

에게 중앙처리장치를 사용하게 할 것인지를 스케줄링 해야 하며, 실행 중인 프로

세스 간의 통신 및 입출력장치의 사용에 대한 제어 및 관리 능력을 가져야 하며,

이러한 문제점들은 운영체제 설계에 있어서 세심한 고려를 요구하는 것으로서 다

음 장에서 보다 구체적으로 언급한다.

1.2.4 실시간 시스템( real-time system)

실시간 시스템은 마이크로컴퓨터와 고속 아날로그/디지털 입출력장치의 발전

과 더불어 개발되고 실용화된 시스템으로서 대개 특수 목적만을 위한 응용 분야

에서 제어장치로 사용된다.

이 시스템을 위한 운영체제는 현실에서 실제로 발생할 수 있는 가상 적의 공중

공격에 대비한 감시나 한계 온도 치를 제어하기 위한 센서(sensor) 등에 의한 사

건(event) 발생 신호를 받아, 어떤 사건이 발생하였는지를 판단하고 그 사건을 해

결하기 위하여 사건이 제시한 데이터를 처리하여 응답하는 과정에 대한 제어를

책임져야 한다.

또한 여러 사건이 발생할 경우, 매우 엄격하게 정의되어 있는 시간 제약 등과

같은 사건들의 제시된 상황을 분석하여 사건 처리의 지연가능성 정도에 따라 가

장 합리적인 것을 선택함으로써 사전에 정의된 제약 내에서 처리되도록 한다.

1.2.5 다중 처리 시스템( multiprocessing system)

오늘날에는 컴퓨터 시스템을 여러 개의 프로세서(processor)로 구성하는 다중

처리 기법이 많이 사용되고 있다. 이는 마이크로프로세서의 등장으로 인하여 적

은 비용으로 프로세서를 사용할 수 있으며, 마이크로프로세서의 크기가 작아져

하나의 시스템에 여러 개의 프로세서를 두는 것이 가능해졌기 때문이다.

실시간 시스템

Page 21: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

소 개 CHAPTER

21

01

| 그림 1-4 | 다중 처리 시스템

<그림 1-4>의 다중 처리 시스템은 공유 기억장치(common memory)를 통하

여 하나로 연결된 다중 처리기(multi processor)의 제어 및 공유를 위한 시스템으

로서, 시스템의 운영 환경은 크게 두 가지로 나누어진다. 그 하나는 프로세서들

이 해당 작업을 처리함에 있어서 매우 밀접하게 동기화되어야 하는 밀착된 결합

( tightly coupled) 시스템이고, 다른 하나는 프로세서 간의 동기화 문제가 그다지

엄격하지 않고 다만 두 개 또는 그 이상의 프로세서들을 결합함으로써 보다 높은

작업의 처리율( throughput)을 제공하는 데 그 목적을 두는 느슨한 결합( loosely

coupled) 시스템이다.

이 모든 경우에 있어서, 이와 같은 구성 형태를 가지는 시스템의 운영체제는 여

러 프로세서 간의 기억장치 공유를 어떻게 지원할 것이며, 여러 프로세서의 사용

을 어떻게 스케줄링 할 것인가를 결정해야 한다. 또한 더욱 중요한 일은 신뢰성과

병렬 계산( parallel computation), 최적의 연결 기법, 같은 자원을 요구하는 프로

세서들 간의 경쟁을 제어하는 것이며, 이에 대한 보다 구체적인 내용은 9장에서

다루기로 한다.

1.2.6 개인용 컴퓨터 시스템(personal computer system)

개인용 컴퓨터( personal computer)는 대형(mainframe) 시스템보다 작고 값

이 싼 초소형 컴퓨터이다. 이 시스템의 중앙처리장치는 사용자 프로그램으로부터

운영체제의 완벽한 보호가 어려우며 다중 사용자, 멀티태스킹 기능들이 배려되어

있지 않았으나 이러한 운영체제의 목적은 시간이 지남에 따라 변화되었다. 즉, 중

앙처리장치와 주변장치 이용률을 최대화시키려는 노력 대신에 편리성과 응답성

을 더 중요시하게 되었다.

예로, 마이크로소프트(Microsoft) 사의 Windows XP는 새로운 하드웨어와 소

프트웨어 설정(setup)을 쉽게 할 수 있도록 지원하며, IBM 사의 OS/2(Operating

다중 처리 시스템

밀착된 결합

느슨한 결합

Page 22: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

22

Computer Operating System운영체제

System/2)는 멀티태스킹을 제공하며 도스나 윈도우즈 프로그램까지 완벽하

게 호환성을 제공한다. 그 외에 객체 지향적 개발환경을 제공하는 넥스트스텝

( NeXTStep), 클라이언트/서버 환경에서 잘 적응할 수 있는 Windows NT, 컴퓨

터의 안전과 최적성능을 유지해주는 Windows 7~8 등으로 발전되어 왔다.

하드웨어 비용의 감소는 상대적으로 다수의 시스템에서 구현될 수 있는 복잡한

운영체제 개념을 요구하게 될 것이며, 개인용 컴퓨터들은 전화선이나 LAN(Local

Area Network)으로 다른 컴퓨터들과 연결될 수 있기 때문에 자신의 개인 컴퓨터

에 있는 파일의 보호는 다시 운영체제의 중요한 요소가 되었다.

대형 운영체제의 기능들이 개인용 컴퓨터에 적합하도록 소형화되면서 기술 이

전이 되었기 때문에 개인용 컴퓨터들도 성능이 좋아지고 처리속도가 향상된 더

욱 정교한 하드웨어 시스템들로 개발되고 있다. 개인용 워크스테이션( personal

workstation)들로는 고성능 개인용 컴퓨터로서 HP와 DELL 등과 같이 거의 대

형 컴퓨터에 준하는 기능을 갖고 있는 개인용 컴퓨터들도 많으며, 여러 교육기관

과 산업계 등에서는 LAN으로 연결된 다목적 워크스테이션을 활용하고 있다.

1.2.7 분산 처리 시스템( distributed processing system)

최근의 컴퓨터 시스템은 여러 개의 물리적 프로세서들 사이에서 연산을 분산화

시키려는 경향이 있다. 이러한 시스템을 구성하는 데는 기본적으로 두 가지 형태

가 있다.

밀착된 결합( tightly coupled) 시스템에서는 프로세서들이 기억장치와 클럭을

공유한다. 이러한 다중 프로세서( multi-processor) 시스템에서의 통신은 보통 공

유 기억장치(shared memory)를 통하여 행해진다. 느슨한 결합( loosely coupled)

시스템에서는 프로세서들이 기억장치와 클럭을 공유하지 않으며 각 프로세서들

은 자신의 지역(local) 기억장치를 가지며, 프로세서들은 고속의 버스(bus)나 전

화선과 같은 다양한 통신 라인을 통해 서로 통신한다.

분산 시스템이란 통신 네트워크를 통하여 서로 느슨히 결합된 프로세서들의 집

합이며, 분산 시스템 내의 어느 특정 프로세서의 관점에서 볼 때, 그 프로세서가

가지고 있는 자원을 지역(local)이라고 한다면, 그 특정 프로세서 외의 나머지 모든

프로세서들과 그 프로세서들에게 속해 있는 자원을 원격(remote)이라고 말한다.

워크스테이션

클럭

분산 처리 시스템

분산 시스템

Page 23: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

소 개 CHAPTER

23

01

분산 시스템 내의 프로세서들은 그 크기와 기능이 서로 다르며 미니 마이크로

프로세서, 워크스테이션, 미니컴퓨터, 그리고 규모가 큰 범용 컴퓨터 등이 포함될

수 있다. 여기에서 프로세서는 시스템 환경에 따라서 사이트( Site), 노드( node),

컴퓨터(computer), 기계(machine) 등으로 불리며, 기계의 위치를 나타내기 위

해서 사이트라는 용어를 사용하며 사이트에 있는 특정 시스템을 나타내기 위해서

호스트라는 용어를 주로 사용한다. 일반적으로 자원을 가지고 있는 사이트는 서버

( server)가 되며, 반면 다른 사이트에서의 클라이언트( client)나 사용자는 그 자원을

사용한다. 이러한 자원 공유 형태에서 효율적이면서 편리한 환경을 어떻게 제공

할 것인가가 분산 시스템 구축의 주요 목표이다.

분산 운영체제는 사용자들에게 시스템이 제공하는 다양한 자원들을 접근할 수

있도록 하고 있다. 여기서 자원( resource)이라는 것은 프린터나 CD드라이버와 같

은 하드웨어와 파일이나 프로그램과 같은 소프트웨어를 의미하는데, 이러한 자원

의 접근은 운영체제가 관리한다. 기본적으로 이러한 서비스를 제공하기 위해서는

다음 두 가지 대응되는 기법이 있다.

● 네트워크 운영체제: 노드 간 기종의 차이가 심하고 대규모 네트워크 시스템

에 사용되며, 각 노드들은 독자적인 운영체제를 가진다. 통신기능은 기존

운영체제 위에 존재하며 자원 공유가 곤란하다.

● 분산 운영체제: 각 노드들을 통괄할 수 있는 하나의 운영체제로 운영되며, 통

신기능은 운영체제 설계 시 고려된다. 미니, 마이크로컴퓨터 등으로 연결된

근거리 네트워크 시스템에서 많이 사용되며 자원 공유가 용이하다.

분산 시스템을 구축하는 이유는 자원 공유, 연산 속도 향상, 신뢰성 향상 및 통

신 가능 등의 네 가지 이점 때문이며, 자세한 내용은 10장에서 다룬다.

1.2.8 멀티미디어 시스템(multimedia system)

멀티미디어 시스템은 이미지/그래픽, 사운드, 애니메이션 및 비디오 등 다양한

미디어를 이용하여 멀티미디어 콘텐츠를 제작하기 위해 필요한 하드웨어와 소프

트웨어로 구성되어 있다. 따라서 사용자가 관련 하드웨어를 손쉽게 설치하고 관

자원(resource)

서버(server)

클라이언트(client)

네트워크 운영체제

분산 운영체제

Page 24: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

24

Computer Operating System운영체제

리할 수 있는 저작도구 간의 인터페이스를 제공하는 기능과 여러 미디어 정보를

동시에 재생하여 정보전달 효과를 극대화할 수 있는 기능이 지원되어야 한다.

<그림 1-5>에서 보듯이 하드웨어는 프로세서(CPU), 미디어 처리장치, 입력장

치, 출력장치 및 저장장치를 말하며, 이들이 멀티미디어 PC 또는 워크스테이션의

구성 요소가 된다. 멀티미디어 시스템의 소프트웨어는 크게 시스템 소프트웨어와

소프트웨어 툴로 나눌 수 있다.

시스템 소프트웨어는 멀티미디어 자원을 관리하고 운영하는 운영체제, 하드웨

어 장치들의 입출력을 처리하는 장치 드라이버( device driver) 그리고 멀티미디어

데이터를 저장하고 관리해 주는 DBMS(Database Management System)를 포함

한다. 멀티미디어 타이틀(또는 멀티미디어 콘텐츠)을 제작하기 위해서는 각종 미

디어를 생성, 편집하는 미디어 편집 소프트웨어와 미디어들을 통합하여 멀티미디

어 콘텐츠로 제작하기 위한 저작도구( authoring tool)가 필요하다. 이러한 하드웨

어와 소프트웨어들이 합쳐져서 멀티미디어 시스템을 구성하게 된다.

| 그림 1-5 | 멀티미디어 시스템의 계층 구조

멀티미디어 시스템의 궁극적인 목적은 멀티미디어 콘텐츠를 제작하고 사용자

로 하여금 이 콘텐츠를 재생할 수 있게 하기 위함이다. 따라서 멀티미디어 시스템

은 목적에 따라 멀티미디어 콘텐츠를 제작할 수 있는 기능과 환경을 제공하는 저

작 시스템( authoring system)과 단순히 멀티미디어 콘텐츠를 이용하고 재생하기

장치 드라이버

멀티미디어 타이틀

저작 시스템

저작도구

Page 25: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

소 개 CHAPTER

25

01

위한 재생 시스템( presentation system)으로 나눌 수 있다.

저작 시스템은 멀티미디어 데이터를 생성, 편집, 재구성하여 멀티미디어 콘텐

츠로 제작하기 위해 스캐너, 디지털 카메라, 캠코더와 같은 하드웨어 장치와 저장

장치 그리고 다양한 미디어 편집 소프트웨어와 저작도구가 갖추어진 멀티미디어

시스템을 말한다. 이에 비하여 재생 시스템은 멀티미디어 콘텐츠를 재생하기 위

한 음성출력, 영상출력 그리고 CD-ROM을 재생할 수 있는 최소한의 하드웨어와

소프트웨어를 포함하고 있다. 멀티미디어 콘텐츠를 제작하고 재생하는 하드웨어

환경과 소프트웨어 환경을 합쳐서 멀티미디어 플랫폼( multimedia platform)이라

고도 부른다.

Windows VISTA 및 Windows 7의 경우, 3차원 웹 브라우즈 등 보다 강화된

멀티미디어 기능을 지원함으로써 미디어의 재생, 편집, 배포, 응용 프로그램 개발

용 SDK(Software, Development, Kit) 등 대부분의 기능을 지원한다.

1.2.9 임베디드 시스템( embedded system)

임베디드 시스템은 마이크로프로세서 또는 마이크로컨트롤러를 내장하여 시스

템 제작자가 의도한 몇 가지 혹은 특수한 기능만을 수행하도록 제작된 시스템을

말한다. 임베디드 시스템에 의존하는 장치들의 경우 그 종류가 너무 많아 간단히

말할 수는 없으나 자동차, 의료기기, 네비게이터, 바코드 스캐너, 키오스크, 측정

장비, 핸드폰, 항공관제 시스템, 군사용 제어장치, u-홈서비스 등을 들 수 있다.

임베디드 운영체제의 강점은 임베디드 시스템과 그 한정된 자원들의 능력에 맞게

최적화할 수 있다는 점이다.

1.3 운영체제에 대한 관점

운영체제는 그 관점에 따라 자원 관리자 관점, 프로세스 관점, 계층 구조 관점

등 여러 가지 개념으로 정의될 수 있다.

재생 시스템

멀티미디어 플랫폼

임베디드 시스템

Page 26: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

26

Computer Operating System운영체제

1.3.1 자원 관리자 관점

우선 운영체제를 컴퓨터 시스템을 구성하는 각종의 자원 관리자로 볼 수 있다.

관리할 자원이 무엇이며, 또 운영체제의 어떤 모듈이 그들을 관리하는지에 대해

서 알아보기로 한다. 시스템 자원에는 프로세서, 기억장치, 각종 장치, 그리고 프

로그램이나 데이터와 같은 정보 등이 있다. 이러한 모든 자원들은 매우 가치 있는

개념으로서, 운영체제의 기능은 그들이 효율적으로 사용되도록 관리하고 다양한

요구를 가지는 사용자 간에 발생할 수 있는 자원에 대한 경쟁 및 이로 인한 충돌

을 해결하는 것이다.

운영체제는 각 자원의 상태를 추적·저장해야 하고, 어떤 프로세스에게 언제

어떤 자원을 할당할 것인지를 결정한 후 그것을 할당하고 회수해야 한다. 운영체

제를 자원 관리자 관점에서 보면, 각 자원에 대한 관리자는 공통적으로 다음과 같

은 과정을 수행한다.

● 자원의 상태를 추적·저장

● 어떤 프로세스가 언제 어떤 자원을 얼마나 사용할 것인지를 결정하기 위한

정책 수립

● 자원의 할당

● 자원의 회수

본 절에서는 모든 운영체제 프로그램을 네 가지 자원 범주로 나누었다. 차후 본

서에서는 이 네 가지 범주에 근거하여 각 장을 구분하였으며, 각 장에서는 각 자원

의 주된 기능 및 이 기능을 수행하기 위한 루틴에 대한 설명을 구체적으로 한다.

[1] 프로세스 관리 기능

● 중앙처리장치와 프로세스( process)의 상태를 추적·저장한다. 이를 수행하

는 프로그램을 트래픽 제어기( traffic controller)라 한다.

● 어떤 작업에게 프로세서를 사용하도록 할 것인지를 결정한다. 작업 스케줄

러( job scheduler)는 제시(submit)된 모든 작업 중 하나를 선택하여 그 작업

이 필요로 하는 자원을 할당한다. 만약 다중 프로그래밍 시스템이라면 어떤

작업 스케줄러

트래픽 제어기

Page 27: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

소 개 CHAPTER

27

01

프로세스가 언제 얼마나 중앙처리장치를 차지할 것인지를 결정해야 하는데,

이는 프로세스 스케줄러( process scheduler)에 의해 결정된다.

● 디스패처( dispatcher)는 필요한 하드웨어 레지스터를 설정(setup)함으로써

프로세스에게 중앙처리장치를 할당한다.

● 프로세스가 수행을 마치거나, 어떤 이유로 인하여 사용의 양도 또는 허용된

사용 시간을 초과하였을 경우 중앙처리장치를 회수한다.

[2] 기억장치 관리 기능

● 기억장치의 상태를 추적·저장한다. 기억장치의 어떤 부분이 사용되고 있으

며, 또 어떤 부분은 사용되고 있지 않는가? 만약 사용된다면 어떤 프로세스

에 의해 사용되는가를 추적·저장한다.

● 만약 다중 프로그래밍 환경 하에서라면 어떤 프로세스에게 언제, 얼마의 기

억장치를 할당할 것인지를 결정한다.

● 프로세스가 기억장치를 요구하면 앞에서 결정한 내용에 따라 할당한다.

● 프로세스가 더 이상 기억장치를 필요로 하지 않게 되면 회수한다.

[3] 장치(device) 관리 기능

● 채널 등의 제어장치 및 입출력장치와 같은 각종 장치의 상태를 추적·저

장한다. 이를 위한 대표적인 것으로서 입출력 트래픽 제어기( I/O traffic

controller)가 있다.

● 장치를 할당하는 데 어떤 방법이 효율적인지를 결정하며, 이때 만약 장치가

공유되는 것이라면 어떤 프로세스가 이 자원을 얼마나 사용할지를 결정한

다. 이를 입출력 스케줄링( I/O scheduling)이라 한다.

● 해당 장치를 할당하고, 입출력 동작을 시작한다.

● 입출력이 종료되면 자동적으로 자원을 회수한다.

[4] 정보 관리 기능

● 정보의 위치, 사용 여부 및 상태 등을 추적·관리한다. 이러한 총체적인 기

능을 파일 시스템( file system)이라 한다.

● 어떤 작업에게 정보 자원을 사용하도록 할 것인지를 결정한다. 정보 보호를

파일 시스템

입출력 스케줄링

디스패처

프로세스 스케줄러

Page 28: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

28

Computer Operating System운영체제

위한 대책을 수립하고, 접근( access) 루틴을 제시한다.

● 정보 자원을 할당한다.

● 정보 자원을 회수한다.

1.3.2 프로세스 관점

앞에서 운영체제를 자원 관리를 위한 프로그램 모듈의 집단으로 정의하였다.

이러한 프로그램들 간의 관계는 무엇이며, 언제 이러한 프로그램들이 실행되게

되는가? 이에 대한 상호 관계 및 자원 관리 프로그램 모듈 간의 순서를 설명하기

위하여 프로세스가 처리되는 과정을 살펴보기로 한다.

<그림 1-6>은 다중 프로그래밍 환경 하에서 존재할 수 있는 세 개의 프로세스

(실행 중의 사용자 프로그램)를 나타낸 것이다.

운영체제

프로세스1

프로세스2

프로세스3

| 그림 1-6 | 다중 프로그래밍 시스템에서의 복수 프로세스

이와 같이 여러 작업이 수행되어야 할 경우, 중앙처리장치가 처리할 수 있는 것

은 어느 한 시점에서 볼 때 오직 하나의 프로세스뿐이다.

따라서 선택받지 못한 프로세스는 자신의 위상에 따라 상태를 변환시켜야 한

다. 예를 들어, 만약 실행 중의 프로세스가 입출력이 완료되기를 기다려야 한다면

그 프로세스는 입출력 완료 시점까지 대기 상태의 프로세스로 변환되어야 한다.

운영체제는 하나의 작업이 제시되어 완료될 때까지 하나의 프로세스에 대하여

그 상태를 변환시키고 관리할 책임이 있다.

1.3.3 계층 구조 관점

앞에서는 운영체제가 관리하는 시스템 자원의 구분과 프로세스 관점에서 이러

한 자원에 대한 관리가 언제 수행되는지에 대해서 알아보았다.

이제 우리가 알아야 할 일은 이러한 자원 관리 루틴이 어떻게 수행되고, 이 루

프로세스

Page 29: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

소 개 CHAPTER

29

01

틴들이 상호 간에 어디에 논리적으로 위치하는가 하는 것이다. 이 절에서는 모듈

화된 자원 관리 루틴들이 어떻게 관계하는지를 알기 위하여 운영체제에 대한 계

층 구조 관점에 대해서 알아본다.

이러한 모듈들을 구성함에 있어 절대적으로 옳거나, 또는 절대적으로 잘못된

방법이란 있을 수 없다. 다만 이것은 계층적 접근 방식이 결과적으로 해석과 실행

이 용이한 단순하고 명확한 구조를 가지는 운영체제의 구현을 가져올 수 있다고

느낄 뿐이다.

| 그림 1-7 | 계층적 기계 개념의 구성도

과거에 존재했던 대부분의 운영체제는 하나의 큰 프로그램으로 구성되었다. 그

러나 시스템이 보다 커지고 복잡해짐에 따라 맹목적인 접근 방식으로는 더 이상

운영체제를 관리할 수 없게 되었다. 따라서 <그림 1-7>과 같이 운영체제를 기계

의 확장으로 보고 이를 다시 두 계층으로 분류할 수 있다.

● 많은 시스템 모듈에서 필요로 하는 주된 기능은 ‘ 내부적 확장 기계’로, 그 이

외의 모듈은 ‘ 외부적 확장 기계’로 분류된다.

● 어떤 시스템 모듈들은 사용자 프로세스와 같은 방법으로 확장된 기계에서

수행하도록 할 수 있다.

Page 30: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

30

Computer Operating System운영체제

계층적 접근에 대하여 다음과 같은 근본적인 의문을 제기할 수 있다.

● 운영체제의 각 모듈은 어디에 속하는가? 내부적 확장 기계와 외부적 확장

기계, 또는 프로세스 중 어디에 속하는가?

● 내부적이거나 외부적 확장 기계 개념은 확장된 기계의 레벨(level)로 일반화

될 수 있으며, 또 운영체제 프로세스들이 상호관계를 가지고 프로세스의 계

층(layer)으로 일반화될 수 있는가?

프로세스 계층으로 운영되는 운영체제의 모듈과는 달리 확장된 기계 개념으로

운영되는 모든 운영체제 모듈을 총칭하여 운영체제의 커널( kernel)이라고 한다.

그러나 오늘날 운영체제의 계층 구조를 위해서는 몇 개의 레벨이 사용되어야 하

고, 어떤 모듈이 어떤 레벨에 속해야 하며, 또 무엇이 커널에 소속되어야 하는지

에 대한 확실한 규칙은 없다.

커널의 구성 레벨 및 레벨별 해당 모듈에 대한 한 가지 예를 들면 아래와 같다.

● 레벨 1: 프로세서 관리 하위 모듈(동기화 프리미티브, 프로세스 스케줄러)

● 레벨 2: 기억장치 관리(메모리 할당 및 회수)

● 레벨 3: 프로세서 관리 상위 모듈(메시지, 프로세스의 생성 및 제거)

● 레벨 4: 장치 관리( 입출력 트래픽 제어기)

● 레벨 5: 정보 관리(파일 시스템)

여기에 엄격한 계층 개념을 적용시키게 되면, 임의의 레벨이 그보다 하위 레벨

의 서비스를 의뢰하는 것은 허용되나 그 역은 허용되지 않는다. 예를 들어, 프로

세스 간의 메시지(message) 관리 모듈이 기억장치 관리 모듈의 서비스를 의뢰할

수 있도록 설계하고자 하면, 기억장치 관리 모듈은 메시지 관리 모듈보다 하위 레

벨에 있어야 한다.

트래픽 제어기

커널

Page 31: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

소 개 CHAPTER

31

01

1.4 입출력 프로그래밍

초기의 컴퓨터 시스템은 세 가지 기본적인 요소, 즉 중앙처리장치, 주기억장치

및 입출력장치로 구성되었다. 그 후 컴퓨터 시스템이 발전하여, 중앙처리장치의

처리 속도와 기억장치의 크기가 증가함에 따라 시스템 성능도 보다 향상되었다.

이와 같이 중앙처리장치나 기억장치와 같은 전자적인 장치는 성능의 향상이 꾸준

히 진행되어 온 반면, 입출력장치와 같은 기계적인 장치들은 발전 속도가 상대적

으로 느려짐에 따라 이들 장치 간의 처리 속도 차이가 문제시 되게 되었다.

중앙처리장치(CPU) 내에서의 모든 연산은 제어장치의 통제에 의하여 동기화

되어 작동한다. 그러나 대부분의 컴퓨터에 있어서 입출력은 중앙처리장치와 비동

기적( asynchronous)으로 수행되는데, 이 의미는 중앙처리장치와 입출력장치에

대한 작동이 독립적이며, 수행상의 시간관계 규정이 없이 병행적으로 수행됨을 의

미한다.

입출력장치에 관한 작동은 중앙처리장치의 작동과는 달라서 입출력에 관련된

명령어는 입출력장치에 대한 작동을 시킬 뿐이다. 일반적으로 입출력장치의 특

성, 상태 또는 입출력장치에 대한 명령어의 특성 때문에 입출력의 수행 시간은 일

정치 않은데, 이는 입출력장치의 기계적인 특성과 입출력 기능을 수행하기 위하

여 필요한 기계적인 작동 과정에 기인한 것이다. 즉, 입출력장치는 중앙처리장치

와 비교할 때 데이터 처리시간이 일정하지 않다.

이상에서 언급한 처리 속도의 차이 및 불확실성 때문에, 입출력장치와 중앙처

리장치 간의 상호 작용에는 세심한 주의가 필요하며, 이로 인해 입출력 프로그래

밍이 필요하다.

1.4.1 BIOS(basic input/output system)

컴퓨터의 전원을 켜 파워 공급이 시작되면 메인보드(main board)와 CPU에 파

워가 준비되었다는 신호를 보내게 되고, 컴퓨터는 다음 수행할 명령(commands)

과 코드(code)에 언제라도 접근할 수 있어야 한다. 따라서 이 정보는 ROM 칩에

저장되어 있어야 한다. 컴퓨터는 하드 드라이브가 고장이 나더라도 그것들을 접

근할 수 있어야 하기 때문이다.

비동기적 수행

병행적 수행

Page 32: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

32

Computer Operating System운영체제

컴퓨터가 ROM에서 얻는 정보를 BIOS라 부른다. BIOS는 부트 프로세스를 실

행시키는 명령어들을 포함하고 있으며, 이러한 형태의 컴퓨터칩에 저장된 명령어

들을 펌웨어( firmware)라고 한다. Linux와 Mac도 BIOS를 사용하지만 2005년

개방 펌웨어, 개방 BIOS 등의 BIOS를 뛰어넘는 확장성 펌웨어 인터페이스( EFI:

extensible firmware interface)가 개발되었다.

1.4.2 부트 진행 과정(boot process)

부트 절차는 컴퓨터, BIOS, H/W 제조사에 따라 약간의 차이가 있을 수는 있지

만, 대부분의 컴퓨터에서는 다음과 같은 정해진 순서에 따라 부팅이 진행된다.

1. 컴퓨터 가동을 위해 파워 버튼을 누르면 부트 로더가 초기화 됨

2. POST(Power-On Self-Test) 수행 시작

3. 다른 BIOS들이 가동을 위해 초기화 됨

4. 유저는 필요에 따라 BIOS 접근을 위한 비밀키 입력을 요구받음

5. 간단한 메모리 테스트가 수행되고 여러 파라메타들이 세트됨

6. 플러그와 플레이 디바이스들이 초기화 됨

7. DMA(Direct Memory Access) 채널을 위한 자원들과 IRQ(Interrupt

Request)가 할당됨

8. 부트 디바이스들이 정해지고 초기화 됨

9. OS가 초기화 됨

1.4.3 POST(Power-On Self-Test)

간단히 말해서 POST란 성공적인 부팅 및 적정 수행의 확인을 위해 필요 하드

웨어에 대해 행하는 테스트라고 할 수 있다.

POST는 다음과 같은 일을 한다.

● BIOS의 완벽한 보전 확인

● 주기억장치의 위치 결정, 확인 및 그 크기(size)의 결정

● 시스템 버스(buses)와 시스템 디바이스 결정 및 시작

● 요구되는 다른 BIOS들의 시작 허용(비디오 또는 그래픽카드 등)

POST

DMA

BIOS

펌웨어

Page 33: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

소 개 CHAPTER

33

01

● 사용자에게 BIOS 시스템 구성 페이지에 접근할 수 있는 권한 부여

● 부트 디바이스 위치 및 부트 파일을 가진 디바이스 찾기

● 운영체제에 의해 요구되는 그 외 작동 준비(setup) 관련 작업의 수행

1.4.4 버퍼링(buffering)

입출력장치나 보조기억장치는 기계적 요인 때문에 중앙처리장치와 비교할 때

매우 느린 속도로 작동한다. 이와 같은 입출력장치의 느린 속도를 보완하는 한 가

지 방법으로 버퍼링이 있다.

버퍼링은 중앙처리장치와 입출력장치를 항상 바쁘게 하고자 하는 것으로 이 방

법은 매우 간단하다. 한 레코드가 읽혀 중앙처리장치가 그것에 대한 연산을 시작

함과 동시에 입력장치가 곧 다음에 필요한 레코드를 미리 읽어서 주기억장치에

저장함으로써, 중앙처리장치가 필요한 레코드를 기다리는 일이 없도록 하는 것

이다. 이때 이와 같이 미리 읽혀진 레코드들이 존재하는 곳은 주기억장치의 일부

인데 이를 버퍼(buffer)라 하고, 이와 같은 일련의 과정을 버퍼링(buffering)이라

한다.

| 그림 1-8 | 버퍼를 이용한 출력의 예

① 중앙처리장치는 출력할 데이터를 버퍼에 채운다.

② 버퍼가 다 채워지면 중앙처리장치는 채널에게 출력을 지시하고, 자신의 일

을 계속한다.

③ 채널은 출력을 수행함으로써 버퍼를 비운다.

④ 출력을 완료함으로써 버퍼를 다 비우면 중앙처리장치에게 알린다.

버퍼링

Page 34: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

34

Computer Operating System운영체제

출력에 대해서도 이와 유사한 버퍼링을 행할 수 있는데 이러한 경우에 중앙처

리장치는 출력장치가 받아들일 때까지 레코드를 생성하여 버퍼에 저장할 수 있

다. 이와 같이 버퍼를 사용함으로써 중앙처리장치와 입출력장치 간의 시간적 불

균형을 극복할 수 있는데, 이때 중앙처리장치는 중앙처리장치대로 자신의 일을

수행하고 입출력장치는 채널( channel)과 같은 제어장치에 연결되어 <그림 1-8>

과 같이 제어장치가 중앙처리장치와 데이터를 주고받을 수 있다. 이렇게 함으로

써 입출력을 중앙처리장치와는 무관하게 비동기적으로 수행할 수 있다.

| 그림 1-9 | 이중 버퍼링의 예

① 중앙처리장치가 버퍼A를 채운다.

② 다 채우면 채널에게 버퍼A의 출력을 지시한다.

③ 버퍼A에 대한 출력과는 무관하게 버퍼B를 채운다.

④ 채널은 버퍼A를 비운다.

⑤ 채널은 버퍼A를 다 비웠음을 중앙처리장치에게 알린다.

⑥ 중앙처리장치는 다시 버퍼A를 채우고 채널은 버퍼B를 비운다(여기서 ①과

⑥, ③과 ④는 동시에 발생할 수 있다).

이때 보다 효율적인 처리를 위하여 <그림 1-9>와 같이 하나의 입력장치 또는

출력장치에 두 개 이상의 버퍼를 사용할 수 있는데, 이렇게 다중 버퍼가 사용된

다면 많은 양의 주기억장치가 버퍼에 할당되어 이용 가능한 주기억장치의 크기가

줄어든다.

그러나 중앙처리장치가 평균적으로 입출력장치보다 훨씬 빠르다면 버퍼링은

별 의미가 없다. 왜냐하면 중앙처리장치가 항상 빠르다면 입력 버퍼는 언제나 비

채널

Page 35: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

소 개 CHAPTER

35

01

어 있는(empty) 상태에 있게 되므로, 중앙처리장치는 항상 입력장치를 기다려야

하기 때문이다. 이러한 상황은 계산에 관계되는 입출력의 양이 매우 많은 입출력

위주 작업( I/O bound job) 하에서 발생하는데, 중앙처리장치는 입출력장치보다

속도가 빠르기 때문에 실행 속도는 입출력장치의 속도로 한정된다.

반면에, 아주 복잡한 계산이 많아서 입력 버퍼는 항상 가득 차(full) 있는 반면,

출력 버퍼는 항상 비어 있는 중앙처리장치 위주 작업( CPU bound job)의 경우에는

중앙처리장치는 입출력장치보다 속도가 떨어질 수도 있다.

결론적으로 버퍼링은 중앙처리장치와 입출력장치 간의 속도 차이를 충분하지

는 않지만 어느 정도 극복할 수 있도록 한다.

1.4.5 스풀링( SPOOLing)

스풀링은 Simultaneous Peripheral Operation On Line의 첫 글자를 따서 만

든 말이다. 버퍼링은 주기억장치를 버퍼로 사용하는 반면, 스풀링은 디스크(disk)

를 매우 큰 버퍼처럼 사용하는 것이다.

이 방법은 특히 다중 프로그래밍 환경 하에서, 다수의 프로세스들이 입출력장

치를 서로 요구하나 실제로 그 장치의 수가 제한되어 있을 때 이들에 대한 공유를

가능하게 하기 위하여 가상 장치( virtual device)를 각 프로세스에 제공해 주는 개

념이다.

보통 가상 장치들은 스풀링 통제 프로그램에 의해 디스크에 나타나게 되는

데, 이것 때문에 다수의 프로세스들은 각기 독립적인 입출력장치를 가지는 셈

이 된다. <그림 1-10>과 같이 프로세스들은 입력 또는 출력을 실제 입출력장치

(physical I/O device)를 통하지 않고 가상 입출력장치(virtual I/O device)인 디

스크를 매체로 이용한 후, 다시 실제의 입력과 출력을 행하도록 한다. 이러한 모

든 일들은 운영체제의 일부인 SPOOL이라고 하는 프로그램이 수행하게 된다.

이상에서 설명한 스풀링은 다음과 같은 효과를 가진다. 중앙처리장치 위주의

작업과 입출력 위주의 작업이 혼합되어 있는 경우, 어느 정도의 디스크 공간과 테

이블을 확보함으로써 중앙처리장치는 한 작업의 계산과 다른 작업의 입출력을 중

복 수행할 수 있고 따라서 작업의 효율도 극대화할 수 있다. 아울러 스풀링은 작

업 풀( job pool)이라고 하는 중요한 자료구조 형태를 제공함으로써, 일반적으로

스풀링

입출력 위주 작업

중앙처리장치 위주 작업

Page 36: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

36

Computer Operating System운영체제

디스크에 읽혀 들여져 대기하고 있는 여러 작업들이 실행될 수 있도록 준비시키

고 운영체제가 다음에 수행할 작업을 선택할 수 있도록 한다. 예를 들어, 수행될

작업들이 카드 판독기나 자기 테이프로부터 들어온다면, 들어온 순서를 무시하고

다른 순서로 해당 작업들을 수행할 수는 없다. 작업들이 들어오는 입력장치의 특

성상 FCFS(First Come First Served)가 지켜져야만 하기 때문이다. 그러나 여러

개의 작업들이 디스크와 같은 직접 접근( direct access)이 가능한 장치에 있다면,

작업은 완급 또는 우선순위에 따라 작업 스케줄링( job scheduling)이 가능하다.

| 그림 1-10 | 스풀링

1.4.6 채널(channel)

앞에서 지적되었듯이 중앙처리장치의 속도와 입출력장치의 속도는 차이가 있

기 때문에 입출력장치와 중앙처리장치를 직접 연결하는 것은 효율적이지 못하다.

이를 위하여 입출력장치와 중앙처리장치 사이에 입출력 전담 처리기인 입출력 채

널( I/O channel)을 두어 <그림 1-11>과 같이 컴퓨터 시스템을 구성한다.

이로 인하여 모든 입출력이 채널을 통하여 수행됨으로써 중앙처리장치는 입출

력이 실제로 수행 완료될 때까지 기다리거나 수시로 입출력장치의 상태를 점검할

필요 없이 계속하여 연산을 수행할 수 있다. 이와 같이 중앙처리장치 이외의 처리

기를 둠으로써 별도의 수행을 전담시키는 형태의 컴퓨터 시스템이 차후 다중 처

리기 시스템의 효시가 되었다.

입출력 채널

직접 접근

Page 37: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

소 개 CHAPTER

37

01

| 그림 1-11 | 입출력 채널을 갖는 컴퓨터 시스템

채널은 그 종류가 다양하여, 간단한 처리기에서부터 중앙처리장치와 거의 동일

한 것까지 있다. 그러나 이들이 입출력을 처리하기 위한 처리기라는 점은 동일하

다. <그림 1-11>에서와 같이 어떤 채널은 하나의 입출력장치에만 연결될 수 있어

각 입출력장치에 하나의 채널이 필요한 반면, <그림 1-12>에서와 같이 여러 개의

입출력장치를 위하여 단 하나의 채널이 사용되기도 한다.

이러한 채널로서 선택 채널( select channel)은 여러 개의 입출력장치가 연결되

어 있다 하더라도 한 번에 단 하나의 입출력장치만을 선택적으로 지원하며, 비교

적 전송 속도가 빠른 입출력장치인 디스크나 CD-ROM 등의 입출력을 제어한다.

멀티플렉서 채널( multiplexer channel)은 키보드나 프린터와 같은 비교적 전송 속

도가 느린 입출력장치를 제어하기 위한 채널로서 다수의 저속도 입출력장치가 채

널의 단일한 데이터 경로를 공유하면서 데이터를 전송한다. 즉, 여러 개의 저속

도 입출력장치가 멀티플렉서 채널에 연결되어 시분할( time sharing) 형태로 제어

된다.

이상의 채널과 중앙처리장치 간의 통신은 일반적으로 인터럽트( interrupt)에

의하여 이루어진다. 또한 중앙처리장치가 입출력 명령을 처리하는 상황에서의 채

널의 동작 원리는 다음과 같다.

선택 채널

멀티플렉서 채널

시분할

Page 38: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

38

Computer Operating System운영체제

첫째, 중앙처리장치는 채널의 현재 상태를 점검한다.

둘째, 채널의 상태가 양호하면 채널로 하여금 실질적인 입출력 동작을 개시하

도록 한다.

셋째, 채널은 해당 입출력 명령의 수행을 위한 채널 명령어를 선택한 후, 데이

터의 입출력을 중앙처리장치와는 독립적으로 수행한다. 수행이 종료되면 중앙처

리장치에 인터럽트를 요청한다.

넷째, 중앙처리장치는 해당 채널의 인터럽트를 인지하여, 상황에 따른 다음 동

작을 지시한다.

| 그림 1-12 | 다양한 형태의 채널 연결 구조

1.4.7 인터럽트( interrupt)

[1] 종류

인터럽트는 시스템에 예기치 않은 상황이 발생하였을 때, 그것을 운영체제에

알리기 위한 메커니즘이다. IBM 계열의 기계에는 그 발생 원인에 따라 여섯 가지

종류의 인터럽트가 있다.

● 입출력(I/O) 인터럽트: 해당 입출력 하드웨어가 주어진 입출력 동작을 완료하

인터럽트

Page 39: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

소 개 CHAPTER

39

01

였거나 또는 입출력의 오류 등이 발생하였을 때 중앙처리장치에 대하여 요

청하는 인터럽트이다.

● 외부(external) 인터럽트: 시스템 타이머(timer)에서 일정한 시간이 만료된 경

우나 오퍼레이터가 콘솔 상의 인터럽트 키를 입력한 경우, 또는 다중 처리

시스템에서 다른 처리기로부터 신호가 온 경우 등에 발생한다.

● SVC(SuperVisor Call) 인터럽트: 사용자 프로그램이 수행되는 과정에서 입출

력 수행, 기억장치의 할당, 또는 오퍼레이터의 개입 요구 등을 위하여 실행

중의 프로그램이 SVC 명령을 수행하는 경우에 발생한다.

● 기계 검사(machine check) 인터럽트: 컴퓨터 자체 내의 기계적인 장애나 오류

로 인한 인터럽트이다.

● 프로그램 에러(program error) 인터럽트: 주로 프로그램의 실행 오류로 인해

발생한다. 예를 들면, 수행 중인 프로그램에서 0으로 나누는 연산이나, 보

호(protection)되어 있는 기억장소에 대한 접근, 허용되지 않는 명령어의 수

행, 또는 스택의 오버플로( overflow) 등과 같은 오류가 발생할 때 일어난다.

● 재시작(restart) 인터럽트: 오퍼레이터가 콘솔상의 재시작 키를 누를 때 일어

난다.

[2] 구조 및 처리

인터럽트는 중앙처리장치가 명령어를 수행하고 있는 동안, 이와 병행하게 발생

하는 상황에 대처하기 위하여 필요한 제어 이동의 원인을 의미한다.

일반적으로 중앙처리장치는 인터럽트 발생을 알리는 신호를 받으면 프로그램

카운터( program counter)의 내용과 프로그램 수행 상태에 관한 모든 정보를 저

장한 후에, 문제의 해결을 위한 처리 과정이 기술된 인터럽트 처리기( interrupt

handler)의 시작 주소를 프로그램 카운터로 옮긴다. 그 후 인터럽트 루틴을 수행

하여 해당 상황을 처리하면, 인터럽트가 발생하기 이전에 처리하던 프로그램의

수행 과정을 계속한다.

<그림 1-13>은 인터럽트 처리 과정을 구체적으로 나타내고 있다.

프로그램 카운터

인터럽트 처리기

SVC

Page 40: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

40

Computer Operating System운영체제

| 그림 1-13 | 인터럽트 처리 과정

각 지점에서 처리하는 내용을 순서대로 설명하면 다음과 같다.

① 중앙처리장치가 실행하는 중 인터럽트가 발생하였다. 이 경우 현 상태에서

의 프로그램 카운터와 프로그램의 다음 수행에 도움이 되거나 필요한 제반

정보를 주기억장치의 일정한 지역에 보관한다.

② 해당 인터럽트에 대처하기 위한 인터럽트 처리 루틴으로 제어를 이동시켜

이 인터럽트를 해결한다.

③ 인터럽트 처리 루틴의 수행을 완료하면, ④ 인터럽트가 발생했던 지점으로

되돌아와 보관해 놓은 정보를 이용하여, ⑤ 원래 수행 중이었던 프로그램을

처리한다.

여기에서 인터럽트의 발생 시 운영체제가 일단 인터럽트 된 실행 중인 프로그

램의 상태를 기억시켜 두고 제어권을 인터럽트 처리 루틴에게로 넘기는 작업을 문

맥 교환( context switching)이라 한다.

문맥 교환

Page 41: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

소 개 CHAPTER

41

01

| 그림 1-14 | 인터럽트의 처리 과정 및 PSW 위치

문맥 교환의 과정에서 PSW(Program Status Word)는 명령문 수행의 순서를

조절하며, 실행 중이던 프로그램의 상태에 대한 여러 가지 정보를 보관한다. PSW

에는 세 가지 종류가 있는데 현재의 PSW, 새로운 PSW, 과거의 PSW 등이다. 여

기에서 과거의 PSW와 새로운 PSW는 미리 결정된 주기억장소에 위치한다. 인터

럽트가 발생하면 하드웨어적 방법으로 현재의 PSW를 과거의 PSW에 저장하고

새로운 PSW를 현재의 PSW에 저장한다. 그 후 중앙처리장치는 현재의 PSW에

의해 명시된 명령어를 수행하기 시작한다. 이 과정을 거치는 동안 인터럽트가 처

리된다. 인터럽트 처리 루틴의 마지막 부분에는 과거의 PSW를 현재의 PSW로 환

원시키는 명령어가 수행된다. 이 명령어를 수행함으로써 시스템은 인터럽트가 발

생하기 이전의 상태로 되돌아가 중단되었던 프로그램의 수행을 계속한다.

<그림 1-14>는 입출력 인터럽트 처리 과정에서의 PSW 교환 과정을 나타내고

있다.

PSW

Page 42: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

42

Computer Operating System운영체제

1.5 요약

운영체제는 두 가지 주요 목적을 위해 발전되어 왔다. 첫째 운영체제는 시스템

의 성능 향상을 보장하기 위하여 연산 과정을 스케줄하고, 둘째는 프로그램을 개

발하고 실행하는 데 편리한 환경을 제공해 주는 데 있다. 따라서 운영체제는 컴퓨

터의 운영을 위해 수행되는 가장 중요한 소프트웨어이다.

초기 컴퓨터는 콘솔(console)을 사용하여 어셈블러, 로더(loader) 그리고 컴파

일러와 같은 소프트웨어의 시스템 프로그래밍을 하는 데에 편리함을 제공하였지

만, 상당한 준비 시간(set-up time)을 필요로 했다. 이러한 준비 시간을 줄이기

위하여 등장된 것이 일괄처리(batch)이다.

일괄처리 시스템은 상주 모니터(resident monitor)로 자동 작업 순서를 실현하

여 전반적인 컴퓨터 이용률을 개선하였다. 따라서 컴퓨터는 더 이상 사람의 개입

이 필요 없어졌다. 그러나 입출력장치가 중앙처리장치에 비해 너무 느리기 때문

에 중앙처리장치의 이용률은 여전히 낮았다. 그래서 느린 장치의 오프라인(off-

line) 조작이 시도되었다.

시스템의 전체적인 성능을 개선하기 위하여 개발자들은 다중 프로그래밍의 개

념을 도입하였다. 다중 프로그래밍으로 다수의 작업들이 동시에 기억장치에 상

주하면서, 중앙처리장치 이용률은 증가하고 작업을 실행하는 데 필요한 전체 시

간을 감소시키기 위해 중앙처리장치는 여러 작업들을 교대로 수행하였다. 성능을

개선하기 위해 개발된 다중 프로그래밍은 또한 시분할을 허용하게 되었다. 시분

할 운영체제는 다수의 사용자(한 사람에서 수백 명)들이 대화형으로 컴퓨터를 사

용하도록 하였다. 또 다른 운영체제는 실시간 시스템, 다중 처리 시스템, 분산 처

리 시스템, 멀티미디어 시스템, 임베디드 시스템 등이 있다.

임베디드 시스템은 마이크로프로세서 또는 마이크로컨트롤러를 내장하여 시스

템 제작자가 의도한 몇 가지 혹은 특수한 기능만을 수행하도록 제작된 시스템을

말한다.

또한, 운영체제는 그 관점에 따라 여러 가지 개념으로 정의될 수 있다. 우선,

컴퓨터 시스템을 구성하는 각종 자원 관리자로 볼 수 있다. 즉, 자원 관리자 관점

에서의 운영체제는 각 자원의 상태를 추적·기억해야 하고, 어떤 프로세스에게

Page 43: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

소 개 CHAPTER

43

01

어떤 자원을 할당할 것인지를 결정한 후 그것을 할당하고 회수하는 역할을 한다.

프로세스 관점에서의 운영체제는 자원 관리를 위한 프로그램 모듈 간의 관계는

무엇이고, 언제 이러한 프로그램이 실행되는지 등에 초점을 두는 관점이다. 마지

막으로 계층 구조 관점에서의 운영체제는 모듈화된 자원 관리 루틴들이 상호 간

어떻게 관계하는지에 관계되는 관점이다.

BIOS는 부팅된 프로세스를 실행시키는 명령어들을 포함하고 있으며, 이러한

형태의 컴퓨터칩에 저장된 명령어들을 펌웨어(firmware)라고 한다. POST란 성

공적인 부팅 및 적정 수행의 확인을 위해 필요 하드웨어에 대해 행하는 테스트라

고 할 수 있다.

입출력장치와 중앙처리장치 간의 상호 처리 속도를 해결하기 위한 방안으로 버

퍼링, 스풀링, 입출력 채널 등이 있다. 버퍼링(buffering)은 한 레코드가 중앙처

리장치에서 연산이 시작됨과 동시에 입출력장치가 곧 다음에 필요한 레코드를 미

리 읽어서 주기억장치에 저장함으로써, 중앙처리장치가 필요한 레코드를 기다리

는 일이 없도록 하는 것이다.

스풀링(SPOOLing)은 버퍼링에서 주기억장치를 버퍼로 사용하는 것을 디

스크처럼 매우 큰 버퍼를 사용한다는 것이다. 이에 따라 스풀링에서는 작업 풀

(job pool)이라고 하는 중요한 자료구조 형태로 발생되어 작업 스케줄링(job

scheduling)이 가능하다. 입출력 채널은 입력장치와 중앙처리장치 사이의 입출력

전담 처리기이다. 즉, 입출력 전담 처리기인 채널을 두어 중앙처리장치의 이용률

을 향상시킬 수 있다. 또한 시스템에 예기치 않은 상황이 발생하였을 때, 그것을

운영체제에 알리기 위한 메커니즘으로 인터럽트(interrupt)가 있다. 인터럽트는

그 발생 원인에 따라 입출력 인터럽트, 외부 인터럽트, SVC 인터럽트, 기계 검사

인터럽트, 프로그램 에러 인터럽트, 재시작 인터럽트 등이 있다.

Page 44: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

44

Computer Operating System운영체제

연습문제

1. 운영체제의 영역을 제시하고 정의하시오.

2. 운영체제의 주목적은 무엇인가?

3. 운영체제와 접촉해야 하는 여러 가지 매체들을 나열하시오. 이 인터페이스들 각각

의 특성을 간단히 설명하시오.

4. POST(power on self test)가 담당해야 할 일은 무엇인가?

5. 다중 프로그래밍에 대한 동기는 무엇인가?

6. 다중 프로그래밍과 다중 처리 시스템의 차이점을 설명하시오.

7. 네트워크 운영체제와 분산 운영체제를 구분하여 설명하시오.

8. 멀티미디어 저작 시스템과 재생 시스템에 대해 설명하시오.

9. 다음과 같은 운영체제들을 비교하여 설명하시오.

⑴ 일괄 처리(batch processing) 시스템

⑵ 다중 프로그래밍(multiprogramming) 시스템

⑶ 시분할(time sharing) 시스템

⑷ 실시간(real time) 시스템

⑸ 분산 처리(distributed processing) 시스템

⑹ 멀티미디어(multimedia) 시스템

⑺ 임베디드(embedded) 시스템

10. 운영체제는 보는 관점에 따라 여러 형태로 생각할 수 있다. 다음 관점에 따른 운영

체제를 기술하시오.

⑴ 자원 관리자 관점 ⑵ 프로세스 관점

⑶ 계층 구조 관점

Page 45: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49

소 개 CHAPTER

45

01

11. 확장된 기계(extended machine)란 무엇인가?

12. 이중 버퍼링(double buffering)이란 무엇인가? 삼중 버퍼링은 어떻게 수행되는지

를 설명하시오. 또 삼중 버퍼링 기법은 언제 사용하면 좋겠는가?

13. 스풀링이란 무엇인가?

14. ⑴ 스풀링(spooling)의 이점을 아는 대로 기술하시오.

⑵ 테이프를 위하여 스풀링을 사용하는 이유 및 해결하는 데 있어서의 문제점을

기술하시오.

⑶ 입출력장치의 모든 테이프를 위하여 가능한 스풀링은?

15. 스풀링이 일괄 처리 다중 프로그래밍에서 필요한 이유는 무엇인가? 또 그것은 시

분할 시스템에서도 필요한가?

16. 입출력 채널이란 무엇이며, 컴퓨터 시스템에서 채널이 어떠한 기능을 수행하

는가?

17. 중앙처리장치와 채널과는 어떠한 방법으로 통신하며, 채널이 중앙처리장치로 어

떠한 방법으로 돌려주며 수행하는가?

18. 선택 채널, 멀티플렉서 채널, 블록 멀티플렉서 채널을 비교하여 설명하시오.

19. 인터럽트의 종류와 인터럽트가 발생되었을 때의 제반 문제점과 그의 처리 방안을

기술하시오.

Page 46: 국립중앙도서관 출판시도서목록(CIP)š´영... · 2015-10-02 · 6 c o n t e n t s chapter 02 프로세스와 스레드 관리 2.1 개요 48 2.2 프로세스 관리 49