1. 커널이란?
프로세스 관리, 메모리 관리, 저장장치 관리와 같은 웅영체제의 핵심적인 기능을 모아논 것이다.
커널은 운영체제에서 없어서는 안될 핵심적인 소프트웨어이다.
만약 커널이 없는 운영체제라고 한다면, 닭이 없는 삼계탕이라고 비유할 수 있겠다.
운영체제는 두 개의 부분으로 나누어진다.
1. 응용프로그램과 인접한 인터페이스
2. 커널
운영체제는 커널과 인터페이스를 분리하여, 칸은 커널을 사용하더라도 다른 인터페이스를 가진 형태로 제작할 수 있다.
이때 가튼 커널이라도 인터페이스가 장착되면 사용자에게는 다른 운영체제처럼 보인다.
2. 시스템 호출과 드라이버
커널 내부는 시스템 호출과 드라이버로 구성되어 있다.
시스템 호출
커널이 컴퓨터 자원을 보호하기 위해서 사용자가 자원에 직접 접근하는 것을 차단한다.
커널이 자신을 보호하기 위해 만든 인터페이스다.
OS의 코어는 직접 접근 방식을 좋아하지 않는다.
따라서 자원을 이용하려면 호출이라는 인터페이스를 이용해서 접근해야된다.
(오늘날은 OS는 시스템 콜의 성격을 띤다)
드라이버
커널이 커널 내에서 시스템 적인것을 시스템콜을 해결했다면 하드웨어 같은 경우에는 드라이버가 control 한다.
하드웨어 특성은 제작자가 가장 잘 알고 있기 때문에 하드웨어 제작자가 관련 소프트웨어 만들고 제공하는 경우가 대다수다.
쉽게 비유하자면,
우리가 프린터를 이용한다고 했을 때,
단순히 컴퓨터와 프린터를 연결한다고 작동되지 않는다.
컴퓨터와 프린터와 연결하고 제품에 호환되는 특정 드라이버 설치가 필요하다는점으로 커널의 드라이버 역할을 확인할 수 있다.
커널의 역할
프로세스 관리 - 논리적인 단위를 기반 cpu 작업하는 최소의 단위
프로세스 통신 - 프로세스 내부와 의 통신
(*os와 하드웨어가 정보를 주고 받는 것을 통신이라 정의*)
3. 커널의 구성
3.1 단일형 구조 커널 (monolithic archietecture)
초장기 운영체제 구조로 커널의 핵심 기능을 구현하는 모듈들이 구분 없이 하나로 구성된다.
장점
- 모듈간 통신 비용이 줄어들어 효율적인 운영이 가능
단점
- 모듈이 하나로 이루어져 있기 때문이 오류처리 힘듦.
- 상호의존성이 높아 작은 결함이 시스템 전체의 오류로 이어질 수 있음.
- 다양한 환경 적용이 힘듦.
단일형 구조 커널은 모듈이 하나로 이어져 있어 상호 의존성이 높아 위험성이 높고
현대의 복잡한 운영체제와는 적합하지 않다.
3.2 마이크로 구조 커널 (micro archietecture)
단일구조 커널과 대비되는 개념으로
커널의 각 모듈이 세분화 되어 있고 모듈 간 정보 교환은 프로세스 간 통신을 이용하여 이루어진다.
cpu의 포모먼스가 조금 떨어져도 커널을 작게 쪼개어 각 실행을 작게 나누어지게 한다.
마이크로 구조에서 각 모듈은 독립적으로 작동하기 때문에 하나의 모듈이 실패하더라도 전체적인 운영체제가 멈추지는 않는다.
4. 가상머신
오늘날 자바라는 머신이 국내에서 필수 개념으로 자리잡은 이유는 가상 머신 때문이라고 할 수 있다.
기존 어셀림블리어 같은 C언어는 호환성이 떨어진다는 문제점을 가지고 있었다.
이런 호환성 문제에 대한 해결책으로 대부분의 운영체제에서 작동하는 java가 등장했다.
운영체제 위에 가상머신을 만들고 그 위에서 응용 프로그램이 돌아가기 때문에
위 사진처럼 맥 os에 window os을 돌릴 수 있는 멀티 os가 가능하게 되었다.
CHAPTER02
컴퓨터 구조와 성능 향상
컴퓨터의 기본 구성
1. 하드웨어 구성
컴퓨터 구성
- 필수 장치: 중앙처리장치, 메인 메모리
- 주변 장치: 입력장치, 출력장치, 저장 장치
CPU와 메모리
- CPU: 명령어를 해석하여 실행하는 장치로 인간으로 치면 두뇌에 해당
- 메모리: 작업에 필요한 프로그램과 데이터를 저장하는 장소
- 바이트 단위로 분할되어 있으며 분할 공간마다 주소로ㅌ` 구분
입출력장치
- 입력장치: 외부의 데이터를 컴퓨터에 입력하는 장치
- 출력장치: 컴퓨터에서 처리한 결과를 사용자가 원하는 형태로 출력하는 장치
저장 장치 (세컨더리 장치)
- 메모리보다 느리지만 저렴하고 용량이 큼
- 전원의 온, 오프와 상관없이 데이터를 영구 저장
- 느린 저장 장치를 사용하는 이유는 가격이 싸기 때문
TPU란?
중앙처리 장치인 CPU(Central Processing Unit)에서 단어 그대로 모든 수행작업들은 cpu거쳤다.
하지만 근래 빅데이터 머신 러닝 등의 이미지 데이터의 수요가 증가하면서
고도의 그래픽 작업을 하는 처리 중앙처리장치가 필요하게 되었다.
이후 그래픽 작업을 전문적으로 처리하는 장치 'gpu'를 개발이 되었다.
gpu는 여러 명령어를 병령처리 방식으로 작업을 처리하기 때문에 'cpu'보다 적합하다.
또한
최근 구글에서 개발한 면적을 연산하는 tpu 장치는
그래픽 작업에 탁월한 처리장치라는 평가를 받고 했다.
메인보드
메인보드는 CPU와 메모리 등 다양한 부품을 연결하는 커다란 판이다.
컴퓨터의 다양한 부품은 버스라는 데이터가 지나가는 통로로 연결된다.
컴퓨터의 버스도 일정한 규칙에 따라 각 장치에 데이터를 전송하는 역할을 한다.
이런 데이터 전송 과정에서 CPU에서 열을 발생된다.
고속 CPU를 아직 개발하지 못한 이유는
발열을 관리문제 때문이라고 할 수 있다.
.
2. 폰 노이만 구조
오늘날 컴퓨터의 구조는 폰노이만 구조를 따른다.
즉 모든 프로그램에 메모리에 올라와서 실행하는 구조라고 할 수 있다. (폰노이만 아케틱쳐)
요리사(CPU)가 요리를 하려면 보관창고(저장 장치)에 있는 재료를 도마(메모리)로 가져와서
주방에서는 도마(메모리)가 핵심적인 작업 공간이고 보관창고(저장 장치)는 보조적인 공간이라고 이해할 수 있다.
2. 하드웨어 사용 관련 용어
2-1 클록
CPU 속도와 관련된 단위로 클록이 일정 간격으로 틱을 만들면 거기에 맞춰서 CPU 안의 모든 구성 부품이 작업한다.
2-2 헤르츠(Hz)
클록틱이 발생하는 속도를 나태나는 단위다.
CPU와 메모리
1. CPU 구성과 동작
CPU는 코어는 산술논리 연산장치, 제어장치 그리고 레지스터 이렇게 3개의 장치로 나누어 볼 수 있다.
산술논리 연산장치 : 논리 연산을 수행하는 장치
제어장치 : CPU작업을 지시하는 장치
레지스터 : CPU 내에 데이터를 임시로 보관하는 장치
위 사진처럼 특정 요리(수행작업)을 만들기 위해 요리, 작업지시, 재료 임시보관을 단계를 나누어 접근한다고 생각해볼 수 있다.
2. 명령처리 과정
CPU의 명령어 처리 과정을 아래와 같이 예를 들어 볼 수 있다.
EX) 메모리의 100번지(D2)에 있는 값을 레지스터 2로 가져온다.
실행과정
실행단계
1. 프로그램 카운터에 현재 실행 중인 코드의 행 번호 1이 저장되고 이 번호는 제어 장치에 전송
2. 제어장치가 명령어 레지스터에 있는 명령을 해석하여 메모리에 있는 데이터를 가져오라는 제어 신호를 보냄
3. 메모리 주소 레지스터에는 100이 저장되고, 메모리 관리자는 메모리의 100번지에 저장된 값을 메모리 버퍼 레지스터로 가져옴
4. 제어 장치는 메모리 버퍼 레지스터에 저장된 값을 레지스터 2로 옮김.
결론
CPU에서 버스란
전자적인 관리를 하는 것이 아니라 프로세스를 관리하는 개념으로 이해할 수 있다.
즉 OS가 CPU를 돌아가게 하는 것이다.
3. 버스 종류와 특징
버스 대역폭
한 번에 전달할 수 있는 데이터의 최대 크기로 CPU가 한 번에 처리할 수 있는 데이터 크기와 같다.
(버스의 대역폭, 레지스터의 크기, 메모리에 한 번에 저장할 수 있는 데이터 크기는 항상 같음)
4. 메모리의 종류와 부팅
모든 프로그램 폰 노이만 아키텍쳐의 기반해 메모리에 올라와야지 실행될 수 있다.
그렇기 때문에 OS가 처리해야될 것은 CPU와 메모리이다.
4-1 메모리의 종류
*휘발성 메모리 (DRAM)
과거에 사용된 메모리로 0과 1의 데이터가 일정 시간이 지나면 시라지므로 일정 시간 마다 다시 재생 시켜야되는 번거로움이 있다.
*비휘발성 메모리 (flash memory)
USB 같이 전력이 없어도 데이터를 보관하는 저장장치다.
SSD 와 같이 빠른 데이터 접근 속도, 저전력, 내구성 때문에 많이 사용된다.
(클라우드 서버에서도 SSD를 사용한다 )
*롬의 종류
마스크 롬(Mask ROM)
- 데이터를 지우거나 쓸 수 없음
PROM(Programmable ROM)
- 전용 기계를 이용하여 데이터를 한 번만 저장할 수 있음
EPROM(Erasable Programmable ROM)
- 데이터를 여러 번 쓰고 지울 수 있음
부팅
부팅이란 운영체제를 메모리에 올리는 것이다.
운영체제가 메모리 자원을 가지고 있기 때문에 전원을 공급하는 동시에 최적화 과정을 거친다.
버퍼
속도 차이가 있는 두 장치에서 차이를 완화하는 역할을 하는 장치로
버퍼링한다는 의미는 한꺼번에 담아서 간다를 개념으로 이해할 수 있다.
스풀
CPU와 입출력 장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼로
주변 장치를 동시에 온라인을 연결하여 성능을 향상시키기 위한 기술이다.
캐시
메모리와 CPU간의 속도 차이를 완화하기 위한 메모리로
메모리의 데이터를 미리 가져와 저장하는 임시 장소다.
5. 저장장치의 계층 구조
속도가 빠르고 값이 비싼 저장장치를 CPU에 가까운 곳에 두고, 값이 싸고 용량이 큰 저장장치를 반대쪽에서 적당한 가격으로 빠른 속도와 큰 용량을 동시에 얻는 방법이다.
CPU쪽에 레지스터나 캐시를 배치하여 CPU 작업을 빨리 진행할 수 있다.
사실 캐시 속도는 개인용 pc에서의 차이가 문제가 안된다. 하지만 고속 작업이 필요한 경우에는 이런 캐시 고려가 필요하다.
6. 인터럽트
CPU가 직접 입출력장치에서 데이터를 가져오거나 내보냈는데, 이러한 방식을 폴링 방식이라고 한다. 이런 폴링 방식은 CPU가 입출력 장치의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 데이터 처리를 하는데 이때 모든 입출력까지 관여하기 때문에 효율성이 떨어진다.
이런 문제를 해결하기 위해 인터럽트 방식이 나타났다.
CPU의 작업과 저장장치의 데이터 이동을 독립적으로 운영함으로써 시스템의 효능을 높여준다.
7. 병렬처리
CPU의 성능을 향상하기 위해 동시에 실행 가능한 명령의 개수를 늘리는 방법을 '병렬처리'라고 한다.
병렬처리시 고려사항
1. 상호 의존성이 없어야 병령처리가 가능
2. 각 단계의 시간을 일정하게 맞춰야 병렬 처리가 원만하게 이루어짐.
3. 잔체 작업을 몇 단계로 나눌지 구상이 필요
병렬 처리 단계
1. 명령어 패치
2. 명령어 해석
3. 실행
4. 쓰기 (실행 결과를 메모리에 저장)
7.1 파이프라인 기법
CPU의 사용을 극대화하기 위해 명령을 겹쳐서 실행하는 방법 (멀티스레드)
서로 다른 명령어가 같은 자원에 접근하려고 할 때 문제가 생길 수 있음.
7.2 슈퍼스킬라 기법
파이프라인을 처리할 수 있는 코어를 여러 개 구성하여 복수의 명령어가 동시에 실행되도록 하는 방법
대부분 파이프라인 기법과 동일하지만 코어를 두개를 구성하여 각 단계에서 동시에 실행되는 명령어가 2개라는 점에서 다름.
*코어가 총 8개로 이루어져있음
*오늘날 현대 CPU에서 가장 많이 쓰이는 방법
7.3 슈퍼파이프 기법
파이프라인의 각 단계를 세분하여 한 클록 내에 여러 명령어를 처리.
슈퍼컴퓨터에서 사용됨.
연습문제
1. CPU는 산술논리 저장장치, 제어장치, 레지스터
2. 모든 프로그램은 메모리에 올라와서 실행된다.
3. 주소 버스, 제어 버스, 데이터 버스
4. 자료가 단방향으로만 전송되는 버스
5. 프로그램 카운터
6. 명령어 레지스터
7. 메모리 주소 레지스터
8. 메모리 버퍼 레지스터
9. 메모리 주소 레지스터
10. 메모리 버퍼 레지스터
11. 경계 레지스터와 한계 레지스터
12. 버퍼
13. 스풀러
14. 부트스트랩
15. 저장장치 계층 구조
16. 인터럽트
17. 직접 메모리 접근
18. 메모리 매핑 입출력
19. VLIW
[별첨] PC용 CPU의 가격 상승 ?
최근 인텔 중앙처리 장치 CPU의 공급 부족 현상이 장기화하면서 국내 PC업체의 생산 차질과 매출 감소에 심화되고 있다.
작년부터 1년째 공급난이 계속 지속되면서 미리 CPU 재고를 확보한 글로벌 PC 제조사마저 타격을 받고 있다.
특히 국내 중소 PC 업체들은 1년 전에 겪은 최악의 'CPU 가뭄'을 계속 마주하면서 주력인 공공시장 입찰에 제동이 걸려 CPU를 소량이라도 확보하기 위해 동분서주하고 있다.
일부 업체는 라인업을 바꾸거나
AMD 제품을 택하는 움직임을 보여주고 있다.
가장 큰 공급 부족의 원인은 클라우드 컴퓨팅 시장 성장에 따른 서버용 CPU 수요 급중이라고 지적된다.
이러한 공급난이 PC시장의 엄청난 타격으로 인텔의 CPU곱긍 개선망을 가많히 지켜볼수 많은 없다는 업계의 목소리가 크다.
출처 :https://m.etnews.com/20191129000177
참고 웹사이트
"삼계탕 이미지."PINTEREST 2020년 7월 14일 접속,https://www.pinterest.co.kr/pin/839076974307220356/
"삼성 프린터기." 삼성홈페이지. 2020년 7월 14일 접속,https://www.samsung.com/sec/printers/
"TPU PERPECTIVE" 다중 아용자 ." WEB.SYSYTMER.NO. 2020년 7월 14일 접속,https://www.websystemer.no/cpu-gpu-tpu-ml-perspective/
"컴퓨터구조와 성능향상" B2CONNECTED 블로그. 2020년 7월 14일 접속,
https://m.blog.naver.com/ahn128/221498051260
참고문헌
조성호.쉽게배우는 운영체제.2019발행.한빛아카데미