hmk run dev

컴퓨터 구조와 운영체제 본문

cs

컴퓨터 구조와 운영체제

hmk run dev 2022. 2. 19. 12:01

컴퓨터 안엔 크게 CPU, MEMORY, DISK가 있다.

 

아주 기본적인 구조로 폰 노이만 구조라고 한다.

 

CPU프로세스

쉽게 말해서 계산하는 역할

ALU - 수학적계산, 산술 연산 등등...

레지스터 - 메모리에 있는 명령들이 쭉 올라와서 계산을 통해 연산을 하게 된다.

 

프로그램이 실행되고 있는 것

프로세스는 하나의 컴퓨터에 여러 개가 존재할 수 있다.

 

컴퓨터 작업 관리자에 들어가 보면 내 컴퓨터에서 실행돼있는 프로세스들을 볼 수 있다.

요즘은 멀티코어, 헥사코어들 프로세서가 여러 개인 컴퓨터가 많지만

프로세서가 하나라고 가정할 때 

 

한 개의 CPU(프로세서)는 한개의 명령만 처리가 가능하다.

프로세스가 여러 개 있다고 해도  보통은 CPU에서 처리속도가 매우 빠르기 때문에 동시에 실행되고 있다고

생각할 수도 있다.

 

시분할

 

여러 개의 프로세스들은 프로세서에 특정 시간을 배정받게 된다.

그리고 그 시간들을 나는 것을 시분할이라고 한다.

 

스케쥴링

 

거기에 더해 이 프로세스들에 얼마만큼의 시간을 할당하고 어떤 것을 우선적으로 실행할지 관리하는 것을

스케쥴링이라고 한다.

 

스케쥴링을 하는 방식 중에 많은 OS들이 사용하는 방법은 선점형 스케쥴링이다.

 

선점형 스케쥴링 방식(preemptive scheduling)

프로세스 중에 우선순위가 높은 것을 먼저 CPU를 선점하는 방식

 

FIFO 방식(first in first out)

먼저 들어온 요청부터 먼저 하자


MEMORY

메모리는 저장공간에 대한 관리가 핵심

 

디스크 쪽으로 갈수록 저장 공간에 대한 코스트는 낮아지고

CPU 쪽으로 갈수록 비싸진다.

 

프로그램의 모든 데이터를 메모리에 한꺼번에 올릴 수 없기 때문에

일부분이 올라오고 일부분이 내려간다.

 

 

메모리 관리 교체 알고리즘

또 한 개의 프로그램이 아닌 여러 개의 프로그램이 동시에 실행되는 경우가 대부분이기 때문에

어떤 프로세스에 어떤 데이터를 적재시킬지가 관리대상이다. 

 

디스크 관리 

얼마나 빠른 속도로 실행 파일을 액세스 할 것 인가?라는 부분


DISK

저장소

 

개발자가 C, JAVA, C++ 같은 언어로 개발을 하고 컴퓨터가 이해 or 실행할 수 있는 언어로

컴파일을 하여 실행 파일(exe, dll 등등...)이 만들어진다.

 

실행파일이 DISK에 저장이 되었다고 가정해보자.

 

디스크에 저장되어 있는 실행 파일의 구성은 코드와 리소스로 구성되어있다.

(여기서 리소스란? 프로그램 동작시 필요한 미이지, 사운드 파일 등등... 을 일컫는다.)

 

개발자가 어떤 기능들을 쭉 만들어 놓고 컴파일을 하면 일부는 코드, 일부는 리소스를 담고 있다.

그래서 컴퓨터는 파일을 실행하게 되면 코드 중 일부가 메모리로 올라오게 된다.

그때 필요한 리소스도 참고하게 된다.

 

이제 실행이 된 파일은 처리하려고 하는 명령어가 CPU에 올라가서 처리가 된다.

 

이때 파일로 저장된 프로그램이 메모리에 올라가는 순간을 프로세스라고 한다.

( 로컬 환경에서 개발할 때 localhost:8080 포트가 하나의 프로세스라고 할 수 있다. )


OS(운영체제)

이러한 하드웨어 CPU, MOMORY, DISK를 잘 동작될 수 있게 하는 역할

메모리나 CPU를 사용해 여러 가지 프로그램이 동시에 최적의 성능을 낼 수 있게끔 하는 역할

 

'cs' 카테고리의 다른 글

컴퓨터 구조를 알아야 하는 이유  (0) 2024.03.01
Process와 Thread  (0) 2024.02.27
정처기 오답노트  (0) 2022.02.09
OSI 7계층  (0) 2022.01.21
소프트웨어의 생명주기  (0) 2021.12.16
Comments