2장. 구조 (OS Structure) 순천향대학교컴퓨터공학과이상정 순천향대학교컴퓨터공학과 1 강의목표및내용 목표 사용자, 프로세스및다른시스템에게제공하는서비스 구성요소 운영제제설치및부팅과정 내용 서비스 사용자인터페이스 시스템호출및시스템프로그램 구조 가상기계 시스템부트 순천향대학교컴퓨터공학과 2
서비스 (1) 는프로그램과프로그램의사용자에게어떤서비스를제공 사용자인터페이스 (user interface) 명령어라인인터페이스 (command-line interface : CLI) 그래피컬사용자인터페이스 (GUI) 프로그램수행 (program execution) 프로그램을메모리에적재해실행 정상적이든혹은, 비정상적이든 ( 에러를표시하면서 ) 실행을종료 입 / 출력연산 (I/O operation) 가입 / 출력동작의수단을제공 파일시스템조작 (file system manipulation) 파일및디렉토리생성및삭제, 읽고쓰기, 파일검색, 사용허가 순천향대학교컴퓨터공학과 3 서비스관점 순천향대학교컴퓨터공학과 4
서비스 (2) 통신 (communication) 동일한컴퓨터또는네트워크에연결된컴퓨터상에서한프로세스가다른프로세스와정보를교환하는수단제공 통신은공유메모리 (shared memory) 나메시지전달 (message passing) 기법등에구현 오류탐지 (error detection) 모든가능한오류를탐지하고적절한조치 CPU, 메모리하드웨어 ( 메모리오류, 정전등처럼 ), 입 / 출력장치 ( 테이프의패리티오류, 네트워크의접속실패, 또는프린터의종이부족 ) 오류 사용자프로그램 ( 연산의오버플로우, 불법적인메모리위치에의접근시도, 또는 CPU 시간의지나친사용등 ) 오류 순천향대학교컴퓨터공학과 5 서비스 (3) 는자원을공유하여시스템자체의효율적인동작을보장 자원할당 (resource allocation) 다수의사용자나다수의작업들이동시에실행될때, 그들각각에자원을할당 CPU 사이클, 주메모리, 파일저장장치들은특수한할당 (allocation) 코드 입 / 출력장치들은훨씬일반적인요청 (request) 과방출 (release) 코드 회계 (accounting) 각사용자가어떤종류의컴퓨터자원을얼마나많이사용하는지관리 보호 (protection) 와보안 (security) 다중사용자컴퓨터시스템또는네트워크로연결된컴퓨터시스템에저장된정보의소유자는사용을통제 보호는시스템자원에대한모든접근이통제되도록보장 보안은각사용자가자원에의접근허용을위한인증 (authentication ), 외부입 / 출력장치들을부적합한접근시도로부터지키고, 침입의탐지를위해모든연결을기록하도록확장 순천향대학교컴퓨터공학과 6
사용자인터페이스 (1) 명령어라인해석기 (command line interpreter, CLI) 가수행할명령어를직접입력하는수단제공 명령어해석기의주요기능은사용자가지정한명령을해석하고수행하는것 커널에구현되거나시스템프로그램으로제공 선택할수있는여러명령어해석기를제공하는시스템에서이해석기는셀 (shell) 이라고함 UNIX나 Linux시스템에서는 Bourne shell, C shell, Bourne Again shell, Korn shell 두가지구현방법 명령어해석기자체가명령을실행할코드를내장 시스템프로그램에의해대부분의명령을구현 명령어해석기는명령에해당하는시스템프로그램을찾아서실행 순천향대학교컴퓨터공학과 7 사용자인터페이스 (2) 그래피컬사용자인터페이스 (Graphical User Interface, GUI) 마우스를기반으로하는윈도우메뉴시스템 1970년대초 Xerox PARC 연구센터개발 1973년에출시된 Xerox Alto 컴퓨터에처음등장 대부분의시스템이 CLI 와 GUI 모두제공 Microsoft Windows는 CLI "command" 을갖는 GUI Apple Mac OS X 는 UNIX 커널의하부구조와 CLI 셀을갖는 "Aqua" GUI UNIX/Linux 다양하고강력한셸인터페이스제공 X 윈도우시스템, Common Desktop Environment(CDE), K Desktop Environment(KDE), GNU 프로젝트의 GNOME 순천향대학교컴퓨터공학과 8
Bourne 셀명령어해석기 순천향대학교컴퓨터공학과 9 Mac OS X GUI 순천향대학교컴퓨터공학과 10
시스템호출 (System Call) 에의해사용가능하게된서비스에대한인터페이스를제공 일반적으로 C 와 C++ 언어로작성된루틴형태로제공 프로그램이직접시스템호출을사용하기보다는응용프로그래밍인터페이스 (Application Programming g Interface, API) 를거쳐서접근 프로그램의호환성 사용이용이 응용프로그래머가사용가능한가장흔한세가지 API Windows 시스템을위한 Win32 API POSIX 기반시스템을위한 POSIX API( 거의모든버전의 UNIX, Linux 및 Mac OS X 를포함 ) Java 가상기계에서수행될수있는프로그램을위한 Java API 순천향대학교컴퓨터공학과 11 시스템호출예 한파일로부터데이터를읽어서다른파일로복사하는연속된시스템호출예 순천향대학교컴퓨터공학과 12
표준 API 의예 Win32 API 의 ReadFile() 함수예 순천향대학교컴퓨터공학과 13 시스템호출구현 통상각시스템호출에는번호가할당 시스템호출인터페이스는이번호에따라인덱스되는테이블을관리 시스템호출인터페이스는의도하는시스템호출을부르고시스템호출의상태와반환값을리턴 호출자는시스템호출이어떻게구현되고실행중무슨작업을하는지아무것도알필요가없음 API를준수하고시스템호출의결과로가무엇을해줄것인지만이해하면됨 인터페이스에대한대부분의자세한내용은 API 에의해프로그래머로부터숨겨짐 실행시간지원라이브러리 (run-time support library) 에의해관리 순천향대학교컴퓨터공학과 14
API 시스템호출 OS 관계 순천향대학교컴퓨터공학과 15 표준 C 라이브러리의예 printf() 문을호출하는 C 프로그램을예 write() 시스템호출 순천향대학교컴퓨터공학과 16
시스템호출매개변수전달 시스템호출시에매개변수를전달하기위해서세가지일반적인방법 가장간단한방법은매개변수를레지스터내에전달 메모리내의블록이나테이블에저장되고, 블록의주소가레지스터내에매개변수로전달 프로그램에의해스택 (stack) 에넣어질 (push) 수있고, 에의해꺼내짐 (pop off) 순천향대학교컴퓨터공학과 17 테이블로매개변수전달 순천향대학교컴퓨터공학과 18
시스템호출의유형 프로세스제어 시스템호출은프로세스제어, 파일조작, 장치조작, 정보유지보수와통신등으로분류 프로세스제어 (process control) 끝내기 (end), 중지 (abort) 적재 (load), 실행 (execute) 프로세스생성 (create process or submit job), 프로세스종료 프로세스속성 (attribute) t 획득, 프로세스속성설정 일정시간을기다림 (wait time) 사건을기다림 (wait event), 사건을알림 (signal event) 메모리할당및자유화 순천향대학교컴퓨터공학과 19 윈도우즈와 Unix 시스템호출예 순천향대학교컴퓨터공학과 20
MS-DOS 실행예 단일태스킹시스템의예 순천향대학교컴퓨터공학과 21 FreeBSD 실행예 다중태스킹시스템의예 순천향대학교컴퓨터공학과 22
시스템호출의유형 파일조작, 장치관리 파일조작 (file manipulation) 파일생성 (create file), 파일삭제 (delete file) 열기 (open), 닫기 (close) 읽기, 쓰기, 위치변경 (reposition) 파일속성획득및설정 장치관리 (device management) 장치를요구 (request device), 장치를방출 (release device) 읽기, 쓰기, 위치변경 (reposition) 장치속성획득, 장치속성설정 장치의논리적부착 (attach) 또는분리 (detach) 순천향대학교컴퓨터공학과 23 시스템호출의유형 정보유지, 통신 정보유지 (information maintenance) 시간과날짜의설정과획득 시스템데이터의설정과획득 프로세스, 파일, 장치속성의획득 프로세스, 파일, 장치속성의설정 통신 (communication) 프로세스간통신연결의생성, 제거 메시지전달모델 공유메모리모델 메시지의송신, 수신 상태정보전달 원격장치의부착및분리 순천향대학교컴퓨터공학과 24
시스템프로그램 (System Program) 시스템프로그램은프로그램개발과실행을위해보다편리 한환경을제공 파일관리 : 파일과디렉토리를생성, 삭제, 조작 상태정보 : 시스템상태정보 ( 메모리, 디스크공간, 사용자, 성능, 디버깅 ) 파일변경 : 문장편집기 (text t editor) 등 프로그래밍언어 : 컴파일러, 어셈블러, 해석기 (interpreter) 프로그램적재와수행 : 적재기 (loader) 통신 : 프로세스, 사용자그리고다른컴퓨터시스템들사이에가상접속을이루기위한기법을제공 대부분의사용자가보는의관점은실제의시스템호출에의해서보다는시스템프로그램과응용에의해정의 순천향대학교컴퓨터공학과 25 설계및구현 (1) (OS Design and Implementation) 각의내부구조는아주다양 설계목표 (design goal) 설계는시스템의목표 (goal) 와명세 (specification) 정의부터시작 설계는하드웨어와시스템유형 ( 일괄처리, 시분할, 단일사용자, 다중사용자, 분산, 실시간혹은, 범용 ) 의선택에의해영향 사용자목표 (user goal) 는사용하기쉽고편리하며, 배우기쉽고, 믿을수있고, 안전하고, 신속해야함 시스템목표 (system goal) 는설계, 구현, 유지보수가쉬워야하며또한, 적응성, 신뢰성, 무오류, 효율성을가져야함 순천향대학교컴퓨터공학과 26
설계및구현 (2) 메커니즘과정책 (mechanism and policy) 메커니즘은어떤일을어떻게 (how) 할것인가를결정하는것이고, 정책은무엇 (what) 을할것인가를결정하는것 예를들면, 타이머구조 (1.5.2 절참조 ) 는CPU 보호를보장하기위한메커니즘이지만, 특정사용자를위해타이머를얼마나오래동안설정할지를결정하는것은정책적결정 중요한원칙은메커니즘으로부터정책을분리하는것 융통성 (flexibility) 을위해아주중요 정책은장소가바뀌거나시간이흐름에따라변경될수있음 최악의경우, 정책의각변경이저변에깔려있는메커니즘의변경을요구 정책의변경에민감하지않은일반적인메커니즘이보다바람직 전통적으로, 는어셈블리어로구현되나, 최근에는 C 나 C++ 와같은고급언어로구현 순천향대학교컴퓨터공학과 27 구조 (OS Structure) 간단한구조 소형이면서간단하고제한된시스템의 MS-DOS 최소의공간에최대의기능들을제공하도록작성 모듈들로분할되지않음 인터페이스와기능계층이분리되지않음 순천향대학교컴퓨터공학과 28
간단한구조 - UNIX 제한적인구조의또다른예는최초의 UNIX UNIX 는커널과시스템프로그램으로구성 커널 (kernel) 시스템호출인터페이스아래와물리적하드웨어위의모든것이커널 커널은시스템호출을통해파일시스템, CPU 스케줄링, 메모리관리그리고다른기능을제공 하나의계층으로결합하기에는엄청나게많은기능 이러한모놀리딕 (monolithic) 구조는구현하기어렵고또유지보수하기도어려움 순천향대학교컴퓨터공학과 29 UNIX 시스템구조 순천향대학교컴퓨터공학과 30
계층적접근 (layered approach) 가여러개의계층분할 최하위계층 ( 계층 0) 은하드웨어이고최상위계층 ( 계층 N) 은사용자인터페이스 계층적접근방식의주된장점은구현과디버깅의간단함 계층들은단지자신의하위계층들의서비스와기능 ( 연산 ) 들만을사용하도록선택 계층적접근방법의가장어려운점은여러계층을적절히정의하는것 순천향대학교컴퓨터공학과 31 마이크로커널 (Microkernel) 모든중요치않은구성요소를커널로부터제거하고, 그들을시스템및사용자수준프로그램으로구현하여를구성 간소화된커널 메시지전달 (message passing) 을사용자공간에서수행되는다양한서비스간에통신 장점 의확장이용이 한하드웨어로부터다른하드웨어로이식이용이 높은보안성과신뢰성을제공 단점 사용자공간과커널공간과의통신오버헤드때문에성능이감소 순천향대학교컴퓨터공학과 32
모듈 (Module) 최근의는커널을모듈로구현 객체지향프로그래밍기법을사용 커널은핵심적인구성요소의집합을가지고있고부팅때또는실행중에부가적인서비스들을링크 동적적재모듈을사용 커널의각부분이정의되고보호된인터페이스를가진다는점에서계층적구조와비슷하지만임의의모듈을호출할수있다는점에서계층적구조보다유연함 중심모듈은단지핵심기능만을가지고있다는점에서는마이크로커널과유사하지만통신하기위하여메시지전달을호출할필요가없기때문에더효율적 Solaris, Linux 및 Mac OS X 등의현대 UNIX의구현에일반적인추세 순천향대학교컴퓨터공학과 33 Solaris 적재가능모듈 순천향대학교컴퓨터공학과 34
Mac OS X 구조 Apple Macintosh Mac OS X (Darwin) 는혼성구조를사용 계층구조를사용하고한계층은 Mach 마이크로커널로구성 최상위계층은응용환경과응용에그래피컬인터페이스를제공하기위한서비스의집합 커널환경은 Mach 마이크로커널과 BSD 커널로구성 Mach는메모리관리, 원격함수호출 (remote procedure call, RPC) 과메시지전달을포함한프로세스간통신설비그리고쓰레드스케줄링을제공 BSD구성요소는 BSD 명령어라인인터페이스와네트워킹과파일시스템지원, Pthread 를포함한 POSIX API 의구현을제공 순천향대학교컴퓨터공학과 35 가상기계 (Virtual Machine) (1) 가상기계는한컴퓨터의하드웨어 (CPU, 메모리, 디스크드라이브, 네트워크인터페이스카드등 ) 가다수의다른실행환경 ( ) 을제공하도록추상화 각각개별적인실행환경이자신만의독립된컴퓨터를사용하는환상 (illusion) 을제공 는각프로세스가자신의전용 ( 가상 ) 메모리를갖는전용처리기에서수행되는것처럼환상 (illusion) 을제공 가상기계접근방법은어떤부가적인기능을제공하는것이아니라, 아래에깔려있는순수한하드웨어와동일한인터페이스를제공 각프로세스에게아래에깔려있는컴퓨터의 ( 가상적인 ) 복사본이제공 순천향대학교컴퓨터공학과 36
가상기계시스템모델 순천향대학교컴퓨터공학과 37 가상기계장 / 단점 장점 각가상기계는다른모든가상기계로부터완전히격리되어시스템자원에대해완전한보호 그러나동시에가상기계들은자원을직접공유할수없음 가상기계시스템은연구와개발을위한완벽한도구로사용될수있음 시스템개발은물리적인기계대신에가상기계상에서이루어지므로, 정규시스템동작을중단할필요가거의없음 단점 가상기계개념은저변에있는기계의정확한복제품 (duplicate) 을제공하기위해서는많은노력이필요 순천향대학교컴퓨터공학과 38
VMware VMware는 Intel 80X86 하드웨어를가상기계로추상화하는가장대중적인상용제품 Windows 또는 Linux 등의호스트 (host) 상에서다수의다른게스트 (guest) 들을독립된가상기계처럼실행 순천향대학교컴퓨터공학과 39 자바가상기계 (Java Virtual Machine) Java 컴파일러는아키텍처중립적인바이트코드 (bytecode) 출력 (.class) 파일을생성하며, 이파일은임의의자바가상기계 (JVM) 구현에서실행 속도를높이기위해 just-in-time(jit) ti 컴파일러를사용 중복사용되는메소드의바이트코드의기계어를캐싱하여해석없이직접기계어로변환 순천향대학교컴퓨터공학과 40
생성 (OS Generation) 는다양한주변구성을가진다수의기계에서수행되도록설계 따라서가특정컴퓨터사이트를위해구성되거나또는생성되어야함 이절차를시스템생성 (SYSGEN) 이라함 SYSGEN 프로그램은하드웨어시스템의특정구성에관한정보를운영자에게요구하거나주어진파일로부터읽어들임 CPU, 사용가능한메모리의크기, 주변장치, 옵션 시스템정보결정후컴파일하여생성 미리컴파일된라이브러리로부터모듈을선택하거나테이블생성 순천향대학교컴퓨터공학과 41 시스템부트 (boot) 부팅 (booting) 커널을적재하여컴퓨터를시동하는절차 부트스트랩프로그램 (bootstrap program) 부트스트랩적재기 (bootstrap loader) 라고도하고 ROM에저장 커널을찾고, 그것을주메모리에적재하고, 수행을시작 기계의상태를진단 CPU 레지스터, 장치제어기, 주메모리의내용등시스템전반에걸쳐초기화 Windows, Mac OS X 및 Linux 같은일반적인 부트스트랩적재기는펌웨어에있고는디스크에위치 부트스트랩은진단절차를수행하고고정된위치 ( 예를들면블록 0, 부트블록 ) 의디스크블록하나를읽어메모리에적재하고실행 순천향대학교컴퓨터공학과 42
과제 : 연습문제 연습문제 2.3 (2.15) 연습문제 2.7 (2.7) 연습문제 213(212) 2.13 (2.12) 연습문제 2.17 (2.13) 풀이는 PPT 로작성하고, 문제도기술 순천향대학교컴퓨터공학과 43 실습과제 1. VirtualBox, 우분투 Linux 설치 보충자료참고 2. Linux 상에서파일을복사하는다음 2 개의 C 프로그램 ( 표준함수버전, 시스템호출버전 ) 을작성, 컴파일, 실행한후프로그램의내용분석설명 프로그램작성, 컴파일, 실행과정 프로그램실행예 프로그램실행결과 시스템호출버전에서사용된시스템호출설명 순천향대학교컴퓨터공학과 44
표준함수버전 (1) #include <unistd.h> #include <stdio.h> #define NAME_LENGTH 25 int main(void) { char in_file[name_length], out_file[name_length]; FILE *in in, *out; int c; printf("enter source file name: "); scanf("%s",in_file); printf("enter destination file name: "); scanf("%s",out_file); 순천향대학교컴퓨터공학과 45 표준함수버전 (2) if ( (in = fopen(in_file,"r")) == NULL) { fprintf(stderr,"cannot f( open %s for reading n",in_file); "i return -1; } if ( (out = fopen(out_file,"w")) == NULL) { fprintf(stderr,"cannot open %s for writing n",out_file); return -1; } while ( (c = getc(in))!= EOF) putc(c,out); fclose(in); fclose(out); 순천향대학교컴퓨터공학과 46 return 0; }
시스템호출버전 (1) #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #define NAME_LENGTH 25 int main(void){ char in_file[name_length], out_file[name_length]; int in, out; char c; printf("enter source file name: "); scanf("%s",in_file); printf("enter destination file name: "); scanf("%s",out_file); 순천향대학교컴퓨터공학과 47 시스템호출버전 (2) if ( (in = open(in_file,o_rdonly)) == -1) { fprintf(stderr,"cannot open %s for reading n",in_file); return -1; } if ( (out = open(out_file, O_CREAT O_WRONLY S_IRWXU)) == -1) { fprintf(stderr,"cannot open %s for writing n",out_file); return -1; } while (read(in,&c,1)!= 0) write(out,&c,1); close(in); close(out); return 0; } 순천향대학교컴퓨터공학과 48