제3장 - 성미영 교수님 홈페이지

Download Report

Transcript 제3장 - 성미영 교수님 홈페이지

운영체제 3장
과제 1 : Unix 이해
제출일: 3월 31일 까지
제출 방법: 지정 디렉토리(~mysung/osreport/자기학번)에 복사 및 출력
1. Unix의 Booting 과정에 대하여 이해한 내용을 가능한한 자세하게 정리
2. 사용자의 전자우편함을 살피다 새로운 전자우편이 도착하면
“ You have mail from 보낸 사람 이름”
을 출력하는 checkmail 프로그램 작성
•
- Unix 계정 만들기
- Unix 명령 익히기
- Vi 편집기 익히기
- C 프로그램 실행 방법 알기
도움말
-
•
우편함 파일이 커지면 새로운 전자우편 도착한 것
sscanf, lseek 이용
참고문헌
-
Unix 운영체제(The Unix Operating System), Kaare Christian, Susan Ritchter저, 석상기 역,
희중당, 1997.
Unix의 내부구조(The Design of the Unix Operating System), Maurice J. Bach저, 조유근 역
편, 홍릉과학출판사, 1991.
1
Unix 실습중심 UNIX 시스템 개론, 이동호 저, 정익사, 1993.
운영체제 3장
제3장 운영 체제 구조(Operating-System Structures)
• Services in 3 Views
- 1. Users : OS서비스
- 2. Programmers : OS의 인터페이스 (system call)
- 3. OS designers : component and interconnections
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)
2
운영체제 3장
3.1 시스템 구성(System Components)
•
[cont.]
주기억 장치 관리(Main-Memory Management)
-
하는 일
• 사용 가능한 부분 파악
• 적재할 프로세스 결정
• 필요공간의 할당과 회수
•
파일관리(File Management)
-
하는 일
•
•
•
•
•
•
파일의 생성과 삭제
디렉토리의 생성/삭제
파일과 디렉토리를 관리하기 위한 프리미티브(기본기능)제공
보조기억장치에 있는 파일의 사상(mapping)
파일 저장
입출력 시스템 관리(I/O System Management)
-
하는 일
• 임시저장(buffer-caching)시스템: buffering, caching, spooling
• 일반적인 장치구동기 인터페이스
• 특정 하드웨어 장치들을 위한 구동기
3
운영체제 3장
3.1 시스템 구성(System Components)
•
[cont.]
보조기억 장치 관리(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를 위한 network device driver를
4
운영체제 3장
3.1 시스템 구성(System Components)
•
•
[cont.]
보호 시스템(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 같은 강력한 명령 해석기
선호
5
운영체제 3장
3.2 운영체제 서비스(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
6
운영체제 3장
3.3 시스템 호출(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. 파라미터 블록 또는 테이블의 주소를 전달(p66 그림 3.1)
3. 스택으로 전달
•
p66 시스템 호출형태 5개 그룹
1. 프로세스 제어(process control)
2. 화일 관리(file manipulation)
3. 장치 관리(device manipulation)
4. 정보 유지 보수(information maintenance)
5. 통신(communication)
7
운영체제 3장
3.3 시스템 호출(System Calls)
•
[cont.]
프로세스와 작업 제어(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
프로세스 실행 비교(p69 그림 3.3, p70 그림 3.4)
• single-tasking system MS-DOS: 새 프로세스 생성 없음
-
TSR (Terminate and Stay Resident) 프로그램
• 제한적 동시수행: hooks an interrupt 후 TSR system call
• TSR system call: MS-DOS가 덮어쓰지 못하게 함
• multitasking system UNIX: fork 로 새 프로세스 생성 -> exec
-
fork, exec 시스템 호출 예제 참조
8
운영체제 3장
3.3 시스템 호출(System Calls)
•
화일 관리(File Manipulation)
-
•
생성(create)
삭제(delete)
열기(open), 읽기(read), 쓰기(write), 재위치(reposition), 닫기(close)
화일 속성 획득과 설정(get file attribute and set file attribute)
장치관리(Device Management)
-
•
[cont.]
요구(request)
열기/닫기(open/close)
읽기/쓰기(read/write)
재위치(reposition)
정보 유지관리(information maintenance)
-
time
date
사용가능 memory 크기 등
9
운영체제 3장
3.3 시스템 호출(System Calls)
•
[cont.]
통신(Communication) (p73 그림 3.1)
메시지 전송 모델(message-passing model )
-
•
•
•
•
get hostid, get processid
open connection, close connection
read message, write message
daemon(accept connection)
공유 기억장치 모델(shared-memory model)
-
• 다른 프로세스에 소유된 기억 장소에 대한 접근을 위한 것
• map memory
3.4 시스템 프로그램(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
10
운영체제 3장
3.4 시스템 프로그램(System Programs)
•
[cont.]
명령 해석기: 가장 중요한 시스템 프로그램
자체가 실행 코드 가짐: MS-DOS의 command.com
-
• 명령 첨가하면 재 컴파일
실행될 파일 인식 그것에 매개변수 전달: Unix
-
• (예) delete G: delete 실행 파일 적재 후 실행
• 작고 새 명령 첨가 쉬움
3.5 시스템 구조(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 promitives)
AIX : 2 kernel part
• System Call : programmer interface
• Shell : user interface
11
운영체제 3장
3.5 시스템 구조(System Structure)
•
[cont.]
계층적 접근(Layered Approach)
-
추세 : modular operating system (모듈화된 운영체제)
•
•
•
•
•
-
강력한 제어
내부 시스템 변경의 자유로움
정보 은폐(information hiding)
운영채재 걔층 = 추상 객체(abstract object) 구현: 자료의 캡슐화(encapsulation)
자신보다 하위 계층에 의해 제공되는 연산들만 사용
장점
• modularity
• debegging쉽고 verification쉽다.
-
단점
• 비효율적
• 처리시간 overhead(일련의 trap의 연속)
-
(예)
• THE(Technische Hogeschool Eindhoven) 계층 구조 (p79 그림3.9)
• Venus 계층 구조 (p80 그림3.10)
• OS/2 계층 구조 (p80 그림3.11)
12
운영체제 3장
3.6 가상 기계(Virtual Machines)
•
•
가상적(Virtual) : illusion(환상)
가상기계(Virtual machine) (p 그림 3.)
-
계층적 접근의 결과
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
13
운영체제 3장
3.6 가상 기계(Virtual Machines)
•
가상 기계 소프트웨어가 하는 일
-
•
기계 : 2 modes(user mode, monitor mode)
가상기계 소프트웨어 : monitor mode 에서 동작(진짜 OS)
가상기계 자체는 user mode에서만 동작(virtual user mode에서 system call->
virtual monitor mode)
다중 가상 기계의 다중 프로그래밍
-
•
실제 기계상에서 가상기계(multiple virtual machine)를 다중 프로그래밍
(multiprogramming)
기계의 정확한 복제가 쉬운 일이 아님
-
•
[cont.]
매우 느림(특권 명령들을 simulate)
가상기계의 장점
-
시스템 자원의 완벽한 보호
• (예) 서로 다른 화일 시스템: cf. UNIX multiuser: 1 화일 시스템
-
시스템 개발 시간의 제거
• system programmer의 가상기계에서 시스템 개발
(cf. 보통 시스템에서는 시스템 변경과 검사 동안 시스템 사용 불가)
•
가상기계의 단점
-
자원 공유가 어려움
1. minisidk를 공유(물리적 공유 디스크를 소프트웨어적으로 구현)
2. 가상기계 네트워크(물리적 통신망을 소프트웨어적으로 구현)
14
운영체제 3장
3.6 가상 기계(Virtual Machines)
•
[cont.]
돌아온 VM
-
VM이 come back into fashion
시스템 조화성(compatibility) 문제의 해결책
(예) SunSparc에서 MS-DOS 프로그램 수행
• 본래의 프로세서 위에 가상 인텔 기계(Virtual Intel machine)를 생성(MS-DOS run)
• Intel 명령을 번역 -> SunSparc 명령어 세트로 변환
• Intel based system에서 수행되는 것 같은 환상 제공
•
자바(Java)
-
최근 나타난 가상 기계의 예
Object Oriented Language(Sun Microsystems)
• 자바 가상 기계(JVM; Java Virtual Machine)에서 수행되는 명령어인바이트코드
(bytecode) 출력 생성
• JVM 수행 가능한 플랫폼에서만 수행됨
-
JVM
• IBM-Compatible, Macintosh, Unix workstation and server, IBM minicomputer,
mainframe 등 여러 종류의 컴퓨터에서 실행 가능
• Web browser 안에 구현: Micosoft Explorer, Netscape communicator
• 작은 JavaOS 상에서 구현: no overhead
• Java로 구현된 단일 목적의 컴퓨터 장치: cellular phones
• 스택 기반 명령어 세트: arithmetic, logical, data movement, flow control instruction15
• Java compiler -> byte code -> JVM -> 기계어 명령 -> H/W
운영체제 3장
3.6 가상 기계(Virtual Machines)
-
[cont.]
VM 구현을 위한 Java의 장점
• 기계의 보안성(security)과 신뢰성(reliability)성 보장하기 위해 명령어 검사
• 객체 지향형
<일찍 일어나는 새>
당신이 새라면
아침에 일찍 일어나야 한다.
그래야 벌레를 잡아먹을 수 있을 테니까.
만일 당신이 새라면
아침에 일찍 일어나라.
하지만 만일
당신이 벌레라면
아주 늦게 일어나야 하겠지.
쉘 실버스타인
16
운영체제 3장
3.7 시스템 설계 및 구현(System Design and Implementation)
• 3.7.1 설계 목적(Design Goals)
- 최상위 결정
• 하드웨어와 시스템 형태(batch, time-shared, single-user,
multiuser, distributed, real-time, general-purpose)
- Requirements(요구사항)
• 사용자 목적(User goals)
- 배우기 쉽고(easy to learn), 사용하기 쉽고(easy to user),
신뢰할 수 있고(reliable), 안정적이고(safe), 빠를것(fast)
• 시스템 목적(System goals)
- 설계, 구현, 유지가 쉽고(easy to design, implement,
maintain), 유연하고(flexible), 신뢰할 수 있고(reliable),
요류없고(error-free), 효율적일 것(efficient)
17
운영체제 3장
3.7 시스템 설계 및 구현(System Design and Implementation)
• 3.7.2 기법과 정책(Mechanisms and Policies)
- 기법(Mechanisms) : how to do something
• Ex) CPU 보호 기법은 Timer로
- 정책(Policies) : What will be done.
• Ex) timer out 시간 결정
- 정책 결정 -> 기법 결정
• A general mechanism이면 정책 변경이 몇몇 매개변수 변경망 유도
• Ex) CPU-intensive VS I/O intensive 정책
- Microkernel-based OS(Mach) : 기법과 정책의 확실한 분리
- Apple Mac OS
• 기법과 정책의 혼합(interface가 Kernel안에 -> Same look& feel)
- 정책결정은 자원 할당과 스케줄링에 중요
18
운영체제 3장
3.7 시스템 설계 및 구현(System Design and Implementation)
• 3.7.3 구현(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로
-
장점
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
19
운영체제 3장
3.7 시스템 설계 및 구현(System Design and Implementation)
• 3.7.3 구현(Implementation) [cont.]
단점
1. Reduce speed :속도가 느리고
2. Increase storage : 기억장치가 많이 필요
그러나 좋은 Compiler로 보완
성능의 관건 : 자료구조와 알고리즘 (code가 assembly로 되었거나 고급
언어로 되었거나)
- 성능향상
-
• critical routines(memory manager, CPU scheduler)의 병목(bottlenecks) ->
assembly어로 대체
• 3.8 시스템 생성(System Generation)
- OS는 다양한 기종에 수행되어야 하므로 특정 컴퓨터 site를 위해 시스
템을 configure/generate(구성/조립/생성)
20
운영체제 3장
3.7 시스템 설계 및 구현(System Design and Implementation)
• 3.8 시스템 생성(System Generation) [cont.]
- 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의 새 버전 만족(Tailor)
- 다른 방법(컴파일X)라이브러리 방식
• 1. Precompiled library : 미리 준비된 라이브러리에서 선택
• Ex) device driver선택 (재 컴파일 없으나 일반성 가짐)
• 2. Table driver : 모든 코드는 시스템의 일부, 테이블의 값대로 실행시간에 선
택
- OS이 생성되면(generation) -> hardware가 booting하여 이용
• (bootstrap loader ->) bootstrap program
• MS-DOS : bootstrap loader -> bootstrap program(보조기억 장치안에)
21