MADE FOR ALL

블로그 이미지

MSNU

운영체제 구조(Operating System Structures)

시리즈 2014. 3. 15. 00:12

3. 운영체제 구조(Operating System Structures)


▶ 운영체제의 설계: 시스템의 목표를 먼저 정의하고, 그에 적합한 정책이나 알고리즘을 선택함

  

▶ 운영체제에 대한 분석 및 관점

- 분석: 구성요소, 제공하는 서비스, 인터페이스(서비스 제공 방법), 구성요소의 상호 연결

- 관점: 프로그래머의 관점, 사용자의 관점


3.1 시스템 구성요소(System Components): “구성요소 측면”


3.1.1 프로세스 관리(Process Management) → 4-7장


▶ 프로세스

- 단순히 실행중인 프로그램이라 할 수 있음

ex) 일괄처리 작업, 시분할 사용자 프로그램, 프린터로 출력하는 스풀링과 같은 시스템 태스크 등

- 프로세스는 자신의 업무를 수행하기 위해 중앙처리장치 시간, 기억장치, 파일, 입출력장치 등의 자원을 필요로 함

  → 생성될 때 제공, 또는 실행되는 동안 제공: 처리가 끝난 후 자원 회수

- 프로그램 자체는 프로세스가 아님

1) 프로그램: 디스크에 저장된 파일의 내용과 같은 수동적인(passive) 단위

2) 프로세스: 다음 명령어를 수행하도록 지정하는 프로그램 계수기(program counter)를 가진 능동적인(active) 단위

* 일반적으로 하나의 프로그램은 수행될 때 다수의 프로세스를 생성함

- 프로세스는 시스템 내에서의 작업 단위

1) 운영체제 프로세스: 시스템 코드를 수행하는 프로세스

2) 사용자 프로세스: 사용자 코드를 수행하는 프로세스


▶ 프로세스 관리를 위한 운영체제의 업무

- 프로세스의 생성(creation)과 제거(deletion)

- 프로세스의 중지(suspension)와 재수행(resumption)

- 프로세스 동기화(synchronization) 기법 제공

- 프로세스 통신(communication) 기법 제공

- 교착상태 처리(deadlock handling) 기법 제공


3.1.2 주기억장치 관리(Main-Memory Management) → 8-9장


▶ 기억장치

- 주소를 가진 단어나 바이트의 대용량 배열

- 중앙처리장치와 입출력장치에 의해 신속한 접근이 가능한 자료의 저장 장소

1) 명령어 인출 주기(instruction fetch-cycle): 중앙처리장치

2) 자료 인출 주기(data fetch-cycle): 중앙처리장치, 입출력장치, DMA

- 중앙처리장치가 직접 주소를 지정할 수 있는 유일한 기억장치

- 프로그램이 수행되기 위해서는 절대 주소로 사상되어 기억장치에 적재되어야 함

- 중앙처리장치 이용률과 컴퓨터 응답 속도를 개선하기 위해서 기억장치에 여러 프로그램을 적재

→ 다양한 기억장치 관리 기법


▶ 기억장치 관리를 위한 운영체제의 업무

- 기억장치의 어느 부분이 어느 프로세스에 의해 사용되는지를 관리

- 사용 가능한 기억 공간에 적재할 프로세스의 결정

- 기억 공간의 할당 및 회수


3.1.3 파일 관리(File Management) → 10-11장


▶ 파일 관리 

- 파일 저장 매체: 

1) 종류: 자기 테이프, 자기 디스크, 광 디스크 등 다양

2) 제어장치: 디스크 구동기, 테이프 구동기

3) 속성: 속도, 용량, 자료 전송률, 접근 방식(순차 접근 방식, 임의 접근 방식)

- 저장 장치의 물리적 특성은 논리적인 저장 단위인 ‘파일’로 추상화됨 

- 파일: 파일 생성자에 의해 정의된 관련 정보의 집합체

1) 프로그램 ↔ 자료

2) 비정형 형태(텍스트 파일) ↔ 정형 형태

3) 비트, 바이트, 라인, 레코드의 연속된 단위

- 편리한 사용을 위해 디렉토리로 구성됨


▶ 파일 관리를 위한 운영체제의 업무

- 파일의 생성과 제거

- 디렉토리의 생성과 제거

- 파일과 디렉토리 관리를 위한 기본 명령(primitive)의 제공

- 보조기억장치로의 파일 사상

- 안정된 (비휘발성) 저장 매체에서의 백업


3.1.4 입출력 시스템 관리(I/O System Management) → 12장


▶ 입출력 시스템의 목적: 사용자에게 특정 하드웨어 장치의 특성을 숨기는 것

→ 장치 구동기만이 관계된 특정 장치의 특성을 알고 있음


▶ 입출력 시스템의 구성

- 기억장치 관리 구성요소: 버퍼링(buffering), 캐싱(caching), 스풀링(spooling) 등

- 일반적인 장치 구동기 인터페이스

- 특정 하드웨어 장치들을 위한 구동기




3.1.5 보조기억장치 관리(Secondary-Storage Management) → 13-14장


▶ 프로그램과 사용하는 자료는 실행되는 동안 주기억장치 내에 있어야 하는데, 일반적으로 주기억장치의 내용을 저장하기 위해 용량이 충분한 보조 기억 장치를 사용함

  → 온라인 저장 매체: ‘디스크’


▶ 디스크 관리를 위한 운영체제의 업무

- 빈 공간(free-space)의 관리

- 저장 장소 할당

- 디스크 스케줄링


3.1.6 네트워킹(Networking) → 15-18장


▶ 분산 시스템의 처리기들은 통신 네트워크(communication network)로 연결됨


▶ 통신 네트워크 설계: 경로 설정(routing), 접속 정책(connection strategies), 충돌(contention), 보안(security) 등 고려


▶ 분산 시스템에서의 공유 자원들에 대한 접근: 계산 속도 증가, 자료 이용률 증가, 신뢰성 강화

→ 네트워크 인터페이스의 장치 구동기에 의해 네트워크 접근을 파일 접근 형태로 일반화함


3.1.7 보호 시스템(Protection System) → 19-20장


▶ 보호(protection): 컴퓨터 시스템이 정의한 자원에 대해 프로세스 또는 사용자들의 접근을 제어하기 위한 기법


▶ 다수의 사용자와 다수의 병행 프로세스를 허용하는 시스템에서 프로세스들이 상호 보호되기 위해서는, 운영체제로부터 권한을 부여받은 후 각 자원을 사용하도록 해야 함

- 기억장치 주소 지정 하드웨어: 프로세스가 자신의 주소 영역에서만 실행하게 함

- 타이머: 프로세스가 중앙처리장치의 제어를 지속적으로 갖는 것을 방지함

- 입출력 특권 명령어: 주변 장치들의 보호를 위해 사용자 프로세스에 의한 직접 입출력을 방지함


3.1.8 명령 해석기 시스템(Command-Interpreter System)


▶ 명령 해석기: 사용자와 운영체제간의 인터페이스 역할을 하는 시스템 프로그램

  ex) 제어 카드 해석기, 명령 라인 해석기, 쉘(shell), 매킨토시 해석기 등

  → 다음 명령문을 가져와서 수행하는 기능


3.2 운영체제 서비스(Operating-System Services): “서비스 측면”


▶ 편리성 측면: 1)-5) ↔ 효율성 측면: 6)-8)


1) 프로그램 수행(program execution)

- 기억장치에 프로그램 적재 및 실행

- 정상적 혹은 비정상적 종료

2) 입출력 동작(I/O operation)

- 파일이나 입출력장치의 지정

- 특수 장치에 대한 특수 기능 제공

- 효율과 보호를 위해 운영체제에 의해 입출력이 수행됨

3) 파일 시스템 조작(file system manipulation)

- 파일의 읽기, 쓰기

- 파일의 생성, 삭제 등

4) 통신(communication)

- 프로세스간의 통신

- 구현: 공유기억장치, 메시지 전달

5) 오류 탐지(error detection)

* 운영체제는 모든 가능한 오류를 알고 적당한 조치를 취해야 함

- CPU, 기억장치: 정전, 기억장치 오류

- 입출력 장치: 테이프의 패리티 오류, 카드 판독기의 카드 체증, 프린터의 종이 없음

- 사용자 프로그램: 연산의 오버플로우, 부적당한 메모리 장소 접근 시도, CPU의 과다 시간 사용

6) 자원 할당(resource allocation)

- 중앙처리장치 사이클, 주기억장치, 파일저장장치: 특수한 할당 코드(allocation code)

- 입출력장치: 일반적인 요구/해제 코드(request/release code)

7) 회계(accounting)

- 사용자의 컴퓨터 자원 사용 내역: 사용료 청구, 사용 통계 파악

8) 보호(protection)

- 보호: 시스템 자원에 대한 접근 제어

- 보안: 외부로부터의 시스템 접근 제어


3.3 시스템 호출(System Calls): “프로그래머 인터페이스 측면”


▶ 시스템 호출: 프로세스와 운영체제간의 인터페이스 제공

→ 일반적으로 프로세스에서 다수의 시스템 호출이 발생하는데, 컴파일러와 수행시간 지원 패키지에 의해 프로그래머로부터 숨겨짐


▶ 예: 두 파일간의 데이터 복사용 프로그램

① 두 파일의 이름 지정

- 대화식 시스템: 사용자에게 문의

- 일괄 처리 시스템: 제어 카드에 기술

② 입력 파일 개방(open) ↔ <없거나 보호되는 경우> 콘솔에 메시지 인쇄 → 비정상적인 종료

 출력 파일 생성(create) ↔ <동일 이름의 파일이 있는 경우>

 - 프로그램의 중단

 - 현존하는 파일 삭제 → 새로운 파일 생성

 - 대화적 시스템의 경우 선택 가능(문의/응답)

③ 입력 파일 ↔ 출력 파일

  (read)  loop  (write)

- read 연산의 상태 정보: 파일의 끝 도달, 하드웨어 고장(parity error 등)

- write 연산의 상태 정보: 출력 장치의 오류

  (no more disk space, physical end of tape, printer out of paper 등)

④ 두 파일 폐쇄 → 콘솔에 메시지 작성 → 정상적 종료


▶ 운영체제에게 매개변수를 전달하는 방법

1) 매개변수를 직접 레지스터로 전달하는 방법

2) 매개변수를 기억장치의 블록이나 테이블에 저장하고 블록의 주소만을 레지스터로 전달하는 방법

[그림 3.1] 테이블에 의한 매개변수 전달

3) 매개변수를 스택에 푸시(push)하고 운영체제에 의해 팝(pop)되게 하는 방법

→ 블록 방법이나 스택 방법을 선호: 매개변수의 개수나 길이에 제한이 없기 때문


▶ 시스템 호출의 형태: [그림 3.2] 시스템 호출 형태

1) 프로세스 제어(process control)

- 종료(end), 취소(abort)

- 적재(load), 수행(execute)

- 프로세스 생성(create process), 프로세스 종료(terminate process)

- 프로세스 속성의 획득/설정(get/set process attributes)

- 시간 대기(wait for time)

- 사건 대기(wait event), 사건 신호(signal event)

- 기억장치 할당/해제(memory allocate/free)

2) 파일 조작(file manipulation)

- 파일 생성(create file), 파일 삭제(delete file)

- 개방(open), 폐쇄(close)

- 판독(read), 기록(write), 재배치(reposition)

- 파일 속성 획득/설정(get/set file attributes)

3) 장치 조작(device manipulation)

- 장치 요구(request devices), 장치 해제(release devices)

- 판독(read), 기록(write), 재배치(reposition)

- 장치 속성 획득/설정(get/set device attributes)

- 장치의 논리적 부착/제거(logically attach/detach devices)

4) 정보 유지보수(information maintenance)

- 시간과 일자의 설정/획득(set/get time or date)

- 시스템 자료의 설정/획득(set/get system data)

- 프로세스, 파일, 장치 속성의 설정/획득(set/set process, file, or device attributes),

5) 통신(communication)

  - 통신 연결의 생성/제거(create/delete communication connection)

  - 메시지의 송신/수신(send/receive message)

  - 상태 정보 전달(transfer status information)

  - 원격 장치의 부착/제거(attach/detach remote device)


3.3.1 프로세스와 작업 제어(Process and Job Control)


▶ 실행중인 프로그램은 정상적인 종료(end) 혹은 비정상적인 취소(abort)로 끝나야 함

정상 종료(end)  →  비정상 취소(abort)

 (0 수준)      ↑      (최대 수준)

                 ‘오류 매개 변수’


▶ 한 프로그램을 수행하고 있는 프로세스나 작업은 다른 프로그램을 적재(load)하고 실행(execute)할 수 있음

① 새로운 프로그램이 완료된 후 이전의 프로그램으로 제어를 되돌리려면, 그 프로그램의 기억 장치 영상을 보관해 놓아야 함

② 두 프로세스를 병행하여 계속 수행하려면, 다중 프로그래밍을 하기 위해 새로운 작업이나 프로세스를 생성시켜야 함(create process or submit job)

→ 새로운 작업이나 프로세스의 제어 필요

- 우선 순위, 실행 시간 등의 속성 결정(get/set process attribute)

- 잘못되거나 필요 없어진 프로세스의 종료(terminate process)

→ 기존 작업이 새로운 작업이나 프로세스의 실행 종료를 기다려야 하는 경우

- 지정된 시간만큼 기다리거나(wait for time)

- 특정 사건을 기다림(wait event): 다른 작업이나 프로세스가 신호를 보내야 함(signal event)


▶ 프로그램의 수정을 위한 시스템 호출

- 메모리 덤프(dump): 일괄 처리 시스템에서 어셈블리어나 기계어 프로그램을 수정하는데 유용

- 프로그램 추적(trace): 프로그램의 실행 순서대로 명령어를 나열

- 프로그램의 시간 프로필(time profile): 프로그램의 특정 위치나 일련의 위치에서 수행되는 시간을 나타냄 → 추적 설비(tracing facility) 또는 정규 타이머 인터럽트(regular timer interrupt) 필요


▶ 예: [그림 3.3] MS-DOS의 단일 프로그램 수행  ↔  [그림 3.4] UNIX의 다중 프로그램 수행


3.3.2 파일 조작(File Manipulation)


▶ 파일 조작용 시스템 호출

- 생성(create), 삭제(delete): 파일 이름과 약간의 속성 요구

- 개방(open)

- 판독(read), 기록(write)

- 재위치(reposition): ex) 파일 되감기(rewind), 파일의 끝으로 건너뛰기(skip)

- 폐쇄(close)

- 속성의 획득/설정(get/set file attribute): 파일 이름, 파일 형태, 보호 코드, 회계 정보 등


▶ 디렉토리에 대해서도 파일과 거의 동일한 작동 필요



3.3.3 장치 관리(Device Management)


▶ 파일을 추상적인 혹은 가상의 장치로 간주할 수 있음

→ 즉, 파일을 위한 대부분의 시스템 호출들이 장치들에 대해서도 필요함

- 요청(request): 장치의 독점 사용시 - 파일의 개방(open)과 유사

- 해제(release): 장치의 사용 종료시 - 파일의 폐쇄(close)와 유사

- 판독(read), 기록(write), 재위치(reposition)


▶ 파일과 장치의 유사성으로 주로 결합된 파일-장치 구조를 사용: ex) UNIX, MS-DOS

→ 입출력장치들을 특정 파일 이름으로 식별함


3.3.4 정보 유지관리(Information Maintenance)


▶ 대부분이 사용자 프로그램과 운영체제간의 정보 전달을 위한 시스템 호출임

- 현재 시간과 날짜(get/set time or date)

- 시스템 정보(get/set system data): 

  ex) 현재 사용자 수, 운영체제의 버전 번호, 여분의 메모리나 디스크 공간의 양

- 프로세스에 관한 정보(get/set process attribute)

3.3.5 통신(Communication)


▶ 메시지 전달 모델(message passing model)

- 호스트와 프로세스 이름을 해당 식별자로 변환하는 get hostid와 get processid

- 범용의 open, 또는 시스템의 특정 통신 모델에 의존하는 open connection

* 데몬(daemon): 연결 수신을 처리하는 프로세스(시스템 프로그램)

- open connection을 접수한 데몬은 송신 프로세스에게 wait for connection을 보낸 후,

- 수신 프로세스의 accept connection을 탐지

- 클라이언트와 서버(수신 데몬)간의 read/write message

- 범용의 close, 또는 시스템의 특정 통신 모델에 의존하는 close connection


▶ 공유 기억장치 모델(shared-memory model)

- 다른 프로세스가 소유한 기억장치 영역에 대한 접근을 얻기 위한 map memory

* 자료의 형태와 장소 관리, 두 프로세스에 의한 동시에 동일한 위치 접근 방지는 운영체제가 아닌 두 프로세스에 의해 제어됨


▶ 두 가지 통신 모델: [그림 3.5] 통신 모델

- 메시지 전달 방식: 충돌 미 발생, 구현이 쉬움

  → 소량의 자료 교환에 유용

- 공유 기억장치 모델: 최대 속도의 통신 제공, 보호와 동기화에 문제 발생

  → 대량의 자료 교환에 유용



3.4 시스템 프로그램(System Programs): “사용자 인터페이스 측면”


▶ 정의: 공통적인 문제를 해결하고 프로그램 개발 및 수행을 위한 OS가 제공하는 편리한 프로그램

→ 단순히 시스템 호출의 인터페이스일 수도 있고 복잡할 수도 있음

(1) 파일 조작(file manipulation): 파일 및 디렉토리의 생성(create), 삭제(delete), 복사(copy), 개명(rename), 프린트(print), 덤프(dump), 리스트(list) 등

(2) 상태 정보(status information): 날짜, 시간, 여분의 메모리나 디스크 공간, 사용자 수 등

→ 단말기, 출력 장치, 파일 등으로 출력

(3) 파일 수정(file modification)

- 문장 편집기(text editors): 디스크나 테이프의 파일을 생성, 수정

(4) 프로그램 언어 지원(programming language support)

- 일반적인 프로그래밍 언어의 컴파일러, 어셈블러, 인터프리터 등

  ex) FORTRAN, COBOL, PASCAL, BASIC, C, LISP 등

→ 최근 독립적으로 분리 판매

(5) 프로그램 적재 및 수행(program loading and execution)

- 절대 적재기(absolute loader), 상대 적재기(relocatable loader), 오버레이 적재기(overlay loader)

- 연결 편집기(linkage editor), 오류 수정기(debugger) 등

(6) 통신(communications): 화면으로의 메시지 전송, 전자 우편, 파일 전송, 원격 로그인 등


▶ 시스템 도구(system utility) 또는 응용 프로그램(application program)

→ 컴파일러-컴파일러, 문서 형성자(text formatters), 도형과 통계분석 패키지, 데이터베이스 시스템, 스프레드시트, 워드프로세서, 웹브라우저 등


▶ 명령어 해석기(command interpreter): 사용자가 명시한 명령을 가져와서 수행하는 시스템 프로그램

(구현 방법)

1) 명령어 해석기 자체가 명령을 실행할 코드를 갖고 있는 방법

- 명령어 해석기가 그 명령에 해당하는 부분으로 점프하여 파라미터를 설정하고 시스템 호출을 하게 함

- 명령의 개수가 명령어 해석기의 크기를 결정

2) 특정 시스템 프로그램으로 모든 명령을 구현하는 방법

- 모든 명령이 그 이름의 파일로 구현되어 있어서, 명령어 해석기는 단지 그 명령에 해당하는 파일을 메모리에 적재하고 매개 변수를 전달함

  ex) delete G: delete라는 명령 파일을 찾아서 기억장치에 적재하고 매개변수 G와 함께 수행

- 명령어 해석기의 크기를 작게 할 수 있고, 새로운 명령은 파일로서 추가되기 때문에 명령어 해석기 자체가 변경될 필요가 없음

- 문제점:

① 명령을 수행하는 코드는 별도의 시스템 프로그램이므로, 운영체제가 파라미터를 명령어 해석기에서 시스템 프로그램으로 전달하는 방법을 제공해야 함

② 매개 변수의 해석을 시스템 프로그램의 프로그래머에게 일임하기 때문에 일관성 없이 해석될 수 있음



3.5 시스템 구조(System Structure): “구성요소의 상호연결 측면”


3.5.1 간단한 구조


▶ MS-DOS: [그림 3.6] MS-DOS의 계층 구조

- 모듈들이 제대로 분할되어 있지 않음: 응용 프로그램이 기본적으로 하드웨어에 접근할 수 있음

  → 하드웨어 보호나 이중 모드를 지원하지 않는 Intel 8088을 고려한 시스템이기 때문

ex) 응용 프로그램은 화면 장치나 디스크 구동 장치에 직접 기록하기 위한 기본적인 입출력 루틴에 접근할 수 있음


▶ 초기 UNIX: [그림 3.7] UNIX 시스템 구조

- 구성: 커널과 시스템 프로그램의 두 부분

- 커널: 시스템 호출 인터페이스 아래 부분과 물리적 하드웨어 위 부분

  → 수많은 기능들이 하나의 계층으로 결합되어 있음

- UNIX의 발전 방향: 커널의 분할 및 축소

  ex) AIX: IBM 버전 - 커널이 두 영역으로 분리

      Mach: 카네기-멜론대학 버전 - 커널을 소규모의 핵심 기능으로 축소


3.5.2 계층적 접근(Layered Approach)


▶ 운영체제를 다수의 계층으로 구분하여 모듈화 하는 방법: [그림 3.8] 운영체제 계층

- 최하위 계층(layer 0): 하드웨어 ↔ 최상위 계층(layer N): 사용자 인터페이스

- 계층의 구현: 

① 추상적인 객체: 자료의 캡슐화와 그러한 자료를 처리할 수 있는 연산으로 구성

② 모듈화(modularity): 각 계층은 자신 및 하위 계층에서 제공하는 함수(연산)들만을 사용

→ 시스템의 설계나 구현이 간단해짐

- 예:

① THE(Technische Hogeschool Eindhoven) 운영체제: [그림 3.9] THE의 계층 구조

  → 6 계층으로 구성, 가상기억장치 사용

② Venus 시스템: [그림 3.10] Venus 운영체제의 계층 구조

  → 7 계층으로 구성, 하위계층(0-4)은 마이크로코드로 작성하여 수행 속도 향상


▶ 계층적 설계의 문제점

1) 계층 정의의 어려움: 각 계층은 자신의 하위에 있는 계층들만을 사용하도록 제한되기 때문에 신중하게 설계되어야 함

2) 낮은 효율성: 하드웨어 계층에 도달하기까지 각 계층마다 매개변수의 수정이나 전달로 인한 시스템 호출의 오버헤드가 추가되기 때문에 비계층적 시스템보다 오래 걸릴 수 있음

→ 모듈화의 장점을 유지하면서 계층화의 단점을 줄이기 위해, 적은 계층으로 설계하는 방안 등장

ex) OS/2: [그림 3.11] OS/2 계층 구조

- MS-DOS의 후손

- 사용자가 하위 계층 기능으로의 직접 접근하는 것을 허용하지 않음


3.6 가상 기계(Virtual Machine)


▶ 가상 기계: 각 프로세스에게 기본 컴퓨터의 가상적인 사본 제공 - ex) IBM의 VM 운영체제

[그림 3.12] 시스템 모델

→ 가상 기계 소프트웨어: 여러 개의 가상 기계를 하나의 물리적 기계에 다중 프로그래밍 함

- H/W 측면: 실제 컴퓨터 자원들은 가상 기계를 만들기 위해 공유됨

1) 중앙처리장치 스케줄링: 가상의 전용 처리기 제공

2) 가상기억장치 기법: 가상의 전용 기억장치 제공

3) 스풀링과 파일 시스템: 가상의 카드 판독기, 가상의 라인 프린터 제공

4) 시분할 터미널: 가상의 전용 콘솔 제공

5) 소형 디스크(minidisk): 물리적 디스크에서 필요한 트랙을 할당하여 가상의 디스크 제공

- OS 측면: 사용자는 주어진 가상기계 위에 단일 사용자 대화형 운영체제 CMS를 수행


3.6.1 구현(Implementation)


▶ 연산 모드

- 가상 기계 소프트웨어: 물리적인 모니터 모드

- 가상 기계: 물리적인 사용자 모드 → - 가상 모니터 모드

                                     - 가상 사용자 모드

ex) 가상 카드 판독기로부터의 입력

가상 사용자 모드

   ①↓  ↑④

가상 모니터 모드: 물리적인 사용자모드

   ②↓  ↑③

물리적인 모니터모드

▶ 처리 시간

- 가상 입출력은 실제 입출력에 비해 적은 시간이 소요되거나(스풀), 더 많은 시간이 소요됨(해석)

- 중앙처리장치는 다수의 가상 기계간에 다중 프로그램 되므로 가상 기계는 상당히 느려짐


3.6.2 장점(Benefits)


▶ 장점

1) 시스템 자원의 완전한 보호: 각 가상 기계는 다른 모든 가상 기계로부터 완전히 분리되어 보안의 문제가 없으나, 반면 자원을 직접 공유할 수 없음

  → (공유 방법) ① 소형 디스크 공유

② 가상 기계의 통신 네트워크 정의

2) 가상 기계 시스템은 운영체제 연구와 개발에 완벽한 매체로서 사용될 수 있음

  → 시스템 개발 시간에도 정규 시스템 동작을 중단할 필요 없음

3) 가상기계는 시스템 호환성 문제를 해결하는 수단으로 사용됨

→ 선 마이크로시스템(Sun Microsystems)과 DEC(Digital Equipment Corporation)등의 컴퓨터에 가상 인텔 기계를 두어 MS-DOS용 프로그램을 실행시킬 수 있음


3.6.3 자바(Java)


▶ 자바(Java): 선 마이크로시스템사에서 설계한 프로그래밍 언어

→ 자바 언어에 의해 작성된 자바 프로그램은 자바 컴파일러에 의해 자바 가상 기계(JVM)에서 실행될 수 있는 바이트코드(bytecode)를 생성함


▶ 자바 가상 기계(JVM)

- 여러 종류의 범용 운영체제 컴퓨터에서 실행됨

ex) IBM 호환 PC, 매킨토시, Unix 워크스테이션 및 서버, IBM 소형 및 대형 컴퓨터 등

- 웹 브라우저에서도 실행됨

ex) 마이크로소프트 익스플로러, 넷스케이프 커뮤니케이터 등

- 하드웨어 상에서 직접 자바를 수행하는 작은 크기의 JavaOS에서 실행됨

ex) 무선전화기 등


▶ 자바 가상 기계는 산술, 논리, 데이터 이동, 흐름 제어 명령을 포함하는 스택 기반 명령어 세트를 실현하며, 하드웨어에 구축하기에 복잡한 객체 생성, 조작, 메소드 호출 명령 등을 실현할 수 있음


▶ 자바의 설계는 가상 기계를 구현하는 완벽한 환경을 제공함

→ 바이트 코드는 기반이 되는 기계의 보안과 신뢰성을 위협하는 명령인지 검사된 후 만족되지 않으면 수행되지 않음


3.7 시스템 설계 및 구현(System Design and Implementation)


3.7.1 설계 목표(Design Goals)


▶ 시스템의 목표와 명세의 정의

- 최상위 단계에서의 시스템 설계는 하드웨어 선택과 시스템 형태(일괄처리, 시분할, 단일 사용자, 다중 사용자, 분산, 실시간, 범용 등)에 큰 영향을 받음

- 최상위 단계를 넘는 요구를 규정하는 것은 어려움

① 사용자 목적: 사용의 편리성, 이해의 용이성, 신뢰성, 안정성, 신속성 등

② 시스템 목적: 설계, 구현, 유지보수의 용이성, 적응성, 신뢰성, 무오류, 효율성 등

→ 이러한 정의 문제를 해결하는 일반적인 방법 없음: 몇 가지 원칙 - “소프트웨어 공학”


3.7.2. 메커니즘 및 정책(Mechanism and Polices)


▶ 설계의 기본 원칙: 메커니즘과 정책의 분리

- 메커니즘: 어떻게 할 것인가를 결정하는 것

- 정책: 무엇을 할 것인가를 결정하는 것

ex) 중앙처리장치 보호 - ① 메커니즘: 타이머 구성

                        ② 정책: 특정 사용자를 위한 타이머의 길이 설정

→ 융통성: 일반적인 메커니즘을 제공하고, 정책 결정은 시스템의 특정 매개변수의 재 정의로 결정


3.7.3 구현(Implementation)


▶ 어셈블리어가 아닌 고급 언어에 의한 운영체제 구현

- 사례: 

① Burroughs 컴퓨터의 MCP(Master Control Program): ALGOL의 변형으로 작성

② MIT의 Multics: PL/1으로 작성

③ Prime 컴퓨터의 Primos: Fortran 파생어로 작성

④ UNIX, OS/2, 윈도우즈/NT: C로 작성

- 장점: 코드를 신속하게 작성할 수 있고, 간결하고 이해하기 쉬우며 수정이 용이

- 단점: 속도가 느리고 기억장치가 많이 소요

* 운영체제가 고급언어로 작성되면 이식성이 높음

  ex) MS-DOS: 어셈블리어로 작성 → Intel 계열의 중앙처리장치에만 적용

      UNIX: C로 작성 → Intel 80X86, Motorola 680X0, SPARC, MIPS RX000 등 다수


▶ 시스템의 성능은 자료 구조와 알고리즘에 영향을 받음

ex) 기억장치관리, 중앙처리장치 스케줄링

→ 일단 정확하게 작동되면, 병목 루틴을 어셈블리어로 대체하는 것이 바람직함


▶ 병목 현상 식별

- 시스템 동작의 추적 리스트를 파일로 저장 후 모의 실험

- 실시간 성능 측정

→ 시스템 성능 향상


3.8 시스템 생성(System Generation)


▶ 시스템 생성(SYSGEN): 범용 운영체제가 특정 컴퓨터 사이트를 위해 구성되고 생성되는 것

→ SYSGEN 프로그램: 하드웨어 시스템의 특정 구성에 관한 정보를 운영원에게 요구하거나 파일로부터 판독함

- 사용하는 중앙처리장치의 종류

- 사용 가능한 기억장치의 크기

- 사용 가능한 주변장치의 종류

- 요구하는 운영체제의 종류 등


▶ 부트스트랩 프로그램(bootstrap program)/부트스트랩 적재기(bootstrap loader):

운영체제의 위치를 파악하여 기억장치에 적재하고 실행시키는 프로그램

→ ROM에 저장되어 있음








'시리즈' 카테고리의 다른 글

토양생태계와 농업  (0) 2014.03.25
원자와 영양물질 순환  (0) 2014.03.24
컴퓨터 시스템 구조(Computer System Structures)  (0) 2014.03.12
History of the Football World Cup  (0) 2014.03.02
뉴턴 운동 법칙::제 1법칙 관성의 법칙, 제 2법칙 가속도의 법칙, 제 3법칙 작용 반작용의 법칙  (2) 2014.02.03
Posted by MSNU






favicon

MADE FOR ALL

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • 분류 전체보기 (609)
    • 러시아어 (16)
    • myPPT (414)
    • 시리즈 (166)
      • OS (14)
      • 회계 (57)
      • 경제 (22)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바