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