운영체제 정의
컴퓨터 하드웨어를 관리하는 프로그램. 사용자와 하드웨어 사이에서 중재자 역할을 수행하는 프로그램.
운영체제는 자원 할당자이다.
운영체제는 제어 프로그램이다.
컴퓨터에서 항시 수행되는 하나의 프로그램은 커널(kernel)이다.
운영체제의 목적
- 환경 관리 : 편리하게 사용할 수 있는 환경 제공
- 프로세스 관리 : 사용자 프로그램을 쉽게 해결
- 자원 관리 : 하드웨어를 효율적으로 사용
컴퓨터 시스템 구성
- 하드웨어 : 중앙처리장치, 메모리, 입출력장치로 구성
- 운영체제
- 응용 프로그램
- 사용자
부트스트랩 프로그램
부트스트랩 프로그램은 ROM 등의 펌웨어에 저장된다.
시스템의 모든 기능을 초기화 한다
커널을 메모리에 로딩하고 실행을 시작한다
컴퓨터 시스템 조직
하나 이상의 제어기, CPU가 공유 메모리에 접근하기 위해 버스 (common bus) 로 연결되어 있음.
CPU와 장치들은 메모리 사이클을 얻기 위해 경쟁하면서 동시에 수행됨.
인터럽트 (interrupts)
- 하드웨어에 의한 인터럽트: 어느때나 cpu에 신호를 보내어 인터럽트 발생 가능
- 소프트웨어에 의한 인터럽트 : 시스템 호출(System calls)에 의한 특정 연산을 실행 함으로써 인터럽트 발생
인터럽트는 인터럽트 벡터를 통해 제어를 인터럽트 서비스루틴에 넘긴다.
인터럽트로 인해 제어가 넘어가기전, 인터럽트된 명령어의 주소(PC, register)를 저장한다. 그래야 서비스 루틴이 끝난 후에 다시 해당 명령어 수행으로 복귀해야 하기 때문.
인터럽트 처리 중에 다른 인터럽트는 허용되지 않는데, 이는 인터럽트 소실 (interrupt lost)를 막기 위함이다.
트랩(trap): 에러나 사용자 요구에 의해 소프트웨어적으로 발생한 인터럽트
결론: 운영체제는 인터럽트 기반으로 동작한다.
인터럽트 서비스 루틴
인터럽트 서비스 루틴 : 일반루틴, 인터럽트 핸들러로 구성
일반루팅이 먼저 호출되고, 인터럽트에 맞는 처리를 위해 인터럽트 핸들러가 호출된다.
인터럽트는 가능한 빨리 처리되어야한다. 따라서 정해진 일정 수의 인터럽트 처리만 지원한다.
그럼 순서대로 처리하기 위하여 인터럽트 핸들러를 가리키틑 포인터 테이블이 필요 : 인터럽트 벡터 테이블
테이블 포인터는 일반적으로 하위 메모리 영역에 정렬되어 저장된다.
입출력 구조 I/O Structure
입출력 : 장치와 메모리/ 로컬 버퍼 사이의 데이터 전송을 담당.
- 장치 제어기 ( device controller) : 장치에 존재함
- 장치 드라이버 ( device driver ) : 운영체제에 존재함. 운영체제는 여러 장치 드라이버 지원을 위해 공통 인터페이스를 제공한다.
입출력의 연산 순서
- 장치 드라이버는 장치 제어기 내의 적절한 레지스터에 필요한 값을 로드 한다
- 장치 제어기는 취할 동작을 조사하기 위해 레지스터의 내용을 조사한다.
- 장치 제어기는 장치와 장치의 로컬 버퍼 사이에 데이터 전송을 시작한다.
- 전송이 끝나면 장치 제어기는 인터럽트를 발생시켜 로컬 버퍼로이 데이터 전송이 끝났음을 운영체제에게 알린다.
- 장치드라이버는 제어를 운영체제로 복귀시킨다.
- 운영체제는 장치의 로컬버퍼에있는 내용을 메모리로 읽기 시작한다.
직접 메모리 접근 (Direct Memory Access: DMA)
보통 대용량의 데이터를 전송할때 사용되며, 고속의 입출력 장치에 사용된다.
장치 제어기는 CPU의 간섭없이 로컬 버퍼로부터 메인 메모리로 많은 양의 데이터 블록들을 직접 전송한다.
DMA가 일어나는 동안 CPU는 다른 작업을 수행할 수 있다.
DMA는 바이트 단위가 아닌 블록 단위로 발생한다.
저장소 구조 (Storage Structure)
- 메인 메모리 Main Memory : CPU가 직접적으로 접근 할 수 있는 유일한 대규모 저장매치. 휘발성
- 2차 저장소 Secondary Memory : 확장 저장소로, 대규모 저장 용량을 제공함. 비휘발성
- 자기 디스크 Magnetic disks : 자기 기록 물질로 덮여진 단단한 금속 혹은 유리 플래터. 트랙과 섹터로 구성되어있다.
- 저장 시스템은 계층적 구조를 가진다 ( 기준: 속도, 가격, 휘발성)
- 캐싱(caching) : 정보를 보다 빠른 저장 장치에 복사해 도는 기법
캐싱 Caching
자주 사용되는 정보는 느린저장소에서 빠른 저장소로 복사되어 유지된다.
일반적으로 캐시는 캐시되는 저장소(느린저장소)보다 용량이 작다.
캐시 관리(cache management)는 중요한 설계 문제이다.
현대 컴퓨터 시스템의 동작
싱글 프로세서 시스템
하나의 cpu로 구성된 시스템
싱글 프로세서 시스템은 PDA에서 메인 프레임까지 폭 넓게 사용됨
멀티 프로세서 (multi-processor) 시스템
근접하여 통신하는 두 개 이상의 CPU로 구성된 시스템
컴퓨터 버스, 클럭, 메모리, 주변장치 등을 공유함
= 병렬 시스템 = 밀결합 시스템
>> 장점
- 처리율 증가 (throughput) : 적은시간에 많은 일을 처리 가능
- 규모의 경제 (economy of scale) : 동일한 수의 여러 싱글 프로세서 시스템들을 구성하는 것보다 비용이 저렴하다
- 신뢰성 증가 (reliability) : 하나의 프로세서에 이상이 생겨도 시스템이 느려질 뿐 시스템 자체가 멈추지 않는다.
>> 단점
- 복잡성 (complexity) 증가 : 한 개 프로세서로 구성된 시스템보다 하드웨어적, 소프트웨어적으로 매우 복잡하다.
비대칭 멀티프로세싱 (asymmetric )
프로세서들 간에 master - slave 관계가 있다.
매스터 프로세서가 슬레이브 프로세서에 작업을 할당하고 관리한다.
대칭 멀티 프로세싱 (symmetric multi-processing: SMP)
주종 관계가 없이. 모든 프로세서들이 동일한 피어(peer)로 동작.
오늘날 멀티 프로세서 시스템은 대부분 SMP 구조를 채택하고있다.
멀티 코어 프로세서 (Multi-Core Processor)
하나의 칩에 여러 개의 CPU 코어를 포함시키는 구조.
CPU 칩 간의 통신보다는 칩 내 코어 간의 통신이 훨씬 빠르다.
다중 코어 칩의 복수의 단일 코어 칩들 보다 전력 소모도 적다.
클러스터 시스템 (Cluster System)
여러 프로세서가 아닌, 여러 시스템들이 함께 동작하는 구조이다.
통상 SAN (storage area network)을 통하여 스토리지(저장소)를 공유한다.
비대칭 클러스터링, 대칭 클러스터링이 있음.
고장에 대한 고가용 (high availability) 를 제공
ex) HPC (High Performance Computing) : 이것들중 우수한 것을 슈퍼컴퓨터로 분류하기도함.
운영체제 구조
운영체제의 가장 중요한 측면은 효율성을 위한 멀티프로그래밍/다중프로그래밍 능력이다.
한 사용자가 CPU와 I/O장치를 항시 바쁘게 쓸 순 없다. 즉 독점은 효율적이지 못하다
여러 작업 중 스케줄러(scheduler)에 의해 하나의 작업이 선정되어 수행된다.
>> 시분할(timesharing) 혹은 멀티태스킹(multitasking) 기능
운영체제가 여러 작업들에 CPU를 자주 전환 하여 배정함으로써, 작업들이 골고루 진행되도록 하는 목적
사용자가 여럿이더라도 혼자서 컴퓨터를 시스템을 사용하는 듯한 상호작용(interactive) 컴퓨팅을 제공한다.
상호작용 컴퓨팅에서는 일반적으로 반응시간 (response time)이 1초 미만이어야한다.
각 사용자는 메모리에서 수행되는 프로그램이 적어도 하나는 있어야하는데, 프로그램의 실행을 프로세스라 한다.
여러 작업이 동시에 요청이 온다면 CPU 스케줄링이 동작한다.
프로세스들 모두가 메모리에 올라올 수 없다면 스와핑 (swapping)이 필요하다.
가상 메모리(virtual memory) 개념에 의해 실제 메모리를 초과하는 프로세스들의 실행이 가능한다.
단점: 특정 프로세스가 무한루프에 빠질 수 있다(시스템 전체중단? 일부중단?). 특정 프로세스가 운영체제 혹은 다른 프로세스를 수정하려 한다 (막아야함) -> 해답은 이중모드 (dual-mode)
이중 모드 Dual-Mode
이중 모드란? 사용자와 커널 모드를 분리하여 운영한다.
- 사용자 모드 : 사용자 프로그램이 동작하는 모드
- 커널 모드 : 감독자 모드, 시스템 모드, 특권 모드라고도 불리며 운영체제가 동작함.
두 개의 모드 구분은 하드웨어에서 제공되는 모드 비트(mode bit)로 구분한다.
모드 비트가 1이면 사용자모드, 0이면 커널모드.
인터럽트, 트랩, 시스템 호출 등에 의해 사용자 모드에서 커널 모드로 전환이 발생한다.
시스템 부팅 시 , 하드웨어는 커널모드로 동작한다.
운영체제가 로드된 후, 응용 프로그램들이 사용자 모드에서 동작한다.
인터럽트나 트랩이 발생하면 하드웨어는 사용자 모드에서 커널모드로 전환된다.
모드비트 1->0
커널 모드에서 제어권을 획득한 운영체제가 작업을 수행한다.
작업이 끝나면 다시 0->1변경하고 전환
타이머(Timer)에 의한 모드 전환 : 타이머는 특정 프로그램이 자원을 독점하거나 무한루프에 빠지는 현상 방지
프로세스 관리
프로세스는 실행중인 프로그램이다.
프로그램 : 디스크에 존재하는 수동적(passive) 객체
프로세스 : 메모리에서 동작하는 능동적(active) 객체
프로세스는 작업 수행을 위해 자원(resource)을 필요로 한다. 자원: cpu, 메모리, 입출력, 파일
프로세스 관리 활동
사용자와 시스템 프로세스를 생성, 삭제할 수 있다.
프로세스를 중지(suspend)했다가 재개(resume)할 수 있다.
🏷프로세스 동기화(process synchronization)를 제공하는 메커니즘이 있다.
🏷프로세스간 통신(process communication) 을 위한 메커니즘이 있다.
🏷교착 상태 처리 (deadlock handling)을 위한 메커니즘이 있다.
메모리 관리
처리하기 전후의 모든 데이터는 메모리에 있어야 한다.
명령어가 실행되기 위해서는 메모리에 있어야한다.
현재 메모리의 어느 부분이 누구에 의해 사용되는지 파악해야한다.
어떤 프로세스들의 데이터를 메모리 밖으로 옮기고, 반대로 메모리 내로 새롭게 옮길지를 결정한다.
필요에 따라 메모리공간(memory space)을 할당(allocate)하고 회수(deallocate)한다.
저장소 관리 (Storage management)
운영체제는 정보 저장소에 대한 공통적인 논리적 뷰 (Common, logical view)를 제공 = 파일
파일은 보통 디렉토리에 조직된다.
접근제어 (Access control)은 누가 어떤 파일에 접근 할 수 있는지를 결정한다.
운영체제가 제공하는 파일관련 동작
- 생성, 삭제
- 조작 기본 명령어
- 2차 저장소에 매핑
- 백업
대용량 저장소 관리
디스크는 메인 메모리를 초과하는 데이터나 오랜 기간 보관되어야 하는 데이터를 저장하는데 사용된다 -> 2차 저장소
3차저장소 : CD , DVD 등등
2차 저장소는 3차저장소의 캐시로 볼 수 있다.
운영체제의 목적 중 하나는 사용자에게 하드웨어 장치의 특징을 숨기는 것이다.
입출력 서브시스템 (I/O subsystem)
입출력에서 메모리 관리를 함
- 버퍼링(buffering) : 전송되는 동한 임시로 데이터 저장
- 캐싱(caching) : 성능을 위해 빠른 저장장치에 저장
- 스풀링(spooling) : 어떤 작업의 출력과 다른 작업의 입력이 겹치는 것이 기능 제공
요약
'📗 Computer Science' 카테고리의 다른 글
[네트워크] Link Layer - 링크 계층 (0) | 2021.01.07 |
---|---|
[네트워크] Network Layer - 네트워크 계층 (0) | 2021.01.07 |
[네트워크] TCP 개념 (0) | 2021.01.01 |
알고리즘 정리 (0) | 2020.12.14 |
마이크로프로세서 용어정리 (0) | 2020.12.07 |