운영체제 구조(Operating System Structures)
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 |