2.01 - 강원대학교 컴퓨터과학전공

Download Report

Transcript 2.01 - 강원대학교 컴퓨터과학전공

Silberschatz, Galvin and Gagne ©2006
Operating System Principles
2장: 운영 체제 구조
Mi Jung Choi
[email protected]
Dept. of Computer Science
Ch2. Operating-System Structures
2장: 운영체제 구조





운영체제 서비스
사용자 운영체제 인터페이스
시스템 호출(System Calls)
시스템 호출의 종류
시스템 프로그램(System Programs)
 운영체제 설계 및 구현
 운영체제 구조
Operating System
-2-
Fall 2014
Ch2. Operating-System Structures
이 장의 목적
 운영체제가 사용자와 프로세스, 다른 시스템에게 제공하는
서비스를 설명한다
 운영체제를 구조화하는 다양한 방법에 대해 알아본다
Operating System
-3-
Fall 2014
Ch2. Operating-System Structures
누구에게: 사용자(Users), 프로세스(Processes), 다른 시스템(Other systems)
운영 체제 서비스
무엇을 가지고: 메모리, 저장소, 장치, CPU
 운영체제 서비스는 사용자에게 도움이 되는 기능들을 제공한다
 운영체제의 또 다른 기능은 자원을 공유하므로 스스로 시스템의 효율
적인 연산을 보장하기 위한 것이다
Operating System
-4-
Fall 2014
Ch2. Operating-System Structures
운영체제 서비스
 운영체제 서비스는 사용자에게 도움이 되는 기능들을 제공
한다:
 사용자 인터페이스(User Interface)


대부분의 모든 운영체제는 사용자 인터페이스(UI) 를 가진다
명령어 인터페이스(CLI), 그래픽 사용자 인터페이스(GUI), 일괄
처리 인터페이스 등 다양하다
 프로그램 실행(Program Execution)

Operating System
시스템은 프로그램을 메모리에 적재하고, 적재한 프로그램을 실
행하고, 정상적이든 비정상적(에러를 의미함)이든 종료할 수 있
어야 한다
-5-
Fall 2014
Ch2. Operating-System Structures
운영체제 서비스
 운영체제 서비스는 사용자에게 도움이 되는 기능들을 제공
한다:
 입출력 연산(I/O Operations)

실행 프로그램은 파일이나 입출력 장치를 포함하는 입출력을 요
구할 수 있다
 파일 시스템 조작(File-system Manipulation)


파일 시스템은 특별한 관심 사항이다
프로세스는 다음과 같은 기능을 필요로 한다
–
–
–
–

Operating System
파일과 디렉터리를 읽고 쓰는 기능
파일과 디렉터리를 생성하고 삭제하는 기능
파일과 디렉터리를 검색하는 기능
파일 정보를 리스트하는 기능
권한 관리 또한 필요하다
-6-
Fall 2014
Ch2. Operating-System Structures
운영체제 서비스
 운영체제 서비스는 사용자에게 도움이 되는 기능들을 제공
한다:
 통신(Communications)


프로세스는 같은 컴퓨터 내에서 또는 네트워크를 통해 다른 컴
퓨터 사이에 정보를 교환한다
통신은 공유 메모리나 메시지 전송(OS에 의한 패킷 전송)을 통
해 가능하다
 오류 검출(Error Detection)

운영체제는 끊임없이 가능한 오류에 대해 인식할 필요가 있다
– CPU와 메모리, 입출력 장치, 사용자 프로그램 내에서 발생할 수 있다


Operating System
각 오류 종류에 따라, 운영체제는 정정해서 계산을 계속할 수 있
도록 적절한 행동을 취해야 한다
디버깅 도구들은 사용자와 프로그래머의 시스템을 효율적으로
사용하는 능력을 향상시킬 수 있다
-7-
Fall 2014
Ch2. Operating-System Structures
운영체제 서비스
 운영체제의 또 다른 기능은 자원을 공유하므로 스스로 시
스템의 효율적인 연산을 보장하기 위한 것이다:
 자원 할당(Resource allocation)


여러 사용자와 여러 작업이 동시에 수행될 때, 자원은 각각에 할
당되어야 한다
많은 종류의 자원들이 있다
– CPU 사이클, 주 메모리, 파일 저장소와 같은 자원들은 특정 할당 코드를
가진다
– 입출력 장치와 같은 다른 자원들은 일반적인 요청과 양도(release) 코드를
가진다
 계정(Accounting)

Operating System
어떤 사용자가 어떤 종류의 컴퓨터 자원을 얼마나 사용했는지
기록하는 (keep track of) 것이다
-8-
Fall 2014
Ch2. Operating-System Structures
운영체제 서비스
 운영체제의 또 다른 기능은 자원을 공유하므로 스스로 시
스템의 효율적인 연산을 보장하기 위한 것이다:
 멀티 유저 컴퓨터 시스템에서의 보호와 보안




정보 소유자는 정보의 사용을 제어하기를 원한다
동시에 수행되는 프로세스들이 서로 방해하지 않도록 한다
보호(Protection)는 시스템에 대한 모든 접근 권한이 통제되는
것을 보장한다
보안(Security)은 외부사람으로부터 시스템에 대한 사용자 인증
(user authentication)을 요구한다
– 인식 불가능한 접근 시도로부터 외부 입출력 장치를 방어하도록 확장한다
Operating System
-9-
Fall 2014
Ch2. Operating-System Structures
사용자 운영체제 인터페이스 - CLI
 CLI는 직접적인 명령 입장을 허락한다

명령어 라인 인터페이스: Command Line Interface(CLI)


때때로 커널(kernel)에서 구현된다
때로는 시스템 프로그램으로 구현된다

때로 여러 취향에 따라 구현된다 – shells
 BASH (Bourne-Again SHell), CSH (C SHell), KSH (Korn
SHell), TCSH on Linux
 CMD on windows XP

기본적으로 사용자로부터 명령어를 받아들여 그것을 수행한다
 때로 명령어들은 내장된다(built-in)
 때로 단순히 프로그램 이름이다
– 새로운 특징을 추가하는 것은 쉘의 수정을 요구하지 않는다
Operating System
- 10 -
Fall 2014
Ch2. Operating-System Structures
사용자 운영체제 인터페이스 - GUI
 사용자 친숙 데스크톱 은유 인터페이스




보통 마우스, 키보드, 모니터
아이콘(Icons)은 파일, 프로그램, 행동(action) 등을 나타낸다
객체에 대한 다양한 마우스 버튼은 다양한 행동을 유발한다
 정보, 선택사항, 수행 기능, 디렉터리 열람을 제공한다
Xerox PARC에서 개발되었다
 많은 시스템들이 현재 CLI와 GUI 인터페이스 두 가지를 다
제공한다



마이크로소프트 윈도우는 “command”나 “cmd” 쉘인 CLI를 가진
GUI 인터페이스이다
애플 맥(Mac) 운영체제 X는 유닉스 커널 하부에 쉘이 가능하게 하는
“Aqua” GUI 인터페이스이다
리눅스는 선택적으로 GUI 인터페이스(GNOM, KDE) 를 지원하는
CLI이다
Operating System
- 11 -
Fall 2014
Ch2. Operating-System Structures
시스템 호출
프로세스가 운영체제와 통신하는 유일한 방법이다
운영체제에 의해 제공되는 서비스에 인터페이스를 제공한다
Operating System
- 12 -
Fall 2014
Ch2. Operating-System Structures
시스템 호출
 운영체제가 지원하는 서비스에 대한 프로그래밍 인터페이스
 전통적으로 고급 언어로 작성된다 (C나 C++)

때때로 어셈블리 언어 명령어를 사용해서 작성되기도 한다
 대부분 프로그램에 의해 접근되는 방법은 직접적인 시스템
호출보다 고급 응용 프로그램 인터페이스(Application
Program Interface: API)이다


각 API는 하나 이상의 시스템 호출로 이루어진다
API들은 운영체제에 따라 다르다(OS specific)
 왜 시스템 호출보다 API를 사용하는가?

시스템 호출보다 더 간단한 방법을 제공하고 구현에 대한 자세한 것
을 숨기기 위해서
Operating System
- 13 -
Fall 2014
Ch2. Operating-System Structures
시스템 호출의 예제
 한 파일의 내용을 다른 파일에 복사(copy)하는 시스템 호출
순서
scanf(infile)
scanf(outfile)
fopen(“r”);
fopen(“w”);
fgetc();
fputc();
fclose(infile);
fclose(outfile);
exit();
Operating System
- 14 -
Fall 2014
Ch2. Operating-System Structures
시스템 호출 구현
 전통적으로, 각 시스템 호출에는 번호(a number)가 할당된
다


시스템 호출 인터페이스는 이 번호에 따라 색인되는 테이블을 유지
한다
시스템 호출 인터페이스는 OS 커널내의 의도하는 시스템 호출을 부
르고 시스템 호출 상태와 반환 값을 되돌려준다
 호출자는 시스템 호출이 어떻게 구현되는지에 대해서는 아
무것도 알 필요가 없다


단지 API를 준수하고 시스템 호출 결과로 운영체제가 무엇을 해 줄
것인지만 이해하면
운영체제 인터페이스에 대한 대부분의 자세한 내용은 API에 의해
프로그래머로부터 숨겨진다
Operating System
- 15 -
Fall 2014
Ch2. Operating-System Structures
API – 시스템 호출 – 운영체제 관계
Operating System
- 16 -
Fall 2014
Ch2. Operating-System Structures
표준 C 라이브러리 예제
 C 프로그램은
printf() 라이브러리
호출을 부르고,
이것은 write()
시스템 호출을
부른다
Operating System
- 17 -
Fall 2014
Ch2. Operating-System Structures
시스템 호출 매개변수 전송
 종종, 단순히 원하는 시스템 호출이 무엇인지보다 더 많은
정보가 요구될 경우도 있다

필요한 정보의 유형과 양은 특정 운영체제와 시스템 호출에 따라 다
양하다
 운영체제에 매개변수를 전달하기 위해서 세 가지 일반적인
방법을 사용한다




가장 간단한 방법: 매개 변수를 레지스터 내에 전달하는 것
 어떤 경우는 레지스터보다 더 많은 매개변수가 있을 수 있다
매개변수는 메모리 내의 블록이나 테이블에 저장되고, 블록의 주소
가 레지스터 내에 매개변수로 전달된다
 이런 접근법은 리눅스와 솔라리스가 사용한다
매개변수는 프로그램에 의해 스택에 넣어질(push) 수 있고, 운영체
제에 의해 꺼내진다(pop off)
운영체제는 블록이나 스택 방법을 선호하는데, 이들 접근법은 전달
되는 매개변수들의 개수나 길이를 제한하지 않기 때문이다
Operating System
- 18 -
Fall 2014
Ch2. Operating-System Structures
테이블을 통한 매개변수 전송
Operating System
- 19 -
Fall 2014
Ch2. Operating-System Structures
시스템 호출의 유형 (1)
 시스템 호출의 다섯 가지 유형





프로세스(Process) 제어(control)
파일(File) 관리(management)
장치(Device) 관리(management)
정보(Information) 유지(maintenance)
통신(Communications)
Operating System
- 20 -
Fall 2014
Ch2. Operating-System Structures
시스템 호출의 유형 (2)
 프로세스 제어(Process control)







끝내기(end), 중지(abort)
적재(load), 실행(execute)
프로세스 생성, 프로세스 종료
프로세스 속성(attribute) 획득, 프로세서 속성 설정
시간을 기다림
사건을 기다림(wait event), 사건을 알림(signal event)
메모리 할당 및 자유화
 파일 관리(File management)




파일 생성(create file), 파일 삭제(delete file)
열기(open), 닫기(close)
읽기, 쓰기, 위치 변경(reposition)
파일 속성 획득 및 설정
Operating System
- 21 -
Fall 2014
Ch2. Operating-System Structures
시스템 호출의 유형 (3)
 장치 관리(Device management)




장치 요청(request device), 장치 방출(release device)
읽기, 쓰기, 위치 변경(reposition)
장치 속성 획득, 장치 속성 설정
장치의 논리적 부착(attach) 또는 분리(detach)
 정보 유지(Information maintenance)




시간과 날짜의 설정과 획득
시스템 자료의 설정과 획득
프로세스, 파일, 장치 속성의 획득
프로세스, 파일, 장치 속성의 설정
Operating System
- 22 -
Fall 2014
Ch2. Operating-System Structures
시스템 호출의 유형 (4)
 통신 (Communications)




통신 연결의 생성, 제거
메시지의 송신, 수신
상태 정보 전달
원격 장치의 부착(attach) 및 분리(detach)
Operating System
- 23 -
Fall 2014
Ch2. Operating-System Structures
MS-DOS 실행
(a) 시스템 시작시에
Operating System
(b) 프로그램 수행시에
- 24 -
Fall 2014
Ch2. Operating-System Structures
시스템 프로그램 (1)
 시스템 프로그램은 프로그램을 개발하고 수행하기 편리한
환경을 제공한다

어떤 것은 간단한 사용자 인터페이스이고; 어떤 것은 상대적으로
더 복잡한 것들이다
 다음과 같이 나뉠 수 있다:






파일 조작(File manipulation)
상태 정보(Status information)
파일 수정(File modification)
프로그래밍 언어 지원(Programming language support)
프로그램 적재 및 수행(Program loading and execution)
통신(Communications)
 시스템 연산에 대한 대부분의 사용자 관점은 실제 시스템
호출이 아닌 시스템 프로그램에 의해 정의된다
Operating System
- 25 -
Fall 2014
Ch2. Operating-System Structures
시스템 프로그램 (2)
 파일 관리(File management)

생성, 삭제, 복사, 재명명(rename), 출력, 덤프(dump), 리스트(list),
일반적인 파일과 디렉터리 조작에 관한 것
 상태 정보(Status information)

어떤 프로그램은 시스템 정보를 요청한다
 날짜, 시간, 사용 가능한 메모리 양, 디스크 용량, 사용자 수 등
 자세한 성능, 로깅, 디버깅 정보

통상적으로, 이 프로그램들은 정보를 단말기나 다른 출력 장치 혹은
파일로 포맷하여 인쇄하거나 GUI 윈도우에 표시한다
몇몇 시스템은 환경 설정 정보를 저장하고 검색할 수 있는 등록소
(registry) 기능을 지원하기도 한다

Operating System
- 26 -
Fall 2014
Ch2. Operating-System Structures
시스템 프로그램 (3)
 파일 수정(File modification)


텍스트 에디터는 파일을 생성하고 수정한다
특정 명령어들은 파일의 내용을 찾거나(search) 텍스트의 변환
(transformation)을 수행한다
 프로그래밍 언어 지원(Programming-language support)

컴파일러(Compilers), 어셈블러(assemblers), 디버거(debuggers),
해석기(interpreters) 등이 지원된다
Operating System
- 27 -
Fall 2014
Ch2. Operating-System Structures
시스템 프로그램 (4)
 프로그램 적재와 수행


일단 프로그램이 어셈블되거나 컴파일된 후, 그것이 실행되기 위해
서는 반드시 메모리에 적재되어야 한다
시스템은 절대 적재기(Absolute loaders), 재배치 가능 적재기(relocatable loaders), 링키지 편집기(linkage editors), 중첩 적재기
(overlay-loaders) 등을 제공할 수 있다. 또한 고급어나 기계어를 위
해 디버깅 시스템(debugging systems)도 필요하다
 통신


프로세스, 사용자, 컴퓨터 시스템 사이에 가상 연결을 생성할 수 있
는 방법을 제공한다
사용자들이 다른 사용자 화면으로 메시지를 전송하거나, 웹 페이지
를 브라우징하고, 전자 메일 메시지를 보내거나, 원거리에서 로그인
하거나, 한 기계에서 다른 기계로 파일을 전송할 수 있게 한다
Operating System
- 28 -
Fall 2014
Ch2. Operating-System Structures
운영체제 설계 및 구현
Operating System
- 29 -
Fall 2014
Ch2. Operating-System Structures
운영체제 설계 및 구현 (1)
 운영체제의 설계와 구현에 대한 완전한 해결책은 없다

그러나 성공적인 접근 방법들이 있다
 서로 다른 운영체제의 내부 구조는 다양하다
 시스템의 목표와 명세 정의하는 것

하드웨어와 시스템 유형의 선택에 영향을 받는다
 일괄처리(batch), 멀티프로그래밍(multiprogramming), 멀티태스킹
(multitasking)
 단일 사용자, 다중 사용자
 분산(distributed), 실시간(real-time), 범용(general purpose)
 사용자 목적과 시스템 목적


사용자 목적 – 운영체제는 사용하기 편리해야 하고, 배우기 쉽고, 믿을 수
있고, 안전하고, 신속해야 한다
시스템 목적 – 운영체제는 설계, 구현, 유지보수가 쉬워야 하고, 또한 적응
성, 신뢰성, 무오류, 효율성을 가져야 한다
Operating System
- 30 -
Fall 2014
Ch2. Operating-System Structures
운영체제 설계 및 구현 (2)
 다음 2가지를 분리하는 것이 중요 원칙이다
정책(policy): 무엇을 해야 하는가?
방법(mechanism): 어떻게 해야 하는가?
 방법들은 어떻게 할지를 결정한다
 정책들은 무엇이 이루어져야 하는지 결정한다


방법과 정책을 분리하는 것이 매우 중요한 원칙이다,
이것이 후에 정책 결정이 바뀌더라도 유연성을 최대한 보장한다
 먼저 운영체제가 설계된 후에, 구현되어야 한다


전통적으로, 어셈블리 언어로 구현된다
현재, 고급 언어로 구현되고 있다 (C: 리눅스, 윈도우)
Operating System
- 31 -
Fall 2014
Ch2. Operating-System Structures
운영체제 구조
1.
2.
3.
4.
간단한 구조(Simple Structure)
계층적 구조(Layered Structure)
마이크로커널 시스템 구조(Microkernel System Structure)
모듈화 커널 구조(Modular Kernel Structure - Modern OS)
Operating System
- 32 -
Fall 2014
Ch2. Operating-System Structures
1. 간단한 구조
 MS-DOS

정책- 최소한의 공간(자원)에서 최대한의 기능을 제공하는 것이다

모듈로 분할되지 않았다

비록 MS-DOS가 어느 정도는 구조화 되어있지만, 기능별 인터페이
스와 계층이 제대로 구분되지 않았다
Operating System
- 33 -
Fall 2014
Ch2. Operating-System Structures
MS-DOS 계층 구조
Operating System
- 34 -
Fall 2014
Ch2. Operating-System Structures
2. 계층적 접근
 운영체제 시스템은 여러 계층(layer, level)으로 구분된다


최하위 계층(layer 0): 하드웨어;
최상위 계층(layer N): 사용자 인터페이스
 모듈화를 통해, 각 계층은 바로 아래 계층에서 제공하는 기
능(연산)과 서비스만을 사용한다


전형적인 운영체제 계층 (layer M)은 데이터 구조와 상위 계층에 의
해 호출될 수 있는 작업 집합으로 이루어진다
계층 M(Layer M)은 하위 계층에 대한 연산을 호출할 수 있다
Operating System
- 35 -
Fall 2014
Ch2. Operating-System Structures
계층 구조의 운영체제
Operating System
- 36 -
Fall 2014
Ch2. Operating-System Structures
계층적 접근
 장점

구축과 디버깅의 단순함



설계와 구현이 단순하다
각 계층은 하위 계층에서 제공하는 연산(기능)만을 통해 구현된다
각 계층은 이 연산들이 어떻게 구현되었는지 알 필요가 없다
 단점

다양한 계층들이 대략적으로 정의된다

각 계층은 오직 하위 계층들에서 제공하는 기능만을 사용하기 때문
에, 주의 깊은 계획이 요구된다
Operating System
- 37 -
Fall 2014
Ch2. Operating-System Structures
유닉스
 유닉스 운영체제는 두 부분으로 구성된다

시스템 프로그램(Systems programs)

커널(kernel)
 시스템 호출 인터페이스 아래단과 물리적 하드웨어 상위단의
모든 것으로 구성된다

파일 시스템, CPU 스케줄링, 메모리 관리, 운영체제의 다른 기
능들을 제공한다; 하나의 계층에 너무 많은 기능들이 수행된다
 유닉스의 기능이 확장됨에 따라, 커널이 점점 더 거대해진
다
Operating System
- 38 -
Fall 2014
Ch2. Operating-System Structures
유닉스 시스템 구조
Operating System
- 39 -
Fall 2014
Ch2. Operating-System Structures
3. 마이크로커널 시스템 구조
 커널을 가능한 한 경량화한다



많은 기능을 커널로부터 “사용자” 공간으로 이동한다
통신은 사용자 모듈 사이에서 메시지 전달을 통해 이루어진다
카네기 멜론 대학(CMU)에서 Mach OS를 구현했다
 장점



마이크로커널을 확장하기 쉽다
운영체제를 새로운 구조로 이식(port)하기 쉽다
(커널에서 수행되는 코드가 더 적으므로) 더 안정적(reliable)이고 더
안전(secure)하다
 단점

커널 공간과 통신하기 위한 사용자 공간의 성능 오버헤드(overhead)
Operating System
- 40 -
Fall 2014
Ch2. Operating-System Structures
4. 모듈화 커널 구조
 대부분의 현대 운영체제는 커널 모듈을 구현한다

커널은 핵심 컴포넌트들로 이루어지며 부팅시나 실행시에 부가적인
서비스들을 동적으로 연결(link)한다



객체 지향(object-oriented) 접근을 사용한다
각 핵심 컴포넌트는 나뉘어져 있다
각 컴포넌트는 정해진 인터페이스를 통해 다른 컴포넌트와 대화한
다
각 컴포넌트는 커널내에서 필요에 따라 적재 가능하다

 결론적으로, 계층 구조와 유사하나 더 유연(flexible)하다
Operating System
- 41 -
Fall 2014
Ch2. Operating-System Structures
솔라리스 모듈화 접근법
Operating System
- 42 -
Fall 2014
Ch2. Operating-System Structures
모듈화된 커널 구조
 모듈화 커널 접근법은 계층구조 접근법과 유사하다

모듈화 커널 접근법은 서브시스템들이 서로 정해진 인터페이스를
통해 상호작용하도록 요구한다
 그러나 모듈화 커널 접근법은 아래 측면에서 계층적 접근법
과 다르다


계층적 커널은 하위 계층에 있는 서브시스템들은 대응하는 상위 계
층의 서브시스템의 연산을 호출할 수 있도록 허용하지 않는 아주 엄
격한 서브시스템의 순서(strict ordering of subsystem)를 가지고 있
다
모듈화 커널 접근법에서는 이런 제약이 없다. 모듈들은 어떤 제약 없
이 서로 자유롭게 호출할 수 있다
Operating System
- 43 -
Fall 2014
Ch2. Operating-System Structures
요약
 운영체제는 다음과 같은 서비스들을 제공한다


사용자에게 도움이 되는 기능
 사용자 인터페이스, 프로그램 실행, 입출력 연산
 파일 시스템 조작, 통신, 오류 검출
시스템의 효율적인 연산을 보장하는 기능
 자원 할당, 계정 관리, 보호 및 보안
 운영체제에 대한 세 가지 종류의 사용자 인터페이스

CLI, GUI, Batch Interface
 시스템 호출은 프로세스가 운영체제에게 요청할 수 있는 방법을 제공한다.

요청을 보내기 위해, 프로그램은 일련의 시스템 호출로 번역되는 시스템 API나 표준
라이브러리 함수를 사용한다
 시스템 호출에서 매개변수를 전달하는 세 가지 방법

레지스터(Register), 블록(Block), 스택(Stack)
 방법론으로부터 정책을 분리하는 것은 운영체제를 설계하는 중요한 원칙 중 하
나이다
 운영체제 구조의 네 가지 유형

단순(Simple), 계층(Layered), 마이크로커널(Microkernel), 모듈화(Modular)
Operating System
- 44 -
Fall 2014