티스토리 뷰
2023.02.12 - [운영체제] - #3 컴퓨터 하드웨어와 구조(feat 폰 노이만 구조)
#3 컴퓨터 하드웨어와 구조(feat 폰 노이만 구조)
● 프로그램 내장방식 - 오늘도 나는 폰 공부를 한다. - 예전에는 ENIAC(애니악)과 같이 하드웨어를 이용해 프로그램을 만들었기 때문에 프로그램이 달라질 때마다 매번 스위치와 배선의 위치를
radderveloper.tistory.com
● 도입
- 주변장치에는 그래픽카드, 하드디스크, SSD, 키보드, 마우스 등 여러가지가 있다.(아래는 주변장치의 내부구조)
- 주변장치들은 메인보드에 있는 버스로 연결되며 각 하드웨어에 맞게 외부 인터페이스가 존재한다.
- 또한 장치의 상태와 데이터를 저장할 수 있는 각종 레지스터들이 존재한다.
- 레지스터들은 입출력 작업을 할 때 데이터를 저장하는 역할을 하는데 이 값들은 CPU가 사용하기 위해 메모리로 이동되기도 한다.
- 하나의 버스는 Address 버스, Data 버스, Control 버스로 이루어져있다.
- 그래서 I/O 디바이스(입출력 디바이스)는 위 3가지의 버스를 따로 받을 수 있다.
● 캐릭터 디바이스와 블록 디바이스
- 주변장치는 캐릭터 디바이스와 블록 디바이스 2가지로 나눌 수 있는데 이는 데이터의 전송 단위가 캐릭터(글자) or 블록(범위)을 기준으로 나눈 것이다.
- 캐릭터 디바이스는 데이터 전송 단위가 캐릭터(글자)이기에 상대적으로 적은 양의 데이터 전송
- 블록 디바이스는 데이터 전송 단위가 블록(범위)이기에 상대적으로 많은 양의 데이터 전송
- 캐릭터 디바이스 : 마우스, 키보드, 사운드카드, 직렬/병렬 포트 등
- 블록 디바이스 : HDD, SDD, 그래픽카드 등이 있다.
● 주변장치와 버스와 입출력 제어기
- 주변장치들은 메인보드 내의 버스로 연결된다고 했다.
- 예전에는 주변장치들을 하나의 버스로 연결해서 사용했다.
- CPU는 작업을 하던 도중 I/O 명령을 만나면 직접 입출력 장치에서 데이터를 가져와야 했는데 이 경우 CPU가 입출력 중에는 다른 작업을 하지 못 했기 때문에 CPU 사용률이 떨어지는 상황이 발생했다. cf) CPU도 메인보드 내에 존재한다.
- 이러한 문제를 해결하기 위해 입출력 제어기(I/O Controller)와 여러 개의 버스가 추가됐다.
1.
- CPU는 I/O 명령을 만나면 입출력 제어기에게 입출력 작업을 맡기고 다른 작업을 실행한다.
2.
- 입출력 제어기는 두 개의 채널(시스템 버스와 입출력 버스)로 구분한다.
- 시스템 버스 : 고속으로 작동하는 CPU와 메모리가 사용
- 입출력 버스 : 주변장치들이 사용
- 입출력 버스는 세부적으로 느린장치(마우스, 키보드 등)와 빠른장치(HDD)를 구분하기 위해 (고속 입출력 버스와 저속 입출력 버스) 2개의 채널로 나뉘어진다.
- 느린장치와 빠른장치를 구분해 속도 차이로 인한 병목현상을 해결하기 위함이다.
3.
- 그래픽 카드는 대용량의 데이터를 다루기 때문에 고속 입출력 버스로도 감당이 안 되는 수준이다.
- 때문에 그래픽 카드는 입출력 버스에 있지 않고 시스템 버스에 바로 연결해서 사용한다.
4.
- 입출력 제어기는 여러 주변장치를 처리하는데 입출력 버스에서 온 데이터를 메모리를 옮겨준다.
- 근데 메모리는 CPU의 명령으로 움직이기 때문에 입출력 제어기가 메모리에 접근하기 위해서는 CPU가 필요하다.
- 입출력 제어기가 CPU의 도움이 필요없도록 DMA 제어기가 추가됐다.
- DMA가 있기에 입출력 제어기는 데이터를 직접 메모리에 저장하거나 가져올 수 있게 됐다.
cf) DMA = Direct Memory Access(직접 메모리 접근)
5.
- CPU와 DMA가 사용하는 메모리가 겹치지 않도록 [CPU가 사용하는 메모리 영역]과 [DMA가 사용하는 메모리 영역]을 나누는데 이를 Memory Mapped I/O 라고 부른다.
cf)
'CS > 운영체제' 카테고리의 다른 글
#30 주변장치 - 하드디스크/Flash Memory(SSD) (0) | 2023.06.17 |
---|---|
#29 주변장치 - 마우스와 키보드 (0) | 2023.06.04 |
#27 메모리 - 메모리와 주소 (0) | 2023.05.29 |
#26 메모리 - 메모리 종류 (1) | 2023.05.28 |
#25 컴파일과 프로세스 (0) | 2023.05.22 |
- Total
- Today
- Yesterday
- git
- Advanced Stream
- SQL
- jpa
- 빅데이터 분석기사
- API
- Spring Boot
- MongoDB
- 코딩테스트
- 운영체제
- node.js
- 메모리
- Phaser
- 프로세스
- OS
- 빅데이터
- db
- MySQL
- 자료구조
- Phaser3
- DART
- 프로그래머스
- nosql
- 코테
- Stream
- 알고리즘
- Java8
- spring
- java
- SpringBoot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |