컴퓨터 공학

운영체제 2장

혼새미로 2015. 11. 26. 04:00
반응형
  • 2. 시스템 구조
  • 2.1 운영체제 서비스
  • 운영체제 서비스는 프로그래머가 보다 쉽게 프로그래밍 할 수있도록 편리함을 제공한다
  • - 사용자 인터페이스 : 명령어 라인 인터페이스(commmand line interface), 배치 인터페이스(batch insterface), 그래피컬 사용자 인터페이스(GUI)가 가장 보편적이다.
  • - 프로그램 실행: 시스템 프로그램을 메모리에 적재해 실행할 수 있어야 한다. 프로그램은 정상이든 비정상이든 실행을 끝낼수 있어야 한다.
  • - 입출력 연산 : 실행중인 프로그램은 입출력을 요구할 수 있다. 효율과 보호를 위해 사용자들은 통상 입출력 장치를 직접 제어할수 없다.
  • - 파일 시스템 조작 :
  • - 통신 : 한 프로세스가 다른 프로세스와 정보를 교환해야 할 필요가 있는데 이러한 통신을 할수있는 두가지 방법이 있다. 첫째는 동일한 컴퓨터에서 실행되고 있는 프로세서 사이에서 일어나고, 두번째는 컴퓨터 네트워크에 의해 함께 묶여있는 서로 다른 컴퓨터 시스템 상에서 실행되는 프로세스들 사이에서 일어난다.
  • - 오류탐지(error detection) : 운영체제는 모든 가능한 오류를 항상 의식하고 있어야한다.
  • - 자원할당(resource allocation) : 다수의 사용자나 다수의 작업들이 동시에 실행될때, 그들 각각에 자원을 할당해야 한다.
  • - 회계(accounting) : 우리는 사용자가 어떤 종류의 컴퓨터 자원을 얼마나 많이 사용하는지 관리하고자 한다.
  • - 보호와 보안
  • 2.2 사용자 운영체제 인터페이스
  • 2.2.1 명령 해석기(command-interpreter)
  • 셸(shell) : 선택할수있는 명령어해석기를 제공하는 시스템에서의 해석기
  • 2.2.2 그래피컬 사용자 인터페이스
  • 2.3 시스템 호출(system call)
  • 운영체제가 제공하는 서비스에 대한 인터페이스 제공한다.
  • 원리 예시
  • - 파일 읽어서 복사하기
  • - 시스템 콜로 프롬프트 창 출력, 키보드 입력을 가능하게 함
  • - 에러메시지도 시스템 콜
  • - 기존파일삭제도 시스템 콜
  • - 파일 닫기, 종료도 시스템 콜
  • - 종종 초당 수천개의 시스템콜 실행
  • 프로그래밍 언어들을 위한 실행시간 지원시스템(라이브러리 내장된 함수집합)은 운영체제가 제공하는 시스템 콜에 대한 연결로써 동작하는 시스템 콜 인터페이스를 제공한다
  • 시스템 콜 인터페이스는 API 함수의 호출을 가로채어 필요한 운영체제 시스템 콜을 부른다
  • - 시스템 콜은 번호가 할당됨
  • - 시스템 콜 인터페이스는 이 번호에 따라 인덱스 되는 테이블을 유지한다
  • - 의도한 시스템 콜을 부르고 시스템콜의 상태와 반환값을 준다.
  • 운영체제에 매개변수를 전달하는 세가지 방법
  • - 매개변수를 레지스터 내에 전달
  • - 매개변수와 메모리 내의 블록이나 테이블 블록이나 테이블에 저장되고, 블록의 주소가 레지스터 내에 매개변수로 전달된다.
  • - 매개변수는 프로그램에 의해 스택에 넣어질 수 있고, 운영체제에 의해 꺼내진다.
  • 2.4 시스템 호출의 유형
  • 2.4.1 프로세스 제어
  • 단일 태스킹 : 하나의 프로그램을 실행하기 위해 간단한 방법을 사용하며, 새로운 프로세스를 생성하지 않는다. 가능한 많은 메모리를 프로그램에 제공하기 위해 자신의 대부분을 덮어쓴다. 이어 명령 포인터를 프로그램의 첫번째 명령으로 설정한다. 그 다음 프로그램이 실행되며 오류가 있을 경우 트랩이 발생되거나, 아니면 종료를 위해 시스템콜을 실행한다. 오류코드가 시스템 메모리에 저장된다. 이어 명령해석기의 덮어쓰이지 않은 적은 부분의 실행을 재개한다.
  • 다중 태스킹 : fork() 시스템콜 실행으로 새로운 프로세스를 시작한다. 그 다음 exec() 시스템콜을 통해 메모리에 적재되고 이어 프로그램이 실행된다. 종료하기 위해 exit() 시스템콜을 실행하며 호출한 프로세스에게 상태코드 0을 돌려주거나 0이 아닌 오류코드를 돌려준다.
  • 2.4.2 파일 관리
  • 2.4.3 장치 관리
  • 다수의 사용자가 동시에 사용하는 시스템은 독점적인 장치사용을 보장받기 위해 우선 그 장치를 요청(request)하는것을 요구한다 그 장치의 상요 끝나면 우리는 그것을 반드시 방출(release)해야 한다.
  • 2.4.4 정보의 유지
  • 시간 프로파일(time profile) : 그 프로그램이 특정 위치 혹은 위치의 집합에서 실행한 시간의 양을 나타낸다.
  • 2.4.5 통신
  • 메시지전달 모델, 공유 메모리 모델
  • 메시지 전달 모델 : 통신하는 두 프로세스가 정보를 교환하기 위해 서로 메시지를 주고 받는다.
  • - 메시지는 두 프로세스 사이에 직접 교환되거 우편함을 통하여 간접적으로 교환될 수 있다.
  • - 상대 통신자(communicator)가 동일한 시스템에 있는 프로세스든지 또는 통신 네트워크에 의해 연결된 다른 컴퓨터에 있는 프로세서든지 간에 그 이름을 반드시 알고 있어야 한다.
  • 공유 메모리 모델 : 프로세스는 다른 프로세스가 소유한 메모리 영역을 생성하고 접근하기 위해 shared memory create와 shared memory attach 시스템콜을 사용한다.
  • 2.4.6 보호
  • 2.5 시스템 프로그램
  • 시스템 프로그램: 시스템 유틸리티로도 알려진 프로그램 개발과 실행을 위해 보다 편리한 환경을 제공한다.
  • - 파일관리: 이들 프로그램은 파일과 디렉터리 생성, 삭제, 복사, 개명, 인쇄, 덤프, 리스트를 하며 일반적인 조작을 한다.
  • - 상태정보
  • - 파일 변경
  • - 프로그램 언어 지원
  • - 프로그램 적재와 실행
  • - 통신
  • 2.6 운영체제 설계 및 구현
  • 2.6.1 설계 목표
  • 시스템의 목표와 명세를 정의
  • 2.6.2 매커니즘과 정책(mechanisms and policies)
  • 매커니즘은 어떤 일을 어떻게 할것인가를 결정하는것이고, 정책은 무엇을 할것인가를 결정하는 것이다.
  • 2.6.3 구현
  • 2.7 운영체제 구조
  • 2.7.1 간단한 구조
  • 2.7.2 계층적접근(Layered approach)
  • 하향식(top-down) 접근법 하에서는 전체적인 기능과 특징이 결정되고 구성요소로 분리된다.
  • - 디버그 용이
  • - 효율성 낮음
  • 2.7.3 마이크로커널(Microkernels)
  • 마이크로 커널은 통신설비외에 추가로 최소한의 프로세서와 메모리를 제공한다.
  • - 주기능은 클라이언트 프로그램과 같이 사용자 공간에서 실행되는 다양한 서비스간에 통신설비를 제공하는것
  • - 운영체제의 확장이 용이
  • - 커널 변경이 없음
  • - 한 하드웨어에서 다른 하드웨어로 이식이 쉬움
  • - 높은 보안성과 신뢰성
  • 2.7.4 모듈(Modules)
  • 객체지향 프로그래밍
  • solaris  운영체제의 7가지 유형의 적재 가능 커널 모듈
  • - 스케줄링 클래스
  • - 파일 시스템
  • - 적재가능 시스템 호출
  • - 실행파일 형식
  • - streams 모듈
  • - 기타 잡다한 기능들
  • - 장치 및 버스드라이버
  • 2.8 가상 기계
  • 2.8.1 역사
  • 2.8.2 장점
  • 가상기계들끼리 서로 보호되는것처럼 호스트 시스템도 가상기계로부터 보호됨
  • 시스템 통합:; 둘이상의 독립된 시스템들을 모아서 마치한 시스템의 가상기계인것처럼 운영하는것
  • 2.8.3 모의실험(simulation)
  • 2.8.4 반가상화(para-virtualization)
  • 반가상화 : 게스트가 선호하는 시스템과 유사하지만 동일하지 않은 시스템을 게스트에 제공
  • 2.8.5 구현(implementation)
  • 가상 기계소프트웨어는 운영체제이기 때문에 커널모드에서 실행될수없다. 가상기계자체는 사용자모드에서만 실행가능
  • 2.9 운영체제 디버깅
  • 디버깅: 시스템 오류 또는 버그를 발견하고 고치는 행위
  • - 시스템에서 처리중에 발생하는 병목현상을 제거하여 성능향상을 꾀하는 성능조정(performance turning)도 디버깅에 포함된다
  • 2.9.1 고장분석(failure anaysis)
  • 만일 프로세스가 실패하면 운영체제는 시스템 구동자 또는 사용자에게 문제가 발생했다는 것을 경고하기 위해 오류정보를 로그파일에 기록한다.
  • 운영체제는 프로세스가 사용하던 메모리를 캡처한 코어덤프(core dump)를 생성한다.
  • -디버거에 의해 검사 가능
  • 커널 고장은 충돌(crash)라 부른다
  • 오류정보가 로그파일에 저장되고 메모리의 상태가 충돌 덤프(crash dump)에 저장됨
  • 2.9.2 성능 조정(performance turning)
  • 병목지점을 발견하기위해 시스템성능을 감시할 수 있다.
  • 모든 관심있는 사건은 시간과 중요 매개변수와 함께 기록되며 파일에 기록됨
  • 또 다른 방법으로 사용자와 관리자가 병목을 찾기 위해 시스템의 다양한 구성요소들의 상태를 살펴볼수있는 대화형 도구를 사용하는것
  • 2.9.3 DTrace
  • 실행중인 시스템, 사용자 프로세스와 커널모드에 동적으로 탐색점을 추가할수 있는 설비이다
  • 2.10 운영체제 생성
  • 시스템 생성: 시스템이 각 특정 컴퓨터 사이트를 위해 구성되거나 또는 생성되어야 하는데 이 절차를 시스템 생성이라 한다(sysgen)
  • 2.11 시스템 부트
  • 커널을 적재하여 컴퓨터를 시동하는 절차는 시스템을 부팅하는 것으로 알려져 있다.
  • 컴퓨터 시스템에는 부트스트랩 프로그램 또는 부트스트랩 로더로 알려진 작은 크기의 코드가 커널을 찾아서 주 메모리에 적재하고 커널의 실행을 시작한다.
  • 컴퓨터가 전원을 켜거나 재부팅들의 리셋사건을 받으면 명령 레지스터는 미리 지정된메모리 위치를 가리키게 되고 그곳에서부터 실행을 시작한다.
  • 하드웨어와 소프트웨어 중간적 특성을 갖기 때문에 ROM의 모든 형태를 펌웨어라고 한다
  • - 실행속도가 RAM보다 낮음
  • - 비싸서 용량이 적음
  • - 부트스트랩 로더는 펌웨어에, 운영체제는 디스크에 존재


반응형

'컴퓨터 공학' 카테고리의 다른 글

컴퓨터 구조 4장  (0) 2015.11.26
운영체제 3장  (0) 2015.11.26
운영체제 1장  (0) 2015.11.26
컴퓨터 구조 2-2  (0) 2015.11.26
스탠포드 대학교 강의 ( 프로그래밍 방법론)  (0) 2015.11.26