CS/GENERAL

[알렉의 IT 기술 노트] 컴퓨터 구조 | 운영체제

Harimad 2022. 6. 12. 15:40

Wikidocs Link

강의 영상: https://www.inflearn.com/course/기술노트-구조-빅데이터/dashboard

컴퓨터 구조 참고 PDF 링크(비공개) : 컴퓨터 시스템의 구조 PDF

 


목차

1. 컴퓨터 구조 + 운영체제
2. CPU속도가 Hz인 진짜 이유?
3. 여러 프로그램이 동시에 실행되는 원리(feat. 운영체제)
4. 동기식/비동기식의 동작 방식 차이

 


1. 컴퓨터 구조 + 운영체제

기본적인 컴퓨터 구조의 요소로는 CPU, MEM, DISK, I/O 가 있다. 이를 '폰노이만 구조'라고 한다.

I/O는 키보드, 마우스, 모니터와 같은 입출력 장치를 말한다.

CPU는 계산(산술연산)을 하는 역할을 하는데, 메모리에서 올라온 명령들이 ALU+레지스터를 통해 연산을 하게된다.

MEM(메모리)는 임시저장 공간이고, DISK는 저장소이다.

 

'프로그램을 만든다'라는 과정은 개발자가 어떤 소스나 툴을 이용해서 개발을 하게 된다.

프로그래밍 개발언어는 사람과 가까운 언어 이다.

컴파일 과정은 컴퓨터가 이해할 수 있는 바이너리 파일로 변경하는 작업을 말한다.

컴파일을 통해서 .exe파일이나 .dll파일을 생성한다.

 

DISK에 저장된 .exe파일은 ①코드부 와 ②리소스(자원)로 구성되어있다.

.exe파일이 실행되면 코드부와 리소스의 일부가 MEM로 올라가게된다.

MEM는 명령어들의 집합체인데, 파일이 실행 되었을 때 명령어들 중에 처리해야할 일부가 CPU에 올라가서 해당 명령어를 처리하게 된다.

이때, 프로그램이라 했던 .exe가 MEM 올라가는 순간을 '프로세스'라고 한다.

'프로세스'는 다시 말해서, '프로그램이 실행되고 있는 것'을 말한다. CPU는 '프로세서'라고 한다. 용어 혼동에 주의하자.

 

'프로세스'된 실행파일들은 컴퓨터에 여러개가 존재할 수 있다.

즉, 한 화면에 여러 프로그램을 띄울 수 있는데, 동시에 프로그램이 실행되고 있다는 말이다.

엄밀히 말하면 프로그램이 동시에 실행되지 않는다.

수 많은 프로세스들이 있는데, 프로세서(CPU)가 하나라고 가정 했을 때, 한개의 명령어만 실행된다.

프로세서(CPU)는 프로세스(process)들에게 한번씩 기회를 준다.

즉, 프로세스들이 프로세서(CPU)에 특정시간 만큼 배정 받게 된다.

이것을 시간으로 나눠서 빠른시간에 하나씩 프로세스가 실행된다.

마치 동시에 프로세스들이 실행되는것 처럼 느껴지는 것이다.

 

이렇게 시간적으로 프로세스의 실행을 나눈것을 '시분할'이라고 한다.

프로세스에게 얼마만큼 시간을 줄지, 먼저 실행될지에 대한 관리를 CPU에서 하게되는데, 이를 '스케줄링'이라고 한다.

'스케줄링' 방식중에 '선점형 스케줄링'이 있다. 우선순위가 높은걸 먼저 CPU에서 처리하는 방식이다.

FCFS(First Come First Serve)방식도 있다.


메모리는 저장공간에 대한 관리가 핵심이 된다.

왜냐면 저장공간은 DISK로 갈수록 가격이 저렴해지지만, CPU로 갈수록 비싸지기 때문이다. 메모리도 고비용의 장치이다.

프로그램의 모든 데이터들은 메모리에 한꺼번에 올릴수가 없기 때문에, 일부분만 올라가게되고 일부분만 내려가게 된다.

어떤 프로세스의 데이터를 적재시킬지가 메모리의 관리 대상이 된다. 이것을 '메모리 관리(교체알고리즘)'라고 한다.

 

'디스크 관리'는 얼마나 빠른 속도로 파일을 엑세스 할것인가를 말한다.

 

정리

- CPU, MEM, DISK, I/O까지 해서 대표적인 컴퓨터의 구조가 된다.

- CPU의 스케줄링, MEM의 관리, DISK의 관리는 OS(운영체제)라고 한다.

- OS(운영체제)가 하는 일은 하드웨어(CPU, MEM, DISK)를 잘 동작하도록 하는 것이다.

- 그리고 OS는 프로그램들이 동시에 최적의 성능을 낼 수 있도록 하는 역할도 한다.


2. CPU 속도가 Hz(헤르쯔)인 진짜 이유?


컴퓨터의 성능은 CPU의 속도를 말한다. 컴퓨터의 성능이 좋다는 말은 CPU의 속도가 빠르다는 말과 같다.

Hz는 주파수의 단위이다. 주파수는 파형을 그린다. (↗↘↗↘↗↘...)

주파수는 1초에 몇번 진동하느냐에 따라서 Hz(헤르쯔)가 결정된다. 1초에 10번 진동하면 10Hz가 된다.

Hz가 높으면 진동이 많다는 말이고 빨리 진동한다.

 

파일을 실행하면 해당 파일의 일부 데이터가 메모리에 올라간다.

메모리 → CPU 로 일부 실행파일의 데이터가 넘어가면서 연산을 진행한다.

메모리와 CPU 사이에는 cache 메모리가 있는데 이 cache 메모리에서 데이터를 빠르게 올렸다 내렸다하면서 연산을 진행한다.

메모리에서 CPU로 데이터를 가져오는 속도가 빠를 수록 CPU의 성능이 좋다고 말한다.

CPU에는 clock(클럭)이 있는데 진동을 만들어내는 역할을 한다.

clock이 진동을 더 빨리 만들어내면 메모리의 데이터가 더 빨리 CPU로 넘어가서 연산을 하게된다.

clock속도↑ === CPU성능↑ 말과 같다.

여기서 clock이 진동을 만들어내는 단위가 Hz이다.

그래서 CPU의 속도가 Hz인 이유이다.


3. 여러 프로그램이 동시에 실행되는 원리(feat. 운영체제)

 

DISKMEM → cache → CPU

 

1. DISK에 저장된 .exe 파일 실행

2. .exe 파일의 일부 메모리가 메인 메모리(RAM)에 올라감. (전부 올라갈 수 없음 용량이 한정되어있기 때문)

3. 메인 메모리에는 여러 프로그램이 실행되고 있는 상태이다. 즉, 프로세스들이 여러개가 존재한다.

    3-1. 프로세스들이 여러개가 있는데 시간적으로 실행 시간을 나눈 방식이 있는데  이를 '시분할' 방식이라고 한다.

4. MEM와 CPU사이에는 cache 메모리가 있다. CPU안에 cache가 존재하는 경우도 있다.

5. MEM에 올라온 일부 메모리가 cache를 거쳐서 CPU의 연산작업을 통해 프로세스가 실행된다.

    5-1. 일부 메모리가 cache안에 이미 존재하는 걸 '메모리 히트(hit)라고 한다.

    5-2. 존재 하지않으면 cache메모리 안에 적재가 되는데, 존재 하지않는 상태를 'hit율이 낮다'라고 한다.


4. 동기식/비동기식의 동작 방식 차이

동기와 비동기의 개념을 명확히 알아야한다.

 

Q 동기식 프로그램이란?

함수를 호출한다고 가정한다.

이 함수가 실행되어 끝날 때까지, 다른 함수를 실행하지 않고 기다리는 것을 동기식 방식이라고 한다.

 

Q. 장점?

함수를 호출하고 이 함수의 값이 꼭 필요할 땐 동기식 호출이 유리하다. (즉, 값이 순차적으로 나와야할 경우)

 

Q. 비동기식 프로그램이란?

똑같이 함수를 호출한다고 가정한다.

이 함수를 호출해놓고 바로 다음 코드로 넘어가는 것을 말한다.

 
 
 
 

Q. 장점?

함수를 호출하고 이 함수가 지나가도 괜찮은 경우엔 비동기식 방식이 유리하다.

 

동기 / 비동기 참고 링크

 

동기 vs 비동기 (feat. blocking vs non-blocking)

동기/비동기, blocking/non-blocking에 대해 알아봤다.

velog.io