폰노이만 구조
- 컴퓨터는 크게 CPU, MEMORY, DISK, I/O(키보드, 마우스, 모니터와 같은 입출력장치)로 구성돼있다.
CPU
- ALU (산술 연산) + 레지스터
- 메모리에 있는 명령들이 올라와서 계산을 통해서 연산을 한다.
- MEMORY에 있는 명령어가 CPU에서 처리된다.
- 프로세서 : 프로그램을 띄어주는 역할.
- 1개의 CPU만 있다면 많은 프로세스가 있는 상황에서 동시에 프로세스들이 실행되고 있는 것처럼 보이지만 프로세스가 1개 실행되고, 다음 거 실행되고. 너무 빨라서 동시에 실행되고 있는 것처럼 보일 뿐이다.
- 시분할 : 프로세스들의 일부, 일부를 시간으로 나눈 것.
- 스케쥴링 : 프로세스에게 얼마만큼의 시간을 줄지, 뭘 우선적으로 할지 관리하는 것.
- 선점형 스케쥴링 : 우선순위가 높은 프로세스가 CPU를 선점하는 것.
MEMORY
- 임시 저장공간
- 코드의 일부(필요한 리소스도 같이)가 MEMORY로 올라온다.
- 프로세스 : DISK에 있는 프로그램이 MEMORY에 올라가는 과정. 프로그램이 실행되면 프로세스다.
- 스레드 : 프로세스를 돌림.
- 프로그램 내에서 스레드를 2개 이상 돌리면서 자원의 접근을 동시에 할 때, 동시에 할 수 없다. (프로그램 내에 A,B 스레드가 있다고 가정하고) A 스레드가 동작하면 B 스레드는 기다려야 한다. A 스레드가 동작하고, B 스레드가 동작하면서 A 스레드가 썼던 걸 덮어쓰거나 지울 수 있기 때문에 스레드 동기화가 필요하다.
- 즉, 프로그램이 실행되고 있는 걸 프로세스라고 한다.
- DISK로 갈수록 저장공간에 대한 COST는 낮아지지만, CPU로 갈수록 올라간다.
- 프로그램의 모든 데이터를 MEMORY에 올릴 수 없기 때문에 일부분만 올리고, 일부분은 DISK로 내려간다.
- 메모리 관리 : 여러 개의 프로그램이 동시에 실행되기 때문에 어떤 프로세서에 어떤 프로세스를 적재시킬지 관리(교체 알고리즘).
DISK
- 저장소
- DISK에 저장된 실행 파일은 코드와 리소스로 구성되어 있다.
- 디스크 관리 : 디스크를 얼마나 빠른 속도로 파일을 엑세스 할 것인가.
- 파일이 저장되면 껐다 켜도 저장되어 있다.
- 가상 메모리 : DISK와 MEMORY 사이에서 중간 역할. DISK에 프로그램을 읽는데 오래 걸리기 때문에 MEMORY처럼 보이는 걸 DISK 상에 미리 만들어 놓은 것이다. 프로그램에서 필요한 데이터들을 미리 가지고 기다리는 파일. 가상 메모리를 잡아놓으면 속도가 빨라진다.
EX)
- 개발자가 C, JAVA, C++ 같은 프로그래밍 언어로 개발을 한다.
- 이 언어들은 컴퓨터가 이해할 수 없으므로 컴퓨터가 이해할 수 있게끔 컴파일 된다.
- .exe, .dll과 같은 실행 파일로 변환되어 DISK에 저장된다.
운영체제
- 스케쥴링, 메모리 관리, 디스크 관리의 모든 것
출처 : https://www.youtube.com/watch?v=J06SirxZG7M
출처 : https://www.youtube.com/watch?v=uMyKBYF48nY