제1장 소 개 제2장 시스템 구조
개요 운영체제 목적 운영체제의 관점 컴퓨터 하드웨어와 컴퓨터 사용자 간의 매개체 역할을 하는 시스템 소프트웨어 컴퓨터 시스템을 편리하게 이용 컴퓨터 하드웨어를 효율적으로 관리 운영체제의 관점 자원 할당자라고도 함 다양한 입출력장치와 사용자 프로그램의 통제자
개요 컴퓨터 시스템의 구성
운영체제의 유형 일괄 처리 시스템(batch processing system 유휴 상태의 시간을 없애기 위해 작업 순서의 자동화(automatic job sequencing) 개념을 도입함 상주 모니터(resident monitor)를 수행 작업의 준비 및 실행 순서를 자동화함으로써 시스템의 성능을 증진 다중 프로그래밍 시스템(multiprogramming system) 중앙처리장치가 항상 수행되도록 하여 그 이용도를 높이기 위한 방안 주기억장치 내에 여러 프로그램들이 존재하도록 함
운영체제의 유형 다중 프로그래밍
운영체제의 유형 시분할 시스템(time-sharing system) 실시간 시스템(real-time system) 사용자는 대화식(interactive) 단말장치를 이용하여 시분할 시스템과 인터페이스 수행 실시간 시스템(real-time system) 매우 엄격하게 정의되어 있는 시간 제약 등과 같은 사건들의 상황을 분석 사전에 정의된 시간제약 조건 내에서 수행되어야 함. 시분할 시스템
운영체제의 유형 다중 처리 시스템(multiprocessing system) 공유기억장치(common memory)를 통하여 하나로 연결된 다중 처리기 (multiprocessor)의 제어 및 공유를 위한 시스템 매우 밀접하게 동기화된 밀착된 결합(tightly coupled) 시스템과 동기화가 엄격 하지 않고 높은 작업 처리율을 제공하는데 목적을 두는 느슨한 결합(loosely coupled)시스템으로 나뉜다 다중 처리 시스템
운영체제의 유형 개인용 컴퓨터 시스템 분산처리 시스템(distributed processing system) 중앙처리장치와 주변장치 이용률을 최대화시키려는 노력 대신에 편리성과 응답성을 더 중요시 함. 분산처리 시스템(distributed processing system) 느슨한 결합(loosely coupled) 시스템이라고도 함. 프로세서들이 기억장치와 클럭을 공유하지 않으며 각 프로세서들은 자신의 지역(local) 기억장치 보유 프로세서들은 고속의 버스(bus)나 전화선과 같은 다양한 통신 라인을 통해 서로 통신 자원을 가지고 있는 사이트는 서버(server)가 되며, 반면 다른 사이트에서의 클라이언트(client)나 사용자는 그 자원을 사용
운영체제의 유형 분산처리 시스템(distributed processing system) 두 가지 기법 장점 네트워크 운영체제 노드 간 기종의 차이가 심하고 대규모 네트워크 시스템에 사용 통신기능은 기존 운영체제 위에 존재함 각 노드들은 독자적인 운영체제를 지님 자원 공유가 곤란함 분산 운영체제 각 노드들은 하나의 운영체제로 운영 통신기능은 운영체제 설계 시 고려됨 자원 공유가 용이함 장점 자원 공유 • 연산 속도 향상 신뢰성 향상 • 통신 가능
운영체제의 유형 멀티미디어 시스템(multimedia system) 다양한 미디어를 이용하여 멀티미디어 콘텐츠를 제작하기 위해 필요한 하드웨어와 소프트웨어로 구성 멀티미디어 콘텐츠를 제작 하기위한 저작도구(authoring tool)필요 멀티미디어 시스템의 계층구조
운영체제의 유형 임베디드 시스템(embedded system) 정의 임베디드 운영체제의 강점 마이크로프로세서 또는 마이크로컨트롤러를 내장하여 시스템 제작자가 의도한 몇 가지 혹은 특수한 기능만을 수행하도록 제작된 시스템 임베디드 운영체제의 강점 임베디드 시스템과 그 한정된 자원들의 능력에 맞게 최적화 가능
운영체제에 대한 관점 자원 관리자 관점 각 자원에 대한 수행 과정 프로세스 관리 기능 기억장치 관리 기능 자원의 상태를 추적·저장 어떤 프로세스가 언제 어떤 자원을 얼마나 사용할 것인지를 결정하기 위한 정책 수립 자원의 할당 자원의 회수 프로세스 관리 기능 중앙처리장치와 프로세스(process)의 상태를 추적·저장하며, 이를 수행하는 프로그램 트래픽 제어기(traffic controller) 작업에게 프로세서 할당 작업 스케줄러(job scheduler) 프로세스에게 CPU 할당 프로세스 스케줄러(process scheduler) 기억장치 관리 기능 기억장치의 상태를 추적·저장 및 할당 ·회수
운영체제에 대한 관점 자원 관리자 관점 장치(device) 관리 기능 정보 관리 기능 채널 등의 제어장치 및 입출력장치와 같은 각종 장치의 상태를 추적 및 저장 입출력 트래픽 제어기(I/O traffic controller) 어떤 프로세스가 얼마나 사용할지를 결정 입출력 스케줄링(I/O scheduling) 정보 관리 기능 정보의 위치, 사용 여부 및 상태 등을 추적·관리 파일시스템(file system) 정보 자원할당 ·회수
운영체제에 대한 관점 프로세스 관점 하나의 작업이 제시되어 완료될 때까지 하나의 프로세스에 대하여 그 상태를 변환시키고 관리 다중 프로그래밍 시스템에서의 복수 프로세스
운영체제에 대한 관점 계층 구조 관점 자원 관리 루틴이 어떻게 수행되고, 이 루틴들이 상호간에 어디에 논리적으로 위치하는가 모듈화 된 자원 관리 계층적 기계 개념의 구성도
운영체제에 대한 관점 커널의 구성 레벨 및 레벨별 해당모듈 (예) 레벨1: 프로세서 관리 하위모듈 (동기화 프리미티브, 프로세스 스케줄러) 레벨2: 기억장치 관리( 메모리 할당 및 회수) 레벨3: 프로세서 관리 상위 모듈(메시지,프로세스의 생성 및 제거) 레벨4: 장치 관리(입출력 트래픽 제어기) 레벨5: 정보 관리(파일 시스템)
입출력 프로그래밍 입출력 프로그래밍 BIOS (basic input/output system) 대부분의 컴퓨터에 있어서 입출력은 중앙처리장치와 비동기적(asynchronous)으로, 시간관계 규정 없이 병행적으로 수행됨 BIOS (basic input/output system) 전원이 켜지면 메인보드와 CPU에 파워가 준비되었다는 신호 보내게 되고, 컴퓨터는 다음 수행할 명령(commands)과 코드(code)를 언제라도 접근할 수 있어야 함. ROM에서 얻어낸 정보: BIOS BIOS: 부트 프로세스를 실행시키는 명령어들을 포함 컴퓨터 칩에 저장된 명령어들: 펌웨어(firmware) Linux와 Mac: 개방 펌웨어, 개방 BIOS 등의 BIOS를 뛰어넘는 확장성 펌웨어 인터페이스(EFI: extensible firmware interface)를 개발함
입출력 프로그래밍 부트 진행과정(boot process) 컴퓨터 가동을 위해 파워버튼을 누르면 부트 로더가 초기화 됨 POST(Power-On Self-Test) 수행 시작 다른 BIOS들이 가동을 위해 초기화 됨 유저는 필요에 따라 BIOS 접근을 위한 비밀키 입력을 요구 받음 간단한 메모리 테스트가 수행되고 여러 파라메타들이 세트 됨 플러그와 플레이 디바이스들이 초기화 됨 DMA(Direct Memory Access)채널을 위한 자원들과 IRQ(Interrupt Request)가 할당됨 부트 디바이스들이 정해지고 초기화 됨 OS가 메모리에 적대되고 초기화 됨 (OS Loading)
입출력 프로그래밍 POST (power on self test) 성공적인 부팅 및 적정 수행의 확인을 위해 필요 하드웨어에 대해 행하는 테스트 수행하는 일 BIOS의 완벽한 보전 확인 주기억장치의 위치결정, 확인 및 그 크기(size)의 결정 시스템 버스(buses)와 시스템디바이스의 결정 및 시작 요구되는 다른 BIOS들의 시작허용 (비디오 또는 그래픽카드 등) 사용자에게 BIOS시스템 구성 페이지에 접근할 수 있는 권한부여 부트 디바이스 위치 및 부트 파일을 가진 디바이스 찾기 운영체제에 의해 요구되는 그 외 작동준비(setup)관련 작업들의 수행
입출력 프로그래밍 버퍼링(buffering) 입출력장치의 느린 속도를 보완하는 한 가지 방법 중앙처리장치와 입출력장치 간의 시간적 불균형을 극복 미리 읽혀진 레코드들이 존재하는 곳은 주기억장치의 일부 버퍼를 이용한 출력의 예
입출력 프로그래밍 버퍼링(buffering) 입출력 장치는 채널(channel)에 연결되어 채널이 CPU와 데이터를 주고받아 입출력은 CPU와는 무관하게 비동기적으로 수행된다. 이중 버퍼링의 예
입출력 프로그래밍 스풀링(spooling) 디스크(disk)를 매우 큰 버퍼처럼 사용하는 것 스풀링
입출력 프로그래밍 채널(channel) 출력장치와 중앙처리장치 사이에 입출력 전담 처리기 입출력 채널을 갖는 컴퓨터 시스템
입출력 프로그래밍 채널(channel) 선택 채널(select channel) 여러 개의 입출력장치가 연결되어 있다 하더라도 한 번에 단 하나의 입출력장치만을 선택적으로 지원 비교적 전송 속도가 빠른 입출력장치인 디스크나 CD-ROM 등의 입출력을 제어 멀티플렉서 채널(multiplexer channel) 다수의 저속도 입출력장치가 채널의 단일한 데이터 경로를 공유하면서 데이터를 전송 여러 개의 저속도 입출력장치가 멀티플렉서 채널에 연결되어 시분할(timesharing) 형태로 제어 채널과 중앙처리장치 간의 통신은 일반적으로 인터럽트(interrupt)에 의하여 이루어 진다.
입출력 프로그래밍 채널(channel) 다양한 형태의 채널 연결 구조
입출력 프로그래밍 인터럽트(interrupt) 시스템에 예기치 않은 상황이 발생하였을 때, 그것을 운영체제에 알리기 위한 메커니즘 종류 입출력(I/O) 인터럽트 외부(external) 인터럽트 SVC(SuperVisor Call) 인터럽트 기계 검사(machine check) 인터럽트 프로그램 에러(program error) 인터럽트 재시작(restart) 인터럽트
입출력 프로그래밍 인터럽트의 구조 및 처리 인터럽트 처리 과정 인터럽트의 처리 과정 및 PSW 위치