keywords
interrupt, interrupt vector table, interrupt 아키텍처, polling interrupt system, vector interrupt system, Non-maskable interrupt, maskable interrupt, interrupt chaining
dynamic random-access-memory, direct memory access,
다중 프로세서 시스템, 비대칭적 다중 처리, 대칭적 다중 처리, 클러스터 시스템
bootstrap - kernel load - demon
Multiprogramming(batch system), Multitasking(Time sharing)
컴퓨터 시스템은 4가지 요소로 나뉜다.
Hardware - 기본 컴퓨팅 자원 제공 : CPU, memory, IO devices 등
OS - 하드웨어 사용을 다양한 애플리케이션과 사용자들 사이에서 제어하고 조정한다.
Application - 시스템 자원을 사용해서 사용자의 컴퓨팅 문제를 해결하는 방법을 정의한다.
User - 사람, 기계, 다른 컴퓨터 등등
운영체제 (OS)란?
- 운영체제는 하드웨어 자원을 효율적으로 할당하고, 사용자 프로그램의 실행을 관리하여 이를 수행한다.
- OS는 많은 역할을 포괄하는데, 컴퓨터의 다양한 디자인과 용도 때문이다.
운영체제에 대해 모두가 동의할 수 있는 정의는 없다.
- 컴퓨터에서 항상 실행되는 하나의 프로그램은 커널이며, 운영체제의 일부이다.
- 나머지는 시스템 프로그램과 응용 프로그램중 하나이다.
- 오늘 날의 운영 체제는 미들웨어를 포함하는데, 이는 개발자에게 제공하는 소프트웨어 프레임워크의 집합이다.
컴퓨터 시스템 운영 방식
하나 이상의 CPU와 장치 컨트롤러가 공유 메모리에 접근할 수 있는 공통 버스를 통해 연결된다.
CPU 및 장치가 메모리 사이클을 경쟁하면서 동시에 실행된다.
입출력 장치와 CPU는 동시에 실행될 수 있다.
각 장치 컨트롤러는 특정 장치 타입을 담당하고, 로컬 버퍼가 있으며, 타입을 관리하기 위한 운영 체제 장치 드라이버를 갖고 있다.
CPU는 로컬 버퍼와 주 메모리 간의 데이터를 이동한다.
IO는 장치에서 컨트롤러의 로컬 버퍼로 이뤄진다.
장치 컨트롤러는 interrupt를 발생시켜서 CPU에게 작업을 완료했음을 알린다.
interrupt
interrupt: Interrupt vector table을 사용해서 interrupt service routine으로 제어를 넘김
interrupt vector table : interrupt service routine의 주소값을 갖고 있음
interrupt architecture : 중단된 명령어의 주소를 저장해야함
trap, exception : 소프트웨어가 발생시키는 interrupt, trap은 인위적이고 exception은 에러이다.
CPU 하드웨어에는 인터럽트 요청 라인 전선이 존재한다. 인터럽트를 감지하면 현재 실행중인 명령어가 끝나면 인터럽트를 처리한다.
interrupt 실행과정
1. HW/SW에 의해 인터럽트 발생
2. 현재 실행중인 작업 중단 (작업 상태 저장)
3. ISR 실행
4. 실행중이던 작업 재개
interrupt 종류
polling interrupt system: CPU가 인터럽트 발생여부를 주기적으로 검사하고, 인터럽트 발생 시 인터럽트 서비스 루틴 실행
vector interrupt system: 인터럽트가 발생하면 인터럽트 벡터 테이블에서 루틴의 주소를 찾아서 실행 <= 이게 더 효율적!
interupt request line
Non-maskable interrupt - 복구할 수 없어서 시스템을 종료해야함 - 메모리오류, 버스에러 등
maskable interrupt - 복구할 수 있어서 예외처리 가능 - HW/SW 인터럽트, 각종 catch되는 에러
interrupt chaining : interrupt를 처리하던 도중, 다른 interrupt가 발생했을 때 우선순위에 따라 먼저 처리한다.
Storage Sturcture
Main memory : CPU가 직접 액세스할 수 있는 유일한 대형 저장 매체이다.
일반적으로 volatile(일반적으로, 휘발성), Dynamic Random-access Memory 형태
보조 저장소 : 대규모 비휘발성(nonvolatile) 저장 용량 제공하는 주 메모리의 확장
HDD: 자석 기록 재료로 덮인 단단한 금속 및 유리판
디스크 표면은 트랙으로 논리적으로 나뉨. 트랙은 섹터로 나뉘어짐.
디스크 컨트롤러는 장치와 컴퓨터 간의 논리적 상호작용 결정
비휘발성 메모리(NVM) 장치 : 하드디스크보다 빠르고 비휘발성 (USB, SSD, MRAM 등)
Storage systems는 계층 구조로 구성된다.
- 속도
- 비용
- 휘발성
Caching (정보를 더 빠른 저장 시스템으로 복사, 주 메모리는 보조 저장소의 캐시)
각 장치 컨트롤러를 관리하는 Device Driver 필요
controller와 kernel 사이에 일관된 인터페이스 제공
Direct Memory Access(다이렉트 메모리 액세스)
고속 IO 장치에 사용되며, 메모리 속도에 근접하여 정보를 전송할 수 있음.
장치 컨트롤러는 CPU 개입 없이 버퍼 저장소에서 데이터 블록을 직접 주메모리로 전송
바이트당 하나의 인터럽트가 아닌 블록당 하나의 인터럽트만 생성
-> CPU를 거치지 않고 고속 입출력 장치와 메모리 간 데이터 전송을 수행하는 기술로, 전송 속도가 향상되고 인터럽트 수가 줄어듬.
Computer System Architecture
대부분의 시스템은 하나의 일반 목적 프로세서를 사용
대부분의 시스템은 특수 목적 프로세서도 갖고 있음.
다중 프로세서 시스템은 사용 및 중요성이 증가하고 있고, 병렬 시스템, 긴밀하게 결합된 시스템으로도 알려짐.
- 장점: 처리량 증가, Economy of scale, 신뢰성 증가
- 비대칭적 다중 처리(Asymmetric Multiprocessing) : 각 프로세서에게 특정 작업 할당
- 대칭적 다중 처리(Symmetric Multiprocessing) : 각 프로세서가 모든 작업을 수행
Clustered Systems
다중 프로세서 시스템과 비슷하지만, 여러 시스템이 함께 작동함. (여러 대의 컴퓨터가 하나의 시스템처럼 동작)
일반적으로 storage를 storage-area network를 통해 공유함.
에러가 발생해도 높은 가용성 서비스를 제공
Asymmetric(비대칭) 특정 노드가 더 강력한 성능을 냄. 예를 들어 특정노드가 DB서버를 중앙 집중형 역할을 함.
Symmetric(대칭) 클러스터링은 여러 노드가 서로 모니터링하며 응용 프로그램을 실행함.
일부 클러스터는 고성능 컴퓨팅(HPC)을 위한 것
응용 프로그램은 병렬화를 사용하도록 작성되어야 함.
일부 클러스터는 분산 락 관리자(DLM)을 가지고 있어, 공유 스토리지에서 충돌하는 작업을 피함.
Operating-System Operations
1. bootstrap 프로그램 : 시스템을 초기화하고 커널을 로드하기 위한 간단한 코드
2. kernel loads
3. system demons 시작 (커널 외부에서 제공되는 서비스)
kernel은 interrupt 기반 (HW & SW)
HW interrupt는 장치중 하나에 의한 것
SW interrupt (exception or trap):
- software error
- OS service 요청 - system call
- 무한 루프, 프로세스가 서로 또는 운영 체제를 수정하는 등의 다른 프로세스 문제 포함
Multiprogramming and Multitasking
효율성을 위해 Multiprogramming(Batch system)이 필요하다.
=> 여러 개의 프로그램을 한 번에 실행할 수 있도록 하는 시스템
Multiprogramming은 CPU가 실행할 작업(코드 및 데이터)을 항상 가지고 있도록 조직화한다.
시스템 내 총 작업 중 일부가 메모리에 유지된다.
작업 스케줄링을 통해 하나의 작업이 선택되어 실행된다.
IO를 기다려야 할 때, OS는 다른 작업으로 전환된다.
Multitasking(Time sharing)은 CPU가 작업을 자주 전환해서 사용자가 각 작업을 실행하는 동안 상호작용 할 수 있도록 하는 논리적인 확장이다.
- 응답 시간은 1초 미만
- 각 사용자는 적어도 하나의 프로그램이 메모리에서 실행되고 있어야 한다(프로세스)
- 여러 개의 작업이 동시에 실행 준비가 돼있으면 CPU 스케줄링이 이뤄진다.
- 프로세스가 메모리에 올라갈 자리가 없으면 swap을 통해 디스크나 다른 저장 장치로 이동시킨다. (다시 실행할 때 메모리에 다시 올라온다)
- 가상 메모리는 메모리에 완전히 적재되지 않은(일부만 메모리에 올라와 있는) 프로세스를 실행할 수 있도록 하여 메모리를 효율적으로 사용할 수 있게 한다.
'학교강의필기장 > 운영체제론' 카테고리의 다른 글
운영체제론[6]: 프로세스 간 통신, RPC (0) | 2023.04.24 |
---|---|
운영체제론[5]: 프로세스, 공유메모리와 매시지패싱 (0) | 2023.04.24 |
운영체제론[4]: 시스템 서비스, 운영체제 구조 - 커널, 시스템 부트 및 디버깅 (0) | 2023.04.24 |
운영체제론[3]: OS 서비스 기능, 시스템콜 (0) | 2023.04.24 |
운영체제론[2]: 운영체제론 개요 2 (0) | 2023.04.24 |