cpu : 연산장치
GHz(반복의 개념) 1초에 몇 번 Clock(전기 신호)을 처리하는가 = 1초에 몇 번 명렁을 처리하는가
메모리 : 실행할 명령어를 보관
디스크 : 저장 장치(~휘발성)
OS 운영체제
어플리케이션들이 동작되도록 하기 위해서는 하드웨어와 응용프로그램이 서로 데이터를 주고 받아야 한다. (하드웨어는 단지 특정 기능을 수행할 뿐이므로)
이런 논리적인 일들을 처리해주는 기본 프로그램을 OS라고 한다.
-> 프로세스 관리 (cpu 수행시간 나눔)
-> 메모리 관리 (여러 어플리케이션이 메모리를 사용하는 데 문제가 없도록 관리)
-> 디스크 관리 (저장된 파일을 관리)
필수 용어
프로그램 -> 프로세스 -> 쓰레드
프로그램 : 파일이 디스크에 저장되어 있지만 메모리에는 올라가 있지 않은 정적(static)인 상태
= 코드 덩어리
프로세스 : 프로그램을 실행하여 메모리에 올린 상태 // 동작 중인 프로그램
= os로부터 자원(메모리)을 할당받은 작업
스레드 Thread : (cpu가 명령어를 수행하는 데 있어) 프로세스보다 작은 실행 단위 (함수, main 등) // os의 thread가 cpu 사용을 요청
= Thread는 하나의 프로세스 안에 있는 자원과 상태를 공유하며, 여러 개의 루틴을 병렬적으로 수행한다
만약 프로그램을 하나의 프로세스로 실행할 수 없다면? 이 때 어떻게 해야 할까?
-> 여러개의 프로세스를 이용해 하나의 프로그램을 실행한다? 불가능!
-> 제약조건 : 프로세스마다 할당된 메모리가 있다. 프로세스는 이 메모리를 벗어나 다른 프로세스의 정보에 접근할 수 없다.
-> 이 때 Thread를 사용한다!
CPU 작동과정
명령어 Instruction : 시스템이 특정 동작을 수행시키는 작은 단위
= Op-code + Operand
= 실행 동작을 구분 + 코드&자료 위치
읽기(Fetch) -> 해석(Decode) -> 실행(Execute) -> 기록(Write)
메모리에서 명령을 불러온 뒤, 해석하고, 실행한 다음, 기록한다
메모리 - 디스크
메모리는 비싸다.
따라서,
여러 프로세스를 동시에 실행할 때는,
사용하는 파일은 메인 메모리에 올리고,
사용하지 않는 파일은 잠시 디스크로 내리는 SWAP 방식을 사용한다
Summary
프로그램을 실행한다?
file을 메모리 상에 로드하고 CPU가 그 명령어를 수행한다
프로세스를 실행한다?
Thread가 cpu에게 명령어를 전달하면, cpu가 그 명령어를 실행하는 것
Context?
Thread는 순차적으로 실행된다. 즉, 기존의 실행하고 있는 명령어의 정보(레지스트리, cpu내 값 등)를 남겨두고 다음 Thread에게 cpu사용권을 넘겨준다.
이 때 남기는 정보를 Context라고 한다.
멀티 태스킹?
OS가 여러 개의 프로세스를 매우 짧은 시간(퀀텀타임)내에 순차적으로 수행하는 것 (엄밀히 말하면, 한 번에 여러가지 일이 동시에 동작되는 것은 아님)
멀티 쓰레딩?
하나의 프로그램내에서 여러 가지 일을 동시에 처리하는 것
왜 파이썬에서는 멀티 쓰레딩이 아니라 멀티 프로세싱인가?
GIL(Global Interpreter Lock) 때문에 10개의 스레드를 만들(멀티 쓰레딩)어도 동시에 돌아가는 것은 하나 뿐이다.
즉, 멀티코어를 활용하지 못한다. 따라서 이를 우회하기 위해 멀티 프로세싱을 사용한다
컴퓨터 구성 요소 (물리적)
OS 운영체제
어플리케이션들이 동작되도록 하기 위해서는 하드웨어와 응용프로그램이 서로 데이터를 주고 받아야 한다. (하드웨어는 단지 특정 기능을 수행할 뿐이므로)
이런 논리적인 일들을 처리해주는 기본 프로그램을 OS라고 한다.
-> 프로세스 관리 (cpu 수행시간 나눔) -> 메모리 관리 (여러 어플리케이션이 메모리를 사용하는 데 문제가 없도록 관리) -> 디스크 관리 (저장된 파일을 관리)
필수 용어
프로그램 -> 프로세스 -> 쓰레드
프로그램 : 파일이 디스크에 저장되어 있지만 메모리에는 올라가 있지 않은 정적(static)인 상태 = 코드 덩어리 프로세스 : 프로그램을 실행하여 메모리에 올린 상태 // 동작 중인 프로그램 = os로부터 자원(메모리)을 할당받은 작업 스레드 Thread : (cpu가 명령어를 수행하는 데 있어) 프로세스보다 작은 실행 단위 (함수, main 등) // os의 thread가 cpu 사용을 요청 = Thread는 하나의 프로세스 안에 있는 자원과 상태를 공유하며, 여러 개의 루틴을 병렬적으로 수행한다
만약 프로그램을 하나의 프로세스로 실행할 수 없다면? 이 때 어떻게 해야 할까? -> 여러개의 프로세스를 이용해 하나의 프로그램을 실행한다? 불가능! -> 제약조건 : 프로세스마다 할당된 메모리가 있다. 프로세스는 이 메모리를 벗어나 다른 프로세스의 정보에 접근할 수 없다. -> 이 때 Thread를 사용한다!
CPU 작동과정
명령어 Instruction : 시스템이 특정 동작을 수행시키는 작은 단위
= Op-code + Operand = 실행 동작을 구분 + 코드&자료 위치
메모리에서 명령을 불러온 뒤, 해석하고, 실행한 다음, 기록한다
메모리 - 디스크
메모리는 비싸다. 따라서,
여러 프로세스를 동시에 실행할 때는, 사용하는 파일은 메인 메모리에 올리고, 사용하지 않는 파일은 잠시 디스크로 내리는 SWAP 방식을 사용한다
Summary
프로그램을 실행한다? file을 메모리 상에 로드하고 CPU가 그 명령어를 수행한다
프로세스를 실행한다? Thread가 cpu에게 명령어를 전달하면, cpu가 그 명령어를 실행하는 것
Context? Thread는 순차적으로 실행된다. 즉, 기존의 실행하고 있는 명령어의 정보(레지스트리, cpu내 값 등)를 남겨두고 다음 Thread에게 cpu사용권을 넘겨준다. 이 때 남기는 정보를 Context라고 한다.
멀티 태스킹? OS가 여러 개의 프로세스를 매우 짧은 시간(퀀텀타임)내에 순차적으로 수행하는 것 (엄밀히 말하면, 한 번에 여러가지 일이 동시에 동작되는 것은 아님)
멀티 쓰레딩? 하나의 프로그램내에서 여러 가지 일을 동시에 처리하는 것