본 정리는 운영체제(Operating System: Concepts) 9th edition과 22학년도 1학기 건국대학교 운영체제 수업을 바탕으로 하고 있습니다.
컴퓨터 시스템 연산
컴퓨터 시스템은 하나 이상의 CPU, 그리고 여러 개의 장치 제어기로 구성된다.
장치 제어기들은 공유 메모리에 대한 접근을 제공하는 공통 버스에 의해 연결된다.
부트스트랩 프로그램 (bootstrap program)
컴퓨터가 구동을 시작하기 위해 수행하는 초기 프로그램, ROM(read only memory)에 저장되어있다.
1. 시스템의 모든 면을 초기화
2. 운영체제의 커널을 찾아 메모리에 적재
* 커널
운영체제의 핵심 부분으로, 부팅 후 메모리에 상주한다.
커널의 역할
1. 기능적 측면
자원 관리 및 자원 사용에 관한 서비스를 제공 (자원 경영)
부팅 단계에서 하드웨어 진단 및 초기화 기능을 제공하고, 디스크 상의 커널 프로그램을 메모리로 적재한다.
부팅 후에는 프로세스 경영, 중앙처리장치 경영, 주기억 장치 경영 파일 시스템 경영 등 각종 자원 관리 및 사용을 관리한다.
2. 커널 내부 함수
(1) 시스템 호출 함수들의 집합 (응용 프로그램에게 시스템 호출을 제공)
(2) 인터럽트 처리기의 집합 (시스템 clock 및 대부분 입출력 장치와 관계된 장치 드라이버들의 핵심)
커널이 메모리에 적재된 후 수행이 시작되면 시스템과 사용자에게 서비스를 제공할 수 있게 된다.
만약 사건(event)이 발생할 경우, 하드웨어 또는 소프트웨어가 인터럽트(interrupt)를 발생시킨다.
CPU는 명령어를 메모리로부터 가져올 수 있기 때문에
프로그램을 수행하기 위해서는 프로그램이 반드시 메모리에 있어야 한다.
* 주 메모리, 주기억장치(Random-Access Memory, RAM) : CPU가 직접 접근할 수 있는 휘발성 저장 장치
* 적재 명령(load) : 주기억장치로부터 CPU 내부 레지스터로 한 바이트 또는 한 워드를 옮기는 것
* 저장 장치 정의와 표기
bit : 컴퓨터 저장장치의 기본단위 (0, 1)
byte : 1 byte = 8 bit
word : 주어진 컴퓨터 구조의 본연의 데이터 단위 (연산의 기본 단위)
ex. 64비트 레지스터 & 64비트 메모리 주소 지정을 갖는 컴퓨터는 64bit(8byte) 워드를 가진다.
인터럽트 (interrupt)
* 인터럽트를 발생시키는 방법
1. 하드웨어 : 시스템 버스를 통해 CPU로 신호를 보냄
2. 소프트웨어 - 소프트웨어에서 발생한 인터럽트는 트랩(trap)이라고 부른다.
(1) 시스템 호출(system call) - 사용자 프로그램의 운영체제 서비스 수행 요청 (ex: read_file() 등)
(2) 예외(exception) - 0으로 나누려는 경우, 메모리 참조 오류 등
* 인터럽트가 발생하면
1. 중단
현재 진행 중인 프로세스 또는 하위의 인터럽트 서비스 루틴(Interrupt Sevice Routine, ISR) 수행을 중단시킨다.
2. 문맥 보존
프로그램 카운터(PC) 및 CPU 레지스터 값들을 보존한다.
3. ISR 진입
현재의 인터럽트에 해당하는 인터럽트 서비스 루틴으로 제어를 넘긴다. 즉, PC를 해당 서비스 루틴의 시작 주소로 변경한다.
인터럽트 벡터 테이블에 장치 번호 순서대로 인터럽트 서비스 루틴의 시작 주소가 기록되어 있다.
* 인터럽트 처리가 끝나면
인터럽트 되었던 연산 재개한다. 즉, 보존된 레지스터의 내용을 복구해야 하는데
이때 여러 프로세스가 수행 중이었다면 어떤 프로세스를 재개할 것인지 운영체제가 선택해야 한다.
컴퓨터 시스템 구조
사용된 범용 처리기의 수에 따라 분류된다.
1. 단일 처리기 시스템 (Single-Processor Systems)
범용 CPU가 하나 있는 시스템 (하나의 주 처리기)
2. 다중 처리기 시스템 (Multiprocessor Systems)
두 개 이상의 처리기를 가지며, 물리 메모리와 주변 장치들을 공유한다.
[ 장점 ]
1. 처리량(throughput) 증가
2. 비용 절약
처리기가 주변 장치, 대용량 저장 장치, 전원 공급 장치를 공유하기 때문이다.
3. 신뢰성 증가
한 처리기가 고장 나도 시스템은 정지하지 않고 속도만 느려지게 된다.
[ 다중 처리기 시스템의 두가지 형태 ]
(1) 비대칭적 다중 처리 (asymmetric multiprocessing)
주종 관계 (주 처리기 - 종속 처리기)
하나의 주 처리기가 시스템을 제어 (작업 스케줄링) → 종속 처리기에 작업을 할당한다.
(2) 대칭적 다중 처리 (symmetric multiprocessing, SMP)
거의 모든 현대의 운영체제가 지원하는 형태이다.
각 처리기가 자신의 레지스터 집합과 캐시를 가져, 운영체제 내의 모든 작업을 수행한다. (메모리는 공유됨)
하지만 처리기 간 수행에 대하여 불균형이 발생할 수 있는데, 이는 프로세스와 자원의 동적 공유를 통해 줄일 수 있다.
3. 클러스터형 시스템 (Clustered Systems)
다중 처리기의 특별한 형태로,
둘 이상의 독자적 시스템을 근거리 통신망(LAN)으로 연결하여 구성한다. (한 클러스터 네트워크로 연결된 다수의 컴퓨터 시스템)
* 높은 가용성(availability) : 하나 이상의 컴퓨터 시스템이 고장 나더라도 서비스는 계속 제공될 수 있다.
* 고성능 계산환경 제공 가능 : 병렬화 기법으로 프로그램을 클러스터의 각 컴퓨터에서 수행되는 분리 요소로 나누어 병렬 수행할 수 있기 때문이다.
참고: https://eunajung01.tistory.com/33?category=565414