운영체제 SIG
-OPERATING SYSTEM CONCEPTS-
        CHAPTER 2 운영체제 구조
   (OPERATING-SYSTEM STRUCTURE)
CHAPTER 2. 운영체제 구조
(OPERATING – SYSTEM STRUCTURE)

2.1  운영체제 서비스
2.2  사용자 운영체제 인터페이스(user operating system interface)
2.3  시스템 호출(system call)
2.4  시스템 호출의 유형
2.5  시스템 프로그래밍(system programing)
2.6  운영체제 설계 및 구현
     (operating system design and implementation)
2.7 운영체제 구조(operating system structure)
2.8 가상 기계(virtual machine)
2.9 운영 체제 생성(operating system generation)
2.10 시스템 부트
2.11 요약(summary)
CH2.1 운영체제 서비스

운영체제 : 프로그램 실행 환경을 제공  프로그래머에게 편리성 제공

•   사용자 인터페이스 (user interface)
•   프로그램 수행 (program execution)
•   입출력 연산 (I/O operation)
•   파일 시스템 조장 (file system manipulation)
•   통신 (communication)
•   오류탐지 (error detection)
•   자원할당 (resource allocation)
•   회계 (Accounting)
•   보호 (protection) 와 보안(security)
CH2.2 사용자 운영체제 인터페이스
(USER OPERATING-SYSTEM INTERFACE)

• 사용자의 운영체제 접근 방식
  • 명령어 라인 인터페이스
  • 명령어 해석기 (command interface)  GUI 형태
     • 한 시스템에서 다양한 형태의 명령어 해석기-셀(shell) 를 제공 가능
     • 사용자가 지정 명령을 가져와서 수행


• 명령어 해석기의 구현 방법
  • 해석기 자체가 명령을 실행할 코드를 가지고 있음
     • 새로운 명령어를 쉽게 추가 할 수 있다. (unix , linux…)
  • GUI(graphical user interface)
     • 사용자 친화적인 방식
     • 마우스 기반 시스템 (windows, mac OS …)
CH2.3 시스템 호출
(SYSTEM CALL)

• 시스템 호출 : 운영체제의 사용 가능한 서비스 인터페이스 제공
  • asm, C, C++, 기반으로 작성.

    연속된 시스템 호출의 예
입력 파일 이름 획득
 화면에 프롬프트 출력
 입력 받아 들임
출력파일 이름 획득
 화면에 프롬프트 출력
 입력 받아 들임
입력 파일 열기                       API:응용 프로그래밍 인터페이스
 파일이 존재하지 않을 경우, 비정상적 종료     (Application programming interface)
출력 파일 생성
 파일이 존재 할 경우, 비정상적 종료       응용프로그래머가 사용 가능한 함수 집합
루프
 입력파일로부터 읽어 들임
 출력 파일 에 씀
읽기가 실패할 때 까지
출력 파일 닫기
화면에 완료 메세지 출력
정상적인 종료
CH2.3 시스템 호출
(SYSTEM CALL)

• API vs System call
  • API: 보다 쉽고 간단하게 접근할 수 있도록 서비스 이용 방법을 정의한 함수
  • System call: 소프트웨어 인터럽트로 수행, 운영 체제의 특정 서비스를 요청
  • 일반적으로 시스템 콜을 직접 사용하는 것보다 API 사용
    • 사용하기 편해서… / 호환성의 문제


• 시스템 호출 인터페이스
  • API 함수의 호출을 가로채어 필요한 시스템 호출을 호출
  • 통상 각 시스템 호출에는 인덱스가 할당테이블 = 시스템 호출 인터페이스
  • 시스템 호출 을 부르고, 시스템 호출의 상태와 반환 값을 리턴
CH2.3 시스템 호출
(SYSTEM CALL)




                  System
                   Call
                interface
CH2.4 시스템 호출의 유형

• 시스템 호출의 유형
 • 프로세스 제어
  •   실행 중인 프로세스의 종료  끝내기(정상) / 중지(비정상)
  •   다중 프로그램 실행시의 서로간의 적재 / 실행
  •   프로세스 생성, 종료
  •   프로세스 속성(작업의 우선순위/시간) 획득, 프로세스 속성 결정
  •   작업 혹은 프로세스의 실행 종료 의 기다림
  •   Wait event / signal event
  •   병행프로세스들의 조정
  •   Time profile : 특정 프로그램의 특정 위치 혹은 수행한 시간의 양 (카운터)
       •   추적 실비 와 정규 타이머 인터럽트를 필요
  • 단일 태스킹 : 컴퓨터가 시동 시 하나의 명령어 해석기만 호출 (MS-DOS)
  • 다중 태스킹 : 사용자가 시스템에 로그인시 사용자가 선택한 셀이 선택(FreeBSD)
CH2.4 시스템 호출의 유형
CH2.4 시스템 호출의 유형

• 시스템 호출의 유형
 • 파일 조작
  •   파일 생성 / 삭제
  •   열기 / 닫기
  •   읽기 쓰기 / 위치 변경
  •   파일 속성 획득 및 설정
 • 장치 관리
  •   장치를 요청 / 방출
  •   읽기 쓰기 / 위치변경
  •   장치 속성 획득 / 장치 속성 설정
  •   장치의 논리적 부착 / 분리
 • 정보 유지
  • 시간과 날짜 설정
  • 시스템 자료ㅢ 설정 과 획득
  • 프로세스, 파일, 장치 속성의 획득 및 설정
 • 통신
  • 통신 연결의 생성, 제거
  • 메시지 송신, 수신
  • 상태 정보 전달 …
CH2.5 시스템 프로그램
(SYSTEM PROGRAM)

• 시스템 프로그램
  • 하드웨어  운영체제  시스템 프로그램  응용 프로그램
  • 프로그램 개발과 실행을 위해 편리한 환경을 제공
  • 시스템 프로그램의 범주
   • 파일관리
      •   파일과 디렉토리의 조작
   • 상태정보
      •   시스템의 정보(날짜, 시간, 사용가능한 메모리… 등)을 표시
   • 파일변경
      •   문장 편집기
   • 프로그래밍 언어 지원
      •   컴파일러, 어셈블러, 해석기 등등
   • 프로그램 적재와 수행
      •   절대 적재기, 재배치 가능 적재기, 링키지 에디터, 중첩 적재기
   • 통신
      •   프로세스, 사용자, 타 컴퓨터 사이의 가상 접속 기법
  • 시스템 유틸리티, 응용 프로그램 : 웹 브라우져, 워드프로세서 같은…
CH2.6 운영체제 설계 및 구현
(OPERATING-SYSTEM DESIGN AND IMPLEMENTATION)

• 운영체제 설계 목표
  • 사용자 목적 / 시스템 목적
  • 설계, 구현, 유지보수가 쉬우며, 적응성, 신뢰성, 무오류, 효율성 을 가져야 한다.
• 메커니즘 과 정책
  • 메커니즘 : 어떤 일을 어떻게 할 것 인가
  • 정책 : 무엇을 할 것 인가
   • ex) 중앙처리장치 보호 –
       •   ① 메커니즘: 타이머 구성
       •   ② 정책: 특정 사용자를 위한 타이머의 길이 설정

• 구현
  • 어셈블리어가 아닌 고급언어로 작성시…
   • 장점:신속한 작성,이해도가 높음,이식성이 높음
   • 단점:속도가 느리며, 기억장치를 많이 소모
  • 시스템의 성능은 알고리즘과 자료구조에 영향을 받음
  • 병목 현상 식별
   • 시스템 동작 추적 리스트 작성모의실험(실시간 성능 측정)
CH2.7 운영체제 구조
(OPERATING-SYSTEM STRUCTURE)

• 간단한 구조(simple structure)
  • MS-DOS
    •   모듈들이 제대로 분할되어 있지 않음
    •   응용 프로그램이 기본적으로 하드웨어에 접근할 수 있음
  • 초기 UNIX
        • 구성: 커널과 시스템 프로그램의 두 부분
        • 커널: 시스템 호출 인터페이스 아래 부분과 물리적 하드웨어 위 부분
                  → 수많은 기능들이 하나의 계층으로 결합되어 있음
        • UNIX의 발전 방향: 커널의 분할 및 축소
CH2.7 운영체제 구조
(OPERATING-SYSTEM STRUCTURE)

• 계층적 접근(Layered Approach)
  • 운영체제를 다수의 계층으로 구분하여 모듈화 하는 방법
   • 최하위 계층(layer 0): 하드웨어 ↔ 최상위 계층(layer N): 사용자 인터페이스
   • 계층의 구현:
      •   추상적인 객체: 자료의 캡슐화와 그러한 자료를 처리할 수 있는 연산으로 구성
      •   모듈화(modularity): 각 계층은 자신 및 하위 계층에서 제공하는 함수(연산)들만을 사용
              → 시스템의 설계나 구현이 간단해짐
CH2.7 운영체제 구조
(OPERATING-SYSTEM STRUCTURE)

• 계층적 접근(Layered Approach)
  • 계층적 설계의 문제점
   • 계층 정의의 어려움
   • 낮은 효율성모듈화의 장점을 유지하면서 계층화의 단점을 줄이기 위해, 적은 계층으로
             설계하는 방안 등장
CH2.7 운영체제 구조
(OPERATING-SYSTEM STRUCTURE)

• 마이크로커널(micro kernel)
  •   커널을 모듈화
  •   중요하지 않은 모든 구성 요소를 커널에서 제거
  •   시스템 및 사용자 수준 프로그램으로 구현
  •   클라이언트 프로그램
  •   사용자 공간에서 수행되는 다양한 서비스간 통신 설비 제공 목적
  •   장점 : 운영체제의 확장이 용이
  •   한 하드웨어에서 다른 하드웨어로서의 이식이 쉽다.
  •   단점 : 가증된 시스템 기능 오버헤드 때문에 성능이 감소된다.
CH2.7 운영체제 구조
(OPERATING-SYSTEM STRUCTURE)

• 모듈(module)
  • 객체지향적 프로그래밍을 이용한 모듈화 운영체제
  • 커널은 핵심 적인 구성요소만 포함 부팅 또는 실행 중엔 부가적인 서비스만 링크
  • 동적 적재 모듈 사용핵심적인 기능 사용 + 특정 기능들을 동적으로 사용
CH2.8 가상 기계
(VIRTUAL MACHINE)
• 가상 기계: 각 프로세스에게 기본 컴퓨터의 가상적인 사본 제공.
• 가상 기계 소프트웨어: 여러 개의 가상 기계를 하나의 물리적 기계에 다중 프로그래밍 함
• H/W 측면: 실제 컴퓨터 자원들은 가상 기계를 만들기 위해 공유됨
  1) 중앙처리장치 스케줄링: 가상의 전용 처리기 제공
  2) 가상기억장치 기법: 가상의 전용 기억장치 제공
  3) 스풀링과 파일 시스템: 가상의 카드 판독기, 가상의 라인 프린터 제공
  4) 시분할 터미널: 가상의 전용 콘솔 제공
  5) 소형 디스크(minidisk): 물리적 디스크에서 필요한 트랙을 할당하여 가상의 디스크 제공
• OS 측면: 사용자는 주어진 가상기계 위에 단일 사용자 대화형 운영체제 CMS를 수행
CH2.8 가상 기계
(VIRTUAL MACHINE)
CH2.8 가상 기계
(VIRTUAL MACHINE)
• 장점

1) 시스템 자원의 완전한 보호: 각 가상 기계는 다른 모든 가상 기계로부터 완전히 분리되어 보
안의 문제가 없으나, 반면 자원을 직접 공유할 수 없음
      → (공유 방법)  ① 소형 디스크 공유
                 ② 가상 기계의 통신 네트워크 정의

2) 가상 기계 시스템은 운영체제 연구와 개발에 완벽한 매체로서 사용될 수 있음
      → 시스템 개발 시간에도 정규 시스템 동작을 중단할 필요 없음

3) 가상기계는 시스템 호환성 문제를 해결하는 수단으로 사용됨
      → 선 마이크로시스템(Sun Microsystems)과 DEC(Digital Equipment Corporation)
등의 컴퓨터에 가상 인텔 기계를 두어 MS-DOS용 프로그램을 실행 시 킬 수 있음
CH2.8 가상 기계
(VIRTUAL MACHINE)
• 자바(Java): 선 마이크로시스템사에서 설계한 프로그래밍 언어
→ 자바 언어에 의해 작성된 자바 프로그램은 자바 컴파일러에 의해 자바 가상 기계(JVM)에서
실행될 수 있는 바이트코드(bytecode)를 생성함

• 자바 가상 기계(JVM)
- 여러 종류의 범용 운영체제 컴퓨터에서 실행됨
ex) IBM 호환 PC, 매킨토시, Unix 워크스테이션 및 서버, IBM 소형 및 대형 컴퓨터 등
- 웹 브라우저에서도 실행됨
ex) 마이크로소프트 익스플로러, 넷스케이프 커뮤니케이터 등
- 하드웨어 상에서 직접 자바를 수행하는 작은 크기의 JavaOS에서 실행됨
ex) 무선전화기 등

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

• 자바의 설계는 가상 기계를 구현하는 완벽한 환경을 제공함
→ 바이트 코드는 기반이 되는 기계의 보안과 신뢰성을 위협하는 명령인지 검사된 후 만족되지
않으면 수행되지 않음
CH2.8 가상 기계
(VIRTUAL MACHINE)
CH2.9 운영체제 생성
(OPERATING SYSTEM GENERATION)
• 시스템 생성(SYSGEN): 범용 운영체제가 특정 컴퓨터를 위해 구성되고 생성되는 것
• SYSGEN 프로그램: 하드웨어 시스템의 특정 구성에 관한 정보를 운영자에게 요구하거나
  파일로부터 판독함

     - 사용하는 중앙처리장치의 종류
     - 사용 가능한 기억장치의 크기
     - 사용 가능한 주변장치의 종류
     - 요구하는 운영체제의 종류 등
CH2.10시스템 부트

• 부트스트랩 프로그램(bootstrap program)/부트스트랩 적재기(bootstrap loader):
     운영체제의 위치를 파악하여 기억장치에 적재하고 실행시키는 프로그램
          → ROM에 저장되어 있음
• 부트프로그램  기계 상태 진단 시스템 전체 초기화  운영체제 시작

• 운영체제 전체를 ROM에 저장하는 형식 : 부트스트랩 코드 변경시 ROM 칩을 교체해야함
 EPROM(쓰기도 가능하도록 만드는 명령어가 주어지기 전까지는 읽기 전용을 유지함)
 하드웨어와 소프트웨어의 중간적인 특정 : ROM 에 담긴 형태를 Firmware 라고 함.

 부트 블록 : 대용량 운영체제 또는 자주 변경되는 시스템부트스트랩은 펌웨어로
         운영체제는 디스크에 존재  진단이 끝나고 운영체제를 시작하기 위한
         디스크의 고정된 위치

 부트 디스크 : 디스크 상의 부트스트랩과 운영체제의 새 버전을 디스크에 기록
           부트 파티션을 가지고 있는 디스크

운영체제 Sig2

  • 1.
    운영체제 SIG -OPERATING SYSTEMCONCEPTS- CHAPTER 2 운영체제 구조 (OPERATING-SYSTEM STRUCTURE)
  • 2.
    CHAPTER 2. 운영체제구조 (OPERATING – SYSTEM STRUCTURE) 2.1 운영체제 서비스 2.2 사용자 운영체제 인터페이스(user operating system interface) 2.3 시스템 호출(system call) 2.4 시스템 호출의 유형 2.5 시스템 프로그래밍(system programing) 2.6 운영체제 설계 및 구현 (operating system design and implementation) 2.7 운영체제 구조(operating system structure) 2.8 가상 기계(virtual machine) 2.9 운영 체제 생성(operating system generation) 2.10 시스템 부트 2.11 요약(summary)
  • 3.
    CH2.1 운영체제 서비스 운영체제: 프로그램 실행 환경을 제공  프로그래머에게 편리성 제공 • 사용자 인터페이스 (user interface) • 프로그램 수행 (program execution) • 입출력 연산 (I/O operation) • 파일 시스템 조장 (file system manipulation) • 통신 (communication) • 오류탐지 (error detection) • 자원할당 (resource allocation) • 회계 (Accounting) • 보호 (protection) 와 보안(security)
  • 4.
    CH2.2 사용자 운영체제인터페이스 (USER OPERATING-SYSTEM INTERFACE) • 사용자의 운영체제 접근 방식 • 명령어 라인 인터페이스 • 명령어 해석기 (command interface)  GUI 형태 • 한 시스템에서 다양한 형태의 명령어 해석기-셀(shell) 를 제공 가능 • 사용자가 지정 명령을 가져와서 수행 • 명령어 해석기의 구현 방법 • 해석기 자체가 명령을 실행할 코드를 가지고 있음 • 새로운 명령어를 쉽게 추가 할 수 있다. (unix , linux…) • GUI(graphical user interface) • 사용자 친화적인 방식 • 마우스 기반 시스템 (windows, mac OS …)
  • 5.
    CH2.3 시스템 호출 (SYSTEMCALL) • 시스템 호출 : 운영체제의 사용 가능한 서비스 인터페이스 제공 • asm, C, C++, 기반으로 작성. 연속된 시스템 호출의 예 입력 파일 이름 획득 화면에 프롬프트 출력 입력 받아 들임 출력파일 이름 획득 화면에 프롬프트 출력 입력 받아 들임 입력 파일 열기 API:응용 프로그래밍 인터페이스 파일이 존재하지 않을 경우, 비정상적 종료 (Application programming interface) 출력 파일 생성 파일이 존재 할 경우, 비정상적 종료 응용프로그래머가 사용 가능한 함수 집합 루프 입력파일로부터 읽어 들임 출력 파일 에 씀 읽기가 실패할 때 까지 출력 파일 닫기 화면에 완료 메세지 출력 정상적인 종료
  • 6.
    CH2.3 시스템 호출 (SYSTEMCALL) • API vs System call • API: 보다 쉽고 간단하게 접근할 수 있도록 서비스 이용 방법을 정의한 함수 • System call: 소프트웨어 인터럽트로 수행, 운영 체제의 특정 서비스를 요청 • 일반적으로 시스템 콜을 직접 사용하는 것보다 API 사용 • 사용하기 편해서… / 호환성의 문제 • 시스템 호출 인터페이스 • API 함수의 호출을 가로채어 필요한 시스템 호출을 호출 • 통상 각 시스템 호출에는 인덱스가 할당테이블 = 시스템 호출 인터페이스 • 시스템 호출 을 부르고, 시스템 호출의 상태와 반환 값을 리턴
  • 7.
    CH2.3 시스템 호출 (SYSTEMCALL) System Call interface
  • 8.
    CH2.4 시스템 호출의유형 • 시스템 호출의 유형 • 프로세스 제어 • 실행 중인 프로세스의 종료  끝내기(정상) / 중지(비정상) • 다중 프로그램 실행시의 서로간의 적재 / 실행 • 프로세스 생성, 종료 • 프로세스 속성(작업의 우선순위/시간) 획득, 프로세스 속성 결정 • 작업 혹은 프로세스의 실행 종료 의 기다림 • Wait event / signal event • 병행프로세스들의 조정 • Time profile : 특정 프로그램의 특정 위치 혹은 수행한 시간의 양 (카운터) • 추적 실비 와 정규 타이머 인터럽트를 필요 • 단일 태스킹 : 컴퓨터가 시동 시 하나의 명령어 해석기만 호출 (MS-DOS) • 다중 태스킹 : 사용자가 시스템에 로그인시 사용자가 선택한 셀이 선택(FreeBSD)
  • 9.
  • 10.
    CH2.4 시스템 호출의유형 • 시스템 호출의 유형 • 파일 조작 • 파일 생성 / 삭제 • 열기 / 닫기 • 읽기 쓰기 / 위치 변경 • 파일 속성 획득 및 설정 • 장치 관리 • 장치를 요청 / 방출 • 읽기 쓰기 / 위치변경 • 장치 속성 획득 / 장치 속성 설정 • 장치의 논리적 부착 / 분리 • 정보 유지 • 시간과 날짜 설정 • 시스템 자료ㅢ 설정 과 획득 • 프로세스, 파일, 장치 속성의 획득 및 설정 • 통신 • 통신 연결의 생성, 제거 • 메시지 송신, 수신 • 상태 정보 전달 …
  • 11.
    CH2.5 시스템 프로그램 (SYSTEMPROGRAM) • 시스템 프로그램 • 하드웨어  운영체제  시스템 프로그램  응용 프로그램 • 프로그램 개발과 실행을 위해 편리한 환경을 제공 • 시스템 프로그램의 범주 • 파일관리 • 파일과 디렉토리의 조작 • 상태정보 • 시스템의 정보(날짜, 시간, 사용가능한 메모리… 등)을 표시 • 파일변경 • 문장 편집기 • 프로그래밍 언어 지원 • 컴파일러, 어셈블러, 해석기 등등 • 프로그램 적재와 수행 • 절대 적재기, 재배치 가능 적재기, 링키지 에디터, 중첩 적재기 • 통신 • 프로세스, 사용자, 타 컴퓨터 사이의 가상 접속 기법 • 시스템 유틸리티, 응용 프로그램 : 웹 브라우져, 워드프로세서 같은…
  • 12.
    CH2.6 운영체제 설계및 구현 (OPERATING-SYSTEM DESIGN AND IMPLEMENTATION) • 운영체제 설계 목표 • 사용자 목적 / 시스템 목적 • 설계, 구현, 유지보수가 쉬우며, 적응성, 신뢰성, 무오류, 효율성 을 가져야 한다. • 메커니즘 과 정책 • 메커니즘 : 어떤 일을 어떻게 할 것 인가 • 정책 : 무엇을 할 것 인가 • ex) 중앙처리장치 보호 – • ① 메커니즘: 타이머 구성 • ② 정책: 특정 사용자를 위한 타이머의 길이 설정 • 구현 • 어셈블리어가 아닌 고급언어로 작성시… • 장점:신속한 작성,이해도가 높음,이식성이 높음 • 단점:속도가 느리며, 기억장치를 많이 소모 • 시스템의 성능은 알고리즘과 자료구조에 영향을 받음 • 병목 현상 식별 • 시스템 동작 추적 리스트 작성모의실험(실시간 성능 측정)
  • 13.
    CH2.7 운영체제 구조 (OPERATING-SYSTEMSTRUCTURE) • 간단한 구조(simple structure) • MS-DOS • 모듈들이 제대로 분할되어 있지 않음 • 응용 프로그램이 기본적으로 하드웨어에 접근할 수 있음 • 초기 UNIX • 구성: 커널과 시스템 프로그램의 두 부분 • 커널: 시스템 호출 인터페이스 아래 부분과 물리적 하드웨어 위 부분 → 수많은 기능들이 하나의 계층으로 결합되어 있음 • UNIX의 발전 방향: 커널의 분할 및 축소
  • 14.
    CH2.7 운영체제 구조 (OPERATING-SYSTEMSTRUCTURE) • 계층적 접근(Layered Approach) • 운영체제를 다수의 계층으로 구분하여 모듈화 하는 방법 • 최하위 계층(layer 0): 하드웨어 ↔ 최상위 계층(layer N): 사용자 인터페이스 • 계층의 구현: • 추상적인 객체: 자료의 캡슐화와 그러한 자료를 처리할 수 있는 연산으로 구성 • 모듈화(modularity): 각 계층은 자신 및 하위 계층에서 제공하는 함수(연산)들만을 사용 → 시스템의 설계나 구현이 간단해짐
  • 15.
    CH2.7 운영체제 구조 (OPERATING-SYSTEMSTRUCTURE) • 계층적 접근(Layered Approach) • 계층적 설계의 문제점 • 계층 정의의 어려움 • 낮은 효율성모듈화의 장점을 유지하면서 계층화의 단점을 줄이기 위해, 적은 계층으로 설계하는 방안 등장
  • 16.
    CH2.7 운영체제 구조 (OPERATING-SYSTEMSTRUCTURE) • 마이크로커널(micro kernel) • 커널을 모듈화 • 중요하지 않은 모든 구성 요소를 커널에서 제거 • 시스템 및 사용자 수준 프로그램으로 구현 • 클라이언트 프로그램 • 사용자 공간에서 수행되는 다양한 서비스간 통신 설비 제공 목적 • 장점 : 운영체제의 확장이 용이 • 한 하드웨어에서 다른 하드웨어로서의 이식이 쉽다. • 단점 : 가증된 시스템 기능 오버헤드 때문에 성능이 감소된다.
  • 17.
    CH2.7 운영체제 구조 (OPERATING-SYSTEMSTRUCTURE) • 모듈(module) • 객체지향적 프로그래밍을 이용한 모듈화 운영체제 • 커널은 핵심 적인 구성요소만 포함 부팅 또는 실행 중엔 부가적인 서비스만 링크 • 동적 적재 모듈 사용핵심적인 기능 사용 + 특정 기능들을 동적으로 사용
  • 18.
    CH2.8 가상 기계 (VIRTUALMACHINE) • 가상 기계: 각 프로세스에게 기본 컴퓨터의 가상적인 사본 제공. • 가상 기계 소프트웨어: 여러 개의 가상 기계를 하나의 물리적 기계에 다중 프로그래밍 함 • H/W 측면: 실제 컴퓨터 자원들은 가상 기계를 만들기 위해 공유됨 1) 중앙처리장치 스케줄링: 가상의 전용 처리기 제공 2) 가상기억장치 기법: 가상의 전용 기억장치 제공 3) 스풀링과 파일 시스템: 가상의 카드 판독기, 가상의 라인 프린터 제공 4) 시분할 터미널: 가상의 전용 콘솔 제공 5) 소형 디스크(minidisk): 물리적 디스크에서 필요한 트랙을 할당하여 가상의 디스크 제공 • OS 측면: 사용자는 주어진 가상기계 위에 단일 사용자 대화형 운영체제 CMS를 수행
  • 19.
  • 20.
    CH2.8 가상 기계 (VIRTUALMACHINE) • 장점 1) 시스템 자원의 완전한 보호: 각 가상 기계는 다른 모든 가상 기계로부터 완전히 분리되어 보 안의 문제가 없으나, 반면 자원을 직접 공유할 수 없음 → (공유 방법) ① 소형 디스크 공유 ② 가상 기계의 통신 네트워크 정의 2) 가상 기계 시스템은 운영체제 연구와 개발에 완벽한 매체로서 사용될 수 있음 → 시스템 개발 시간에도 정규 시스템 동작을 중단할 필요 없음 3) 가상기계는 시스템 호환성 문제를 해결하는 수단으로 사용됨 → 선 마이크로시스템(Sun Microsystems)과 DEC(Digital Equipment Corporation) 등의 컴퓨터에 가상 인텔 기계를 두어 MS-DOS용 프로그램을 실행 시 킬 수 있음
  • 21.
    CH2.8 가상 기계 (VIRTUALMACHINE) • 자바(Java): 선 마이크로시스템사에서 설계한 프로그래밍 언어 → 자바 언어에 의해 작성된 자바 프로그램은 자바 컴파일러에 의해 자바 가상 기계(JVM)에서 실행될 수 있는 바이트코드(bytecode)를 생성함 • 자바 가상 기계(JVM) - 여러 종류의 범용 운영체제 컴퓨터에서 실행됨 ex) IBM 호환 PC, 매킨토시, Unix 워크스테이션 및 서버, IBM 소형 및 대형 컴퓨터 등 - 웹 브라우저에서도 실행됨 ex) 마이크로소프트 익스플로러, 넷스케이프 커뮤니케이터 등 - 하드웨어 상에서 직접 자바를 수행하는 작은 크기의 JavaOS에서 실행됨 ex) 무선전화기 등 • 자바 가상 기계는 산술, 논리, 데이터 이동, 흐름 제어 명령을 포함하는 스택 기반 명령어 세 트를 실현하며, 하드웨어에 구축하기에 복잡한 객체 생성, 조작, 메소드 호출 명령 등을 실 현할 수 있음 • 자바의 설계는 가상 기계를 구현하는 완벽한 환경을 제공함 → 바이트 코드는 기반이 되는 기계의 보안과 신뢰성을 위협하는 명령인지 검사된 후 만족되지 않으면 수행되지 않음
  • 22.
  • 23.
    CH2.9 운영체제 생성 (OPERATINGSYSTEM GENERATION) • 시스템 생성(SYSGEN): 범용 운영체제가 특정 컴퓨터를 위해 구성되고 생성되는 것 • SYSGEN 프로그램: 하드웨어 시스템의 특정 구성에 관한 정보를 운영자에게 요구하거나 파일로부터 판독함 - 사용하는 중앙처리장치의 종류 - 사용 가능한 기억장치의 크기 - 사용 가능한 주변장치의 종류 - 요구하는 운영체제의 종류 등
  • 24.
    CH2.10시스템 부트 • 부트스트랩프로그램(bootstrap program)/부트스트랩 적재기(bootstrap loader): 운영체제의 위치를 파악하여 기억장치에 적재하고 실행시키는 프로그램 → ROM에 저장되어 있음 • 부트프로그램  기계 상태 진단 시스템 전체 초기화  운영체제 시작 • 운영체제 전체를 ROM에 저장하는 형식 : 부트스트랩 코드 변경시 ROM 칩을 교체해야함  EPROM(쓰기도 가능하도록 만드는 명령어가 주어지기 전까지는 읽기 전용을 유지함)  하드웨어와 소프트웨어의 중간적인 특정 : ROM 에 담긴 형태를 Firmware 라고 함.  부트 블록 : 대용량 운영체제 또는 자주 변경되는 시스템부트스트랩은 펌웨어로 운영체제는 디스크에 존재  진단이 끝나고 운영체제를 시작하기 위한 디스크의 고정된 위치  부트 디스크 : 디스크 상의 부트스트랩과 운영체제의 새 버전을 디스크에 기록 부트 파티션을 가지고 있는 디스크