컴퓨터 하드웨어를 관리하는 프로그램. 사용자와 하드웨어 사이에서 중재자 역할을 수행하는 프로그램.
운영체제는 자원 할당자이다.
운영체제는 제어 프로그램이다.
컴퓨터에서 항시 수행되는 하나의 프로그램은 커널(kernel)이다.
하나 이상의 제어기, CPU가 공유 메모리에 접근하기 위해 버스 (common bus) 로 연결되어 있음.
CPU와 장치들은 메모리 사이클을 얻기 위해 경쟁하면서 동시에 수행됨.
입출력 : 장치와 메모리/ 로컬 버퍼 사이의 데이터 전송을 담당.
장치 제어기 ( device controller) : 장치에 존재함
장치 드라이버 ( device driver ) : 운영체제에 존재함. 운영체제는 여러 장치 드라이버 지원을 위해 공통 인터페이스를 제공한다.
과거에는 장치 데이터를 처리하기 위해 CPU를 거쳐 메모리에 로드하는 방식을 사용했으나, CPU 자원이 너무 많이 소모되기 때문에 이젠 DMA(Direct Memory Access)를 사용한다.
DMA는 장치와 메모리를 직접 연결하는 방식으로, 버스가 지원하는 기능이다.
메모리의 일정 부분은 DMA에 사용될 영역으로 지정되며, DMA를 제어하는 컨트롤러는 DMA 컨트롤러라고 부른다.
하드웨어에 의한 인터럽트: 어느때나 cpu에 신호를 보내어 인터럽트 발생 가능
소프트웨어에 의한 인터럽트 : 시스템 호출(System calls)에 의한 특정 연산을 실행 함으로써 인터럽트 발생
인터럽트는 인터럽트 벡터를 통해 제어를 인터럽트 서비스루틴에 넘긴다.
인터럽트로 인해 제어가 넘어가기전, 인터럽트된 명령어의 주소(PC, register)를 저장한다. 그래야 서비스 루틴이 끝난 후에 다시 해당 명령어 수행으로 복귀해야 하기 때문.
인터럽트 처리 중에 다른 인터럽트는 허용되지 않는데, 이는 인터럽트 소실 (interrupt lost)를 막기 위함이다.
트랩(trap): 에러나 사용자 요구에 의해 소프트웨어적으로 발생한 인터럽트
Main Memory : CPU가 직접적으로 접근 할 수 있는 유일한 대규모 저장매치. 휘발성(DRAM)
Secondary Storage : 확장 저장소로, 대규모 저장 용량을 제공함. 비휘발성(SSD, HDD)
Magnetic disks : 자기 기록 물질로 덮여진 단단한 금속 혹은 유리 플래터. 트랙과 섹터로 구성되어있다.
Tertiary Storage : data 백업용
저장 시스템은 계층적 구조를 가진다 ( 기준: 속도, 가격, 휘발성)
캐싱(caching) : 정보를 보다 빠른 저장 장치에 복사해 두는 기법
근접하여 통신하는 두 개 이상의 CPU로 구성된 시스템
컴퓨터 버스, 클럭, 메모리, 주변장치 등을 공유함
= 병렬 시스템 = 밀결합 시스템
장점
단점
대칭 멀티프로세싱 방법(SMP) : 동등한 관계에서 하나의 일을 분산해서 처리한다. 에러가 생길 시 에는, 해당 프로세서의 일을 다른 프로세서가 나눠 가진다.
Uniform memory access(UMA) : 메모리 접근이 동일한 시간이다.
비대칭 멀티프로세싱 방법(ASMP) : 보스 프로세서(Boss processor)가 다른 프로세서를 관리하여, 부하 분산(Loadbalancing)을 효율적으로 하는 방법.
Non-Uniform memory access(NUMA) : 메모리 접근 시간이 동일하지 않다.
하나의 칩에 여러 개의 CPU 코어를 포함시키는 구조.
CPU 칩 간의 통신보다는 칩 내 코어 간의 통신이 훨씬 빠르다.
다중 코어 칩의 복수의 단일 코어 칩들 보다 전력 소모도 적다.
여러 프로그램을 메모리에 로드해 두고 한 프로세스가 대기 상태가 되면 다른 프로세스의 작업을 수행하는 시스템이다.
운영체제가 여러 작업들에 CPU를 자주 전환 하여 배정함으로써, 작업들이 골고루 진행되도록 하는 목적
사용자가 여럿이더라도 혼자서 컴퓨터를 시스템을 사용하는 듯한 상호작용(interactive) 컴퓨팅을 제공한다.
상호작용 컴퓨팅에서는 일반적으로 반응시간 (response time)이 1초 미만이어야한다.
각 사용자는 메모리에서 수행되는 프로그램이 적어도 하나는 있어야하는데, 프로그램의 실행을 프로세스라 한다.
여러 작업이 동시에 요청이 온다면 CPU 스케줄링이 동작한다.
프로세스들 모두가 메모리에 올라올 수 없다면 스와핑 (swapping)이 필요하다.
가상 메모리(virtual memory) 개념에 의해 실제 메모리를 초과하는 프로세스들의 실행이 가능한다.
사용자와 커널 모드를 분리하여 운영한다.
두 개의 모드 구분은 하드웨어에서 제공되는 모드 비트(mode bit)로 구분한다.
모드 비트가 1이면 사용자모드, 0이면 커널모드.
인터럽트, 트랩, 시스템 호출 등에 의해 사용자 모드에서 커널 모드로 전환이 발생한다.
시스템 부팅 시 , 하드웨어는 커널모드로 동작한다.
운영체제가 로드된 후, 응용 프로그램들이 사용자 모드에서 동작한다.
인터럽트나 트랩이 발생하면 하드웨어는 사용자 모드에서 커널모드로 전환된다.
모드비트 1->0
커널 모드에서 제어권을 획득한 운영체제가 작업을 수행한다.
작업이 끝나면 다시 0->1변경하고 전환
타이머(Timer)에 의한 모드 전환 : 타이머는 특정 프로그램이 자원을 독점하거나 무한루프에 빠지는 현상 방지
유저 모드에서 커널 모드에 접근하려면 시스템 콜을 통해야 한다.