제 3 장운영체제구조 (Operating-System Structures) Services in 3 Views» Users : OS서비스» Programmers : OS의인터페이스 (system call)» OS designers : 구성요소와그들의상호연결 (component and interconnections) 2000 운영체제 3.1
시스템구성 (System Components) ~ 프로세스관리 (Process Management)» 프로세스 : 실행중인프로그램 (program in execution) 프로세스 : active entity : PC(program counter) 가있는프로그램 프로그램 : passive entity: 디스크상의파일내용» 하는일 프로세스의생성 / 삭제 (creation / deletion) 프로세스의중지 / 재수행 (suspension / resumption) 프로세스의동기화 (process synchronization) 프로세스의통신 (process communication) 교착상태방지와회복 (deadlock handling) 2000 운영체제 3.2
시스템구성 (System Components) ~ 주기억장치관리 (Main-Memory Management)» 하는일 사용가능한부분파악 적재할프로세스결정 필요공간의할당과회수 파일관리 (File Management)» 하는일 파일의생성과삭제 디렉토리의생성 / 삭제 파일과디렉토리를관리하기위한프리미티브 ( 기본기능 ) 제공 보조기억장치에있는파일의사상 (mapping) 파일저장 입출력시스템관리 (I/O System Management)» 하는일 임시저장 (buffer-caching) 시스템 : buffering, caching, spooling 일반적인장치구동기인터페이스 특정하드웨어장치들을위한구동기 2000 운영체제 3.3
시스템구성 (System Components) ~ 보조기억장치관리 (Secondary-Storage Management)» 하는일 비어있는공간관리 (free-space management) 저장장소할당 (storage allocation) 디스크스케줄링 (disk scheduling) 네트워킹 (Networking)» 분산시스템 : memory 와 cache 를공유하지않는프로세서들이통신네트워크로연결된시스템 (high-speed bus 나전화선을통해통신 )» 설계시고려사항 경로설정 (routing) 정책 접속 (connection) 정책 충돌 (contention) 문제 보안 (security) 문제» network access : file access 의확장 network interface 를위한 device driver 를이용 2000 운영체제 3.4
시스템구성 (System Components) 보호시스템 (Protection System)» 컴퓨터에의해정의된자원들에대한프로그램, 프로세스, 사용자들의사용권한접근을제어하는기법이필요» ( 예 ) base 와 limit requests for user s own address space 명령해석기시스템 (Command-Interpreter System)» command interpreter 다음명령문받아실행» control-card interpreter» command-line interpreter: command.com» shell user 과 OS 사이의 interface 로서다음명령을받아실행 ( 프로세스관리 ~ 보호 ) 위치» Kernel 안에 : 항상존재 (MS-DOS 의내부명령 )» 보조기억장치에 : 필요할때만실행 (MS-DOS 의외부명령, Unix)» 형태 user friendly GUI(Graphical User Interface): Macintosh 의 mouse-based, icon-based sophisticated user 는복잡하고배우기어려워도 Unix shells 같은강력한명령해석기선호 2000 운영체제 3.5
운영체제서비스 (Operating-System Services) 프로그램수행 (programs execution) 입출력작업 (I/O operation): file I/O, device I/O 파일시스템조작 : read/write/create/delete files 통신 (communication)» in the same system -> shared memory» in the different system -> message passing 오류탐지 (error detection): I/O, memory, network, program errors 자원할당 (resource allocation): multiusers, multiprogramming 회계 (accounting): usage statistics 보호 (protection)» 보호 (protection) : 정보보호, process 보호, 자원보호, 시스템보호» 보안 (security) : password OS services 제공방법 :» system calls : assembly language -> high-level language» system programming 2000 운영체제 3.6
시스템호출 (System Calls) ~ Process -> OS 의기능 system calls 고급언어로직접호출 : C, Bliss, BCPL, PL/360 ( 예 ) fd = open( file, 0); 0: r, 1: w, 3:rw nread = read(fd, buf, n); 시스템호출에필요한파라미터전달 1. 레지스터전달 2. 파라미터블록또는테이블의주소를전달 ( 그림 3.1) 3. 스택으로전달 시스템호출형태 5 개그룹 ( 그림 3.2) 1. 프로세스제어 (process control) 2. 파일관리 (file manipulation) 3. 장치관리 (device manipulation) 4. 정보유지보수 (information maintenance) 5. 통신 (communication) 2000 운영체제 3.7
Table 로매개변수전달 2000 운영체제 3.8
시스템호출 (System Calls) ~ 프로세스와작업제어 (Process and Job Control)» 작업제어를위한시스템호출들 프로세스제어 (load, execute) 프로세스생성 (create process or submit job) 프로세스속성획득과설정 (get process attribute and set process attribute) 프로세스종료 (terminate process) 시간대기 (wait time) 사건대기 (wait event) 사건신호 (signal event) 기억장치할당및해제 : malloc, free» 디버깅을위한시스템호출들 덤프 (dump) 추적 (trace)» 시간프로필 (time profile) : 특정부분수행시간의양 trace» 프로세스실행비교 ( 그림 3.3, 그림 3.4) single-tasking system MS-DOS: 새프로세스생성없음» TSR (Terminate and Stay Resident) 프로그램 제한적동시수행 : hooks an interrupt 후 TSR system call 과함께 exit: 자신의 subroutine 을 interrupt routine 으로설정하여 interrupt 를가로챔 TSR system call: MS-DOS 가덮어쓰지못하게함 multitasking system UNIX: fork 로새프로세스생성 -> exec» fork, exec 시스템호출예제참조 2000 운영체제 3.9
MS-DOS 실행 At System Start-up Running a Program 2000 운영체제 3.10
UNIX 의다중프로그램수행 2000 운영체제 3.11
시스템호출 (System Calls) ~ 화일관리 (File Manipulation)» 생성 (create)» 삭제 (delete)» 열기 (open), 읽기 (read), 쓰기 (write), 재위치 (reposition), 닫기 (close)» 화일속성획득과설정 (get file attribute and set file attribute) 장치관리 (Device Management)» 요구 (request)» 열기 / 닫기 (open/close)» 읽기 / 쓰기 (read/write)» 재위치 (reposition) 정보유지관리 (information maintenance)» time» date» 사용가능 memory 크기등 2000 운영체제 3.12
시스템호출 (System Calls) 통신 (Communication) ( 그림 3.5)» 메시지전송모델 (message-passing model ) get hostid, get processid open connection, close connection read message, write message daemon(accept connection)» 공유기억장치모델 (shared-memory model) 다른프로세스에소유된기억장소에대한접근을위한것 map memory ( 예 ) Unix의 shmget, shmat, shmdt, shmctl 등 2000 운영체제 3.13
통신모델 (Communication Models) Msg Passing Shared Memory 2000 운영체제 3.14
시스템프로그램 (System Programs) 시스템프로그램의종류» 파일조작 :create, delete, copy, rename, print, dump, list..» 상태정보 :date, time, memory...» 파일수정 :text editors» 프로그래밍언어지원 :compilers, assemblers, interpreters» 프로그램적재와수행 :absolute loader, relocatable loaders, linkage editors, overlay loader, debugging tool» 통신 :e-mail, remote login, telnet 명령해석기 : 가장중요한시스템프로그램» 자체가실행코드가짐 : MS-DOS 의 command.com 명령첨가하면재컴파일» 실행될파일인식그것에매개변수전달 : Unix ( 예 ) delete G: delete 실행파일적재후실행 작고새명령첨가쉬움 2000 운영체제 3.15
시스템구조 (System Structure) ~ 간단한구조 (Simple Structure)» MS-DOS 최소의메모리공간최대기능 덜모듈화 ROM BIOS 직접이용 : low level 기능직접접근으로전체시스템 crashes 가능 하드웨어보호없음 : dual mode 없음» 초기 UNIX 구성» Kernel: bulky» Systems programs Kernel 의분할과축소» Mach(microkernel: small set of necessary primitives)» AIX : 2 kernel part System Call : programmer interface Shell : user interface 2000 운영체제 3.16
MS-DOS 계층구조 2000 운영체제 3.17
UNIX 시스템구조 2000 운영체제 3.18
시스템구조 (System Structure) ~ 계층적접근 (Layered Approach)» modular operating system ( 모듈화된운영체제 ) 강력한제어 내부시스템변경의자유로움 정보은폐 (information hiding) 각운영체재계층 = 추상객체 (abstract object) 구현 : 자료가캡슐화 (encapsulation) 된것 자신보다하위계층에의해제공되는연산들만사용» 장점 modularity debugging 쉽고 verification 쉽다.» 단점 비효율적 처리시간 overhead( 일련의 trap 의연속 )» ( 예 ) THE(Technische Hogeschool Eindhoven) 계층구조 Venus 계층구조 OS/2 계층구조 ( 그림 3.9): multitasking, dual-mode, MS-DOS 보다더계층화됨 Windows NT: highly layered -> 성능향상위해사용자영역의계층들을 kernel 로흡수» 추세 : 모듈화그러나계층은적게 2000 운영체제 3.19
운영체제계층 2000 운영체제 3.20
OS/2 계층구조 2000 운영체제 3.21
시스템구조 (System Structure) Microkernel» Mach(CMU; Carnegie Mellon University) microkernel approach» essential -> kernel» nonessential -> system and user-level programs client 와 server 는 microkernel 에게 message passing 하여교신 새로운서비스추가되어도 kernel 수정거의없음 이식성 (portability), 보안성 (security), 신뢰성 (reliability) 좋음» Digital Unix(OSF/1) Unix interface Mach kernel 로구현됨 : Unix system call 들을사용자수준서비스에대한 message 들로연결» Apple MacOS X Server Mach kernel 기반» Windows NT layered approach 다양한응용 (Win32, OS/2, POSIX) 실행가능 user space 에서 server 및 client 프로그램실행 kernel 이 client 와 server 사이의 message passing 중재 2000 운영체제 3.22
Windows NT 클라이언트 / 서버구조 2000 운영체제 3.23
가상기계 (Virtual Machines) ~ 가상적 (Virtual) : illusion( 환상 ) 가상기계 (Virtual machine) ( 그림 3.11)» 계층적접근의결과» OS kernel 도 bare hardware 로간주» ( 예 ) IBM VM Operating System» 각프로세스에게실제컴퓨터의복사본을제공하여각프로세스들이자신의 프로세서에서자신의메모리를가지고수행되는것같은 ( 모든하드웨어를사용하는것같은 ) 환상 (illusion) 을만들어주는기계 CPU 스케줄링 가상기억장치 (virtual memory) 기법이용 가상기계의디스크시스템» 3 disk drives -> 7 VM 가상디스크 (virtual disk, ( 예 ) minidisks in IBM) 로해결 물리적디스크에서필요한만큼의 track할당 가상기계의운영체제» 각사용자기자신의 OS를수행» ( 예 ) IBM VM OS의 CMS : single user interactive system 2000 운영체제 3.24
시스템모델 Non-virtual Machine Virtual Machine 2000 운영체제 3.25
가상기계 (Virtual Machines) ~ 가상기계소프트웨어가하는일» 실제기계상에서가상기계 (multiple virtual machine) 를다중프로그래밍 (multiprogramming) 기계의정확한복제가쉬운일이아님» 기계 : 2 modes(user mode, monitor mode)» 가상기계소프트웨어 : monitor mode 에서동작 ( 진짜 OS)» 가상기계자체는 user mode 에서만동작 : virtual user mode 에서 system call -> virtual monitor mode 다중가상기계의다중프로그래밍» 매우느림 ( 특권명령들을 simulate) 가상기계의장점» 시스템자원의완벽한보호 ( 예 ) 서로다른화일시스템 : cf. UNIX multiuser: 1 화일시스템» 시스템개발시간의제거 : system programmer 의가상기계에서시스템개발 (Cf.) 보통시스템에서는시스템변경과검사동안시스템사용불가 가상기계의단점» 자원공유가어려움 해결 1. minisidk 를공유 ( 물리적공유디스크를소프트웨어적으로구현 ) 2. 가상기계네트워크 ( 물리적통신망을소프트웨어적으로구현 ) 2000 운영체제 3.26
가상기계 (Virtual Machines) 돌아온 VM» VMs are coming back into fashion» 시스템조화성 (compatibility) 문제의해결책» ( 예 ) SunSparc 에서 MS-DOS 프로그램수행 본래의프로세서위에가상인텔기계 (Virtual Intel machine) 를생성 (MS-DOS run) Intel 명령을번역 -> SunSparc 명령어세트로변환 Intel based system 에서수행되는것같은환상제공 ( 예 )» VMware http://www.vmware.com» VPC http://www.connectix.com/index_win.html 2000 운영체제 3.27
http://www.vmware.com 컴퓨터안의또하나의컴퓨터 Virtual Machine 을만들수있다. (VM 에다른 OS 도설치가가능하다.) VMware 의시스템요구사항 펜티엄 II 266MHz 또는이상의호환프로세서 ( 펜티엄클래식최소 ) 128MB 이상의 RAM (96MB RAM 최소 ) 256 이상의컬러디스플레이 랜카드 ( 가상네트워크를위한옵션 ) VMware 의버전 VMware 는 Windows NT/2000/XP/2003 버전과 Linux 용버전이있으며현재버전은 4.0 이다. 간편한설치와사용이쉽다. 설치는설치프로그램실행만으로끝. Configuration Wizard 를이용해서쉽게또다른 OS 를설치할수있다. 개별가상머신은호스트컴퓨터로부터독립적이므로, 가상머신에서실행되는연산들은호스트컴퓨터에전혀지장을주지않는다. 가상디스크를통해재파티션할필요없이새로운운영체제를추가시킬수있다. 2000 운영체제 3.28
Host Operating Systems» Microsoft Windows NT 4.0» Windows 2000» Windows XP» Windows Server 2003» Popular Linux distributions (complete list) Guest Operating Systems» Microsoft Windows Server 2003» Windows XP» Windows 2000» Windows NT 4.0» Windows Me» Windows 98» Windows 95» Windows 3.1» MS-DOS 6» Popular Linux distributions including Red Hat, SuSE, and Mandrake» FreeBSD» Novell NetWare 6.0 and 5.1 VMware 의동작 2000 운영체제 3.29
자바 (Java) ~ 자바기술 : 1995 이후나타나 Sun Microsystems 의기술 자바기술의 3 구성요소» Programming-language specification object oriented: class 들로구성 architecture-neutral: 자바가상기계 (JVM; Java Virtual Machine) 에서수행되는명령어인바이트코드출력 (bytecode output,.class) 생성 distributed: 원래 applets( 제한된자원에접근하며웹브라우저에서수행되는프로그램 ) 지원으로 internet programming 에서인기, networking 지원, distributed objets(rmi; Remote Method Invocation) 지원 multithreaded language: multiple flows of control secure: Chapter 19 memory managing: garbage collection» API(Application-Programming Interface) base API: graphics, I/O, utilities, networking(java.lang, java.awt, java.io, java.net) 지원 standard API: enterprise, commerce, security, media 지원» Virtual machine specification JVM: class loader 와 Java interpreter 로구성» class loader:.class files 적재» Java interpreter: interpreter 또는 JIT(just-in-time) compiler Java platform: JVM + Java API 2000 운영체제 3.30
자바 (Java) Java platform» 구현방법 on top of a host OS: Unix, Windows as part of a web browser: Micosoft Explorer, Netscape communicator in hardware: cellular phones» Java application 또는 applet 이실행 (main() method 실행 ) 될때마다 JVM 의 instance 생성» 구현방법은시스템마다다르나표준적인프로그래밍인터페이스 (architecture-neutral interface) 제공 Java 개발환경» compile-time environment: java source(java program 또는 applet) 를 bytecode 로변환» run-time environment: host computer 를위한 Java platform(jvm) Java compiler -> byte code -> JVM -> 기계어명령 -> H/W( 그림 3.15) 2000 운영체제 3.31
자바가상기계 (Java Virtual Machine) 2000 운영체제 3.32
자바플렛폼 (Java Platform) 2000 운영체제 3.33
플렛폼에무관한 Java.class 파일 2000 운영체제 3.34
자바개발환경 (Java development environment) 2000 운영체제 3.35
시스템설계및구현 (System Design and Implementation) ~ 설계목적 (Design Goals)» 최상위결정 하드웨어와시스템형태 (batch, time-shared, single-user, multiuser, distributed, real-time, general-purpose)» Requirements( 요구사항 ) 사용자목적 (User goals)» 배우기쉽고 (easy to learn),» 사용하기쉽고 (easy to use),» 신뢰할수있고 (reliable),» 안정적이고 (safe),» 빠를것 (fast) 시스템목적 (System goals)» 설계, 구현, 유지가쉽고 (easy to design, implement, maintain),» 유연하고 (flexible),» 신뢰할수있고 (reliable),» 오류없고 (error-free),» 효율적일것 (efficient) 2000 운영체제 3.36
시스템설계및구현 (System Design and Implementation) ~ 기법과정책 (Mechanisms and Policies)» 기법 (Mechanisms) : how to do something ( 예 ) CPU 보호기법은 Timer로» 정책 (Policies) : What will be done ( 예 ) timer out 시간결정» 정책결정 -> 기법결정 A general mechanism이면정책변경이몇몇매개변수변경만유도 ( 예 ) CPU-intensive VS I/O intensive 정책» Microkernel-based OS(Mach) 기법과정책의확실한분리» Apple Mac OS 기법과정책의혼합 (interface가 Kernel안에 -> Same look& feel)» 정책결정은자원할당과스케줄링에중요 2000 운영체제 3.37
시스템설계및구현 (System Design and Implementation) ~ 구현 (Implementation)» OS 를고급언어로구현하는추세 최초 : Burroughs computer 의 Master Control Program(MCP) : ALGOL 의변형 MULTICS(MIT) : PL/1 Prime Computer 의 Primos OS : FORTRAN 의일종 UNIX, OS/2, Windows/NT(C++ 약간 ) : C UNIX: CPU Scheduler 와 device deriver 부분의 6% 인 900 여줄만 Assembly 어로쓰임, 94% 는 C 로 JVM: Java» OS 를고급언어로구현하는장점 1. Faster writting : 코드작성이빠르고 2. Compact codes : 코드가간결하고 3. Easier to understand and debug : 이해와수정이쉽고 4. Easier to port : 쉽게이식됨» MS-DOS : 8088 assembly 어로쓰임 -> Intel 계열 CPU 에만» Unix : C 로쓰임 -> Intel 80X86, Motorola 680X0, SPARC, MIPS RX000» OS 를고급언어로구현하는단점 1. Reduce speed : 속도가느리고 2. Increase storage : 기억장치가많이필요 그러나좋은 Compiler 로보완 성능의관건 : 자료구조와알고리즘 (code 가 assembly 로되었거나고급언어로되었거나 ) 성능향상» critical routines(memory manager, CPU scheduler) 의병목 (bottlenecks) -> assembly 어로대체 2000 운영체제 3.38
시스템설계및구현 (System Design and Implementation) 시스템생성 (System Generation)» OS 는다양한기종에수행되어야하므로특정컴퓨터 site 를위해시스템을 configure/generate( 구성 / 조립 / 생성 )» SYSGEN( 특별프로그램 ) : System generation» 질문 What CPU is to be used? 사용 CPU 는? How much memory is available? 사용가능한기억장치는? What devices are avilable? 사용가능한주변장치는? What operating-system options are desired, or what parameter values are to be used? 운영체제안에선택사항과매개변수는?» 보통은컴파일해서 OS 의새버전생성 (Tailored)» 다른방법 1. Precompiled library : 미리준비된라이브러리에서선택 ( 예 ) device driver 선택 ( 재컴파일없고시스템생성빠르나너무일반적일수있음 ) 2. Table driven : 모든코드는항상시스템안에, 시스템테이블의값대로실행시간에선택 ( 시스템테이블생성만으로시스템생성 )» OS 가생성되면 (generation) -> hardware 가 booting 하여이용 ROM 의 bootstrap loader 또는 bootstrap program -> OS load MS-DOS : bootstrap loader -> bootstrap program( 보조기억장치안에 ) -> OS load 2000 운영체제 3.39