vmtmxmf5 / Pytorch-

pytorch로 머신러닝~딥러닝 구현
3 stars 0 forks source link

MultiProcessing 사전지식 #11

Open vmtmxmf5 opened 3 years ago

vmtmxmf5 commented 3 years ago

컴퓨터 구성 요소 (물리적)

OS 운영체제

어플리케이션들이 동작되도록 하기 위해서는 하드웨어와 응용프로그램이 서로 데이터를 주고 받아야 한다. (하드웨어는 단지 특정 기능을 수행할 뿐이므로)

이런 논리적인 일들을 처리해주는 기본 프로그램을 OS라고 한다.

-> 프로세스 관리 (cpu 수행시간 나눔) -> 메모리 관리 (여러 어플리케이션이 메모리를 사용하는 데 문제가 없도록 관리) -> 디스크 관리 (저장된 파일을 관리)

필수 용어

프로그램 -> 프로세스 -> 쓰레드

프로그램 : 파일이 디스크에 저장되어 있지만 메모리에는 올라가 있지 않은 정적(static)인 상태 = 코드 덩어리 프로세스 : 프로그램을 실행하여 메모리에 올린 상태 // 동작 중인 프로그램 = os로부터 자원(메모리)을 할당받은 작업 스레드 Thread : (cpu가 명령어를 수행하는 데 있어) 프로세스보다 작은 실행 단위 (함수, main 등) // os의 thread가 cpu 사용을 요청 = Thread는 하나의 프로세스 안에 있는 자원과 상태를 공유하며, 여러 개의 루틴을 병렬적으로 수행한다

만약 프로그램을 하나의 프로세스로 실행할 수 없다면? 이 때 어떻게 해야 할까? -> 여러개의 프로세스를 이용해 하나의 프로그램을 실행한다? 불가능! -> 제약조건 : 프로세스마다 할당된 메모리가 있다. 프로세스는 이 메모리를 벗어나 다른 프로세스의 정보에 접근할 수 없다. -> 이 때 Thread를 사용한다!

CPU 작동과정

명령어 Instruction : 시스템이 특정 동작을 수행시키는 작은 단위
= Op-code + Operand = 실행 동작을 구분 + 코드&자료 위치

메모리 - 디스크

메모리는 비싸다. 따라서,

여러 프로세스를 동시에 실행할 때는, 사용하는 파일은 메인 메모리에 올리고, 사용하지 않는 파일은 잠시 디스크로 내리는 SWAP 방식을 사용한다

Summary