[운영체제 #1] Computer System Overview
운영 체제
- 하나 혹은 그 이상의 프로세서 하드웨어 자원을 이용하는 것
- 유저에게 일련의 서비스를 제공하는 것
- 보조메모리와 I/O 장치를 관리하는 것
기본 구성 요소
1. 프로세서 2. I/O 모듈 3. 메인 메모리 4. 시스템버스
1. 프로세서
- 컴퓨터 작동 제어
- 데이터 처리 함수를 수행
- CPU로 일컬어짐
2. 메인메모리
- 데이터와 프로그램을 저장
- 일반적으로 휘발성이다
- 메모리 내용은 컴퓨터를 끄면 잃어버린다
- real memoery 혹은 primary memory 로 일컬어진다
3. I/O 모듈
- 컴퓨터와 외부 장치 사이서 데이터를 이동시키는 것
- secondary memory(보조기억) 장치( ex 디스크), 터미널, 커뮤니케이션 장치
4. 시스템버스
- 프로세서, 메인메모리, I/O 모듈 사이에서 통신을 제공한다.
마이크로프로세서
- 데스크톱과 handneld computing 가져온 발명품
- 하나의 칩에 하나의 프로세서를 포함한다.
- 가장 빠른 범용 프로세서이다.
- 멀티프로세서
- 각각의 칩은 여러 개의 프로세서(코어)를 포함한다.
GPU
- 슈퍼컴퓨터에서 나온 SIMD 기술을 사용하여 데이터들 배열에서 효과적인 계산을 제공한다.
- GPU는 더 작고 보다 전문화된 코어로 구성된 프로세서. 여러 개의 코어가 함께 작동하므로, 여러 코어로 나누어 처리할 수 있는 작업의 경우 GPU가 엄청난 성능 이점을 제공
- 특정 3D 렌더링 작업 속도를 단축하기 위해 개발된 전문 ASIC로 시작했다.
- 일반적인 계산 처리에도 사용됨
-게임에서 물리적 시뮬레이션 돌릴때
- 큰 spreadsheets 에서 계산할때
DSPs(Digital Signal Processors)
- 디지털 신호를 처리하는 연산기 라고 한다. 즉 디지털 신호면 무엇이든 처리하는 장치를 말한다. 일상 생활에서 DSP가 사용되는 곳은 주로 오디오 신호 처리, 영상 신호 처리 분야이다. 그래픽 카드에 들어가는 GPU도 DSP의 일종에서 출발했다.
- 모뎀과 같은 I/o 장치에 내장되어 있었다. (이제는 특히 핸드헬드 분야에서 최고 수준의 컴퓨터 장치가 되고 있다)
- 여러가지 복잡한 연산들을 진행하는 데에 쓰이는 특수 프로세서
- 음성 및 비디오 인코딩/ 디코딩(코덱)
- 암호화 및 보안 지원 제공
SoC(System on a Chip)
- 완전 구동이 가능한 제품과 시스템이 한 개의 칩에 들어 있는 것을 말한다. 즉, 하나의 칩 내에서 CPU, GPU, NPU, RAM, ROM, 컨트롤러 등의 다양한 역할을 구현하는 체제이다
명령어 수행
- 프로그램은 명령어의 집합이다.
- fetch 와 execute로 명령어는 나눌 수 있다.
PC(Program counter) = 명령어 주소
IR = 실행되고 있는 명령어
AC = 임시 저장공간
0001 = 메모리에서 AC로 로드
0010 = 메모리에 AC 저장
0101 = 메모리에서 AC에 더하기
- 명령어 수행 과정에서 인터럽트가 발생하면 인터럽트 처리 루틴이 호출된다
인터럽트
하드웨어적인, 비동기적인 사건의 발생을 커널에게 알리는 방법.
인터럽트란 하드웨어적인, 비동기적인 사건의 발생을 커널에게 알리는 방법이다. 처리단계는 우선 사용자 수준 실행상태였다면 커널 수준 실행 상태로 전환한다. 현재 수행 중이었던 태스크의 문맥을 저장한 수 인터럽트 원인을 파악한다. IDT 를 이용해 인터럽트 처리 루틴을 호출하고 인터럽트를 처리한다. 그 후 저장되었던 context를 복원한다.
- 처리단계
1. 현재 사용자 수준 실행 상태였다면 커널 수준 실행 상태로 전환
2. 현재 수행 중이었던 태스크의 문맥 저장
3. 인터럽트 원인 파악
4. IDT 을 이용해 인터럽트 처리 루틴 호출
5. 인터럽트 처리
6. 저장되었던 문맥 복원
context saving : 현 프로세스 실행을 잠시 중단해야할 때 후에 계속 실행할 수 있도록 현재 프로세스의 context를 저장하는 방법
.context switching : 현재 실행중인 프로세스의 context 를 저장하고 다음 수행 될 프로세스의 context를 불러오는 작업
(* context switiching 이 일어나기 전에 반드시 saving 이 일어나야한다 . 그러나 saving 이 발생했다고해서 반드시 switching 이 발생하는 것은 아니다.)
- 만약 다른 인터럽트 처리 중에 인터럽트가 발생하면,, sequential interrup 처리와 nested interrupt 처리 가능,, sequential 은 하나끝내고 다음거 , nested 는 하나 도중에 다음거
트랩
소프트웨어적인, 동기적인 사건의 발생을 커널에게 알리는 방법
Trap의 종류
- div_by_zero, invalid machine code, page fault, protection fault, system call
- 트랩의 처리 또한 IDT 을 이용한다. ( 트랩은 내부 인터럽트라고 한다.)
(* IDT 는 커널이 초기화 될 때 생성되며, 인터럽트에 대한 정보가 저장되어 있는 테이블이다.)
System call
태스크가 커널의 서비스를 요청하는 것
트랩 처리 매커니즘에 의해 처리한다.
Memory Hierarchy
- 주기억장치
프로세스가 실행되기 위해선 프로그램이 메모리에 올라와야한다. 프로그램을 보조기억장치에서 주기억장치로 적재시키면 그 프로그램은 실행되어 프로세스가 된다. OS 가 사용하는 커널영역과 User 가 사용하는 사용자영역으로 구분
- 보조메모리
secondary memory, auxiliary memory, 휘발하지 않
- 캐시메모리
주기억장치에 저장된 내용의 일부를 임시로 저장해두는 기억장치
CPU와 주기억장치 사이의 속도 차이로 인한 성능 저하를 방지하기 위한 방법
속도가 주기억장치보다 빠르.
locality: 최근에 사용한 것은 또 사용할 가능성이 높기에 가까운 곳에 놔둬서 빠르게 처리할 수 있도록 캐시메모리에 적재한다.
DMA
입출력장치와 메모리 사이 데이터 흐름에서 CPU를 배제하기 위해 사용하는 입출력 제어 방식.
예를 들어 하드디스크에서 메모리로 데이터를 이동시킨다. 이때 가장 기본적인 방식인 Programmed I/O(Polling) 방식으로 구현하면 하드디스크에서 데이터를 꺼낸 후 시스템 버스를 통해 CPU 레지스터에 옮겨지고 다시 시스템 버스를 통해 CPU 레지스터에서 메모리로 이동한다. 가장 큰 문제는 입출력 시간 동안 CPU가 idle 상태로 대기하는 것이다. I/O 디바이스에 비해 CPU는 비교할 수 없을 정도로 고속이기 때문에 그 시간을 낭비한다는 것은 상당히 비효율적이다.
DMA 동작 순서는 아래와 같다.
1. 입출력장치가 CPU에게 입출력 요청
2. CPU가 DMA 컨트롤러에 명령 송신
3. DMA가 CPU에게 시스템 버스 사용 요청
4. CPU가 버스 사용 허가(CPU가 버스 사용 포기)
5. DMA 컨트롤러가 입출력장치에서 데이터 읽은 후 메모리로 전송
6. 전송 완료 후 CPU에게 완료 신호 송신
SMP
SMP는 'Symmetric Multi-Processor'(대칭형 다중 프로세서)의 약어로, 두 개 이상의 동일한 CPU 코어가 기본 메모리에 대한 액세스를 공유하는 디자인
멀티 코어 컴퓨터
-a chip multiprocessor 라고도 알려져있다.
-하나의 실리콘 조각에 2개 혹은 그 이상의 프로세서를 결합한다.
- 멀티코어 칩들은 또한 L2 캐시를 포함한다. 그리고 몇몇 케이스에선 L3 캐시를 포함한다.