2 장. 운영체제시스템구조
목표 운영체제가사용자, 프로세스및다른시스템에게제공하는서비스를기술 운영체제를구성하는여러방법들을논의 운영체제설치 (install) 방법, 맞춤화 (customize) 과정, 부팅과정을설명 2
운영체제에대한관점 운영체제가제공하는서비스 사용자 / 프로그래머입장 운영체제가제공하는인터페이스 프로그래머입장 시스템호출 (system call) 운영체제구성요소 (components) 와그들의상호연결 설계자입장 3
2.1 운영체제서비스 운영체제서비스관점 프로그램실행환경제공 4
사용자를위한서비스 사용자인터페이스 (UI) 거의모든운영체제가제공 명령어라인인터페이스 (CLI) 그래픽사용자인터페이스 (GUI) 배치 (batch) 인터페이스 shell 프로그램 프로그램실행 (execution) 프로그램을메모리에적재 (load) 후실행 (run) 시킴 실행되는프로그램을종료시킴 정상적종료 비정상적종료 오류등요인 입출력연산 입출력동작의효율과보호를위해서 사용자가직접입출력을수행할수없게함 대신에운영체제가입출력수행서비스를제공 5
사용자를위한서비스 ( 계속 ) 파일시스템연산 파일 / 디렉토리 read/write/create/delete 파일검색, 파일목록및정보출력 파일 / 디렉토리접근권한관리등 통신 프로세스간에정보를교환 동일컴퓨터내의프로세스간 컴퓨터네트워크로연결된다른컴퓨터의프로세스간 정보교환방법 공유메모리 (shared memory) 경유 동일컴퓨터 메시지전송 (message passing) 방법 동일 / 다른컴퓨터 6
사용자를위한서비스 ( 계속 ) 오류탐지 오류발생요인 하드웨어 / 내부인터럽트로 CPU 에게알림 CPU 메모리 메모리패리티오류등 입출력장치 네트워크접속실패, 프린터종이부족, 저장장치패리티오류등 사용자프로그램 overflow, 허가받지않은위치의메모리접근등 오류가발생할때, 운영체제는올바르고일관성있는계산을보장하기위해각오류에대해서적절한조치를취해야함. 시스템정지 (halt) 오류발생프로세스종료 (terminate) 오류코드반환 오류원인제거후재실행 디버깅툴제공 7
시스템을위한서비스 - 효율적동작 자원할당 (resource allocation) 자원 (resource) 물리적자원 - CPU cycle, main memory, 저장장치, 네트워크, 여러입출력장치등 추상적자원 파일 (file), 페이지 (page), 프로세스 (task), 프로토콜등운영체제가관리를위해추상화한객체 운영체제는다수의사용자 / 다수의프로세스에게자원을할당 일부자원은특별한할당방법을사용 나머지자원은일반적인 request/release 방법을사용 회계 (accounting) 컴퓨터자원에대한사용기록 어떤자원을얼마나사용했는가 사용통계또는사용요금청구에사용됨 8
시스템을위한서비스 ( 계속 ) 보호 (protection) 와보안 (security) 보호 (protection) 한프로세스가다른프로세스나운영체제의동작을방해하지않도록시스템자원에대한접근을통제하는것 보안 (security) 외부로부터의부적합한시스템접근을통제하는것 사용자인증 외부와연결되는입출력장치의부적합접근시도방지 침입탐지를위한모든접속기록 9
2.2 사용자운영체제인터페이스 명령어해석기 (command interpreter) command line interface(cli) command를입력받아서수행 ( 예 ) UNIX 셸, MS-DOS 구현방법 커널에포함되어구현, 또는 작업이시작되거나, 로그온할때에 ( 대화형 ) 수행되는특수한 ( 시스템 ) 프로그램으로구현 여러명령어해석기를제공하는시스템에서는선택하여사용가능 UNIX/Linux: Bourne shell (sh), C shell (csh), bash, ksh 명령어처리의구현 내장명령어 (built-in command) 명령어해석기에명령어처리코드를포함 유틸리티명령어 (utility) 명령어가명령어실행파일을나타내며, 명령어해석기는단순히이파일을적재하여실행 새로운명령어를쉽게추가가능 ( 셸의수정불필요 ) 10
( 예 ) Bourne Shell 명령어해석기 11
그래픽사용자인터페이스 (GUI) 그래픽사용자인터페이스 사용자친화적인터페이스 window, icon, menu, pointing device(mouse) WIMP 1970년대초 Xerox PARC 연구소에서발명 1973년 Xerox Alto 컴퓨터에서처음사용 1980년대 Apple Macintosh 개인용컴퓨터에사용 GUI가급속히보급되는계기가됨 Mac OS X 의 Aqua GUI shell도제공 Windows 초창기의 Windows는 MS-DOS 기반, 현재 Windows 10 UNIX 운영체제 GUI도제공. 필요시 GUI 사용가능 X-windows 기반 GUI 원격 GUI 가능 CDE(common desktop environment), KDE, GNOME desktop 모바일시스템 - 터치스크린인터페이스 12
Mac OS X GUI 13
UNIX/Linux KDE GUI 14
사용자인터페이스의선택 명령어라인인터페이스 (CLI) 시스템관리자, 파워유저가많이사용 작업에빨리접근, 효율적 어떤시스템은 GUI 를통해일부기능만사용가능하며나머지작업은 CLI 를사용해야함 프로그램기능이있어서반복적작업에효과적 셸스크립트 그래픽사용자인터페이스 (GUI) 사용하기쉬움 예전의 Mac OS 는 CLI 를제공하지않았으나, 현재의 UNIX 커널을기반으로만든 Mac OS X 는 CLI 도제공함 사용자인터페이스는 OS 의직접적인기능이아님 사용자인터페이스는사용자마다다를수도있음 대개, 운영체제시스템구조에서제외됨 15
2.3 시스템호출 (system call) 시스템호출 (system call) 운영체제가제공하는서비스에대한프로그래밍인터페이스제공 운영체제프로그래밍인터페이스 대개 C/C++ 와같은고급언어루틴형태로제공 프로그래머가시스템호출에대한 C/C++ 함수를호출하여사용 저수준의작업은시스템호출명령어를포함하는어셈블리프로그램으로작성 MS-DOS는직접시스템호출명령어를사용하여운영체제서비스를요청하도록되어있음 어셈블리프로그램 시스템호출명령어 = 소프트웨어인터럽트명령어 80x86: INT 80 interrupt IBM System/390: SVC n supervisor call 680x0: trap 4 trap ARM: SWI n software interrupt 오퍼랜드숫자는소프트웨어인터럽트의종류를구분하는데사용 16
응용프로그래밍인터페이스 (API) API (Application Programming Interface) 응용프로그래머에서사용가능한함수의집합을지정 API 함수에서는응용프로그래머를대신하여필요한실제시스템호출들을호출함. 시스템호출보다 API 를더많이사용하는이유 프로그램이식성 (portability) 사용하기쉬움 대표적인 API Windows API POSIX API UNIX, Linux, Mac OS X Java API Java virtual machine (JVM) 17
시스템호출사용예 ( 예 ) copy 동작에서사용하는시스템호출 18
표준 API 의예 Win32 - ReadFile() function UNIX/Linux read() function 19
시스템호출의구현 각시스템호출에번호가부여됨 OS 커널에서시스템호출처리루틴의주소테이블의인덱스로이번호를사용함 (ex) mov ah, 5 int 80 시스템호출인터페이스 매개변수전달받음 관련된시스템호출을호출 status 와반환값반환 운영체제인터페이스의상세내용은 API 에의해서숨겨짐 대개 run-time support library 에의해서관리됨 사용자는 API 매개변수규칙을준수하고, 시스템호출의결과로 OS 가수행하는작업에대해서이해하면됨 20
시스템호출의 OS 내에서의처리 mov ah, 5 int 80 ret index=5 address of corresponding function iret 21
표준 C 라이브러리함수동작예 ( 예 ) C 프로그램이 printf() 함수를호출하면, printf() 함수에서 write() 시스템호출을호출함 write() 22
시스템호출매개변수전달 시스템호출매개변수전달방법 레지스터 (register) 레지스터에매개변수저장, 개수제한 매개변수가많으면블록을사용하여추가전달 블록 (block) 메모리블록에매개변수를저장하고, 블록의주소를레지스터를통해전달 스택 (stack) 응용프로그램이시스템스택에 push, 운영체제에서 pop ( 실제로는 pop 없이스택을접근하여매개변수를참조함 ) register block stack parameter Register addr parameters Register Table in Memory program OS push pop stack SP 23
2.4 시스템호출의유형 시스템호출의중요범주 프로세스제어 파일관리 장치 (device) 관리 정보유지보수 통신및보호 프로세스제어 프로세스생성 / 적재 / 실행 / 종료, 중지 프로세스속성읽기 / 설정, 메모리할당 / 반납 (free) 시간대기, 사건대기, 사건알림 파일관리 파일생성, 삭제, 열기, 닫기, 읽기, 쓰기, 위치변경 파일속성읽기 / 설정 24
시스템호출유형 ( 계속 ) 장치관리 장치요구 (request)/ 반납 (release)/ 읽기 / 쓰기 / 위치변경 장치속성읽기 / 설정, 논리적부착 (attach)/ 분리 (detach) 정보유지보수 시간, 날짜, 시스템데이터, 프로세스 / 파일 / 장치속성 통신 통신연결생성 / 삭제 메시지송신, 수신, 상태정보전달 원격장치부착 (attach)/ 분리 (detach) 보호 역사적으로다중사용자 / 다중프로그램환경에서고려됨 네트워크와인터넷연결로모든컴퓨터시스템에서보호를고려해야함 자원접근제어 허가권설정 25
Windows 와 Unix 시스템호출예 26
POSIX 시스템호출 (API) Portable OS Interface (POSIX) 표준 UNIX System V 에기반 27
28
MS-DOS 실행 : single-tasking 시스템 At System Start-up Running a Program TSR program (cf) TSR(terminate and stay resident) MS-DOS system call hooks an interrupt 29
UNIX 실행 : multi-tasking 시스템 Multitasking 시스템 셸이다른프로그램이실행되는동안계속하여수행가능 후면처리 (background processing) 여러개의작업을동시에처리가능 fork() 와 exec() 시스템호출사용하여구현 30
2.5 시스템프로그램 시스템프로그램 프로그램개발과실행을위해편리한환경을제공하는프로그램 파일관리 : copy, delete, rename... 상태정보 : date, available memory/disk space, # of users 파일변경 : text editor, transformation of the text 프로그래밍언어지원 : compiler, assembler, interpreter 프로그램적재 / 실행 : loader, linkage editor, debugger 통신 : telnet, mail, ftp, 서비스, deamon, 서브시스템 : 시스템이정지할때까지특정서비스제공을위하여백그라운드로계속해서실행되는프로세스 네트워크 deamon 응용프로그램 일반적인문제해결이나연산처리에유용한프로그램 운영체제에대한대부분의사용자의관점은 system call 이라기보다는시스템프로그램과응용프로그램에의해정의됨 31
2.6 운영체제의설계와구현 설계목표 (goal) 와명세 (specification) 정의 하드웨어와시스템유형 (batch, time shared, single user, multi-user, distributed, real time, general purpose ) 의선택에영향받음 요구조건지정 ( 설계목표 ) 사용자목표 사용하기쉽고, 배우기쉽고, 신뢰성있고, 안전하고, 빠름 시스템목표 설계, 구현, 유지보수가쉽고, 유연성, 신뢰성, 무오류, 효율적이어야함. 요구조건은애매하고다양하게해석될수있으며, 일반적으로합의된사항은없음 운영체제의설계및구현 모든요구조건을해결하는완전한해결책은없지만, 성공이입증된접근법은있다. 소프트웨어공학에서개발된일반적인원칙을사용 내부구조는운영체제마다다를수있다. 32
기법 (Mechanism) 과정책 (Policy) Mechanism 과 Policy 둘을분리하는것이중요한원칙임 Mechanism: 어떻게할것인가? (How) Policy: 무엇을할것인가? (What) ( 예 ) CPU 보호방법 mechanism: CPU 보호를위하여타이머구조를사용 바뀌지않는것 policy: 특정사용자를위한타이머양을결정하는것 변경가능 Mechanism 과 Policy 의분리는 flexibility 를위해서중요함 policy 는시간이지남에따라서변경될수있음. mechanism 은정책변경에민감하지않는일반적인것이바람직함 시스템매개변수의재정의에의해서 policy 변경이이루어지도록함 UNIX 초기 : 시분할스케줄러 Solaris 최근버전 : loadable table 에의해제어되는스케줄러 microkernel 기반 OS mechanism 과 policy 의극단적분리 Mac OS 와 Windows mechanism 과 policy 를함께작성됨 interface 가 kernel 과 system library 에포함 global look and feel 33
시스템구현 운영체제의구현 초기의운영체제는어셈블리언어로작성됨 현재의대부분의운영체제는고급언어로작성됨 MULTICS: PL/1; UNIX, Linux, Windows: C 커널의저수준코드는여전히어셈블리언어로작성됨 장치드라이버, 레지스터상태저장및복구등 system programs의구현 C, C++, interpreted languages (Perl, Python, shell script...) 로작성됨 34
고급언어구현의장단점 장점 코드를빠르게작성 간결한코드 이해와디버깅이쉬움 이식 (port) 하기훨씬쉬움 주장되는단점 : 속도가느려짐, 소요메모리가증가됨 현재는문제가되지않음 문제가안되는이유 현대의최적화컴파일러는일반적인어셈블리언어프로그래머보다훨씬우수한코드를생성할수있다. OS 의주된성능향상은더좋은자료구조와알고리즘에의한것이다. 35
2.7 운영체제구조 Simple structure monolithic 구조 많은기능들이하나의계층으로구현됨 많은상용운영체제가잘정의된구조를갖지않음 small, simple, limited system으로시작되어, 원래범위이상으로발전함 Layered structure 운영체제가여러계층으로구분됨 각계층은하위계층위에구축됨 Microkernel 필수적이아닌구성요소를커널에서모두제거하고시스템및사용자수준프로그램으로구현함 smaller kernel 36
Simple Structure MS-DOS MS-DOS 최소공간에최대기능을제공하도록작성 모듈들로구분되지않음 인터페이스와 functionality 계층이잘분리되어있지않음 운영체제를거치지않고 BIOS 를사용하여입출력가능 기능이제한적인 8088 CPU 사용 no dual mode no HW protection 악의적이거나오류가있는프로그램에취약함 37
Simple Structure - UNIX UNIX 초기에하드웨어기능에제한이있었으며제한된구조를가짐 UNIX 의구성 Kernel 과 System program 으로구성 Kernel 은여러인터페이스와장치드라이버로분리되어확장됨 UNIX Kernel the system-call interface 아래와 physical hardware 위의모든부분 한계층에서많은기능을제공 the file system, CPU scheduling, memory management, and other operating-system functions monolithic 구조의장단점 장점 성능 ( 커널내부통신오버헤드가거의없음 ) 단점 구현과유지보수가어려움 38
UNIX System Structure system program 39
Layered Approach Layered 구조 최하위계층 (layer 0) = 하드웨어 최상위계층 (layer N) = 사용자인터페이스 Modularity 각계층은하위계층에서제공하는함수와서비스만사용함 40
Layered Approach 의장단점 장점 구현과디버깅이간단함 하위계층의연산이어떻게 (how) 구현되었는지알필요가없음 하위계층연산이무슨 (what) 동작을하는지만알면됨 단점 각계층을적절히정의하는것이어렵고, 명확하지않을수있음 덜효율적 계층별시스템호출오버헤드 이러한제한점으로최근에이방법에대한부정적평가 많은기능을가진적은수의계층으로설계 41
Microkernels Microkernel 커널의필수적이아닌많은부분을사용자공간으로이동 small kernel Microkernel의기본기능 사용자모듈과사용자공간에서수행하는서비스간에통신기능제공 message passing 사용 42
Microkernel 의장단점 Microkernel 개발이유 UNIX 커널이확장되면서관리하기가어려워짐 Carnegie Mellon University (CMU) 에서이를해결하기위해 microkernel 방식의 Mach 커널개발 장점 : 단점 Tru64 UNIX, MacOS X (Darwin kernel), QNX 에서사용 확장이용이 새로운서비스는사용자공간에추가 운영체제이식이용이 작은커널이므로변경부분이적음 높은신뢰성과보안성 커널모드에서수행되는코드가적고 대부분의서비스는사용자프로세스로실행됨 서비스가잘못되더라도다른부분에영향이없음 시스템함수오버헤드 사용자공간과커널공간간의통신오버헤드 43
Modules kernel 구성 a set of core components + loadable kernel modules loadable kernel module 부팅또는실행시간동안동적으로적재되어커널기능을확장함 대부분의현대운영체제 (Solaris, Linux 포함 ) 에서구현됨 모듈인터페이스의특징 각 core component가분리됨 알려진인터페이스를통하여다른 component/module과통신을함 layered 구조와유사하지만더유연성이있음 잘정의되고보호된인터페이스를가지는점에서 layered 구조와유사 모듈은임의의다른모듈을호출할수있으므로유연성이있음 microkernel approach과유사하지만더효율적 핵심모듈은핵심기능만가지고있는점에서 microkernel 구조와유사 모듈이 message passing을사용하지않으므로더효율적 44
예 : Solaris loadable modules 7 loadable kernel modules 45
Hybrid Systems Linux 46
Windows 47
Mac OS X 48
ios Android 49
2.8 운영체제디버깅 디버깅 (debugging) 오류 (bug 라고도함 ) 를발견하고수정하는것 장애 (Failure) 분석 log file 프로세스가실패하면오류정보를기록 core dump 파일 오류발생프로세스의메모리내용을저장 초창기의컴퓨터에서메모리를 core 라고부름 crash dump file 커널장애시에커널메모리내용을저장 성능조정 커널장애를충돌 (crash) 라고부름 병목지점 (bottleneck) 을제거하여시스템성능을최적화가능 OS 의 bottleneck 을발견하기위하여시스템성능측정및표시유틸리티를사용해야함 (ex) top (unix), windows task manager DTrace 사용자프로세스와커널에동적으로탐색점을추가할수있는유틸리티 Solaris, FreeBSD, Mac OS X 에서제공됨 50
Solaris 10 dtrace System Call 을추적 51
2.9 운영체제생성 운영체제구성 (Configuration) 운영체제는다양한구성을가진모든종류의시스템에서실행되도록설계되었다. 운영체제는특정컴퓨터를위해구성 (configuration) 되어야함 운영체제생성 (SYSGEN) 운영체제배포 디스크, CD-ROM, DVD-ROM, 또는 ISO image 형태 하드웨어구성정보 (CPU type, memory size, devices, OS options) 파일을읽거나, 직접하드웨어를검사하여얻음 운영체제 3 가지생성방법 소스코드수정후완전히다시컴파일 구성테이블생성 미리컴파일된라이브러리에서필요한모듈선택후링크 코드가재컴파일되지않음. 완전한테이블방식 모듈선택이실행시에일어남 52
2.10 시스템부트 Bootstrapping(booting) 커널을적재하여컴퓨터를시작하는절차 Bootstrap loader 커널을찾아서메모리에적재하고수행을시작하는일을하는 ROM에저장된코드 대개시스템을진단 (diagnostic) 하는작업을수행하고, 시스템전체를초기화한후에운영체제를시작시킴 Firmware bootstrap 코드의변경이가능하도록 ROM 대신 EPROM 에저장함 하드웨어와소프트웨어의중간특성을가져서 firmware 라고부름 실행속도가 RAM 에서실행하는것보다느려서대개빠른수행을위해서 RAM 에복사하여실행함 운영체제는대개디스크에저장하지만, 일부시스템은 (smartphone, game console 등 ) 운영체제전체를 firmware(eprom/flash 메모리 ) 에저장함 53
시스템부트과정 다단계부팅과정 1. bootstrap loader : reset location in ROM 부트디스크의 boot block을메모리에적재후실행 2. simple boot code : single block at block 0 of a boot disk.(boot block) 나머지 bootstrap 프로그램 (full bootstrap 프로그램 ) 에대한디스크주소와길이만알고있는간단한코드 3. complex boot code (full bootstrap program) 파일시스템을탐색하여 OS 커널을찾고, 메모리에적재하여실행을시작 ( 예 ) GRUB (Grand Unified Bootloader) 4. operating system kernel 운영체제가커널을실행하고프로세스를시작함 UEFI (Unified Extensible Firmware Interface) BIOS 를대체할목적으로개발됨 파일시스템을지원하여 boot sector 에의존없이 OS 커널부팅가능 54